Rev 17326 |
Rev 17517 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
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 "scribuswin.h"
#include "scribus.h"
#include "commonstrings.h"
#include "fileloader.h"
#include "ui/pagepalette.h"
#include "ui/pageselector.h"
#include "ui/scrspinbox.h"
#include "ui/storyeditor.h"
#include "util.h"
#include "util_file.h"
#include "util_icon.h"
#include <QApplication>
#include <QCloseEvent>
#include <QDir>
#include <QFileInfo>
#include <QMessageBox>
ScribusWin::ScribusWin(QWidget* parent, ScribusDoc* doc) : QMainWindow(parent)
{
setWindowIcon(loadIcon("AppIcon2.png"));
setAttribute(Qt::WA_DeleteOnClose);
m_Doc = doc;
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->symbolEditMode())
{
m_MainWindow->editSymbolEnd();
ce->ignore();
return;
}
else
{
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
{
QString pageName;
PagePalette* pagePalette = m_MainWindow->pagePalette;
if (isShown && m_Doc->masterPageMode())
{
pageName = m_Doc->currentPage()->pageName();
pagePalette->startMasterPageMode(pageName);
}
else if (pagePalette->masterPageMode())
{
pagePalette->endMasterPageMode();
}
}
void ScribusWin::windowActivationChange ( bool oldActive )
{
if( isActiveWindow() )
QDir::setCurrent( currentDir );
else
currentDir = QDir::currentPath();
QMainWindow::windowActivationChange( oldActive );
}