Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
4430 cbradney 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
4 paul 7
/***************************************************************************
8
                          scribuswin.cpp  -  description
9
                             -------------------
10
    begin                : Mit Nov 6 2002
11
    copyright            : (C) 2002 by Franz Schmid
12
    email                : Franz.Schmid@altmuehlnet.de
13
 ***************************************************************************/
14
 
15
/***************************************************************************
16
 *                                                                         *
17
 *   This program is free software; you can redistribute it and/or modify  *
18
 *   it under the terms of the GNU General Public License as published by  *
19
 *   the Free Software Foundation; either version 2 of the License, or     *
20
 *   (at your option) any later version.                                   *
21
 *                                                                         *
22
 ***************************************************************************/
81 Franz 23
#include <qfileinfo.h>
24
#include <qdir.h>
4 paul 25
#include "scribuswin.h"
3056 avox 26
#include "pageselector.h"
3565 cbradney 27
#include "scmessagebox.h"
4 paul 28
#include "scribuswin.moc"
5647 cbradney 29
#include "fileloader.h"
135 Franz 30
#include "scribus.h"
2637 cbradney 31
#include "story.h"
2535 craig 32
#include "util.h"
2952 cbradney 33
#include "commonstrings.h"
204 Franz 34
 
4 paul 35
 
3205 craig 36
 
4121 cbradney 37
ScribusWin::ScribusWin(QWidget* parent, ScribusDoc* doc) : QMainWindow(parent, "", WDestructiveClose)
4 paul 38
{
221 Franz 39
        setIcon(loadIcon("AppIcon2.png"));
4121 cbradney 40
        m_Doc = doc;
41
        m_masterPagesPalette = NULL;
4478 cbradney 42
        currentDir = QDir::currentDirPath();
4 paul 43
}
44
 
5312 cbradney 45
void ScribusWin::setMainWindow(ScribusMainWindow *mw)
46
{
47
        m_MainWindow=mw;
48
}
49
 
4121 cbradney 50
void ScribusWin::setView(ScribusView* newView)
4 paul 51
{
4121 cbradney 52
        m_View = newView;
53
        ++m_Doc->viewCount;
54
        winIndex = ++m_Doc->viewID;
55
        QPoint point(0,0);
2887 fschmid 56
        statusFrame = new QFrame(this, "newDocFrame");
57
        statusFrameLayout = new QHBoxLayout( statusFrame, 0, 0, "statusFrame");
4121 cbradney 58
        m_View->unitSwitcher->reparent(statusFrame, point);
59
        m_View->layerMenu->reparent(statusFrame, point);
60
        m_View->zoomOutToolbarButton->reparent(statusFrame, point);
61
        m_View->zoomDefaultToolbarButton->reparent(statusFrame, point);
62
        m_View->zoomInToolbarButton->reparent(statusFrame, point);
63
        m_View->pageSelector->reparent(statusFrame, point);
64
        m_View->zoomSpinBox->reparent(statusFrame, point);
6549 fschmid 65
        m_View->previewToolbarButton->reparent(statusFrame, point);
66
        m_View->visualMenu->reparent(statusFrame, point);
4121 cbradney 67
        statusFrameLayout->addWidget(m_View->unitSwitcher);
68
        statusFrameLayout->addWidget(m_View->zoomSpinBox);
69
        statusFrameLayout->addWidget(m_View->zoomOutToolbarButton);
70
        statusFrameLayout->addWidget(m_View->zoomDefaultToolbarButton);
71
        statusFrameLayout->addWidget(m_View->zoomInToolbarButton);
72
        statusFrameLayout->addWidget(m_View->pageSelector);
73
        statusFrameLayout->addWidget(m_View->layerMenu);
2887 fschmid 74
        QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
75
        statusFrameLayout->addItem( spacer );
6549 fschmid 76
        statusFrameLayout->addWidget(m_View->previewToolbarButton);
77
        statusFrameLayout->addWidget(m_View->visualMenu);
78
#ifndef HAVE_CAIRO
79
        m_View->previewToolbarButton->hide();
80
        m_View->visualMenu->hide();
81
#endif
2887 fschmid 82
        statusBar()->addWidget(statusFrame, 4, true);
4478 cbradney 83
        currentDir = QDir::currentDirPath();
4 paul 84
}
85
 
81 Franz 86
void ScribusWin::slotAutoSave()
87
{
4121 cbradney 88
        if ((m_Doc->hasName) && (m_Doc->isModified()))
204 Franz 89
        {
4121 cbradney 90
                moveFile(m_Doc->DocName, m_Doc->DocName+".bak");
91
                QFileInfo fi(m_Doc->DocName);
204 Franz 92
                QDir::setCurrent(fi.dirPath(true));
5647 cbradney 93
                FileLoader fl(m_Doc->DocName);
94
                if (fl.SaveFile(m_Doc->DocName, m_Doc, 0))
204 Franz 95
                {
4121 cbradney 96
                        m_Doc->setModified(false);
6197 cbradney 97
                        setCaption(QDir::convertSeparators(m_Doc->DocName));
81 Franz 98
                        qApp->processEvents();
99
                        emit AutoSaved();
204 Franz 100
                }
101
        }
81 Franz 102
}
103
 
4 paul 104
void ScribusWin::closeEvent(QCloseEvent *ce)
105
{
4121 cbradney 106
        if (m_Doc->isModified() && (m_Doc->viewCount == 1))
204 Franz 107
        {
6197 cbradney 108
                int exit=ScMessageBox::information(m_MainWindow, CommonStrings::trWarning, tr("Document:")+" "+                                                                         QDir::convertSeparators(m_Doc->DocName)+"\n"+
109
                                                                                        tr("has been changed since the last save."),
110
                                                                                        CommonStrings::tr_Save, tr("&Discard"),
111
                                                                                        CommonStrings::tr_Cancel, 2, 2);
4121 cbradney 112
                if (exit==2)
113
                        return;
114
                if (exit==0)
204 Franz 115
                {
5312 cbradney 116
                        if (m_MainWindow->slotFileSave())
2637 cbradney 117
                        {
5312 cbradney 118
                                if (m_Doc==m_MainWindow->storyEditor->currentDocument())
119
                                        m_MainWindow->storyEditor->close();
2637 cbradney 120
                        }
268 Franz 121
                        else
122
                                return;
4 paul 123
                }
204 Franz 124
        }
5312 cbradney 125
        m_MainWindow->DoFileClose();
4121 cbradney 126
        ce->accept();
127
}
128
 
129
void ScribusWin::setMasterPagesPaletteShown(bool isShown) const
130
{
131
        if (m_masterPagesPalette==NULL)
132
                return;
133
        if (isShown)
134
                m_masterPagesPalette->show();
4 paul 135
        else
4121 cbradney 136
                m_masterPagesPalette->hide();
4 paul 137
}
4478 cbradney 138
 
139
void ScribusWin::windowActivationChange ( bool oldActive )
140
{
141
        if( isActiveWindow() )
142
                QDir::setCurrent( currentDir );
143
        else
144
                currentDir = QDir::currentDirPath();
145
        QMainWindow::windowActivationChange( oldActive );
146
}