Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
3 paul 1
/***************************************************************************
2
                          scribus.cpp  -  description
3
                             -------------------
4
    begin                : Fre Apr  6 21:09:31 CEST 2001
5
    copyright            : (C) 2001 by Franz Schmid
6
    email                : Franz.Schmid@altmuehlnet.de
7
 ***************************************************************************/
8
 
9
/***************************************************************************
10
 *                                                                         *
11
 *   This program is free software; you can redistribute it and/or modify  *
12
 *   it under the terms of the GNU General Public License as published by  *
13
 *   the Free Software Foundation; either version 2 of the License, or     *
14
 *   (at your option) any later version.                                   *
15
 *                                                                         *
16
 ***************************************************************************/
17
 
18
#include <qaccel.h>
19
#include <qapplication.h>
20
#include <qcolordialog.h>
21
#include <qcolor.h>
22
#include <qiconset.h>
23
#include <qtextstream.h>
24
#include <qstylefactory.h>
25
#include <qregexp.h>
26
#include <qtextcodec.h>
27
#include <qcursor.h>
28
#include <qvbox.h>
29
#include <cstdio>
30
#include <cstdlib>
31
#include <dlfcn.h>
32
#include <iostream>
119 Franz 33
#include <signal.h>
80 Franz 34
#include <string>
3 paul 35
#include "scribus.h"
36
#include "scribus.moc"
37
#include "newfile.h"
38
#include "page.h"
39
#include "query.h"
40
#include "mdup.h"
41
#include "docinfo.h"
42
#include "reformdoc.h"
43
#include "serializer.h"
44
#include "align.h"
45
#include "fmitem.h"
46
#include "fontprefs.h"
47
#include "libprefs/prefs.h"
48
#include "pdfopts.h"
49
#include "inspage.h"
50
#include "delpages.h"
51
#include "movepage.h"
52
#include "helpbrowser.h"
53
#include "scribusXml.h"
54
#include "libabout/about.h"
55
#include "druck.h"
56
#include "editformats.h"
57
#include "muster.h"
58
#include "applytemplate.h"
59
#include "picstatus.h"
60
#include "customfdialog.h"
61
#include "cmsprefs.h"
62
#include "annot.h"
63
#include "annota.h"
64
#include "javadocs.h"
65
#include "config.h"
66
#include "fpoint.h"
67
#include "fpointarray.h"
68
#include "hysettings.h"
69
#include "guidemanager.h"
70
#include "mergedoc.h"
27 Franz 71
#include "lineformats.h"
34 Franz 72
#include "missing.h"
102 Franz 73
#include "story.h"
123 Franz 74
#include "autoform.h"
3 paul 75
extern QPixmap loadIcon(QString nam);
90 Franz 76
extern bool overwrite(QWidget *parent, QString filename);
3 paul 77
 
78
using namespace std;
79
 
80
#ifdef HAVE_CMS
81
cmsHPROFILE CMSoutputProf;
82
cmsHPROFILE CMSprinterProf;
83
cmsHTRANSFORM stdTrans;
84
cmsHTRANSFORM stdProof;
85
cmsHTRANSFORM stdTransImg;
86
cmsHTRANSFORM stdProofImg;    
87
bool SoftProofing;
88
bool Gamut;
89
bool CMSuse;
90
int IntentMonitor;
91
int IntentPrinter;
92
#endif
93
bool CMSavail;
94
ProfilesL InputProfiles;
95
int PolyC;
96
int PolyFd;
80 Franz 97
double PolyF;
3 paul 98
bool PolyS;
80 Franz 99
double PolyR;
100
double UmReFaktor;
3 paul 101
QString DocDir;
119 Franz 102
ScribusApp* ScApp;
3 paul 103
 
17 Franz 104
ScribusApp::ScribusApp(SplashScreen *splash)
3 paul 105
{
112 Franz 106
  setCaption( tr("Scribus " VERSION));
118 Franz 107
        setKeyCompression(false);
83 Franz 108
  setIcon(loadIcon("AppIcon.png"));
3 paul 109
  initMenuBar();
110
  initStatusBar();
112 Franz 111
  WerkTools2 = new QToolBar( tr("File"), this);
3 paul 112
  DatNeu = new QToolButton(loadIcon("DateiNeu.xpm"), tr("Creates a new Document"), QString::null, this, SLOT(slotFileNew()), WerkTools2);
77 Franz 113
  DatOpe = new QToolButton(loadIcon("DateiOpen.xpm"), tr("Opens a Document"), QString::null, this, SLOT(slotDocOpen()), WerkTools2);
114
  DatSav = new QToolButton(loadIcon("DateiSave.xpm"), tr("Saves the Current Document"), QString::null, this, SLOT(slotFileSave()), WerkTools2);
115
  DatClo = new QToolButton(loadIcon("DateiClos.xpm"), tr("Closes the Current Document"), QString::null, this, SLOT(slotFileClose()), WerkTools2);
116
  DatPri = new QToolButton(loadIcon("DateiPrint.xpm"), tr("Prints the Current Document"), QString::null, this, SLOT(slotFilePrint()), WerkTools2);
117
  DatPDF = new QToolButton(loadIcon("acrobat.png"), tr("Saves the Current Document as PDF"), QString::null, this, SLOT(SaveAsPDF()), WerkTools2);
80 Franz 118
  DatSav->setEnabled(false);
73 Franz 119
  DatClo->setEnabled(false);
77 Franz 120
  DatPri->setEnabled(false);
80 Franz 121
  DatPDF->setEnabled(false);
73 Franz 122
  DatOpe->setPopup(recentMenu);
80 Franz 123
  WerkTools = new WerkToolB(this);
73 Franz 124
  setDockEnabled(WerkTools, DockLeft, false);
77 Franz 125
  setDockEnabled(WerkTools, DockRight, false);
126
  WerkTools->Sichtbar = true;
127
  WerkTools->setEnabled(false);
128
  WerkToolsP = new WerkToolBP(this);
80 Franz 129
  setDockEnabled(WerkToolsP, DockLeft, false);
73 Franz 130
  setDockEnabled(WerkToolsP, DockRight, false);
80 Franz 131
  WerkToolsP->setEnabled(false);
73 Franz 132
  WerkToolsP->Sichtbar = true;
80 Franz 133
  QString Pff = QString(getenv("HOME"))+"/.scribus";
73 Franz 134
  QFileInfo Pffi = QFileInfo(Pff);
135
  if (Pffi.exists())
77 Franz 136
        {
80 Franz 137
    if (Pffi.isDir())
73 Franz 138
      PrefsPfad = Pff;
139
        else
140
      PrefsPfad = QString(getenv("HOME"));
77 Franz 141
        }
73 Franz 142
  else
77 Franz 143
        {
3 paul 144
        QDir di = QDir();
73 Franz 145
    di.mkdir(Pff);
146
    PrefsPfad = Pff;
147
    QString OldPR = QString(getenv("HOME"))+"/.scribus.rc";
148
    QFileInfo OldPi = QFileInfo(OldPR);
149
    if (OldPi.exists())
77 Franz 150
        {
3 paul 151
                        system("mv " + OldPR + " " + Pff+"/scribus.rc");
77 Franz 152
                        }
3 paul 153
                QString OldPR2 = QString(getenv("HOME"))+"/.scribusfont.rc";
154
                QFileInfo OldPi2 = QFileInfo(OldPR2);
155
                if (OldPi2.exists())
156
                        {
157
                        system("mv " + OldPR2 + " " + Pff+"/scribusfont.rc");
158
                        }
159
                QString OldPR3 = QString(getenv("HOME"))+"/.scribusscrap.scs";
160
                QFileInfo OldPi3 = QFileInfo(OldPR3);
161
                if (OldPi3.exists())
162
                        {
163
                        system("mv " + OldPR3 + " " + Pff+"/scrap.scs");
164
                        }
165
                }
166
        /** Erstelle Fontliste */
167
  NoFonts = false;
168
        BuFromApp = false;
112 Franz 169
        splash->setStatus( tr("Searching for Fonts"));
3 paul 170
  GetAllFonts();
171
  if (NoFonts)
172
        {
173
                QString mess = tr("There are no Postscript-Fonts on your System");
174
                mess += "\n" + tr("Exiting now");
175
                QMessageBox::critical(this, tr("Fatal Error"), mess, 1, 0, 0);
176
        }
177
  else
178
        {
179
        HaveDoc = 0;
95 Franz 180
                view = NULL;
181
                doc = NULL;
3 paul 182
        BuildFontMenu();
183
                SCFontsIterator it(Prefs.AvailFonts);
184
                Prefs.DefFont = it.currentKey();
111 Franz 185
        Prefs.DefSize = 120;
81 Franz 186
        Prefs.AppFontSize = qApp->font().pointSize();
3 paul 187
        /** Default Farbenliste */
188
        Prefs.DColors.clear();
189
          Prefs.DColors.insert("White", CMYKColor(0, 0, 0, 0));
190
        Prefs.DColors.insert("Black", CMYKColor(0, 0, 0, 255));
191
                Prefs.DColors.insert("Blue", CMYKColor(255, 255, 0, 0));
192
                Prefs.DColors.insert("Cyan", CMYKColor(255, 0, 0, 0));
193
                Prefs.DColors.insert("Green", CMYKColor(255, 0, 255, 0));
194
                Prefs.DColors.insert("Red", CMYKColor(0, 255, 255, 0));
195
                Prefs.DColors.insert("Yellow", CMYKColor(0, 0, 255, 0));
196
                Prefs.DColors.insert("Magenta", CMYKColor(0, 255, 0, 0));
197
                DispX = 10;
198
                DispY = 10;
199
                Prefs.Wheelval = 40;
200
                Prefs.GrabRad = 4;
201
                Prefs.GuideRad = 10;
202
                Prefs.DminGrid = 20;
203
          Prefs.DmajGrid = 100;
204
          DocNr = 1;
205
          Prefs.DminColor = QColor(green);
206
          Prefs.DmajColor = QColor(green);
207
          Prefs.DpapColor = QColor(white);
208
          Prefs.DmargColor = QColor(blue);
209
                Prefs.guideColor = QColor(darkBlue);
210
          Prefs.DVHoch = 33;
211
          Prefs.DVHochSc = 100;
212
          Prefs.DVTief = 33;
213
          Prefs.DVTiefSc = 100;
214
          Prefs.DVKapit = 75;
215
          Prefs.GUI = "Default";
216
          Prefs.Dpen = "Black";
217
          Prefs.Dbrush = "Black";
218
          Prefs.Dshade = 100;
219
          Prefs.Dshade2 = 100;
220
          Prefs.DLineArt = SolidLine;
221
          Prefs.Dwidth = 1;
222
          Prefs.DpenLine = "Black";
223
          Prefs.DpenText = "Black";
224
          Prefs.DshadeLine = 100;
225
          Prefs.DLstyleLine = SolidLine;
226
          Prefs.DwidthLine = 1;
227
          Prefs.MagMin = 10;
228
          Prefs.MagMax = 800;
229
          Prefs.MagStep = 25;
230
          Prefs.DbrushPict = "White";
231
          Prefs.ShadePict = 100;
232
          Prefs.ScaleX = 1;
233
          Prefs.ScaleY = 1;
234
          Prefs.Before = true;
235
          Prefs.Einheit = 0;
236
                UmReFaktor = 1.0;
237
                PolyC = 4;
238
                PolyF = 0.5;
239
                PolyS = false;
240
                PolyFd = 0;
241
                PolyR = 0;
242
                Prefs.PolyC = PolyC;
243
                Prefs.PolyF = PolyF;
244
                Prefs.PolyFd = PolyFd;
245
                Prefs.PolyS = PolyS;
246
                Prefs.PolyR = PolyR;
247
          Prefs.Werkv = true;
14 Franz 248
          Prefs.WerkvP = true;
3 paul 249
          Prefs.Mpalv = false;
250
          Prefs.Tpalv = false;
251
          Prefs.SCpalv = false;
252
          Prefs.Lpalv = false;
253
                Prefs.Bopalv = false;
87 Franz 254
          Prefs.Mpalx = 0;
255
          Prefs.Mpaly = 0;
256
                Prefs.Tpalx = 0;
257
                Prefs.Tpaly = 0;
258
                Prefs.SCpalx = 0;
259
                Prefs.SCpaly = 0;
260
                Prefs.SCpalw = 100;
261
                Prefs.SCpalh = 200;
262
                Prefs.Sepalx = 0;
263
                Prefs.Sepaly = 0;
264
                Prefs.Bopalx = 0;
265
                Prefs.Bopaly = 0;
266
                Prefs.Lpalx = 0;
267
                Prefs.Lpaly = 0;
3 paul 268
          Prefs.PSize = 40;
269
          Prefs.SaveAtQ = true;
270
          Prefs.ShFrames = true;
271
          Prefs.PagesSbS = true;
272
          Prefs.RecentDocs.clear();
273
          Prefs.RecentDCount = 5;
274
          Prefs.RandFarbig = false;
275
          Prefs.AutoLine = 20;
276
                Prefs.PageFormat = 4;
277
                Prefs.Ausrichtung = 0;
278
                Prefs.PageBreite = 595;
279
                Prefs.PageHoehe = 842;
280
                Prefs.RandOben = 9;
281
                Prefs.RandUnten = 40;
282
                Prefs.RandLinks = 9;
283
                Prefs.RandRechts = 9;
284
                Prefs.DoppelSeiten = false;
285
                Prefs.ErsteLinks = false;
286
                Prefs.ScaleType = true;
287
                Prefs.AspectRatio = true;
288
                Prefs.MinWordLen = 3;
289
                Prefs.Language = "";
290
                Prefs.Automatic = true;
291
                Prefs.AutoCheck = false;
292
                Prefs.PDFTransparency = false;
293
                Prefs.AutoSave = false;
294
                Prefs.AutoSaveTime = 600000;
11 Franz 295
                Prefs.DisScale = 1.0;
3 paul 296
                Prefs.DocDir = QString(getenv("HOME"));
68 Franz 297
                Prefs.ProfileDir = "";
91 Franz 298
                Prefs.ScriptDir = "";
3 paul 299
                PDef.Pname = "";
300
                PDef.Dname = "";
301
                PDef.Command = "";
302
          PrinterUsed = false;
303
                resize(610, 600);
304
    QVBox* vb = new QVBox( this );
305
    vb->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
306
    wsp = new QWorkspace( vb );
307
    setCentralWidget( vb );
308
                connect(wsp, SIGNAL(windowActivated(QWidget *)), this, SLOT(newActWin(QWidget *)));
77 Franz 309
                Tpal = new Tree(this, 0);
32 Franz 310
                Mpal = new Mpalette(this, &Prefs);
3 paul 311
                Mpal->Cpal->SetColors(Prefs.DColors);
312
                Npal = new NodePalette(this);
313
                Lpal = new LayerPalette(this);
30 Franz 314
                ScBook = new Biblio(this, &Prefs);
3 paul 315
                Sepal = new SeitenPal(this);
316
                BookPal = new BookPalette(this);
317
                CMSavail = false;
92 Franz 318
                keyrep = false;
3 paul 319
                Prefs.DCMSset.DefaultMonitorProfile = "";
320
                Prefs.DCMSset.DefaultPrinterProfile = "";
321
                Prefs.DCMSset.DefaultInputProfile = "";
322
                Prefs.DCMSset.DefaultInputProfile2 = "";
323
                Prefs.DCMSset.CMSinUse = false;
324
                Prefs.DCMSset.SoftProofOn = false;
325
                Prefs.DCMSset.GamutCheck = false;
117 Franz 326
                Prefs.DCMSset.BlackPoint = true;
3 paul 327
                Prefs.DCMSset.DefaultIntentMonitor = 1;
328
                Prefs.DCMSset.DefaultIntentMonitor2 = 1;
329
                Prefs.DCMSset.DefaultIntentPrinter = 0;
330
                Prefs.GFontSub.clear();
331
                SetKeyEntry(56, tr("Smart Hyphen"), 0, ALT+Key_Minus);
332
                SetKeyEntry(57, tr("Align Left"), 0, CTRL+Key_L);
333
                SetKeyEntry(58, tr("Align Right"), 0, CTRL+Key_R);
334
                SetKeyEntry(59, tr("Align Center"), 0, CTRL+Key_E);
73 Franz 335
                SetKeyEntry(60, tr("Insert Page Number"), 0, ALT+Key_NumberSign);
3 paul 336
                SetKeyEntry(61, tr("Attach Text to Path"), PfadT, 0);
337
                SetKeyEntry(62, tr("Show Layers"), viewLpal, 0);
73 Franz 338
                SetKeyEntry(63, tr("Javascripts..."), jman, 0);
3 paul 339
                SetKeyEntry(64, tr("Undo"), edUndo, CTRL+Key_Z);
340
                SetKeyEntry(65, tr("Show Page Palette"), viewSepal, 0);
341
                SetKeyEntry(66, tr("Lock/Unlock"), LockOb, CTRL+Key_H);
73 Franz 342
                SetKeyEntry(67, tr("Non Breaking Space"), 0, CTRL+Key_Space);
112 Franz 343
                splash->setStatus( tr("Reading Preferences"));
68 Franz 344
                ReadPrefs();
120 Franz 345
                if (Prefs.DefFont == "")
346
                        Prefs.DefFont = it.currentKey();
112 Franz 347
                splash->setStatus( tr("Getting ICC-Profiles"));
3 paul 348
                GetCMSProfiles();
112 Franz 349
                splash->setStatus( tr("Init Hyphenator"));
3 paul 350
                InitHyphenator();
351
                Mpal->Cpal->UseTrans(Prefs.PDFTransparency);
68 Franz 352
                Mpal->Fonts->RebuildList(&Prefs);
353
                Mpal->fillLangCombo(Sprachen);
3 paul 354
                DocDir = Prefs.DocDir;
112 Franz 355
                splash->setStatus( tr(""));
356
                splash->setStatus( tr("Setting up Shortcuts"));
3 paul 357
                SetShortCut();
358
                if (CMSavail)
359
                        {
112 Franz 360
                        hymen->insertItem( tr("Color Management..."), this , SLOT(SetCMSPrefs()));
3 paul 361
                        ProfilesL::Iterator ip;
362
                        if ((Prefs.DCMSset.DefaultInputProfile == "") || (!InputProfiles.contains(Prefs.DCMSset.DefaultInputProfile)))
363
                                {
364
                                ip = InputProfiles.begin();
365
                                Prefs.DCMSset.DefaultInputProfile = ip.key();
366
                                }
367
                        if ((Prefs.DCMSset.DefaultInputProfile2 == "") || (!InputProfiles.contains(Prefs.DCMSset.DefaultInputProfile2)))
368
                                {
369
                                ip = InputProfiles.begin();
370
                                Prefs.DCMSset.DefaultInputProfile2 = ip.key();
371
                                }
372
                        if ((Prefs.DCMSset.DefaultMonitorProfile == "") || (!MonitorProfiles.contains(Prefs.DCMSset.DefaultMonitorProfile)))
373
                                {
374
                                ip = MonitorProfiles.begin();
375
                                Prefs.DCMSset.DefaultMonitorProfile = ip.key();
376
                                }
377
                        if ((Prefs.DCMSset.DefaultPrinterProfile == "") || (!PrinterProfiles.contains(Prefs.DCMSset.DefaultPrinterProfile)))
378
                                {
379
                                ip = PrinterProfiles.begin();
380
                                Prefs.DCMSset.DefaultPrinterProfile = ip.key();
80 Franz 381
                                }
3 paul 382
#ifdef HAVE_CMS
383
                        SoftProofing = Prefs.DCMSset.SoftProofOn;
384
                        CMSuse = false;
385
                        IntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
386
                        IntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
387
#endif
388
                        }
112 Franz 389
                splash->setStatus( tr("Reading Scrapbook"));
3 paul 390
                QString SCf = PrefsPfad+"/scrap.scs";
391
                QFileInfo SCfi = QFileInfo(SCf);
392
                if (SCfi.exists())
393
                        {
394
                        ScBook->BibWin->ReadContents(SCf);
395
                        ScBook->ScFilename = SCf;
396
                        }
397
                ScBook->AdjustMenu();
398
                HaveGS = system("gs -h > /dev/null 2>&1");
112 Franz 399
                splash->setStatus( tr("Initializing Plugins"));
17 Franz 400
                InitPlugs(splash);
3 paul 401
                ClipB = QApplication::clipboard();
402
                connect(WerkTools, SIGNAL(NewMode(int)), this, SLOT(ModeFromTB(int)));
403
                connect(WerkTools, SIGNAL(Schliessen()), this, SLOT(ToggleTools()));
14 Franz 404
                connect(WerkToolsP, SIGNAL(NewMode(int)), this, SLOT(ModeFromTB(int)));
405
                connect(WerkToolsP, SIGNAL(Schliessen()), this, SLOT(TogglePDFTools()));
3 paul 406
                connect(Mpal, SIGNAL(DocChanged()), this, SLOT(slotDocCh()));
407
                connect(Mpal, SIGNAL(NewAbStyle(int)), this, SLOT(setNewAbStyle(int)));
408
                connect(Mpal, SIGNAL(BackHome()), this, SLOT(Aktiv()));
409
                connect(Mpal, SIGNAL(Stellung(int)), this, SLOT(setItemHoch(int)));
410
                connect(Mpal, SIGNAL(Schliessen()), this, SLOT(ToggleMpal()));
411
                connect(Mpal, SIGNAL(EditCL()), this, SLOT(ToggleFrameEdit()));
32 Franz 412
                connect(Mpal, SIGNAL(NewTF(QString)), this, SLOT(SetNewFont(QString)));
3 paul 413
                connect(Mpal->Cpal, SIGNAL(NewPen(QString)), this, SLOT(setPenFarbe(QString)));
414
                connect(Mpal->Cpal, SIGNAL(NewBrush(QString)), this, SLOT(setBrushFarbe(QString)));
415
                connect(Mpal->Cpal, SIGNAL(NewPenShade(int)), this, SLOT(setPenShade(int)));
416
                connect(Mpal->Cpal, SIGNAL(NewBrushShade(int)), this, SLOT(setBrushShade(int)));
80 Franz 417
                connect(Mpal->Cpal, SIGNAL(NewTrans(double)), this, SLOT(SetTranspar(double)));
418
                connect(Mpal->Cpal, SIGNAL(NewTransS(double)), this, SLOT(SetTransparS(double)));
3 paul 419
                connect(Mpal->Cpal, SIGNAL(NewGradient(int, QString, int, QString, int)), this, SLOT(setGradFill(int, QString, int, QString, int)));
420
                connect(Mpal->Cpal, SIGNAL(QueryItem()), this, SLOT(GetBrushPen()));
421
                connect(Tpal, SIGNAL(Schliessen()), this, SLOT(ToggleTpal()));
422
                connect(Tpal, SIGNAL(SelectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
423
                connect(Tpal, SIGNAL(SelectSeite(int)), this, SLOT(SelectFromOutlS(int)));
424
                connect(Mpal->Spal, SIGNAL(NewStyle(int)), this, SLOT(setNewAbStyle(int)));
425
                connect(Mpal->Spal, SIGNAL(EditSt()), this, SLOT(slotEditStyles()));
27 Franz 426
                connect(Mpal, SIGNAL(EditLSt()), this, SLOT(slotEditLineStyles()));
3 paul 427
                connect(Npal, SIGNAL(Schliessen()), this, SLOT(NoFrameEdit()));
428
                connect(Lpal, SIGNAL(LayerActivated(int)), this, SLOT(changeLayer(int)));
429
                connect(Lpal, SIGNAL(LayerRemoved(int)), this, SLOT(LayerRemove(int)));
430
                connect(Lpal, SIGNAL(LayerChanged()), this, SLOT(showLayer()));
431
                connect(Lpal, SIGNAL(Schliessen()), this, SLOT(ToggleLpal()));
432
                connect(Sepal, SIGNAL(Schliessen()), this, SLOT(ToggleSepal()));
433
                connect(ScBook, SIGNAL(Schliessen()), this, SLOT(ToggleBpal()));
434
                connect(Sepal, SIGNAL(EditTemp(QString)), this, SLOT(ManageTemp(QString)));
435
                connect(Sepal->PageView, SIGNAL(UseTemp(QString, int)), this, SLOT(Apply_Temp(QString, int)));
436
                connect(Sepal->PageView, SIGNAL(NewPage(int, QString)), this, SLOT(slotNewPageP(int, QString)));
437
                connect(Sepal->Trash, SIGNAL(DelPage(int)), this, SLOT(DeletePage2(int)));
438
                connect(Sepal, SIGNAL(GotoSeite(int)), this, SLOT(SelectFromOutlS(int)));
439
                connect(BookPal->BView, SIGNAL(MarkMoved()), this, SLOT(StoreBookmarks()));
440
                connect(BookPal->BView, SIGNAL(ChangeBMNr(int, int, int)), this, SLOT(ChBookmarks(int, int, int)));
441
                connect(BookPal, SIGNAL(Schliessen()), this, SLOT(ToggleBookpal()));
442
                connect(recentMenu, SIGNAL(activated(int)), this, SLOT(LoadRecent(int)));
443
                connect(ColorMenu, SIGNAL(activated(int)), this, SLOT(setItemFarbe(int)));
444
          connect(ShadeMenu, SIGNAL(activated(int)), this, SLOT(setItemShade(int)));
445
          connect(FontMenu, SIGNAL(activated(int)), this, SLOT(setItemFont(int)));
446
          connect(SizeTMenu, SIGNAL(activated(int)), this, SLOT(setItemFSize(int)));
447
          connect(TypeStyleMenu, SIGNAL(activated(int)), this, SLOT(setItemTypeStyle(int)));
448
          connect(AliMenu, SIGNAL(activated(int)), this, SLOT(setItemTextAli(int)));
449
                connect(this, SIGNAL(TextIFont(QString)), this, SLOT(AdjustFontMenu(QString)));
450
                connect(this, SIGNAL(TextISize(int)), this, SLOT(setFSizeMenu(int)));
451
                connect(this, SIGNAL(TextISize(int)), Mpal, SLOT(setSize(int)));
80 Franz 452
                connect(this, SIGNAL(TextUSval(double)), Mpal, SLOT(setExtra(double)));
3 paul 453
                connect(this, SIGNAL(TextStil(int)), Mpal, SLOT(setStil(int)));
68 Franz 454
                connect(this, SIGNAL(TextScale(int)), Mpal, SLOT(setTScale(int)));
455
                connect(this, SIGNAL(TextFarben(QString, QString, int, int)), Mpal, SLOT(setActFarben(QString, QString, int, int)));
3 paul 456
                connect(ClipB, SIGNAL(dataChanged()), this, SLOT(ClipChange()));
119 Franz 457
          typedef void (*HandlerType)(int);
458
                HandlerType handler     = 0;
459
                handler = ScribusApp::defaultCrashHandler;
460
                ScApp = this;
461
          if (!handler)
462
            handler = SIG_DFL;
463
          sigset_t mask;
464
          sigemptyset(&mask);
465
#ifdef SIGSEGV
466
          signal (SIGSEGV, handler);
467
          sigaddset(&mask, SIGSEGV);
468
#endif
469
#ifdef SIGFPE
470
          signal (SIGFPE, handler);
471
          sigaddset(&mask, SIGFPE);
472
#endif
473
#ifdef SIGILL
474
          signal (SIGILL, handler);
475
          sigaddset(&mask, SIGILL);
476
#endif
477
#ifdef SIGABRT
478
          signal (SIGABRT, handler);
479
          sigaddset(&mask, SIGABRT);
480
#endif
481
          sigprocmask(SIG_UNBLOCK, &mask, 0);
3 paul 482
        }
483
}
484
 
485
void ScribusApp::initMenuBar()
486
{
487
        int a;
488
        int MenID;
489
        QFont tmp;
490
        recentMenu = new QPopupMenu();
491
        RecentDocs.clear();
492
        fileMenu=new QPopupMenu();
493
        fid12 = fileMenu->insertItem(loadIcon("DateiNeu16.png"), tr("New"), this, SLOT(slotFileNew()), CTRL+Key_N);
494
        fid13 = fileMenu->insertItem(loadIcon("DateiOpen16.png"), tr("Open..."), this, SLOT(slotDocOpen()), CTRL+Key_O);
112 Franz 495
        fid14 = fileMenu->insertItem( tr("Recent Documents"), recentMenu);
3 paul 496
        SetKeyEntry(0, tr("New"), fid12, CTRL+Key_N);
497
        SetKeyEntry(1, tr("Open..."), fid13, CTRL+Key_O);
498
        fileMenu->insertSeparator();
499
        fid1 = fileMenu->insertItem(loadIcon("DateiClos16.png"), tr("Close"), this, SLOT(slotFileClose()), CTRL+Key_W);
500
        SetKeyEntry(2, tr("Close"), fid1, CTRL+Key_W);
501
        fileMenu->setItemEnabled(fid1, 0);
502
        fid4 = fileMenu->insertItem(loadIcon("DateiSave16.png"), tr("Save"), this, SLOT(slotFileSave()), CTRL+Key_S);
503
        SetKeyEntry(3, tr("Save"), fid4, CTRL+Key_S);
504
        fileMenu->setItemEnabled(fid4, 0);
112 Franz 505
        fid5 = fileMenu->insertItem( tr("Save as..."), this, SLOT(slotFileSaveAs()));
3 paul 506
        SetKeyEntry(4, tr("Save as..."), fid5, 0);
507
        fileMenu->setItemEnabled(fid5, 0);
112 Franz 508
        fid52 = fileMenu->insertItem( tr("Revert to Saved"), this, SLOT(slotFileRevert()));
509
        fileMenu->setItemEnabled(fid52, 0);
510
        fid51 = fileMenu->insertItem( tr("Collect for Output..."), this, SLOT(Collect()));
3 paul 511
        fileMenu->setItemEnabled(fid51, 0);
512
        fileMenu->insertSeparator();
513
        importMenu = new QPopupMenu();
112 Franz 514
        fid2 = importMenu->insertItem( tr("Get Text/Picture..."), this, SLOT(slotFileOpen()));
3 paul 515
        importMenu->setItemEnabled(fid2, 0);
112 Franz 516
        fid2a = importMenu->insertItem( tr("Insert Page..."), this, SLOT(slotDocMerge()));
3 paul 517
        importMenu->setItemEnabled(fid2a, 0);
112 Franz 518
        fileMenu->insertItem( tr("Import..."), importMenu);
3 paul 519
        exportMenu = new QPopupMenu();
112 Franz 520
        fid3 = exportMenu->insertItem( tr("Save Text..."), this, SLOT(SaveText()));
3 paul 521
        exportMenu->setItemEnabled(fid3, 0);
112 Franz 522
        fid8 = exportMenu->insertItem( tr("Save Page as EPS..."), this, SLOT(SaveAsEps()));
3 paul 523
        exportMenu->setItemEnabled(fid8, 0);
112 Franz 524
        fid10 = exportMenu->insertItem( tr("Save as PDF..."), this, SLOT(SaveAsPDF()));
3 paul 525
        exportMenu->setItemEnabled(fid10, 0);
112 Franz 526
        fid11 = fileMenu->insertItem( tr("Export..."), exportMenu);
3 paul 527
        fileMenu->setItemEnabled(fid11, 0);
528
        fileMenu->insertSeparator();
112 Franz 529
        fid6 = fileMenu->insertItem( tr("Document Info..."), this, SLOT(InfoDoc()), CTRL+Key_I);
3 paul 530
        fileMenu->setItemEnabled(fid6, 0);
531
        SetKeyEntry(5, tr("Document Info..."), fid6, CTRL+Key_I);
112 Franz 532
        fid7 = fileMenu->insertItem( tr("Document Setup..."), this, SLOT(SetupDoc()));
3 paul 533
        fileMenu->setItemEnabled(fid7, 0);
534
        SetKeyEntry(6, tr("Document Setup..."), fid7, 0);
535
        fid9 = fileMenu->insertItem(loadIcon("DateiPrint16.png"), tr("Print..."), this, SLOT(slotFilePrint()), CTRL+Key_P);
536
        fileMenu->setItemEnabled(fid9, 0);
537
        SetKeyEntry(7, tr("Print..."), fid9, CTRL+Key_P);
538
        fileMenu->insertSeparator();
539
        MenID = fileMenu->insertItem(loadIcon("exit.png"), tr("Quit"), this, SLOT(slotFileQuit()), CTRL+Key_Q);
540
        SetKeyEntry(8, tr("Quit"), MenID, CTRL+Key_Q);
541
        editMenu = new QPopupMenu();
112 Franz 542
        edUndo = editMenu->insertItem( tr("Undo"), this, SLOT(UnDoAction()), CTRL+Key_Z);
3 paul 543
        editMenu->insertSeparator();
544
        edid1 = editMenu->insertItem(loadIcon("editcut.png"), tr("Cut"), this , SLOT(slotEditCut()), CTRL+Key_X);
545
        edid2 = editMenu->insertItem(loadIcon("editcopy.png"), tr("Copy"), this , SLOT(slotEditCopy()), CTRL+Key_C);
546
        edid3 = editMenu->insertItem(loadIcon("editpaste.png"), tr("Paste"), this , SLOT(slotEditPaste()), CTRL+Key_V);
547
        edid4 = editMenu->insertItem(loadIcon("editdelete.png"), tr("Clear"), this, SLOT(DeleteText()));
112 Franz 548
        edid5 = editMenu->insertItem( tr("Select all"), this, SLOT(SelectAll()), CTRL+Key_A);
3 paul 549
        SetKeyEntry(9, tr("Cut"), edid1, CTRL+Key_X);
550
        SetKeyEntry(10, tr("Copy"), edid2, CTRL+Key_C);
551
        SetKeyEntry(11, tr("Paste"), edid3, CTRL+Key_V);
552
        SetKeyEntry(12, tr("Clear"), edid4, 0);
553
        SetKeyEntry(13, tr("Select all"), edid5, CTRL+Key_A);
554
        editMenu->insertSeparator();
112 Franz 555
        MenID = editMenu->insertItem( tr("Colors..."), this , SLOT(slotEditColors()));
3 paul 556
        SetKeyEntry(14, tr("Colors..."), MenID, 0);
112 Franz 557
        edid6 = editMenu->insertItem( tr("Styles..."), this , SLOT(slotEditStyles()));
558
        edid6a = editMenu->insertItem( tr("Line Styles..."), this , SLOT(slotEditLineStyles()));
3 paul 559
        SetKeyEntry(15, tr("Styles..."), edid6, 0);
112 Franz 560
        tman = editMenu->insertItem( tr("Templates..."), this, SLOT(ManageTemp()));
3 paul 561
        SetKeyEntry(16, tr("Templates..."), tman, 0);
112 Franz 562
        jman = editMenu->insertItem( tr("Javascripts..."), this, SLOT(ManageJava()));
3 paul 563
        hymen = new QPopupMenu();
112 Franz 564
        MenID = hymen->insertItem( tr("General..."), this , SLOT(slotPrefsOrg()));
3 paul 565
        SetKeyEntry(18, tr("Preferences..."), MenID, 0);
112 Franz 566
        MenID = hymen->insertItem( tr("Fonts..."), this , SLOT(slotFontOrg()));
3 paul 567
        SetKeyEntry(17, tr("Fonts..."), MenID, 0);
112 Franz 568
        hymen->insertItem( tr("Hyphenator..."), this, SLOT(configHyphenator()));
569
        editMenu->insertItem( tr("Preferences"), hymen);
3 paul 570
        editMenu->setItemEnabled(edUndo, 0);
571
        editMenu->setItemEnabled(edid1, 0);
572
        editMenu->setItemEnabled(edid2, 0);
573
        editMenu->setItemEnabled(edid3, 0);
574
        editMenu->setItemEnabled(edid4, 0);
575
        editMenu->setItemEnabled(edid5, 0);
576
        editMenu->setItemEnabled(edid6, 0);
27 Franz 577
        editMenu->setItemEnabled(edid6a, 0);
3 paul 578
        editMenu->setItemEnabled(tman, 0);
579
        editMenu->setItemEnabled(jman, 0);
580
        StilMenu = new QPopupMenu();
581
        ObjMenu = new QPopupMenu();
68 Franz 582
        SetKeyEntry(19, tr("Select New Font"), 0, 0);
112 Franz 583
        MenID = ObjMenu->insertItem( tr("Duplicate"), this, SLOT(ObjektDup()), CTRL+Key_D);
3 paul 584
        SetKeyEntry(20, tr("Duplicate"), MenID, CTRL+Key_D);
112 Franz 585
        MenID = ObjMenu->insertItem( tr("Multiple Duplicate"), this, SLOT(ObjektDupM()));
3 paul 586
        SetKeyEntry(21, tr("Multiple Duplicate"), MenID, 0);
112 Franz 587
        Loesch = ObjMenu->insertItem( tr("Delete"), this, SLOT(DeleteObjekt()), CTRL+Key_K);
3 paul 588
        SetKeyEntry(22, tr("Delete"), Loesch, CTRL+Key_K);
589
        ObjMenu->insertSeparator();
112 Franz 590
        Gr = ObjMenu->insertItem( tr("Group"), this, SLOT(GroupObj()), CTRL+Key_G);
3 paul 591
        SetKeyEntry(23, tr("Group"), Gr, CTRL+Key_G);
112 Franz 592
        UnGr = ObjMenu->insertItem( tr("Un-group"), this, SLOT(UnGroupObj()),CTRL+Key_U);
74 Franz 593
        SetKeyEntry(24, tr("Un-group"), UnGr, CTRL+Key_U);
112 Franz 594
        LockOb = ObjMenu->insertItem( tr("Lock"), this, SLOT(ToggleObjLock()), CTRL+Key_H);
3 paul 595
        ObjMenu->insertSeparator();
112 Franz 596
        OBack = ObjMenu->insertItem( tr("Send to Back"), this, SLOT(Objekt2Back()));
3 paul 597
        SetKeyEntry(25, tr("Send to Back"), OBack, 0);
112 Franz 598
        OFront = ObjMenu->insertItem( tr("Bring to Front"), this, SLOT(Objekt2Front()));
3 paul 599
        SetKeyEntry(26, tr("Bring to Front"), OFront, 0);
112 Franz 600
        OLower = ObjMenu->insertItem( tr("Lower"), this, SLOT(ObjektLower()));
3 paul 601
        SetKeyEntry(27, tr("Lower"), OLower, 0);
112 Franz 602
        ORaise = ObjMenu->insertItem( tr("Raise"), this, SLOT(ObjektRaise()));
3 paul 603
        SetKeyEntry(28, tr("Raise"), ORaise, 0);
112 Franz 604
        DistM = ObjMenu->insertItem( tr("Distribute/Align..."), this, SLOT(ObjektAlign()));
3 paul 605
        SetKeyEntry(29, tr("Distribute/Align..."), DistM, 0);
606
        ObjMenu->insertSeparator();
607
        ShapeMenu = new QPopupMenu();
112 Franz 608
        ShapeMenu->insertItem( tr("Rectangle"), this, SLOT(RectFrame()));
609
        ShapeMenu->insertItem( tr("Rounded Rectangle"), this, SLOT(RoundedFrame()));
610
        ShapeMenu->insertItem( tr("Oval"), this, SLOT(OvalFrame()));
611
        ShapeEdit = ShapeMenu->insertItem( tr("Edit Frame"), this, SLOT(ToggleFrameEdit()));
612
        ShapeM = ObjMenu->insertItem( tr("Shape"), ShapeMenu);
613
        PfadT = ObjMenu->insertItem( tr("Attach Text to Path"), this, SLOT(Pfadtext()));
614
        PfadV = ObjMenu->insertItem( tr("Combine Polygons"), this, SLOT(UniteOb()));
615
        PfadS = ObjMenu->insertItem( tr("Split Polygons"), this, SLOT(SplitUniteOb()));
616
        PfadTP = ObjMenu->insertItem( tr("Convert to Outlines"), this, SLOT(TraceText()));
3 paul 617
        ObjMenu->setItemEnabled(ShapeM, 0);
618
        ObjMenu->setItemEnabled(DistM, 0);
619
        ObjMenu->setItemEnabled(Gr, 0);
620
        ObjMenu->setItemEnabled(UnGr, 0);
621
        ObjMenu->setItemEnabled(PfadT, 0);
622
        ObjMenu->setItemEnabled(PfadV, 0);
623
        ObjMenu->setItemEnabled(PfadS, 0);
624
        ObjMenu->setItemEnabled(LockOb, 0);
625
        ObjMenu->setItemEnabled(PfadTP, 0);
626
        pageMenu = new QPopupMenu();
112 Franz 627
        MenID = pageMenu->insertItem( tr("Insert..."), this, SLOT(slotNewPageM()));
3 paul 628
        SetKeyEntry(30, tr("Insert..."), MenID, 0);
112 Franz 629
        pgmd = pageMenu->insertItem( tr("Delete..."), this, SLOT(DeletePage()));
3 paul 630
        SetKeyEntry(31, tr("Delete..."), pgmd, 0);
112 Franz 631
        MenID = pageMenu->insertItem( tr("Copy")+"...", this, SLOT(CopyPage()));
3 paul 632
        SetKeyEntry(61, tr("Copy")+"...", MenID, 0);
112 Franz 633
        pgmv = pageMenu->insertItem( tr("Move..."), this, SLOT(MovePage()));
3 paul 634
        SetKeyEntry(32, tr("Move..."), pgmv, 0);
112 Franz 635
        MenID = pageMenu->insertItem( tr("Apply Template..."), this, SLOT(ApplyTemp()));
3 paul 636
        SetKeyEntry(33, tr("Apply Template..."), MenID, 0);
112 Franz 637
        MenID = pageMenu->insertItem( tr("Manage Guides..."), this, SLOT(ManageGuides()));
3 paul 638
        SetKeyEntry(49, tr("Manage Guides..."), MenID, 0);
639
        pageMenu->setItemEnabled(pgmd, 0);
640
        pageMenu->setItemEnabled(pgmv, 0);
641
        viewMenu=new QPopupMenu();
112 Franz 642
        MenID = viewMenu->insertItem( tr("Fit in Window"), this, SLOT(slotZoomFit()), CTRL+Key_0);
3 paul 643
        SetKeyEntry(34, tr("Fit in Window"), MenID, CTRL+Key_0);
644
        MenID = viewMenu->insertItem("50%", this, SLOT(slotZoom50()));
645
        SetKeyEntry(35, tr("50%"), MenID, 0);
646
        MenID = viewMenu->insertItem("75%", this, SLOT(slotZoom75()));
647
        SetKeyEntry(36, tr("75%"), MenID, 0);
112 Franz 648
        MenID = viewMenu->insertItem( tr("Actual Size"), this, SLOT(slotZoom100()), CTRL+Key_1);
3 paul 649
        SetKeyEntry(37, tr("Actual Size"), MenID, CTRL+Key_1);
650
        MenID = viewMenu->insertItem("200%", this, SLOT(slotZoom200()));
651
        SetKeyEntry(38, tr("200%"), MenID, 0);
112 Franz 652
        MenID = viewMenu->insertItem( tr("Thumbnails"), this, SLOT(slotZoom20()));
3 paul 653
        SetKeyEntry(39, tr("Thumbnails"), MenID, 0);
654
        viewMenu->insertSeparator();
112 Franz 655
        Markers = viewMenu->insertItem( tr("Hide Margins"), this, SLOT(ToggleMarks()));
3 paul 656
        SetKeyEntry(40, tr("Hide Margins"), Markers, 0);
112 Franz 657
        FrameDr = viewMenu->insertItem( tr("Hide Frames"), this, SLOT(ToggleFrames()));
3 paul 658
        SetKeyEntry(41, tr("Hide Frames"), FrameDr, 0);
112 Franz 659
        Bilder = viewMenu->insertItem( tr("Hide Images"), this, SLOT(TogglePics()));
3 paul 660
        SetKeyEntry(42, tr("Hide Images"), Bilder, 0);
112 Franz 661
        Ras = viewMenu->insertItem( tr("Show Grid"), this, SLOT(ToggleRaster()));
3 paul 662
        SetKeyEntry(43, tr("Show Grid"), Ras, 0);
112 Franz 663
        uRas = viewMenu->insertItem( tr("Snap to Grid"), this, SLOT(ToggleURaster()));
3 paul 664
        SetKeyEntry(44, tr("Snap to Grid"), uRas, 0);
112 Franz 665
        Guide = viewMenu->insertItem( tr("Hide Guides"), this, SLOT(ToggleGuides()));
666
        uGuide = viewMenu->insertItem( tr("Snap to Guides"), this, SLOT(ToggleUGuides()));
3 paul 667
        for (a=0; a<6; ++a)
668
                {
669
                viewMenu->setItemEnabled(viewMenu->idAt(a), 0);
670
                }
671
        viewMenu->setItemEnabled(Markers, 0);
672
        viewMenu->setItemEnabled(FrameDr, 0);
673
        viewMenu->setItemEnabled(Bilder, 0);
674
        viewMenu->setItemEnabled(Ras, 0);
675
        viewMenu->setItemEnabled(uRas, 0);
676
        viewMenu->setItemEnabled(Guide, 0);
677
        viewMenu->setItemEnabled(uGuide, 0);
678
        toolMenu=new QPopupMenu();
119 Franz 679
        viewTools = toolMenu->insertItem( tr("Tools"), this, SLOT(ToggleTools()));
680
        SetKeyEntry(45, tr("Tools"), viewTools, 0);
681
        viewToolsP = toolMenu->insertItem( tr("PDF-Tools"), this, SLOT(TogglePDFTools()));
682
        viewMpal = toolMenu->insertItem( tr("Properties"), this, SLOT(ToggleMpal()));
683
        SetKeyEntry(46, tr("Properties"), viewMpal, 0);
684
        viewTpal = toolMenu->insertItem( tr("Outline"), this, SLOT(ToggleTpal()));
685
        SetKeyEntry(47, tr("Outline"), viewTpal, 0);
686
        viewBpal = toolMenu->insertItem( tr("Scrapbook"), this, SLOT(ToggleBpal()));
687
        SetKeyEntry(48, tr("Scrapbook"), viewBpal, 0);
688
        viewLpal = toolMenu->insertItem( tr("Layers"), this, SLOT(ToggleLpal()));
689
        viewSepal = toolMenu->insertItem( tr("Page Palette"), this, SLOT(ToggleSepal()));
690
        viewBopal = toolMenu->insertItem( tr("Bookmarks"), this, SLOT(ToggleBookpal()));
3 paul 691
        extraMenu=new QPopupMenu();
112 Franz 692
        MenID = extraMenu->insertItem( tr("Manage Pictures"), this, SLOT(StatusPic()));
3 paul 693
        SetKeyEntry(51, tr("Manage Pictures"), MenID, 0);
112 Franz 694
        hyph = extraMenu->insertItem( tr("Hyphenate Text"), this, SLOT(doHyphenate()));
3 paul 695
        extraMenu->setItemEnabled(hyph, 0);
696
        SetKeyEntry(50, tr("Hyphenate Text"), hyph, 0);
697
        windowsMenu = new QPopupMenu();
698
        windowsMenu->setCheckable( true );
699
        connect(windowsMenu, SIGNAL(aboutToShow()), this, SLOT(windowsMenuAboutToShow()));
700
        helpMenu=new QPopupMenu();
112 Franz 701
        MenID = helpMenu->insertItem( tr("About Scribus"), this, SLOT(slotHelpAbout()));
3 paul 702
        SetKeyEntry(52, tr("About Scribus"), MenID, 0);
112 Franz 703
        MenID = helpMenu->insertItem( tr("About Qt"), this, SLOT(slotHelpAboutQt()));
3 paul 704
        SetKeyEntry(53, tr("About Qt"), MenID, 0);
705
        helpMenu->insertSeparator();
112 Franz 706
        MenID = helpMenu->insertItem( tr("Online-Help..."), this, SLOT(slotOnlineHelp()));
3 paul 707
        SetKeyEntry(54, tr("Online-Help..."), MenID, 0);
112 Franz 708
        tip = helpMenu->insertItem( tr("Tool-Tips"), this, SLOT(ToggleTips()));
3 paul 709
        SetKeyEntry(55, tr("Tool-Tips"), tip, 0);
710
  tipsOn = true;
711
  helpMenu->setItemChecked(tip, tipsOn);
119 Franz 712
//      editMenu->insertItem( tr("Test"), this, SLOT(slotTest()));
112 Franz 713
//      helpMenu->insertItem( tr("Test2"), this, SLOT(slotTest2()));
714
        menuBar()->insertItem( tr("File"), fileMenu);
715
        menuBar()->insertItem( tr("Edit"), editMenu);
716
        Stm = menuBar()->insertItem( tr("Style"), StilMenu);
717
        Obm = menuBar()->insertItem( tr("Item"), ObjMenu);
718
        pgmm = menuBar()->insertItem( tr("Page"), pageMenu);
3 paul 719
        menuBar()->setItemEnabled(Obm, 0);
720
        menuBar()->setItemEnabled(pgmm, 0);
112 Franz 721
        menuBar()->insertItem( tr("View"), viewMenu);
722
        menuBar()->insertItem( tr("Tools"), toolMenu);
723
        exmn = menuBar()->insertItem( tr("Extras"), extraMenu);
3 paul 724
        menuBar()->setItemEnabled(exmn, 0);
725
        menuBar()->insertItem( tr("Windows"), windowsMenu );
726
        menuBar()->insertSeparator();
112 Franz 727
        menuBar()->insertItem( tr("Help"), helpMenu);
3 paul 728
        AliMenu = new QPopupMenu();
112 Franz 729
        AliMenu->insertItem( tr("Left"));
730
        AliMenu->insertItem( tr("Center"));
731
        AliMenu->insertItem( tr("Right"));
732
        AliMenu->insertItem( tr("Block"));
733
        AliMenu->insertItem( tr("Forced"));
3 paul 734
        ColorMenu = new QPopupMenu();
735
        SizeTMenu = new QPopupMenu();
112 Franz 736
        SizeTMenu->insertItem( tr("Other..."));
3 paul 737
        SizeTMenu->insertItem(" 7 pt");
738
        SizeTMenu->insertItem(" 9 pt");
739
        SizeTMenu->insertItem("10 pt");
740
        SizeTMenu->insertItem("12 pt");
741
        SizeTMenu->insertItem("14 pt");
742
        SizeTMenu->insertItem("18 pt");
743
        SizeTMenu->insertItem("24 pt");
744
        SizeTMenu->insertItem("36 pt");
745
        SizeTMenu->insertItem("48 pt");
746
        SizeTMenu->insertItem("60 pt");
747
        SizeTMenu->insertItem("72 pt");
748
        ShadeMenu = new QPopupMenu();
112 Franz 749
        ShadeMenu->insertItem( tr("Other..."));
3 paul 750
        ShadeMenu->insertItem("0 %");
751
        ShadeMenu->insertItem("10 %");
752
        ShadeMenu->insertItem("20 %");
753
        ShadeMenu->insertItem("30 %");
754
        ShadeMenu->insertItem("40 %");
755
        ShadeMenu->insertItem("50 %");
756
        ShadeMenu->insertItem("60 %");
757
        ShadeMenu->insertItem("70 %");
758
        ShadeMenu->insertItem("80 %");
759
        ShadeMenu->insertItem("90 %");
760
        ShadeMenu->insertItem("100 %");
761
        FontMenu = new QPopupMenu();
762
        TypeStyleMenu = new QPopupMenu();
112 Franz 763
        TypeStyleMenu->insertItem( tr("Normal"));
3 paul 764
        tmp = qApp->font();
765
        tmp = qApp->font();
766
        tmp.setUnderline(true);
112 Franz 767
        TypeStyleMenu->insertItem(new FmItem( tr("Underline"), tmp));
3 paul 768
        tmp = qApp->font();
769
        tmp.setStrikeOut(true);
112 Franz 770
        TypeStyleMenu->insertItem(new FmItem( tr("Strikethru"), tmp));
771
        TypeStyleMenu->insertItem( tr("Small Caps"));
772
        TypeStyleMenu->insertItem( tr("Superscript"));
773
        TypeStyleMenu->insertItem( tr("Subscript"));
774
        TypeStyleMenu->insertItem( tr("Outlined"));
3 paul 775
}
776
 
777
void ScribusApp::initStatusBar()
778
{
779
        FMess = new QLabel(statusBar(), "ft");
780
        FMess->setText("           ");
781
        statusBar()->addWidget(FMess, 3, true);
782
        FProg = new QProgressBar(statusBar(), "p");
783
  FProg->setCenterIndicator(true);
784
        FProg->setFixedWidth( 100 );
785
        statusBar()->addWidget(FProg, 0, true);
786
        FProg->reset();
787
        XMess = new QLabel(statusBar(), "xt");
112 Franz 788
        XMess->setText( tr("X-Pos:"));
3 paul 789
        statusBar()->addWidget(XMess, 0, true);
790
        XDat = new QLabel(statusBar(), "dt");
791
        statusBar()->addWidget(XDat, 1, true);
792
        XDat->setText("         ");
793
        YMess = new QLabel(statusBar(), "yt");
112 Franz 794
        YMess->setText( tr("Y-Pos:"));
3 paul 795
        statusBar()->addWidget(YMess, 0, true);
796
        YDat = new QLabel(statusBar(), "ydt");
797
        statusBar()->addWidget(YDat, 1, true);
80 Franz 798
        YDat->setText("         ");
3 paul 799
}
800
 
80 Franz 801
void ScribusApp::ReportMP(double xp, double yp)
3 paul 802
{
803
        QString tmp, tmp2;
804
        switch (doc->Einheit)
805
                {
806
                case 0:
807
                        tmp2 = " pt";
808
                        break;
809
                case 1:
810
                        tmp2 = " mm";
811
                        break;
812
                case 2:
813
                        tmp2 = " in";
814
                        break;
815
                case 3:
816
                        tmp2 = " p";
817
                        break;
818
                }
819
        XDat->setText(tmp.setNum(qRound(xp*UmReFaktor * 100) / 100.0, 'f', 2)+tmp2);
820
        YDat->setText(tmp.setNum(qRound(yp*UmReFaktor * 100) / 100.0, 'f', 2)+tmp2);
821
}
822
 
823
void ScribusApp::SetKeyEntry(int Nr, QString text, int Men, int KeyC)
824
{
825
        Keys ke;
826
        ke.Name = text;
827
        ke.MenuID = Men;
828
        ke.KeyID = KeyC;
829
        Prefs.KeyActions.insert(Nr, ke);
830
}
831
 
832
void ScribusApp::DeleteSel(PageItem *b)
833
{
834
        Pti *it;
835
        for (it = b->Ptext.first(); it != 0; it = b->Ptext.next())
836
                {
837
                if (it->cselect)
838
                        {
839
                        b->Ptext.remove();
840
                        it = b->Ptext.prev();
841
                        if (it == 0)
842
                                {
843
                                it = b->Ptext.first();
844
                                }
845
                        }
846
                }
847
        if (b->Ptext.count() != 0)
848
                {
849
                if (b->Ptext.first()->cselect)
850
                        {
851
                        b->Ptext.remove();
852
                        b->CPos = 0;
853
                        }
854
                else
855
                        b->CPos = QMIN(b->CPos, doc->ActPage->oldCp);
856
                }
857
        else
858
                b->CPos = 0;
859
        b->HasSel = false;
860
        DisableTxEdit();
861
}
862
 
863
void ScribusApp::setTBvals(PageItem *b)
864
{
865
        if (b->Ptext.count() != 0)
866
                {
867
                doc->CurrentStyle = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cstyle & 127;
868
                doc->CurrentABStil = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cab;
869
                setAbsValue(doc->CurrentABStil);
870
                Mpal->setAli(doc->CurrentABStil);
68 Franz 871
                doc->CurrFont = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cfont;
872
                doc->CurrFontSize = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->csize;
873
                doc->CurrTextFill = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->ccolor;
874
                doc->CurrTextFillSh = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cshade;
875
                doc->CurrTextStroke = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cstroke;
876
                doc->CurrTextStrokeSh = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cshade2;
877
                doc->CurrTextScale = b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cscale;
878
                emit TextFarben(doc->CurrTextStroke, doc->CurrTextFill, doc->CurrTextStrokeSh, doc->CurrTextFillSh);
879
                emit TextIFont(doc->CurrFont);
880
                emit TextISize(doc->CurrFontSize);
881
                emit TextUSval(b->Ptext.at(QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1)))->cextra);
882
                emit TextStil(doc->CurrentStyle);
883
                emit TextScale(doc->CurrTextScale);
3 paul 884
                }
885
}
886
 
887
void ScribusApp::wheelEvent(QWheelEvent *w)
888
{
889
        if (HaveDoc)
890
                {
891
                if (w->delta() < 0)
892
                        view->scrollBy(0, Prefs.Wheelval);
893
                else
894
                        view->scrollBy(0, -Prefs.Wheelval);
895
                w->accept();
896
                }
897
}
898
 
899
void ScribusApp::keyPressEvent(QKeyEvent *k)
900
{
901
        struct Pti *hg;
902
        int kk = k->key();
903
        int as = k->ascii();
80 Franz 904
        double altx, alty;
3 paul 905
        QString uc = k->text();
906
        QString cr, Tcha, Twort;
907
        uint Tcoun;
92 Franz 908
        if (keyrep)
909
                return;
910
        keyrep = true;
3 paul 911
        switch (k->state())
912
                {
913
                case ShiftButton:
914
                        KeyMod = 0x00200000;
915
                        break;
916
                case AltButton:
917
                        KeyMod = 0x00800000;
918
                        break;
919
                case ControlButton:
920
                        KeyMod = 0x00400000;
921
                        break;
922
                default:
923
                        KeyMod = 0;
924
                }
925
        if ((HaveDoc) && (!view->LE->hasFocus()))
926
                {
927
                switch (kk)
928
                        {
929
                        case Key_Prior:
930
                                view->scrollBy(0, -Prefs.Wheelval);
92 Franz 931
                                keyrep = false;
3 paul 932
                                return;
933
                                break;
934
                        case Key_Next:
935
                                view->scrollBy(0, Prefs.Wheelval);
92 Franz 936
                                keyrep = false;
3 paul 937
                                return;
938
                                break;
939
                        }
940
                if (doc->ActPage->SelItem.count() != 0)
941
                        {
942
                        PageItem *b = doc->ActPage->SelItem.at(0);
943
                        switch (doc->AppMode)
944
                                {
945
                                case 1:
946
                                        switch (kk)
947
                                                {
948
                                                case Key_Delete:
949
                                                        if (!doc->EditClip)
950
                                                                {
951
                                                                if (!b->Locked)
952
                                                                        doc->ActPage->DeleteItem();
953
                                                                }
954
                                                        break;
955
                                                case Key_Left:
956
                                                        if (!k->isAutoRepeat())
957
                                                                {
958
                                                                doc->ActPage->storeUndoInf(b);
959
                                                                doc->UnData.UnCode = 1;
960
                                                                doc->UnDoValid = true;
961
                                                                CanUndo();
962
                                                                }
963
                                                        if (!b->Locked)
964
                                                                doc->ActPage->moveGroup(-1, 0);
965
                                                        break;
966
                                                case Key_Right:
967
                                                        if (!k->isAutoRepeat())
968
                                                                {
969
                                                                doc->ActPage->storeUndoInf(b);
970
                                                                doc->UnData.UnCode = 1;
971
                                                                doc->UnDoValid = true;
972
                                                                CanUndo();
973
                                                                }
974
                                                        if (!b->Locked)
975
                                                                doc->ActPage->moveGroup(1, 0);
976
                                                        break;
977
                                                case Key_Up:
978
                                                        if (!k->isAutoRepeat())
979
                                                                {
980
                                                                doc->ActPage->storeUndoInf(b);
981
                                                                doc->UnData.UnCode = 1;
982
                                                                doc->UnDoValid = true;
983
                                                                CanUndo();
984
                                                                }
985
                                                        if (!b->Locked)
986
                                                                doc->ActPage->moveGroup(0, -1);
987
                                                        break;
988
                                                case Key_Down:
989
                                                        if (!k->isAutoRepeat())
990
                                                                {
991
                                                                doc->ActPage->storeUndoInf(b);
992
                                                                doc->UnData.UnCode = 1;
993
                                                                doc->UnDoValid = true;
994
                                                                CanUndo();
995
                                                                }
996
                                                        if (!b->Locked)
997
                                                                doc->ActPage->moveGroup(0, 1);
998
                                                default:
999
                                                        if (b->PType == 4)
1000
                                                                {
1001
                                                                if ((kk + KeyMod) == Prefs.KeyActions[59].KeyID)
1002
                                                                        {
1003
                                                                        setNewAbStyle(1);
1004
                                                                        b->Dirty = true;
1005
                                                                        b->Tinput = true;
68 Franz 1006
                                                                        doc->ActPage->RefreshItem(b);
3 paul 1007
                                                                        }
1008
                                                                if ((kk + KeyMod) == Prefs.KeyActions[58].KeyID)
1009
                                                                        {
1010
                                                                        setNewAbStyle(2);
1011
                                                                        b->Dirty = true;
1012
                                                                        b->Tinput = true;
68 Franz 1013
                                                                        doc->ActPage->RefreshItem(b);
3 paul 1014
                                                                        }
1015
                                                                if ((kk + KeyMod) == Prefs.KeyActions[57].KeyID)
1016
                                                                        {
1017
                                                                        setNewAbStyle(0);
1018
                                                                        b->Dirty = true;
1019
                                                                        b->Tinput = true;
68 Franz 1020
                                                                        doc->ActPage->RefreshItem(b);
3 paul 1021
                                                                        }
1022
                                                                }
1023
                                                        break;
1024
                                                }
1025
                                        slotDocCh();
1026
                                        break;
1027
                                case 7:
1028
                                        if (b->PType == 4)
1029
                                                {
1030
                                                doc->ActPage->slotDoCurs(false);
1031
                                                switch (kk)
1032
                                                        {
1033
                                                        case Key_Down:
1034
                                                                if (b->CPos != static_cast<int>(b->Ptext.count()))
1035
                                                                        {
1036
                                                                        alty = b->Ptext.at(b->CPos)->yp;
1037
                                                                        altx = b->Ptext.at(b->CPos)->xp;
1038
                                                                        do
1039
                                                                                {
1040
                                                                                b->CPos += 1;
1041
                                                                                if (b->CPos == static_cast<int>(b->Ptext.count()))
1042
                                                                                        break;
1043
                                                                                if (b->Ptext.at(b->CPos)->yp > alty)
1044
                                                                                        {
1045
                                                                                        if (b->Ptext.at(b->CPos)->xp >= altx)
1046
                                                                                                break;
1047
                                                                                        }
1048
                                                                                }
1049
                                                                        while (b->CPos < static_cast<int>(b->Ptext.count()));
1050
                                                                        if (b->CPos == static_cast<int>(b->Ptext.count()))
1051
                                                                                if (b->NextBox != 0)
1052
                                                                                        {
1053
                                                                                        if (b->NextBox->Ptext.count() != 0)
1054
                                                                                                {
1055
                                                                                                b->OwnPage->Deselect(true);
1056
                                                                                                b->NextBox->CPos = 0;
1057
                                                                                                doc->ActPage = b->NextBox->OwnPage;
1058
                                                                                                b->NextBox->OwnPage->SelectItemNr(b->NextBox->ItemNr);
1059
                                                                                                b = b->NextBox;
1060
                                                                                                }
80 Franz 1061
                                                                                        }
3 paul 1062
                                                                        }
1063
                                                                else
1064
                                                                        {
1065
                                                                        if (b->NextBox != 0)
1066
                                                                                {
1067
                                                                                if (b->NextBox->Ptext.count() != 0)
1068
                                                                                        {
1069
                                                                                        b->OwnPage->Deselect(true);
1070
                                                                                        b->NextBox->CPos = 0;
1071
                                                                                        doc->ActPage = b->NextBox->OwnPage;
1072
                                                                                        b->NextBox->OwnPage->SelectItemNr(b->NextBox->ItemNr);
1073
                                                                                        b = b->NextBox;
1074
                                                                                        }
1075
                                                                                }
1076
                                                                        }
1077
                                                                setTBvals(b);
1078
                                                                break;
1079
                                                        case Key_Up:
1080
                                                                if (b->CPos > 0)
1081
                                                                        {
1082
                                                                        if (b->CPos == static_cast<int>(b->Ptext.count()))
1083
                                                                                b->CPos -= 1;
1084
                                                                        alty = b->Ptext.at(b->CPos)->yp;
1085
                                                                        altx = b->Ptext.at(b->CPos)->xp;
1086
                                                                        if (b->CPos > 0)
1087
                                                                                {
1088
                                                                                do
1089
                                                                                        {
1090
                                                                                        b->CPos -= 1;
1091
                                                                                        if (b->CPos == 0)
1092
                                                                                                break;
1093
                                                                                        if (b->Ptext.at(b->CPos)->yp < alty)
1094
                                                                                                {
1095
                                                                                                if (b->Ptext.at(b->CPos)->xp <= altx)
1096
                                                                                                        break;
1097
                                                                                                }
1098
                                                                                        }
1099
                                                                                while (b->CPos > 0);
1100
                                                                                }
1101
                                                                        if (b->CPos == 0)
1102
                                                                                {
1103
                                                                                if (b->BackBox != 0)
1104
                                                                                        {
1105
                                                                                        b->OwnPage->Deselect(true);
1106
                                                                                        b->BackBox->CPos = b->BackBox->Ptext.count();
1107
                                                                                        doc->ActPage = b->BackBox->OwnPage;
1108
                                                                                        b->BackBox->OwnPage->SelectItemNr(b->BackBox->ItemNr);
1109
                                                                                        b = b->BackBox;
1110
                                                                                        }
1111
                                                                                }
1112
                                                                        }
1113
                                                                else
1114
                                                                        {
1115
                                                                        b->CPos = 0;
1116
                                                                        if (b->BackBox != 0)
1117
                                                                                {
1118
                                                                                b->OwnPage->Deselect(true);
1119
                                                                                b->BackBox->CPos = b->BackBox->Ptext.count();
1120
                                                                                doc->ActPage = b->BackBox->OwnPage;
1121
                                                                                b->BackBox->OwnPage->SelectItemNr(b->BackBox->ItemNr);
1122
                                                                                b = b->BackBox;
1123
                                                                                }
1124
                                                                        }
1125
                                                                setTBvals(b);
1126
                                                                break;
1127
                                                        case Key_Home:
1128
                                                                b->CPos = 0;
1129
                                                                setTBvals(b);
1130
                                                                break;
1131
                                                        case Key_End:
1132
                                                                b->CPos = static_cast<int>(b->Ptext.count());
1133
                                                                setTBvals(b);
1134
                                                                break;
1135
                                                        case Key_Left:
1136
                                                                b->CPos -= 1;
1137
                                                                if (b->CPos < 0)
1138
                                                                        {
1139
                                                                        b->CPos = 0;
1140
                                                                        if (b->BackBox != 0)
1141
                                                                                {
1142
                                                                                b->OwnPage->Deselect(true);
1143
                                                                                b->BackBox->CPos = b->BackBox->Ptext.count();
1144
                                                                                doc->ActPage = b->BackBox->OwnPage;
1145
                                                                                b->BackBox->OwnPage->SelectItemNr(b->BackBox->ItemNr);
1146
                                                                                b = b->BackBox;
1147
                                                                                }
1148
                                                                        }
1149
                                                                setTBvals(b);
1150
                                                                break;
1151
                                                        case Key_Right:
1152
                                                                b->CPos += 1;
1153
                                                                if (b->CPos > static_cast<int>(b->Ptext.count()))
1154
                                                                        {
1155
                                                                        b->CPos -= 1;
1156
                                                                        if (b->NextBox != 0)
1157
                                                                                {
1158
                                                                                if (b->NextBox->Ptext.count() != 0)
1159
                                                                                        {
1160
                                                                                        b->OwnPage->Deselect(true);
1161
                                                                                        b->NextBox->CPos = 0;
1162
                                                                                        doc->ActPage = b->NextBox->OwnPage;
1163
                                                                                        b->NextBox->OwnPage->SelectItemNr(b->NextBox->ItemNr);
1164
                                                                                        b = b->NextBox;
1165
                                                                                        }
1166
                                                                                }
1167
                                                                        }
1168
                                                                setTBvals(b);
1169
                                                                break;
1170
                                                        case Key_Delete:
122 Franz 1171
                                                                if (b->CPos == static_cast<int>(b->Ptext.count()))
1172
                                                                        {
1173
                                                                        keyrep = false;
1174
                                                                        return;
1175
                                                                        }
1176
                                                                if (b->Ptext.count() == 0)
1177
                                                                        {
1178
                                                                        keyrep = false;
1179
                                                                        return;
1180
                                                                        }
3 paul 1181
                                                                cr = b->Ptext.at(b->CPos)->ch;
1182
                                                                if (b->HasSel)
1183
                                                                        DeleteSel(b);
1184
                                                                else
1185
                                                                        b->Ptext.remove(b->CPos);
1186
                                                                b->Tinput = false;
1187
                                                                if ((cr == QChar(13)) && (b->Ptext.count() != 0))
1188
                                                                        {
1189
                                                                        doc->ActPage->chAbStyle(b, b->Ptext.at(QMAX(b->CPos-1,0))->cab);
1190
                                                                        b->Tinput = false;
1191
                                                                        }
1192
                                                                setTBvals(b);
1193
                                                                b->Dirty = true;
68 Franz 1194
                                                                doc->ActPage->RefreshItem(b);
3 paul 1195
                                                                break;
1196
                                                        case Key_Backspace:
1197
                                                                if (b->CPos == 0)
122 Franz 1198
                                                                        {
1199
                                                                        keyrep = false;
3 paul 1200
                                                                        return;
122 Franz 1201
                                                                        }
1202
                                                                if (b->Ptext.count() == 0)
1203
                                                                        {
1204
                                                                        keyrep = false;
1205
                                                                        return;
1206
                                                                        }
3 paul 1207
                                                                cr = b->Ptext.at(QMAX(b->CPos-1,0))->ch;
1208
                                                                if (b->HasSel)
1209
                                                                        DeleteSel(b);
1210
                                                                else
1211
                                                                        b->CPos -= 1;
1212
                                                                        b->Ptext.remove(b->CPos);
1213
                                                                b->Tinput = false;
1214
                                                                if ((cr == QChar(13)) && (b->Ptext.count() != 0))
1215
                                                                        {
1216
                                                                        doc->ActPage->chAbStyle(b, b->Ptext.at(QMAX(b->CPos-1,0))->cab);
1217
                                                                        b->Tinput = false;
1218
                                                                        }
1219
                                                                setTBvals(b);
1220
                                                                b->Dirty = true;
68 Franz 1221
                                                                doc->ActPage->RefreshItem(b);
3 paul 1222
                                                                break;
1223
                                                        default:
1224
                                                                if ((b->HasSel) && (kk < 0x1000))
1225
                                                                        {
1226
                                                                        DeleteSel(b);
1227
                                                                        b->Dirty = true;
68 Franz 1228
                                                                        doc->ActPage->RefreshItem(b);
3 paul 1229
                                                                        }
66 paul 1230
                                                                if (((kk + KeyMod) == Prefs.KeyActions[60].KeyID) || ((kk + KeyMod) == Prefs.KeyActions[67].KeyID))
3 paul 1231
                                                                        {
1232
                                                                        hg = new Pti;
55 Franz 1233
                                                                        if ((kk + KeyMod) == Prefs.KeyActions[60].KeyID)
1234
                                                                                hg->ch = QString(QChar(30));
1235
                                                                        else
1236
                                                                                hg->ch = QString(QChar(29));
68 Franz 1237
                                                                        hg->cfont = doc->CurrFont;
1238
                                                                        hg->csize = doc->CurrFontSize;
1239
                                                                        hg->ccolor = doc->CurrTextFill;
1240
                                                                        hg->cshade = doc->CurrTextFillSh;
1241
                                                                        hg->cstroke = doc->CurrTextStroke;
1242
                                                                        hg->cshade2 = doc->CurrTextStrokeSh;
1243
                                                                        hg->cscale = doc->CurrTextScale;
3 paul 1244
                                                                        hg->cselect = false;
1245
                                                                        hg->cstyle = doc->CurrentStyle;
1246
                                                                        hg->cab = doc->CurrentABStil;
1247
                                                                        if (doc->Vorlagen[doc->CurrentABStil].Font != "")
1248
                                                                                {
1249
                                                                                hg->cfont = doc->Vorlagen[doc->CurrentABStil].Font;
1250
                                                                                hg->csize = doc->Vorlagen[doc->CurrentABStil].FontSize;
1251
                                                                                }
68 Franz 1252
                                                                        hg->cextra = 0;
3 paul 1253
                                                                        hg->xp = 0;
1254
                                                                        hg->yp = 0;
1255
                                                                        hg->PRot = 0;
1256
                                                                        hg->PtransX = 0;
1257
                                                                        hg->PtransY = 0;
1258
                                                                        b->Ptext.insert(b->CPos, hg);
1259
                                                                        b->CPos += 1;
1260
                                                                        b->Dirty = true;
1261
                                                                        b->Tinput = true;
68 Franz 1262
                                                                        doc->ActPage->RefreshItem(b);
3 paul 1263
                                                                        break;
1264
                                                                        }
1265
                                                                if ((kk + KeyMod) == Prefs.KeyActions[56].KeyID)
1266
                                                                        {
1267
                                                                        b->Ptext.at(QMAX(b->CPos-1,0))->cstyle ^= 128;
1268
                                                                        b->Dirty = true;
1269
                                                                        b->Tinput = true;
68 Franz 1270
                                                                        doc->ActPage->RefreshItem(b);
3 paul 1271
                                                                        break;
1272
                                                                        }
1273
                                                                if ((kk + KeyMod) == Prefs.KeyActions[59].KeyID)
1274
                                                                        {
1275
                                                                        setNewAbStyle(1);
1276
                                                                        b->Dirty = true;
1277
                                                                        b->Tinput = true;
68 Franz 1278
                                                                        doc->ActPage->RefreshItem(b);
3 paul 1279
                                                                        break;
1280
                                                                        }
1281
                                                                if ((kk + KeyMod) == Prefs.KeyActions[57].KeyID)
1282
                                                                        {
1283
                                                                        setNewAbStyle(0);
1284
                                                                        b->Dirty = true;
1285
                                                                        b->Tinput = true;
68 Franz 1286
                                                                        doc->ActPage->RefreshItem(b);
3 paul 1287
                                                                        break;
1288
                                                                        }
1289
                                                                if ((kk + KeyMod) == Prefs.KeyActions[58].KeyID)
1290
                                                                        {
1291
                                                                        setNewAbStyle(2);
1292
                                                                        b->Dirty = true;
1293
                                                                        b->Tinput = true;
68 Franz 1294
                                                                        doc->ActPage->RefreshItem(b);
3 paul 1295
                                                                        break;
1296
                                                                        }
68 Franz 1297
                                                                if (((uc[0] > QChar(31)) || (as == 13) || (as == 30)) && ((*doc->AllFonts)[doc->CurrFont]->CharWidth.contains(uc[0].unicode())))
3 paul 1298
                                                                        {
1299
                                                                        hg = new Pti;
1300
                                                                        hg->ch = uc;
68 Franz 1301
                                                                        hg->cfont = doc->CurrFont;
1302
                                                                        hg->ccolor = doc->CurrTextFill;
1303
                                                                        hg->cshade = doc->CurrTextFillSh;
1304
                                                                        hg->cstroke = doc->CurrTextStroke;
1305
                                                                        hg->cshade2 = doc->CurrTextStrokeSh;
1306
                                                                        hg->cscale = doc->CurrTextScale;
1307
                                                                        hg->csize = doc->CurrFontSize;
3 paul 1308
                                                                        hg->cextra = 0;
1309
                                                                        hg->cselect = false;
1310
                                                                        hg->cstyle = doc->CurrentStyle;
1311
                                                                        hg->cab = doc->CurrentABStil;
1312
                                                                        if (doc->Vorlagen[doc->CurrentABStil].Font != "")
1313
                                                                                {
1314
                                                                                hg->cfont = doc->Vorlagen[doc->CurrentABStil].Font;
1315
                                                                                hg->csize = doc->Vorlagen[doc->CurrentABStil].FontSize;
1316
                                                                                }
1317
                                                                        hg->xp = 0;
1318
                                                                        hg->yp = 0;
1319
                                                                        hg->PRot = 0;
1320
                                                                        hg->PtransX = 0;
1321
                                                                        hg->PtransY = 0;
1322
                                                                        b->Ptext.insert(b->CPos, hg);
1323
                                                                        b->CPos += 1;
1324
                                                                        if ((doc->Trenner->AutoCheck) && (b->CPos > 1))
1325
                                                                                {
1326
                                                                                Twort = "";
1327
                                                                                Tcoun = 0;
1328
                                                                                for (int hych = b->CPos-1; hych > -1; hych--)
1329
                                                                                        {
1330
                                                                                        Tcha = b->Ptext.at(hych)->ch;
1331
                                                                                        if (Tcha == " ")
1332
                                                                                                {
1333
                                                                                                Tcoun = hych+1;
1334
                                                                                                break;
1335
                                                                                                }
1336
                                                                                        Twort.prepend(Tcha);
1337
                                                                                        }
1338
                                                                                if (Twort != "")
1339
                                                                                        {
68 Franz 1340
                                                                                        if (doc->Trenner->Language != b->Language)
1341
                                                                                                doc->Trenner->slotNewDict(b->Language);
3 paul 1342
                                                                                        doc->Trenner->slotHyphenateWord(b, Twort, Tcoun);
1343
                                                                                        b->Dirty = true;
1344
                                                                                        }
1345
                                                                                }
1346
                                                                        if ((b->CPos < static_cast<int>(b->Ptext.count())) || (as == 30))
1347
                                                                                b->Dirty = true;
1348
                                                                        b->Tinput = true;
92 Franz 1349
                                                                        doc->ActPage->RefreshItem(b, true);
3 paul 1350
                                                                        }
1351
                                                                break;
1352
                                                        }
1353
                                                if (b->Ptext.count() != 0)
1354
                                                        if (b->Ptext.at(QMAX(b->CPos-1, 0))->yp != 0)
1355
                                                                doc->ActPage->slotDoCurs(true);
1356
                                                if ((kk == Key_Left) || (kk == Key_Right) || (kk == Key_Up) || (kk == Key_Down))
92 Franz 1357
                                                        {
1358
                                                        keyrep = false;
3 paul 1359
                                                        return;
92 Franz 1360
                                                        }
3 paul 1361
                                                }
1362
                                        slotDocCh(false);
1363
                                        break;
1364
                                }
1365
                        }
1366
                }
92 Franz 1367
        keyrep = false;
3 paul 1368
}
1369
 
1370
void ScribusApp::closeEvent(QCloseEvent *ce)
1371
{
1372
        QWidgetList windows = wsp->windowList();
1373
        ScribusWin* tw;
1374
        if (!windows.isEmpty())
1375
                {
1376
                for ( int i = 0; i < static_cast<int>(windows.count()); ++i )
1377
                        {
1378
                        newActWin(windows.at(i));
1379
                        tw = ActWin;
1380
                        ActWin->close();
1381
                        if (tw == ActWin)
1382
                                {
1383
                                ce->ignore();
1384
                                return;
1385
                                }
1386
                        }
1387
                SavePrefs();
68 Franz 1388
                if ((Prefs.SaveAtQ) && (ScBook->Changed == true))
3 paul 1389
                        {
1390
                        if (ScBook->ScFilename.isEmpty())
1391
                                ScBook->ScFilename = PrefsPfad+"/scrap.scs";
1392
                        ScBook->Save();
1393
                        }
1394
                if (ScBook->BibWin->Objekte.count() == 0)
1395
                        system("rm -f " + PrefsPfad+"/scrap.scs");
1396
                Prefs.AvailFonts.~SCFonts();
1397
                FinalizePlugs();
1398
                exit(0);
1399
                }
1400
        else
1401
                {
1402
                SavePrefs();
68 Franz 1403
                if ((Prefs.SaveAtQ) && (ScBook->Changed == true))
3 paul 1404
                        {
1405
                        if (ScBook->ScFilename.isEmpty())
1406
                                ScBook->ScFilename = PrefsPfad+"/scrap.scs";
1407
                        ScBook->Save();
1408
                        }
1409
                if (ScBook->BibWin->Objekte.count() == 0)
1410
                        system("rm -f " + PrefsPfad+"/scrap.scs");
1411
                qApp->setOverrideCursor(QCursor(ArrowCursor), true);
1412
                Prefs.AvailFonts.~SCFonts();
1413
                FinalizePlugs();
1414
                exit(0);
1415
                }
1416
}
1417
 
1418
/////////////////////////////////////////////////////////////////////
1419
// SLOT IMPLEMENTATION
1420
/////////////////////////////////////////////////////////////////////
80 Franz 1421
double ScribusApp::mm2pts(int mm)
3 paul 1422
{
1423
        return mm / 25.4 * 72;
1424
}
1425
 
80 Franz 1426
double ScribusApp::pts2mm(double pts)
3 paul 1427
{
1428
        return pts / 72 * 25.4;
1429
}
1430
 
1431
bool ScribusApp::slotFileNew()
1432
{
80 Franz 1433
        double b, h, tpr, lr, rr, br, sp, ab;
3 paul 1434
        bool fp, atf, ret;
1435
        NewDoc* dia = new NewDoc(this, &Prefs);
1436
        if (dia->exec())
1437
                {
1438
                tpr = dia->Top;
1439
                lr = dia->Left;
1440
                rr = dia->Right;
1441
                br = dia->Bottom;
1442
                ab = dia->Dist;
1443
                b = dia->Pagebr;
1444
                h = dia->Pageho;
1445
                sp = dia->SpinBox10->value();
1446
                atf = dia->AutoFrame->isChecked();
1447
                fp = dia->Doppelseiten->isChecked();
1448
                if (dia->ComboBox3->currentItem() == 1)
1449
                        {
1450
                        b = mm2pts(qRound(pts2mm(dia->Pagebr)));
1451
                        h = mm2pts(qRound(pts2mm(dia->Pageho)));
1452
                        }
1453
                ret = doFileNew(b, h, tpr, lr, rr, br, ab, sp, atf, fp, dia->ComboBox3->currentItem(),
1454
                                                                                dia->ErsteSeite->isChecked(), dia->Orient, dia->PgNr->value());
112 Franz 1455
        FMess->setText( tr("Ready"));
3 paul 1456
                }
1457
        else
1458
                ret = false;
1459
        delete dia;
1460
        return ret;
1461
}
1462
 
80 Franz 1463
bool ScribusApp::doFileNew(double b, double h, double tpr, double lr, double rr, double br, double ab, double sp,
3 paul 1464
                                                                                                         bool atf, bool fp, int einh, bool firstleft, int Ori, int SNr)
1465
{
1466
        QString cc;
91 Franz 1467
        if (HaveDoc)
1468
                doc->OpenNodes = Tpal->buildReopenVals();
3 paul 1469
        doc = new ScribusDoc();
1470
        doc->Einheit = einh;
1471
        if (fp)
1472
                doc->FirstPageLeft = firstleft;
1473
        doc->PageOri = Ori;
1474
        doc->FirstPnum = SNr;
1475
        doc->AllFonts = &Prefs.AvailFonts;
1476
        doc->AddFont(Prefs.DefFont, Prefs.AvailFonts[Prefs.DefFont]->Font);
1477
        doc->Dfont = Prefs.DefFont;
1478
        doc->Dsize = Prefs.DefSize;
1479
        doc->GrabRad = Prefs.GrabRad;
1480
        doc->GuideRad = Prefs.GuideRad;
1481
        doc->minorGrid = Prefs.DminGrid;
1482
        doc->majorGrid = Prefs.DmajGrid;
1483
        doc->minorColor = Prefs.DminColor;
1484
        doc->majorColor = Prefs.DmajColor;
1485
        doc->papColor = Prefs.DpapColor;
1486
        doc->margColor = Prefs.DmargColor;
1487
        doc->guideColor = Prefs.guideColor;
1488
        doc->VHoch = Prefs.DVHoch;
1489
        doc->VHochSc = Prefs.DVHochSc;
1490
        doc->VTief = Prefs.DVTief;
1491
        doc->VTiefSc = Prefs.DVTiefSc;
1492
        doc->VKapit = Prefs.DVKapit;
1493
        doc->Dpen = Prefs.Dpen;
1494
        doc->DpenText = Prefs.DpenText;
1495
        doc->Dbrush = Prefs.Dbrush;
1496
        doc->Dshade = Prefs.Dshade;
1497
        doc->Dshade2 = Prefs.Dshade2;
1498
        doc->DLineArt = PenStyle(Prefs.DLineArt);
1499
        doc->Dwidth = Prefs.Dwidth;
1500
        doc->DpenLine = Prefs.DpenLine;
1501
        doc->DshadeLine = Prefs.DshadeLine;
1502
        doc->DLstyleLine = PenStyle(Prefs.DLstyleLine);
1503
        doc->DwidthLine = Prefs.DwidthLine;
1504
        doc->MagMin = Prefs.MagMin;
1505
        doc->MagMax = Prefs.MagMax;
1506
        doc->MagStep = Prefs.MagStep;
1507
        doc->DbrushPict = Prefs.DbrushPict;
1508
        doc->ShadePict = Prefs.ShadePict;
1509
        doc->ScaleX = Prefs.ScaleX;
1510
        doc->ScaleY = Prefs.ScaleY;
1511
        doc->ScaleType = Prefs.ScaleType;
1512
        doc->AspectRatio = Prefs.AspectRatio;
1513
        doc->Before = Prefs.Before;
1514
        doc->PagesSbS = Prefs.PagesSbS;
1515
        doc->ShFrames = Prefs.ShFrames;
1516
        doc->RandFarbig = Prefs.RandFarbig;
1517
        doc->AutoLine = Prefs.AutoLine;
1518
        doc->DocName = doc->DocName+cc.setNum(DocNr);
1519
        doc->HasCMS = true;
1520
        doc->CMSSettings.DefaultInputProfile = Prefs.DCMSset.DefaultInputProfile;
1521
        doc->CMSSettings.DefaultInputProfile2 = Prefs.DCMSset.DefaultInputProfile2;
1522
        doc->CMSSettings.DefaultMonitorProfile = Prefs.DCMSset.DefaultMonitorProfile;
1523
        doc->CMSSettings.DefaultPrinterProfile = Prefs.DCMSset.DefaultPrinterProfile;
1524
        doc->CMSSettings.DefaultIntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
1525
        doc->CMSSettings.DefaultIntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
1526
        doc->CMSSettings.DefaultIntentMonitor2 = Prefs.DCMSset.DefaultIntentMonitor2;
1527
        doc->CMSSettings.SoftProofOn = Prefs.DCMSset.SoftProofOn;
1528
        doc->CMSSettings.GamutCheck = Prefs.DCMSset.GamutCheck;
117 Franz 1529
        doc->CMSSettings.BlackPoint = Prefs.DCMSset.BlackPoint;
3 paul 1530
        doc->CMSSettings.CMSinUse = Prefs.DCMSset.CMSinUse;
1531
        doc->PDF_Optionen.SolidProf = doc->CMSSettings.DefaultInputProfile2;
1532
        doc->PDF_Optionen.ImageProf = doc->CMSSettings.DefaultInputProfile;
1533
        doc->PDF_Optionen.PrintProf = doc->CMSSettings.DefaultPrinterProfile;
1534
        doc->PDF_Optionen.Intent = doc->CMSSettings.DefaultIntentMonitor;
1535
        doc->PDF_Optionen.Intent2 = doc->CMSSettings.DefaultIntentMonitor2;
1536
        doc->ActiveLayer = 0;
1537
        HaveDoc++;
1538
        DocNr++;
11 Franz 1539
        doc->Scale = 1.0*Prefs.DisScale;
3 paul 1540
        doc->AppMode = 1;
1541
        doc->Language = Prefs.Language;
1542
        doc->MinWordLen = Prefs.MinWordLen;
1543
        doc->Automatic = Prefs.Automatic;
1544
        doc->AutoCheck = Prefs.AutoCheck;
1545
        doc->PageColors = Prefs.DColors;
89 Franz 1546
        doc->loading = true;
3 paul 1547
        ScribusWin* w = new ScribusWin(wsp, doc);
1548
        view = new ScribusView(w, doc, &Prefs);
1549
        w->setView(view);
1550
        ActWin = w;
59 Franz 1551
        doc->WinHan = w;
3 paul 1552
        w->setCentralWidget(view);
1553
        connect(w, SIGNAL(Schliessen()), this, SLOT(DoFileClose()));
1554
        connect(w, SIGNAL(SaveAndClose()), this, SLOT(DoSaveClose()));
1555
        if (CMSavail)
1556
                {
1557
#ifdef HAVE_CMS
1558
                w->SoftProofing = Prefs.DCMSset.SoftProofOn;
1559
                w->Gamut = Prefs.DCMSset.GamutCheck;
1560
                CMSuse = Prefs.DCMSset.CMSinUse;
1561
                w->IntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
1562
                w->IntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
1563
                SoftProofing = Prefs.DCMSset.SoftProofOn;
1564
                Gamut = Prefs.DCMSset.GamutCheck;
1565
                IntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
1566
                IntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
1567
                w->OpenCMSProfiles(InputProfiles, MonitorProfiles, PrinterProfiles);
1568
                stdProof = w->stdProof;
1569
                stdTrans = w->stdTrans;
1570
                stdProofImg = w->stdProofImg;
1571
                stdTransImg = w->stdTransImg;
1572
                CMSoutputProf = doc->DocOutputProf;
1573
                CMSprinterProf = doc->DocPrinterProf;
1574
                if (static_cast<int>(cmsGetColorSpace(doc->DocInputProf)) == icSigRgbData)
1575
                        doc->CMSSettings.ComponentsInput2 = 3;
1576
                if (static_cast<int>(cmsGetColorSpace(doc->DocInputProf)) == icSigCmykData)
1577
                        doc->CMSSettings.ComponentsInput2 = 4;
1578
                if (static_cast<int>(cmsGetColorSpace(doc->DocInputProf)) == icSigCmyData)
1579
                        doc->CMSSettings.ComponentsInput2 = 3;
1580
                if (static_cast<int>(cmsGetColorSpace(doc->DocPrinterProf)) == icSigRgbData)
1581
                        doc->CMSSettings.ComponentsPrinter = 3;
1582
                if (static_cast<int>(cmsGetColorSpace(doc->DocPrinterProf)) == icSigCmykData)
1583
                        doc->CMSSettings.ComponentsPrinter = 4;
1584
                if (static_cast<int>(cmsGetColorSpace(doc->DocPrinterProf)) == icSigCmyData)
1585
                        doc->CMSSettings.ComponentsPrinter = 3;
1586
                doc->PDF_Optionen.SComp = doc->CMSSettings.ComponentsInput2;
80 Franz 1587
#endif
3 paul 1588
                if (Prefs.DCMSset.CMSinUse)
1589
                        RecalcColors();
1590
                }
1591
        doc->setPage(b, h, tpr, lr, rr, br, sp, ab, atf, fp);
91 Franz 1592
        doc->loading = false;
3 paul 1593
        slotNewPage(0);
91 Franz 1594
        doc->loading = true;
3 paul 1595
        HaveNewDoc();
1596
        view->Pages.at(0)->parentWidget()->hide();
1597
        view->DocPages = view->Pages;
1598
        view->Pages = view->MasterPages;
1599
        doc->PageC = view->MasterPages.count();
1600
        bool atfb = doc->PageAT;
1601
        doc->PageAT = false;
1602
        slotNewPage(0);
1603
        doc->PageAT = atfb;
1604
        view->MasterNames["Normal"] = 0;
1605
        view->Pages.at(0)->PageNam = "Normal";
1606
        view->Pages.at(0)->parentWidget()->hide();
1607
        view->MasterPages = view->Pages;
1608
        doc->PageC = view->DocPages.count();
1609
        view->Pages = view->DocPages;
1610
        doc->MasterP = false;
1611
        view->Pages.at(0)->MPageNam = "Normal";
1612
        view->Pages.at(0)->parentWidget()->show();
1613
        doc->setUnModified();
1614
        doc->loading = false;
1615
        doc->ActPage = view->Pages.at(0);
91 Franz 1616
        doc->OpenNodes.clear();
3 paul 1617
        Tpal->BuildTree(view);
1618
        Sepal->Rebuild();
1619
        BookPal->BView->clear();
1620
        if ( wsp->windowList().isEmpty() )
1621
                w->showMaximized();
1622
        else
1623
                w->show();
1624
        view->show();
81 Franz 1625
        connect(doc->ASaveTimer, SIGNAL(timeout()), w, SLOT(slotAutoSave()));
1626
        connect(w, SIGNAL(AutoSaved()), this, SLOT(slotAutoSaved()));
3 paul 1627
        doc->AutoSave = Prefs.AutoSave;
1628
        if (doc->AutoSave)
1629
                doc->ASaveTimer->start(Prefs.AutoSaveTime);
68 Franz 1630
        DatSav->setEnabled(false);
1631
        fileMenu->setItemEnabled(fid4, 0);
3 paul 1632
        return true;
1633
}
1634
 
1635
void ScribusApp::DoSaveClose()
1636
{
1637
        slotFileSaveAs();
1638
        DoFileClose();
1639
}
1640
 
1641
void ScribusApp::windowsMenuAboutToShow()
1642
{
1643
        windowsMenu->clear();
112 Franz 1644
        int cascadeId = windowsMenu->insertItem( tr("Cascade"), wsp, SLOT(cascade() ) );
1645
        int tileId = windowsMenu->insertItem( tr("Tile"), wsp, SLOT(tile() ) );
3 paul 1646
        if ( wsp->windowList().isEmpty() )
1647
                {
1648
                windowsMenu->setItemEnabled( cascadeId, false );
1649
                windowsMenu->setItemEnabled( tileId, false );
1650
                }
1651
        windowsMenu->insertSeparator();
1652
        QWidgetList windows = wsp->windowList();
1653
        for ( int i = 0; i < static_cast<int>(windows.count()); ++i )
1654
                {
1655
                int id = windowsMenu->insertItem(windows.at(i)->caption(), this, SLOT(windowsMenuActivated(int)));
1656
                windowsMenu->setItemParameter( id, i );
1657
                windowsMenu->setItemChecked( id, wsp->activeWindow() == windows.at(i) );
1658
                }
1659
}
1660
 
1661
void ScribusApp::newActWin(QWidget *w)
1662
{
1663
        ScribusWin* swin;
1664
        if (w == NULL)
1665
                {
1666
                ActWin = NULL;
1667
                return;
1668
                }
1669
        ActWin = (ScribusWin*)w;
91 Franz 1670
        if (doc != NULL)
1671
                {
1672
                if ((HaveDoc) && (doc != ActWin->doc))
1673
                        doc->OpenNodes = Tpal->buildReopenVals();
1674
                }
3 paul 1675
        doc = ActWin->doc;
1676
        view = ActWin->view;
1677
        Sepal->SetView(view);
1678
        if (!doc->loading)
1679
                {
1680
                SwitchWin();
1681
                QWidgetList windows = wsp->windowList();
1682
                for ( int i = 0; i < static_cast<int>(windows.count()); ++i )
1683
                        {
1684
                        swin = (ScribusWin*)windows.at(i);
1685
                        if (swin->muster != NULL)
1686
                                swin->muster->hide();
1687
                        }
1688
                if (doc->TemplateMode)
1689
                        ActWin->muster->show();
1690
                setAppMode(doc->AppMode);
1691
                }
1692
        w->setFocus();
1693
        if (w->isMaximized())
1694
                wsp->setScrollBarsEnabled(false);
1695
        else
1696
                wsp->setScrollBarsEnabled(true);
1697
        Sepal->Rebuild();
1698
        Tpal->BuildTree(view);
91 Franz 1699
        Tpal->reopenTree(doc->OpenNodes);
3 paul 1700
        BookPal->BView->NrItems = ActWin->NrItems;
1701
        BookPal->BView->First = ActWin->First;
1702
        BookPal->BView->Last = ActWin->Last;
1703
        RestoreBookMarks();
1704
}
1705
 
1706
void ScribusApp::windowsMenuActivated( int id )
1707
{
91 Franz 1708
        if (HaveDoc)
1709
                doc->OpenNodes = Tpal->buildReopenVals();
3 paul 1710
        QWidget* w = wsp->windowList().at( id );
1711
        if ( w )
1712
                w->showNormal();
1713
        newActWin(w);
1714
}
1715
 
1716
bool ScribusApp::SetupDoc()
1717
{
80 Franz 1718
        double tpr = doc->PageM.Top;
1719
        double lr = doc->PageM.Left;
1720
        double rr = doc->PageM.Right;
1721
        double br = doc->PageM.Bottom;
3 paul 1722
        bool fp = doc->PageFP;
1723
        bool fpe = doc->FirstPageLeft;
80 Franz 1724
        double tpr2, lr2, rr2, br2;
3 paul 1725
        bool ret = false;
36 Franz 1726
        ReformDoc* dia = new ReformDoc(this, tpr, lr, rr, br, doc->PageB, doc->PageH, fp, fpe, doc->Einheit);
3 paul 1727
        if (dia->exec())
1728
                {
1729
                tpr2 = dia->TopR->value() / UmReFaktor / 100.0;
1730
                lr2 = dia->LeftR->value() / UmReFaktor / 100.0;
1731
                rr2 = dia->RightR->value() / UmReFaktor / 100.0;
1732
                br2 = dia->BottomR->value() / UmReFaktor / 100.0;
1733
                fp = dia->Doppelseiten->isChecked();
1734
                if (fp)
1735
                        doc->FirstPageLeft = dia->ErsteSeite->isChecked();
1736
                doc->resetPage(tpr2, lr2, rr2, br2, fp);
1737
                view->reformPages();
1738
                doc->setModified();
1739
                view->GotoPage(doc->ActPage->PageNr);
1740
                view->DrawNew();
1741
                Sepal->RebuildPage();
1742
                ret = true;
1743
                doc->PDF_Optionen.BleedBottom = doc->PageM.Bottom;
1744
                doc->PDF_Optionen.BleedTop = doc->PageM.Top;
1745
                doc->PDF_Optionen.BleedLeft = doc->PageM.Left;
1746
                doc->PDF_Optionen.BleedRight = doc->PageM.Right;
1747
                }
1748
        delete dia;
1749
        return ret;
1750
}
1751
 
1752
void ScribusApp::SwitchWin()
1753
{
1754
        int a;
1755
        CListe::Iterator it;
1756
        QPixmap pm = QPixmap(15, 15);
1757
        a = 0;
1758
        ColorMenu->clear();
112 Franz 1759
        ColorMenu->insertItem( tr("None"));
3 paul 1760
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
1761
                {
1762
                pm.fill(doc->PageColors[it.key()].getRGBColor());
1763
                ColorMenu->insertItem(QIconSet(pm), it.key());
1764
                if (it.key() == doc->Dbrush)
1765
                        {
1766
                        ColorMenu->setItemChecked(ColorMenu->idAt(a), true);
1767
                        }
1768
                a++;
1769
                }
1770
        BuildFontMenu();
1771
#ifdef HAVE_CMS
1772
        SoftProofing = ActWin->SoftProofing;
1773
        Gamut = ActWin->Gamut;
1774
        IntentPrinter = ActWin->IntentPrinter;
1775
        IntentMonitor = ActWin->IntentMonitor;
1776
        stdProof = ActWin->stdProof;
1777
        stdTrans = ActWin->stdTrans;
1778
        stdProofImg = ActWin->stdProofImg;
1779
        stdTransImg = ActWin->stdTransImg;
1780
        CMSoutputProf = doc->DocOutputProf;
1781
        CMSprinterProf = doc->DocPrinterProf;
80 Franz 1782
#endif
3 paul 1783
        Mpal->Cpal->SetColors(doc->PageColors);
1784
        Mpal->Cpal->ChooseGrad(0);
112 Franz 1785
        ActWin->setCaption( tr(doc->DocName));
3 paul 1786
        ShadeMenu->setItemChecked(ShadeMenu->idAt(11), true);
1787
        Mpal->SetDoc(doc);
68 Franz 1788
        Mpal->updateCList();
3 paul 1789
        Sepal->SetView(view);
1790
        Mpal->Spal->SetFormats(doc);
27 Franz 1791
        Mpal->SetLineFormats(doc);
3 paul 1792
        Lpal->setLayers(&doc->Layers, &doc->ActiveLayer);
1793
        view->LaMenu();
1794
        view->setLayMenTxt(doc->ActiveLayer);
1795
        doc->CurrentABStil = 0;
51 Franz 1796
        slotChangeUnit(doc->Einheit, false);
3 paul 1797
        if (doc->EditClip)
1798
                {
1799
                doc->EditClip = !doc->EditClip;
1800
                ToggleFrameEdit();
1801
                }
1802
        if (doc->ShFrames)
1803
                viewMenu->changeItem(FrameDr, tr("Hide Frames"));
1804
        else
1805
                viewMenu->changeItem(FrameDr, tr("Show Frames"));
1806
        DatClo->setEnabled(true);
1807
        if (doc->TemplateMode)
1808
                {
1809
                menuBar()->setItemEnabled(pgmm, 0);
1810
                editMenu->setItemEnabled(tman, 0);
1811
                DatNeu->setEnabled(false);
1812
                DatSav->setEnabled(false);
1813
                DatOpe->setEnabled(false);
1814
                DatClo->setEnabled(false);
1815
                fileMenu->setItemEnabled(fid1, 0);
1816
                fileMenu->setItemEnabled(fid4, 0);
1817
                fileMenu->setItemEnabled(fid5, 0);
1818
                fileMenu->setItemEnabled(fid51, 0);
112 Franz 1819
                fileMenu->setItemEnabled(fid52, 0);
3 paul 1820
                fileMenu->setItemEnabled(fid12, 0);
1821
                fileMenu->setItemEnabled(fid13, 0);
1822
                fileMenu->setItemEnabled(fid14, 0);
1823
                Sepal->DisablePal();
1824
                }
1825
        else
1826
                {
1827
                menuBar()->setItemEnabled(pgmm, 1);
1828
                editMenu->setItemEnabled(tman, 1);
1829
                DatNeu->setEnabled(true);
1830
                DatOpe->setEnabled(true);
1831
                DatClo->setEnabled(true);
81 Franz 1832
                DatSav->setEnabled(doc->isModified());
3 paul 1833
                fileMenu->setItemEnabled(fid1, 1);
1834
                fileMenu->setItemEnabled(fid4, ActWin->MenuStat[2]);
1835
                fileMenu->setItemEnabled(fid5, ActWin->MenuStat[3]);
1836
                fileMenu->setItemEnabled(fid51, ActWin->MenuStat[3]);
112 Franz 1837
                fileMenu->setItemEnabled(fid52, 0);
3 paul 1838
                fileMenu->setItemEnabled(fid12, 1);
1839
                fileMenu->setItemEnabled(fid13, 1);
1840
                fileMenu->setItemEnabled(fid14, 1);
1841
                if (view->Pages.count() > 1)
1842
                        {
1843
                        pageMenu->setItemEnabled(pgmd, 1);
1844
                        pageMenu->setItemEnabled(pgmv, 1);
1845
                        }
1846
                else
1847
                        {
1848
                        pageMenu->setItemEnabled(pgmd, 0);
1849
                        pageMenu->setItemEnabled(pgmv, 0);
1850
                        }
1851
                if (doc->isModified())
1852
                        slotDocCh();
1853
                fileMenu->setItemEnabled(fid5, 1);
1854
                fileMenu->setItemEnabled(fid51, 1);
1855
                Sepal->EnablePal();
1856
                }
1857
}
1858
 
1859
void ScribusApp::HaveNewDoc()
1860
{
1861
        int a;
1862
        DatPri->setEnabled(true);
1863
        DatPDF->setEnabled(true);
68 Franz 1864
        DatSav->setEnabled(false);
3 paul 1865
        fileMenu->setItemEnabled(fid1, 1);
1866
        fileMenu->setItemEnabled(fid4, 0);
1867
        fileMenu->setItemEnabled(fid5, 1);
1868
        fileMenu->setItemEnabled(fid51, 1);
112 Franz 1869
        fileMenu->setItemEnabled(fid52, 0);
3 paul 1870
        fileMenu->setItemEnabled(fid6, 1);
1871
        fileMenu->setItemEnabled(fid7, 1);
1872
        exportMenu->setItemEnabled(fid8, 1);
1873
        importMenu->setItemEnabled(fid2a, 1);
1874
        fileMenu->setItemEnabled(fid9, 1);
55 Franz 1875
        exportMenu->setItemEnabled(fid10, 1);
3 paul 1876
        fileMenu->setItemEnabled(fid11, 1);
1877
        editMenu->setItemEnabled(edid1, 0);
1878
        editMenu->setItemEnabled(edid2, 0);
1879
        editMenu->setItemEnabled(edid3, 0);
1880
        editMenu->setItemEnabled(edid6, 1);
27 Franz 1881
        editMenu->setItemEnabled(edid6a, 1);
3 paul 1882
        for (a=0; a<6; ++a)
1883
                {
1884
                viewMenu->setItemEnabled(viewMenu->idAt(a),