Subversion Repositories Scribus

Rev

Rev 3205 | Rev 3309 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4 paul 1
/***************************************************************************
2
                          scribuswin.cpp  -  description
3
                             -------------------
4
    begin                : Mit Nov 6 2002
5
    copyright            : (C) 2002 by Franz Schmid
6
    email                : Franz.Schmid@altmuehlnet.de
7
 ***************************************************************************/
8
 
9
/***************************************************************************
10
 *                                                                         *
11
 *   This program is free software; you can redistribute it and/or modify  *
12
 *   it under the terms of the GNU General Public License as published by  *
13
 *   the Free Software Foundation; either version 2 of the License, or     *
14
 *   (at your option) any later version.                                   *
15
 *                                                                         *
16
 ***************************************************************************/
81 Franz 17
#include <qfileinfo.h>
18
#include <qdir.h>
4 paul 19
#include "scribuswin.h"
3056 avox 20
#include "pageselector.h"
4 paul 21
#include "scribuswin.moc"
81 Franz 22
#include "scribusXml.h"
135 Franz 23
#include "scribus.h"
2637 cbradney 24
#include "story.h"
2535 craig 25
#include "util.h"
2952 cbradney 26
#include "commonstrings.h"
204 Franz 27
 
4 paul 28
 
3205 craig 29
 
1330 fschmid 30
ScribusWin::ScribusWin(QWidget* parent, ScribusDoc* ddoc) : QMainWindow(parent, "", WDestructiveClose)
4 paul 31
{
221 Franz 32
        setIcon(loadIcon("AppIcon2.png"));
4 paul 33
        doc = ddoc;
34
        muster = NULL;
35
}
36
 
37
void ScribusWin::setView(ScribusView* dview)
38
{
39
        view = dview;
1330 fschmid 40
        doc->viewCount++;
41
        doc->viewID++;
42
        winIndex = doc->viewID;
2887 fschmid 43
        QPoint point = QPoint(0,0);
44
        statusFrame = new QFrame(this, "newDocFrame");
45
        statusFrameLayout = new QHBoxLayout( statusFrame, 0, 0, "statusFrame");
46
        view->unitSwitcher->reparent(statusFrame, point);
47
        view->LE->reparent(statusFrame, point);
48
        view->zoomOutToolbarButton->reparent(statusFrame, point);
3274 fschmid 49
        view->zoomDefaultToolbarButton->reparent(statusFrame, point);
2887 fschmid 50
        view->zoomInToolbarButton->reparent(statusFrame, point);
51
        view->PGS->reparent(statusFrame, point);
52
        view->LY->reparent(statusFrame, point);
53
        statusFrameLayout->addWidget(view->unitSwitcher);
54
        statusFrameLayout->addWidget(view->LE);
55
        statusFrameLayout->addWidget(view->zoomOutToolbarButton);
3274 fschmid 56
        statusFrameLayout->addWidget(view->zoomDefaultToolbarButton);
2887 fschmid 57
        statusFrameLayout->addWidget(view->zoomInToolbarButton);
58
        statusFrameLayout->addWidget(view->PGS);
59
        statusFrameLayout->addWidget(view->LY);
60
        QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
61
        statusFrameLayout->addItem( spacer );
62
        statusBar()->addWidget(statusFrame, 4, true);
4 paul 63
}
64
 
81 Franz 65
void ScribusWin::slotAutoSave()
66
{
284 Franz 67
        if ((doc->hasName) && (doc->isModified()))
204 Franz 68
        {
69
                moveFile(doc->DocName, doc->DocName+".bak");
81 Franz 70
                QString fn = doc->DocName;
204 Franz 71
                QFileInfo fi(fn);
72
                QDir::setCurrent(fi.dirPath(true));
73
                ScriXmlDoc *ss = new ScriXmlDoc();
517 fschmid 74
                if (ss->WriteDoc(fn, doc, 0))
204 Franz 75
                {
2891 cbradney 76
                        doc->setModified(false);
81 Franz 77
                        setCaption(doc->DocName);
78
                        qApp->processEvents();
79
                        emit AutoSaved();
204 Franz 80
                }
81
                delete ss;
82
        }
81 Franz 83
}
84
 
4 paul 85
void ScribusWin::closeEvent(QCloseEvent *ce)
86
{
1330 fschmid 87
        if (doc->isModified() && (doc->viewCount == 1))
204 Franz 88
        {
135 Franz 89
                QString CloseTxt;
90
                if (ScApp->singleClose)
340 Franz 91
                        CloseTxt = tr("&Leave Anyway");
135 Franz 92
                else
340 Franz 93
                        CloseTxt = tr("C&lose Anyway");
204 Franz 94
                int exit=QMessageBox::information(this,
95
                                                  tr("Warning"),
96
                                                  tr("Document:")+" "+doc->DocName+"\n"+ tr("has been changed since the last save."),
340 Franz 97
                                                  tr("&Save Now"),
2952 cbradney 98
                                                  CommonStrings::tr_Cancel,
204 Franz 99
                                                  CloseTxt,
100
                                                  0, 1);
101
                switch (exit)
102
                {
103
                case 0:
268 Franz 104
                        if (ScApp->DoSaveClose())
2637 cbradney 105
                        {
2638 cbradney 106
                                if (doc==ScApp->storyEditor->currentDocument())
107
                                        ScApp->storyEditor->close();
268 Franz 108
                                ce->accept();
2637 cbradney 109
                        }
268 Franz 110
                        else
111
                                return;
204 Franz 112
                        break;
113
                case 1:
114
                        break;
115
                case 2:
116
                        emit Schliessen();
117
                        ce->accept();
118
                        break;
4 paul 119
                }
204 Franz 120
        }
4 paul 121
        else
204 Franz 122
        {
4 paul 123
                emit Schliessen();
124
                ce->accept();
204 Franz 125
        }
4 paul 126
}