Subversion Repositories Scribus

Rev

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