Rev 117 |
Rev 119 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/***************************************************************************
scribus.cpp - description
-------------------
begin : Fre Apr 6 21:09:31 CEST 2001
copyright : (C) 2001 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 <qaccel.h>
#include <qapplication.h>
#include <qcolordialog.h>
#include <qcolor.h>
#include <qiconset.h>
#include <qtextstream.h>
#include <qstylefactory.h>
#include <qregexp.h>
#include <qtextcodec.h>
#include <qcursor.h>
#include <qvbox.h>
#include <cstdio>
#include <cstdlib>
#include <dlfcn.h>
#include <iostream>
#include <string>
#include "scribus.h"
#include "scribus.moc"
#include "newfile.h"
#include "page.h"
#include "query.h"
#include "mdup.h"
#include "docinfo.h"
#include "reformdoc.h"
#include "serializer.h"
#include "align.h"
#include "fmitem.h"
#include "fontprefs.h"
#include "libprefs/prefs.h"
#include "pdfopts.h"
#include "inspage.h"
#include "delpages.h"
#include "movepage.h"
#include "helpbrowser.h"
#include "scribusXml.h"
#include "libabout/about.h"
#include "druck.h"
#include "editformats.h"
#include "muster.h"
#include "applytemplate.h"
#include "picstatus.h"
#include "customfdialog.h"
#include "cmsprefs.h"
#include "annot.h"
#include "annota.h"
#include "javadocs.h"
#include "config.h"
#include "fpoint.h"
#include "fpointarray.h"
#include "hysettings.h"
#include "guidemanager.h"
#include "mergedoc.h"
#include "lineformats.h"
#include "missing.h"
#include "story.h"
extern QPixmap loadIcon(QString nam);
extern bool overwrite(QWidget *parent, QString filename);
using namespace std;
#ifdef HAVE_CMS
cmsHPROFILE CMSoutputProf;
cmsHPROFILE CMSprinterProf;
cmsHTRANSFORM stdTrans;
cmsHTRANSFORM stdProof;
cmsHTRANSFORM stdTransImg;
cmsHTRANSFORM stdProofImg;
bool SoftProofing;
bool Gamut;
bool CMSuse;
int IntentMonitor;
int IntentPrinter;
#endif
bool CMSavail;
ProfilesL InputProfiles;
int PolyC;
int PolyFd;
double PolyF;
bool PolyS;
double PolyR;
double UmReFaktor;
QString DocDir;
ScribusApp::ScribusApp(SplashScreen *splash)
{
setCaption( tr("Scribus " VERSION));
setKeyCompression(false);
setIcon(loadIcon("AppIcon.png"));
initMenuBar();
initStatusBar();
WerkTools2 = new QToolBar( tr("File"), this);
DatNeu = new QToolButton(loadIcon("DateiNeu.xpm"), tr("Creates a new Document"), QString::null, this, SLOT(slotFileNew()), WerkTools2);
DatOpe = new QToolButton(loadIcon("DateiOpen.xpm"), tr("Opens a Document"), QString::null, this, SLOT(slotDocOpen()), WerkTools2);
DatSav = new QToolButton(loadIcon("DateiSave.xpm"), tr("Saves the Current Document"), QString::null, this, SLOT(slotFileSave()), WerkTools2);
DatClo = new QToolButton(loadIcon("DateiClos.xpm"), tr("Closes the Current Document"), QString::null, this, SLOT(slotFileClose()), WerkTools2);
DatPri = new QToolButton(loadIcon("DateiPrint.xpm"), tr("Prints the Current Document"), QString::null, this, SLOT(slotFilePrint()), WerkTools2);
DatPDF = new QToolButton(loadIcon("acrobat.png"), tr("Saves the Current Document as PDF"), QString::null, this, SLOT(SaveAsPDF()), WerkTools2);
DatSav->setEnabled(false);
DatClo->setEnabled(false);
DatPri->setEnabled(false);
DatPDF->setEnabled(false);
DatOpe->setPopup(recentMenu);
WerkTools = new WerkToolB(this);
setDockEnabled(WerkTools, DockLeft, false);
setDockEnabled(WerkTools, DockRight, false);
WerkTools->Sichtbar = true;
WerkTools->setEnabled(false);
WerkToolsP = new WerkToolBP(this);
setDockEnabled(WerkToolsP, DockLeft, false);
setDockEnabled(WerkToolsP, DockRight, false);
WerkToolsP->setEnabled(false);
WerkToolsP->Sichtbar = true;
QString Pff = QString(getenv("HOME"))+"/.scribus";
QFileInfo Pffi = QFileInfo(Pff);
if (Pffi.exists())
{
if (Pffi.isDir())
PrefsPfad = Pff;
else
PrefsPfad = QString(getenv("HOME"));
}
else
{
QDir di = QDir();
di.mkdir(Pff);
PrefsPfad = Pff;
QString OldPR = QString(getenv("HOME"))+"/.scribus.rc";
QFileInfo OldPi = QFileInfo(OldPR);
if (OldPi.exists())
{
system("mv " + OldPR + " " + Pff+"/scribus.rc");
}
QString OldPR2 = QString(getenv("HOME"))+"/.scribusfont.rc";
QFileInfo OldPi2 = QFileInfo(OldPR2);
if (OldPi2.exists())
{
system("mv " + OldPR2 + " " + Pff+"/scribusfont.rc");
}
QString OldPR3 = QString(getenv("HOME"))+"/.scribusscrap.scs";
QFileInfo OldPi3 = QFileInfo(OldPR3);
if (OldPi3.exists())
{
system("mv " + OldPR3 + " " + Pff+"/scrap.scs");
}
}
/** Erstelle Fontliste */
NoFonts = false;
BuFromApp = false;
splash->setStatus( tr("Searching for Fonts"));
GetAllFonts();
if (NoFonts)
{
QString mess = tr("There are no Postscript-Fonts on your System");
mess += "\n" + tr("Exiting now");
QMessageBox::critical(this, tr("Fatal Error"), mess, 1, 0, 0);
}
else
{
HaveDoc = 0;
view = NULL;
doc = NULL;
BuildFontMenu();
SCFontsIterator it(Prefs.AvailFonts);
Prefs.DefFont = it.currentKey();
Prefs.DefSize = 120;
Prefs.AppFontSize = qApp->font().pointSize();
/** Default Farbenliste */
Prefs.DColors.clear();
Prefs.DColors.insert("White", CMYKColor(0, 0, 0, 0));
Prefs.DColors.insert("Black", CMYKColor(0, 0, 0, 255));
Prefs.DColors.insert("Blue", CMYKColor(255, 255, 0, 0));
Prefs.DColors.insert("Cyan", CMYKColor(255, 0, 0, 0));
Prefs.DColors.insert("Green", CMYKColor(255, 0, 255, 0));
Prefs.DColors.insert("Red", CMYKColor(0, 255, 255, 0));
Prefs.DColors.insert("Yellow", CMYKColor(0, 0, 255, 0));
Prefs.DColors.insert("Magenta", CMYKColor(0, 255, 0, 0));
DispX = 10;
DispY = 10;
Prefs.Wheelval = 40;
Prefs.GrabRad = 4;
Prefs.GuideRad = 10;
Prefs.DminGrid = 20;
Prefs.DmajGrid = 100;
DocNr = 1;
Prefs.DminColor = QColor(green);
Prefs.DmajColor = QColor(green);
Prefs.DpapColor = QColor(white);
Prefs.DmargColor = QColor(blue);
Prefs.guideColor = QColor(darkBlue);
Prefs.DVHoch = 33;
Prefs.DVHochSc = 100;
Prefs.DVTief = 33;
Prefs.DVTiefSc = 100;
Prefs.DVKapit = 75;
Prefs.GUI = "Default";
Prefs.Dpen = "Black";
Prefs.Dbrush = "Black";
Prefs.Dshade = 100;
Prefs.Dshade2 = 100;
Prefs.DLineArt = SolidLine;
Prefs.Dwidth = 1;
Prefs.DpenLine = "Black";
Prefs.DpenText = "Black";
Prefs.DshadeLine = 100;
Prefs.DLstyleLine = SolidLine;
Prefs.DwidthLine = 1;
Prefs.MagMin = 10;
Prefs.MagMax = 800;
Prefs.MagStep = 25;
Prefs.DbrushPict = "White";
Prefs.ShadePict = 100;
Prefs.ScaleX = 1;
Prefs.ScaleY = 1;
Prefs.Before = true;
Prefs.Einheit = 0;
UmReFaktor = 1.0;
PolyC = 4;
PolyF = 0.5;
PolyS = false;
PolyFd = 0;
PolyR = 0;
Prefs.PolyC = PolyC;
Prefs.PolyF = PolyF;
Prefs.PolyFd = PolyFd;
Prefs.PolyS = PolyS;
Prefs.PolyR = PolyR;
Prefs.Werkv = true;
Prefs.WerkvP = true;
Prefs.Mpalv = false;
Prefs.Tpalv = false;
Prefs.SCpalv = false;
Prefs.Lpalv = false;
Prefs.Bopalv = false;
Prefs.Mpalx = 0;
Prefs.Mpaly = 0;
Prefs.Tpalx = 0;
Prefs.Tpaly = 0;
Prefs.SCpalx = 0;
Prefs.SCpaly = 0;
Prefs.SCpalw = 100;
Prefs.SCpalh = 200;
Prefs.Sepalx = 0;
Prefs.Sepaly = 0;
Prefs.Bopalx = 0;
Prefs.Bopaly = 0;
Prefs.Lpalx = 0;
Prefs.Lpaly = 0;
Prefs.PSize = 40;
Prefs.SaveAtQ = true;
Prefs.ShFrames = true;
Prefs.PagesSbS = true;
Prefs.RecentDocs.clear();
Prefs.RecentDCount = 5;
Prefs.RandFarbig = false;
Prefs.AutoLine = 20;
Prefs.PageFormat = 4;
Prefs.Ausrichtung = 0;
Prefs.PageBreite = 595;
Prefs.PageHoehe = 842;
Prefs.RandOben = 9;
Prefs.RandUnten = 40;
Prefs.RandLinks = 9;
Prefs.RandRechts = 9;
Prefs.DoppelSeiten = false;
Prefs.ErsteLinks = false;
Prefs.ScaleType = true;
Prefs.AspectRatio = true;
Prefs.MinWordLen = 3;
Prefs.Language = "";
Prefs.Automatic = true;
Prefs.AutoCheck = false;
Prefs.PDFTransparency = false;
Prefs.AutoSave = false;
Prefs.AutoSaveTime = 600000;
Prefs.DisScale = 1.0;
Prefs.DocDir = QString(getenv("HOME"));
Prefs.ProfileDir = "";
Prefs.ScriptDir = "";
PDef.Pname = "";
PDef.Dname = "";
PDef.Command = "";
PrinterUsed = false;
resize(610, 600);
QVBox* vb = new QVBox( this );
vb->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
wsp = new QWorkspace( vb );
setCentralWidget( vb );
connect(wsp, SIGNAL(windowActivated(QWidget *)), this, SLOT(newActWin(QWidget *)));
Tpal = new Tree(this, 0);
Mpal = new Mpalette(this, &Prefs);
Mpal->Cpal->SetColors(Prefs.DColors);
Npal = new NodePalette(this);
Lpal = new LayerPalette(this);
ScBook = new Biblio(this, &Prefs);
Sepal = new SeitenPal(this);
BookPal = new BookPalette(this);
CMSavail = false;
keyrep = false;
Prefs.DCMSset.DefaultMonitorProfile = "";
Prefs.DCMSset.DefaultPrinterProfile = "";
Prefs.DCMSset.DefaultInputProfile = "";
Prefs.DCMSset.DefaultInputProfile2 = "";
Prefs.DCMSset.CMSinUse = false;
Prefs.DCMSset.SoftProofOn = false;
Prefs.DCMSset.GamutCheck = false;
Prefs.DCMSset.BlackPoint = true;
Prefs.DCMSset.DefaultIntentMonitor = 1;
Prefs.DCMSset.DefaultIntentMonitor2 = 1;
Prefs.DCMSset.DefaultIntentPrinter = 0;
Prefs.GFontSub.clear();
SetKeyEntry(56, tr("Smart Hyphen"), 0, ALT+Key_Minus);
SetKeyEntry(57, tr("Align Left"), 0, CTRL+Key_L);
SetKeyEntry(58, tr("Align Right"), 0, CTRL+Key_R);
SetKeyEntry(59, tr("Align Center"), 0, CTRL+Key_E);
SetKeyEntry(60, tr("Insert Page Number"), 0, ALT+Key_NumberSign);
SetKeyEntry(61, tr("Attach Text to Path"), PfadT, 0);
SetKeyEntry(62, tr("Show Layers"), viewLpal, 0);
SetKeyEntry(63, tr("Javascripts..."), jman, 0);
SetKeyEntry(64, tr("Undo"), edUndo, CTRL+Key_Z);
SetKeyEntry(65, tr("Show Page Palette"), viewSepal, 0);
SetKeyEntry(66, tr("Lock/Unlock"), LockOb, CTRL+Key_H);
SetKeyEntry(67, tr("Non Breaking Space"), 0, CTRL+Key_Space);
splash->setStatus( tr("Reading Preferences"));
ReadPrefs();
splash->setStatus( tr("Getting ICC-Profiles"));
GetCMSProfiles();
splash->setStatus( tr("Init Hyphenator"));
InitHyphenator();
Mpal->Cpal->UseTrans(Prefs.PDFTransparency);
Mpal->Fonts->RebuildList(&Prefs);
Mpal->fillLangCombo(Sprachen);
DocDir = Prefs.DocDir;
splash->setStatus( tr(""));
splash->setStatus( tr("Setting up Shortcuts"));
SetShortCut();
if (CMSavail)
{
hymen->insertItem( tr("Color Management..."), this , SLOT(SetCMSPrefs()));
ProfilesL::Iterator ip;
if ((Prefs.DCMSset.DefaultInputProfile == "") || (!InputProfiles.contains(Prefs.DCMSset.DefaultInputProfile)))
{
ip = InputProfiles.begin();
Prefs.DCMSset.DefaultInputProfile = ip.key();
}
if ((Prefs.DCMSset.DefaultInputProfile2 == "") || (!InputProfiles.contains(Prefs.DCMSset.DefaultInputProfile2)))
{
ip = InputProfiles.begin();
Prefs.DCMSset.DefaultInputProfile2 = ip.key();
}
if ((Prefs.DCMSset.DefaultMonitorProfile == "") || (!MonitorProfiles.contains(Prefs.DCMSset.DefaultMonitorProfile)))
{
ip = MonitorProfiles.begin();
Prefs.DCMSset.DefaultMonitorProfile = ip.key();
}
if ((Prefs.DCMSset.DefaultPrinterProfile == "") || (!PrinterProfiles.contains(Prefs.DCMSset.DefaultPrinterProfile)))
{
ip = PrinterProfiles.begin();
Prefs.DCMSset.DefaultPrinterProfile = ip.key();
}
#ifdef HAVE_CMS
SoftProofing = Prefs.DCMSset.SoftProofOn;
CMSuse = false;
IntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
IntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
#endif
}
splash->setStatus( tr("Reading Scrapbook"));
QString SCf = PrefsPfad+"/scrap.scs";
QFileInfo SCfi = QFileInfo(SCf);
if (SCfi.exists())
{
ScBook->BibWin->ReadContents(SCf);
ScBook->ScFilename = SCf;
}
ScBook->AdjustMenu();
HaveGS = system("gs -h > /dev/null 2>&1");
splash->setStatus( tr("Initializing Plugins"));
InitPlugs(splash);
ClipB = QApplication::clipboard();
connect(WerkTools, SIGNAL(NewMode(int)), this, SLOT(ModeFromTB(int)));
connect(WerkTools, SIGNAL(Schliessen()), this, SLOT(ToggleTools()));
connect(WerkToolsP, SIGNAL(NewMode(int)), this, SLOT(ModeFromTB(int)));
connect(WerkToolsP, SIGNAL(Schliessen()), this, SLOT(TogglePDFTools()));
connect(Mpal, SIGNAL(DocChanged()), this, SLOT(slotDocCh()));
connect(Mpal, SIGNAL(NewAbStyle(int)), this, SLOT(setNewAbStyle(int)));
connect(Mpal, SIGNAL(BackHome()), this, SLOT(Aktiv()));
connect(Mpal, SIGNAL(Stellung(int)), this, SLOT(setItemHoch(int)));
connect(Mpal, SIGNAL(Schliessen()), this, SLOT(ToggleMpal()));
connect(Mpal, SIGNAL(EditCL()), this, SLOT(ToggleFrameEdit()));
connect(Mpal, SIGNAL(NewTF(QString)), this, SLOT(SetNewFont(QString)));
connect(Mpal->Cpal, SIGNAL(NewPen(QString)), this, SLOT(setPenFarbe(QString)));
connect(Mpal->Cpal, SIGNAL(NewBrush(QString)), this, SLOT(setBrushFarbe(QString)));
connect(Mpal->Cpal, SIGNAL(NewPenShade(int)), this, SLOT(setPenShade(int)));
connect(Mpal->Cpal, SIGNAL(NewBrushShade(int)), this, SLOT(setBrushShade(int)));
connect(Mpal->Cpal, SIGNAL(NewTrans(double)), this, SLOT(SetTranspar(double)));
connect(Mpal->Cpal, SIGNAL(NewTransS(double)), this, SLOT(SetTransparS(double)));
connect(Mpal->Cpal, SIGNAL(NewGradient(int, QString, int, QString, int)), this, SLOT(setGradFill(int, QString, int, QString, int)));
connect(Mpal->Cpal, SIGNAL(QueryItem()), this, SLOT(GetBrushPen()));
connect(Tpal, SIGNAL(Schliessen()), this, SLOT(ToggleTpal()));
connect(Tpal, SIGNAL(SelectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
connect(Tpal, SIGNAL(SelectSeite(int)), this, SLOT(SelectFromOutlS(int)));
connect(Mpal->Spal, SIGNAL(NewStyle(int)), this, SLOT(setNewAbStyle(int)));
connect(Mpal->Spal, SIGNAL(EditSt()), this, SLOT(slotEditStyles()));
connect(Mpal, SIGNAL(EditLSt()), this, SLOT(slotEditLineStyles()));
connect(Npal, SIGNAL(Schliessen()), this, SLOT(NoFrameEdit()));
connect(Lpal, SIGNAL(LayerActivated(int)), this, SLOT(changeLayer(int)));
connect(Lpal, SIGNAL(LayerRemoved(int)), this, SLOT(LayerRemove(int)));
connect(Lpal, SIGNAL(LayerChanged()), this, SLOT(showLayer()));
connect(Lpal, SIGNAL(Schliessen()), this, SLOT(ToggleLpal()));
connect(Sepal, SIGNAL(Schliessen()), this, SLOT(ToggleSepal()));
connect(ScBook, SIGNAL(Schliessen()), this, SLOT(ToggleBpal()));
connect(Sepal, SIGNAL(EditTemp(QString)), this, SLOT(ManageTemp(QString)));
connect(Sepal->PageView, SIGNAL(UseTemp(QString, int)), this, SLOT(Apply_Temp(QString, int)));
connect(Sepal->PageView, SIGNAL(NewPage(int, QString)), this, SLOT(slotNewPageP(int, QString)));
connect(Sepal->Trash, SIGNAL(DelPage(int)), this, SLOT(DeletePage2(int)));
connect(Sepal, SIGNAL(GotoSeite(int)), this, SLOT(SelectFromOutlS(int)));
connect(BookPal->BView, SIGNAL(MarkMoved()), this, SLOT(StoreBookmarks()));
connect(BookPal->BView, SIGNAL(ChangeBMNr(int, int, int)), this, SLOT(ChBookmarks(int, int, int)));
connect(BookPal, SIGNAL(Schliessen()), this, SLOT(ToggleBookpal()));
connect(recentMenu, SIGNAL(activated(int)), this, SLOT(LoadRecent(int)));
connect(ColorMenu, SIGNAL(activated(int)), this, SLOT(setItemFarbe(int)));
connect(ShadeMenu, SIGNAL(activated(int)), this, SLOT(setItemShade(int)));
connect(FontMenu, SIGNAL(activated(int)), this, SLOT(setItemFont(int)));
connect(SizeTMenu, SIGNAL(activated(int)), this, SLOT(setItemFSize(int)));
connect(TypeStyleMenu, SIGNAL(activated(int)), this, SLOT(setItemTypeStyle(int)));
connect(AliMenu, SIGNAL(activated(int)), this, SLOT(setItemTextAli(int)));
connect(this, SIGNAL(TextIFont(QString)), this, SLOT(AdjustFontMenu(QString)));
connect(this, SIGNAL(TextISize(int)), this, SLOT(setFSizeMenu(int)));
connect(this, SIGNAL(TextISize(int)), Mpal, SLOT(setSize(int)));
connect(this, SIGNAL(TextUSval(double)), Mpal, SLOT(setExtra(double)));
connect(this, SIGNAL(TextStil(int)), Mpal, SLOT(setStil(int)));
connect(this, SIGNAL(TextScale(int)), Mpal, SLOT(setTScale(int)));
connect(this, SIGNAL(TextFarben(QString, QString, int, int)), Mpal, SLOT(setActFarben(QString, QString, int, int)));
connect(ClipB, SIGNAL(dataChanged()), this, SLOT(ClipChange()));
}
}
void ScribusApp::initMenuBar()
{
int a;
int MenID;
QFont tmp;
recentMenu = new QPopupMenu();
RecentDocs.clear();
fileMenu=new QPopupMenu();
fid12 = fileMenu->insertItem(loadIcon("DateiNeu16.png"), tr("New"), this, SLOT(slotFileNew()), CTRL+Key_N);
fid13 = fileMenu->insertItem(loadIcon("DateiOpen16.png"), tr("Open..."), this, SLOT(slotDocOpen()), CTRL+Key_O);
fid14 = fileMenu->insertItem( tr("Recent Documents"), recentMenu);
SetKeyEntry(0, tr("New"), fid12, CTRL+Key_N);
SetKeyEntry(1, tr("Open..."), fid13, CTRL+Key_O);
fileMenu->insertSeparator();
fid1 = fileMenu->insertItem(loadIcon("DateiClos16.png"), tr("Close"), this, SLOT(slotFileClose()), CTRL+Key_W);
SetKeyEntry(2, tr("Close"), fid1, CTRL+Key_W);
fileMenu->setItemEnabled(fid1, 0);
fid4 = fileMenu->insertItem(loadIcon("DateiSave16.png"), tr("Save"), this, SLOT(slotFileSave()), CTRL+Key_S);
SetKeyEntry(3, tr("Save"), fid4, CTRL+Key_S);
fileMenu->setItemEnabled(fid4, 0);
fid5 = fileMenu->insertItem( tr("Save as..."), this, SLOT(slotFileSaveAs()));
SetKeyEntry(4, tr("Save as..."), fid5, 0);
fileMenu->setItemEnabled(fid5, 0);
fid52 = fileMenu->insertItem( tr("Revert to Saved"), this, SLOT(slotFileRevert()));
fileMenu->setItemEnabled(fid52, 0);
fid51 = fileMenu->insertItem( tr("Collect for Output..."), this, SLOT(Collect()));
fileMenu->setItemEnabled(fid51, 0);
fileMenu->insertSeparator();
importMenu = new QPopupMenu();
fid2 = importMenu->insertItem( tr("Get Text/Picture..."), this, SLOT(slotFileOpen()));
importMenu->setItemEnabled(fid2, 0);
fid2a = importMenu->insertItem( tr("Insert Page..."), this, SLOT(slotDocMerge()));
importMenu->setItemEnabled(fid2a, 0);
fileMenu->insertItem( tr("Import..."), importMenu);
exportMenu = new QPopupMenu();
fid3 = exportMenu->insertItem( tr("Save Text..."), this, SLOT(SaveText()));
exportMenu->setItemEnabled(fid3, 0);
fid8 = exportMenu->insertItem( tr("Save Page as EPS..."), this, SLOT(SaveAsEps()));
exportMenu->setItemEnabled(fid8, 0);
fid10 = exportMenu->insertItem( tr("Save as PDF..."), this, SLOT(SaveAsPDF()));
exportMenu->setItemEnabled(fid10, 0);
fid11 = fileMenu->insertItem( tr("Export..."), exportMenu);
fileMenu->setItemEnabled(fid11, 0);
fileMenu->insertSeparator();
fid6 = fileMenu->insertItem( tr("Document Info..."), this, SLOT(InfoDoc()), CTRL+Key_I);
fileMenu->setItemEnabled(fid6, 0);
SetKeyEntry(5, tr("Document Info..."), fid6, CTRL+Key_I);
fid7 = fileMenu->insertItem( tr("Document Setup..."), this, SLOT(SetupDoc()));
fileMenu->setItemEnabled(fid7, 0);
SetKeyEntry(6, tr("Document Setup..."), fid7, 0);
fid9 = fileMenu->insertItem(loadIcon("DateiPrint16.png"), tr("Print..."), this, SLOT(slotFilePrint()), CTRL+Key_P);
fileMenu->setItemEnabled(fid9, 0);
SetKeyEntry(7, tr("Print..."), fid9, CTRL+Key_P);
fileMenu->insertSeparator();
MenID = fileMenu->insertItem(loadIcon("exit.png"), tr("Quit"), this, SLOT(slotFileQuit()), CTRL+Key_Q);
SetKeyEntry(8, tr("Quit"), MenID, CTRL+Key_Q);
editMenu = new QPopupMenu();
edUndo = editMenu->insertItem( tr("Undo"), this, SLOT(UnDoAction()), CTRL+Key_Z);
editMenu->insertSeparator();
edid1 = editMenu->insertItem(loadIcon("editcut.png"), tr("Cut"), this , SLOT(slotEditCut()), CTRL+Key_X);
edid2 = editMenu->insertItem(loadIcon("editcopy.png"), tr("Copy"), this , SLOT(slotEditCopy()), CTRL+Key_C);
edid3 = editMenu->insertItem(loadIcon("editpaste.png"), tr("Paste"), this , SLOT(slotEditPaste()), CTRL+Key_V);
edid4 = editMenu->insertItem(loadIcon("editdelete.png"), tr("Clear"), this, SLOT(DeleteText()));
edid5 = editMenu->insertItem( tr("Select all"), this, SLOT(SelectAll()), CTRL+Key_A);
SetKeyEntry(9, tr("Cut"), edid1, CTRL+Key_X);
SetKeyEntry(10, tr("Copy"), edid2, CTRL+Key_C);
SetKeyEntry(11, tr("Paste"), edid3, CTRL+Key_V);
SetKeyEntry(12, tr("Clear"), edid4, 0);
SetKeyEntry(13, tr("Select all"), edid5, CTRL+Key_A);
editMenu->insertSeparator();
MenID = editMenu->insertItem( tr("Colors..."), this , SLOT(slotEditColors()));
SetKeyEntry(14, tr("Colors..."), MenID, 0);
edid6 = editMenu->insertItem( tr("Styles..."), this , SLOT(slotEditStyles()));
edid6a = editMenu->insertItem( tr("Line Styles..."), this , SLOT(slotEditLineStyles()));
SetKeyEntry(15, tr("Styles..."), edid6, 0);
tman = editMenu->insertItem( tr("Templates..."), this, SLOT(ManageTemp()));
SetKeyEntry(16, tr("Templates..."), tman, 0);
jman = editMenu->insertItem( tr("Javascripts..."), this, SLOT(ManageJava()));
hymen = new QPopupMenu();
MenID = hymen->insertItem( tr("General..."), this , SLOT(slotPrefsOrg()));
SetKeyEntry(18, tr("Preferences..."), MenID, 0);
MenID = hymen->insertItem( tr("Fonts..."), this , SLOT(slotFontOrg()));
SetKeyEntry(17, tr("Fonts..."), MenID, 0);
hymen->insertItem( tr("Hyphenator..."), this, SLOT(configHyphenator()));
editMenu->insertItem( tr("Preferences"), hymen);
editMenu->setItemEnabled(edUndo, 0);
editMenu->setItemEnabled(edid1, 0);
editMenu->setItemEnabled(edid2, 0);
editMenu->setItemEnabled(edid3, 0);
editMenu->setItemEnabled(edid4, 0);
editMenu->setItemEnabled(edid5, 0);
editMenu->setItemEnabled(edid6, 0);
editMenu->setItemEnabled(edid6a, 0);
editMenu->setItemEnabled(tman, 0);
editMenu->setItemEnabled(jman, 0);
StilMenu = new QPopupMenu();
ObjMenu = new QPopupMenu();
SetKeyEntry(19, tr("Select New Font"), 0, 0);
MenID = ObjMenu->insertItem( tr("Duplicate"), this, SLOT(ObjektDup()), CTRL+Key_D);
SetKeyEntry(20, tr("Duplicate"), MenID, CTRL+Key_D);
MenID = ObjMenu->insertItem( tr("Multiple Duplicate"), this, SLOT(ObjektDupM()));
SetKeyEntry(21, tr("Multiple Duplicate"), MenID, 0);
Loesch = ObjMenu->insertItem( tr("Delete"), this, SLOT(DeleteObjekt()), CTRL+Key_K);
SetKeyEntry(22, tr("Delete"), Loesch, CTRL+Key_K);
ObjMenu->insertSeparator();
Gr = ObjMenu->insertItem( tr("Group"), this, SLOT(GroupObj()), CTRL+Key_G);
SetKeyEntry(23, tr("Group"), Gr, CTRL+Key_G);
UnGr = ObjMenu->insertItem( tr("Un-group"), this, SLOT(UnGroupObj()),CTRL+Key_U);
SetKeyEntry(24, tr("Un-group"), UnGr, CTRL+Key_U);
LockOb = ObjMenu->insertItem( tr("Lock"), this, SLOT(ToggleObjLock()), CTRL+Key_H);
ObjMenu->insertSeparator();
OBack = ObjMenu->insertItem( tr("Send to Back"), this, SLOT(Objekt2Back()));
SetKeyEntry(25, tr("Send to Back"), OBack, 0);
OFront = ObjMenu->insertItem( tr("Bring to Front"), this, SLOT(Objekt2Front()));
SetKeyEntry(26, tr("Bring to Front"), OFront, 0);
OLower = ObjMenu->insertItem( tr("Lower"), this, SLOT(ObjektLower()));
SetKeyEntry(27, tr("Lower"), OLower, 0);
ORaise = ObjMenu->insertItem( tr("Raise"), this, SLOT(ObjektRaise()));
SetKeyEntry(28, tr("Raise"), ORaise, 0);
DistM = ObjMenu->insertItem( tr("Distribute/Align..."), this, SLOT(ObjektAlign()));
SetKeyEntry(29, tr("Distribute/Align..."), DistM, 0);
ObjMenu->insertSeparator();
ShapeMenu = new QPopupMenu();
ShapeMenu->insertItem( tr("Rectangle"), this, SLOT(RectFrame()));
ShapeMenu->insertItem( tr("Rounded Rectangle"), this, SLOT(RoundedFrame()));
ShapeMenu->insertItem( tr("Oval"), this, SLOT(OvalFrame()));
ShapeEdit = ShapeMenu->insertItem( tr("Edit Frame"), this, SLOT(ToggleFrameEdit()));
ShapeM = ObjMenu->insertItem( tr("Shape"), ShapeMenu);
PfadT = ObjMenu->insertItem( tr("Attach Text to Path"), this, SLOT(Pfadtext()));
PfadV = ObjMenu->insertItem( tr("Combine Polygons"), this, SLOT(UniteOb()));
PfadS = ObjMenu->insertItem( tr("Split Polygons"), this, SLOT(SplitUniteOb()));
PfadTP = ObjMenu->insertItem( tr("Convert to Outlines"), this, SLOT(TraceText()));
ObjMenu->setItemEnabled(ShapeM, 0);
ObjMenu->setItemEnabled(DistM, 0);
ObjMenu->setItemEnabled(Gr, 0);
ObjMenu->setItemEnabled(UnGr, 0);
ObjMenu->setItemEnabled(PfadT, 0);
ObjMenu->setItemEnabled(PfadV, 0);
ObjMenu->setItemEnabled(PfadS, 0);
ObjMenu->setItemEnabled(LockOb, 0);
ObjMenu->setItemEnabled(PfadTP, 0);
pageMenu = new QPopupMenu();
MenID = pageMenu->insertItem( tr("Insert..."), this, SLOT(slotNewPageM()));
SetKeyEntry(30, tr("Insert..."), MenID, 0);
pgmd = pageMenu->insertItem( tr("Delete..."), this, SLOT(DeletePage()));
SetKeyEntry(31, tr("Delete..."), pgmd, 0);
MenID = pageMenu->insertItem( tr("Copy")+"...", this, SLOT(CopyPage()));
SetKeyEntry(61, tr("Copy")+"...", MenID, 0);
pgmv = pageMenu->insertItem( tr("Move..."), this, SLOT(MovePage()));
SetKeyEntry(32, tr("Move..."), pgmv, 0);
MenID = pageMenu->insertItem( tr("Apply Template..."), this, SLOT(ApplyTemp()));
SetKeyEntry(33, tr("Apply Template..."), MenID, 0);
MenID = pageMenu->insertItem( tr("Manage Guides..."), this, SLOT(ManageGuides()));
SetKeyEntry(49, tr("Manage Guides..."), MenID, 0);
pageMenu->setItemEnabled(pgmd, 0);
pageMenu->setItemEnabled(pgmv, 0);
viewMenu=new QPopupMenu();
MenID = viewMenu->insertItem( tr("Fit in Window"), this, SLOT(slotZoomFit()), CTRL+Key_0);
SetKeyEntry(34, tr("Fit in Window"), MenID, CTRL+Key_0);
MenID = viewMenu->insertItem("50%", this, SLOT(slotZoom50()));
SetKeyEntry(35, tr("50%"), MenID, 0);
MenID = viewMenu->insertItem("75%", this, SLOT(slotZoom75()));
SetKeyEntry(36, tr("75%"), MenID, 0);
MenID = viewMenu->insertItem( tr("Actual Size"), this, SLOT(slotZoom100()), CTRL+Key_1);
SetKeyEntry(37, tr("Actual Size"), MenID, CTRL+Key_1);
MenID = viewMenu->insertItem("200%", this, SLOT(slotZoom200()));
SetKeyEntry(38, tr("200%"), MenID, 0);
MenID = viewMenu->insertItem( tr("Thumbnails"), this, SLOT(slotZoom20()));
SetKeyEntry(39, tr("Thumbnails"), MenID, 0);
viewMenu->insertSeparator();
Markers = viewMenu->insertItem( tr("Hide Margins"), this, SLOT(ToggleMarks()));
SetKeyEntry(40, tr("Hide Margins"), Markers, 0);
FrameDr = viewMenu->insertItem( tr("Hide Frames"), this, SLOT(ToggleFrames()));
SetKeyEntry(41, tr("Hide Frames"), FrameDr, 0);
Bilder = viewMenu->insertItem( tr("Hide Images"), this, SLOT(TogglePics()));
SetKeyEntry(42, tr("Hide Images"), Bilder, 0);
Ras = viewMenu->insertItem( tr("Show Grid"), this, SLOT(ToggleRaster()));
SetKeyEntry(43, tr("Show Grid"), Ras, 0);
uRas = viewMenu->insertItem( tr("Snap to Grid"), this, SLOT(ToggleURaster()));
SetKeyEntry(44, tr("Snap to Grid"), uRas, 0);
Guide = viewMenu->insertItem( tr("Hide Guides"), this, SLOT(ToggleGuides()));
uGuide = viewMenu->insertItem( tr("Snap to Guides"), this, SLOT(ToggleUGuides()));
for (a=0; a<6; ++a)
{
viewMenu->setItemEnabled(viewMenu->idAt(a), 0);
}
viewMenu->setItemEnabled(Markers, 0);
viewMenu->setItemEnabled(FrameDr, 0);
viewMenu->setItemEnabled(Bilder, 0);
viewMenu->setItemEnabled(Ras, 0);
viewMenu->setItemEnabled(uRas, 0);
viewMenu->setItemEnabled(Guide, 0);
viewMenu->setItemEnabled(uGuide, 0);
toolMenu=new QPopupMenu();
viewTools = toolMenu->insertItem( tr("Hide Tools"), this, SLOT(ToggleTools()));
SetKeyEntry(45, tr("Hide Tools"), viewTools, 0);
viewToolsP = toolMenu->insertItem( tr("Hide PDF-Tools"), this, SLOT(TogglePDFTools()));
viewMpal = toolMenu->insertItem( tr("Show Properties"), this, SLOT(ToggleMpal()));
SetKeyEntry(46, tr("Show Properties"), viewMpal, 0);
viewTpal = toolMenu->insertItem( tr("Show Outline"), this, SLOT(ToggleTpal()));
SetKeyEntry(47, tr("Show Outline"), viewTpal, 0);
viewBpal = toolMenu->insertItem( tr("Show Scrapbook"), this, SLOT(ToggleBpal()));
SetKeyEntry(48, tr("Show Scrapbook"), viewBpal, 0);
viewLpal = toolMenu->insertItem( tr("Show Layers"), this, SLOT(ToggleLpal()));
viewSepal = toolMenu->insertItem( tr("Show Page Palette"), this, SLOT(ToggleSepal()));
viewBopal = toolMenu->insertItem( tr("Show Bookmarks"), this, SLOT(ToggleBookpal()));
extraMenu=new QPopupMenu();
MenID = extraMenu->insertItem( tr("Manage Pictures"), this, SLOT(StatusPic()));
SetKeyEntry(51, tr("Manage Pictures"), MenID, 0);
hyph = extraMenu->insertItem( tr("Hyphenate Text"), this, SLOT(doHyphenate()));
extraMenu->setItemEnabled(hyph, 0);
SetKeyEntry(50, tr("Hyphenate Text"), hyph, 0);
windowsMenu = new QPopupMenu();
windowsMenu->setCheckable( true );
connect(windowsMenu, SIGNAL(aboutToShow()), this, SLOT(windowsMenuAboutToShow()));
helpMenu=new QPopupMenu();
MenID = helpMenu->insertItem( tr("About Scribus"), this, SLOT(slotHelpAbout()));
SetKeyEntry(52, tr("About Scribus"), MenID, 0);
MenID = helpMenu->insertItem( tr("About Qt"), this, SLOT(slotHelpAboutQt()));
SetKeyEntry(53, tr("About Qt"), MenID, 0);
helpMenu->insertSeparator();
MenID = helpMenu->insertItem( tr("Online-Help..."), this, SLOT(slotOnlineHelp()));
SetKeyEntry(54, tr("Online-Help..."), MenID, 0);
tip = helpMenu->insertItem( tr("Tool-Tips"), this, SLOT(ToggleTips()));
SetKeyEntry(55, tr("Tool-Tips"), tip, 0);
tipsOn = true;
helpMenu->setItemChecked(tip, tipsOn);
// ObjMenu->insertItem( tr("Test"), this, SLOT(slotTest()));
// helpMenu->insertItem( tr("Test2"), this, SLOT(slotTest2()));
menuBar()->insertItem( tr("File"), fileMenu);
menuBar()->insertItem( tr("Edit"), editMenu);
Stm = menuBar()->insertItem( tr("Style"), StilMenu);
Obm = menuBar()->insertItem( tr("Item"), ObjMenu);
pgmm = menuBar()->insertItem( tr("Page"), pageMenu);
menuBar()->setItemEnabled(Obm, 0);
menuBar()->setItemEnabled(pgmm, 0);
menuBar()->insertItem( tr("View"), viewMenu);
menuBar()->insertItem( tr("Tools"), toolMenu);
exmn = menuBar()->insertItem( tr("Extras"), extraMenu);
menuBar()->setItemEnabled(exmn, 0);
menuBar()->insertItem( tr("Windows"), windowsMenu );
menuBar()->insertSeparator();
menuBar()->insertItem( tr("Help"), helpMenu);
AliMenu = new QPopupMenu();
AliMenu->insertItem( tr("Left"));
AliMenu->insertItem( tr("Center"));
AliMenu->insertItem( tr("Right"));
AliMenu->insertItem( tr("Block"));
AliMenu->insertItem( tr("Forced"));
ColorMenu = new QPopupMenu();
SizeTMenu = new QPopupMenu();
SizeTMenu->insertItem( tr("Other..."));
SizeTMenu->insertItem(" 7 pt");
SizeTMenu->insertItem(" 9 pt");
SizeTMenu->insertItem("10 pt");
SizeTMenu->insertItem("12 pt");
SizeTMenu->insertItem("14 pt");
SizeTMenu->insertItem("18 pt");
SizeTMenu->insertItem("24 pt");
SizeTMenu->insertItem("36 pt");
SizeTMenu->insertItem("48 pt");
SizeTMenu->insertItem("60 pt");
SizeTMenu->insertItem("72 pt");
ShadeMenu = new QPopupMenu();
ShadeMenu->insertItem( tr("Other..."));
ShadeMenu->insertItem("0 %");
ShadeMenu->insertItem("10 %");
ShadeMenu->insertItem("20 %");
ShadeMenu->insertItem("30 %");
ShadeMenu->insertItem("40 %");
ShadeMenu->insertItem("50 %");
ShadeMenu->insertItem("60 %");
ShadeMenu->insertItem("70 %");
ShadeMenu->insertItem("80 %");
ShadeMenu->insertItem("90 %");
ShadeMenu->insertItem("100 %");
FontMenu = new QPopupMenu();
TypeStyleMenu = new QPopupMenu();
TypeStyleMenu->insertItem( tr("Normal"));
tmp = qApp->font();
tmp = qApp->font();
tmp.setUnderline(true);
TypeStyleMenu->insertItem(new FmItem( tr("Underline"), tmp));
tmp = qApp->font();
tmp.setStrikeOut(true);
TypeStyleMenu->insertItem(new FmItem( tr("Strikethru"), tmp));
TypeStyleMenu->insertItem( tr("Small Caps"));
TypeStyleMenu->insertItem( tr("Superscript"));
TypeStyleMenu->insertItem( tr("Subscript"));
TypeStyleMenu->insertItem( tr("Outlined"));
}
void ScribusApp::initStatusBar()
{
FMess = new QLabel(statusBar(), "ft");
FMess->setText(" ");
statusBar()->addWidget(FMess, 3, true);
FProg = new QProgressBar(statusBar(), "p");
FProg->setCenterIndicator(true);
FProg->setFixedWidth( 100 );
statusBar()->addWidget(FProg, 0, true);
FProg->reset();
XMess = new QLabel(statusBar(), "xt");
XMess->setText( tr("X-Pos:"));
statusBar()->addWidget(XMess, 0, true);
XDat = new QLabel(statusBar(), "dt");
statusBar()->addWidget(XDat, 1, true);
XDat->setText(" ");
YMess = new QLabel(statusBar(), "yt");
YMess->setText( tr("Y-Pos:"));
statusBar()->addWidget(YMess, 0, true);
YDat = new QLabel(statusBar(), "ydt");
statusBar()->addWidget(YDat, 1, true);
YDat->setText(" ");
}
void ScribusApp::ReportMP(double xp, double yp)
{
QString tmp, tmp2;
switch (doc->Einheit)
{
case 0:
tmp2 = " pt";
break;
case 1:
tmp2 = " mm";
break;
case 2:
tmp2 = " in";
break;
case 3:
tmp2 = " p";
break;
}
XDat->setText(tmp.setNum(qRound(xp*UmReFaktor * 100) / 100.0, 'f', 2)+tmp2);
YDat->setText(tmp.setNum(qRound(yp*UmReFaktor * 100) / 100.0, 'f', 2)+tmp2);
}
void ScribusApp::SetKeyEntry(int Nr, QString text, int Men, int KeyC)
{
Keys ke;
ke.Name = text;
ke.MenuID = Men;
ke.KeyID = KeyC;
Prefs.KeyActions.insert(Nr, ke);
}
void ScribusApp::DeleteSel(PageItem *b)
{
Pti *it;
for (it = b->Ptext.first(); it != 0; it = b->Ptext.next())
{
if (it->cselect)
{
b->Ptext.remove();
it = b->Ptext.prev();
if (it == 0)
{
it = b->Ptext.first();
}
}
}
if (b->Ptext.count() != 0)
{
if (b->Ptext.first()->cselect)
{
b->Ptext.remove();
b->CPos = 0;
}
else
b->CPos = QMIN(b->CPos, doc->ActPage->oldCp);
}
else
b->CPos = 0;
b->HasSel = false;
DisableTxEdit();
}
void ScribusApp::setTBvals(PageItem *b)
{
if (b->Ptext.count() != 0)
{
doc->CurrentStyle = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cstyle & 127;
doc->CurrentABStil = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cab;
setAbsValue(doc->CurrentABStil);
Mpal->setAli(doc->CurrentABStil);
doc->CurrFont = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cfont;
doc->CurrFontSize = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->csize;
doc->CurrTextFill = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->ccolor;
doc->CurrTextFillSh = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cshade;
doc->CurrTextStroke = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cstroke;
doc->CurrTextStrokeSh = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cshade2;
doc->CurrTextScale = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cscale;
emit TextFarben(doc->CurrTextStroke, doc->CurrTextFill, doc->CurrTextStrokeSh, doc->CurrTextFillSh);
emit TextIFont(doc->CurrFont);
emit TextISize(doc->CurrFontSize);
emit TextUSval(b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cextra);
emit TextStil(doc->CurrentStyle);
emit TextScale(doc->CurrTextScale);
}
}
void ScribusApp::wheelEvent(QWheelEvent *w)
{
if (HaveDoc)
{
if (w->delta() < 0)
view->scrollBy(0, Prefs.Wheelval);
else
view->scrollBy(0, -Prefs.Wheelval);
w->accept();
}
}
void ScribusApp::keyPressEvent(QKeyEvent *k)
{
struct Pti *hg;
int kk = k->key();
int as = k->ascii();
double altx, alty;
QString uc = k->text();
QString cr, Tcha, Twort;
uint Tcoun;
if (keyrep)
return;
keyrep = true;
switch (k->state())
{
case ShiftButton:
KeyMod = 0x00200000;
break;
case AltButton:
KeyMod = 0x00800000;
break;
case ControlButton:
KeyMod = 0x00400000;
break;
default:
KeyMod = 0;
}
if ((HaveDoc) && (!view->LE->hasFocus()))
{
switch (kk)
{
case Key_Prior:
view->scrollBy(0, -Prefs.Wheelval);
keyrep = false;
return;
break;
case Key_Next:
view->scrollBy(0, Prefs.Wheelval);
keyrep = false;
return;
break;
}
if (doc->ActPage->SelItem.count() != 0)
{
PageItem *b = doc->ActPage->SelItem.at(0);
switch (doc->AppMode)
{
case 1:
switch (kk)
{
case Key_Delete:
if (!doc->EditClip)
{
if (!b->Locked)
doc->ActPage->DeleteItem();
}
break;
case Key_Left:
if (!k->isAutoRepeat())
{
doc->ActPage->storeUndoInf(b);
doc->UnData.UnCode = 1;
doc->UnDoValid = true;
CanUndo();
}
if (!b->Locked)
doc->ActPage->moveGroup(-1, 0);
break;
case Key_Right:
if (!k->isAutoRepeat())
{
doc->ActPage->storeUndoInf(b);
doc->UnData.UnCode = 1;
doc->UnDoValid = true;
CanUndo();
}
if (!b->Locked)
doc->ActPage->moveGroup(1, 0);
break;
case Key_Up:
if (!k->isAutoRepeat())
{
doc->ActPage->storeUndoInf(b);
doc->UnData.UnCode = 1;
doc->UnDoValid = true;
CanUndo();
}
if (!b->Locked)
doc->ActPage->moveGroup(0, -1);
break;
case Key_Down:
if (!k->isAutoRepeat())
{
doc->ActPage->storeUndoInf(b);
doc->UnData.UnCode = 1;
doc->UnDoValid = true;
CanUndo();
}
if (!b->Locked)
doc->ActPage->moveGroup(0, 1);
default:
if (b->PType == 4)
{
if ((kk + KeyMod) == Prefs.KeyActions[59].KeyID)
{
setNewAbStyle(1);
b->Dirty = true;
b->Tinput = true;
doc->ActPage->RefreshItem(b);
}
if ((kk + KeyMod) == Prefs.KeyActions[58].KeyID)
{
setNewAbStyle(2);
b->Dirty = true;
b->Tinput = true;
doc->ActPage->RefreshItem(b);
}
if ((kk + KeyMod) == Prefs.KeyActions[57].KeyID)
{
setNewAbStyle(0);
b->Dirty = true;
b->Tinput = true;
doc->ActPage->RefreshItem(b);
}
}
break;
}
slotDocCh();
break;
case 7:
if (b->PType == 4)
{
doc->ActPage->slotDoCurs(false);
switch (kk)
{
case Key_Down:
if (b->CPos != static_cast<int>(b->Ptext.count()))
{
alty = b->Ptext.at(b->CPos)->yp;
altx = b->Ptext.at(b->CPos)->xp;
do
{
b->CPos += 1;
if (b->CPos == static_cast<int>(b->Ptext.count()))
break;
if (b->Ptext.at(b->CPos)->yp > alty)
{
if (b->Ptext.at(b->CPos)->xp >= altx)
break;
}
}
while (b->CPos < static_cast<int>(b->Ptext.count()));
if (b->CPos == static_cast<int>(b->Ptext.count()))
if (b->NextBox != 0)
{
if (b->NextBox->Ptext.count() != 0)
{
b->OwnPage->Deselect(true);
b->NextBox->CPos = 0;
doc->ActPage = b->NextBox->OwnPage;
b->NextBox->OwnPage->SelectItemNr(b->NextBox->ItemNr);
b = b->NextBox;
}
}
}
else
{
if (b->NextBox != 0)
{
if (b->NextBox->Ptext.count() != 0)
{
b->OwnPage->Deselect(true);
b->NextBox->CPos = 0;
doc->ActPage = b->NextBox->OwnPage;
b->NextBox->OwnPage->SelectItemNr(b->NextBox->ItemNr);
b = b->NextBox;
}
}
}
setTBvals(b);
break;
case Key_Up:
if (b->CPos > 0)
{
if (b->CPos == static_cast<int>(b->Ptext.count()))
b->CPos -= 1;
alty = b->Ptext.at(b->CPos)->yp;
altx = b->Ptext.at(b->CPos)->xp;
if (b->CPos > 0)
{
do
{
b->CPos -= 1;
if (b->CPos == 0)
break;
if (b->Ptext.at(b->CPos)->yp < alty)
{
if (b->Ptext.at(b->CPos)->xp <= altx)
break;
}
}
while (b->CPos > 0);
}
if (b->CPos == 0)
{
if (b->BackBox != 0)
{
b->OwnPage->Deselect(true);
b->BackBox->CPos = b->BackBox->Ptext.count();
doc->ActPage = b->BackBox->OwnPage;
b->BackBox->OwnPage->SelectItemNr(b->BackBox->ItemNr);
b = b->BackBox;
}
}
}
else
{
b->CPos = 0;
if (b->BackBox != 0)
{
b->OwnPage->Deselect(true);
b->BackBox->CPos = b->BackBox->Ptext.count();
doc->ActPage = b->BackBox->OwnPage;
b->BackBox->OwnPage->SelectItemNr(b->BackBox->ItemNr);
b = b->BackBox;
}
}
setTBvals(b);
break;
case Key_Home:
b->CPos = 0;
setTBvals(b);
break;
case Key_End:
b->CPos = static_cast<int>(b->Ptext.count());
setTBvals(b);
break;
case Key_Left:
b->CPos -= 1;
if (b->CPos < 0)
{
b->CPos = 0;
if (b->BackBox != 0)
{
b->OwnPage->Deselect(true);
b->BackBox->CPos = b->BackBox->Ptext.count();
doc->ActPage = b->BackBox->OwnPage;
b->BackBox->OwnPage->SelectItemNr(b->BackBox->ItemNr);
b = b->BackBox;
}
}
setTBvals(b);
break;
case Key_Right:
b->CPos += 1;
if (b->CPos > static_cast<int>(b->Ptext.count()))
{
b->CPos -= 1;
if (b->NextBox != 0)
{
if (b->NextBox->Ptext.count() != 0)
{
b->OwnPage->Deselect(true);
b->NextBox->CPos = 0;
doc->ActPage = b->NextBox->OwnPage;
b->NextBox->OwnPage->SelectItemNr(b->NextBox->ItemNr);
b = b->NextBox;
}
}
}
setTBvals(b);
break;
case Key_Delete:
if (b->CPos == static_cast<int>(b->Ptext.count())) { return; }
if (b->Ptext.count() == 0) { return; }
cr = b->Ptext.at(b->CPos)->ch;
if (b->HasSel)
DeleteSel(b);
else
b->Ptext.remove(b->CPos);
b->Tinput = false;
if ((cr == QChar(13)) && (b->Ptext.count() != 0))
{
doc->ActPage->chAbStyle(b, b->Ptext.at(QMAX(b->CPos-1,0))->cab);
b->Tinput = false;
}
setTBvals(b);
b->Dirty = true;
doc->ActPage->RefreshItem(b);
break;
case Key_Backspace:
if (b->CPos == 0)
return;
if (b->Ptext.count() == 0) { return; }
cr = b->Ptext.at(QMAX(b->CPos-1,0))->ch;
if (b->HasSel)
DeleteSel(b);
else
b->CPos -= 1;
b->Ptext.remove(b->CPos);
b->Tinput = false;
if ((cr == QChar(13)) && (b->Ptext.count() != 0))
{
doc->ActPage->chAbStyle(b, b->Ptext.at(QMAX(b->CPos-1,0))->cab);
b->Tinput = false;
}
setTBvals(b);
b->Dirty = true;
doc->ActPage->RefreshItem(b);
break;
default:
if ((b->HasSel) && (kk < 0x1000))
{
DeleteSel(b);
b->Dirty = true;
doc->ActPage->RefreshItem(b);
}
if (((kk + KeyMod) == Prefs.KeyActions[60].KeyID) || ((kk + KeyMod) == Prefs.KeyActions[67].KeyID))
{
hg = new Pti;
if ((kk + KeyMod) == Prefs.KeyActions[60].KeyID)
hg->ch = QString(QChar(30));
else
hg->ch = QString(QChar(29));
hg->cfont = doc->CurrFont;
hg->csize = doc->CurrFontSize;
hg->ccolor = doc->CurrTextFill;
hg->cshade = doc->CurrTextFillSh;
hg->cstroke = doc->CurrTextStroke;
hg->cshade2 = doc->CurrTextStrokeSh;
hg->cscale = doc->CurrTextScale;
hg->cselect = false;
hg->cstyle = doc->CurrentStyle;
hg->cab = doc->CurrentABStil;
if (doc->Vorlagen[doc->CurrentABStil].Font != "")
{
hg->cfont = doc->Vorlagen[doc->CurrentABStil].Font;
hg->csize = doc->Vorlagen[doc->CurrentABStil].FontSize;
}
hg->cextra = 0;
hg->xp = 0;
hg->yp = 0;
hg->PRot = 0;
hg->PtransX = 0;
hg->PtransY = 0;
b->Ptext.insert(b->CPos, hg);
b->CPos += 1;
b->Dirty = true;
b->Tinput = true;
doc->ActPage->RefreshItem(b);
break;
}
if ((kk + KeyMod) == Prefs.KeyActions[56].KeyID)
{
b->Ptext.at(QMAX(b->CPos-1,0))->cstyle ^= 128;
b->Dirty = true;
b->Tinput = true;
doc->ActPage->RefreshItem(b);
break;
}
if ((kk + KeyMod) == Prefs.KeyActions[59].KeyID)
{
setNewAbStyle(1);
b->Dirty = true;
b->Tinput = true;
doc->ActPage->RefreshItem(b);
break;
}
if ((kk + KeyMod) == Prefs.KeyActions[57].KeyID)
{
setNewAbStyle(0);
b->Dirty = true;
b->Tinput = true;
doc->ActPage->RefreshItem(b);
break;
}
if ((kk + KeyMod) == Prefs.KeyActions[58].KeyID)
{
setNewAbStyle(2);
b->Dirty = true;
b->Tinput = true;
doc->ActPage->RefreshItem(b);
break;
}
if (((uc[0] > QChar(31)) || (as == 13) || (as == 30)) && ((*doc->AllFonts)[doc->CurrFont]->CharWidth.contains(uc[0].unicode())))
{
hg = new Pti;
hg->ch = uc;
hg->cfont = doc->CurrFont;
hg->ccolor = doc->CurrTextFill;
hg->cshade = doc->CurrTextFillSh;
hg->cstroke = doc->CurrTextStroke;
hg->cshade2 = doc->CurrTextStrokeSh;
hg->cscale = doc->CurrTextScale;
hg->csize = doc->CurrFontSize;
hg->cextra = 0;
hg->cselect = false;
hg->cstyle = doc->CurrentStyle;
hg->cab = doc->CurrentABStil;
if (doc->Vorlagen[doc->CurrentABStil].Font != "")
{
hg->cfont = doc->Vorlagen[doc->CurrentABStil].Font;
hg->csize = doc->Vorlagen[doc->CurrentABStil].FontSize;
}
hg->xp = 0;
hg->yp = 0;
hg->PRot = 0;
hg->PtransX = 0;
hg->PtransY = 0;
b->Ptext.insert(b->CPos, hg);
b->CPos += 1;
if ((doc->Trenner->AutoCheck) && (b->CPos > 1))
{
Twort = "";
Tcoun = 0;
for (int hych = b->CPos-1; hych > -1; hych--)
{
Tcha = b->Ptext.at(hych)->ch;
if (Tcha == " ")
{
Tcoun = hych+1;
break;
}
Twort.prepend(Tcha);
}
if (Twort != "")
{
if (doc->Trenner->Language != b->Language)
doc->Trenner->slotNewDict(b->Language);
doc->Trenner->slotHyphenateWord(b, Twort, Tcoun);
b->Dirty = true;
}
}
if ((b->CPos < static_cast<int>(b->Ptext.count())) || (as == 30))
b->Dirty = true;
b->Tinput = true;
doc->ActPage->RefreshItem(b, true);
}
break;
}
if (b->Ptext.count() != 0)
if (b->Ptext.at(QMAX(b->CPos-1, 0))->yp != 0)
doc->ActPage->slotDoCurs(true);
if ((kk == Key_Left) || (kk == Key_Right) || (kk == Key_Up) || (kk == Key_Down))
{
keyrep = false;
return;
}
}
slotDocCh(false);
break;
}
}
}
keyrep = false;
}
void ScribusApp::closeEvent(QCloseEvent *ce)
{
QWidgetList windows = wsp->windowList();
ScribusWin* tw;
if (!windows.isEmpty())
{
for ( int i = 0; i < static_cast<int>(windows.count()); ++i )
{
newActWin(windows.at(i));
tw = ActWin;
ActWin->close();
if (tw == ActWin)
{
ce->ignore();
return;
}
}
SavePrefs();
if ((Prefs.SaveAtQ) && (ScBook->Changed == true))
{
if (ScBook->ScFilename.isEmpty())
ScBook->ScFilename = PrefsPfad+"/scrap.scs";
ScBook->Save();
}
if (ScBook->BibWin->Objekte.count() == 0)
system("rm -f " + PrefsPfad+"/scrap.scs");
Prefs.AvailFonts.~SCFonts();
FinalizePlugs();
exit(0);
}
else
{
SavePrefs();
if ((Prefs.SaveAtQ) && (ScBook->Changed == true))
{
if (ScBook->ScFilename.isEmpty())
ScBook->ScFilename = PrefsPfad+"/scrap.scs";
ScBook->Save();
}
if (ScBook->BibWin->Objekte.count() == 0)
system("rm -f " + PrefsPfad+"/scrap.scs");
qApp->setOverrideCursor(QCursor(ArrowCursor), true);
Prefs.AvailFonts.~SCFonts();
FinalizePlugs();
exit(0);
}
}
/////////////////////////////////////////////////////////////////////
// SLOT IMPLEMENTATION
/////////////////////////////////////////////////////////////////////
double ScribusApp::mm2pts(int mm)
{
return mm / 25.4 * 72;
}
double ScribusApp::pts2mm(double pts)
{
return pts / 72 * 25.4;
}
bool ScribusApp::slotFileNew()
{
double b, h, tpr, lr, rr, br, sp, ab;
bool fp, atf, ret;
NewDoc* dia = new NewDoc(this, &Prefs);
if (dia->exec())
{
tpr = dia->Top;
lr = dia->Left;
rr = dia->Right;
br = dia->Bottom;
ab = dia->Dist;
b = dia->Pagebr;
h = dia->Pageho;
sp = dia->SpinBox10->value();
atf = dia->AutoFrame->isChecked();
fp = dia->Doppelseiten->isChecked();
if (dia->ComboBox3->currentItem() == 1)
{
b = mm2pts(qRound(pts2mm(dia->Pagebr)));
h = mm2pts(qRound(pts2mm(dia->Pageho)));
}
ret = doFileNew(b, h, tpr, lr, rr, br, ab, sp, atf, fp, dia->ComboBox3->currentItem(),
dia->ErsteSeite->isChecked(), dia->Orient, dia->PgNr->value());
FMess->setText( tr("Ready"));
}
else
ret = false;
delete dia;
return ret;
}
bool ScribusApp::doFileNew(double b, double h, double tpr, double lr, double rr, double br, double ab, double sp,
bool atf, bool fp, int einh, bool firstleft, int Ori, int SNr)
{
QString cc;
if (HaveDoc)
doc->OpenNodes = Tpal->buildReopenVals();
doc = new ScribusDoc();
doc->Einheit = einh;
if (fp)
doc->FirstPageLeft = firstleft;
doc->PageOri = Ori;
doc->FirstPnum = SNr;
doc->AllFonts = &Prefs.AvailFonts;
doc->AddFont(Prefs.DefFont, Prefs.AvailFonts[Prefs.DefFont]->Font);
doc->Dfont = Prefs.DefFont;
doc->Dsize = Prefs.DefSize;
doc->GrabRad = Prefs.GrabRad;
doc->GuideRad = Prefs.GuideRad;
doc->minorGrid = Prefs.DminGrid;
doc->majorGrid = Prefs.DmajGrid;
doc->minorColor = Prefs.DminColor;
doc->majorColor = Prefs.DmajColor;
doc->papColor = Prefs.DpapColor;
doc->margColor = Prefs.DmargColor;
doc->guideColor = Prefs.guideColor;
doc->VHoch = Prefs.DVHoch;
doc->VHochSc = Prefs.DVHochSc;
doc->VTief = Prefs.DVTief;
doc->VTiefSc = Prefs.DVTiefSc;
doc->VKapit = Prefs.DVKapit;
doc->Dpen = Prefs.Dpen;
doc->DpenText = Prefs.DpenText;
doc->Dbrush = Prefs.Dbrush;
doc->Dshade = Prefs.Dshade;
doc->Dshade2 = Prefs.Dshade2;
doc->DLineArt = PenStyle(Prefs.DLineArt);
doc->Dwidth = Prefs.Dwidth;
doc->DpenLine = Prefs.DpenLine;
doc->DshadeLine = Prefs.DshadeLine;
doc->DLstyleLine = PenStyle(Prefs.DLstyleLine);
doc->DwidthLine = Prefs.DwidthLine;
doc->MagMin = Prefs.MagMin;
doc->MagMax = Prefs.MagMax;
doc->MagStep = Prefs.MagStep;
doc->DbrushPict = Prefs.DbrushPict;
doc->ShadePict = Prefs.ShadePict;
doc->ScaleX = Prefs.ScaleX;
doc->ScaleY = Prefs.ScaleY;
doc->ScaleType = Prefs.ScaleType;
doc->AspectRatio = Prefs.AspectRatio;
doc->Before = Prefs.Before;
doc->PagesSbS = Prefs.PagesSbS;
doc->ShFrames = Prefs.ShFrames;
doc->RandFarbig = Prefs.RandFarbig;
doc->AutoLine = Prefs.AutoLine;
doc->DocName = doc->DocName+cc.setNum(DocNr);
doc->HasCMS = true;
doc->CMSSettings.DefaultInputProfile = Prefs.DCMSset.DefaultInputProfile;
doc->CMSSettings.DefaultInputProfile2 = Prefs.DCMSset.DefaultInputProfile2;
doc->CMSSettings.DefaultMonitorProfile = Prefs.DCMSset.DefaultMonitorProfile;
doc->CMSSettings.DefaultPrinterProfile = Prefs.DCMSset.DefaultPrinterProfile;
doc->CMSSettings.DefaultIntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
doc->CMSSettings.DefaultIntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
doc->CMSSettings.DefaultIntentMonitor2 = Prefs.DCMSset.DefaultIntentMonitor2;
doc->CMSSettings.SoftProofOn = Prefs.DCMSset.SoftProofOn;
doc->CMSSettings.GamutCheck = Prefs.DCMSset.GamutCheck;
doc->CMSSettings.BlackPoint = Prefs.DCMSset.BlackPoint;
doc->CMSSettings.CMSinUse = Prefs.DCMSset.CMSinUse;
doc->PDF_Optionen.SolidProf = doc->CMSSettings.DefaultInputProfile2;
doc->PDF_Optionen.ImageProf = doc->CMSSettings.DefaultInputProfile;
doc->PDF_Optionen.PrintProf = doc->CMSSettings.DefaultPrinterProfile;
doc->PDF_Optionen.Intent = doc->CMSSettings.DefaultIntentMonitor;
doc->PDF_Optionen.Intent2 = doc->CMSSettings.DefaultIntentMonitor2;
doc->ActiveLayer = 0;
HaveDoc++;
DocNr++;
doc->Scale = 1.0*Prefs.DisScale;
doc->AppMode = 1;
doc->Language = Prefs.Language;
doc->MinWordLen = Prefs.MinWordLen;
doc->Automatic = Prefs.Automatic;
doc->AutoCheck = Prefs.AutoCheck;
doc->PageColors = Prefs.DColors;
doc->loading = true;
ScribusWin* w = new ScribusWin(wsp, doc);
view = new ScribusView(w, doc, &Prefs);
w->setView(view);
ActWin = w;
doc->WinHan = w;
w->setCentralWidget(view);
connect(w, SIGNAL(Schliessen()), this, SLOT(DoFileClose()));
connect(w, SIGNAL(SaveAndClose()), this, SLOT(DoSaveClose()));
if (CMSavail)
{
#ifdef HAVE_CMS
w->SoftProofing = Prefs.DCMSset.SoftProofOn;
w->Gamut = Prefs.DCMSset.GamutCheck;
CMSuse = Prefs.DCMSset.CMSinUse;
w->IntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
w->IntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
SoftProofing = Prefs.DCMSset.SoftProofOn;
Gamut = Prefs.DCMSset.GamutCheck;
IntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
IntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
w->OpenCMSProfiles(InputProfiles, MonitorProfiles, PrinterProfiles);
stdProof = w->stdProof;
stdTrans = w->stdTrans;
stdProofImg = w->stdProofImg;
stdTransImg = w->stdTransImg;
CMSoutputProf = doc->DocOutputProf;
CMSprinterProf = doc->DocPrinterProf;
if (static_cast<int>(cmsGetColorSpace(doc->DocInputProf)) == icSigRgbData)
doc->CMSSettings.ComponentsInput2 = 3;
if (static_cast<int>(cmsGetColorSpace(doc->DocInputProf)) == icSigCmykData)
doc->CMSSettings.ComponentsInput2 = 4;
if (static_cast<int>(cmsGetColorSpace(doc->DocInputProf)) == icSigCmyData)
doc->CMSSettings.ComponentsInput2 = 3;
if (static_cast<int>(cmsGetColorSpace(doc->DocPrinterProf)) == icSigRgbData)
doc->CMSSettings.ComponentsPrinter = 3;
if (static_cast<int>(cmsGetColorSpace(doc->DocPrinterProf)) == icSigCmykData)
doc->CMSSettings.ComponentsPrinter = 4;
if (static_cast<int>(cmsGetColorSpace(doc->DocPrinterProf)) == icSigCmyData)
doc->CMSSettings.ComponentsPrinter = 3;
doc->PDF_Optionen.SComp = doc->CMSSettings.ComponentsInput2;
#endif
if (Prefs.DCMSset.CMSinUse)
RecalcColors();
}
doc->setPage(b, h, tpr, lr, rr, br, sp, ab, atf, fp);
doc->loading = false;
slotNewPage(0);
doc->loading = true;
HaveNewDoc();
view->Pages.at(0)->parentWidget()->hide();
view->DocPages = view->Pages;
view->Pages = view->MasterPages;
doc->PageC = view->MasterPages.count();
bool atfb = doc->PageAT;
doc->PageAT = false;
slotNewPage(0);
doc->PageAT = atfb;
view->MasterNames["Normal"] = 0;
view->Pages.at(0)->PageNam = "Normal";
view->Pages.at(0)->parentWidget()->hide();
view->MasterPages = view->Pages;
doc->PageC = view->DocPages.count();
view->Pages = view->DocPages;
doc->MasterP = false;
view->Pages.at(0)->MPageNam = "Normal";
view->Pages.at(0)->parentWidget()->show();
doc->setUnModified();
doc->loading = false;
doc->ActPage = view->Pages.at(0);
doc->OpenNodes.clear();
Tpal->BuildTree(view);
Sepal->Rebuild();
BookPal->BView->clear();
if ( wsp->windowList().isEmpty() )
w->showMaximized();
else
w->show();
view->show();
connect(doc->ASaveTimer, SIGNAL(timeout()), w, SLOT(slotAutoSave()));
connect(w, SIGNAL(AutoSaved()), this, SLOT(slotAutoSaved()));
doc->AutoSave = Prefs.AutoSave;
if (doc->AutoSave)
doc->ASaveTimer->start(Prefs.AutoSaveTime);
DatSav->setEnabled(false);
fileMenu->setItemEnabled(fid4, 0);
return true;
}
void ScribusApp::DoSaveClose()
{
slotFileSaveAs();
DoFileClose();
}
void ScribusApp::windowsMenuAboutToShow()
{
windowsMenu->clear();
int cascadeId = windowsMenu->insertItem( tr("Cascade"), wsp, SLOT(cascade() ) );
int tileId = windowsMenu->insertItem( tr("Tile"), wsp, SLOT(tile() ) );
if ( wsp->windowList().isEmpty() )
{
windowsMenu->setItemEnabled( cascadeId, false );
windowsMenu->setItemEnabled( tileId, false );
}
windowsMenu->insertSeparator();
QWidgetList windows = wsp->windowList();
for ( int i = 0; i < static_cast<int>(windows.count()); ++i )
{
int id = windowsMenu->insertItem(windows.at(i)->caption(), this, SLOT(windowsMenuActivated(int)));
windowsMenu->setItemParameter( id, i );
windowsMenu->setItemChecked( id, wsp->activeWindow() == windows.at(i) );
}
}
void ScribusApp::newActWin(QWidget *w)
{
ScribusWin* swin;
if (w == NULL)
{
ActWin = NULL;
return;
}
ActWin = (ScribusWin*)w;
if (doc != NULL)
{
if ((HaveDoc) && (doc != ActWin->doc))
doc->OpenNodes = Tpal->buildReopenVals();
}
doc = ActWin->doc;
view = ActWin->view;
Sepal->SetView(view);
if (!doc->loading)
{
SwitchWin();
QWidgetList windows = wsp->windowList();
for ( int i = 0; i < static_cast<int>(windows.count()); ++i )
{
swin = (ScribusWin*)windows.at(i);
if (swin->muster != NULL)
swin->muster->hide();
}
if (doc->TemplateMode)
ActWin->muster->show();
setAppMode(doc->AppMode);
}
w->setFocus();
if (w->isMaximized())
wsp->setScrollBarsEnabled(false);
else
wsp->setScrollBarsEnabled(true);
Sepal->Rebuild();
Tpal->BuildTree(view);
Tpal->reopenTree(doc->OpenNodes);
BookPal->BView->NrItems = ActWin->NrItems;
BookPal->BView->First = ActWin->First;
BookPal->BView->Last = ActWin->Last;
RestoreBookMarks();
}
void ScribusApp::windowsMenuActivated( int id )
{
if (HaveDoc)
doc->OpenNodes = Tpal->buildReopenVals();
QWidget* w = wsp->windowList().at( id );
if ( w )
w->showNormal();
newActWin(w);
}
bool ScribusApp::SetupDoc()
{
double tpr = doc->PageM.Top;
double lr = doc->PageM.Left;
double rr = doc->PageM.Right;
double br = doc->PageM.Bottom;
bool fp = doc->PageFP;
bool fpe = doc->FirstPageLeft;
double tpr2, lr2, rr2, br2;
bool ret = false;
ReformDoc* dia = new ReformDoc(this, tpr, lr, rr, br, doc->PageB, doc->PageH, fp, fpe, doc->Einheit);
if (dia->exec())
{
tpr2 = dia->TopR->value() / UmReFaktor / 100.0;
lr2 = dia->LeftR->value() / UmReFaktor / 100.0;
rr2 = dia->RightR->value() / UmReFaktor / 100.0;
br2 = dia->BottomR->value() / UmReFaktor / 100.0;
fp = dia->Doppelseiten->isChecked();
if (fp)
doc->FirstPageLeft = dia->ErsteSeite->isChecked();
doc->resetPage(tpr2, lr2, rr2, br2, fp);
view->reformPages();
doc->setModified();
view->GotoPage(doc->ActPage->PageNr);
view->DrawNew();
Sepal->RebuildPage();
ret = true;
doc->PDF_Optionen.BleedBottom = doc->PageM.Bottom;
doc->PDF_Optionen.BleedTop = doc->PageM.Top;
doc->PDF_Optionen.BleedLeft = doc->PageM.Left;
doc->PDF_Optionen.BleedRight = doc->PageM.Right;
}
delete dia;
return ret;
}
void ScribusApp::SwitchWin()
{
int a;
CListe::Iterator it;
QPixmap pm = QPixmap(15, 15);
a = 0;
ColorMenu->clear();
ColorMenu->insertItem( tr("None"));
for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
{
pm.fill(doc->PageColors[it.key()].getRGBColor());
ColorMenu->insertItem(QIconSet(pm), it.key());
if (it.key() == doc->Dbrush)
{
ColorMenu->setItemChecked(ColorMenu->idAt(a), true);
}
a++;
}
BuildFontMenu();
#ifdef HAVE_CMS
SoftProofing = ActWin->SoftProofing;
Gamut = ActWin->Gamut;
IntentPrinter = ActWin->IntentPrinter;
IntentMonitor = ActWin->IntentMonitor;
stdProof = ActWin->stdProof;
stdTrans = ActWin->stdTrans;
stdProofImg = ActWin->stdProofImg;
stdTransImg = ActWin->stdTransImg;
CMSoutputProf = doc->DocOutputProf;
CMSprinterProf = doc->DocPrinterProf;
#endif
Mpal->Cpal->SetColors(doc->PageColors);
Mpal->Cpal->ChooseGrad(0);
ActWin->setCaption( tr(doc->DocName));
ShadeMenu->setItemChecked(ShadeMenu->idAt(11), true);
Mpal->SetDoc(doc);
Mpal->updateCList();
Sepal->SetView(view);
Mpal->Spal->SetFormats(doc);
Mpal->SetLineFormats(doc);
Lpal->setLayers(&doc->Layers, &doc->ActiveLayer);
view->LaMenu();
view->setLayMenTxt(doc->ActiveLayer);
doc->CurrentABStil = 0;
slotChangeUnit(doc->Einheit, false);
if (doc->EditClip)
{
doc->EditClip = !doc->EditClip;
ToggleFrameEdit();
}
if (doc->ShFrames)
viewMenu->changeItem(FrameDr, tr("Hide Frames"));
else
viewMenu->changeItem(FrameDr, tr("Show Frames"));
DatClo->setEnabled(true);
if (doc->TemplateMode)
{
menuBar()->setItemEnabled(pgmm, 0);
editMenu->setItemEnabled(tman, 0);
DatNeu->setEnabled(false);
DatSav->setEnabled(false);
DatOpe->setEnabled(false);
DatClo->setEnabled(false);
fileMenu->setItemEnabled(fid1, 0);
fileMenu->setItemEnabled(fid4, 0);
fileMenu->setItemEnabled(fid5, 0);
fileMenu->setItemEnabled(fid51, 0);
fileMenu->setItemEnabled(fid52, 0);
fileMenu->setItemEnabled(fid12, 0);
fileMenu->setItemEnabled(fid13, 0);
fileMenu->setItemEnabled(fid14, 0);
Sepal->DisablePal();
}
else
{
menuBar()->setItemEnabled(pgmm, 1);
editMenu->setItemEnabled(tman, 1);
DatNeu->setEnabled(true);
DatOpe->setEnabled(true);
DatClo->setEnabled(true);
DatSav->setEnabled(doc->isModified());
fileMenu->setItemEnabled(fid1, 1);
fileMenu->setItemEnabled(fid4, ActWin->MenuStat[2]);
fileMenu->setItemEnabled(fid5, ActWin->MenuStat[3]);
fileMenu->setItemEnabled(fid51, ActWin->MenuStat[3]);
fileMenu->setItemEnabled(fid52, 0);
fileMenu->setItemEnabled(fid12, 1);
fileMenu->setItemEnabled(fid13, 1);
fileMenu->setItemEnabled(fid14, 1);
if (view->Pages.count() > 1)
{
pageMenu->setItemEnabled(pgmd, 1);
pageMenu->setItemEnabled(pgmv, 1);
}
else
{
pageMenu->setItemEnabled(pgmd, 0);
pageMenu->setItemEnabled(pgmv, 0);
}
if (doc->isModified())
slotDocCh();
fileMenu->setItemEnabled(fid5, 1);
fileMenu->setItemEnabled(fid51, 1);
Sepal->EnablePal();
}
}
void ScribusApp::HaveNewDoc()
{
int a;
DatPri->setEnabled(true);
DatPDF->setEnabled(true);
DatSav->setEnabled(false);
fileMenu->setItemEnabled(fid1, 1);
fileMenu->setItemEnabled(fid4, 0);
fileMenu->setItemEnabled(fid5, 1);
fileMenu->setItemEnabled(fid51, 1);
fileMenu->setItemEnabled(fid52, 0);
fileMenu->setItemEnabled(fid6, 1);
fileMenu->setItemEnabled(fid7, 1);
exportMenu->setItemEnabled(fid8, 1);
importMenu->setItemEnabled(fid2a, 1);
fileMenu->setItemEnabled(fid9, 1);
exportMenu->setItemEnabled(fid10, 1);
fileMenu->setItemEnabled(fid11, 1);
editMenu->setItemEnabled(edid1, 0);
editMenu->setItemEnabled(edid2, 0);
editMenu->setItemEnabled(edid3, 0);
editMenu->setItemEnabled(edid6, 1);
editMenu->setItemEnabled(edid6a, 1);
for (a=0; a<6; ++a)
{
viewMenu->setItemEnabled(viewMenu->idAt(a), 1);
}
viewMenu->setItemEnabled(Markers, 1);
viewMenu->setItemEnabled(FrameDr, 1);
viewMenu->setItemEnabled(Bilder, 1);
viewMenu->setItemEnabled(Ras, 1);
viewMenu->setItemEnabled(uRas, 1);
viewMenu->setItemChecked(uRas, doc->useRaster);
viewMenu->setItemEnabled(Guide, 1);
viewMenu->setItemEnabled(uGuide, 1);
viewMenu->setItemChecked(uGuide, doc->SnapGuides);
menuBar()->setItemEnabled(pgmm, 1);
menuBar()->setItemEnabled(exmn, 1);
WerkTools->setEnabled(true);
WerkToolsP->setEnabled(true);
int setter = 0;
if (view->Pages.count() > 1)
setter = 1;
pageMenu->setItemEnabled(pgmd, setter);
pageMenu->setItemEnabled(pgmv, setter);
editMenu->setItemEnabled(tman, 1);
editMenu->setItemEnabled(jman, 1);
CListe::Iterator it;
QPixmap pm = QPixmap(15, 15);
a = 0;
ColorMenu->clear();
ColorMenu->insertItem( tr("None"));
for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
{
pm.fill(doc->PageColors[it.key()].getRGBColor());
ColorMenu->insertItem(QIconSet(pm), it.key());
if (it.key() == doc->Dbrush)
{
ColorMenu->setItemChecked(ColorMenu->idAt(a), true);
}
a++;
}
Mpal->Cpal->SetColors(doc->PageColors);
Mpal->Cpal->ChooseGrad(0);
ActWin->setCaption( tr(doc->DocName));
ShadeMenu->setItemChecked(ShadeMenu->idAt(11), true);
Mpal->SetDoc(doc);
Mpal->updateCList();
Sepal->SetView(view);
Mpal->Spal->SetFormats(doc);
Mpal->SetLineFormats(doc);
Lpal->setLayers(&doc->Layers, &doc->ActiveLayer);
view->LaMenu();
view->setLayMenTxt(doc->ActiveLayer);
doc->CurrentABStil = 0;
slotChangeUnit(doc->Einheit);
doc->Trenner = new Hyphenator(this, doc, this);
BuildFontMenu();
connect(view, SIGNAL(changeUN(int)), this, SLOT(slotChangeUnit(int)));
connect(view, SIGNAL(changeLA(int)), Lpal, SLOT(MarkActiveLayer(int)));
doc->PDF_Optionen.BleedBottom = doc->PageM.Bottom;
doc->PDF_Optionen.BleedTop = doc->PageM.Top;
doc->PDF_Optionen.BleedLeft = doc->PageM.Left;
doc->PDF_Optionen.BleedRight = doc->PageM.Right;
}
void ScribusApp::HaveNewSel(int Nr)
{
PageItem *b;
if (Nr != -1)
b = doc->ActPage->SelItem.at(0);
switch (Nr)
{
case -1:
importMenu->changeItem(fid2, tr("Get Text/Picture..."));
importMenu->setItemEnabled(fid2, 0);
exportMenu->setItemEnabled(fid3, 0);
menuBar()->setItemEnabled(Obm, 0);
ObjMenu->setItemEnabled(ShapeM, 0);
ObjMenu->setItemEnabled(PfadTP, 0);
ObjMenu->setItemEnabled(LockOb, 0);
editMenu->setItemEnabled(edid1, 0);
editMenu->setItemEnabled(edid2, 0);
editMenu->setItemEnabled(edid4, 0);
editMenu->setItemEnabled(edid5, 0);
extraMenu->setItemEnabled(hyph, 0);
StilMenu->clear();
WerkTools->KetteAus->setEnabled(false);
WerkTools->KetteEin->setEnabled(false);
WerkTools->Textedit->setEnabled(false);
WerkTools->Rotiere->setEnabled(false);
Mpal->Cpal->GradCombo->setCurrentItem(0);
Tpal->slotShowSelect(doc->ActPage->PageNr, -1);
break;
case 2:
importMenu->changeItem(fid2, tr("Get Picture..."));
importMenu->setItemEnabled(fid2, 1);
editMenu->setItemEnabled(edid1, 1);
editMenu->setItemEnabled(edid2, 1);
editMenu->setItemEnabled(edid4, 0);
editMenu->setItemEnabled(edid5, 0);
extraMenu->setItemEnabled(hyph, 0);
menuBar()->setItemEnabled(Obm, 1);
ObjMenu->setItemEnabled(ShapeM, 1);
ObjMenu->setItemEnabled(PfadTP, 0);
StilMenu->clear();
StilMenu->insertItem( tr("Color"), ColorMenu);
if (b->isRaster)
StilMenu->insertItem( tr("Invert"), this, SLOT(InvertPict()));
WerkTools->KetteAus->setEnabled(false);
WerkTools->KetteEin->setEnabled(false);
WerkTools->Textedit->setEnabled(true);
WerkTools->Rotiere->setEnabled(true);
break;
case 4:
importMenu->changeItem(fid2, tr("Get Text..."));
importMenu->setItemEnabled(fid2, 1);
exportMenu->setItemEnabled(fid3, 1);
editMenu->setItemEnabled(edid1, 1);
editMenu->setItemEnabled(edid2, 1);
editMenu->setItemEnabled(edid4, 0);
editMenu->setItemEnabled(edid5, 0);
extraMenu->setItemEnabled(hyph, 1);
menuBar()->setItemEnabled(Obm, 1);
ObjMenu->setItemEnabled(ShapeM, 1);
ObjMenu->setItemEnabled(PfadTP, 1);
StilMenu->clear();
StilMenu->insertItem( tr("Font"), FontMenu);
StilMenu->insertItem( tr("Size"), SizeTMenu);
StilMenu->insertItem( tr("Style"), TypeStyleMenu);
StilMenu->insertItem( tr("Alignment"), AliMenu);
StilMenu->insertItem( tr("Color"), ColorMenu);
StilMenu->insertItem( tr("Shade"), ShadeMenu);
WerkTools->Rotiere->setEnabled(true);
if ((b->NextBox != 0) || (b->BackBox != 0))
{
WerkTools->KetteAus->setEnabled(true);
if ((b->BackBox != 0) && (b->Ptext.count() == 0))
WerkTools->Textedit->setEnabled(false);
else
WerkTools->Textedit->setEnabled(true);
}
else
WerkTools->Textedit->setEnabled(true);
if (b->NextBox == 0)
WerkTools->KetteEin->setEnabled(true);
if (doc->MasterP)
WerkTools->KetteEin->setEnabled(false);
if (doc->AppMode == 7)
setTBvals(b);
else
{
doc->CurrFont = b->IFont;
doc->CurrFontSize = b->ISize;
doc->CurrTextFill = b->TxtFill;
doc->CurrTextStroke = b->TxtStroke;
doc->CurrTextStrokeSh = b->ShTxtStroke;
doc->CurrTextFillSh = b->ShTxtFill;
doc->CurrTextScale = b->TxtScale;
emit TextFarben(doc->CurrTextStroke, doc->CurrTextFill, doc->CurrTextStrokeSh, doc->CurrTextFillSh);
doc->CurrentStyle = b->TxTStyle;
emit TextStil(doc->CurrentStyle);
emit TextScale(doc->CurrTextScale);
}
doc->Vorlagen[0].LineSpa = b->LineSp;
doc->Vorlagen[0].Ausri = b->Ausrich;
break;
case 8:
importMenu->changeItem(fid2, tr("Get Text..."));
importMenu->setItemEnabled(fid2, 1);
exportMenu->setItemEnabled(fid3, 1);
editMenu->setItemEnabled(edid1, 1);
editMenu->setItemEnabled(edid2, 1);
editMenu->setItemEnabled(edid4, 0);
editMenu->setItemEnabled(edid5, 0);
extraMenu->setItemEnabled(hyph, 0);
menuBar()->setItemEnabled(Obm, 1);
ObjMenu->setItemEnabled(ShapeM, 0);
ObjMenu->setItemEnabled(PfadTP, 0);
StilMenu->clear();
StilMenu->insertItem( tr("Font"), FontMenu);
StilMenu->insertItem( tr("Size"), SizeTMenu);
StilMenu->insertItem( tr("Style"), TypeStyleMenu);
StilMenu->insertItem( tr("Color"), ColorMenu);
StilMenu->insertItem( tr("Shade"), ShadeMenu);
WerkTools->Rotiere->setEnabled(true);
WerkTools->Textedit->setEnabled(false);
WerkTools->KetteEin->setEnabled(false);
WerkTools->KetteAus->setEnabled(false);
if (doc->AppMode == 7)
setTBvals(b);
else
{
doc->CurrFont = b->IFont;
doc->CurrFontSize = b->ISize;
doc->CurrTextFill = b->TxtFill;
doc->CurrTextStroke = b->TxtStroke;
doc->CurrTextStrokeSh = b->ShTxtStroke;
doc->CurrTextFillSh = b->ShTxtFill;
doc->CurrTextScale = b->TxtScale;
emit TextFarben(doc->CurrTextStroke, doc->CurrTextFill, doc->CurrTextStrokeSh, doc->CurrTextFillSh);
doc->CurrentStyle = b->TxTStyle;
emit TextStil(doc->CurrentStyle);
emit TextScale(doc->CurrTextScale);
}
break;
default:
importMenu->changeItem(fid2, tr("Get Text/Picture..."));
importMenu->setItemEnabled(fid2, 0);
exportMenu->setItemEnabled(fid3, 0);
editMenu->setItemEnabled(edid1, 1);
editMenu->setItemEnabled(edid2, 1);
editMenu->setItemEnabled(edid4, 0);
editMenu->setItemEnabled(edid5, 0);
extraMenu->setItemEnabled(hyph, 0);
menuBar()->setItemEnabled(Obm, 1);
StilMenu->clear();
StilMenu->insertItem( tr("Color"), ColorMenu);
StilMenu->insertItem( tr("Shade"), ShadeMenu);
WerkTools->KetteAus->setEnabled(false);
WerkTools->KetteEin->setEnabled(false);
if (Nr != 5)
WerkTools->Rotiere->setEnabled(true);
else
WerkTools->Rotiere->setEnabled(false);
break;
}
doc->CurrentSel = Nr;
Mpal->RotationGroup->setButton(doc->RotMode);
if (doc->ActPage->SelItem.count() > 1)
{
ObjMenu->setItemEnabled(DistM, 1);
ObjMenu->setItemEnabled(Gr, 1);
ObjMenu->setItemEnabled(PfadTP, 0);
bool hPoly = false;
if (b->Groups.count() == 0)
hPoly = true;
for (uint bx=0; bx<doc->ActPage->SelItem.count(); ++bx)
{
if (doc->ActPage->SelItem.at(bx)->PType != 6)
hPoly = false;
}
ObjMenu->setItemEnabled(PfadV, hPoly);
if (doc->ActPage->SelItem.count() == 2)
{
if (((b->PType == 4) || (doc->ActPage->SelItem.at(1)->PType == 4)) && ((b->PType == 7) || (doc->ActPage->SelItem.at(1)->PType == 7)))
ObjMenu->setItemEnabled(PfadT, 1);
}
}
else
{
ObjMenu->setItemEnabled(DistM, 0);
ObjMenu->setItemEnabled(Gr, 0);
ObjMenu->setItemEnabled(PfadT, 0);
ObjMenu->setItemEnabled(PfadV, 0);
}
if (doc->ActPage->SelItem.count() != 0)
{
Mpal->Textflow->setChecked(b->Textflow);
ObjMenu->setItemEnabled(LockOb, 1);
if (b->Groups.count() != 0)
ObjMenu->setItemEnabled(UnGr, 1);
else
{
ObjMenu->setItemEnabled(UnGr, 0);
if ((b->PType == 6) && (b->Segments.count() != 0))
ObjMenu->setItemEnabled(PfadS, 1);
else
ObjMenu->setItemEnabled(PfadS, 0);
}
if (b->Locked)
{
ObjMenu->setItemEnabled(DistM, 0);
ObjMenu->setItemEnabled(ShapeM, 0);
ObjMenu->setItemEnabled(PfadTP, 0);
ObjMenu->setItemEnabled(PfadS, 0);
ObjMenu->setItemEnabled(PfadT, 0);
ObjMenu->setItemEnabled(PfadV, 0);
ObjMenu->setItemEnabled(Loesch, 0);
ObjMenu->setItemEnabled(OBack, 0);
ObjMenu->setItemEnabled(OFront, 0);
ObjMenu->setItemEnabled(ORaise, 0);
ObjMenu->setItemEnabled(OLower, 0);
editMenu->setItemEnabled(edid1, 0);
editMenu->setItemEnabled(edid4, 0);
WerkTools->Rotiere->setEnabled(false);
ObjMenu->changeItem(LockOb, tr("Unlock"));
}
else
{
ObjMenu->changeItem(LockOb, tr("Lock"));
ObjMenu->setItemEnabled(OBack, 1);
ObjMenu->setItemEnabled(OFront, 1);
ObjMenu->setItemEnabled(ORaise, 1);
ObjMenu->setItemEnabled(OLower, 1);
}
}
Mpal->NewSel(Nr);
if (Nr != -1)
{
Mpal->SetCurItem(b);
Tpal->slotShowSelect(b->OwnPage->PageNr, b->ItemNr);
}
}
void ScribusApp::slotDocCh(bool reb)
{
if ((reb) && (!doc->TemplateMode) && (doc->ActPage->SelItem.count() != 0))
Tpal->slotUpdateElement(doc->ActPage->PageNr, doc->ActPage->SelItem.at(0)->ItemNr);
if (!doc->isModified())
doc->setModified();
ActWin->setCaption( tr(doc->DocName) + "*");
if (!doc->TemplateMode)
{
fileMenu->setItemEnabled(fid4, 1);
DatSav->setEnabled(true);
DatClo->setEnabled(true);
fileMenu->setItemEnabled(fid5, 1);
fileMenu->setItemEnabled(fid51, 1);
if (doc->hasName)
fileMenu->setItemEnabled(fid52, 1);
}
ActWin->MenuStat[0] = DatSav->isEnabled();
ActWin->MenuStat[1] = fileMenu->isItemEnabled(fid1);
ActWin->MenuStat[2] = fileMenu->isItemEnabled(fid4);
ActWin->MenuStat[3] = fileMenu->isItemEnabled(fid5);
}
void ScribusApp::UpdateRecent(QString fn)
{
recentMenu->clear();
if (RecentDocs.findIndex(fn) == -1)
RecentDocs.prepend(fn);
else
{
RecentDocs.remove(fn);
RecentDocs.prepend(fn);
}
uint max = QMIN(Prefs.RecentDCount, RecentDocs.count());
for (uint m = 0; m < max; ++m)
{
recentMenu->insertItem(RecentDocs[m]);
}
}
void ScribusApp::LoadRecent(int id)
{
QString fn = recentMenu->text(id);
QFileInfo fd(fn);
if (!fd.exists())
{
RecentDocs.remove(fn);
recentMenu->clear();
uint max = QMIN(Prefs.RecentDCount, RecentDocs.count());
for (uint m = 0; m < max; ++m)
{
recentMenu->insertItem(RecentDocs[m]);
}
return;
}
qApp->setOverrideCursor(QCursor(waitCursor), true);
LadeDoc(recentMenu->text(id));
qApp->setOverrideCursor(QCursor(arrowCursor), true);
}
bool ScribusApp::slotDocOpen()
{
bool ret = false;
#ifdef HAVE_LIBZ
QString fileName = CFileDialog( tr("Open"), tr("Documents (*.sla *.sla.gz *.scd *.scd.gz);;All Files (*)"));
#else
QString fileName = CFileDialog( tr("Open"), tr("Documents (*.sla *.scd);;All Files (*)"));
#endif
qApp->setOverrideCursor(QCursor(waitCursor), true);
ret = LadeDoc(fileName);
qApp->setOverrideCursor(QCursor(arrowCursor), true);
return ret;
}
bool ScribusApp::slotDocMerge()
{
bool ret = false;
MergeDoc *dia = new MergeDoc(this, false);
if (dia->exec())
{
qApp->setOverrideCursor(QCursor(waitCursor), true);
ret = LadeSeite(dia->Filename->text(), dia->PageNr->value()-1, false);
qApp->setOverrideCursor(QCursor(arrowCursor), true);
ret = true;
}
delete dia;
return ret;
}
bool ScribusApp::LadeSeite(QString fileName, int Nr, bool Mpa)
{
bool ret = false;
if (!fileName.isEmpty())
{
if (!Mpa)
doc->OpenNodes = Tpal->buildReopenVals();
doc->loading = true;
ScriXmlDoc *ss = new ScriXmlDoc();
if(!ss->ReadPage(fileName, Prefs.AvailFonts, doc, view, Nr, Mpa))
{
delete ss;
doc->loading = false;
return false;
}
delete ss;
if (CMSavail)
{
if (doc->CMSSettings.CMSinUse)
{
RecalcColors();
view->RecalcPictures(&InputProfiles);
}
}
for (uint azz = 0; azz < doc->ActPage->Items.count(); ++azz)
{
PageItem *ite = doc->ActPage->Items.at(azz);
if ((ite->PType == 4) && (ite->isBookmark))
BookPal->BView->AddPageItem(ite);
}
Mpal->Cpal->SetColors(doc->PageColors);
Mpal->updateCList();
Mpal->Spal->SetFormats(doc);
Mpal->SetLineFormats(doc);
if (!Mpa)
{
Tpal->BuildTree(view);
Tpal->reopenTree(doc->OpenNodes);
}
slotDocCh();
doc->loading = false;
ret = true;
}
Sepal->Rebuild();
doc->ActPage->update();
return ret;
}
bool ScribusApp::LadeDoc(QString fileName)
{
if (HaveDoc)
doc->OpenNodes = Tpal->buildReopenVals();
bool ret = false;
if (!fileName.isEmpty())
{
QFileInfo fi(fileName);
QDir::setCurrent(fi.dirPath(true));
doc=new ScribusDoc();
doc->AllFonts = &Prefs.AvailFonts;
doc->Dsize = Prefs.DefSize;
doc->GrabRad = Prefs.GrabRad;
doc->GuideRad = Prefs.GuideRad;
doc->minorGrid = Prefs.DminGrid;
doc->majorGrid = Prefs.DmajGrid;
doc->minorColor = Prefs.DminColor;
doc->majorColor = Prefs.DmajColor;
doc->papColor = Prefs.DpapColor;
doc->margColor = Prefs.DmargColor;
doc->guideColor = Prefs.guideColor;
doc->Dpen = Prefs.Dpen;
doc->DpenText = Prefs.DpenText;
doc->Dbrush = Prefs.Dbrush;
doc->Dshade = Prefs.Dshade;
doc->Dshade2 = Prefs.Dshade2;
doc->DLineArt = PenStyle(Prefs.DLineArt);
doc->Dwidth = Prefs.Dwidth;
doc->DpenLine = Prefs.DpenLine;
doc->DshadeLine = Prefs.DshadeLine;
doc->DLstyleLine = PenStyle(Prefs.DLstyleLine);
doc->DwidthLine = Prefs.DwidthLine;
doc->MagMin = Prefs.MagMin;
doc->MagMax = Prefs.MagMax;
doc->MagStep = Prefs.MagStep;
doc->DbrushPict = Prefs.DbrushPict;
doc->ShadePict = Prefs.ShadePict;
doc->ScaleX = Prefs.ScaleX;
doc->ScaleY = Prefs.ScaleY;
doc->ScaleType = Prefs.ScaleType;
doc->AspectRatio = Prefs.AspectRatio;
doc->Before = Prefs.Before;
doc->Einheit = Prefs.Einheit;
doc->PagesSbS = Prefs.PagesSbS;
doc->ShFrames = Prefs.ShFrames;
doc->RandFarbig = Prefs.RandFarbig;
doc->AutoLine = Prefs.AutoLine;
doc->Scale = 1.0*Prefs.DisScale;
doc->AppMode = 1;
doc->HasCMS = false;
doc->ActiveLayer = 0;
doc->Language = Prefs.Language;
doc->MinWordLen = Prefs.MinWordLen;
doc->Automatic = Prefs.Automatic;
doc->AutoCheck = Prefs.AutoCheck;
doc->OpenNodes.clear();
doc->loading = true;
FMess->setText( tr("Loading..."));
FProg->reset();
ScribusWin* w = new ScribusWin(wsp, doc);
view = new ScribusView(w, doc, &Prefs);
w->setView(view);
ActWin = w;
doc->WinHan = w;
w->setCentralWidget(view);
ScriXmlDoc *ss = new ScriXmlDoc();
connect(ss, SIGNAL(NewPage(int)), this, SLOT(slotNewPage(int)));
#ifdef HAVE_CMS
w->SoftProofing = false;
w->Gamut = false;
bool cmsu = CMSuse;
CMSuse = false;
#endif
if(!ss->ReadDoc(fileName, Prefs.AvailFonts, doc, view, FProg))
{
// w->close();
view->close();
disconnect(ss, SIGNAL(NewPage(int)), this, SLOT(slotNewPage(int)));
delete ss;
delete view;
delete doc;
delete w;
FMess->setText("");
FProg->reset();
ActWin = NULL;
return false;
}
delete ss;
FMess->setText("");
FProg->reset();
#ifdef HAVE_CMS
CMSuse = cmsu;
#endif
HaveDoc++;
connect(w, SIGNAL(Schliessen()), this, SLOT(DoFileClose()));
connect(w, SIGNAL(SaveAndClose()), this, SLOT(DoSaveClose()));
if (!doc->HasCMS)
{
doc->CMSSettings.DefaultInputProfile = Prefs.DCMSset.DefaultInputProfile;
doc->CMSSettings.DefaultInputProfile2 = Prefs.DCMSset.DefaultInputProfile2;
doc->CMSSettings.DefaultMonitorProfile = Prefs.DCMSset.DefaultMonitorProfile;
doc->CMSSettings.DefaultPrinterProfile = Prefs.DCMSset.DefaultPrinterProfile;
doc->CMSSettings.DefaultIntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
doc->CMSSettings.DefaultIntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
doc->CMSSettings.DefaultIntentMonitor2 = Prefs.DCMSset.DefaultIntentMonitor2;
doc->CMSSettings.SoftProofOn = Prefs.DCMSset.SoftProofOn;
doc->CMSSettings.GamutCheck = Prefs.DCMSset.GamutCheck;
doc->CMSSettings.BlackPoint = Prefs.DCMSset.BlackPoint;
doc->CMSSettings.CMSinUse = false;
}
if (CMSavail)
{
if (!InputProfiles.contains(doc->CMSSettings.DefaultInputProfile))
doc->CMSSettings.DefaultInputProfile = Prefs.DCMSset.DefaultInputProfile;
if (!InputProfiles.contains(doc->CMSSettings.DefaultInputProfile2))
doc->CMSSettings.DefaultInputProfile2 = Prefs.DCMSset.DefaultInputProfile2;
if (!MonitorProfiles.contains(doc->CMSSettings.DefaultMonitorProfile))
doc->CMSSettings.DefaultMonitorProfile = Prefs.DCMSset.DefaultMonitorProfile;
if (!PrinterProfiles.contains(doc->CMSSettings.DefaultPrinterProfile))
doc->CMSSettings.DefaultPrinterProfile = Prefs.DCMSset.DefaultPrinterProfile;
if (!PrinterProfiles.contains(doc->PDF_Optionen.PrintProf))
doc->PDF_Optionen.PrintProf = doc->CMSSettings.DefaultPrinterProfile;
if (!InputProfiles.contains(doc->PDF_Optionen.ImageProf))
doc->PDF_Optionen.ImageProf = doc->CMSSettings.DefaultInputProfile;
if (!InputProfiles.contains(doc->PDF_Optionen.SolidProf))
doc->PDF_Optionen.SolidProf = doc->CMSSettings.DefaultInputProfile2;
#ifdef HAVE_CMS
w->SoftProofing = doc->CMSSettings.SoftProofOn;
w->Gamut = doc->CMSSettings.GamutCheck;
CMSuse = doc->CMSSettings.CMSinUse;
w->IntentPrinter = doc->CMSSettings.DefaultIntentPrinter;
w->IntentMonitor = doc->CMSSettings.DefaultIntentMonitor;
SoftProofing = doc->CMSSettings.SoftProofOn;
Gamut = doc->CMSSettings.GamutCheck;
IntentPrinter = doc->CMSSettings.DefaultIntentPrinter;
IntentMonitor = doc->CMSSettings.DefaultIntentMonitor;
w->OpenCMSProfiles(InputProfiles, MonitorProfiles, PrinterProfiles);
CMSuse = doc->CMSSettings.CMSinUse;
stdProof = w->stdProof;
stdTrans = w->stdTrans;
stdProofImg = w->stdProofImg;
stdTransImg = w->stdTransImg;
CMSoutputProf = doc->DocOutputProf;
CMSprinterProf = doc->DocPrinterProf;
if (static_cast<int>(cmsGetColorSpace(doc->DocInputProf)) == icSigRgbData)
doc->CMSSettings.ComponentsInput2 = 3;
if (static_cast<int>(cmsGetColorSpace(doc->DocInputProf)) == icSigCmykData)
doc->CMSSettings.ComponentsInput2 = 4;
if (static_cast<int>(cmsGetColorSpace(doc->DocInputProf)) == icSigCmyData)
doc->CMSSettings.ComponentsInput2 = 3;
if (static_cast<int>(cmsGetColorSpace(doc->DocPrinterProf)) == icSigRgbData)
doc->CMSSettings.ComponentsPrinter = 3;
if (static_cast<int>(cmsGetColorSpace(doc->DocPrinterProf)) == icSigCmykData)
doc->CMSSettings.ComponentsPrinter = 4;
if (static_cast<int>(cmsGetColorSpace(doc->DocPrinterProf)) == icSigCmyData)
doc->CMSSettings.ComponentsPrinter = 3;
doc->PDF_Optionen.SComp = doc->CMSSettings.ComponentsInput2;
#endif
if (doc->CMSSettings.CMSinUse)
{
RecalcColors();
view->RecalcPictures(&InputProfiles);
}
}
Mpal->Cpal->SetColors(doc->PageColors);
Mpal->Cpal->ChooseGrad(0);
doc->DocName = fileName;
doc->MasterP = false;
HaveNewDoc();
Mpal->updateCList();
doc->hasName = true;
if (view->MasterPages.count() == 0)
{
for (uint ax=0; ax<view->Pages.count(); ++ax)
{
view->Pages.at(ax)->parentWidget()->hide();
}
view->DocPages = view->Pages;
view->Pages = view->MasterPages;
doc->PageC = view->MasterPages.count();
bool atf = doc->PageAT;
doc->PageAT = false;
slotNewPage(0);
doc->PageAT = atf;
view->MasterNames["Normal"] = 0;
view->Pages.at(0)->PageNam = "Normal";
view->Pages.at(0)->parentWidget()->hide();
view->MasterPages = view->Pages;
doc->PageC = view->DocPages.count();
view->Pages = view->DocPages;
doc->MasterP = false;
for (uint ay=0; ay<view->Pages.count(); ++ay)
{
view->Pages.at(ay)->parentWidget()->show();
}
}
doc->setUnModified();
doc->loading = false;
view->GotoPage(0);
doc->RePos = true;
QPixmap pgPix(10, 10);
QRect rd = QRect(0,0,9,9);
ScPainter *painter = new ScPainter(&pgPix, pgPix.width(), pgPix.height());
for (uint az=0; az<view->MasterPages.count(); az++)
{
for (uint azz=0; azz<view->MasterPages.at(az)->Items.count(); ++azz)
{
PageItem *ite = view->MasterPages.at(az)->Items.at(azz);
if (ite->PType == 4)
ite->DrawObj(painter, rd);
}
}
RestoreBookMarks();
for (uint az=0; az<view->Pages.count(); az++)
{
for (uint azz=0; azz<view->Pages.at(az)->Items.count(); ++azz)
{
PageItem *ite = view->Pages.at(az)->Items.at(azz);
if (ite->PType == 4)
ite->DrawObj(painter, rd);
if (doc->OldBM)
{
if ((ite->PType == 4) && (ite->isBookmark))
BookPal->BView->AddPageItem(ite);
}
else
{
if ((ite->PType == 4) && (ite->isBookmark))
BookPal->BView->ChangeItem(ite->BMnr, ite->ItemNr);
}
}
}
delete painter;
if (doc->OldBM)
StoreBookmarks();
ActWin->NrItems = BookPal->BView->NrItems;
ActWin->First = BookPal->BView->First;
ActWin->Last = BookPal->BView->Last;
doc->RePos = false;
UpdateRecent(fileName);
FMess->setText( tr("Ready"));
ret = true;
if ((wsp->windowList().isEmpty()) || (wsp->windowList().count() == 1))
w->showMaximized();
else
w->show();
view->show();
newActWin(w);
connect(doc->ASaveTimer, SIGNAL(timeout()), w, SLOT(slotAutoSave()));
connect(w, SIGNAL(AutoSaved()), this, SLOT(slotAutoSaved()));
doc->AutoSave = Prefs.AutoSave;
if (doc->AutoSave)
doc->ASaveTimer->start(Prefs.AutoSaveTime);
}
else
{
Sepal->Vie = 0;
}
Sepal->Rebuild();
return ret;
}
void ScribusApp::slotFileOpen()
{
if (doc->ActPage->SelItem.count() != 0)
{
PageItem *b = doc->ActPage->SelItem.at(0);
if (b->PType == 2)
{
QString formats = "";
QString form = "";
for ( uint i = 0; i < QImageIO::inputFormats().count(); ++i )
{
form = QString(QImageIO::inputFormats().at(i)).lower();
if (form == "jpeg")
form = "jpg";
formats += "*."+form+" ";
}
formats += "*.tif";
QString fileName = CFileDialog( tr("Open"), tr("Images")+
" ("+formats+ tr(");;Vector Files (*.eps *.pdf);;All Files (*)"), "", true);
if (!fileName.isEmpty())
{
b->EmProfile = "";
b->UseEmbedded = true;
b->IProfile = doc->CMSSettings.DefaultInputProfile;
b->IRender = doc->CMSSettings.DefaultIntentMonitor2;
doc->ActPage->LoadPict(fileName, b->ItemNr);
doc->ActPage->AdjustPictScale(b);
doc->ActPage->AdjustPreview(b);
doc->ActPage->update();
Mpal->Cpal->SetColors(doc->PageColors);
Mpal->updateCList();
slotDocCh();
}
}
if (b->PType == 4)
{
LoadEnc = "";
QString fileName = CFileDialog( tr("Open"), tr("Text Files (*.txt);;All Files(*)"), "", false, true, false, true);
if (!fileName.isEmpty())
{
Serializer *ss = new Serializer(fileName);
if (ss->Read(LoadEnc))
{
int st = doc->CurrentABStil;
ss->GetText(b, st, doc->Vorlagen[st].Font, doc->Vorlagen[st].FontSize);
}
delete ss;
if (doc->Trenner->AutoCheck)
doc->Trenner->slotHyphenate(b);
doc->ActPage->update();
slotDocCh();
}
}
}
}
void ScribusApp::slotFileRevert()
{
if ((doc->hasName) && (doc->isModified()) && (!doc->TemplateMode))
{
QString fn = doc->DocName;
QFileInfo fi(fn);
QDir::setCurrent(fi.dirPath(true));
doc->setUnModified();
slotFileClose();
qApp->processEvents();
qApp->setOverrideCursor(QCursor(waitCursor), true);
LadeDoc(fn);
qApp->setOverrideCursor(QCursor(arrowCursor), true);
}
}
void ScribusApp::slotAutoSaved()
{
if (ActWin == sender())
{
fileMenu->setItemEnabled(fid4, 0);
DatSav->setEnabled(false);
ActWin->setCaption(doc->DocName);
}
}
void ScribusApp::slotFileSave()
{
if (doc->hasName)
{
QString fn = doc->DocName;
if (!DoFileSave(fn))
QMessageBox::warning(this, tr("Warning"), tr("Can't write the File: \n%1").arg(fn), tr("OK"));
}
else
slotFileSaveAs();
}
void ScribusApp::slotFileSaveAs()
{
QString fna;
if (doc->hasName)
{
QFileInfo fi(doc->DocName);
fna = fi.dirPath()+"/"+fi.baseName()+".sla";
}
else
{
QDir di = QDir();
fna = di.currentDirPath()+"/"+doc->DocName+".sla";
}
#ifdef HAVE_LIBZ
QString fn = CFileDialog( tr("Save as"), tr("Documents (*.sla *.sla.gz *.scd *scd.gz);;All Files (*)"), fna, false, false, true);
#else
QString fn = CFileDialog( tr("Save as"), tr("Documents (*.sla *.scd);;All Files (*)"), fna, false, false, false);
#endif
if (!fn.isEmpty())
{
if (overwrite(this, fn))
{
if (!DoFileSave(fn))
QMessageBox::warning(this, tr("Warning"), tr("Can't write the File: \n%1").arg(fn), tr("OK"));
}
}
FMess->setText( tr("Ready"));
}
bool ScribusApp::DoFileSave(QString fn)
{
bool ret = true;
FMess->setText( tr("Saving..."));
FProg->reset();
QFileInfo fi(fn);
QDir::setCurrent(fi.dirPath(true));
ScriXmlDoc *ss = new ScriXmlDoc();
qApp->processEvents();
ret = ss->WriteDoc(fn, doc, view, FProg);
delete ss;
if (ret)
{
doc->setUnModified();
ActWin->setCaption(fn);
doc->DocName = fn;
fileMenu->setItemEnabled(fid4, 0);
fileMenu->setItemEnabled(fid52, 0);
DatSav->setEnabled(false);
UpdateRecent(fn);
doc->hasName = true;
}
FMess->setText("");
FProg->reset();
return ret;
}
bool ScribusApp::slotFileClose()
{
ScribusWin* tw = ActWin;
ActWin->close();
if (tw == ActWin)
return false;
else
return true;
}
bool ScribusApp::DoFileClose()
{
uint a;
doc->ASaveTimer->stop();
disconnect(doc->ASaveTimer, SIGNAL(timeout()), doc->WinHan, SLOT(slotAutoSave()));
disconnect(doc->WinHan, SIGNAL(AutoSaved()), this, SLOT(slotAutoSaved()));
if ((doc->UnData.UnCode == 0) && (doc->UnDoValid))
delete doc->UnData.Item;
if (CMSavail)
ActWin->CloseCMSProfiles();
Mpal->NewSel(-1);
Mpal->UnsetDoc();
Sepal->Vie = 0;
Sepal->Rebuild();
Mpal->Spal->SetFormats(0);
Mpal->SetLineFormats(0);
if (doc->EditClip)
Npal->doc = 0;
BookPal->BView->clear();
BookPal->BView->NrItems = 0;
BookPal->BView->First = 1;
BookPal->BView->Last = 0;
if ((wsp->windowList().isEmpty()) || (wsp->windowList().count() == 1))
{
fileMenu->setItemEnabled(fid1, 0);
importMenu->setItemEnabled(fid2, 0);
exportMenu->setItemEnabled(fid3, 0);
fileMenu->setItemEnabled(fid4, 0);
fileMenu->setItemEnabled(fid5, 0);
fileMenu->setItemEnabled(fid51, 0);
fileMenu->setItemEnabled(fid52, 0);
fileMenu->setItemEnabled(fid6, 0);
fileMenu->setItemEnabled(fid7, 0);
exportMenu->setItemEnabled(fid8, 0);
importMenu->setItemEnabled(fid2a, 0);
fileMenu->setItemEnabled(fid9, 0);
exportMenu->setItemEnabled(fid10, 0);
fileMenu->setItemEnabled(fid11, 0);
editMenu->setItemEnabled(edUndo, 0);
editMenu->setItemEnabled(edid1, 0);
editMenu->setItemEnabled(edid2, 0);
editMenu->setItemEnabled(edid3, 0);
editMenu->setItemEnabled(edid4, 0);
editMenu->setItemEnabled(edid5, 0);
editMenu->setItemEnabled(edid6, 0);
editMenu->setItemEnabled(edid6a, 0);
extraMenu->setItemEnabled(hyph, 0);
for (int a=0; a<6; ++a)
{
viewMenu->setItemEnabled(viewMenu->idAt(a), 0);
}
viewMenu->setItemEnabled(Markers, 0);
viewMenu->setItemEnabled(FrameDr, 0);
viewMenu->setItemEnabled(Bilder, 0);
viewMenu->setItemEnabled(Ras, 0);
viewMenu->setItemEnabled(uRas, 0);
viewMenu->setItemChecked(uRas, false);
viewMenu->setItemEnabled(Guide, 0);
viewMenu->setItemEnabled(uGuide, 0);
viewMenu->setItemChecked(uGuide, false);
viewMenu->changeItem(Markers, tr("Hide Margins"));
viewMenu->changeItem(FrameDr, tr("Hide Frames"));
viewMenu->changeItem(Bilder, tr("Hide Images"));
viewMenu->changeItem(Ras, tr("Show Grid"));
viewMenu->changeItem(Guide, tr("Hide Guides"));
editMenu->setItemEnabled(tman, 0);
editMenu->setItemEnabled(jman, 0);
menuBar()->setItemEnabled(pgmm, 0);
menuBar()->setItemEnabled(exmn, 0);
menuBar()->setItemEnabled(Obm, 0);
WerkTools->setEnabled(false);
WerkToolsP->setEnabled(false);
ColorMenu->clear();
Mpal->Cpal->SetColors(Prefs.DColors);
Mpal->Cpal->ChooseGrad(0);
FMess->setText( tr("Ready"));
Tpal->PageObj.clear();
Tpal->Seiten.clear();
Tpal->ListView1->clear();
Lpal->ClearInhalt();
DatPri->setEnabled(false);
DatPDF->setEnabled(false);
DatSav->setEnabled(false);
DatClo->setEnabled(false);
PrinterUsed = false;
#ifdef HAVE_CMS
CMSuse = false;
SoftProofing = Prefs.DCMSset.SoftProofOn;
IntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
IntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
#endif
}
view->close();
for (a = 0; a<view->Pages.count(); ++a)
{
delete view->Pages.at(a);
}
HaveDoc--;
view = NULL;
delete doc;
doc = NULL;
ActWin = NULL;
return true;
}
void ScribusApp::slotFilePrint()
{
QString fna, prn, cmd, scmd, cc, data, SepNam;
int Anf, Ende, Nr;
bool fil, sep, farbe, PSfile, mirrorH, mirrorV, useICC;
PSfile = false;
FMess->setText( tr("Printing..."));
if (PrinterUsed)
{
prn = PDef.Pname;
fna = PDef.Dname;
}
else
{
prn = "";
if (!doc->DocName.startsWith( tr("Document")))
{
QFileInfo fi(doc->DocName);
fna = fi.dirPath()+"/"+fi.baseName()+".ps";
}
else
{
QDir di = QDir();
fna = di.currentDirPath()+"/"+doc->DocName+".ps";
}
}
scmd = PDef.Command;
Druck *printer = new Druck(this, fna, prn, scmd);
printer->setMinMax(1, view->Pages.count());
printer->setFromTo(1, view->Pages.count());
if (printer->exec())
{
qApp->setOverrideCursor(QCursor(waitCursor), true);
prn = printer->printerName();
fna = printer->outputFileName();
fil = printer->outputToFile();
Anf = printer->fromPage();
Ende = printer->toPage();
Nr = printer->numCopies();
sep = printer->outputSeparations();
SepNam = printer->separationName();
farbe = printer->color();
mirrorH = printer->MirrorH;
mirrorV = printer->MirrorV;
useICC = printer->ICCinUse;
PDef.Pname = prn;
PDef.Dname = fna;
if (printer->OtherCom->isChecked())
PDef.Command = printer->Command->text();
PrinterUsed = true;
QMap<QString,QFont> ReallyUsed;
ReallyUsed.clear();
GetUsedFonts(&ReallyUsed);
PSLib *dd = getPSDriver(true, Prefs.AvailFonts, ReallyUsed, doc->PageColors, false);
if (dd != NULL)
{
if (fil)
PSfile = dd->PS_set_file(fna);
else
PSfile = dd->PS_set_file(PrefsPfad+"/tmp.ps");
if (PSfile)
{
if (printer->pageOrder() == 0)
view->CreatePS(dd, Anf-1, Ende, 1, sep, SepNam, farbe, mirrorH, mirrorV, useICC);
else
view->CreatePS(dd, Ende-1, Anf-2, -1, sep, SepNam, farbe, mirrorH, mirrorV, useICC);
if (!fil)
{
if (printer->OtherCom->isChecked())
{
cmd = printer->Command->text()+ " "+PrefsPfad+"/tmp.ps";
system(cmd);
}
else
{
cmd = "lpr -P" + prn;
if (Nr > 1)
cmd += " -#" + cc.setNum(Nr);
#ifdef HAVE_CUPS
cmd += printer->PrinterOpts;
#endif
cmd += " "+PrefsPfad+"/tmp.ps";
system(cmd);
}
system("rm -f "+PrefsPfad+"/tmp.ps");
}
}
else
QMessageBox::warning(this, tr("Warning"), tr("Printing failed!"), tr("OK"));
delete dd;
closePSDriver();
qApp->setOverrideCursor(QCursor(arrowCursor), true);
}
}
delete printer;
FMess->setText( tr("Ready"));
}
void ScribusApp::slotFileQuit()
{
Mpal->UnsetDoc();
close();
}
void ScribusApp::slotEditCut()
{
uint a;
NoFrameEdit();
QString BufferI = "";
if ((HaveDoc) && (doc->ActPage->SelItem.count() != 0))
{
Buffer2 = "<SCRIBUSTEXT>";
PageItem *b = doc->ActPage->SelItem.at(0);
if (doc->AppMode == 7)
{
if ((b->Ptext.count() == 0) || (!b->HasSel))
return;
for (a = 0; a < b->Ptext.count(); ++a)
{
if (b->Ptext.at(a)->cselect)
{
if (b->Ptext.at(a)->ch == QChar(13))
{
Buffer2 += QChar(5);
BufferI += QChar(10);
}
else
{
Buffer2 += b->Ptext.at(a)->ch;
BufferI += b->Ptext.at(a)->ch;
}
Buffer2 += "\t";
Buffer2 += b->Ptext.at(a)->cfont+"\t";
Buffer2 += QString::number(b->Ptext.at(a)->csize)+"\t";
Buffer2 += b->Ptext.at(a)->ccolor+"\t";
Buffer2 += QString::number(b->Ptext.at(a)->cextra)+"\t";
Buffer2 += QString::number(b->Ptext.at(a)->cshade)+'\t';
Buffer2 += QString::number(b->Ptext.at(a)->cstyle)+'\t';
Buffer2 += QString::number(b->Ptext.at(a)->cab)+'\t';
Buffer2 += b->Ptext.at(a)->cstroke+"\t";
Buffer2 += QString::number(b->Ptext.at(a)->cshade2)+'\t';
Buffer2 += QString::number(b->Ptext.at(a)->cscale)+'\n';
}
}
DeleteSel(b);
b->Dirty = true;
doc->ActPage->RefreshItem(b);
}
else
{
ScriXmlDoc *ss = new ScriXmlDoc();
Buffer2 = ss->WriteElem(&doc->ActPage->SelItem, doc);
doc->ActPage->DeleteItem();
}
slotDocCh();
ClipB->setText(BufferI);
BuFromApp = true;
editMenu->setItemEnabled(edid3, 1);
}
}
void ScribusApp::slotEditCopy()
{
uint a;
NoFrameEdit();
QString BufferI = "";
if ((HaveDoc) && (doc->ActPage->SelItem.count() != 0))
{
Buffer2 = "<SCRIBUSTEXT>";
PageItem *b = doc->ActPage->SelItem.at(0);
if ((doc->AppMode == 7) && (b->HasSel))
{
Buffer2 += "";
for (a = 0; a < b->Ptext.count(); ++a)
{
if (b->Ptext.at(a)->cselect)
{
if (b->Ptext.at(a)->ch == QChar(13))
{
Buffer2 += QChar(5);
BufferI += QChar(10);
}
else
{
Buffer2 += b->Ptext.at(a)->ch;
BufferI += b->Ptext.at(a)->ch;
}
Buffer2 += "\t";
Buffer2 += b->Ptext.at(a)->cfont+"\t";
Buffer2 += QString::number(b->Ptext.at(a)->csize)+"\t";
Buffer2 += b->Ptext.at(a)->ccolor+"\t";
Buffer2 += QString::number(b->Ptext.at(a)->cextra)+"\t";
Buffer2 += QString::number(b->Ptext.at(a)->cshade)+'\t';
Buffer2 += QString::number(b->Ptext.at(a)->cstyle)+'\t';
Buffer2 += QString::number(b->Ptext.at(a)->cab)+'\t';
Buffer2 += b->Ptext.at(a)->cstroke+"\t";
Buffer2 += QString::number(b->Ptext.at(a)->cshade2)+'\t';
Buffer2 += QString::number(b->Ptext.at(a)->cscale)+'\n';
}
}
}
else
{
ScriXmlDoc *ss = new ScriXmlDoc();
BufferI = ss->WriteElem(&doc->ActPage->SelItem, doc);
delete ss;
}
ClipB->setText(BufferI);
BuFromApp = true;
editMenu->setItemEnabled(edid3, 1);
}
}
void ScribusApp::slotEditPaste()
{
struct Pti *hg;
NoFrameEdit();
if (HaveDoc)
{
if (Buffer2.isNull())
return;
if (doc->AppMode == 7)
{
PageItem *b = doc->ActPage->SelItem.at(0);
if (Buffer2.startsWith("<SCRIBUSTEXT>"))
{
QString Buf = Buffer2.mid(13);
QTextStream t(&Buf, IO_ReadOnly);
QString cc;
while (!t.atEnd())
{
cc = t.readLine();
QStringList wt;
QStringList::Iterator it;
wt = QStringList::split("\t", cc);
it = wt.begin();
hg = new Pti;
hg->ch = (*it);
if (hg->ch == QChar(5))
hg->ch = QChar(13);
it++;
hg->cfont = *it;
it++;
hg->csize = (*it).toInt();
it++;
hg->ccolor = *it;
it++;
hg->cextra = (*it).toInt();
it++;
hg->cshade = (*it).toInt();
hg->cselect = false;
it++;
hg->cstyle = (*it).toInt();
it++;
hg->cab = (*it).toInt();
it++;
if (it == NULL)
hg->cstroke = "None";
else
hg->cstroke = *it;
it++;
if (it == NULL)
hg->cshade2 = 100;
else
hg->cshade = (*it).toInt();
it++;
if (it == NULL)
hg->cscale = 100;
else
hg->cscale = (*it).toInt();
b->Ptext.insert(b->CPos, hg);
b->CPos += 1;
hg->PRot = 0;
hg->PtransX = 0;
hg->PtransY = 0;
&