summaryrefslogtreecommitdiffstats
path: root/scribus/scribuswin.cpp
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/scribuswin.cpp
downloadscribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/scribuswin.cpp')
-rw-r--r--scribus/scribuswin.cpp175
1 files changed, 175 insertions, 0 deletions
diff --git a/scribus/scribuswin.cpp b/scribus/scribuswin.cpp
new file mode 100644
index 0000000..d49eec1
--- /dev/null
+++ b/scribus/scribuswin.cpp
@@ -0,0 +1,175 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+/***************************************************************************
+ scribuswin.cpp - description
+ -------------------
+ begin : Mit Nov 6 2002
+ copyright : (C) 2002 by Franz Schmid
+ email : Franz.Schmid@altmuehlnet.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+#include <QCloseEvent>
+#include <QDir>
+#include <QFileInfo>
+#include <QMessageBox>
+
+#include "commonstrings.h"
+#include "fileloader.h"
+#include "masterpagepalette.h"
+#include "pageselector.h"
+#include "scribus.h"
+#include "scribuswin.h"
+#include "storyeditor.h"
+#include "util.h"
+#include "util_file.h"
+#include "util_icon.h"
+
+ScribusWin::ScribusWin(QWidget* parent, ScribusDoc* doc) : QMainWindow(parent)
+{
+ setWindowIcon(loadIcon("AppIcon2.png"));
+ setAttribute(Qt::WA_DeleteOnClose);
+ m_Doc = doc;
+ m_masterPagesPalette = NULL;
+ currentDir = QDir::currentPath();
+}
+
+void ScribusWin::setMainWindow(ScribusMainWindow *mw)
+{
+ m_MainWindow=mw;
+}
+
+void ScribusWin::setView(ScribusView* newView)
+{
+ m_View = newView;
+ ++m_Doc->viewCount;
+ winIndex = ++m_Doc->viewID;
+ statusFrame = new QFrame(this);
+ statusFrameLayout = new QHBoxLayout(statusFrame);
+ statusFrameLayout->setMargin(0);
+ statusFrameLayout->setSpacing(0);
+ m_View->unitSwitcher->setParent(statusFrame);
+ m_View->previewQualitySwitcher->setParent(statusFrame);
+ m_View->layerMenu->setParent(statusFrame);
+ m_View->zoomOutToolbarButton->setParent(statusFrame);
+ m_View->zoomDefaultToolbarButton->setParent(statusFrame);
+ m_View->zoomInToolbarButton->setParent(statusFrame);
+ m_View->pageSelector->setParent(statusFrame);
+ m_View->zoomSpinBox->setParent(statusFrame);
+ m_View->cmsToolbarButton->setParent(statusFrame);
+ m_View->previewToolbarButton->setParent(statusFrame);
+ m_View->visualMenu->setParent(statusFrame);
+ statusFrameLayout->addWidget(m_View->unitSwitcher);
+ statusFrameLayout->addWidget(m_View->previewQualitySwitcher);
+ statusFrameLayout->addWidget(m_View->zoomSpinBox);
+ statusFrameLayout->addWidget(m_View->zoomOutToolbarButton);
+ statusFrameLayout->addWidget(m_View->zoomDefaultToolbarButton);
+ statusFrameLayout->addWidget(m_View->zoomInToolbarButton);
+ statusFrameLayout->addWidget(m_View->pageSelector);
+ statusFrameLayout->addWidget(m_View->layerMenu);
+ QSpacerItem* spacer = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
+ statusFrameLayout->addItem( spacer );
+ statusFrameLayout->addWidget(m_View->cmsToolbarButton);
+ statusFrameLayout->addWidget(m_View->previewToolbarButton);
+ statusFrameLayout->addWidget(m_View->visualMenu);
+ statusBar()->addPermanentWidget(statusFrame, 4);
+ currentDir = QDir::currentPath();
+ setCentralWidget(newView);
+}
+
+void ScribusWin::slotAutoSave()
+{
+ if ((m_Doc->hasName) && (m_Doc->isModified()))
+ {
+ //#8081 : change behavior of autosave, autosave writes now to an .autosave file
+ //instead of overwriting source document
+ //moveFile(m_Doc->DocName, m_Doc->DocName+".bak");
+ FileLoader fl(m_Doc->DocName);
+ if (fl.SaveFile(m_Doc->DocName+".autosave", m_Doc, 0))
+ {
+ //#8081 related : do not unset modified flag until user really save file
+ //m_Doc->setModified(false);
+ setWindowTitle(QDir::toNativeSeparators(m_Doc->DocName));
+ qApp->processEvents();
+ emit AutoSaved();
+ }
+ }
+}
+
+void ScribusWin::closeEvent(QCloseEvent *ce)
+{
+ if (m_Doc->isModified() && (m_Doc->viewCount == 1))
+ {
+ qApp->changeOverrideCursor(QCursor(Qt::ArrowCursor));
+ int exit = QMessageBox::information(m_MainWindow, CommonStrings::trWarning, tr("Document:")+" "+
+ QDir::toNativeSeparators(m_Doc->DocName)+"\n"+
+ tr("has been changed since the last save."),
+ QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel,
+ QMessageBox::Cancel);
+ if (exit == QMessageBox::Cancel)
+ {
+ ce->ignore();
+ return;
+ }
+ if (exit == QMessageBox::Save)
+ {
+ if (m_MainWindow->slotFileSave())
+ {
+ if (m_Doc==m_MainWindow->storyEditor->currentDocument())
+ m_MainWindow->storyEditor->close();
+ }
+ else
+ {
+ ce->ignore();
+ return;
+ }
+ }
+ }
+ m_MainWindow->DoFileClose();
+ ce->accept();
+}
+
+void ScribusWin::resizeEvent(QResizeEvent *re)
+{
+ statusBar()->setSizeGripEnabled(!isMaximized());
+}
+
+void ScribusWin::setMasterPagesPaletteShown(bool isShown) const
+{
+ if (m_masterPagesPalette==NULL)
+ return;
+ if (isShown)
+ m_masterPagesPalette->show();
+ else
+ m_masterPagesPalette->hide();
+}
+
+void ScribusWin::windowActivationChange ( bool oldActive )
+{
+ if( isActiveWindow() )
+ QDir::setCurrent( currentDir );
+ else
+ currentDir = QDir::currentPath();
+ QMainWindow::windowActivationChange( oldActive );
+}
+
+void ScribusWin::setMasterPagesPalette(MasterPagesPalette* newMPP)
+{
+ m_masterPagesPalette=newMPP;
+}
+
+MasterPagesPalette* ScribusWin::masterPagesPalette() const
+{
+ return m_masterPagesPalette;
+}