Subversion Repositories Scribus

Rev

Rev 2039 | Rev 2051 | 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"
1641 cbradney 55
#include "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"
1641 cbradney 63
#include "about.h"
910 fschmid 64
#include "libpostscript/pslib.h"
3 paul 65
#include "druck.h"
66
#include "editformats.h"
67
#include "muster.h"
1806 cbradney 68
#include "applytemplatedialog.h"
3 paul 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"
1525 cbradney 77
#include "bookpalette.h"
78
#include "seiten.h"
79
#include "layers.h"
80
#include "frameedit.h"
81
#include "splash.h"
284 Franz 82
#include "measurements.h"
364 Franz 83
#include "gtgettext.h"
506 fschmid 84
#include "fileloader.h"
740 fschmid 85
#include "arrowchooser.h"
788 fschmid 86
#include "tabtypography.h"
879 fschmid 87
#include "tabguides.h"
1194 fschmid 88
#include "tabtools.h"
1114 tsoots 89
#include "undogui.h"
1151 fschmid 90
#include "filewatcher.h"
1202 fschmid 91
#include "charselect.h"
1232 fschmid 92
#include "checkDocument.h"
1235 fschmid 93
#include "tabcheckdoc.h"
1307 fschmid 94
#include "tabpdfoptions.h"
1641 cbradney 95
#include "docitemattrprefs.h"
1644 cbradney 96
#include "pageitemattributes.h"
1694 cbradney 97
#include "tocindexprefs.h"
617 cbradney 98
#ifdef _MSC_VER
99
 #if (_MSC_VER >= 1200)
100
  #include "win-config.h"
101
 #endif
128 Franz 102
#else
103
 #include "config.h"
104
#endif
105
 
3 paul 106
#include "fpoint.h"
107
#include "fpointarray.h"
108
#include "hysettings.h"
109
#include "guidemanager.h"
284 Franz 110
#include "keymanager.h"
3 paul 111
#include "mergedoc.h"
27 Franz 112
#include "lineformats.h"
102 Franz 113
#include "story.h"
123 Franz 114
#include "autoform.h"
140 Franz 115
#include "tabmanager.h"
164 Franz 116
#include "search.h"
169 Franz 117
#include "fontcombo.h"
415 Franz 118
#include "prefsfile.h"
1114 tsoots 119
#include "undomanager.h"
731 fschmid 120
#include "polygonwidget.h"
766 cbradney 121
#include "werktoolb.h"
806 cbradney 122
#include "units.h"
838 cbradney 123
#include "hruler.h"
124
#include "vruler.h"
1208 cbradney 125
#include "scraction.h"
126
#include "menumanager.h"
1293 tsoots 127
#include "undostate.h"
1414 fschmid 128
#include "tree.h"
1500 cbradney 129
#include "scrap.h"
1549 subik 130
#include "pluginmanager.h"
1693 craig 131
#include "scpaths.h"
1972 craig 132
#include "pdfoptions.h"
1993 cbradney 133
#include "actionmanager.h"
2024 cbradney 134
#include "documentinformation.h"
134 Franz 135
 
1702 cbradney 136
//CB TODO include for toc testing for now
137
#include "gtwriter.h"
138
//CB
139
 
3 paul 140
extern QPixmap loadIcon(QString nam);
90 Franz 141
extern bool overwrite(QWidget *parent, QString filename);
1957 cbradney 142
extern void CopyPageItem(struct CopyPasteBuffer *Buffer, PageItem *currItem);
203 Franz 143
extern void ReOrderText(ScribusDoc *doc, ScribusView *view);
204 Franz 144
extern int copyFile(QString source, QString target);
145
extern int moveFile(QString source, QString target);
3 paul 146
 
147
using namespace std;
148
 
149
#ifdef HAVE_CMS
150
cmsHPROFILE CMSoutputProf;
151
cmsHPROFILE CMSprinterProf;
1781 fschmid 152
cmsHTRANSFORM stdTransG;
153
cmsHTRANSFORM stdProofG;
154
cmsHTRANSFORM stdTransImgG;
155
cmsHTRANSFORM stdProofImgG;
156
cmsHTRANSFORM stdTransCMYKG;
157
cmsHTRANSFORM stdProofCMYKG;
158
cmsHTRANSFORM stdTransRGBG;
1488 fschmid 159
bool BlackPoint;
3 paul 160
bool SoftProofing;
161
bool Gamut;
162
bool CMSuse;
163
int IntentMonitor;
164
int IntentPrinter;
165
#endif
166
bool CMSavail;
167
ProfilesL InputProfiles;
168
QString DocDir;
119 Franz 169
ScribusApp* ScApp;
415 Franz 170
PrefsFile* prefsFile;
3 paul 171
 
188 Franz 172
ScribusApp::ScribusApp()
272 Franz 173
{} // ScribusApp::ScribusApp()
188 Franz 174
 
767 cbradney 175
/*
176
 * retval 0 - ok, 1 - no fonts, ...
177
 */
178
int ScribusApp::initScribus(bool showSplash, const QString newGuiLanguage)
188 Franz 179
{
767 cbradney 180
        int retVal=0;
1155 fschmid 181
        ExternalApp = 0;
770 cbradney 182
        guiLanguage = newGuiLanguage;
767 cbradney 183
        initSplash(showSplash);
1208 cbradney 184
        setUsesBigPixmaps(true);
173 Franz 185
        ScApp = this;
355 Franz 186
        CurrStED = NULL;
272 Franz 187
        setCaption( tr("Scribus " VERSION));
118 Franz 188
        setKeyCompression(false);
272 Franz 189
        setIcon(loadIcon("AppIcon.png"));
1325 cbradney 190
        scrActionGroups.clear();
191
        scrActionGroups.setAutoDelete(true);
1208 cbradney 192
        scrActions.clear();
193
        scrRecentFileActions.clear();
1260 cbradney 194
        scrWindowsActions.clear();
1208 cbradney 195
        scrMenuMgr = new MenuManager(this->menuBar());
766 cbradney 196
 
1197 tsoots 197
        PrefsPfad = getPreferencesLocation();
1392 cbradney 198
        bool importingFrom12=convert12Preferences(PrefsPfad);
1197 tsoots 199
        prefsFile = new PrefsFile(QDir::convertSeparators(PrefsPfad + "/prefs13.xml"));
200
 
1247 tsoots 201
        undoManager = UndoManager::instance();
1443 tsoots 202
        objectSpecificUndo = false;
1549 subik 203
        pluginManager = new PluginManager();
1780 cbradney 204
        initDefaultValues();
1995 cbradney 205
 
1993 cbradney 206
        actionManager = new ActionManager(this, "actionManager");
272 Franz 207
        initMenuBar();
208
        initStatusBar();
766 cbradney 209
        initToolBars();
490 cbradney 210
        qApp->processEvents();
675 cbradney 211
 
3 paul 212
        BuFromApp = false;
1485 tsoots 213
 
767 cbradney 214
        initFonts();
215
 
272 Franz 216
        if (NoFonts)
767 cbradney 217
                retVal=1;
272 Franz 218
        else
219
        {
777 fschmid 220
                buildFontMenu();
221
                initDefaultPrefs();
801 cbradney 222
                initArrowStyles();
3 paul 223
                resize(610, 600);
272 Franz 224
                QVBox* vb = new QVBox( this );
225
                vb->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
226
                wsp = new QWorkspace( vb );
227
                setCentralWidget( vb );
3 paul 228
                connect(wsp, SIGNAL(windowActivated(QWidget *)), this, SLOT(newActWin(QWidget *)));
770 cbradney 229
 
801 cbradney 230
                initPalettes();
770 cbradney 231
 
1155 fschmid 232
                fileWatcher = new FileWatcher(this);
1485 tsoots 233
 
1550 cbradney 234
                if (splashScreen != NULL)
235
                        splashScreen->setStatus( tr("Initializing Plugins"));
236
                qApp->processEvents();
237
                pluginManager->initPlugs();
1596 subik 238
 
1437 cbradney 239
                initKeyboardShortcuts();
1485 tsoots 240
 
1437 cbradney 241
                if (splashScreen != NULL)
669 cbradney 242
                        splashScreen->setStatus( tr("Reading Preferences"));
490 cbradney 243
                qApp->processEvents();
1823 cbradney 244
                //<<CB TODO Reset keyboard shortcuts of all 1.3 users as too many 
245
                //     have conflicts if they dont nuke their settings. muhahahhaha
246
                importingFrom12=true;
247
                //>>CB
1392 cbradney 248
                ReadPrefs(importingFrom12);
801 cbradney 249
 
831 cbradney 250
                HaveGS = system(Prefs.gs_exe+" -h > /dev/null 2>&1");
251
                HavePngAlpha = system(Prefs.gs_exe+" -sDEVICE=pngalpha -c quit > /dev/null 2>&1");
252
                DocDir = Prefs.DocDir;
801 cbradney 253
 
669 cbradney 254
                if (splashScreen != NULL)
255
                        splashScreen->setStatus( tr("Getting ICC Profiles"));
831 cbradney 256
                CMSavail = false;
3 paul 257
                GetCMSProfiles();
803 cbradney 258
                initCMS();
831 cbradney 259
 
669 cbradney 260
                if (splashScreen != NULL)
261
                        splashScreen->setStatus( tr("Init Hyphenator"));
490 cbradney 262
                qApp->processEvents();
766 cbradney 263
                initHyphenator();
801 cbradney 264
 
669 cbradney 265
                if (splashScreen != NULL)
266
                        splashScreen->setStatus( tr("Reading Scrapbook"));
801 cbradney 267
                initScrapbook();
268
 
669 cbradney 269
                if (splashScreen != NULL)
1230 cbradney 270
                        splashScreen->setStatus( tr("Setting up Shortcuts"));
271
                qApp->processEvents();
272
                SetShortCut();
1485 tsoots 273
 
1441 cbradney 274
                emit prefsChanged();
1485 tsoots 275
 
1208 cbradney 276
                connect(fileWatcher, SIGNAL(fileDeleted(QString )), this, SLOT(removeRecent(QString)));
3 paul 277
                connect(this, SIGNAL(TextIFont(QString)), this, SLOT(AdjustFontMenu(QString)));
278
                connect(this, SIGNAL(TextISize(int)), this, SLOT(setFSizeMenu(int)));
1545 cbradney 279
                connect(this, SIGNAL(TextISize(int)), propertiesPalette, SLOT(setSize(int)));
280
                connect(this, SIGNAL(TextUSval(double)), propertiesPalette, SLOT(setExtra(double)));
281
                connect(this, SIGNAL(TextStil(int)), propertiesPalette, SLOT(setStil(int)));
282
                connect(this, SIGNAL(TextScale(int)), propertiesPalette, SLOT(setTScale(int)));
283
                connect(this, SIGNAL(TextFarben(QString, QString, int, int)), propertiesPalette, SLOT(setActFarben(QString, QString, int, int)));
766 cbradney 284
 
801 cbradney 285
                initCrashHandler();
3 paul 286
        }
767 cbradney 287
        closeSplash();
288
        return retVal;
3 paul 289
}
290
 
767 cbradney 291
void ScribusApp::initSplash(bool showSplash)
292
{
293
        if (showSplash)
294
        {
295
                splashScreen = new SplashScreen();
296
                splashScreen->setStatus(QObject::tr("Initializing..."));
297
        }
298
        else
299
                splashScreen = NULL;
300
}
301
 
302
void ScribusApp::closeSplash()
303
{
304
        if (splashScreen!=NULL)
305
        {
306
                splashScreen->close();
307
                delete splashScreen;
308
                splashScreen = NULL;
309
        }
310
}
311
 
766 cbradney 312
void ScribusApp::initToolBars()
313
{
314
        WerkTools2 = new QToolBar( tr("File"), this);
1208 cbradney 315
        scrActions["fileNew"]->addTo(WerkTools2);
316
        scrActions["fileOpen"]->addTo(WerkTools2);
1210 cbradney 317
        scrMenuMgr->addMenuToWidgetOfAction("FileOpenRecent", scrActions["fileOpen"]);
1208 cbradney 318
        scrActions["fileSave"]->addTo(WerkTools2);
319
        scrActions["fileClose"]->addTo(WerkTools2);
320
        scrActions["filePrint"]->addTo(WerkTools2);
1255 cbradney 321
        scrActions["toolsPreflightVerifier"]->addTo(WerkTools2);
1208 cbradney 322
        scrActions["fileExportAsPDF"]->addTo(WerkTools2);
1485 tsoots 323
 
1114 tsoots 324
        editToolBar = new QToolBar(tr("Edit"), this);
325
        UndoWidget* uWidget = new UndoWidget(editToolBar, "uWidget");
1247 tsoots 326
        undoManager->registerGui(uWidget);
1485 tsoots 327
 
766 cbradney 328
        WerkTools = new WerkToolB(this);
329
        setDockEnabled(WerkTools, DockLeft, false);
330
        setDockEnabled(WerkTools, DockRight, false);
331
        WerkTools->Sichtbar = true;
332
        WerkTools->setEnabled(false);
333
        WerkToolsP = new WerkToolBP(this);
334
        setDockEnabled(WerkToolsP, DockLeft, false);
335
        setDockEnabled(WerkToolsP, DockRight, false);
336
        WerkToolsP->setEnabled(false);
337
        WerkToolsP->Sichtbar = true;
801 cbradney 338
 
339
        connect(WerkTools, SIGNAL(Schliessen()), this, SLOT(ToggleTools()));
1770 cbradney 340
        connect(WerkToolsP, SIGNAL(NewMode(int)), this, SLOT(setAppMode(int)));
801 cbradney 341
        connect(WerkToolsP, SIGNAL(Schliessen()), this, SLOT(TogglePDFTools()));
766 cbradney 342
}
343
 
767 cbradney 344
void ScribusApp::initFonts()
345
{
346
        if (splashScreen!=NULL) {
347
                splashScreen->setStatus( tr("Searching for Fonts"));
348
                qApp->processEvents();
349
        }
350
        NoFonts=GetAllFonts();
351
        if (NoFonts)
352
        {
353
                if (splashScreen!=NULL)
354
                        splashScreen->close(); // 10/10/2004 pv fix #1200
1801 cbradney 355
                QString mess = tr("There are no fonts found on your system.");
356
                mess += "\n" + tr("Exiting now.");
767 cbradney 357
                QMessageBox::critical(this, tr("Fatal Error"), mess, 1, 0, 0);
358
        }
829 cbradney 359
        else
1485 tsoots 360
        if (splashScreen!=NULL)
829 cbradney 361
        {
362
                splashScreen->setStatus( tr("Font System Initialized"));
363
                qApp->processEvents();
364
        }
767 cbradney 365
}
766 cbradney 366
 
770 cbradney 367
void ScribusApp::initDefaultPrefs()
368
{
369
        /** Default font and size **/
370
        SCFontsIterator it(Prefs.AvailFonts);
1194 fschmid 371
        Prefs.toolSettings.defFont = it.currentKey();
372
        Prefs.toolSettings.defSize = 120;
770 cbradney 373
        Prefs.AppFontSize = qApp->font().pointSize();
374
 
375
        /** Default colours **/
376
        Prefs.DColors.clear();
1693 craig 377
        QString pfadC = ScPaths::instance().libDir();
872 cbradney 378
        QString pfadC2 = pfadC + "rgbscribus.txt";
770 cbradney 379
        QFile fiC(pfadC2);
380
        if (!fiC.exists())
381
        {
382
                Prefs.DColors.insert("White", CMYKColor(0, 0, 0, 0));
383
                Prefs.DColors.insert("Black", CMYKColor(0, 0, 0, 255));
384
                Prefs.DColors.insert("Blue", CMYKColor(255, 255, 0, 0));
385
                Prefs.DColors.insert("Cyan", CMYKColor(255, 0, 0, 0));
386
                Prefs.DColors.insert("Green", CMYKColor(255, 0, 255, 0));
387
                Prefs.DColors.insert("Red", CMYKColor(0, 255, 255, 0));
388
                Prefs.DColors.insert("Yellow", CMYKColor(0, 0, 255, 0));
389
                Prefs.DColors.insert("Magenta", CMYKColor(0, 255, 0, 0));
390
                Prefs.DColorSet = "Scribus-Small";
391
        }
392
        else
393
        {
394
                if (fiC.open(IO_ReadOnly))
395
                {
396
                        QString ColorEn, Cname;
397
                        int Rval, Gval, Bval;
398
                        QTextStream tsC(&fiC);
399
                        ColorEn = tsC.readLine();
400
                        while (!tsC.atEnd())
401
                        {
402
                                ColorEn = tsC.readLine();
403
                                QTextStream CoE(&ColorEn, IO_ReadOnly);
404
                                CoE >> Rval;
405
                                CoE >> Gval;
406
                                CoE >> Bval;
407
                                CoE >> Cname;
408
                                CMYKColor tmp;
409
                                tmp.setColorRGB(Rval, Gval, Bval);
410
                                Prefs.DColors.insert(Cname, tmp);
411
                        }
412
                        fiC.close();
413
                }
414
                Prefs.DColorSet = "X11 RGB-Set";
415
        }
416
 
417
        Prefs.Wheelval = 40;
879 fschmid 418
        Prefs.guidesSettings.marginsShown = true;
419
        Prefs.guidesSettings.framesShown = true;
420
        Prefs.guidesSettings.gridShown = false;
421
        Prefs.guidesSettings.guidesShown = false;
422
        Prefs.guidesSettings.baseShown = false;
423
        Prefs.guidesSettings.showPic = true;
424
        Prefs.guidesSettings.linkShown = false;
425
        Prefs.guidesSettings.grabRad = 4;
426
        Prefs.guidesSettings.guideRad = 10;
427
        Prefs.guidesSettings.minorGrid = 20;
428
        Prefs.guidesSettings.majorGrid = 100;
429
        Prefs.guidesSettings.minorColor = QColor(green);
430
        Prefs.guidesSettings.majorColor = QColor(green);
431
        Prefs.guidesSettings.margColor = QColor(blue);
432
        Prefs.guidesSettings.guideColor = QColor(darkBlue);
433
        Prefs.guidesSettings.baseColor = QColor(lightGray);
823 fschmid 434
        Prefs.typographicSetttings.valueSuperScript = 33;
435
        Prefs.typographicSetttings.scalingSuperScript = 100;
436
        Prefs.typographicSetttings.valueSubScript = 33;
437
        Prefs.typographicSetttings.scalingSubScript = 100;
438
        Prefs.typographicSetttings.valueSmallCaps = 75;
439
        Prefs.typographicSetttings.autoLineSpacing = 20;
440
        Prefs.typographicSetttings.valueBaseGrid = 14.4;
441
        Prefs.typographicSetttings.offsetBaseGrid = 0.0;
770 cbradney 442
        Prefs.GUI = "Default";
1194 fschmid 443
        Prefs.toolSettings.dPen = "Black";
444
        Prefs.toolSettings.dBrush = "Black";
445
        Prefs.toolSettings.dShade = 100;
446
        Prefs.toolSettings.dShade2 = 100;
447
        Prefs.toolSettings.dLineArt = SolidLine;
448
        Prefs.toolSettings.dWidth = 1;
449
        Prefs.toolSettings.dPenLine = "Black";
450
        Prefs.toolSettings.dPenText = "Black";
451
        Prefs.toolSettings.dStrokeText = "Black";
1120 fschmid 452
        Prefs.DpapColor = QColor(white);
1194 fschmid 453
        Prefs.toolSettings.dCols = 1;
454
        Prefs.toolSettings.dGap = 0.0;
455
        Prefs.toolSettings.dShadeLine = 100;
456
        Prefs.toolSettings.dLstyleLine = SolidLine;
457
        Prefs.toolSettings.dWidthLine = 1;
458
        Prefs.toolSettings.dStartArrow = 0;
459
        Prefs.toolSettings.dEndArrow = 0;
460
        Prefs.toolSettings.magMin = 10;
461
        Prefs.toolSettings.magMax = 3200;
462
        Prefs.toolSettings.magStep = 25;
463
        Prefs.toolSettings.dBrushPict = "White";
464
        Prefs.toolSettings.shadePict = 100;
465
        Prefs.toolSettings.scaleX = 1;
466
        Prefs.toolSettings.scaleY = 1;
1187 fschmid 467
        Prefs.guidesSettings.before = true;
1065 cbradney 468
        Prefs.docUnitIndex = 0;
1194 fschmid 469
        Prefs.toolSettings.polyC = 4;
470
        Prefs.toolSettings.polyF = 0.5;
471
        Prefs.toolSettings.polyS = false;
472
        Prefs.toolSettings.polyFd = 0;
473
        Prefs.toolSettings.polyR = 0;
844 fschmid 474
        Prefs.mainToolBarSettings.visible = true;
475
        Prefs.pdfToolBarSettings.visible = true;
770 cbradney 476
        Prefs.PSize = 40;
477
        Prefs.SaveAtQ = true;
478
        Prefs.ClipMargin = true;
479
        Prefs.GCRMode = true;
480
        Prefs.RecentDocs.clear();
481
        Prefs.RecentDCount = 5;
1065 cbradney 482
        Prefs.marginColored = false;
1542 cbradney 483
        Prefs.pageSize = "A4";
1545 cbradney 484
        Prefs.pageOrientation = 0;
485
        Prefs.PageWidth = 595;
486
        Prefs.PageHeight = 842;
1975 mrdocs 487
        Prefs.RandOben = 40;
770 cbradney 488
        Prefs.RandUnten = 40;
1975 mrdocs 489
        Prefs.RandLinks = 40;
490
        Prefs.RandRechts = 40;
1545 cbradney 491
        Prefs.FacingPages = false;
492
        Prefs.LeftPageFirst = false;
1194 fschmid 493
        Prefs.toolSettings.scaleType = true;
494
        Prefs.toolSettings.aspectRatio = true;
2025 fschmid 495
        Prefs.toolSettings.lowResType = 1;
2040 fschmid 496
        Prefs.toolSettings.useEmbeddedPath = false;
770 cbradney 497
        Prefs.MinWordLen = 3;
498
        Prefs.HyCount = 2;
499
        Prefs.Language = "";
500
        Prefs.Automatic = true;
501
        Prefs.AutoCheck = false;
502
        Prefs.AutoSave = false;
503
        Prefs.AutoSaveTime = 600000;
504
        Prefs.DisScale = 1.0;
505
        Prefs.DocDir = QDir::homeDirPath();
506
        Prefs.ProfileDir = "";
507
        Prefs.ScriptDir = "";
508
        Prefs.TemplateDir = "";
509
        Prefs.CustomColorSets.clear();
510
        Prefs.PrPr_Mode = false;
511
        Prefs.Gcr_Mode = true;
512
        Prefs.PrPr_AlphaText = false;
513
        Prefs.PrPr_AlphaGraphics = false;
514
        Prefs.PrPr_Transparency = false;
515
        Prefs.PrPr_C = true;
516
        Prefs.PrPr_M = true;
517
        Prefs.PrPr_Y = true;
518
        Prefs.PrPr_K = true;
519
        Prefs.gimp_exe = "gimp";
1545 cbradney 520
        Prefs.gs_AntiAliasGraphics = true;
521
        Prefs.gs_AntiAliasText = true;
770 cbradney 522
        Prefs.gs_exe = "gs";
523
        Prefs.STEcolor = QColor(white);
524
        Prefs.STEfont = font().toString();
525
        Prefs.DCMSset.DefaultMonitorProfile = "";
526
        Prefs.DCMSset.DefaultPrinterProfile = "";
527
        Prefs.DCMSset.DefaultInputProfile = "";
528
        Prefs.DCMSset.DefaultInputProfile2 = "";
529
        Prefs.DCMSset.CMSinUse = false;
530
        Prefs.DCMSset.SoftProofOn = false;
531
        Prefs.DCMSset.GamutCheck = false;
532
        Prefs.DCMSset.BlackPoint = true;
533
        Prefs.DCMSset.DefaultIntentMonitor = 1;
534
        Prefs.DCMSset.DefaultIntentMonitor2 = 1;
535
        Prefs.DCMSset.DefaultIntentPrinter = 0;
536
        Prefs.GFontSub.clear();
801 cbradney 537
        Prefs.ScratchLeft = 100;
538
        Prefs.ScratchRight = 100;
539
        Prefs.ScratchTop = 20;
540
        Prefs.ScratchBottom = 20;
1468 fschmid 541
        Prefs.askBeforeSubstituite = true;
1261 fschmid 542
        struct checkerPrefs checkerSettings;
543
        checkerSettings.ignoreErrors = false;
544
        checkerSettings.autoCheck = true;
545
        checkerSettings.checkGlyphs = true;
546
        checkerSettings.checkOrphans = true;
547
        checkerSettings.checkOverflow = true;
548
        checkerSettings.checkPictures = true;
549
        checkerSettings.checkResolution = true;
550
        checkerSettings.checkTransparency = true;
1284 fschmid 551
        checkerSettings.checkAnnotations = false;
552
        checkerSettings.checkRasterPDF = true;
1261 fschmid 553
        checkerSettings.minResolution = 72.0;
554
        Prefs.checkerProfiles.insert( tr("Postscript"), checkerSettings);
1926 cbradney 555
        Prefs.checkerProfiles.insert( tr("PDF 1.3"), checkerSettings);
1261 fschmid 556
        checkerSettings.checkTransparency = false;
1926 cbradney 557
        Prefs.checkerProfiles.insert( tr("PDF 1.4"), checkerSettings);
1261 fschmid 558
        checkerSettings.checkTransparency = true;
1284 fschmid 559
        checkerSettings.checkAnnotations = true;
1261 fschmid 560
        checkerSettings.minResolution = 144.0;
561
        Prefs.checkerProfiles.insert( tr("PDF/X-3"), checkerSettings);
562
        Prefs.curCheckProfile = tr("Postscript");
1545 cbradney 563
        Prefs.PDF_Options.Thumbnails = false;
564
        Prefs.PDF_Options.Articles = false;
565
        Prefs.PDF_Options.Compress = true;
566
        Prefs.PDF_Options.CompressMethod = 0;
567
        Prefs.PDF_Options.Quality = 0;
568
        Prefs.PDF_Options.RecalcPic = false;
569
        Prefs.PDF_Options.Bookmarks = false;
570
        Prefs.PDF_Options.PicRes = 300;
1973 craig 571
        Prefs.PDF_Options.Version = PDFOptions::PDFVersion_14;
1545 cbradney 572
        Prefs.PDF_Options.Resolution = 300;
573
        Prefs.PDF_Options.Binding = 0;
574
        Prefs.PDF_Options.EmbedList.clear();
575
        Prefs.PDF_Options.SubsetList.clear();
576
        Prefs.PDF_Options.MirrorH = false;
577
        Prefs.PDF_Options.MirrorV = false;
578
        Prefs.PDF_Options.RotateDeg = 0;
579
        Prefs.PDF_Options.PresentMode = false;
580
        Prefs.PDF_Options.Datei = "";
581
        Prefs.PDF_Options.PresentVals.clear();
582
        Prefs.PDF_Options.isGrayscale = false;
583
        Prefs.PDF_Options.UseRGB = true;
584
        Prefs.PDF_Options.UseProfiles = false;
585
        Prefs.PDF_Options.UseProfiles2 = false;
586
        Prefs.PDF_Options.SolidProf = "";
587
        Prefs.PDF_Options.SComp = 3;
588
        Prefs.PDF_Options.ImageProf = "";
589
        Prefs.PDF_Options.PrintProf = "";
590
        Prefs.PDF_Options.Info = "";
591
        Prefs.PDF_Options.Intent = 0;
592
        Prefs.PDF_Options.Intent2 = 0;
593
        Prefs.PDF_Options.BleedTop = 0;
594
        Prefs.PDF_Options.BleedLeft = 0;
595
        Prefs.PDF_Options.BleedRight = 0;
596
        Prefs.PDF_Options.BleedBottom = 0;
597
        Prefs.PDF_Options.EmbeddedI = false;
598
        Prefs.PDF_Options.Encrypt = false;
599
        Prefs.PDF_Options.PassOwner = "";
600
        Prefs.PDF_Options.PassUser = "";
601
        Prefs.PDF_Options.Permissions = -4;
602
        Prefs.PDF_Options.UseLPI = false;
603
        Prefs.PDF_Options.LPISettings.clear();
1641 cbradney 604
 
1642 cbradney 605
        //Attribute setup
1641 cbradney 606
        Prefs.defaultItemAttributes.clear();
1701 cbradney 607
        Prefs.defaultToCSetups.clear();
801 cbradney 608
}
770 cbradney 609
 
801 cbradney 610
 
611
void ScribusApp::initDefaultValues()
612
{
831 cbradney 613
        dirs = prefsFile->getContext("dirs");
1780 cbradney 614
        HaveDoc = false;
801 cbradney 615
        singleClose = false;
616
        ScriptRunning = false;
617
        view = NULL;
618
        doc = NULL;
619
        Buffer2 = "";
620
        UniCinp = false;
621
        UniCinC = 0;
622
        UniCinS = "";
623
        DispX = 10;
624
        DispY = 10;
625
        DocNr = 1;
626
        PrinterUsed = false;
627
        PDef.Pname = "";
628
        PDef.Dname = "";
629
        PDef.Command = "";
630
        keyrep = false;
1204 tsoots 631
        _arrowKeyDown = false;
801 cbradney 632
        ClipB = QApplication::clipboard();
633
        PalettesStat[0] = false;
634
        GuidesStat[0] = false;
635
 
636
        connect(ClipB, SIGNAL(dataChanged()), this, SLOT(ClipChange()));
770 cbradney 637
}
638
 
801 cbradney 639
void ScribusApp::initKeyboardShortcuts()
640
{
1478 cbradney 641
        for( QMap<QString, QGuardedPtr<ScrAction> >::Iterator it = scrActions.begin(); it!=scrActions.end(); ++it )
1525 cbradney 642
        {
1478 cbradney 643
                SetKeyEntry(it.key(), it.data()->cleanMenuText(), QString(it.data()->accel()),0);
1525 cbradney 644
                //qDebug(QString("|-\n|%1||%2||%3").arg(it.key()).arg(it.data()->cleanMenuText()).arg(QString(it.data()->accel())));
645
        }
801 cbradney 646
}
647
 
648
void ScribusApp::initArrowStyles()
649
{
1065 cbradney 650
        struct ArrowDesc arrow;
801 cbradney 651
        FPointArray points;
652
        QWMatrix arrowScaling;
653
        arrowScaling.scale(0.5, 0.5);
654
        arrow.name = "Arrow1L";
655
        arrow.userArrow = false;
656
        points.addQuadPoint(0, 0, 0, 0, 0, 0, 0, 0);
657
        points.addQuadPoint(-5, -5, -5, -5, -5, -5, -5, -5);
658
        points.addQuadPoint(12, 0, 12, 0, 12, 0, 12, 0);
659
        points.addQuadPoint(-5, 5, -5, 5, -5, 5, -5, 5);
660
        points.addQuadPoint(0, 0, 0, 0, 0, 0, 0, 0);
661
        arrow.points = points.copy();
662
        Prefs.arrowStyles.append(arrow);
663
        arrow.name = "Arrow1M";
664
        points.map(arrowScaling);
665
        arrow.points = points.copy();
666
        Prefs.arrowStyles.append(arrow);
667
        arrow.name = "Arrow1S";
668
        points.map(arrowScaling);
669
        arrow.points = points.copy();
670
        Prefs.arrowStyles.append(arrow);
671
        arrow.name = "SquareL";
672
        points.resize(0);
673
        points.addQuadPoint(-5, -5, -5, -5, -5, -5, -5, -5);
674
        points.addQuadPoint(5, -5, 5, -5, 5, -5, 5, -5);
675
        points.addQuadPoint(5, 5, 5, 5, 5, 5, 5, 5);
676
        points.addQuadPoint(-5, 5, -5, 5, -5, 5, -5, 5);
677
        points.addQuadPoint(-5, -5, -5, -5, -5, -5, -5, -5);
678
        arrow.points = points.copy();
679
        Prefs.arrowStyles.append(arrow);
680
        arrow.name = "SquareM";
681
        points.map(arrowScaling);
682
        arrow.points = points.copy();
683
        Prefs.arrowStyles.append(arrow);
684
        arrow.name = "SquareS";
685
        points.map(arrowScaling);
686
        arrow.points = points.copy();
687
        Prefs.arrowStyles.append(arrow);
688
        arrow.name = "TriangleInL";
689
        points.resize(0);
690
        points.addQuadPoint(5.77, 0, 5.77, 0, 5.77, 0, 5.77, 0);
691
        points.addQuadPoint(-2.88, 5, -2.88, 5, -2.88, 5, -2.88, 5);
692
        points.addQuadPoint(-2.88, -5, -2.88, -5, -2.88, -5, -2.88, -5);
693
        points.addQuadPoint(5.77, 0, 5.77, 0, 5.77, 0, 5.77, 0);
694
        arrow.points = points.copy();
695
        Prefs.arrowStyles.append(arrow);
696
        arrow.name = "TriangleInM";
697
        points.map(arrowScaling);
698
        arrow.points = points.copy();
699
        Prefs.arrowStyles.append(arrow);
700
        arrow.name = "TriangleInS";
701
        points.map(arrowScaling);
702
        arrow.points = points.copy();
703
        Prefs.arrowStyles.append(arrow);
704
        arrow.name = "TriangleOutL";
705
        points.resize(0);
706
        points.addQuadPoint(-5.77, 0, -5.77, 0, -5.77, 0, -5.77, 0);
707
        points.addQuadPoint(2.88, 5, 2.88, 5, 2.88, 5, 2.88, 5);
708
        points.addQuadPoint(2.88, -5, 2.88, -5, 2.88, -5, 2.88, -5);
709
        points.addQuadPoint(-5.77, 0, -5.77, 0, -5.77, 0, -5.77, 0);
710
        arrow.points = points.copy();
711
        Prefs.arrowStyles.append(arrow);
712
        arrow.name = "TriangleOutM";
713
        points.map(arrowScaling);
714
        arrow.points = points.copy();
715
        Prefs.arrowStyles.append(arrow);
716
        arrow.name = "TriangleOutS";
717
        points.map(arrowScaling);
718
        arrow.points = points.copy();
719
        Prefs.arrowStyles.append(arrow);
720
}
721
 
722
void ScribusApp::initPalettes()
723
{
1493 cbradney 724
        //CB TODO hide the publicly available members of some palettes
725
        // these must be filtered too as they take control of the palettes events
1545 cbradney 726
        outlinePalette = new Tree(this, this);
727
        connect( scrActions["toolsOutline"], SIGNAL(toggled(bool)) , outlinePalette, SLOT(setPaletteShown(bool)) );
728
        connect( outlinePalette, SIGNAL(paletteShown(bool)), scrActions["toolsOutline"], SLOT(setOn(bool)));
729
        outlinePalette->setPrefsContext("OutlinePalette");
730
        outlinePalette->reportDisplay->installEventFilter(this);
731
        propertiesPalette = new Mpalette(this, &Prefs);
732
        connect( scrActions["toolsProperties"], SIGNAL(toggled(bool)) , propertiesPalette, SLOT(setPaletteShown(bool)) );
733
        connect( propertiesPalette, SIGNAL(paletteShown(bool)), scrActions["toolsProperties"], SLOT(setOn(bool)));
734
        propertiesPalette->setPrefsContext("PropertiesPalette");
735
        propertiesPalette->Cpal->SetColors(Prefs.DColors);
736
        propertiesPalette->Cpal->UseTrans(true);
737
        propertiesPalette->Fonts->RebuildList(&Prefs, 0);
738
        propertiesPalette->installEventFilter(this);
739
        nodePalette = new NodePalette(this);
740
        nodePalette->setPrefsContext("NodePalette");
741
        nodePalette->installEventFilter(this);
1549 subik 742
 
1545 cbradney 743
        layerPalette = new LayerPalette(this);
744
        connect( scrActions["toolsLayers"], SIGNAL(toggled(bool)) , layerPalette, SLOT(setPaletteShown(bool)) );
745
        connect( layerPalette, SIGNAL(paletteShown(bool)), scrActions["toolsLayers"], SLOT(setOn(bool)));
746
        layerPalette->setPrefsContext("LayerPalette");
747
        layerPalette->installEventFilter(this);
748
        layerPalette->Table->installEventFilter(this);
749
        scrapbookPalette = new Biblio(this, &Prefs);
750
        connect( scrActions["toolsScrapbook"], SIGNAL(toggled(bool)) , scrapbookPalette, SLOT(setPaletteShown(bool)) );
751
        connect( scrapbookPalette, SIGNAL(paletteShown(bool)), scrActions["toolsScrapbook"], SLOT(setOn(bool)));
752
        scrapbookPalette->setPrefsContext("ScrapbookPalette");
753
        scrapbookPalette->installEventFilter(this);
754
        scrapbookPalette->BibWin->installEventFilter(this);
755
        pagePalette = new SeitenPal(this);
756
        connect( scrActions["toolsPages"], SIGNAL(toggled(bool)) , pagePalette, SLOT(setPaletteShown(bool)) );
757
        connect( scrActions["toolsPages"], SIGNAL(toggled(bool)) , this, SLOT(setPagePalette(bool)) );
758
        connect( pagePalette, SIGNAL(paletteShown(bool)), scrActions["toolsPages"], SLOT(setOn(bool)));
759
        pagePalette->setPrefsContext("PagePalette");
760
        pagePalette->installEventFilter(this);
761
        bookmarkPalette = new BookPalette(this);
762
        connect( scrActions["toolsBookmarks"], SIGNAL(toggled(bool)) , bookmarkPalette, SLOT(setPaletteShown(bool)) );
763
        connect( bookmarkPalette, SIGNAL(paletteShown(bool)), scrActions["toolsBookmarks"], SLOT(setOn(bool)));
764
        bookmarkPalette->setPrefsContext("BookmarkPalette");
765
        bookmarkPalette->installEventFilter(this);
766
        measurementPalette = new Measurements(this);
767
        connect( scrActions["toolsMeasurements"], SIGNAL(toggled(bool)) , measurementPalette, SLOT(setPaletteShown(bool)) );
1525 cbradney 768
        connect( scrActions["toolsMeasurements"], SIGNAL(toggledData(bool, int)) , this, SLOT(setAppModeByToggle(bool, int)) );
1545 cbradney 769
        connect( measurementPalette, SIGNAL(paletteShown(bool)), scrActions["toolsMeasurements"], SLOT(setOn(bool)));
770
        measurementPalette->setPrefsContext("MeasurementPalette");
771
        measurementPalette->installEventFilter(this);
772
        measurementPalette->hide();
773
        docCheckerPalette = new CheckDocument(this, false);
774
        connect( scrActions["toolsPreflightVerifier"], SIGNAL(toggled(bool)) , docCheckerPalette, SLOT(setPaletteShown(bool)) );
775
        connect( docCheckerPalette, SIGNAL(paletteShown(bool)), scrActions["toolsPreflightVerifier"], SLOT(setOn(bool)));
1825 fschmid 776
        connect( docCheckerPalette, SIGNAL(paletteShown(bool)), this, SLOT(docCheckToggle(bool)));
1545 cbradney 777
        docCheckerPalette->setPrefsContext("DocCheckerPalette");
778
        docCheckerPalette->installEventFilter(this);
779
        docCheckerPalette->hide();
1448 cbradney 780
 
781
        undoPalette = new UndoPalette(this, "undoPalette");
1493 cbradney 782
        undoPalette->installEventFilter(this);
1448 cbradney 783
        undoManager->registerGui(undoPalette);
1493 cbradney 784
        connect(undoPalette, SIGNAL(paletteShown(bool)), this, SLOT(setUndoPalette(bool)));
1448 cbradney 785
        connect(undoPalette, SIGNAL(objectMode(bool)), this, SLOT(setUndoMode(bool)));
1485 tsoots 786
 
1545 cbradney 787
        connect(propertiesPalette, SIGNAL(DocChanged()), this, SLOT(slotDocCh()));
788
        connect(propertiesPalette, SIGNAL(NewAbStyle(int)), this, SLOT(setNewAbStyle(int)));
789
        connect(propertiesPalette, SIGNAL(BackHome()), this, SLOT(Aktiv()));
790
        connect(propertiesPalette, SIGNAL(Stellung(int)), this, SLOT(setItemHoch(int)));
791
        connect(propertiesPalette, SIGNAL(EditCL()), this, SLOT(ToggleFrameEdit()));
792
        connect(propertiesPalette, SIGNAL(NewTF(QString)), this, SLOT(SetNewFont(QString)));
793
        connect(propertiesPalette, SIGNAL(UpdtGui(int)), this, SLOT(HaveNewSel(int)));
794
        connect(propertiesPalette->Cpal, SIGNAL(NewPen(QString)), this, SLOT(setPenFarbe(QString)));
795
        connect(propertiesPalette->Cpal, SIGNAL(NewBrush(QString)), this, SLOT(setBrushFarbe(QString)));
796
        connect(propertiesPalette->Cpal, SIGNAL(NewPenShade(int)), this, SLOT(setPenShade(int)));
797
        connect(propertiesPalette->Cpal, SIGNAL(NewBrushShade(int)), this, SLOT(setBrushShade(int)));
2026 cbradney 798
        connect(propertiesPalette->Cpal, SIGNAL(NewTrans(double)), this, SLOT(setItemFillTransparency(double)));
799
        connect(propertiesPalette->Cpal, SIGNAL(NewTransS(double)), this, SLOT(setItemLineTransparency(double)));
1545 cbradney 800
        connect(propertiesPalette->Cpal, SIGNAL(NewGradient(int)), this, SLOT(setGradFill(int)));
801
        connect(propertiesPalette->Cpal->gradEdit->Preview, SIGNAL(gradientChanged()), this, SLOT(updtGradFill()));
802
        connect(propertiesPalette->Cpal, SIGNAL(gradientChanged()), this, SLOT(updtGradFill()));
803
        connect(propertiesPalette->Cpal, SIGNAL(QueryItem()), this, SLOT(GetBrushPen()));
804
        connect(docCheckerPalette, SIGNAL(rescan()), this, SLOT(slotCheckDoc()));
805
        connect(docCheckerPalette, SIGNAL(selectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
806
        connect(docCheckerPalette, SIGNAL(selectPage(int)), this, SLOT(SelectFromOutlS(int)));
807
        connect(docCheckerPalette, SIGNAL(selectTemplatePage(QString)), this, SLOT(ManageTemp(QString)));
808
        connect(outlinePalette, SIGNAL(selectElement(int, int, bool)), this, SLOT(SelectFromOutl(int, int, bool)));
809
        connect(outlinePalette, SIGNAL(selectPage(int)), this, SLOT(SelectFromOutlS(int)));
810
        connect(outlinePalette, SIGNAL(selectTemplatePage(QString)), this, SLOT(ManageTemp(QString)));
811
        connect(propertiesPalette->Spal, SIGNAL(newStyle(int)), this, SLOT(setNewAbStyle(int)));
812
        connect(propertiesPalette, SIGNAL(EditLSt()), this, SLOT(slotEditLineStyles()));
813
        connect(nodePalette, SIGNAL(Schliessen()), this, SLOT(NoFrameEdit()));
814
        connect(layerPalette, SIGNAL(LayerActivated(int)), this, SLOT(changeLayer(int)));
815
        connect(layerPalette, SIGNAL(LayerRemoved(int, bool)), this, SLOT(LayerRemove(int, bool)));
816
        connect(layerPalette, SIGNAL(LayerChanged()), this, SLOT(showLayer()));
817
        connect(pagePalette, SIGNAL(EditTemp(QString)), this, SLOT(ManageTemp(QString)));
818
        connect(pagePalette->PageView, SIGNAL(UseTemp(QString, int)), this, SLOT(Apply_Temp(QString, int)));
819
        connect(pagePalette->PageView, SIGNAL(NewPage(int, QString)), this, SLOT(slotNewPageP(int, QString)));
820
        connect(pagePalette->Trash, SIGNAL(DelPage(int)), this, SLOT(DeletePage2(int)));
821
        connect(pagePalette, SIGNAL(GotoSeite(int)), this, SLOT(SelectFromOutlS(int)));
822
        connect(bookmarkPalette->BView, SIGNAL(MarkMoved()), this, SLOT(StoreBookmarks()));
823
        connect(bookmarkPalette->BView, SIGNAL(ChangeBMNr(int, int, int)), this, SLOT(ChBookmarks(int, int, int)));
824
        connect(bookmarkPalette->BView, SIGNAL(SelectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
801 cbradney 825
}
826
 
827
void ScribusApp::initScrapbook()
828
{
1554 cbradney 829
        QString scrapbookFile = QDir::convertSeparators(PrefsPfad+"/scrap13.scs");
801 cbradney 830
        QFileInfo scrapbookFileInfo = QFileInfo(scrapbookFile);
831
        if (scrapbookFileInfo.exists())
1545 cbradney 832
                scrapbookPalette->BibWin->ReadContents(scrapbookFile);
833
        scrapbookPalette->ScFilename = scrapbookFile;
834
        scrapbookPalette->AdjustMenu();
801 cbradney 835
}
836
 
837
void ScribusApp::initCrashHandler()
838
{
839
        typedef void (*HandlerType)(int);
840
        HandlerType handler     = 0;
841
        handler = ScribusApp::defaultCrashHandler;
842
        if (!handler)
843
                handler = SIG_DFL;
844
        sigset_t mask;
845
        sigemptyset(&mask);
846
#ifdef SIGSEGV
847
        signal (SIGSEGV, handler);
848
        sigaddset(&mask, SIGSEGV);
849
#endif
850
#ifdef SIGFPE
851
        signal (SIGFPE, handler);
852
        sigaddset(&mask, SIGFPE);
853
#endif
854
#ifdef SIGILL
855
        signal (SIGILL, handler);
856
        sigaddset(&mask, SIGILL);
857
#endif
858
#ifdef SIGABRT
859
        signal (SIGABRT, handler);
860
        sigaddset(&mask, SIGABRT);
861
#endif
862
        sigprocmask(SIG_UNBLOCK, &mask, 0);
863
}
864
 
770 cbradney 865
const QString ScribusApp::getGuiLanguage()
866
{
867
        return guiLanguage;
868
}
869
 
1525 cbradney 870
bool ScribusApp::warningVersion(QWidget *parent)
871
{
872
        bool retval = false;
873
        int t = QMessageBox::warning(parent, QObject::tr("Scribus Development Version"),
1554 cbradney 874
                                                                 QObject::tr("You are running a development version of Scribus 1.3.x.\nThe process of saving will make files originating from versions of\nScribus of 1.2.x or lower unusable again in those versions.\nAre you sure you wish to proceed with this operation?"),
1525 cbradney 875
                                                                 QObject::tr("&Cancel"), QObject::tr("&Proceed"), "", 1, 0);
876
        if (t == 1)
877
                retval = true;
878
        return retval;
879
}
880
 
675 cbradney 881
/*!
882
 \fn QString ScribusApp::getPreferencesLocation()
883
 \author Craig Bradney
884
 \date Thu 18 Nov 2004
885
 \brief Get the user's preference file location. Rename any existing old preferences files
886
 \param None
887
 \retval QString Location of the user's preferences
888
 */
889
 
890
QString ScribusApp::getPreferencesLocation()
891
{
892
        QString Pff = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus");
893
        QFileInfo Pffi = QFileInfo(Pff);
894
        QString PrefsPfad;
1144 cbradney 895
        //If we are using ~/.scribus
675 cbradney 896
        if (Pffi.exists())
897
        {
898
                if (Pffi.isDir())
899
                        PrefsPfad = Pff;
900
                else
901
                        PrefsPfad = QDir::homeDirPath();
902
        }
1144 cbradney 903
        else // Move to using ~/.scribus/scribus.* from ~/.scribus.*
675 cbradney 904
        {
1144 cbradney 905
                QDir prefsDirectory = QDir();
906
                prefsDirectory.mkdir(Pff);
675 cbradney 907
                PrefsPfad = Pff;
1144 cbradney 908
                QString oldPR = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus.rc");
909
                QFileInfo oldPi = QFileInfo(oldPR);
910
                if (oldPi.exists())
911
                        moveFile(oldPR, Pff+"/scribus.rc");
912
                QString oldPR2 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusfont.rc");
913
                QFileInfo oldPi2 = QFileInfo(oldPR2);
914
                if (oldPi2.exists())
915
                        moveFile(oldPR2, Pff+"/scribusfont.rc");
916
                QString oldPR3 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusscrap.scs");
917
                QFileInfo oldPi3 = QFileInfo(oldPR3);
918
                if (oldPi3.exists())
919
                        moveFile(oldPR3, Pff+"/scrap.scs");
675 cbradney 920
        }
1392 cbradney 921
        return PrefsPfad;
922
}
923
 
924
/*!
925
 \fn QString ScribusApp::convertToXMLPreferences(QString prefsLocation)
926
 \author Craig Bradney
927
 \date Sun 09 Jan 2005
928
 \brief Convert 1.2 prefs to 1.3 prefs
929
 \param prefsLocation Location of user preferences
930
 \retval None
931
 */
932
bool ScribusApp::convert12Preferences(const QString prefsLocation)
933
{
1144 cbradney 934
        //Now make copies for 1.3 use and leave the old ones alone for <1.3.0 usage
1554 cbradney 935
        QString oldPR[5], newPR[5];
936
        oldPR[0]=QDir::convertSeparators(prefsLocation+"/scribus.rc");
937
        oldPR[1]=QDir::convertSeparators(prefsLocation+"/scribusfont.rc");
938
        oldPR[2]=QDir::convertSeparators(prefsLocation+"/scrap.scs");
939
        oldPR[3]=QDir::convertSeparators(prefsLocation+"/prefs.xml");
940
        oldPR[4]=QDir::convertSeparators(prefsLocation+"/scripter.rc");
941
        newPR[0]=QDir::convertSeparators(prefsLocation+"/scribus13.rc");
942
        newPR[1]=QDir::convertSeparators(prefsLocation+"/scribusfont13.rc");
943
        newPR[2]=QDir::convertSeparators(prefsLocation+"/scrap13.scs");
944
        newPR[3]=QDir::convertSeparators(prefsLocation+"/prefs13.xml");
945
        newPR[4]=QDir::convertSeparators(prefsLocation+"/scripter13.rc");
1485 tsoots 946
 
1554 cbradney 947
        bool existsOldPR[5], existsNewPR[5];
948
        for (uint i=0;i<5;++i)
949
        {
950
                existsOldPR[i] =QFile::exists(oldPR[i]);
951
                existsNewPR[i] =QFile::exists(newPR[i]);
952
        }
1485 tsoots 953
 
1392 cbradney 954
        bool retVal=false;
1144 cbradney 955
        //Only check for these two as they will be autocreated if they dont exist.
1554 cbradney 956
        if( (existsOldPR[0] && !existsNewPR[0]) || (existsOldPR[3] && !existsNewPR[3]) )
1144 cbradney 957
        {
1392 cbradney 958
                retVal=true; // converting from 1.2 prefs
1144 cbradney 959
                if (splashScreen)
960
                        splashScreen->hide();
961
                if ( (QMessageBox::question( this, tr("Migrate Old Scribus Settings?"),
1392 cbradney 962
                          tr("Scribus has detected existing Scribus 1.2 preferences files.\n"
963
                                          "Do you want to migrate them to the new Scribus version?"),
964
                          QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::NoButton))==QMessageBox::Yes )
1144 cbradney 965
                {
1554 cbradney 966
                        for (uint i=0;i<5;++i)
967
                        {
968
                                if (existsOldPR[i] && !existsNewPR[i])
969
                                        copyFile(oldPR[i], newPR[i]);
970
                        }
1144 cbradney 971
                }
972
                if (splashScreen)
973
                        splashScreen->show();
974
        }
1392 cbradney 975
        return retVal;
675 cbradney 976
}
977
 
3 paul 978
void ScribusApp::initMenuBar()
979
{
980
        QFont tmp;
981
        RecentDocs.clear();
1208 cbradney 982
 
983
        scrMenuMgr->createMenu("File", tr("&File"));
984
        scrMenuMgr->addMenuItem(scrActions["fileNew"], "File");
985
        scrMenuMgr->addMenuItem(scrActions["fileOpen"], "File");
986
        recentFileMenuName="FileOpenRecent";
987
        scrMenuMgr->createMenu(recentFileMenuName, tr("Open &Recent"), "File");
988
        scrMenuMgr->addMenuSeparator("File");
989
        scrMenuMgr->addMenuItem(scrActions["fileClose"], "File");
990
        scrMenuMgr->addMenuItem(scrActions["fileSave"], "File");
991
        scrMenuMgr->addMenuItem(scrActions["fileSaveAs"], "File");
992
        scrMenuMgr->addMenuItem(scrActions["fileRevert"], "File");
993
        scrMenuMgr->addMenuItem(scrActions["fileCollect"], "File");
994
        scrMenuMgr->addMenuSeparator("File");
995
        scrMenuMgr->createMenu("FileImport", tr("&Import"), "File");
996
        scrMenuMgr->addMenuItem(scrActions["fileImportText"], "FileImport");
997
        scrMenuMgr->addMenuItem(scrActions["fileImportAppendText"], "FileImport");
998
        scrMenuMgr->addMenuItem(scrActions["fileImportImage"], "FileImport");
999
        scrMenuMgr->addMenuItem(scrActions["fileImportPage"], "FileImport");
1000
        scrMenuMgr->createMenu("FileExport", tr("&Export"), "File");
1001
        scrMenuMgr->addMenuItem(scrActions["fileExportText"], "FileExport");
1002
        scrMenuMgr->addMenuItem(scrActions["fileExportAsEPS"], "FileExport");
1003
        scrMenuMgr->addMenuItem(scrActions["fileExportAsPDF"], "FileExport");
1004
        scrMenuMgr->addMenuSeparator("File");
1005
        scrMenuMgr->addMenuItem(scrActions["fileDocInfo"], "File");
1006
        scrMenuMgr->addMenuItem(scrActions["fileDocSetup"], "File");
1007
        scrMenuMgr->addMenuItem(scrActions["filePrint"], "File");
1008
        scrMenuMgr->addMenuSeparator("File");
1009
        scrMenuMgr->addMenuItem(scrActions["fileQuit"], "File");
1010
 
1485 tsoots 1011
        scrActions["fileClose"]->setEnabled(false);
1208 cbradney 1012
        scrActions["fileSave"]->setEnabled(false);
1013
        scrActions["fileSaveAs"]->setEnabled(false);
1014
        scrActions["fileRevert"]->setEnabled(false);
1015
        scrActions["fileCollect"]->setEnabled(false);
1016
        scrActions["fileImportText"]->setEnabled(false);
1017
        scrActions["fileImportImage"]->setEnabled(false);
1018
        scrActions["fileImportAppendText"]->setEnabled(false);
1019
        scrActions["fileImportPage"]->setEnabled(false);
1020
        scrActions["fileExportText"]->setEnabled(false);
1021
        scrActions["fileExportAsEPS"]->setEnabled(false);
1022
        scrActions["fileExportAsPDF"]->setEnabled(false);
1023
        scrMenuMgr->setMenuEnabled("FileExport", false);
1024
        scrActions["fileDocInfo"]->setEnabled(false);
1025
        scrActions["fileDocSetup"]->setEnabled(false);
1026
        scrActions["filePrint"]->setEnabled(false);
1485 tsoots 1027
 
1227 cbradney 1028
        scrMenuMgr->createMenu("Edit", tr("&Edit"));
1029
        scrMenuMgr->addMenuItem(scrActions["editUndoAction"], "Edit");
1030
        scrMenuMgr->addMenuItem(scrActions["editRedoAction"], "Edit");
1031
        scrMenuMgr->addMenuItem(scrActions["editActionMode"], "Edit");
1032
        scrMenuMgr->addMenuSeparator("Edit");
1033
        scrMenuMgr->addMenuItem(scrActions["editCut"], "Edit");
1034
        scrMenuMgr->addMenuItem(scrActions["editCopy"], "Edit");
1035
        scrMenuMgr->addMenuItem(scrActions["editPaste"], "Edit");
1963 cbradney 1036
        scrMenuMgr->addMenuItem(scrActions["editClearContents"], "Edit");
1227 cbradney 1037
        scrMenuMgr->addMenuItem(scrActions["editSelectAll"], "Edit");
1837 cbradney 1038
        scrMenuMgr->addMenuItem(scrActions["editDeselectAll"], "Edit");
1227 cbradney 1039
        scrMenuMgr->addMenuSeparator("Edit");
1040
        scrMenuMgr->addMenuItem(scrActions["editSearchReplace"], "Edit");
1981 cbradney 1041
        scrMenuMgr->addMenuItem(scrActions["toolsEditWithStoryEditor"], "Edit");
1227 cbradney 1042
        scrMenuMgr->addMenuSeparator("Edit");
1043
        scrMenuMgr->addMenuItem(scrActions["editColors"], "Edit");
1044
        scrMenuMgr->addMenuItem(scrActions["editParaStyles"], "Edit");
1045
        scrMenuMgr->addMenuItem(scrActions["editLineStyles"], "Edit");
1046
        scrMenuMgr->addMenuItem(scrActions["editTemplates"], "Edit");
1047
        scrMenuMgr->addMenuItem(scrActions["editJavascripts"], "Edit");
1048
        scrMenuMgr->addMenuSeparator("Edit");
1049
        scrMenuMgr->addMenuItem(scrActions["editPreferences"], "Edit");
1050
        scrActions["editUndoAction"]->setEnabled(false);
1051
        scrActions["editRedoAction"]->setEnabled(false);
1446 tsoots 1052
        scrActions["editActionMode"]->setEnabled(true);
1227 cbradney 1053
        scrActions["editCut"]->setEnabled(false);
1054
        scrActions["editCopy"]->setEnabled(false);
1055
        scrActions["editPaste"]->setEnabled(false);
1963 cbradney 1056
        scrActions["editClearContents"]->setEnabled(false);
1227 cbradney 1057
        scrActions["editSelectAll"]->setEnabled(false);
1837 cbradney 1058
        scrActions["editDeselectAll"]->setEnabled(false);
1227 cbradney 1059
        scrActions["editSearchReplace"]->setEnabled(false);
1060
        scrActions["editParaStyles"]->setEnabled(false);
1061
        scrActions["editLineStyles"]->setEnabled(false);
1062
        scrActions["editTemplates"]->setEnabled(false);
1063
        scrActions["editJavascripts"]->setEnabled(false);
1996 cbradney 1064
        scrActions["toolsEditWithStoryEditor"]->setEnabled(false);
1227 cbradney 1065
 
1066
        //Style Menu
1325 cbradney 1067
        scrMenuMgr->createMenu("Style", tr("St&yle"));
1437 cbradney 1068
        //Color menu
1069
        // CB TODO
1070
        scrMenuMgr->createMenu("Color", tr("&Color"));
1071
        ColorMenC = new QComboBox(false);
1072
        ColorMenC->setEditable(false);
1073
        scrMenuMgr->addMenuItem(ColorMenC, "Color");
1485 tsoots 1074
 
1437 cbradney 1075
        //Text size menu
1076
        scrMenuMgr->createMenu("FontSize", tr("&Size"));
1077
        scrActionGroups["fontSize"]->addTo(scrMenuMgr->getLocalPopupMenu("FontSize"));
1485 tsoots 1078
 
1437 cbradney 1079
        //Shade menu
1080
        scrMenuMgr->createMenu("Shade", tr("&Shade"));
1081
        scrActionGroups["shade"]->addTo(scrMenuMgr->getLocalPopupMenu("Shade"));
1485 tsoots 1082
 
1437 cbradney 1083
        //Font menu
1084
        scrMenuMgr->createMenu("Font", tr("&Font"));
1085
        FontMenu = scrMenuMgr->getLocalPopupMenu("Font");
1485 tsoots 1086
 
1437 cbradney 1087
        //Type style menu
1088
        scrMenuMgr->createMenu("TypeEffects", tr("&Effects"));
1089
        scrActionGroups["typeEffects"]->addTo(scrMenuMgr->getLocalPopupMenu("TypeEffects"));
1485 tsoots 1090
 
1236 cbradney 1091
        //Item Menu
1092
        scrMenuMgr->createMenu("Item", tr("&Item"));
1093
        scrMenuMgr->addMenuItem(scrActions["itemDuplicate"], "Item");
1094
        scrMenuMgr->addMenuItem(scrActions["itemMulDuplicate"], "Item");
1095
        scrMenuMgr->addMenuItem(scrActions["itemDelete"], "Item");
1096
        scrMenuMgr->addMenuSeparator("Item");
1097
        scrMenuMgr->addMenuItem(scrActions["itemGroup"], "Item");
1098
        scrMenuMgr->addMenuItem(scrActions["itemUngroup"], "Item");
1099
        scrMenuMgr->addMenuItem(scrActions["itemLock"], "Item");
1858 cbradney 1100
        scrMenuMgr->addMenuItem(scrActions["itemLockSize"], "Item");
2026 cbradney 1101
        scrMenuMgr->addMenuItem(scrActions["itemImageIsVisible"], "Item");
1236 cbradney 1102
        scrMenuMgr->addMenuSeparator("Item");
1858 cbradney 1103
        scrMenuMgr->createMenu("ItemLevel", tr("&Level"));
1104
        scrMenuMgr->addMenuToMenu("ItemLevel", "Item");
1105
        scrMenuMgr->addMenuItem(scrActions["itemSendToBack"], "ItemLevel");
1106
        scrMenuMgr->addMenuItem(scrActions["itemBringToFront"], "ItemLevel");
1107
        scrMenuMgr->addMenuItem(scrActions["itemLower"], "ItemLevel");
1108
        scrMenuMgr->addMenuItem(scrActions["itemRaise"], "ItemLevel");
1236 cbradney 1109
        scrMenuMgr->addMenuItem(scrActions["itemAlignDist"], "Item");
1981 cbradney 1110
        scrMenuMgr->addMenuItem(scrActions["itemSendToScrapbook"], "Item");
1236 cbradney 1111
        scrMenuMgr->addMenuSeparator("Item");
1981 cbradney 1112
        scrMenuMgr->addMenuItem(scrActions["itemAttributes"], "ItemPDFOptions");
1113
        scrMenuMgr->createMenu("ItemPDFOptions", tr("&PDF Options"));
1114
        scrMenuMgr->addMenuToMenu("ItemPDFOptions", "Item");
1115
        scrMenuMgr->addMenuItem(scrActions["itemPDFIsBookmark"], "ItemPDFOptions");
1116
        scrMenuMgr->addMenuItem(scrActions["itemPDFIsAnnotation"], "ItemPDFOptions");
1117
        scrMenuMgr->addMenuItem(scrActions["itemPDFAnnotationProps"], "ItemPDFOptions");
1118
        scrMenuMgr->addMenuItem(scrActions["itemPDFFieldProps"], "ItemPDFOptions");
1236 cbradney 1119
        scrMenuMgr->createMenu("ItemShapes", tr("&Shape"), "Item");
1120
        // CB TODO
1121
        //Shape menu
169 Franz 1122
        SCustom = new Autoforms(0);
1236 cbradney 1123
        scrMenuMgr->addMenuItem(SCustom, "ItemShapes");
272 Franz 1124
        connect(SCustom, SIGNAL(FormSel(int, int, double *)), this, SLOT(MakeFrame(int, int, double *)));
1236 cbradney 1125
        scrMenuMgr->addMenuItem(scrActions["itemShapeEdit"], "ItemShapes");
1858 cbradney 1126
        scrMenuMgr->createMenu("ItemConvertTo", tr("C&onvert To"));
1127
        scrMenuMgr->addMenuToMenu("ItemConvertTo", "Item");
1128
        scrMenuMgr->addMenuItem(scrActions["itemConvertToBezierCurve"], "ItemConvertTo");
1129
        scrMenuMgr->addMenuItem(scrActions["itemConvertToImageFrame"], "ItemConvertTo");
1130
        scrMenuMgr->addMenuItem(scrActions["itemConvertToOutlines"], "ItemConvertTo");
1131
        scrMenuMgr->addMenuItem(scrActions["itemConvertToPolygon"], "ItemConvertTo");
1132
        scrMenuMgr->addMenuItem(scrActions["itemConvertToTextFrame"], "ItemConvertTo");
1133
 
1236 cbradney 1134
        scrMenuMgr->addMenuItem(scrActions["itemAttachTextToPath"], "Item");
1135
        scrMenuMgr->addMenuItem(scrActions["itemDetachTextFromPath"], "Item");
1136
        scrMenuMgr->addMenuItem(scrActions["itemCombinePolygons"], "Item");
1137
        scrMenuMgr->addMenuItem(scrActions["itemSplitPolygons"], "Item");
1138
        scrMenuMgr->setMenuEnabled("ItemShapes", false);
1139
        scrActions["itemAlignDist"]->setEnabled(false);
1140
        scrActions["itemGroup"]->setEnabled(false);
1141
        scrActions["itemUngroup"]->setEnabled(false);
1142
        scrActions["itemAttachTextToPath"]->setEnabled(false);
1143
        scrActions["itemDetachTextFromPath"]->setEnabled(false);
1144
        scrActions["itemCombinePolygons"]->setEnabled(false);
1145
        scrActions["itemSplitPolygons"]->setEnabled(false);
1146
        scrActions["itemLock"]->setEnabled(false);
1858 cbradney 1147
        scrActions["itemLockSize"]->setEnabled(false);
2026 cbradney 1148
        scrActions["itemImageIsVisible"]->setEnabled(false);
1858 cbradney 1149
        scrMenuMgr->setMenuEnabled("ItemConvertTo", false);
1150
        scrActions["itemConvertToBezierCurve"]->setEnabled(false);
1151
        scrActions["itemConvertToImageFrame"]->setEnabled(false);
1236 cbradney 1152
        scrActions["itemConvertToOutlines"]->setEnabled(false);
1858 cbradney 1153
        scrActions["itemConvertToPolygon"]->setEnabled(false);
1154
        scrActions["itemConvertToTextFrame"]->setEnabled(false);
1485 tsoots 1155
 
1801 cbradney 1156
        //Insert menu
1157
        scrMenuMgr->createMenu("Insert", tr("I&nsert"));
1158
        scrMenuMgr->addMenuItem(scrActions["toolsInsertTextFrame"], "Insert");
1159
        scrMenuMgr->addMenuItem(scrActions["toolsInsertImageFrame"], "Insert");
1160
        scrMenuMgr->addMenuItem(scrActions["toolsInsertTableFrame"], "Insert");
1161
        scrMenuMgr->addMenuItem(scrActions["toolsInsertShape"], "Insert");
1162
        scrMenuMgr->addMenuItem(scrActions["toolsInsertPolygon"], "Insert");
1163
        scrMenuMgr->addMenuItem(scrActions["toolsInsertLine"], "Insert");
1164
        scrMenuMgr->addMenuItem(scrActions["toolsInsertBezier"], "Insert");
1165
        scrMenuMgr->addMenuItem(scrActions["toolsInsertFreehandLine"], "Insert");
1166
        scrMenuMgr->addMenuSeparator("Insert");
1903 cbradney 1167
        scrMenuMgr->addMenuItem(scrActions["insertGlyph"], "Insert");
1168
 
1169
        scrMenuMgr->createMenu("InsertChar", tr("Character"));
1170
        scrMenuMgr->addMenuToMenu("InsertChar", "Insert");
1171
        scrMenuMgr->addMenuItem(scrActions["specialPageNumber"], "InsertChar");
1172
        scrMenuMgr->addMenuItem(scrActions["specialSmartHyphen"], "InsertChar");
2039 cbradney 1173
        scrMenuMgr->addMenuSeparator("InsertChar");
1903 cbradney 1174
        scrMenuMgr->addMenuItem(scrActions["specialCopyRight"], "InsertChar");
1175
        scrMenuMgr->addMenuItem(scrActions["specialRegdTM"], "InsertChar");
1176
        scrMenuMgr->addMenuItem(scrActions["specialTM"], "InsertChar");
1177
        scrMenuMgr->addMenuItem(scrActions["specialBullet"], "InsertChar");
1178
        scrMenuMgr->addMenuSeparator("InsertChar");
1179
        scrMenuMgr->addMenuItem(scrActions["specialDashEm"], "InsertChar");
1180
        scrMenuMgr->addMenuItem(scrActions["specialDashEn"], "InsertChar");
1181
        scrMenuMgr->addMenuItem(scrActions["specialDashFigure"], "InsertChar");
1182
        scrMenuMgr->addMenuItem(scrActions["specialDashQuotation"], "InsertChar");
2039 cbradney 1183
 
1184
        scrMenuMgr->createMenu("InsertQuote", tr("Quote"));
1185
        scrMenuMgr->addMenuToMenu("InsertQuote", "Insert");
1186
        scrMenuMgr->addMenuItem(scrActions["specialQuoteApostrophe"], "InsertQuote");
1187
        scrMenuMgr->addMenuItem(scrActions["specialQuoteStraight"], "InsertQuote");
1188
        scrMenuMgr->addMenuSeparator("InsertQuote");
1189
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleLeft"], "InsertQuote");
1190
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleRight"], "InsertQuote");
1191
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleLeft"], "InsertQuote");
1192
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleRight"], "InsertQuote");
1193
        scrMenuMgr->addMenuSeparator("InsertQuote");
1194
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleReversed"], "InsertQuote");
1195
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleReversed"], "InsertQuote");
1196
        scrMenuMgr->addMenuSeparator("InsertQuote");
1197
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleLeftGuillemet"], "InsertQuote");
1198
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleRightGuillemet"], "InsertQuote");
1199
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleLeftGuillemet"], "InsertQuote");
1200
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleRightGuillemet"], "InsertQuote");
1201
        scrMenuMgr->addMenuSeparator("InsertQuote");
1202
        scrMenuMgr->addMenuItem(scrActions["specialQuoteLowSingleComma"], "InsertQuote");
1203
        scrMenuMgr->addMenuItem(scrActions["specialQuoteLowDoubleComma"], "InsertQuote");
1204
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleTurnedComma"], "InsertQuote");
1205
        scrMenuMgr->addMenuSeparator("InsertQuote");
1206
        scrMenuMgr->addMenuItem(scrActions["specialQuoteCJKSingleLeft"], "InsertQuote");
1207
        scrMenuMgr->addMenuItem(scrActions["specialQuoteCJKSingleRight"], "InsertQuote");
1208
        scrMenuMgr->addMenuItem(scrActions["specialQuoteCJKDoubleLeft"], "InsertQuote");
1209
        scrMenuMgr->addMenuItem(scrActions["specialQuoteCJKDoubleRight"], "InsertQuote");
1903 cbradney 1210
 
1211
        scrMenuMgr->createMenu("InsertSpace", tr("Space"));
1212
        scrMenuMgr->addMenuToMenu("InsertSpace", "Insert");
1213
        scrMenuMgr->addMenuItem(scrActions["specialNonBreakingSpace"], "InsertSpace");
1214
        scrMenuMgr->addMenuSeparator("Insert");
1818 cbradney 1215
        scrMenuMgr->addMenuItem(scrActions["insertSampleText"], "Insert");
1903 cbradney 1216
        scrActions["insertGlyph"]->setEnabled(false);
1801 cbradney 1217
 
1236 cbradney 1218
        //Page menu
1219
        scrMenuMgr->createMenu("Page", tr("&Page"));
1220
        scrMenuMgr->addMenuItem(scrActions["pageInsert"], "Page");
1221
        scrMenuMgr->addMenuItem(scrActions["pageDelete"], "Page");
1222
        scrMenuMgr->addMenuItem(scrActions["pageCopy"], "Page");
1223
        scrMenuMgr->addMenuItem(scrActions["pageMove"], "Page");
1224
        scrMenuMgr->addMenuItem(scrActions["pageApplyTemplate"], "Page");
1225
        scrMenuMgr->addMenuItem(scrActions["pageManageGuides"], "Page");
1226
        scrActions["pageDelete"]->setEnabled(false);
1227
        scrActions["pageMove"]->setEnabled(false);
1485 tsoots 1228
 
1236 cbradney 1229
        //View menu
1246 cbradney 1230
        scrMenuMgr->createMenu("View", tr("&View"));
1231
        scrMenuMgr->addMenuItem(scrActions["viewFitInWindow"], "View");
1232
        scrMenuMgr->addMenuItem(scrActions["viewFit50"], "View");
1233
        scrMenuMgr->addMenuItem(scrActions["viewFit75"], "View");
1234
        scrMenuMgr->addMenuItem(scrActions["viewFit100"], "View");
1235
        scrMenuMgr->addMenuItem(scrActions["viewFit200"], "View");
1236
        scrMenuMgr->addMenuItem(scrActions["viewFit20"], "View");
1237
        scrMenuMgr->addMenuSeparator("View");
1238
        scrMenuMgr->addMenuItem(scrActions["viewShowMargins"], "View");
1239
        scrMenuMgr->addMenuItem(scrActions["viewShowFrames"], "View");
1240
        scrMenuMgr->addMenuItem(scrActions["viewShowImages"], "View");
1241
        scrMenuMgr->addMenuItem(scrActions["viewShowGrid"], "View");
1242
        scrMenuMgr->addMenuItem(scrActions["viewShowGuides"], "View");
1334 cbradney 1243
        scrMenuMgr->addMenuItem(scrActions["viewShowBaseline"], "View");
1246 cbradney 1244
        scrMenuMgr->addMenuItem(scrActions["viewShowTextChain"], "View");
1245
        scrMenuMgr->addMenuSeparator("View");
1246
        scrMenuMgr->addMenuItem(scrActions["viewSnapToGrid"], "View");
1247
        scrMenuMgr->addMenuItem(scrActions["viewSnapToGuides"], "View");
1330 fschmid 1248
//      scrMenuMgr->addMenuItem(scrActions["viewNewView"], "View");
1485 tsoots 1249
 
1236 cbradney 1250
        //Tool menu
1255 cbradney 1251
        scrMenuMgr->createMenu("Tools", tr("&Tools"));
1252
        scrMenuMgr->addMenuItem(scrActions["toolsProperties"], "Tools");
1253
        scrMenuMgr->addMenuItem(scrActions["toolsOutline"], "Tools");
1254
        scrMenuMgr->addMenuItem(scrActions["toolsScrapbook"], "Tools");
1255
        scrMenuMgr->addMenuItem(scrActions["toolsLayers"], "Tools");
1256
        scrMenuMgr->addMenuItem(scrActions["toolsPages"], "Tools");
1257
        scrMenuMgr->addMenuItem(scrActions["toolsBookmarks"], "Tools");
1525 cbradney 1258
        scrMenuMgr->addMenuItem(scrActions["toolsMeasurements"], "Tools");
1255 cbradney 1259
        scrMenuMgr->addMenuItem(scrActions["toolsActionHistory"], "Tools");
1260
        scrMenuMgr->addMenuItem(scrActions["toolsPreflightVerifier"], "Tools");
1261
        scrMenuMgr->addMenuSeparator("Tools");
1262
        scrMenuMgr->addMenuItem(scrActions["toolsToolbarTools"], "Tools");
1485 tsoots 1263
        scrMenuMgr->addMenuItem(scrActions["toolsToolbarPDF"], "Tools");
1265 cbradney 1264
        //scrActions["toolsPreflightVerifier"]->setEnabled(false);
1485 tsoots 1265
 
1236 cbradney 1266
        //Extra menu
1260 cbradney 1267
        scrMenuMgr->createMenu("Extras", tr("E&xtras"));
1268
        scrMenuMgr->addMenuItem(scrActions["extrasManagePictures"], "Extras");
1269
        scrMenuMgr->addMenuItem(scrActions["extrasHyphenateText"], "Extras");
1694 cbradney 1270
        scrMenuMgr->addMenuItem(scrActions["extrasGenerateTableOfContents"], "Extras");
1271
 
1260 cbradney 1272
        scrMenuMgr->setMenuEnabled("Extras", false);
1273
        scrActions["extrasHyphenateText"]->setEnabled(false);
1485 tsoots 1274
 
1236 cbradney 1275
        //Window menu
1260 cbradney 1276
        scrMenuMgr->createMenu("Windows", tr("&Windows"));
1277
        connect(scrMenuMgr->getLocalPopupMenu("Windows"), SIGNAL(aboutToShow()), this, SLOT(windowsMenuAboutToShow()));
1485 tsoots 1278
 
1260 cbradney 1279
        //Help menu
1269 cbradney 1280
        scrMenuMgr->createMenu("Help", tr("&Help"));
1281
        scrMenuMgr->addMenuItem(scrActions["helpAboutScribus"], "Help");
1282
        scrMenuMgr->addMenuItem(scrActions["helpAboutQt"], "Help");
1283
        scrMenuMgr->addMenuSeparator("Help");
1284
        scrMenuMgr->addMenuItem(scrActions["helpTooltips"], "Help");
1285
        scrMenuMgr->addMenuItem(scrActions["helpManual"], "Help");
1485 tsoots 1286
 
1208 cbradney 1287
        scrMenuMgr->addMenuToMenuBar("File");
1227 cbradney 1288
        scrMenuMgr->addMenuToMenuBar("Edit");
1325 cbradney 1289
        scrMenuMgr->addMenuToMenuBar("Style");
1290
        scrMenuMgr->setMenuEnabled("Style", false);
1236 cbradney 1291
        scrMenuMgr->addMenuToMenuBar("Item");
1801 cbradney 1292
        scrMenuMgr->setMenuEnabled("Item", false);
1293
        scrMenuMgr->addMenuToMenuBar("Insert");
1294
        scrMenuMgr->setMenuEnabled("Insert", false);
1236 cbradney 1295
        scrMenuMgr->addMenuToMenuBar("Page");
1296
        scrMenuMgr->setMenuEnabled("Page", false);
1246 cbradney 1297
        scrMenuMgr->addMenuToMenuBar("View");
1298
        scrMenuMgr->setMenuEnabled("View", false);
1255 cbradney 1299
        scrMenuMgr->addMenuToMenuBar("Tools");
1260 cbradney 1300
        scrMenuMgr->addMenuToMenuBar("Extras");
1301
        scrMenuMgr->setMenuEnabled("Extras", false);
1302
        scrMenuMgr->addMenuToMenuBar("Windows");
1303
        scrMenuMgr->setMenuEnabled("Windows", false);
3 paul 1304
        menuBar()->insertSeparator();
1269 cbradney 1305
        scrMenuMgr->addMenuToMenuBar("Help");
1306
 
1236 cbradney 1307
        //Alignment menu
1325 cbradney 1308
        scrMenuMgr->createMenu("Alignment", tr("&Alignment"));
1337 cbradney 1309
        scrMenuMgr->addMenuItem(scrActions["alignLeft"], "Alignment");
1310
        scrMenuMgr->addMenuItem(scrActions["alignCenter"], "Alignment");
1311
        scrMenuMgr->addMenuItem(scrActions["alignRight"], "Alignment");
1312
        scrMenuMgr->addMenuItem(scrActions["alignBlock"], "Alignment");
1313
        scrMenuMgr->addMenuItem(scrActions["alignForced"], "Alignment");
1443 tsoots 1314
 
801 cbradney 1315
        connect(ColorMenC, SIGNAL(activated(int)), this, SLOT(setItemFarbe(int)));
1316
        connect(FontMenu, SIGNAL(activated(int)), this, SLOT(setItemFont(int)));
3 paul 1317
}
1318
 
1319
void ScribusApp::initStatusBar()
1320
{
809 cbradney 1321
        FMess = new QLabel( "           ", statusBar(), "ft");
3 paul 1322
        FProg = new QProgressBar(statusBar(), "p");
272 Franz 1323
        FProg->setCenterIndicator(true);
3 paul 1324
        FProg->setFixedWidth( 100 );
809 cbradney 1325
        FProg->reset();
1326
        XMess = new QLabel( tr("X-Pos:"), statusBar(), "xt");
1327
        YMess = new QLabel( tr("Y-Pos:"), statusBar(), "yt");
1328
        XDat = new QLabel( "         ", statusBar(), "dt");
1329
        YDat = new QLabel( "         ", statusBar(), "ydt");
1330
 
1331
        statusBar()->addWidget(FMess, 3, true);
3 paul 1332
        statusBar()->addWidget(FProg, 0, true);
1333
        statusBar()->addWidget(XMess, 0, true);
1334
        statusBar()->addWidget(XDat, 1, true);
1335
        statusBar()->addWidget(YMess, 0, true);
1336
        statusBar()->addWidget(YDat, 1, true);
1337
}
1338
 
80 Franz 1339
void ScribusApp::ReportMP(double xp, double yp)
3 paul 1340
{
1065 cbradney 1341
        QString suffix=unitGetSuffixFromIndex(doc->docUnitIndex);
1342
        int multiplier=unitGetDecimalsFromIndex(doc->docUnitIndex);
806 cbradney 1343
        double divisor = static_cast<double>(multiplier);
1065 cbradney 1344
        int precision=precision = unitGetPrecisionFromIndex(doc->docUnitIndex);
809 cbradney 1345
        QString tmp;
1843 cbradney 1346
        XDat->setText(tmp.setNum(qRound(xp*doc->unitRatio * multiplier) / divisor, 'f', precision) + suffix);
1347
        YDat->setText(tmp.setNum(qRound(yp*doc->unitRatio * multiplier) / divisor, 'f', precision) + suffix);
3 paul 1348
}
1349
 
1437 cbradney 1350
void ScribusApp::SetKeyEntry(QString actName, QString cleanMenuText, QString keyseq, int rowNumber)
3 paul 1351
{
1352
        Keys ke;
1230 cbradney 1353
        if (actName!="")
1354
        {
1355
                if (scrActions[actName])
1392 cbradney 1356
                {
1230 cbradney 1357
                        ke.actionName=actName;
1392 cbradney 1358
                        ke.keySequence = keyseq;
1359
                        ke.cleanMenuText=cleanMenuText;
1437 cbradney 1360
                        ke.tableRow=rowNumber;
1392 cbradney 1361
                        Prefs.KeyActions.insert(actName, ke);
1362
                }
1230 cbradney 1363
                else
1748 craig 1364
                        qDebug("%s", QString("Action Name: %1 does not exist").arg(actName).ascii());
1230 cbradney 1365
        }
3 paul 1366
}
1367
 
1957 cbradney 1368
void ScribusApp::DeleteSel(PageItem *currItem)
3 paul 1369
{
238 Franz 1370
        int FirstSel = 0;
1371
        bool first = false;
1957 cbradney 1372
        for (ScText *it = currItem->itemText.first(); it != 0; it = currItem->itemText.next())
272 Franz 1373
        {
1374
                if (it->cselect)
1375
                {
238 Franz 1376
                        first = true;
1957 cbradney 1377
                        currItem->itemText.remove();
1378
                        it = currItem->itemText.prev();
272 Franz 1379
                        if (it == 0)
1957 cbradney 1380
                                it = currItem->itemText.first();
272 Franz 1381
                }
238 Franz 1382
                if (!first)
1383
                        FirstSel++;
272 Franz 1384
        }
1957 cbradney 1385
        if (currItem->itemText.count() != 0)
238 Franz 1386
        {
1957 cbradney 1387
                if (currItem->itemText.first()->cselect)
3 paul 1388
                {
1957 cbradney 1389
                        currItem->itemText.remove();
1390
                        currItem->CPos = 0;
238 Franz 1391
                }
3 paul 1392
                else
1957 cbradney 1393
                        currItem->CPos = FirstSel;
238 Franz 1394
        }
3 paul 1395
        else
1957 cbradney 1396
                currItem->CPos = 0;
1397
        currItem->HasSel = false;
272 Franz 1398
        DisableTxEdit();
3 paul 1399
}
1400
 
1957 cbradney 1401
void ScribusApp::setTBvals(PageItem *currItem)
3 paul 1402
{
1957 cbradney 1403
        if (currItem->itemText.count() != 0)
272 Franz 1404
        {
1957 cbradney 1405
                int ChPos = QMIN(currItem->CPos, static_cast<int>(currItem->itemText.count()-1));
1406
                doc->CurrentStyle = currItem->itemText.at(ChPos)->cstyle & 127;
1407
                doc->currentParaStyle = currItem->itemText.at(ChPos)->cab;
1065 cbradney 1408
                setAbsValue(doc->currentParaStyle);
1545 cbradney 1409
                propertiesPalette->setAli(doc->currentParaStyle);
1957 cbradney 1410
                doc->CurrFont = currItem->itemText.at(ChPos)->cfont->SCName;
1411
                doc->CurrFontSize = currItem->itemText.at(ChPos)->csize;
1412
                doc->CurrTextFill = currItem->itemText.at(ChPos)->ccolor;
1413
                doc->CurrTextFillSh = currItem->itemText.at(ChPos)->cshade;
1414
                doc->CurrTextStroke = currItem->itemText.at(ChPos)->cstroke;
1415
                doc->CurrTextStrokeSh = currItem->itemText.at(ChPos)->cshade2;
1416
                doc->CurrTextScale = currItem->itemText.at(ChPos)->cscale;
68 Franz 1417
                emit TextFarben(doc->CurrTextStroke, doc->CurrTextFill, doc->CurrTextStrokeSh, doc->CurrTextFillSh);
1418
                emit TextIFont(doc->CurrFont);
272 Franz 1419
                emit TextISize(doc->CurrFontSize);
1957 cbradney 1420
                emit TextUSval(currItem->itemText.at(ChPos)->cextra);
272 Franz 1421
                emit TextStil(doc->CurrentStyle);
68 Franz 1422
                emit TextScale(doc->CurrTextScale);
272 Franz 1423
        }
3 paul 1424
}
1425
 
1426
void ScribusApp::wheelEvent(QWheelEvent *w)
1427
{
1428
        if (HaveDoc)
239 Franz 1429
        {
276 Franz 1430
                if ((w->orientation() != Qt::Vertical) || ( w->state() & ShiftButton ))
3 paul 1431
                {
239 Franz 1432
                        if (w->delta() < 0)
240 Franz 1433
                                view->scrollBy(Prefs.Wheelval, 0);
239 Franz 1434
                        else
240 Franz 1435
                                view->scrollBy(-Prefs.Wheelval, 0);
239 Franz 1436
                }
3 paul 1437
                else
239 Franz 1438
                {
1439
                        if (w->delta() < 0)
240 Franz 1440
                                view->scrollBy(0, Prefs.Wheelval);
239 Franz 1441
                        else
240 Franz 1442
                                view->scrollBy(0, -Prefs.Wheelval);
239 Franz 1443
                }
3 paul 1444
                w->accept();
239 Franz 1445
        }
3 paul 1446
}
1447
 
1485 tsoots 1448
//Special keys assigned to actions are stolen by the action and not passed to
1445 cbradney 1449
//keyPressEvent so process them here.
1903 cbradney 1450
void ScribusApp::specialActionKeyEvent(QString actionName, int unicodevalue)
1445 cbradney 1451
{
1452
        if (HaveDoc)
1453
        {
1454
                if (doc->appMode==EditMode)
1455
                {
1456
                        if (view->SelItem.count() == 1)
1457
                        {
1458
                                struct ScText *hg = new ScText;
1957 cbradney 1459
                                PageItem *currItem = view->SelItem.at(0);
1903 cbradney 1460
                                if (unicodevalue!=-1)
1445 cbradney 1461
                                {
1903 cbradney 1462
                                        hg->ch = QString(QChar(unicodevalue));
1789 fschmid 1463
                                        hg->cfont = (*doc->AllFonts)[doc->CurrFont];
1445 cbradney 1464
                                        hg->csize = doc->CurrFontSize;
1465
                                        hg->ccolor = doc->CurrTextFill;
1466
                                        hg->cshade = doc->CurrTextFillSh;
1467
                                        hg->cstroke = doc->CurrTextStroke;
1468
                                        hg->cshade2 = doc->CurrTextStrokeSh;
1469
                                        hg->cscale = doc->CurrTextScale;
1470
                                        hg->cselect = false;
1471
                                        hg->cstyle = doc->CurrentStyle;
1472
                                        hg->cab = doc->currentParaStyle;
1473
                                        if (doc->docParagraphStyles[doc->currentParaStyle].Font != "")
1474
                                        {
1789 fschmid 1475
                                                hg->cfont = (*doc->AllFonts)[doc->docParagraphStyles[doc->currentParaStyle].Font];
1445 cbradney 1476
                                                hg->csize = doc->docParagraphStyles[doc->currentParaStyle].FontSize;
1477
                                        }
1478
                                        hg->cextra = 0;
1479
                                        hg->xp = 0;
1480
                                        hg->yp = 0;
1481
                                        hg->PRot = 0;
1482
                                        hg->PtransX = 0;
1483
                                        hg->PtransY = 0;
1957 cbradney 1484
                                        currItem->itemText.insert(currItem->CPos, hg);
1485
                                        currItem->CPos += 1;
1486
                                        currItem->Tinput = true;
1487
                                        view->RefreshItem(currItem);
1445 cbradney 1488
                                }
1903 cbradney 1489
                                else if (actionName=="specialSmartHyphen") //ignore the char as we use an attribute if the text item, for now.
1445 cbradney 1490
                                {
1957 cbradney 1491
                                        currItem->itemText.at(QMAX(currItem->CPos-1,0))->cstyle ^= 128;
1492
                                        currItem->Tinput = true;
1493
                                        view->RefreshItem(currItem);
1485 tsoots 1494
                                }
1445 cbradney 1495
                        }
1496
                }
1497
        }
1498
}
1499
 
1493 cbradney 1500
/*!
1501
  \brief Receive key events from palettes such as palette hiding events. Possibly eaier way but this is cleaner than before. No need to modify all those palettes and each new one in future.
1502
 */
1525 cbradney 1503
bool ScribusApp::eventFilter( QObject */*o*/, QEvent *e )
1493 cbradney 1504
{
1525 cbradney 1505
        bool retVal;
1493 cbradney 1506
        if ( e->type() == QEvent::KeyPress ) {
1507
                QKeyEvent *k = (QKeyEvent *)e;
1508
                int keyMod;
1509
                switch (k->state())
1510
                {
1511
                        case ShiftButton:
1512
                                keyMod = SHIFT;
1513
                                break;
1514
                        case AltButton:
1515
                                keyMod = ALT;
1516
                                break;
1517
                        case ControlButton:
1518
                                keyMod = CTRL;
1519
                                break;
1520
                        default:
1521
                                keyMod = 0;
1522
                                break;
1523
                }
1524
                QKeySequence currKeySeq = QKeySequence(k->key() | keyMod);
1525 cbradney 1525
                retVal=true;
1493 cbradney 1526
                if (currKeySeq == scrActions["specialToggleAllPalettes"]->accel())
1527
                        scrActions["specialToggleAllPalettes"]->activate();
1528
                else
1529
                if (currKeySeq == scrActions["toolsProperties"]->accel())
1530
                        scrActions["toolsProperties"]->toggle();
1531
                else
1532
                if (currKeySeq == scrActions["toolsOutline"]->accel())
1533
                        scrActions["toolsOutline"]->toggle();
1534
                else
1535
                if (currKeySeq == scrActions["toolsScrapbook"]->accel())
1536
                        scrActions["toolsScrapbook"]->toggle();
1537
                else
1538
                if (currKeySeq == scrActions["toolsLayers"]->accel())
1539
                        scrActions["toolsLayers"]->toggle();
1540
                else
1541
                if (currKeySeq == scrActions["toolsPages"]->accel())
1542
                        scrActions["toolsPages"]->toggle();
1543
                else
1544
                if (currKeySeq == scrActions["toolsBookmarks"]->accel())
1545
                        scrActions["toolsBookmarks"]->toggle();
1546
                else
1547
                if (currKeySeq == scrActions["toolsActionHistory"]->accel())
1548
                        scrActions["toolsActionHistory"]->toggle();
1549
                else
1550
                if (currKeySeq == scrActions["toolsPreflightVerifier"]->accel())
1551
                        scrActions["toolsPreflightVerifier"]->toggle();
1525 cbradney 1552
                else
1565 cbradney 1553
                if (currKeySeq == scrActions["fileQuit"]->accel())
1554
                        scrActions["fileQuit"]->activate();
1555
                else                   
1525 cbradney 1556
                        retVal=false;
1493 cbradney 1557
        }
1525 cbradney 1558
        else
1559
                retVal=false;
1493 cbradney 1560
        //Return false to pass event to object
1561
        return retVal;
1562
}
1563
 
3 paul 1564
void ScribusApp::keyPressEvent(QKeyEvent *k)
1565
{
146 Franz 1566
        QWidgetList windows;
237 Franz 1567
        QWidget* w = NULL;
1065 cbradney 1568
        struct ScText *hg;
3 paul 1569
        int kk = k->key();
1570
        int as = k->ascii();
80 Franz 1571
        double altx, alty;
3 paul 1572
        QString uc = k->text();
1573
        QString cr, Tcha, Twort;
1574
        uint Tcoun;
237 Franz 1575
        int len, pos, c;
92 Franz 1576
        if (keyrep)
1577
                return;
1578
        keyrep = true;
3 paul 1579
        switch (k->state())
272 Franz 1580
        {
1581
        case ShiftButton:
1554 cbradney 1582
                KeyMod = SHIFT;
272 Franz 1583
                break;
1584
        case AltButton:
1554 cbradney 1585
                KeyMod = ALT;
272 Franz 1586
                break;
1587
        case ControlButton:
1554 cbradney 1588
                KeyMod = CTRL;
272 Franz 1589
                break;
1590
        default:
1591
                KeyMod = 0;
1592
                break;
1593
        }
292 Franz 1594
        if ((kk == Key_Escape) && (HaveDoc))
1595
        {
1596
                keyrep = false;
1957 cbradney 1597
                PageItem *currItem;
855 fschmid 1598
                if ((view->SelItem.count() != 0))
1599
                {
1957 cbradney 1600
                        currItem = view->SelItem.at(0);
1065 cbradney 1601
                        switch (doc->appMode)
855 fschmid 1602
                        {
1065 cbradney 1603
                                case NormalMode:
1957 cbradney 1604
                                        currItem->Sizing = false;
855 fschmid 1605
                                        if (doc->SubMode != -1)
1606
                                        {
1607
                                                view->Deselect(false);
1957 cbradney 1608
                                                doc->Items.remove(currItem->ItemNr);
855 fschmid 1609
                                        }
1610
                                        break;
1229 fschmid 1611
                                case LinkFrames:
1612
                                case UnlinkFrames:
1065 cbradney 1613
                                case EditMode:
1827 fschmid 1614
                                case Rotation:
1615
                                                view->Deselect(false);
1616
                                case PanningMode:
855 fschmid 1617
                                        break;
1065 cbradney 1618
                                case DrawBezierLine:
1957 cbradney 1619
                                        currItem->PoLine.resize(currItem->PoLine.size()-2);
1620
                                        if (currItem->PoLine.size() < 4)
855 fschmid 1621
                                        {
1622
                                                view->Deselect(false);
1957 cbradney 1623
                                                doc->Items.remove(currItem->ItemNr);
855 fschmid 1624
                                        }
1625
                                        else
1626
                                        {
1957 cbradney 1627
                                                view->SizeItem(currItem->PoLine.WidthHeight().x(), currItem->PoLine.WidthHeight().y(), currItem->ItemNr, false, false);
1628
                                                view->SetPolyClip(currItem, qRound(QMAX(currItem->Pwidth / 2, 1)));
1629
                                                view->AdjustItemSize(currItem);
1630
                                                currItem->ContourLine = currItem->PoLine.copy();
1631
                                                currItem->ClipEdited = true;
1632
                                                currItem->FrameType = 3;
855 fschmid 1633
                                                slotDocCh();
1634
                                        }
1635
                                        view->FirstPoly = true;
1636
                                        break;
1637
                                default:
1638
                                        view->Deselect(false);
1957 cbradney 1639
                                        doc->Items.remove(currItem->ItemNr);
855 fschmid 1640
                                        break;
1641
                        }
1642
                }
1643
                view->Mpressed = false;
1644
                doc->DragP = false;
1645
                doc->leaveDrag = false;
1646
                view->Imoved = false;
1647
                view->mCG = false;
1648
                view->MidButt = false;
1649
                doc->SubMode = -1;
1827 fschmid 1650
                doc->ElemToLink = NULL;
292 Franz 1651
                NoFrameEdit();
1652
                slotSelect();
1653
                return;
1654
        }
232 Franz 1655
        ButtonState buttonState = k->state();
272 Franz 1656
        if ((HaveDoc) && (!view->LE->hasFocus()) && (!view->PGS->PageCombo->hasFocus()))
1657
        {
1065 cbradney 1658
                if ((doc->appMode != EditMode) && (view->SelItem.count() == 0))
272 Franz 1659
                {
1660
                        switch (kk)
146 Franz 1661
                        {
272 Franz 1662
                        case Key_Space:
1663
                                keyrep = false;
1065 cbradney 1664
                                if (doc->appMode == PanningMode)
1665
                                        setAppMode(NormalMode);
272 Franz 1666
                                else
1667
                                {
1065 cbradney 1668
                                        setAppMode(PanningMode);
272 Franz 1669
                                        qApp->setOverrideCursor(QCursor(loadIcon("HandC.xpm")), true);
1670
                                }
1671
                                return;
1672
                                break;
1673
                        case Key_Prior:
1674
                                view->scrollBy(0, -Prefs.Wheelval);
1675
                                keyrep = false;
1676
                                return;
1677
                                break;
1678
                        case Key_Next:
1679
                                view->scrollBy(0, Prefs.Wheelval);
1680
                                keyrep = false;
1681
                                return;
1682
                                break;
1683
                        case Key_Tab:
1684
                                keyrep = false;
1685
                                windows = wsp->windowList();
1686
                                if (windows.count() > 1)
1687
                                {
1688
                                        for (int i = 0; i < static_cast<int>(windows.count()); ++i)
250 Franz 1689
                                        {
272 Franz 1690
                                                if (wsp->activeWindow() == windows.at(i))
1691
                                                {
1692
                                                        if (i == static_cast<int>(windows.count()-1))
1693
                                                                w = windows.at(0);
1694
                                                        else
1695
                                                                w = windows.at(i+1);
1696
                                                        break;
1697
                                                }
250 Franz 1698
                                        }
1545 cbradney 1699
                                        doc->OpenNodes = outlinePalette->buildReopenVals();
1700
                                        docCheckerPalette->clearErrorList();
272 Franz 1701
                                        if ( w )
1702
                                                w->showNormal();
1703
                                        newActWin(w);
1704
                                }
1705
                                return;
1706
                                break;
1707
                        }
1708
                }
456 fschmid 1709
                if (view->SelItem.count() != 0)
272 Franz 1710
                {
1957 cbradney 1711
                        PageItem *currItem = view->SelItem.at(0);
1596 subik 1712
 
1065 cbradney 1713
                        switch (doc->appMode)
272 Franz 1714
                        {
1065 cbradney 1715
                        case NormalMode:
272 Franz 1716
                                switch (kk)
1717
                                {
360 Franz 1718
                                case Key_Backspace:
272 Franz 1719
                                case Key_Delete:
1720
                                        if (!doc->EditClip)
997 fschmid 1721
                                                view->DeleteItem();
272 Franz 1722
                                        break;
360 Franz 1723
                                case Key_Prior:
1957 cbradney 1724
                                        if (!currItem->locked())
456 fschmid 1725
                                                view->RaiseItem();
360 Franz 1726
                                        break;
1727
                                case Key_Next:
1957 cbradney 1728
                                        if (!currItem->locked())
456 fschmid 1729
                                                view->LowerItem();
360 Franz 1730
                                        break;
272 Franz 1731
                                case Key_Left:
1957 cbradney 1732
                                        if (!currItem->locked())
272 Franz 1733
                                        {
1734
                                                if ( buttonState & ShiftButton )
456 fschmid 1735
                                                        view->moveGroup(-10, 0);
272 Franz 1736
                                                else if ( buttonState & ControlButton )
456 fschmid 1737
                                                        view->moveGroup(-0.1, 0);
272 Franz 1738
                                                else
456 fschmid 1739
                                                        view->moveGroup(-1, 0);
272 Franz 1740
                                        }
1741
                                        break;
1742
                                case Key_Right:
1957 cbradney 1743
                                        if (!currItem->locked())
272 Franz 1744
                                        {
1745
                                                if ( buttonState & ShiftButton )
456 fschmid 1746
                                                        view->moveGroup(10, 0);
272 Franz 1747
                                                else if ( buttonState & ControlButton )
456 fschmid 1748
                                                        view->moveGroup(0.1, 0);
272 Franz 1749
                                                else
456 fschmid 1750
                                                        view->moveGroup(1, 0);
272 Franz 1751
                                        }
1752
                                        break;
1753
                                case Key_Up:
1957 cbradney 1754
                                        if (!currItem->locked())
272 Franz 1755
                                        {
1756
                                                if ( buttonState & ShiftButton )
456 fschmid 1757
                                                        view->moveGroup(0, -10);
272 Franz 1758
                                                else if ( buttonState & ControlButton )
456 fschmid 1759
                                                        view->moveGroup(0, -0.1);
272 Franz 1760
                                                else
456 fschmid 1761
                                                        view->moveGroup(0, -1);
272 Franz 1762
                                        }
1763
                                        break;
1764
                                case Key_Down:
1957 cbradney 1765
                                        if (!currItem->locked())
272 Franz 1766
                                        {
1767
                                                if ( buttonState & ShiftButton )
456 fschmid 1768
                                                        view->moveGroup(0, 10);
272 Franz 1769
                                                else if ( buttonState & ControlButton )
456 fschmid 1770
                                                        view->moveGroup(0, 0.1);
272 Franz 1771
                                                else
456 fschmid 1772
                                                        view->moveGroup(0, 1);
272 Franz 1773
                                        }
1774
                                        break;
1775
                                default:
1776
                                        break;
1777
                                }
1778
                                slotDocCh();
1779
                                break;
1065 cbradney 1780
                        case EditMode:
1957 cbradney 1781
                                int oldPos = currItem->CPos; // 15-mar-2004 jjsa for cursor movement with Shift + Arrow key
1782
                                view->oldCp = currItem->CPos;
1783
                                if (currItem->itemType() == PageItem::ImageFrame)
1298 fschmid 1784
                                {
1785
                                        switch (kk)
1786
                                        {
1787
                                                case Key_Left:
1957 cbradney 1788
                                                        if (!currItem->locked())
1298 fschmid 1789
                                                        {
1790
                                                                if ( buttonState & ShiftButton )
1957 cbradney 1791
                                                                        view->MoveItemI(-10, 0, currItem->ItemNr, true);
1298 fschmid 1792
                                                                else if ( buttonState & ControlButton )
1957 cbradney 1793
                                                                        view->MoveItemI(-0.1, 0, currItem->ItemNr, true);
1298 fschmid 1794
                                                                else
1957 cbradney 1795
                                                                        view->MoveItemI(-1, 0, currItem->ItemNr, true);
1298 fschmid 1796
                                                        }
1797
                                                        break;
1798
                                                case Key_Right:
1957 cbradney 1799
                                                        if (!currItem->locked())
1298 fschmid 1800
                                                        {
1801
                                                                if ( buttonState & ShiftButton )
1957 cbradney 1802
                                                                        view->MoveItemI(10, 0, currItem->ItemNr, true);
1298 fschmid 1803
                                                                else if ( buttonState & ControlButton )
1957 cbradney 1804
                                                                        view->MoveItemI(0.1, 0, currItem->ItemNr, true);
1298 fschmid 1805
                                                                else
1957 cbradney 1806
                                                                        view->MoveItemI(1, 0, currItem->ItemNr, true);
1298 fschmid 1807
                                                        }
1808
                                                        break;
1809
                                                case Key_Up:
1957 cbradney 1810
                                                        if (!currItem->locked())
1298 fschmid 1811
                                                        {
1812
                                                                if ( buttonState & ShiftButton )
1957 cbradney 1813
                                                                        view->MoveItemI(0, -10, currItem->ItemNr, true);
1298 fschmid 1814
                                                                else if ( buttonState & ControlButton )
1957 cbradney 1815
                                                                        view->MoveItemI(0, -0.1, currItem->ItemNr, true);
1298 fschmid 1816
                                                                else
1957 cbradney 1817
                                                                        view->MoveItemI(0, -1, currItem->ItemNr, true);
1298 fschmid 1818
                                                        }
1819
                                                        break;
1820
                                                case Key_Down:
1957 cbradney 1821
                                                        if (!currItem->locked())
1298 fschmid 1822
                                                        {
1823
                                                                if ( buttonState & ShiftButton )
1957 cbradney 1824
                                                                        view->MoveItemI(0, 10, currItem->ItemNr, true);
1298 fschmid 1825
                                                                else if ( buttonState & ControlButton )
1957 cbradney 1826
                                                                        view->MoveItemI(0, 0.1, currItem->ItemNr, true);
1298 fschmid 1827
                                                                else
1957 cbradney 1828
                                                                        view->MoveItemI(0, 1, currItem->ItemNr, true);
1298 fschmid 1829
                                                        }
1830
                                                        break;
1831
                                        }
1832
                                }
1957 cbradney 1833
                                if (currItem->itemType() == PageItem::TextFrame)
272 Franz 1834
                                {
456 fschmid 1835
                                        view->slotDoCurs(false);
272 Franz 1836
                                        switch (kk)
1837
                                        {
1838
                                        case Key_Prior:
1839
                                        case Key_Next:
1840
                                        case Key_End:
1841
                                        case Key_Home:
1842
                                        case Key_Right:
1843
                                        case Key_Left:
1844
                                        case Key_Up:
1845
                                        case Key_Down:
1846
                                                if ( (buttonState & ShiftButton) == 0 )
1957 cbradney 1847
                                                        view->deselectAll(currItem);
272 Franz 1848
                                        }
1903 cbradney 1849
                                        /* ISO 14755
1850
                                        if ((buttonState & ControlButton) && (buttonState & ShiftButton))
1851
                                        {
1852
                                                if (!UniCinp)
1853
                                                {
1854
                                                        UniCinp=true;
1855
                                                        UniCinC = 0;
1856
                                                        UniCinS = "";
1857
                                                        keyrep = false;
1858
                                                }
1859
                                                qDebug(QString("%1 %2 %3 %4 %5").arg("uni").arg("c+s").arg(uc).arg(kk).arg(as));
1860
                                        }
1861
                                        */
272 Franz 1862
                                        if (UniCinp)
1863
                                        {
1864
                                                int conv = 0;
1865
                                                bool ok = false;
1866
                                                UniCinS += uc;
1867
                                                conv = UniCinS.toInt(&ok, 16);
1868
                                                if (!ok)
1869
                                                {
1870
                                                        UniCinp = false;
1871
                                                        UniCinC = 0;
1872
                                                        UniCinS = "";
1873
                                                        keyrep = false;
1874
                                                        return;
1875
                                                }
1876
                                                UniCinC++;
1877
                                                if (UniCinC == 4)
1878
                                                {
1879
                                                        UniCinp = false;
1880
                                                        UniCinC = 0;
1881
                                                        UniCinS = "";
1882
                                                        if (ok)
146 Franz 1883
                                                        {
1957 cbradney 1884
                                                                if (currItem->HasSel)
1885
                                                                        DeleteSel(currItem);
272 Franz 1886
                                                                if (conv < 31)
1887
                                                                        conv = 32;
1065 cbradney 1888
                                                                hg = new ScText;
272 Franz 1889
                                                                hg->ch = QString(QChar(conv));
1789 fschmid 1890
                                                                hg->cfont = (*doc->AllFonts)[doc->CurrFont];
272 Franz 1891
                                                                hg->csize = doc->CurrFontSize;
1892
                                                                hg->ccolor = doc->CurrTextFill;
1893
                                                                hg->cshade = doc->CurrTextFillSh;
1894
                                                                hg->cstroke = doc->CurrTextStroke;
1895
                                                                hg->cshade2 = doc->CurrTextStrokeSh;
1896
                                                                hg->cscale = doc->CurrTextScale;
1897
                                                                hg->cselect = false;
1898
                                                                hg->cstyle = doc->CurrentStyle;
1065 cbradney 1899
                                                                hg->cab = doc->currentParaStyle;
1900
                                                                if (doc->docParagraphStyles[doc->currentParaStyle].Font != "")
146 Franz 1901
                                                                {
1789 fschmid 1902
                                                                        hg->cfont = (*doc->AllFonts)[doc->docParagraphStyles[doc->currentParaStyle].Font];
1065 cbradney 1903
                                                                        hg->csize = doc->docParagraphStyles[doc->currentParaStyle].FontSize;
146 Franz 1904
                                                                }
272 Franz 1905
                                                                hg->cextra = 0;
1906
                                                                hg->xp = 0;
1907
                                                                hg->yp = 0;
1908
                                                                hg->PRot = 0;
1909
                                                                hg->PtransX = 0;
1910
                                                                hg->PtransY = 0;
1957 cbradney 1911
                                                                currItem->itemText.insert(currItem->CPos, hg);
1912
                                                                currItem->CPos += 1;
1913
                                                                currItem->Tinput = true;
1914
                                                                setTBvals(currItem);
1915
                                                                view->RefreshItem(currItem);
272 Franz 1916
                                                                keyrep = false;
1917
                                                                return;
146 Franz 1918
                                                        }
1919
                                                }
272 Franz 1920
                                                else
1921
                                                {
1922
                                                        keyrep = false;
1923
                                                        return;
1924
                                                }
1925
                                        }
1926
                                        switch (kk)
1927
                                        {
1928
                                        case Key_F12:
1929
                                                UniCinp = true;
1930
                                                UniCinC = 0;
1931
                                                UniCinS = "";
1932
                                                keyrep = false;
1933
                                                return;
1934
                                                break;
291 Franz 1935
                                        case Key_Home:
272 Franz 1936
                                                // go to begin of line
1957 cbradney 1937
                                                if ( (pos = currItem->CPos) == 0 )
272 Franz 1938
                                                        break; // at begin of frame
1957 cbradney 1939
                                                len = static_cast<int>(currItem->itemText.count());
272 Franz 1940
                                                if ( pos == len )
1941
                                                        pos--;
1942
                                                if ( (buttonState & ControlButton) == 0 )
1943
                                                {
1957 cbradney 1944
                                                        alty =  currItem->itemText.at(pos)->yp;
1945
                                                        c = currItem->itemText.at(pos)->ch.at(0).latin1();
272 Franz 1946
                                                        if ( c == 13 ) // new line, position is wrong
1947
                                                                if ( --pos > 0 )
1957 cbradney 1948
                                                                        alty =  currItem->itemText.at(pos)->yp;
272 Franz 1949
                                                        // check for yp at actual position
1950
                                                        if ( pos < len )
1951
                                                        {
1957 cbradney 1952
                                                                altx =  currItem->itemText.at(pos)->yp;
272 Franz 1953
                                                                if ( altx > alty )
3 paul 1954
                                                                {
272 Franz 1955
                                                                        // we was at begin of line
1956
                                                                        break;
3 paul 1957
                                                                }
272 Franz 1958
                                                        }
1957 cbradney 1959
                                                        while (  pos > 0 && currItem->itemText.at(pos-1)->yp == alty )
272 Franz 1960
                                                                pos--;
1957 cbradney 1961
                                                        if ( currItem->itemText.at(pos)->ch.at(0