Subversion Repositories Scribus

Rev

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