Subversion Repositories Scribus

Rev

Rev 1232 | Rev 1236 | 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>
204 Franz 20
#include <qeventloop.h>
3 paul 21
#include <qcolordialog.h>
22
#include <qcolor.h>
23
#include <qiconset.h>
24
#include <qtextstream.h>
25
#include <qstylefactory.h>
26
#include <qregexp.h>
27
#include <qtextcodec.h>
28
#include <qcursor.h>
29
#include <qvbox.h>
1208 cbradney 30
#include <qpixmap.h>
31
#include <qkeysequence.h>
32
 
3 paul 33
#include <cstdio>
34
#include <cstdlib>
391 Franz 35
#include <cmath>
3 paul 36
#include <dlfcn.h>
135 Franz 37
#include <unistd.h>
3 paul 38
#include <iostream>
119 Franz 39
#include <signal.h>
80 Franz 40
#include <string>
1208 cbradney 41
 
42
 
3 paul 43
#include "scribus.h"
44
#include "scribus.moc"
45
#include "newfile.h"
46
#include "page.h"
47
#include "query.h"
48
#include "mdup.h"
49
#include "docinfo.h"
50
#include "reformdoc.h"
51
#include "serializer.h"
52
#include "align.h"
53
#include "fmitem.h"
54
#include "fontprefs.h"
55
#include "libprefs/prefs.h"
1158 cbradney 56
#include "prefstable.h"
3 paul 57
#include "pdfopts.h"
58
#include "inspage.h"
59
#include "delpages.h"
60
#include "movepage.h"
61
#include "helpbrowser.h"
62
#include "scribusXml.h"
63
#include "libabout/about.h"
910 fschmid 64
#include "libpostscript/pslib.h"
3 paul 65
#include "druck.h"
66
#include "editformats.h"
67
#include "muster.h"
68
#include "applytemplate.h"
69
#include "picstatus.h"
70
#include "customfdialog.h"
71
#include "cmsprefs.h"
72
#include "annot.h"
73
#include "annota.h"
74
#include "javadocs.h"
151 Franz 75
#include "colorm.h"
265 Franz 76
#include "mpalette.h"
284 Franz 77
#include "measurements.h"
364 Franz 78
#include "gtgettext.h"
506 fschmid 79
#include "fileloader.h"
740 fschmid 80
#include "arrowchooser.h"
788 fschmid 81
#include "tabtypography.h"
879 fschmid 82
#include "tabguides.h"
1194 fschmid 83
#include "tabtools.h"
1114 tsoots 84
#include "undogui.h"
1151 fschmid 85
#include "filewatcher.h"
1202 fschmid 86
#include "charselect.h"
1232 fschmid 87
#include "checkDocument.h"
1235 fschmid 88
#include "tabcheckdoc.h"
617 cbradney 89
#ifdef _MSC_VER
90
 #if (_MSC_VER >= 1200)
91
  #include "win-config.h"
92
 #endif
128 Franz 93
#else
94
 #include "config.h"
95
#endif
96
 
3 paul 97
#include "fpoint.h"
98
#include "fpointarray.h"
99
#include "hysettings.h"
100
#include "guidemanager.h"
284 Franz 101
#include "keymanager.h"
3 paul 102
#include "mergedoc.h"
27 Franz 103
#include "lineformats.h"
102 Franz 104
#include "story.h"
123 Franz 105
#include "autoform.h"
140 Franz 106
#include "tabmanager.h"
164 Franz 107
#include "search.h"
169 Franz 108
#include "fontcombo.h"
415 Franz 109
#include "prefsfile.h"
1114 tsoots 110
#include "undomanager.h"
731 fschmid 111
#include "polygonwidget.h"
766 cbradney 112
#include "werktoolb.h"
806 cbradney 113
#include "units.h"
838 cbradney 114
#include "hruler.h"
115
#include "vruler.h"
1208 cbradney 116
#include "scraction.h"
117
#include "menumanager.h"
134 Franz 118
 
3 paul 119
extern QPixmap loadIcon(QString nam);
90 Franz 120
extern bool overwrite(QWidget *parent, QString filename);
1065 cbradney 121
extern void CopyPageItem(struct CopyPasteBuffer *Buffer, PageItem *b);
203 Franz 122
extern void ReOrderText(ScribusDoc *doc, ScribusView *view);
204 Franz 123
extern int copyFile(QString source, QString target);
124
extern int moveFile(QString source, QString target);
3 paul 125
 
126
using namespace std;
127
 
128
#ifdef HAVE_CMS
129
cmsHPROFILE CMSoutputProf;
130
cmsHPROFILE CMSprinterProf;
131
cmsHTRANSFORM stdTrans;
132
cmsHTRANSFORM stdProof;
133
cmsHTRANSFORM stdTransImg;
272 Franz 134
cmsHTRANSFORM stdProofImg;
3 paul 135
bool SoftProofing;
136
bool Gamut;
137
bool CMSuse;
138
int IntentMonitor;
139
int IntentPrinter;
140
#endif
141
bool CMSavail;
142
ProfilesL InputProfiles;
80 Franz 143
double UmReFaktor;
3 paul 144
QString DocDir;
119 Franz 145
ScribusApp* ScApp;
415 Franz 146
PrefsFile* prefsFile;
3 paul 147
 
188 Franz 148
ScribusApp::ScribusApp()
272 Franz 149
{} // ScribusApp::ScribusApp()
188 Franz 150
 
767 cbradney 151
/*
152
 * retval 0 - ok, 1 - no fonts, ...
153
 */
154
int ScribusApp::initScribus(bool showSplash, const QString newGuiLanguage)
188 Franz 155
{
767 cbradney 156
        int retVal=0;
1155 fschmid 157
        ExternalApp = 0;
770 cbradney 158
        guiLanguage = newGuiLanguage;
767 cbradney 159
        initSplash(showSplash);
1208 cbradney 160
        setUsesBigPixmaps(true);
173 Franz 161
        ScApp = this;
355 Franz 162
        CurrStED = NULL;
272 Franz 163
        setCaption( tr("Scribus " VERSION));
118 Franz 164
        setKeyCompression(false);
272 Franz 165
        setIcon(loadIcon("AppIcon.png"));
1208 cbradney 166
        scrActions.clear();
167
        scrActions.setAutoDelete(true);
168
        scrDLLActions.clear();
169
        scrRecentFileActions.clear();
170
        scrRecentFileActions.setAutoDelete(true);
171
        scrMenuMgr = new MenuManager(this->menuBar());
766 cbradney 172
 
1197 tsoots 173
        PrefsPfad = getPreferencesLocation();
174
        prefsFile = new PrefsFile(QDir::convertSeparators(PrefsPfad + "/prefs13.xml"));
175
        convertToXMLPreferences(PrefsPfad);
176
 
272 Franz 177
        initMenuBar();
178
        initStatusBar();
766 cbradney 179
        initToolBars();
490 cbradney 180
        qApp->processEvents();
675 cbradney 181
 
3 paul 182
        BuFromApp = false;
1158 cbradney 183
 
767 cbradney 184
        initFonts();
185
 
272 Franz 186
        if (NoFonts)
767 cbradney 187
                retVal=1;
272 Franz 188
        else
189
        {
831 cbradney 190
                initDefaultValues();
777 fschmid 191
                buildFontMenu();
192
                initDefaultPrefs();
801 cbradney 193
                initArrowStyles();
1230 cbradney 194
                initKeyboardShortcuts();               
3 paul 195
                resize(610, 600);
272 Franz 196
                QVBox* vb = new QVBox( this );
197
                vb->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
198
                wsp = new QWorkspace( vb );
199
                setCentralWidget( vb );
3 paul 200
                connect(wsp, SIGNAL(windowActivated(QWidget *)), this, SLOT(newActWin(QWidget *)));
770 cbradney 201
 
801 cbradney 202
                initPalettes();
770 cbradney 203
 
1155 fschmid 204
                fileWatcher = new FileWatcher(this);
669 cbradney 205
                if (splashScreen != NULL)
206
                        splashScreen->setStatus( tr("Reading Preferences"));
490 cbradney 207
                qApp->processEvents();
68 Franz 208
                ReadPrefs();
801 cbradney 209
 
831 cbradney 210
                HaveGS = system(Prefs.gs_exe+" -h > /dev/null 2>&1");
211
                HavePngAlpha = system(Prefs.gs_exe+" -sDEVICE=pngalpha -c quit > /dev/null 2>&1");
212
                DocDir = Prefs.DocDir;
801 cbradney 213
 
669 cbradney 214
                if (splashScreen != NULL)
215
                        splashScreen->setStatus( tr("Getting ICC Profiles"));
831 cbradney 216
                CMSavail = false;
3 paul 217
                GetCMSProfiles();
803 cbradney 218
                initCMS();
831 cbradney 219
 
669 cbradney 220
                if (splashScreen != NULL)
221
                        splashScreen->setStatus( tr("Init Hyphenator"));
490 cbradney 222
                qApp->processEvents();
766 cbradney 223
                initHyphenator();
801 cbradney 224
 
669 cbradney 225
                if (splashScreen != NULL)
226
                        splashScreen->setStatus( tr("Reading Scrapbook"));
801 cbradney 227
                initScrapbook();
228
 
669 cbradney 229
                if (splashScreen != NULL)
230
                        splashScreen->setStatus( tr("Initializing Plugins"));
490 cbradney 231
                qApp->processEvents();
766 cbradney 232
                initPlugs();
1230 cbradney 233
 
234
                if (splashScreen != NULL)
235
                        splashScreen->setStatus( tr("Setting up Shortcuts"));
236
                qApp->processEvents();
237
                SetShortCut();
238
 
1208 cbradney 239
                connect(fileWatcher, SIGNAL(fileDeleted(QString )), this, SLOT(removeRecent(QString)));
3 paul 240
                connect(this, SIGNAL(TextIFont(QString)), this, SLOT(AdjustFontMenu(QString)));
241
                connect(this, SIGNAL(TextISize(int)), this, SLOT(setFSizeMenu(int)));
242
                connect(this, SIGNAL(TextISize(int)), Mpal, SLOT(setSize(int)));
80 Franz 243
                connect(this, SIGNAL(TextUSval(double)), Mpal, SLOT(setExtra(double)));
3 paul 244
                connect(this, SIGNAL(TextStil(int)), Mpal, SLOT(setStil(int)));
68 Franz 245
                connect(this, SIGNAL(TextScale(int)), Mpal, SLOT(setTScale(int)));
246
                connect(this, SIGNAL(TextFarben(QString, QString, int, int)), Mpal, SLOT(setActFarben(QString, QString, int, int)));
766 cbradney 247
 
801 cbradney 248
                initCrashHandler();
3 paul 249
        }
767 cbradney 250
        closeSplash();
251
        return retVal;
3 paul 252
}
253
 
767 cbradney 254
void ScribusApp::initSplash(bool showSplash)
255
{
256
        if (showSplash)
257
        {
258
                splashScreen = new SplashScreen();
259
                splashScreen->setStatus(QObject::tr("Initializing..."));
260
        }
261
        else
262
                splashScreen = NULL;
263
}
264
 
265
void ScribusApp::closeSplash()
266
{
267
        if (splashScreen!=NULL)
268
        {
269
                splashScreen->close();
270
                delete splashScreen;
271
                splashScreen = NULL;
272
        }
273
}
274
 
766 cbradney 275
void ScribusApp::initToolBars()
276
{
277
        WerkTools2 = new QToolBar( tr("File"), this);
1208 cbradney 278
        scrActions["fileNew"]->addTo(WerkTools2);
279
        scrActions["fileOpen"]->addTo(WerkTools2);
1210 cbradney 280
        scrMenuMgr->addMenuToWidgetOfAction("FileOpenRecent", scrActions["fileOpen"]);
1208 cbradney 281
        scrActions["fileSave"]->addTo(WerkTools2);
282
        scrActions["fileClose"]->addTo(WerkTools2);
283
        scrActions["filePrint"]->addTo(WerkTools2);
284
        scrActions["fileExportAsPDF"]->addTo(WerkTools2);
285
 
286
        scrActions["fileClose"]->setEnabled(false);
287
        scrActions["filePrint"]->setEnabled(false);
288
        scrActions["fileSave"]->setEnabled(false);
289
        scrActions["fileExportAsPDF"]->setEnabled(false);
1114 tsoots 290
 
291
        editToolBar = new QToolBar(tr("Edit"), this);
292
        UndoWidget* uWidget = new UndoWidget(editToolBar, "uWidget");
293
        UndoManager::instance()->registerGui(uWidget);
294
 
766 cbradney 295
        WerkTools = new WerkToolB(this);
296
        setDockEnabled(WerkTools, DockLeft, false);
297
        setDockEnabled(WerkTools, DockRight, false);
298
        WerkTools->Sichtbar = true;
299
        WerkTools->setEnabled(false);
300
        WerkToolsP = new WerkToolBP(this);
301
        setDockEnabled(WerkToolsP, DockLeft, false);
302
        setDockEnabled(WerkToolsP, DockRight, false);
303
        WerkToolsP->setEnabled(false);
304
        WerkToolsP->Sichtbar = true;
801 cbradney 305
 
306
        connect(WerkTools, SIGNAL(NewMode(int)), this, SLOT(ModeFromTB(int)));
307
        connect(WerkTools, SIGNAL(Schliessen()), this, SLOT(ToggleTools()));
308
        connect(WerkToolsP, SIGNAL(NewMode(int)), this, SLOT(ModeFromTB(int)));
309
        connect(WerkToolsP, SIGNAL(Schliessen()), this, SLOT(TogglePDFTools()));
766 cbradney 310
}
311
 
767 cbradney 312
void ScribusApp::initFonts()
313
{
314
        if (splashScreen!=NULL) {
315
                splashScreen->setStatus( tr("Searching for Fonts"));
316
                qApp->processEvents();
317
        }
318
        NoFonts=GetAllFonts();
319
        if (NoFonts)
320
        {
321
                if (splashScreen!=NULL)
322
                        splashScreen->close(); // 10/10/2004 pv fix #1200
323
                QString mess = tr("There are no Postscript fonts on your system");
324
                mess += "\n" + tr("Exiting now");
325
                QMessageBox::critical(this, tr("Fatal Error"), mess, 1, 0, 0);
326
        }
829 cbradney 327
        else
328
        if (splashScreen!=NULL)
329
        {
330
                splashScreen->setStatus( tr("Font System Initialized"));
331
                qApp->processEvents();
332
        }
767 cbradney 333
}
766 cbradney 334
 
770 cbradney 335
void ScribusApp::initDefaultPrefs()
336
{
337
        /** Default font and size **/
338
        SCFontsIterator it(Prefs.AvailFonts);
1194 fschmid 339
        Prefs.toolSettings.defFont = it.currentKey();
340
        Prefs.toolSettings.defSize = 120;
770 cbradney 341
        Prefs.AppFontSize = qApp->font().pointSize();
342
 
343
        /** Default colours **/
344
        Prefs.DColors.clear();
872 cbradney 345
        QString pfadC = LIBDIR;
346
        QString pfadC2 = pfadC + "rgbscribus.txt";
770 cbradney 347
        QFile fiC(pfadC2);
348
        if (!fiC.exists())
349
        {
350
                Prefs.DColors.insert("White", CMYKColor(0, 0, 0, 0));
351
                Prefs.DColors.insert("Black", CMYKColor(0, 0, 0, 255));
352
                Prefs.DColors.insert("Blue", CMYKColor(255, 255, 0, 0));
353
                Prefs.DColors.insert("Cyan", CMYKColor(255, 0, 0, 0));
354
                Prefs.DColors.insert("Green", CMYKColor(255, 0, 255, 0));
355
                Prefs.DColors.insert("Red", CMYKColor(0, 255, 255, 0));
356
                Prefs.DColors.insert("Yellow", CMYKColor(0, 0, 255, 0));
357
                Prefs.DColors.insert("Magenta", CMYKColor(0, 255, 0, 0));
358
                Prefs.DColorSet = "Scribus-Small";
359
        }
360
        else
361
        {
362
                if (fiC.open(IO_ReadOnly))
363
                {
364
                        QString ColorEn, Cname;
365
                        int Rval, Gval, Bval;
366
                        QTextStream tsC(&fiC);
367
                        ColorEn = tsC.readLine();
368
                        while (!tsC.atEnd())
369
                        {
370
                                ColorEn = tsC.readLine();
371
                                QTextStream CoE(&ColorEn, IO_ReadOnly);
372
                                CoE >> Rval;
373
                                CoE >> Gval;
374
                                CoE >> Bval;
375
                                CoE >> Cname;
376
                                CMYKColor tmp;
377
                                tmp.setColorRGB(Rval, Gval, Bval);
378
                                Prefs.DColors.insert(Cname, tmp);
379
                        }
380
                        fiC.close();
381
                }
382
                Prefs.DColorSet = "X11 RGB-Set";
383
        }
384
 
385
        Prefs.Wheelval = 40;
879 fschmid 386
        Prefs.guidesSettings.marginsShown = true;
387
        Prefs.guidesSettings.framesShown = true;
388
        Prefs.guidesSettings.gridShown = false;
389
        Prefs.guidesSettings.guidesShown = false;
390
        Prefs.guidesSettings.baseShown = false;
391
        Prefs.guidesSettings.showPic = true;
392
        Prefs.guidesSettings.linkShown = false;
393
        Prefs.guidesSettings.grabRad = 4;
394
        Prefs.guidesSettings.guideRad = 10;
395
        Prefs.guidesSettings.minorGrid = 20;
396
        Prefs.guidesSettings.majorGrid = 100;
397
        Prefs.guidesSettings.minorColor = QColor(green);
398
        Prefs.guidesSettings.majorColor = QColor(green);
399
        Prefs.guidesSettings.margColor = QColor(blue);
400
        Prefs.guidesSettings.guideColor = QColor(darkBlue);
401
        Prefs.guidesSettings.baseColor = QColor(lightGray);
823 fschmid 402
        Prefs.typographicSetttings.valueSuperScript = 33;
403
        Prefs.typographicSetttings.scalingSuperScript = 100;
404
        Prefs.typographicSetttings.valueSubScript = 33;
405
        Prefs.typographicSetttings.scalingSubScript = 100;
406
        Prefs.typographicSetttings.valueSmallCaps = 75;
407
        Prefs.typographicSetttings.autoLineSpacing = 20;
408
        Prefs.typographicSetttings.valueBaseGrid = 14.4;
409
        Prefs.typographicSetttings.offsetBaseGrid = 0.0;
770 cbradney 410
        Prefs.GUI = "Default";
1194 fschmid 411
        Prefs.toolSettings.dPen = "Black";
412
        Prefs.toolSettings.dBrush = "Black";
413
        Prefs.toolSettings.dShade = 100;
414
        Prefs.toolSettings.dShade2 = 100;
415
        Prefs.toolSettings.dLineArt = SolidLine;
416
        Prefs.toolSettings.dWidth = 1;
417
        Prefs.toolSettings.dPenLine = "Black";
418
        Prefs.toolSettings.dPenText = "Black";
419
        Prefs.toolSettings.dStrokeText = "Black";
1120 fschmid 420
        Prefs.DpapColor = QColor(white);
1194 fschmid 421
        Prefs.toolSettings.dCols = 1;
422
        Prefs.toolSettings.dGap = 0.0;
423
        Prefs.toolSettings.dShadeLine = 100;
424
        Prefs.toolSettings.dLstyleLine = SolidLine;
425
        Prefs.toolSettings.dWidthLine = 1;
426
        Prefs.toolSettings.dStartArrow = 0;
427
        Prefs.toolSettings.dEndArrow = 0;
428
        Prefs.toolSettings.magMin = 10;
429
        Prefs.toolSettings.magMax = 3200;
430
        Prefs.toolSettings.magStep = 25;
431
        Prefs.toolSettings.dBrushPict = "White";
432
        Prefs.toolSettings.shadePict = 100;
433
        Prefs.toolSettings.scaleX = 1;
434
        Prefs.toolSettings.scaleY = 1;
1187 fschmid 435
        Prefs.guidesSettings.before = true;
1065 cbradney 436
        Prefs.docUnitIndex = 0;
1194 fschmid 437
        Prefs.toolSettings.polyC = 4;
438
        Prefs.toolSettings.polyF = 0.5;
439
        Prefs.toolSettings.polyS = false;
440
        Prefs.toolSettings.polyFd = 0;
441
        Prefs.toolSettings.polyR = 0;
1232 fschmid 442
        Prefs.checkPalSettings.visible = false;
844 fschmid 443
        Prefs.mainToolBarSettings.visible = true;
444
        Prefs.pdfToolBarSettings.visible = true;
445
        Prefs.mPaletteSettings.visible = false;
446
        Prefs.measurePalSettings.visible = false;
447
        Prefs.treePalSettings.visible = false;
448
        Prefs.scrapPalSettings.visible = false;
449
        Prefs.layerPalSettings.visible = false;
450
        Prefs.bookmPalSettings.visible = false;
451
        Prefs.pagePalSettings.visible = false;
452
        Prefs.measurePalSettings.xPosition = 0;
453
        Prefs.measurePalSettings.yPosition = 0;
454
        Prefs.treePalSettings.xPosition = 0;
455
        Prefs.treePalSettings.yPosition = 0;
456
        Prefs.scrapPalSettings.xPosition = 0;
457
        Prefs.scrapPalSettings.yPosition = 0;
458
        Prefs.scrapPalSettings.width = 100;
459
        Prefs.scrapPalSettings.height = 200;
460
        Prefs.pagePalSettings.xPosition = 0;
461
        Prefs.pagePalSettings.yPosition = 0;
462
        Prefs.bookmPalSettings.xPosition = 0;
463
        Prefs.bookmPalSettings.yPosition = 0;
464
        Prefs.layerPalSettings.xPosition = 0;
465
        Prefs.layerPalSettings.yPosition = 0;
770 cbradney 466
        Prefs.PSize = 40;
467
        Prefs.SaveAtQ = true;
468
        Prefs.ClipMargin = true;
469
        Prefs.GCRMode = true;
470
        Prefs.RecentDocs.clear();
471
        Prefs.RecentDCount = 5;
1065 cbradney 472
        Prefs.marginColored = false;
770 cbradney 473
        Prefs.PageFormat = 4;
474
        Prefs.Ausrichtung = 0;
475
        Prefs.PageBreite = 595;
476
        Prefs.PageHoehe = 842;
477
        Prefs.RandOben = 9;
478
        Prefs.RandUnten = 40;
479
        Prefs.RandLinks = 9;
480
        Prefs.RandRechts = 9;
481
        Prefs.DoppelSeiten = false;
482
        Prefs.ErsteLinks = false;
1194 fschmid 483
        Prefs.toolSettings.scaleType = true;
484
        Prefs.toolSettings.aspectRatio = true;
770 cbradney 485
        Prefs.MinWordLen = 3;
486
        Prefs.HyCount = 2;
487
        Prefs.Language = "";
488
        Prefs.Automatic = true;
489
        Prefs.AutoCheck = false;
490
        Prefs.AutoSave = false;
491
        Prefs.AutoSaveTime = 600000;
492
        Prefs.DisScale = 1.0;
493
        Prefs.DocDir = QDir::homeDirPath();
494
        Prefs.ProfileDir = "";
495
        Prefs.ScriptDir = "";
496
        Prefs.TemplateDir = "";
497
        Prefs.CustomColorSets.clear();
498
        Prefs.PrPr_Mode = false;
499
        Prefs.Gcr_Mode = true;
500
        Prefs.PrPr_AlphaText = false;
501
        Prefs.PrPr_AlphaGraphics = false;
502
        Prefs.PrPr_Transparency = false;
503
        Prefs.PrPr_C = true;
504
        Prefs.PrPr_M = true;
505
        Prefs.PrPr_Y = true;
506
        Prefs.PrPr_K = true;
507
        Prefs.gimp_exe = "gimp";
508
        Prefs.gs_antiGraph = true;
509
        Prefs.gs_antiText = true;
510
        Prefs.gs_exe = "gs";
511
        Prefs.STEcolor = QColor(white);
512
        Prefs.STEfont = font().toString();
513
        Prefs.DCMSset.DefaultMonitorProfile = "";
514
        Prefs.DCMSset.DefaultPrinterProfile = "";
515
        Prefs.DCMSset.DefaultInputProfile = "";
516
        Prefs.DCMSset.DefaultInputProfile2 = "";
517
        Prefs.DCMSset.CMSinUse = false;
518
        Prefs.DCMSset.SoftProofOn = false;
519
        Prefs.DCMSset.GamutCheck = false;
520
        Prefs.DCMSset.BlackPoint = true;
521
        Prefs.DCMSset.DefaultIntentMonitor = 1;
522
        Prefs.DCMSset.DefaultIntentMonitor2 = 1;
523
        Prefs.DCMSset.DefaultIntentPrinter = 0;
524
        Prefs.GFontSub.clear();
801 cbradney 525
        Prefs.ScratchLeft = 100;
526
        Prefs.ScratchRight = 100;
527
        Prefs.ScratchTop = 20;
528
        Prefs.ScratchBottom = 20;
1235 fschmid 529
        Prefs.checkerSettings.ignoreErrors = false;
530
        Prefs.checkerSettings.autoCheck = true;
531
        Prefs.checkerSettings.checkGlyphs = true;
532
        Prefs.checkerSettings.checkOrphans = true;
533
        Prefs.checkerSettings.checkOverflow = true;
534
        Prefs.checkerSettings.checkPictures = true;
535
        Prefs.checkerSettings.checkResolution = true;
536
        Prefs.checkerSettings.checkTransparency = true;
537
        Prefs.checkerSettings.minResolution = 72.0;
801 cbradney 538
}
770 cbradney 539
 
801 cbradney 540
 
541
void ScribusApp::initDefaultValues()
542
{
831 cbradney 543
        dirs = prefsFile->getContext("dirs");
801 cbradney 544
        HaveDoc = 0;
545
        singleClose = false;
546
        ScriptRunning = false;
547
        DLLReturn = "";
548
        DLLinput = "";
549
        view = NULL;
550
        doc = NULL;
551
        Buffer2 = "";
552
        UniCinp = false;
553
        UniCinC = 0;
554
        UniCinS = "";
555
        DispX = 10;
556
        DispY = 10;
557
        DocNr = 1;
558
        UmReFaktor = 1.0;
559
        PrinterUsed = false;
560
        PDef.Pname = "";
561
        PDef.Dname = "";
562
        PDef.Command = "";
563
        keyrep = false;
1204 tsoots 564
        _arrowKeyDown = false;
801 cbradney 565
        ClipB = QApplication::clipboard();
566
        PalettesStat[0] = false;
567
        GuidesStat[0] = false;
568
 
569
        connect(ClipB, SIGNAL(dataChanged()), this, SLOT(ClipChange()));
770 cbradney 570
}
571
 
801 cbradney 572
void ScribusApp::initKeyboardShortcuts()
573
{
1230 cbradney 574
        //Set up key entries
575
        //CB TODO Need to rewrite this key management stuff.. these would be much simpler done in the action themselves.
576
 
577
        //FILE MENU
578
        SetKeyEntry(0, scrActions["fileNew"]->cleanMenuText(), 0, scrActions["fileNew"]->accel(), "fileNew");
579
        SetKeyEntry(1, scrActions["fileOpen"]->cleanMenuText(), 0, scrActions["fileOpen"]->accel(), "fileOpen");
580
        SetKeyEntry(2, scrActions["fileClose"]->cleanMenuText(), 0, scrActions["fileClose"]->accel(), "fileClose");
581
        SetKeyEntry(3, scrActions["fileSave"]->cleanMenuText(), 0, scrActions["fileSave"]->accel(), "fileSave");
582
        SetKeyEntry(4, scrActions["fileSaveAs"]->cleanMenuText(), 0, scrActions["fileSaveAs"]->accel(), "fileSaveAs");
583
        //SetKeyEntry(, scrActions["fileRevert"]->cleanMenuText(), 0, scrActions["fileRevert"]->accel(), "fileRevert");
584
        //SetKeyEntry(, scrActions["fileCollect"]->cleanMenuText(), 0, scrActions["fileCollect"]->accel(), "fileCollect");
585
        SetKeyEntry(6, scrActions["fileDocSetup"]->cleanMenuText(), 0, scrActions["fileDocSetup"]->accel(), "fileDocSetup");
586
        SetKeyEntry(8, scrActions["fileQuit"]->cleanMenuText(), 0, scrActions["fileQuit"]->accel(), "fileQuit");
587
        //Included import & export options
588
        //SetKeyEntry(, scrActions["fileImportText"]->cleanMenuText(), 0, scrActions["fileImportText"]->accel(), "fileImportText");
589
        //SetKeyEntry(, scrActions["fileImportAppendText"]->cleanMenuText(), 0, scrActions["fileImportAppendText"]->accel(), "fileImportAppendText");
590
        //SetKeyEntry(, scrActions["fileImportImage"]->cleanMenuText(), 0, scrActions["fileImportImage"]->accel(), "fileImportImage");  
591
        //SetKeyEntry(, scrActions["fileImportPage"]->cleanMenuText(), 0, scrActions["fileImportPage"]->accel(), "fileImportPage");
592
        //SetKeyEntry(, scrActions["fileExportText"]->cleanMenuText(), 0, scrActions["fileExportText"]->accel(), "fileExportText");
593
        //SetKeyEntry(, scrActions["fileExportAsEPS"]->cleanMenuText(), 0, scrActions["fileExportAsEPS"]->accel(), "fileExportAsEPS");
594
        //SetKeyEntry(, scrActions["fileExportAsPDF"]->cleanMenuText(), 0, scrActions["fileExportAsPDF"]->accel(), "fileExportAsPDF");
595
 
596
        //EDIT MENU
597
        //SetKeyEntry(, scrActions["editUndoAction"]->cleanMenuText(), 0, scrActions["editUndoAction]->accel(), "editUndoAction");
598
        //SetKeyEntry(, scrActions["editRedoAction"]->cleanMenuText(), 0, scrActions["editRedoAction"]->accel(), "editRedoAction");
599
 
600
        SetKeyEntry(9, scrActions["editCut"]->cleanMenuText(), 0, scrActions["editCut"]->accel(), "editCut");
601
        SetKeyEntry(10, scrActions["editCopy"]->cleanMenuText(), 0, scrActions["editCopy"]->accel(), "editCopy");
602
        SetKeyEntry(11, scrActions["editPaste"]->cleanMenuText(), 0, scrActions["editPaste"]->accel(), "editPaste");
603
        SetKeyEntry(12, scrActions["editClear"]->cleanMenuText(), 0, scrActions["editClear"]->accel(), "editClear");
604
        SetKeyEntry(13, scrActions["editSelectAll"]->cleanMenuText(), 0, scrActions["editSelectAll"]->accel(), "editSelectAll");
605
        SetKeyEntry(14, scrActions["editColors"]->cleanMenuText(), 0, scrActions["editColors"]->accel(), "editColors");
606
        SetKeyEntry(15, scrActions["editParaStyles"]->cleanMenuText(), 0, scrActions["editParaStyles"]->accel(), "editParaStyles");
607
        SetKeyEntry(16, scrActions["editTemplates"]->cleanMenuText(), 0, scrActions["editTemplates"]->accel(), "editTemplates");
608
        SetKeyEntry(17, scrActions["editFonts"]->cleanMenuText(), 0, scrActions["editFonts"]->accel(), "editFonts");
609
 
610
        //SetKeyEntry(, scrActions["editSearchReplace"]->cleanMenuText(), 0, scrActions["editSearchReplace"]->accel(), "editSearchReplace");
611
        //SetKeyEntry(, scrActions["editLineStyles"]->cleanMenuText(), 0, scrActions["editLineStyles"]->accel(), "editLineStyles");
612
        //SetKeyEntry(, scrActions["editJavascripts"]->cleanMenuText(), 0, scrActions["editJavascripts"]->accel(), "editJavascripts");
613
        //SetKeyEntry(, scrActions["editFonts"]->cleanMenuText(), 0, scrActions["editFonts"]->accel(), "editFonts");
614
 
615
 
616
        //EXTRAS
801 cbradney 617
        SetKeyEntry(56, tr("Smart Hyphen"), 0, CTRL+Key_Minus);
618
        SetKeyEntry(57, tr("Align Left"), 0, CTRL+Key_L);
619
        SetKeyEntry(58, tr("Align Right"), 0, CTRL+Key_R);
620
        SetKeyEntry(59, tr("Align Center"), 0, CTRL+Key_E);
621
        SetKeyEntry(60, tr("Insert Page Number"), 0, CTRL+Key_NumberSign);
1114 tsoots 622
        SetKeyEntry(68, tr("Non Breaking Space"), 0, CTRL+Key_Space);
801 cbradney 623
}
624
 
625
void ScribusApp::initArrowStyles()
626
{
1065 cbradney 627
        struct ArrowDesc arrow;
801 cbradney 628
        FPointArray points;
629
        QWMatrix arrowScaling;
630
        arrowScaling.scale(0.5, 0.5);
631
        arrow.name = "Arrow1L";
632
        arrow.userArrow = false;
633
        points.addQuadPoint(0, 0, 0, 0, 0, 0, 0, 0);
634
        points.addQuadPoint(-5, -5, -5, -5, -5, -5, -5, -5);
635
        points.addQuadPoint(12, 0, 12, 0, 12, 0, 12, 0);
636
        points.addQuadPoint(-5, 5, -5, 5, -5, 5, -5, 5);
637
        points.addQuadPoint(0, 0, 0, 0, 0, 0, 0, 0);
638
        arrow.points = points.copy();
639
        Prefs.arrowStyles.append(arrow);
640
        arrow.name = "Arrow1M";
641
        points.map(arrowScaling);
642
        arrow.points = points.copy();
643
        Prefs.arrowStyles.append(arrow);
644
        arrow.name = "Arrow1S";
645
        points.map(arrowScaling);
646
        arrow.points = points.copy();
647
        Prefs.arrowStyles.append(arrow);
648
        arrow.name = "SquareL";
649
        points.resize(0);
650
        points.addQuadPoint(-5, -5, -5, -5, -5, -5, -5, -5);
651
        points.addQuadPoint(5, -5, 5, -5, 5, -5, 5, -5);
652
        points.addQuadPoint(5, 5, 5, 5, 5, 5, 5, 5);
653
        points.addQuadPoint(-5, 5, -5, 5, -5, 5, -5, 5);
654
        points.addQuadPoint(-5, -5, -5, -5, -5, -5, -5, -5);
655
        arrow.points = points.copy();
656
        Prefs.arrowStyles.append(arrow);
657
        arrow.name = "SquareM";
658
        points.map(arrowScaling);
659
        arrow.points = points.copy();
660
        Prefs.arrowStyles.append(arrow);
661
        arrow.name = "SquareS";
662
        points.map(arrowScaling);
663
        arrow.points = points.copy();
664
        Prefs.arrowStyles.append(arrow);
665
        arrow.name = "TriangleInL";
666
        points.resize(0);
667
        points.addQuadPoint(5.77, 0, 5.77, 0, 5.77, 0, 5.77, 0);
668
        points.addQuadPoint(-2.88, 5, -2.88, 5, -2.88, 5, -2.88, 5);
669
        points.addQuadPoint(-2.88, -5, -2.88, -5, -2.88, -5, -2.88, -5);
670
        points.addQuadPoint(5.77, 0, 5.77, 0, 5.77, 0, 5.77, 0);
671
        arrow.points = points.copy();
672
        Prefs.arrowStyles.append(arrow);
673
        arrow.name = "TriangleInM";
674
        points.map(arrowScaling);
675
        arrow.points = points.copy();
676
        Prefs.arrowStyles.append(arrow);
677
        arrow.name = "TriangleInS";
678
        points.map(arrowScaling);
679
        arrow.points = points.copy();
680
        Prefs.arrowStyles.append(arrow);
681
        arrow.name = "TriangleOutL";
682
        points.resize(0);
683
        points.addQuadPoint(-5.77, 0, -5.77, 0, -5.77, 0, -5.77, 0);
684
        points.addQuadPoint(2.88, 5, 2.88, 5, 2.88, 5, 2.88, 5);
685
        points.addQuadPoint(2.88, -5, 2.88, -5, 2.88, -5, 2.88, -5);
686
        points.addQuadPoint(-5.77, 0, -5.77, 0, -5.77, 0, -5.77, 0);
687
        arrow.points = points.copy();
688
        Prefs.arrowStyles.append(arrow);
689
        arrow.name = "TriangleOutM";
690
        points.map(arrowScaling);
691
        arrow.points = points.copy();
692
        Prefs.arrowStyles.append(arrow);
693
        arrow.name = "TriangleOutS";
694
        points.map(arrowScaling);
695
        arrow.points = points.copy();
696
        Prefs.arrowStyles.append(arrow);
697
}
698
 
699
void ScribusApp::initPalettes()
700
{
701
        Tpal = new Tree(this, 0);
702
        Mpal = new Mpalette(this, &Prefs);
703
        Mpal->Cpal->SetColors(Prefs.DColors);
704
        Mpal->Cpal->UseTrans(true);
705
        Mpal->Fonts->RebuildList(&Prefs, 0);
706
        Npal = new NodePalette(this);
707
        Lpal = new LayerPalette(this);
708
        ScBook = new Biblio(this, &Prefs);
709
        Sepal = new SeitenPal(this);
710
        BookPal = new BookPalette(this);
711
        MaPal = new Measurements(this);
712
        MaPal->hide();
1232 fschmid 713
        docChecker = new CheckDocument(this, false);
714
        docChecker->hide();
801 cbradney 715
 
1114 tsoots 716
        undoPalette = new UndoPalette(this, "undoPalette");
717
        UndoManager::instance()->registerGui(undoPalette);
718
 
801 cbradney 719
        connect(MaPal, SIGNAL(Schliessen(bool)), this, SLOT(setMapal(bool)));
720
        connect(Mpal, SIGNAL(DocChanged()), this, SLOT(slotDocCh()));
721
        connect(Mpal, SIGNAL(NewAbStyle(int)), this, SLOT(setNewAbStyle(int)));
722
        connect(Mpal, SIGNAL(BackHome()), this, SLOT(Aktiv()));
723
        connect(Mpal, SIGNAL(Stellung(int)), this, SLOT(setItemHoch(int)));
724
        connect(Mpal, SIGNAL(Schliessen()), this, SLOT(ToggleMpal()));
725
        connect(Mpal, SIGNAL(EditCL()), this, SLOT(ToggleFrameEdit()));
726
        connect(Mpal, SIGNAL(NewTF(QString)), this, SLOT(SetNewFont(QString)));
727
        connect(Mpal, SIGNAL(UpdtGui(int)), this, SLOT(HaveNewSel(int)));
728
        connect(Mpal->Cpal, SIGNAL(NewPen(QString)), this, SLOT(setPenFarbe(QString)));
729
        connect(Mpal->Cpal, SIGNAL(NewBrush(QString)), this, SLOT(setBrushFarbe(QString)));
730
        connect(Mpal->Cpal, SIGNAL(NewPenShade(int)), this, SLOT(setPenShade(int)));
731
        connect(Mpal->Cpal, SIGNAL(NewBrushShade(int)), this, SLOT(setBrushShade(int)));
732
        connect(Mpal->Cpal, SIGNAL(NewTrans(double)), this, SLOT(SetTranspar(double)));
733
        connect(Mpal->Cpal, SIGNAL(NewTransS(double)), this, SLOT(SetTransparS(double)));
734
        connect(Mpal->Cpal, SIGNAL(NewGradient(int)), this, SLOT(setGradFill(int)));
735
        connect(Mpal->Cpal->gradEdit->Preview, SIGNAL(gradientChanged()), this, SLOT(updtGradFill()));
736
        connect(Mpal->Cpal, SIGNAL(gradientChanged()), this, SLOT(updtGradFill()));
737
        connect(Mpal->Cpal, SIGNAL(QueryItem()), this, SLOT(GetBrushPen()));
1232 fschmid 738
        connect(docChecker, SIGNAL(closePal()), this, SLOT(ToggleCheckPal()));
739
        connect(docChecker, SIGNAL(rescan()), this, SLOT(slotCheckDoc()));
1235 fschmid 740
        connect(docChecker, SIGNAL(selectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
801 cbradney 741
        connect(Tpal, SIGNAL(Schliessen()), this, SLOT(ToggleTpal()));
742
        connect(Tpal, SIGNAL(CloseMpal()), this, SLOT(ToggleMpal()));
743
        connect(Tpal, SIGNAL(CloseSpal()), this, SLOT(ToggleBpal()));
744
        connect(Tpal, SIGNAL(SelectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
745
        connect(Tpal, SIGNAL(SelectSeite(int)), this, SLOT(SelectFromOutlS(int)));
746
        connect(Tpal, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
747
        connect(Mpal->Spal, SIGNAL(newStyle(int)), this, SLOT(setNewAbStyle(int)));
748
        connect(Mpal, SIGNAL(EditLSt()), this, SLOT(slotEditLineStyles()));
749
        connect(Mpal, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
750
        connect(Mpal, SIGNAL(CloseTpal()), this, SLOT(ToggleTpal()));
751
        connect(Mpal, SIGNAL(CloseBpal()), this, SLOT(ToggleBpal()));
752
        connect(Npal, SIGNAL(Schliessen()), this, SLOT(NoFrameEdit()));
753
        connect(Lpal, SIGNAL(LayerActivated(int)), this, SLOT(changeLayer(int)));
754
        connect(Lpal, SIGNAL(LayerRemoved(int, bool)), this, SLOT(LayerRemove(int, bool)));
755
        connect(Lpal, SIGNAL(LayerChanged()), this, SLOT(showLayer()));
756
        connect(Lpal, SIGNAL(Schliessen()), this, SLOT(ToggleLpal()));
757
        connect(Lpal->Table, SIGNAL(Schliessen()), this, SLOT(ToggleLpal()));
758
        connect(Lpal->Table, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
759
        connect(Sepal, SIGNAL(Schliessen()), this, SLOT(ToggleSepal()));
760
        connect(Sepal, SIGNAL(EditTemp(QString)), this, SLOT(ManageTemp(QString)));
761
        connect(Sepal->PageView, SIGNAL(UseTemp(QString, int)), this, SLOT(Apply_Temp(QString, int)));
762
        connect(Sepal->PageView, SIGNAL(NewPage(int, QString)), this, SLOT(slotNewPageP(int, QString)));
763
        connect(Sepal->Trash, SIGNAL(DelPage(int)), this, SLOT(DeletePage2(int)));
764
        connect(Sepal, SIGNAL(GotoSeite(int)), this, SLOT(SelectFromOutlS(int)));
765
        connect(Sepal, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
766
        connect(BookPal->BView, SIGNAL(MarkMoved()), this, SLOT(StoreBookmarks()));
767
        connect(BookPal->BView, SIGNAL(ChangeBMNr(int, int, int)), this, SLOT(ChBookmarks(int, int, int)));
768
        connect(BookPal->BView, SIGNAL(SelectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
769
        connect(BookPal, SIGNAL(Schliessen()), this, SLOT(ToggleBookpal()));
770
        connect(BookPal, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
771
}
772
 
773
void ScribusApp::initScrapbook()
774
{
1144 cbradney 775
        QString scrapbookFile = PrefsPfad+"/scrap13.scs";
801 cbradney 776
        QFileInfo scrapbookFileInfo = QFileInfo(scrapbookFile);
777
        if (scrapbookFileInfo.exists())
778
                ScBook->BibWin->ReadContents(scrapbookFile);
779
        ScBook->ScFilename = scrapbookFile;
780
        ScBook->AdjustMenu();
781
        connect(ScBook, SIGNAL(Schliessen()), this, SLOT(ToggleBpal()));
782
        connect(ScBook->BibWin, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
783
        connect(ScBook->BibWin, SIGNAL(Schliessen()), this, SLOT(ToggleBpal()));
784
        connect(ScBook->BibWin, SIGNAL(CloseTpal()), this, SLOT(ToggleTpal()));
785
        connect(ScBook->BibWin, SIGNAL(CloseMpal()), this, SLOT(ToggleMpal()));
786
}
787
 
788
void ScribusApp::initCrashHandler()
789
{
790
        typedef void (*HandlerType)(int);
791
        HandlerType handler     = 0;
792
        handler = ScribusApp::defaultCrashHandler;
793
        if (!handler)
794
                handler = SIG_DFL;
795
        sigset_t mask;
796
        sigemptyset(&mask);
797
#ifdef SIGSEGV
798
        signal (SIGSEGV, handler);
799
        sigaddset(&mask, SIGSEGV);
800
#endif
801
#ifdef SIGFPE
802
        signal (SIGFPE, handler);
803
        sigaddset(&mask, SIGFPE);
804
#endif
805
#ifdef SIGILL
806
        signal (SIGILL, handler);
807
        sigaddset(&mask, SIGILL);
808
#endif
809
#ifdef SIGABRT
810
        signal (SIGABRT, handler);
811
        sigaddset(&mask, SIGABRT);
812
#endif
813
        sigprocmask(SIG_UNBLOCK, &mask, 0);
814
}
815
 
770 cbradney 816
const QString ScribusApp::getGuiLanguage()
817
{
818
        return guiLanguage;
819
}
820
 
675 cbradney 821
/*!
822
 \fn QString ScribusApp::getPreferencesLocation()
823
 \author Craig Bradney
824
 \date Thu 18 Nov 2004
825
 \brief Get the user's preference file location. Rename any existing old preferences files
826
 \param None
827
 \retval QString Location of the user's preferences
828
 */
829
 
830
QString ScribusApp::getPreferencesLocation()
831
{
832
        QString Pff = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus");
833
        QFileInfo Pffi = QFileInfo(Pff);
834
        QString PrefsPfad;
1144 cbradney 835
        //If we are using ~/.scribus
675 cbradney 836
        if (Pffi.exists())
837
        {
838
                if (Pffi.isDir())
839
                        PrefsPfad = Pff;
840
                else
841
                        PrefsPfad = QDir::homeDirPath();
842
        }
1144 cbradney 843
        else // Move to using ~/.scribus/scribus.* from ~/.scribus.*
675 cbradney 844
        {
1144 cbradney 845
                QDir prefsDirectory = QDir();
846
                prefsDirectory.mkdir(Pff);
675 cbradney 847
                PrefsPfad = Pff;
1144 cbradney 848
                QString oldPR = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus.rc");
849
                QFileInfo oldPi = QFileInfo(oldPR);
850
                if (oldPi.exists())
851
                        moveFile(oldPR, Pff+"/scribus.rc");
852
                QString oldPR2 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusfont.rc");
853
                QFileInfo oldPi2 = QFileInfo(oldPR2);
854
                if (oldPi2.exists())
855
                        moveFile(oldPR2, Pff+"/scribusfont.rc");
856
                QString oldPR3 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusscrap.scs");
857
                QFileInfo oldPi3 = QFileInfo(oldPR3);
858
                if (oldPi3.exists())
859
                        moveFile(oldPR3, Pff+"/scrap.scs");
675 cbradney 860
        }
1144 cbradney 861
 
862
        //Now make copies for 1.3 use and leave the old ones alone for <1.3.0 usage
863
        QString oldPR =QDir::convertSeparators(PrefsPfad+"/scribus.rc");
864
        QString oldPR2=QDir::convertSeparators(PrefsPfad+"/scribusfont.rc");
865
        QString oldPR3=QDir::convertSeparators(PrefsPfad+"/scrap.scs");
866
        QString oldPR4=QDir::convertSeparators(PrefsPfad+"/prefs.xml");
867
        QString newPR =QDir::convertSeparators(PrefsPfad+"/scribus13.rc");
868
        QString newPR2=QDir::convertSeparators(PrefsPfad+"/scribusfont13.rc");
869
        QString newPR3=QDir::convertSeparators(PrefsPfad+"/scrap13.scs");
870
        QString newPR4=QDir::convertSeparators(PrefsPfad+"/prefs13.xml");
871
 
872
        bool existsOldPR =QFile::exists(oldPR);
873
        bool existsOldPR2=QFile::exists(oldPR2);
874
        bool existsOldPR3=QFile::exists(oldPR3);
875
        bool existsOldPR4=QFile::exists(oldPR4);
876
        bool existsNewPR =QFile::exists(newPR);
877
        bool existsNewPR2=QFile::exists(newPR2);
878
        bool existsNewPR3=QFile::exists(newPR3);
879
        bool existsNewPR4=QFile::exists(newPR4);       
880
 
881
        //Only check for these two as they will be autocreated if they dont exist.
882
        if( (existsOldPR && !existsNewPR) || (existsOldPR4 && !existsNewPR4) )
883
        {
884
                if (splashScreen)
885
                        splashScreen->hide();
886
                if ( (QMessageBox::question( this, tr("Migrate Old Scribus Settings?"),
887
                                tr("Scribus has detected existing Scribus 1.2 preferences files.\n"
888
                                        "Do you want to migrate them to the new Scribus version?"),
1208 cbradney 889
                                QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::NoButton))==QMessageBox::Yes )
1144 cbradney 890
                {
891
                        if (existsOldPR && !existsNewPR)
892
                                copyFile(oldPR, newPR);
893
                        if (existsOldPR2 && !existsNewPR2)
894
                                copyFile(oldPR2, newPR2);
895
                        if (existsOldPR3 && !existsNewPR3)
896
                                copyFile(oldPR3, newPR3);
897
                        if (existsOldPR4 && !existsNewPR4)
898
                                copyFile(oldPR4, newPR4);
899
                }
900
                if (splashScreen)
901
                        splashScreen->show();
902
        }
675 cbradney 903
        return PrefsPfad;
904
}
905
 
1144 cbradney 906
/*!
907
 \fn QString ScribusApp::convertToXMLPreferences(QString prefsLocation)
908
 \author Craig Bradney
909
 \date Sun 09 Jan 2005
910
 \brief Convert 1.2 prefs to 1.3 prefs
911
 \param prefsLocation Location of user preferences
912
 \retval None
913
 */
1208 cbradney 914
void ScribusApp::convertToXMLPreferences(const QString prefsLocation)
1144 cbradney 915
{
916
 
917
}
918
 
1227 cbradney 919
void ScribusApp::initFileMenuActions()
1208 cbradney 920
{
921
        //File Menu
1230 cbradney 922
        scrActions.insert("fileNew", new ScrAction(QIconSet(loadIcon("DateiNeu16.png"), loadIcon("DateiNeu.xpm")), tr("&New"), CTRL+Key_N, this, "fileNew"));  
1208 cbradney 923
        scrActions.insert("fileOpen", new ScrAction(QIconSet(loadIcon("DateiOpen16.png"), loadIcon("DateiOpen.xpm")), tr("&Open..."), CTRL+Key_O, this, "fileOpen"));
924
        scrActions.insert("fileClose", new ScrAction(QIconSet(loadIcon("DateiClos16.png"), loadIcon("DateiClose.png")), tr("&Close"), CTRL+Key_W, this, "fileClose"));
925
        scrActions.insert("fileSave", new ScrAction(QIconSet(loadIcon("DateiSave16.png"), loadIcon("DateiSave2.png")), tr("&Save"), CTRL+Key_S, this, "fileSave"));
926
        scrActions.insert("fileSaveAs", new ScrAction(QPixmap(loadIcon("filesaveas.png")), tr("Save &As..."), QKeySequence(), this, "fileSaveAs"));
927
        scrActions.insert("fileRevert", new ScrAction(QPixmap(loadIcon("revert.png")), tr("Re&vert to Saved"), QKeySequence(), this, "fileRevert"));
928
        scrActions.insert("fileCollect", new ScrAction(tr("Collect for O&utput..."), QKeySequence(), this, "fileCollect"));
929
        //File Import Menu
930
        scrActions.insert("fileImportText", new ScrAction(tr("Get Text..."), QKeySequence(), this, "fileImportText"));
931
        scrActions.insert("fileImportAppendText", new ScrAction(tr("Append &Text..."), QKeySequence(), this, "fileImportAppendText"));
932
        scrActions.insert("fileImportImage", new ScrAction(tr("Get Image..."), QKeySequence(), this, "fileImportImage"));
933
 
934
        scrActions.insert("fileImportEPS", new ScrAction(tr("Import EPS..."), QKeySequence(), this, "fileImportEPS"));
935
        scrActions.insert("fileImportPage", new ScrAction(tr("Import Page(s)..."), QKeySequence(), this, "fileImportPage"));
936
        scrActions.insert("fileImportOOorgDraw", new ScrAction(tr("Import OpenOffice.org Draw..."), QKeySequence(), this, "fileImportOOorgDraw"));
937
        scrActions.insert("fileImportSVG", new ScrAction(tr("Import SVG..."), QKeySequence(), this, "fileImportSVG"));
938
 
939
        //File Export Menu
940
        scrActions.insert("fileExportText", new ScrAction(tr("Save &Text..."), QKeySequence(), this, "fileExportText"));
941
        scrActions.insert("fileExportAsEPS", new ScrAction(tr("Save Page as &EPS..."), QKeySequence(), this, "fileExportAsEPS"));
942
        scrActions.insert("fileExportAsPDF", new ScrAction(loadIcon("acrobat.png"), tr("Save as P&DF..."), QKeySequence(), this, "fileExportAsPDF"));
943
        scrActions.insert("fileExportAsImage", new ScrAction(tr("Save as &Image..."), QKeySequence(), this, "fileExportAsImage"));
944
        scrActions.insert("fileExportAsSVG", new ScrAction(tr("Save Page as &SVG..."), QKeySequence(), this, "fileExportAsSVG"));
945
        //Rest of File Menu
946
        scrActions.insert("fileDocInfo", new ScrAction(loadIcon("documentinfo.png"), tr("Document &Information..."), CTRL+Key_I, this, "fileDocSetup"));
947
        scrActions.insert("fileDocSetup", new ScrAction(tr("Document &Setup..."), QKeySequence(), this, "fileDocSetup"));
948
        scrActions.insert("filePrint", new ScrAction(QIconSet(loadIcon("DateiPrint16.png"), loadIcon("DateiPrint.xpm")), tr("&Print..."), CTRL+Key_P, this, "filePrint"));
949
        scrActions.insert("fileQuit", new ScrAction(QPixmap(loadIcon("exit.png")), tr("&Quit"), CTRL+Key_Q, this, "fileQuit"));
950
 
1227 cbradney 951
        //Set some tooltips, unsure yet whether to use these, probably not as they arent flexible like normal actions ones can be
952
        /*
953
        scrActions["fileNew"]->setToolTip(tr("Create a new document"));
954
        scrActions["fileOpen"]->setToolTip(tr("Open a document"));
955
        scrActions["fileSave"]->setToolTip(tr("Save the current document"));
956
        scrActions["fileClose"]->setToolTip(tr("Close the current document"));
957
        scrActions["filePrint"]->setToolTip(tr("Print the current document"));
958
        scrActions["fileExportAsPDF"]->setToolTip(tr("Save the current document as PDF"));
959
        */
1208 cbradney 960
        //Connect our signals and slots
961
        //File Menu
962
        connect( scrActions["fileNew"], SIGNAL(activated()) , this, SLOT(slotFileNew()) );
963
        connect( scrActions["fileOpen"], SIGNAL(activated()) , this, SLOT(slotDocOpen()) );
964
        connect( scrActions["fileClose"], SIGNAL(activated()) , this, SLOT(slotFileClose()) );
965
        connect( scrActions["filePrint"], SIGNAL(activated()) , this, SLOT(slotFilePrint()) );
966
        connect( scrActions["fileSave"], SIGNAL(activated()) , this, SLOT(slotFileSave()) );
967
        connect( scrActions["fileSave"], SIGNAL(activated()) , this, SLOT(slotFileSave()) );
968
        connect( scrActions["fileSaveAs"], SIGNAL(activated()) , this, SLOT(slotFileSaveAs()) );
969
        connect( scrActions["fileDocInfo"], SIGNAL(activated()) , this, SLOT(InfoDoc()) );
970
        connect( scrActions["fileDocSetup"], SIGNAL(activated()) , this, SLOT(SetupDoc()) );
971
        connect( scrActions["fileRevert"], SIGNAL(activated()) , this, SLOT(slotFileRevert()) );
972
        connect( scrActions["fileCollect"], SIGNAL(activated()) , this, SLOT(Collect()) );
973
        connect( scrActions["fileQuit"], SIGNAL(activated()) , this, SLOT(slotFileQuit()) );
974
        //File Import Menu
975
        connect( scrActions["fileImportText"], SIGNAL(activated()) , this, SLOT(slotFileOpen()) );
976
        connect( scrActions["fileImportAppendText"], SIGNAL(activated()) , this, SLOT(slotFileAppend()) );
977
        connect( scrActions["fileImportImage"], SIGNAL(activated()) , this, SLOT(slotFileOpen()) );    
978
        connect( scrActions["fileImportPage"], SIGNAL(activated()) , this, SLOT(slotDocMerge()) );
979
        //File Export Menu
980
        connect( scrActions["fileExportText"], SIGNAL(activated()) , this, SLOT(SaveText()) );
981
        connect( scrActions["fileExportAsEPS"], SIGNAL(activated()) , this, SLOT(SaveAsEps()) );
982
        connect( scrActions["fileExportAsPDF"], SIGNAL(activated()) , this, SLOT(SaveAsPDF()) );
983
        //The rest are plugins
984
}
985
 
1227 cbradney 986
void ScribusApp::initEditMenuActions()
987
{
988
        //Edit Menu
989
        scrActions.insert("editUndoAction", new ScrAction(QIconSet(loadIcon("u_undo16.png"), loadIcon("u_undo.png")), tr("&Undo"), CTRL+Key_Z, this, "editUndo"));
990
        scrActions.insert("editRedoAction", new ScrAction(QIconSet(loadIcon("u_redo16.png"), loadIcon("u_redo.png")), tr("&Redo"), CTRL+SHIFT+Key_Z, this, "editRedo"));
991
        scrActions.insert("editActionMode", new ScrAction(tr("&Item Action Mode"), QKeySequence(), this, "editActionMode"));
992
        scrActions.insert("editCut", new ScrAction(QIconSet(loadIcon("editcut.png"), loadIcon("editcut.png")), tr("Cu&t"), CTRL+Key_X, this, "editCut"));
993
        scrActions.insert("editCopy", new ScrAction(QIconSet(loadIcon("editcopy.png"), loadIcon("editcopy.png")), tr("&Copy"), CTRL+Key_C, this, "editCopy"));
994
        scrActions.insert("editPaste", new ScrAction(QIconSet(loadIcon("editpaste.png"), loadIcon("editpaste.png")), tr("&Paste"), CTRL+Key_V, this, "editPaste"));
995
        scrActions.insert("editClear", new ScrAction(QIconSet(loadIcon("editClear.png"), loadIcon("editClear.png")), tr("C&lear"), QKeySequence(), this, "editClear"));
996
        scrActions.insert("editSelectAll", new ScrAction(tr("Select &All"), CTRL+Key_A, this, "editSelectall"));
997
        scrActions.insert("editSearchReplace", new ScrAction(QIconSet(loadIcon("find16.png"), loadIcon("find16.png")),  tr("&Search/Replace..."), QKeySequence(), this, "editSearchReplace"));
998
 
999
        scrActions.insert("editColors", new ScrAction(tr("C&olors..."), QKeySequence(), this, "editColors"));
1000
        scrActions.insert("editParaStyles", new ScrAction(tr("&Paragraph Styles..."), QKeySequence(), this, "editParaStyles"));
1001
        scrActions.insert("editLineStyles", new ScrAction(tr("&Line Styles..."), QKeySequence(), this, "editLineStyles"));
1002
        scrActions.insert("editTemplates", new ScrAction(tr("&Templates..."), QKeySequence(), this, "editTemplates"));
1003
        scrActions.insert("editJavascripts", new ScrAction(tr("&Javascripts..."), QKeySequence(), this, "editJavascripts"));
1004
        scrActions.insert("editPreferences", new ScrAction(tr("P&references..."), QKeySequence(), this, "editPreferences"));
1005
        scrActions.insert("editFonts", new ScrAction(tr("&Fonts..."), QKeySequence(), this, "editFonts"));
1006
 
1007
        //TODO Extra tooltips
1008
        //
1009
 
1010
        connect( scrActions["editUndoAction"], SIGNAL(activated()) , this, SLOT(UnDoAction()) );
1011
        connect( scrActions["editRedoAction"], SIGNAL(activated()) , this, SLOT(RedoAction()) );
1012
        //TODO connect( scrActions["editActionMode"], SIGNAL(activated()) , this, SLOT(RedoAction()) );
1013
        connect( scrActions["editCut"], SIGNAL(activated()) , this, SLOT(slotEditCut()) );
1014
        connect( scrActions["editCopy"], SIGNAL(activated()) , this, SLOT(slotEditCopy()) );
1015
        connect( scrActions["editPaste"], SIGNAL(activated()) , this, SLOT(slotEditPaste()) );
1016
        connect( scrActions["editClear"], SIGNAL(activated()) , this, SLOT(DeleteText()) );
1017
        connect( scrActions["editSelectAll"], SIGNAL(activated()) , this, SLOT(SelectAll()) );
1018
        connect( scrActions["editSearchReplace"], SIGNAL(activated()), this, SLOT(SearchText()) );
1019
        connect( scrActions["editColors"], SIGNAL(activated()) , this, SLOT(slotEditColors()) );
1020
        connect( scrActions["editParaStyles"], SIGNAL(activated()) , this, SLOT(slotEditStyles()) );
1021
        connect( scrActions["editLineStyles"], SIGNAL(activated()) , this, SLOT(slotEditLineStyles()) );
1022
        connect( scrActions["editTemplates"], SIGNAL(activated()) , this, SLOT(ManageTemp()) );
1023
        connect( scrActions["editJavascripts"], SIGNAL(activated()) , this, SLOT(ManageJava()) );
1024
        connect( scrActions["editPreferences"], SIGNAL(activated()) , this, SLOT(slotPrefsOrg()) );
1025
        connect( scrActions["editFonts"], SIGNAL(activated()) , this, SLOT(slotFontOrg()) );
1026
}
1027
 
3 paul 1028
void ScribusApp::initMenuBar()
1029
{
1030
        int MenID;
1031
        QFont tmp;
1032
        RecentDocs.clear();
1208 cbradney 1033
 
1227 cbradney 1034
        initFileMenuActions();
1035
        initEditMenuActions();
1208 cbradney 1036
 
1037
        scrMenuMgr->createMenu("File", tr("&File"));
1038
        scrMenuMgr->addMenuItem(scrActions["fileNew"], "File");
1039
        scrMenuMgr->addMenuItem(scrActions["fileOpen"], "File");
1040
        recentFileMenuName="FileOpenRecent";
1041
        scrMenuMgr->createMenu(recentFileMenuName, tr("Open &Recent"), "File");
1042
        scrMenuMgr->addMenuSeparator("File");
1043
        scrMenuMgr->addMenuItem(scrActions["fileClose"], "File");
1044
        scrMenuMgr->addMenuItem(scrActions["fileSave"], "File");
1045
        scrMenuMgr->addMenuItem(scrActions["fileSaveAs"], "File");
1046
        scrMenuMgr->addMenuItem(scrActions["fileRevert"], "File");
1047
        scrMenuMgr->addMenuItem(scrActions["fileCollect"], "File");
1048
        scrMenuMgr->addMenuSeparator("File");
1049
        scrMenuMgr->createMenu("FileImport", tr("&Import"), "File");
1050
        scrMenuMgr->addMenuItem(scrActions["fileImportText"], "FileImport");
1051
        scrMenuMgr->addMenuItem(scrActions["fileImportAppendText"], "FileImport");
1052
        scrMenuMgr->addMenuItem(scrActions["fileImportImage"], "FileImport");
1053
        scrMenuMgr->addMenuItem(scrActions["fileImportPage"], "FileImport");
1054
        scrMenuMgr->createMenu("FileExport", tr("&Export"), "File");
1055
        scrMenuMgr->addMenuItem(scrActions["fileExportText"], "FileExport");
1056
        scrMenuMgr->addMenuItem(scrActions["fileExportAsEPS"], "FileExport");
1057
        scrMenuMgr->addMenuItem(scrActions["fileExportAsPDF"], "FileExport");
1058
        scrMenuMgr->addMenuSeparator("File");
1059
        scrMenuMgr->addMenuItem(scrActions["fileDocInfo"], "File");
1060
        scrMenuMgr->addMenuItem(scrActions["fileDocSetup"], "File");
1061
        scrMenuMgr->addMenuItem(scrActions["filePrint"], "File");
1062
        scrMenuMgr->addMenuSeparator("File");
1063
        scrMenuMgr->addMenuItem(scrActions["fileQuit"], "File");
1064
 
1230 cbradney 1065
 
1208 cbradney 1066
        scrActions["fileClose"]->setEnabled(false);    
1067
        scrActions["fileSave"]->setEnabled(false);
1068
        scrActions["fileSaveAs"]->setEnabled(false);
1069
        scrActions["fileRevert"]->setEnabled(false);
1070
        scrActions["fileCollect"]->setEnabled(false);
1071
        scrActions["fileImportText"]->setEnabled(false);
1072
        scrActions["fileImportImage"]->setEnabled(false);
1073
        scrActions["fileImportAppendText"]->setEnabled(false);
1074
        scrActions["fileImportPage"]->setEnabled(false);
1075
        scrActions["fileExportText"]->setEnabled(false);
1076
        scrActions["fileExportAsEPS"]->setEnabled(false);
1077
        scrActions["fileExportAsPDF"]->setEnabled(false);
1078
        scrMenuMgr->setMenuEnabled("FileExport", false);
1079
        scrActions["fileDocInfo"]->setEnabled(false);
1080
        scrActions["fileDocSetup"]->setEnabled(false);
1081
        scrActions["filePrint"]->setEnabled(false);
1082
 
1227 cbradney 1083
        scrMenuMgr->createMenu("Edit", tr("&Edit"));
1084
        scrMenuMgr->addMenuItem(scrActions["editUndoAction"], "Edit");
1085
        scrMenuMgr->addMenuItem(scrActions["editRedoAction"], "Edit");
1086
        scrMenuMgr->addMenuItem(scrActions["editActionMode"], "Edit");
1087
        scrMenuMgr->addMenuSeparator("Edit");
1088
        scrMenuMgr->addMenuItem(scrActions["editCut"], "Edit");
1089
        scrMenuMgr->addMenuItem(scrActions["editCopy"], "Edit");
1090
        scrMenuMgr->addMenuItem(scrActions["editPaste"], "Edit");
1091
        scrMenuMgr->addMenuItem(scrActions["editClear"], "Edit");
1092
        scrMenuMgr->addMenuItem(scrActions["editSelectAll"], "Edit");
1093
        scrMenuMgr->addMenuSeparator("Edit");
1094
        scrMenuMgr->addMenuItem(scrActions["editSearchReplace"], "Edit");
1095
        scrMenuMgr->addMenuSeparator("Edit");
1096
        scrMenuMgr->addMenuItem(scrActions["editColors"], "Edit");
1097
        scrMenuMgr->addMenuItem(scrActions["editParaStyles"], "Edit");
1098
        scrMenuMgr->addMenuItem(scrActions["editLineStyles"], "Edit");
1099
        scrMenuMgr->addMenuItem(scrActions["editTemplates"], "Edit");
1100
        scrMenuMgr->addMenuItem(scrActions["editJavascripts"], "Edit");
1101
        scrMenuMgr->addMenuSeparator("Edit");
1102
        scrMenuMgr->addMenuItem(scrActions["editPreferences"], "Edit");
1103
        scrMenuMgr->addMenuItem(scrActions["editFonts"], "Edit");
1104
 
1105
        scrActions["editUndoAction"]->setEnabled(false);
1106
        scrActions["editRedoAction"]->setEnabled(false);
1107
        scrActions["editActionMode"]->setEnabled(false);
1108
        scrActions["editCut"]->setEnabled(false);
1109
        scrActions["editCopy"]->setEnabled(false);
1110
        scrActions["editPaste"]->setEnabled(false);
1111
        scrActions["editClear"]->setEnabled(false);
1112
        scrActions["editSelectAll"]->setEnabled(false);
1113
        scrActions["editSearchReplace"]->setEnabled(false);
1114
        scrActions["editParaStyles"]->setEnabled(false);
1115
        scrActions["editLineStyles"]->setEnabled(false);
1116
        scrActions["editTemplates"]->setEnabled(false);
1117
        scrActions["editJavascripts"]->setEnabled(false);
1118
 
1119
        //Style Menu
3 paul 1120
        StilMenu = new QPopupMenu();
1208 cbradney 1121
        itemMenu = new QPopupMenu();
68 Franz 1122
        SetKeyEntry(19, tr("Select New Font"), 0, 0);
1208 cbradney 1123
        M_ItemDuplicate = itemMenu->insertItem( tr("D&uplicate"), this, SLOT(ObjektDup()), CTRL+Key_D);
1124
        SetKeyEntry(20, tr("Duplicate"), M_ItemDuplicate, CTRL+Key_D);
1125
        M_ItemMultiDuplicate = itemMenu->insertItem( tr("&Multiple Duplicate"), this, SLOT(ObjektDupM()));
1126
        SetKeyEntry(21, tr("Multiple Duplicate"), M_ItemMultiDuplicate, 0);
1127
        M_ItemDelete = itemMenu->insertItem( tr("&Delete"), this, SLOT(DeleteObjekt()), CTRL+Key_K);
1128
        SetKeyEntry(22, tr("Delete"), M_ItemDelete, CTRL+Key_K);
1129
        itemMenu->insertSeparator();
1130
        M_ItemGroup = itemMenu->insertItem( tr("&Group"), this, SLOT(GroupObj()), CTRL+Key_G);
1131
        SetKeyEntry(23, tr("Group"), M_ItemGroup, CTRL+Key_G);
1132
        M_ItemUngroup = itemMenu->insertItem( tr("&Ungroup"), this, SLOT(UnGroupObj()),CTRL+Key_U);
1133
        SetKeyEntry(24, tr("Ungroup"), M_ItemUngroup, CTRL+Key_U);
1134
        M_ItemLock = itemMenu->insertItem( tr("&Lock"), this, SLOT(ToggleObjLock()), CTRL+Key_F);
1135
        itemMenu->insertSeparator();
1136
        M_ItemSendToBack = itemMenu->insertItem( tr("Send to &Back"), this, SLOT(Objekt2Back()));
1137
        SetKeyEntry(25, tr("Send to Back"), M_ItemSendToBack, 0);
1138
        M_ItemBringToFront = itemMenu->insertItem( tr("Bring to &Front"), this, SLOT(Objekt2Front()));
1139
        SetKeyEntry(26, tr("Bring to Front"), M_ItemBringToFront, 0);
1140
        M_ItemLower = itemMenu->insertItem( tr("&Lower"), this, SLOT(ObjektLower()));
1141
        SetKeyEntry(27, tr("Lower"), M_ItemLower, 0);
1142
        M_ItemRaise = itemMenu->insertItem( tr("&Raise"), this, SLOT(ObjektRaise()));
1143
        SetKeyEntry(28, tr("Raise"), M_ItemRaise, 0);
1144
        M_ItemAlignDist = itemMenu->insertItem( tr("Distribute/&Align..."), this, SLOT(ObjektAlign()));
1145
        SetKeyEntry(29, tr("Distribute/Align..."), M_ItemAlignDist, 0);
1146
        itemMenu->insertSeparator();
3 paul 1147
        ShapeMenu = new QPopupMenu();
169 Franz 1148
        SCustom = new Autoforms(0);
1149
        ShapeMenu->insertItem(SCustom);
272 Franz 1150
        connect(SCustom, SIGNAL(FormSel(int, int, double *)), this, SLOT(MakeFrame(int, int, double *)));
377 Franz 1151
        ShapeEdit = ShapeMenu->insertItem( tr("&Edit Shape"), this, SLOT(ToggleFrameEdit()));
1208 cbradney 1152
        ShapeM = itemMenu->insertItem( tr("&Shape"), ShapeMenu);
1153
        PfadT = itemMenu->insertItem( tr("&Attach Text to Path"), this, SLOT(Pfadtext()));
1154
        PfadDT = itemMenu->insertItem( tr("&Detach Text from Path"), this, SLOT(noPfadtext()));
1155
        PfadV = itemMenu->insertItem( tr("&Combine Polygons"), this, SLOT(UniteOb()));
1156
        PfadS = itemMenu->insertItem( tr("Split &Polygons"), this, SLOT(SplitUniteOb()));
1157
        PfadTP = itemMenu->insertItem( tr("C&onvert to Outlines"), this, SLOT(TraceText()));
1158
        itemMenu->setItemEnabled(ShapeM, 0);
1159
        itemMenu->setItemEnabled(M_ItemAlignDist, 0);
1160
        itemMenu->setItemEnabled(M_ItemGroup, 0);
1161
        itemMenu->setItemEnabled(M_ItemUngroup, 0);
1162
        itemMenu->setItemEnabled(PfadT, 0);
1163
        itemMenu->setItemEnabled(PfadDT, 0);
1164
        itemMenu->setItemEnabled(PfadV, 0);
1165
        itemMenu->setItemEnabled(PfadS, 0);
1166
        itemMenu->setItemEnabled(M_ItemLock, 0);
1167
        itemMenu->setItemEnabled(PfadTP, 0);
3 paul 1168
        pageMenu = new QPopupMenu();
308 Franz 1169
        MenID = pageMenu->insertItem( tr("&Insert..."), this, SLOT(slotNewPageM()));
3 paul 1170
        SetKeyEntry(30, tr("Insert..."), MenID, 0);
308 Franz 1171
        pgmd = pageMenu->insertItem( tr("&Delete..."), this, SLOT(DeletePage()));
3 paul 1172
        SetKeyEntry(31, tr("Delete..."), pgmd, 0);
308 Franz 1173
        MenID = pageMenu->insertItem( tr("&Copy")+"...", this, SLOT(CopyPage()));
3 paul 1174
        SetKeyEntry(61, tr("Copy")+"...", MenID, 0);
308 Franz 1175
        pgmv = pageMenu->insertItem( tr("&Move..."), this, SLOT(MovePage()));
3 paul 1176
        SetKeyEntry(32, tr("Move..."), pgmv, 0);
308 Franz 1177
        MenID = pageMenu->insertItem( tr("&Apply Template..."), this, SLOT(ApplyTemp()));
3 paul 1178
        SetKeyEntry(33, tr("Apply Template..."), MenID, 0);
348 Franz 1179
        MenID = pageMenu->insertItem( tr("Manage &Guides..."), this, SLOT(ManageGuides()));
3 paul 1180
        SetKeyEntry(49, tr("Manage Guides..."), MenID, 0);
1181
        pageMenu->setItemEnabled(pgmd, 0);
1182
        pageMenu->setItemEnabled(pgmv, 0);
1183
        viewMenu=new QPopupMenu();
308 Franz 1184
        MenID = viewMenu->insertItem( tr("&Fit in Window"), this, SLOT(slotZoomFit()), CTRL+Key_0);
3 paul 1185
        SetKeyEntry(34, tr("Fit in Window"), MenID, CTRL+Key_0);
308 Franz 1186
        MenID = viewMenu->insertItem("&50%", this, SLOT(slotZoom50()));
3 paul 1187
        SetKeyEntry(35, tr("50%"), MenID, 0);
308 Franz 1188
        MenID = viewMenu->insertItem("&75%", this, SLOT(slotZoom75()));
3 paul 1189
        SetKeyEntry(36, tr("75%"), MenID, 0);
308 Franz 1190
        MenID = viewMenu->insertItem( tr("&100%"), this, SLOT(slotZoom100()), CTRL+Key_1);
340 Franz 1191
        SetKeyEntry(37, tr("100%"), MenID, CTRL+Key_1);
308 Franz 1192
        MenID = viewMenu->insertItem("&200%", this, SLOT(slotZoom200()));
3 paul 1193
        SetKeyEntry(38, tr("200%"), MenID, 0);
308 Franz 1194
        MenID = viewMenu->insertItem( tr("&Thumbnails"), this, SLOT(slotZoom20()));
3 paul 1195
        SetKeyEntry(39, tr("Thumbnails"), MenID, 0);
1196
        viewMenu->insertSeparator();
1208 cbradney 1197
        M_ViewShowMarkers = viewMenu->insertItem( tr("Show &Margins"), this, SLOT(ToggleMarks()));
1198
        SetKeyEntry(40, tr("Hide Margins"), M_ViewShowMarkers, 0);
1199
        viewMenu->setItemChecked(M_ViewShowMarkers, true);
1200
        M_ViewDrawFrames = viewMenu->insertItem( tr("Show &Frames"), this, SLOT(ToggleFrames()));
1201
        SetKeyEntry(41, tr("Hide Frames"), M_ViewDrawFrames, 0);
1202
        viewMenu->setItemChecked(M_ViewDrawFrames, true);
1203
        M_ViewShowImages = viewMenu->insertItem( tr("Show &Images"), this, SLOT(TogglePics()));
1204
        viewMenu->setItemChecked(M_ViewShowImages, true);
1205
        SetKeyEntry(42, tr("Hide Images"), M_ViewShowImages, 0);
1206
        M_ViewShowGrid = viewMenu->insertItem( tr("Show &Grid"), this, SLOT(ToggleRaster()));
1207
        SetKeyEntry(43, tr("Show Grid"), M_ViewShowGrid, 0);
1208
        viewMenu->setItemChecked(M_ViewShowGrid, false);
1209
        M_ViewShowGuides = viewMenu->insertItem( tr("Show G&uides"), this, SLOT(ToggleGuides()));
1210
        viewMenu->setItemChecked(M_ViewShowGuides, true);
1211
        M_ViewShowBaseline = viewMenu->insertItem( tr("Show &Baseline Grid"), this, SLOT(ToggleBase()));
1212
        viewMenu->setItemChecked(M_ViewShowBaseline, false);
1213
        M_ViewShowTextChain = viewMenu->insertItem( tr("Show &Text Chain"), this, SLOT(ToggleTextLinks()));
1214
        viewMenu->setItemChecked(M_ViewShowTextChain, false);
340 Franz 1215
        viewMenu->insertSeparator();
1208 cbradney 1216
        M_ViewSnapToGrid = viewMenu->insertItem( tr("Sn&ap to Grid"), this, SLOT(ToggleURaster()));
1217
        SetKeyEntry(44, tr("Snap to Grid"), M_ViewSnapToGrid, 0);
1218
        M_ViewSnapToGuides = viewMenu->insertItem( tr("Sna&p to Guides"), this, SLOT(ToggleUGuides()));
3 paul 1219
        toolMenu=new QPopupMenu();
308 Franz 1220
        viewMpal = toolMenu->insertItem( tr("&Properties"), this, SLOT(ToggleMpal()));
119 Franz 1221
        SetKeyEntry(46, tr("Properties"), viewMpal, 0);
308 Franz 1222
        viewTpal = toolMenu->insertItem( tr("&Outline"), this, SLOT(ToggleTpal()));
119 Franz 1223
        SetKeyEntry(47, tr("Outline"), viewTpal, 0);
308 Franz 1224
        viewBpal = toolMenu->insertItem( tr("&Scrapbook"), this, SLOT(ToggleBpal()));
119 Franz 1225
        SetKeyEntry(48, tr("Scrapbook"), viewBpal, 0);
308 Franz 1226
        viewLpal = toolMenu->insertItem( tr("&Layers"), this, SLOT(ToggleLpal()));
1227
        viewSepal = toolMenu->insertItem( tr("P&age Palette"), this, SLOT(ToggleSepal()));
1228
        viewBopal = toolMenu->insertItem( tr("&Bookmarks"), this, SLOT(ToggleBookpal()));
1213 tsoots 1229
        viewUndoPalette = toolMenu->insertItem(tr("Action &History"), this, SLOT(ToggleUndoPalette()));
1235 fschmid 1230
        M_ToolsCheckDoc = toolMenu->insertItem( tr("Check Document"), this, SLOT(slotCheckDoc()));
800 fschmid 1231
        toolbarMenuTools = toolMenu->insertItem( tr("&Tools"), this, SLOT(ToggleTools()));
1232
        toolbarMenuPDFTools = toolMenu->insertItem( tr("P&DF Tools"), this, SLOT(TogglePDFTools()));
1233
        SetKeyEntry(45, tr("Tools"), toolbarMenuTools, 0);
1234
        SetKeyEntry(55, tr("Tooltips"), tip, 0);
3 paul 1235
        extraMenu=new QPopupMenu();
308 Franz 1236
        MenID = extraMenu->insertItem( tr("&Manage Pictures"), this, SLOT(StatusPic()));
3 paul 1237
        SetKeyEntry(51, tr("Manage Pictures"), MenID, 0);
308 Franz 1238
        hyph = extraMenu->insertItem( tr("&Hyphenate Text"), this, SLOT(doHyphenate()));
3 paul 1239
        extraMenu->setItemEnabled(hyph, 0);
1240
        SetKeyEntry(50, tr("Hyphenate Text"), hyph, 0);
1208 cbradney 1241
        M_ExtraCharSelect = extraMenu->insertItem( tr("Insert Special"), this, SLOT(slotCharSelect()));
1242
        extraMenu->setItemEnabled(M_ExtraCharSelect, 0);
284 Franz 1243
 
3 paul 1244
        windowsMenu = new QPopupMenu();
1245
        windowsMenu->setCheckable( true );
1246
        connect(windowsMenu, SIGNAL(aboutToShow()), this, SLOT(windowsMenuAboutToShow()));
1247
        helpMenu=new QPopupMenu();
308 Franz 1248
        MenID = helpMenu->insertItem( tr("&About Scribus"), this, SLOT(slotHelpAbout()));
3 paul 1249
        SetKeyEntry(52, tr("About Scribus"), MenID, 0);
308 Franz 1250
        MenID = helpMenu->insertItem( tr("About &Qt"), this, SLOT(slotHelpAboutQt()));
3 paul 1251
        SetKeyEntry(53, tr("About Qt"), MenID, 0);
1252
        helpMenu->insertSeparator();
800 fschmid 1253
        tip = helpMenu->insertItem( tr("Toolti&ps"), this, SLOT(ToggleTips()));
1254
        tipsOn = true;
1255
        helpMenu->setItemChecked(tip, tipsOn);
308 Franz 1256
        MenID = helpMenu->insertItem( tr("Scribus &Manual..."), this, SLOT(slotOnlineHelp()));
3 paul 1257
        SetKeyEntry(54, tr("Online-Help..."), MenID, 0);
456 fschmid 1258
 
1227 cbradney 1259
/*
1260
        editMenu->insertItem( tr("Test"), this, SLOT(slotTest()));
456 fschmid 1261
        editMenu->insertItem( tr("Test2"), this, SLOT(slotTest2()));
1262
*/
1208 cbradney 1263
 
1264
        scrMenuMgr->addMenuToMenuBar("File");
1227 cbradney 1265
        scrMenuMgr->addMenuToMenuBar("Edit");
308 Franz 1266
        Stm = menuBar()->insertItem( tr("St&yle"), StilMenu);
1208 cbradney 1267
        Obm = menuBar()->insertItem( tr("&Item"), itemMenu);
238 Franz 1268
        pgmm = menuBar()->insertItem( tr("&Page"), pageMenu);
175 Franz 1269
        menuBar()->setItemEnabled(Stm, 0);
3 paul 1270
        menuBar()->setItemEnabled(Obm, 0);
1271
        menuBar()->setItemEnabled(pgmm, 0);
272 Franz 1272
        ViMen = menuBar()->insertItem( tr("&View"), viewMenu);
1273
        menuBar()->setItemEnabled(ViMen, 0);
237 Franz 1274
        menuBar()->insertItem( tr("&Tools"), toolMenu);
238 Franz 1275
        exmn = menuBar()->insertItem( tr("E&xtras"), extraMenu);
3 paul 1276
        menuBar()->setItemEnabled(exmn, 0);
272 Franz 1277
        WinMen = menuBar()->insertItem( tr("&Windows"), windowsMenu );
1278
        menuBar()->setItemEnabled(WinMen, 0);
3 paul 1279
        menuBar()->insertSeparator();
237 Franz 1280
        menuBar()->insertItem( tr("&Help"), helpMenu);
1208 cbradney 1281
        alignMenu = new QPopupMenu();
1282
        alignMenu->insertItem( tr("&Left"));
1283
        alignMenu->insertItem( tr("&Center"));
1284
        alignMenu->insertItem( tr("&Right"));
1285
        alignMenu->insertItem( tr("&Block"));
1286
        alignMenu->insertItem( tr("&Forced"));
3 paul 1287
        ColorMenu = new QPopupMenu();
148 Franz 1288
        ColorMenC = new QComboBox(false);
1289
        ColorMenC->setEditable(false);
1290
        ColorMenu->insertItem(ColorMenC);
3 paul 1291
        SizeTMenu = new QPopupMenu();
308 Franz 1292
        SizeTMenu->insertItem( tr("&Other..."));
617 cbradney 1293
        QString ar_sizes[] = {" 7", " 9", "10", "11", "12", "14", "18", "24", "36", "48", "60", "72"};
274 Franz 1294
        size_t f_size = sizeof(ar_sizes) / sizeof(*ar_sizes);
1295
        for (uint s = 0; s < f_size; ++s)
1296
                SizeTMenu->insertItem(ar_sizes[s] + tr(" pt"));
3 paul 1297
        ShadeMenu = new QPopupMenu();
308 Franz 1298
        ShadeMenu->insertItem( tr("&Other..."));
3 paul 1299
        ShadeMenu->insertItem("0 %");
1300
        ShadeMenu->insertItem("10 %");
1301
        ShadeMenu->insertItem("20 %");
1302
        ShadeMenu->insertItem("30 %");
1303
        ShadeMenu->insertItem("40 %");
1304
        ShadeMenu->insertItem("50 %");
1305
        ShadeMenu->insertItem("60 %");
1306
        ShadeMenu->insertItem("70 %");
1307
        ShadeMenu->insertItem("80 %");
1308
        ShadeMenu->insertItem("90 %");
1309
        ShadeMenu->insertItem("100 %");
1310
        FontMenu = new QPopupMenu();
1311
        TypeStyleMenu = new QPopupMenu();
112 Franz 1312
        TypeStyleMenu->insertItem( tr("Normal"));
3 paul 1313
        tmp = qApp->font();
1314
        tmp.setUnderline(true);
112 Franz 1315
        TypeStyleMenu->insertItem(new FmItem( tr("Underline"), tmp));
3 paul 1316
        tmp = qApp->font();
1317
        tmp.setStrikeOut(true);
112 Franz 1318
        TypeStyleMenu->insertItem(new FmItem( tr("Strikethru"), tmp));
1319
        TypeStyleMenu->insertItem( tr("Small Caps"));
1320
        TypeStyleMenu->insertItem( tr("Superscript"));
1321
        TypeStyleMenu->insertItem( tr("Subscript"));
1322
        TypeStyleMenu->insertItem( tr("Outlined"));
801 cbradney 1323
 
1324
        SetKeyEntry(61, tr("Attach Text to Path"), PfadT, 0);
1325
        SetKeyEntry(62, tr("Show Layers"), viewLpal, 0);
1227 cbradney 1326
        /*CB TODO
1208 cbradney 1327
        SetKeyEntry(63, tr("Javascripts..."), M_EditJavascripts, 0);
1227 cbradney 1328
        SetKeyEntry(64, tr("Undo"), M_EditUndo, CTRL+Key_Z);
1329
        SetKeyEntry(65, tr("Redo"), M_EditRedo, CTRL+SHIFT+Key_Z);
1330
        */
1331
 
1114 tsoots 1332
        SetKeyEntry(66, tr("Show Page Palette"), viewSepal, 0);
1208 cbradney 1333
        SetKeyEntry(67, tr("Lock/Unlock"), M_ItemLock, CTRL+Key_F);
801 cbradney 1334
 
1114 tsoots 1335
        connect(UndoManager::instance(), SIGNAL(newAction(UndoObject*, UndoState*)),
1336
                this, SLOT(refreshUndoRedoItems()));
1337
        connect(UndoManager::instance(), SIGNAL(undoRedoDone()), this, SLOT(refreshUndoRedoItems()));
1338
        connect(toolMenu, SIGNAL(aboutToShow()), this, SLOT(refreshUndoRedoItems()));
1208 cbradney 1339
 
801 cbradney 1340
        connect(ColorMenC, SIGNAL(activated(int)), this, SLOT(setItemFarbe(int)));
1341
        connect(ShadeMenu, SIGNAL(activated(int)), this, SLOT(setItemShade(int)));
1342
        connect(FontMenu, SIGNAL(activated(int)), this, SLOT(setItemFont(int)));
1343
        connect(SizeTMenu, SIGNAL(activated(int)), this, SLOT(setItemFSize(int)));
1344
        connect(TypeStyleMenu, SIGNAL(activated(int)), this, SLOT(setItemTypeStyle(int)));
1208 cbradney 1345
        connect(alignMenu, SIGNAL(activated(int)), this, SLOT(setItemTextAli(int)));
3 paul 1346
}
1347
 
1348
void ScribusApp::initStatusBar()
1349
{
809 cbradney 1350
        FMess = new QLabel( "           ", statusBar(), "ft");
3 paul 1351
        FProg = new QProgressBar(statusBar(), "p");
272 Franz 1352
        FProg->setCenterIndicator(true);
3 paul 1353
        FProg->setFixedWidth( 100 );
809 cbradney 1354
        FProg->reset();
1355
        XMess = new QLabel( tr("X-Pos:"), statusBar(), "xt");
1356
        YMess = new QLabel( tr("Y-Pos:"), statusBar(), "yt");
1357
        XDat = new QLabel( "         ", statusBar(), "dt");
1358
        YDat = new QLabel( "         ", statusBar(), "ydt");
1359
 
1360
        statusBar()->addWidget(FMess, 3, true);
3 paul 1361
        statusBar()->addWidget(FProg, 0, true);
1362
        statusBar()->addWidget(XMess, 0, true);
1363
        statusBar()->addWidget(XDat, 1, true);
1364
        statusBar()->addWidget(YMess, 0, true);
1365
        statusBar()->addWidget(YDat, 1, true);
1366
}
1367
 
80 Franz 1368
void ScribusApp::ReportMP(double xp, double yp)
3 paul 1369
{
1065 cbradney 1370
        QString suffix=unitGetSuffixFromIndex(doc->docUnitIndex);
1371
        int multiplier=unitGetDecimalsFromIndex(doc->docUnitIndex);
806 cbradney 1372
        double divisor = static_cast<double>(multiplier);
1065 cbradney 1373
        int precision=precision = unitGetPrecisionFromIndex(doc->docUnitIndex);
809 cbradney 1374
        QString tmp;
806 cbradney 1375
        XDat->setText(tmp.setNum(qRound(xp*UmReFaktor * multiplier) / divisor, 'f', precision) + suffix);
1376
        YDat->setText(tmp.setNum(qRound(yp*UmReFaktor * multiplier) / divisor, 'f', precision) + suffix);
3 paul 1377
}
1378
 
1230 cbradney 1379
void ScribusApp::SetKeyEntry(int Nr, QString text, int Men, int KeyC, QString actName)
3 paul 1380
{
1381
        Keys ke;
1382
        ke.Name = text;
1383
        ke.MenuID = Men;
1384
        ke.KeyID = KeyC;
1230 cbradney 1385
        if (actName!="")
1386
        {
1387
                if (scrActions[actName])
1388
                        ke.actionName=actName;
1389
                else
1390
                        qDebug(QString("Action Name: %1 does not exist").arg(actName));
1391
        }
3 paul 1392
        Prefs.KeyActions.insert(Nr, ke);
1393
}
1394
 
1395
void ScribusApp::DeleteSel(PageItem *b)
1396
{
238 Franz 1397
        int FirstSel = 0;
1398
        bool first = false;
1065 cbradney 1399
        for (ScText *it = b->itemText.first(); it != 0; it = b->itemText.next())
272 Franz 1400
        {
1401
                if (it->cselect)
1402
                {
238 Franz 1403
                        first = true;
1065 cbradney 1404
                        b->itemText.remove();
1405
                        it = b->itemText.prev();
272 Franz 1406
                        if (it == 0)
1065 cbradney 1407
                                it = b->itemText.first();
272 Franz 1408
                }
238 Franz 1409
                if (!first)
1410
                        FirstSel++;
272 Franz 1411
        }
1065 cbradney 1412
        if (b->itemText.count() != 0)
238 Franz 1413
        {
1065 cbradney 1414
                if (b->itemText.first()->cselect)
3 paul 1415
                {
1065 cbradney 1416
                        b->itemText.remove();
3 paul 1417
                        b->CPos = 0;
238 Franz 1418
                }
3 paul 1419
                else
238 Franz 1420
                        b->CPos = FirstSel;
1421
        }
3 paul 1422
        else
1423
                b->CPos = 0;
272 Franz 1424
        b->HasSel = false;
1425
        DisableTxEdit();
3 paul 1426
}
1427
 
1428
void ScribusApp::setTBvals(PageItem *b)
1429
{
1065 cbradney 1430
        if (b->itemText.count() != 0)
272 Franz 1431
        {
1065 cbradney 1432
                int ChPos = QMIN(b->CPos, static_cast<int>(b->itemText.count()-1));
1433
                doc->CurrentStyle = b->itemText.at(ChPos)->cstyle & 127;
1434
                doc->currentParaStyle = b->itemText.at(ChPos)->cab;
1435
                setAbsValue(doc->currentParaStyle);
1436
                Mpal->setAli(doc->currentParaStyle);
1437
                doc->CurrFont = b->itemText.at(ChPos)->cfont;
1438
                doc->CurrFontSize = b->itemText.at(ChPos)->csize;
1439
                doc->CurrTextFill = b->itemText.at(ChPos)->ccolor;
1440
                doc->CurrTextFillSh = b->itemText.at(ChPos)->cshade;
1441
                doc->CurrTextStroke = b->itemText.at(ChPos)->cstroke;
1442
                doc->CurrTextStrokeSh = b->itemText.at(ChPos)->cshade2;
1443
                doc->CurrTextScale = b->itemText.at(ChPos)->cscale;
68 Franz 1444
                emit TextFarben(doc->CurrTextStroke, doc->CurrTextFill, doc->CurrTextStrokeSh, doc->CurrTextFillSh);
1445
                emit TextIFont(doc->CurrFont);
272 Franz 1446
                emit TextISize(doc->CurrFontSize);
1065 cbradney 1447
                emit TextUSval(b->itemText.at(ChPos)->cextra);
272 Franz 1448
                emit TextStil(doc->CurrentStyle);
68 Franz 1449
                emit TextScale(doc->CurrTextScale);
272 Franz 1450
        }
3 paul 1451
}
1452
 
1453
void ScribusApp::wheelEvent(QWheelEvent *w)
1454
{
1455
        if (HaveDoc)
239 Franz 1456
        {
276 Franz 1457
                if ((w->orientation() != Qt::Vertical) || ( w->state() & ShiftButton ))
3 paul 1458
                {
239 Franz 1459
                        if (w->delta() < 0)
240 Franz 1460
                                view->scrollBy(Prefs.Wheelval, 0);
239 Franz 1461
                        else
240 Franz 1462
                                view->scrollBy(-Prefs.Wheelval, 0);
239 Franz 1463
                }
3 paul 1464
                else
239 Franz 1465
                {
1466
                        if (w->delta() < 0)
240 Franz 1467
                                view->scrollBy(0, Prefs.Wheelval);
239 Franz 1468
                        else
240 Franz 1469
                                view->scrollBy(0, -Prefs.Wheelval);
239 Franz 1470
                }
3 paul 1471
                w->accept();
239 Franz 1472
        }
3 paul 1473
}
1474
 
1475
void ScribusApp::keyPressEvent(QKeyEvent *k)
1476
{
146 Franz 1477
        QWidgetList windows;
237 Franz 1478
        QWidget* w = NULL;
1065 cbradney 1479
        struct ScText *hg;
3 paul 1480
        int kk = k->key();
1481
        int as = k->ascii();
80 Franz 1482
        double altx, alty;
3 paul 1483
        QString uc = k->text();
1484
        QString cr, Tcha, Twort;
1485
        uint Tcoun;
237 Franz 1486
        int len, pos, c;
92 Franz 1487
        if (keyrep)
1488
                return;
1489
        keyrep = true;
3 paul 1490
        switch (k->state())
272 Franz 1491
        {
1492
        case ShiftButton:
1493
                KeyMod = 0x00200000;
1494
                break;
1495
        case AltButton:
1496
                KeyMod = 0x00800000;
1497
                break;
1498
        case ControlButton:
1499
                KeyMod = 0x00400000;
1500
                break;
1501
        default:
1502
                KeyMod = 0;
1503
                break;
1504
        }
276 Franz 1505
        if (kk == Key_F10)
1506
        {
1507
                keyrep = false;
1508
                ToggleAllPalettes();
1509
                return;
1510
        }
1511
        if ((kk == Key_F11) && (HaveDoc))
1512
        {
1513
                keyrep = false;
1514
                ToggleAllGuides();
1515
                return;
1516
        }
292 Franz 1517
        if ((kk == Key_Escape) && (HaveDoc))
1518
        {
1519
                keyrep = false;
855 fschmid 1520
                PageItem *b;
1521
                if ((view->SelItem.count() != 0))
1522
                {
1523
                        b = view->SelItem.at(0);
1065 cbradney 1524
                        switch (doc->appMode)
855 fschmid 1525
                        {
1065 cbradney 1526
                                case NormalMode:
855 fschmid 1527
                                        b->Sizing = false;
1528
                                        if (doc->SubMode != -1)
1529
                                        {
1530
                                                view->Deselect(false);
1531
//                                              if (!doc->TemplateMode)
1065 cbradney 1532
//                                                      Tpal->slotRemoveElement(doc->currentPage->PageNr, b->ItemNr);
855 fschmid 1533
                                                doc->Items.remove(b->ItemNr);
1534
                                        }
1535
                                        break;
1229 fschmid 1536
                                case LinkFrames:
1537
                                case UnlinkFrames:
1065 cbradney 1538
                                case EditMode:
855 fschmid 1539
                                        break;
1065 cbradney 1540
                                case DrawBezierLine:
855 fschmid 1541
                                        b->PoLine.resize(b->PoLine.size()-2);
1542
                                        if (b->PoLine.size() < 4)
1543
                                        {
1544
                                                view->Deselect(false);
1545
//                                              if (!doc->TemplateMode)
1065 cbradney 1546
//                                                      Tpal->slotRemoveElement(doc->currentPage->PageNr, b->ItemNr);
855 fschmid 1547
                                                doc->Items.remove(b->ItemNr);
1548
                                        }
1549
                                        else
1550
                                        {
1551
                                                view->SizeItem(b->PoLine.WidthHeight().x(), b->PoLine.WidthHeight().y(), b->ItemNr, false, false);
1552
                                                view->SetPolyClip(b, qRound(QMAX(b->Pwidth / 2, 1)));
1553
                                                view->AdjustItemSize(b);
1554
                                                b->ContourLine = b->PoLine.copy();
1555
                                                b->ClipEdited = true;
1556
                                                b->FrameType = 3;
1557
                                                slotDocCh();
1558
                                        }
1559
                                        view->FirstPoly = true;
1560
                                        break;
1561
                                default:
1562
                                        view->Deselect(false);
1563
//                                      if (!doc->TemplateMode)
1065 cbradney 1564
//                                              Tpal->slotRemoveElement(doc->currentPage->PageNr, b->ItemNr);
855 fschmid 1565
                                        doc->Items.remove(b->ItemNr);
1566
                                        break;
1567
                        }
1568
                }
1569
                view->Mpressed = false;
1570
                doc->DragP = false;
1571
                doc->leaveDrag = false;
1572
                view->Imoved = false;
1573
                view->mCG = false;
1574
                view->MidButt = false;
1575
                doc->SubMode = -1;
292 Franz 1576
                NoFrameEdit();
1577
                slotSelect();
1578
                return;
1579
        }
232 Franz 1580
        ButtonState buttonState = k->state();
272 Franz 1581
        if ((HaveDoc) && (!view->LE->hasFocus()) && (!view->PGS->PageCombo->hasFocus()))
1582
        {
1065 cbradney 1583
                if ((doc->appMode != EditMode) && (view->SelItem.count() == 0))
272 Franz 1584
                {
1585
                        switch (kk)
146 Franz 1586
                        {
272 Franz 1587
                        case Key_Space:
1588
                                keyrep = false;
1065 cbradney 1589
                                if (doc->appMode == PanningMode)
1590
                                        setAppMode(NormalMode);
272 Franz 1591
                                else
1592
                                {
1065 cbradney 1593
                                        setAppMode(PanningMode);
272 Franz 1594
                                        qApp->setOverrideCursor(QCursor(loadIcon("HandC.xpm")), true);
1595
                                }
1596
                                return;
1597
                                break;
1598
                        case Key_Prior:
1599
                                view->scrollBy(0, -Prefs.Wheelval);
1600
                                keyrep = false;
1601
                                return;
1602
                                break;
1603
                        case Key_Next:
1604
                                view->scrollBy(0, Prefs.Wheelval);
1605
                                keyrep = false;
1606
                                return;
1607
                                break;
1608
                        case Key_Tab:
1609
                                keyrep = false;
1610
                                windows = wsp->windowList();
1611
                                if (windows.count() > 1)
1612
                                {
1613
                                        for (int i = 0; i < static_cast<int>(windows.count()); ++i)
250 Franz 1614
                                        {
272 Franz 1615
                                                if (wsp->activeWindow() == windows.at(i))
1616
                                                {
1617
                                                        if (i == static_cast<int>(windows.count()-1))
1618
                                                                w = windows.at(0);
1619
                                                        else
1620
                                                                w = windows.at(i+1);
1621
                                                        break;
1622
                                                }
250 Franz 1623
                                        }
272 Franz 1624
                                        doc->OpenNodes = Tpal->buildReopenVals();
1232 fschmid 1625
                                        docChecker->clearErrorList();
272 Franz 1626
                                        if ( w )
1627
                                                w->showNormal();
1628
                                        newActWin(w);
1629
                                }
1630
                                return;
1631
                                break;
1632
                        }
1633
                }
456 fschmid 1634
                if (view->SelItem.count() != 0)
272 Franz 1635
                {
456 fschmid 1636
                        PageItem *b = view->SelItem.at(0);
358 Franz 1637
                        if (kk == Key_F9)
1638
                        {
1639
                                keyrep = false;
1065 cbradney 1640
                                if (doc->appMode == EditMode)
1641
                                        setAppMode(NormalMode);
358 Franz 1642
                                else
1065 cbradney 1643
                                        setAppMode(EditMode);
358 Franz 1644
                                return;
1645
                        }
1065 cbradney 1646
                        switch (doc->appMode)
272 Franz 1647
                        {
1065 cbradney 1648
                        case NormalMode:
272 Franz 1649
                                switch (kk)
1650
                                {
360 Franz 1651
                                case Key_Backspace:
272 Franz 1652
                                case Key_Delete:
1653
                                        if (!doc->EditClip)
997 fschmid 1654
                                                view->DeleteItem();
272 Franz 1655
                                        break;
360 Franz 1656
                                case Key_Prior:
1657
                                        if (!b->Locked)
456 fschmid 1658
                                                view->RaiseItem();
360 Franz 1659
                                        break;
1660
                                case Key_Next:
1661
                                        if (!b->Locked)
456 fschmid 1662
                                                view->LowerItem();
360 Franz 1663
                                        break;
272 Franz 1664
                                case Key_Left:
1665
                                        if (!b->Locked)
1666
                                        {
1667
                                                if ( buttonState & ShiftButton )
456 fschmid 1668
                                                        view->moveGroup(-10, 0);
272 Franz 1669
                                                else if ( buttonState & ControlButton )
456 fschmid 1670
                                                        view->moveGroup(-0.1, 0);
272 Franz 1671
                                                else
456 fschmid 1672
                                                        view->moveGroup(-1, 0);
272 Franz 1673
                                        }
1674
                                        break;
1675
                                case Key_Right:
1676
                                        if (!b->Locked)
1677
                                        {
1678
                                                if ( buttonState & ShiftButton )
456 fschmid 1679
                                                        view->moveGroup(10, 0);
272 Franz 1680
                                                else if ( buttonState & ControlButton )
456 fschmid 1681
                                                        view->moveGroup(0.1, 0);
272 Franz 1682
                                                else
456 fschmid 1683
                                                        view->moveGroup(1, 0);
272 Franz 1684
                                        }
1685
                                        break;
1686
                                case Key_Up:
1687
                                        if (!b->Locked)
1688
                                        {
1689
                                                if ( buttonState & ShiftButton )
456 fschmid 1690
                                                        view->moveGroup(0, -10);
272 Franz 1691
                                                else if ( buttonState & ControlButton )
456 fschmid 1692
                                                        view->moveGroup(0, -0.1);
272 Franz 1693
                                                else
456 fschmid 1694
                                                        view->moveGroup(0, -1);
272 Franz 1695
                                        }
1696
                                        break;
1697
                                case Key_Down:
1698
                                        if (!b->Locked)
1699
                                        {
1700
                                                if ( buttonState & ShiftButton )
456 fschmid 1701
                                                        view->moveGroup(0, 10);
272 Franz 1702
                                                else if ( buttonState & ControlButton )
456 fschmid 1703
                                                        view->moveGroup(0, 0.1);
272 Franz 1704
                                                else
456 fschmid 1705
                                                        view->moveGroup(0, 1);
272 Franz 1706
                                        }
1707
                                        break;
1708
                                default:
1709
                                        if (b->PType == 4)
1710
                                        {
1711
                                                if ((kk + KeyMod) == Prefs.KeyActions[59].KeyID)
146 Franz 1712
                                                {
272 Franz 1713
                                                        setNewAbStyle(1);
1714
                                                        b->Tinput = true;
456 fschmid 1715
                                                        view->RefreshItem(b);
272 Franz 1716
                                                }
1717
                                                if ((kk + KeyMod) == Prefs.KeyActions[58].KeyID)
1718
                                                {
1719
                                                        setNewAbStyle(2);
1720
                                                        b->Tinput = true;
456 fschmid 1721
                                                        view->RefreshItem(b);
272 Franz 1722
                                                }
1723
                                                if ((kk + KeyMod) == Prefs.KeyActions[57].KeyID)
1724
                                                {
1725
                                                        setNewAbStyle(0);
1726
                                                        b->Tinput = true;
456 fschmid 1727
                                                        view->RefreshItem(b);
272 Franz 1728
                                                }
1729
                                        }
1730
                                        break;
1731
                                }
1732
                                slotDocCh();
1733
                                break;
1065 cbradney 1734
                        case EditMode:
272 Franz 1735
                                int oldPos = b->CPos; // 15-mar-2004 jjsa for cursor movement with Shift + Arrow key
456 fschmid 1736
                                view->oldCp = b->CPos;
272 Franz 1737
                                if (b->PType == 4)
1738
                                {
456 fschmid 1739
                                        view->slotDoCurs(false);
272 Franz 1740
                                        switch (kk)
1741
                                        {
1742
                                        case Key_Prior:
1743
                                        case Key_Next:
1744
                                        case Key_End:
1745
                                        case Key_Home:
1746
                                        case Key_Right:
1747
                                        case Key_Left:
1748
                                        case Key_Up:
1749
                                        case Key_Down:
1750
                                                if ( (buttonState & ShiftButton) == 0 )
456 fschmid 1751
                                                        view->deselectAll(b);
272 Franz 1752
                                        }
1753
                                        if (UniCinp)
1754
                                        {
1755
                                                int conv = 0;
1756
                                                bool ok = false;
1757
                                                UniCinS += uc;
1758
                                                conv = UniCinS.toInt(&ok, 16);
1759
                                                if (!ok)
1760
                                                {
1761
                                                        UniCinp = false;
1762
                                                        UniCinC = 0;
1763
                                                        UniCinS = "";
1764
                                                        keyrep = false;
1765
                                                        return;
1766
                                                }
1767
                                                UniCinC++;
1768
                                                if (UniCinC == 4)
1769
                                                {
1770
                                                        UniCinp = false;
1771
                                                        UniCinC = 0;
1772
                                                        UniCinS = "";
1773
                                                        if (ok)
146 Franz 1774
                                                        {
282 Franz 1775
                                                                if (b->HasSel)
1776
                                                                        DeleteSel(b);
272 Franz 1777
                                                                if (conv < 31)
1778
                                                                        conv = 32;
1065 cbradney 1779
                                                                hg = new ScText;
272 Franz 1780
                                                                hg->ch = QString(QChar(conv));
1781
                                                                hg->cfont = doc->CurrFont;
1782
                                                                hg->csize = doc->CurrFontSize;
1783
                                                                hg->ccolor = doc->CurrTextFill;
1784
                                                                hg->cshade = doc->CurrTextFillSh;
1785
                                                                hg->cstroke = doc->CurrTextStroke;
1786
                                                                hg->cshade2 = doc->CurrTextStrokeSh;
1787
                                                                hg->cscale = doc->CurrTextScale;
1788
                                                                hg->cselect = false;
1789
                                                                hg->cstyle = doc->CurrentStyle;
1065 cbradney 1790
                                                                hg->cab = doc->currentParaStyle;
1791
                                                                if (doc->docParagraphStyles[doc->currentParaStyle].Font != "")
146 Franz 1792
                                                                {
1065 cbradney 1793
                                                                        hg->cfont = doc->docParagraphStyles[doc->currentParaStyle].Font;
1794
                                                                        hg->csize = doc->docParagraphStyles[doc->currentParaStyle].FontSize;
146 Franz 1795
                                                                }
272 Franz 1796
                                                                hg->cextra = 0;
1797
                                                                hg->xp = 0;
1798
                                                                hg->yp = 0;
1799
                                                                hg->PRot = 0;
1800
                                                                hg->PtransX = 0;
1801
                                                                hg->PtransY = 0;
1065 cbradney 1802
                                                                b->itemText.insert(b->CPos, hg);
272 Franz 1803
                                                                b->CPos += 1;
1804
                                                                b->Tinput = true;
282 Franz 1805
                                                                setTBvals(b);
456 fschmid 1806
                                                                view->RefreshItem(b);
272 Franz 1807
                                                                keyrep = false;
1808
                                                                return;
146 Franz 1809
                                                        }
1810
                                                }
272 Franz 1811
                                                else
1812
                                                {
1813
                                                        keyrep = false;
1814
                                                        return;
1815
                                                }
1816
                                        }
1817
                                        switch (kk)
1818
                                        {
1819
                                        case Key_F12:
1820
                                                UniCinp = true;
1821
                                                UniCinC = 0;
1822
                                                UniCinS = "";
1823
                                                keyrep = false;
1824
                                                return;
1825
                                                break;
291 Franz 1826
                                        case Key_Home:
272 Franz 1827
                                                // go to begin of line
1828
                                                if ( (pos = b->CPos) == 0 )
1829
                                                        break; // at begin of frame
1065 cbradney 1830
                                                len = static_cast<int>(b->itemText.count());
272 Franz 1831
                                                if ( pos == len )
1832
                                                        pos--;
1833
                                                if ( (buttonState & ControlButton) == 0 )
1834
                                                {
1065 cbradney 1835
                                                        alty =  b->itemText.at(pos)->yp;
1836
                                                        c = b->itemText.at(pos)->ch.at(0).latin1();
272 Franz 1837
                                                        if ( c == 13 ) // new line, position is wrong
1838
                                                                if ( --pos > 0 )
1065 cbradney 1839
                                                                        alty =  b->itemText.at(pos)->yp;
272 Franz 1840
                                                        // check for yp at actual position
1841
                                                        if ( pos < len )
1842
                                                        {
1065 cbradney 1843
                                                                altx =  b->itemText.at(pos)->yp;
272 Franz 1844
                                                                if ( altx > alty )
3 paul 1845
                                                                {
272 Franz 1846
                                                                        // we was at begin of line
1847
                                                                        break;
3 paul 1848
                                                                }
272 Franz 1849
                                                        }
1065 cbradney 1850
                                                        while (  pos > 0 && b->itemText.at(pos-1)->yp == alty )
272 Franz 1851
                                                                pos--;
1065 cbradney 1852
                                                        if ( b->itemText.at(pos)->ch.at(0).latin1() == 13 )
272 Franz 1853
                                                                pos++;
1854
                                                }
1855
                                                else
1856
                                                {
1857
                                                        // paragraph begin
1858
                                                        if ( pos < len &&
1065 cbradney 1859
                                                                b->itemText.at(pos)->ch.at(0).latin1() == 13 )
272 Franz 1860
                                                                pos--;
1861
                                                        while(pos > 0 )
1065 cbradney 1862
                                                                if ( b->itemText.at(pos)->ch.at(0).latin1() == 13 )
3 paul 1863
                                                                {
272 Franz 1864
                                                                        pos++;
1865
                                                                        break;
3 paul 1866
                                                                }
272 Franz 1867
                                                                else
1868
                                                                        pos--;
1869
                                                }
1870
                                                b->CPos = pos;
1871
                                                if ( buttonState & ShiftButton )
456 fschmid 1872
                                                        view->ExpandSel(b, -1, oldPos);
272 Franz 1873
                                                break;
291 Franz 1874
                                        case Key_End:
272 Franz 1875
                                                // go to end of line
1065 cbradney 1876
                                                len = static_cast<int>(b->itemText.count());
272 Franz 1877
                                                if ( b->CPos >= len )
1878
                                                        break; // at end of frame
1879
                                                if ( (buttonState & ControlButton) == 0 )
1880
                                                {
1109 fschmid 1881
                                                        if ((b->CPos < len) && ((b->itemText.at(b->CPos)->ch.at(0).latin1() == 13) || (b->itemText.at(b->CPos)->ch.at(0).latin1() == 28)))
239 Franz 1882
                                                        {
272 Franz 1883
                                                                // at end of paragraph and therefore line
1884
                                                                break;
239 Franz 1885
                                                        }
1065 cbradney 1886
                                                        alty =  b->itemText.at(b->CPos)->yp;
1887
                                                        while (  b->CPos < len-1 &&  b->itemText.at(b->CPos+1)->yp == alty )
272 Franz 1888
                                                                b->CPos++;
1889
 
1890
                                                        if ( b->CPos < len -1 )
1065 cbradney 1891
                                                                c = b->itemText.at(b->CPos+1)->ch.at(0).latin1();
272 Franz 1892
                                                        else if ( b->CPos == len - 1 )
1893
                                                                c = 13;
1894
                                                        else
1895
                                                                c = 0;
1109 fschmid 1896
                                                        if (( c == 13 ) || (c = 28))
272 Franz 1897
                                                                b->CPos++;
1898
                                                }
1899
                                                else
1900
                                                {
1901
                                                        // go to end of paragraph
1065 cbradney 1902
                                                        if ( b->itemText.at(b->CPos)->ch.at(0).latin1() == 13 )
239 Franz 1903
                                                        {
272 Franz 1904
                                                                break;
239 Franz 1905
                                                        }
272 Franz 1906
                                                        pos = b->CPos;
1907
                                                        while ( pos < len )
239 Franz 1908
                                                        {
1065 cbradney 1909
                                                                if ( b->itemText.at(pos)->ch.at(0).latin1() == 13 )
272 Franz 1910
                                                                        break;
239 Franz 1911
                                                                else
272 Franz 1912
                                                                        pos++;
239 Franz 1913
                                                        }
272 Franz 1914
                                                        b->CPos = pos;
1915
                                                }
1916