Subversion Repositories Scribus

Rev

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