Subversion Repositories Scribus

Rev

Rev 2451 | Rev 2494 | 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"
2355 cbradney 53
#include "aligndistribute.h"
3 paul 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"
2441 cbradney 99
#include "tocgenerator.h"
617 cbradney 100
#ifdef _MSC_VER
101
 #if (_MSC_VER >= 1200)
102
  #include "win-config.h"
103
 #endif
128 Franz 104
#else
105
 #include "config.h"
106
#endif
107
 
3 paul 108
#include "fpoint.h"
109
#include "fpointarray.h"
110
#include "hysettings.h"
111
#include "guidemanager.h"
284 Franz 112
#include "keymanager.h"
3 paul 113
#include "mergedoc.h"
27 Franz 114
#include "lineformats.h"
102 Franz 115
#include "story.h"
123 Franz 116
#include "autoform.h"
140 Franz 117
#include "tabmanager.h"
164 Franz 118
#include "search.h"
169 Franz 119
#include "fontcombo.h"
415 Franz 120
#include "prefsfile.h"
1114 tsoots 121
#include "undomanager.h"
731 fschmid 122
#include "polygonwidget.h"
766 cbradney 123
#include "werktoolb.h"
806 cbradney 124
#include "units.h"
838 cbradney 125
#include "hruler.h"
126
#include "vruler.h"
1208 cbradney 127
#include "scraction.h"
128
#include "menumanager.h"
1293 tsoots 129
#include "undostate.h"
1414 fschmid 130
#include "tree.h"
1500 cbradney 131
#include "scrap.h"
1549 subik 132
#include "pluginmanager.h"
1693 craig 133
#include "scpaths.h"
1972 craig 134
#include "pdfoptions.h"
1993 cbradney 135
#include "actionmanager.h"
2024 cbradney 136
#include "documentinformation.h"
2056 fschmid 137
#include "effectsdialog.h"
2111 cbradney 138
#include "documentchecker.h"
134 Franz 139
 
3 paul 140
extern QPixmap loadIcon(QString nam);
90 Franz 141
extern bool overwrite(QWidget *parent, QString filename);
1957 cbradney 142
extern void CopyPageItem(struct CopyPasteBuffer *Buffer, PageItem *currItem);
203 Franz 143
extern void ReOrderText(ScribusDoc *doc, ScribusView *view);
204 Franz 144
extern int copyFile(QString source, QString target);
145
extern int moveFile(QString source, QString target);
3 paul 146
 
147
using namespace std;
148
 
149
#ifdef HAVE_CMS
150
cmsHPROFILE CMSoutputProf;
151
cmsHPROFILE CMSprinterProf;
1781 fschmid 152
cmsHTRANSFORM stdTransG;
153
cmsHTRANSFORM stdProofG;
154
cmsHTRANSFORM stdTransImgG;
155
cmsHTRANSFORM stdProofImgG;
156
cmsHTRANSFORM stdTransCMYKG;
157
cmsHTRANSFORM stdProofCMYKG;
158
cmsHTRANSFORM stdTransRGBG;
1488 fschmid 159
bool BlackPoint;
3 paul 160
bool SoftProofing;
161
bool Gamut;
162
bool CMSuse;
163
int IntentMonitor;
164
int IntentPrinter;
165
#endif
166
bool CMSavail;
167
ProfilesL InputProfiles;
168
QString DocDir;
119 Franz 169
ScribusApp* ScApp;
2160 cbradney 170
ScribusQApp* ScQApp;
415 Franz 171
PrefsFile* prefsFile;
3 paul 172
 
188 Franz 173
ScribusApp::ScribusApp()
2161 cbradney 174
{
2199 cbradney 175
        scribusInitialized=false;
2164 subik 176
        actionManager=NULL;
2178 cbradney 177
        scrMenuMgr=NULL;
2199 cbradney 178
        undoManager=NULL;
2161 cbradney 179
} // ScribusApp::ScribusApp()
188 Franz 180
 
767 cbradney 181
/*
182
 * retval 0 - ok, 1 - no fonts, ...
183
 */
2295 cbradney 184
int ScribusApp::initScribus(bool showSplash, bool showFontInfo, const QString newGuiLanguage)
188 Franz 185
{
767 cbradney 186
        int retVal=0;
1155 fschmid 187
        ExternalApp = 0;
770 cbradney 188
        guiLanguage = newGuiLanguage;
767 cbradney 189
        initSplash(showSplash);
1208 cbradney 190
        setUsesBigPixmaps(true);
173 Franz 191
        ScApp = this;
2160 cbradney 192
        ScQApp = (ScribusQApp*)qApp;
355 Franz 193
        CurrStED = NULL;
272 Franz 194
        setCaption( tr("Scribus " VERSION));
118 Franz 195
        setKeyCompression(false);
272 Franz 196
        setIcon(loadIcon("AppIcon.png"));
1325 cbradney 197
        scrActionGroups.clear();
198
        scrActionGroups.setAutoDelete(true);
1208 cbradney 199
        scrActions.clear();
200
        scrRecentFileActions.clear();
1260 cbradney 201
        scrWindowsActions.clear();
2408 cbradney 202
        scrLayersActions.clear();
1208 cbradney 203
        scrMenuMgr = new MenuManager(this->menuBar());
766 cbradney 204
 
1197 tsoots 205
        PrefsPfad = getPreferencesLocation();
1392 cbradney 206
        bool importingFrom12=convert12Preferences(PrefsPfad);
1197 tsoots 207
        prefsFile = new PrefsFile(QDir::convertSeparators(PrefsPfad + "/prefs13.xml"));
208
 
1247 tsoots 209
        undoManager = UndoManager::instance();
1443 tsoots 210
        objectSpecificUndo = false;
1549 subik 211
        pluginManager = new PluginManager();
2441 cbradney 212
        tocGenerator = new TOCGenerator();
1780 cbradney 213
        initDefaultValues();
2143 subik 214
 
2187 cbradney 215
        actionManager = new ActionManager(this, "actionManager");
272 Franz 216
        initMenuBar();
217
        initStatusBar();
766 cbradney 218
        initToolBars();
490 cbradney 219
        qApp->processEvents();
675 cbradney 220
 
3 paul 221
        BuFromApp = false;
1485 tsoots 222
 
2295 cbradney 223
        initFonts(showFontInfo);
767 cbradney 224
 
272 Franz 225
        if (NoFonts)
767 cbradney 226
                retVal=1;
272 Franz 227
        else
228
        {
777 fschmid 229
                buildFontMenu();
230
                initDefaultPrefs();
801 cbradney 231
                initArrowStyles();
3 paul 232
                resize(610, 600);
272 Franz 233
                QVBox* vb = new QVBox( this );
234
                vb->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
235
                wsp = new QWorkspace( vb );
236
                setCentralWidget( vb );
3 paul 237
                connect(wsp, SIGNAL(windowActivated(QWidget *)), this, SLOT(newActWin(QWidget *)));
770 cbradney 238
 
801 cbradney 239
                initPalettes();
770 cbradney 240
 
1155 fschmid 241
                fileWatcher = new FileWatcher(this);
1485 tsoots 242
 
1550 cbradney 243
                if (splashScreen != NULL)
244
                        splashScreen->setStatus( tr("Initializing Plugins"));
245
                qApp->processEvents();
246
                pluginManager->initPlugs();
1596 subik 247
 
1437 cbradney 248
                initKeyboardShortcuts();
1485 tsoots 249
 
1437 cbradney 250
                if (splashScreen != NULL)
669 cbradney 251
                        splashScreen->setStatus( tr("Reading Preferences"));
490 cbradney 252
                qApp->processEvents();
2143 subik 253
                //<<CB TODO Reset keyboard shortcuts of all 1.3 users as too many
1823 cbradney 254
                //     have conflicts if they dont nuke their settings. muhahahhaha
255
                importingFrom12=true;
256
                //>>CB
1392 cbradney 257
                ReadPrefs(importingFrom12);
801 cbradney 258
 
831 cbradney 259
                HaveGS = system(Prefs.gs_exe+" -h > /dev/null 2>&1");
260
                HavePngAlpha = system(Prefs.gs_exe+" -sDEVICE=pngalpha -c quit > /dev/null 2>&1");
261
                DocDir = Prefs.DocDir;
801 cbradney 262
 
669 cbradney 263
                if (splashScreen != NULL)
2114 cbradney 264
                        splashScreen->setStatus( tr("Reading ICC Profiles"));
831 cbradney 265
                CMSavail = false;
3 paul 266
                GetCMSProfiles();
803 cbradney 267
                initCMS();
831 cbradney 268
 
669 cbradney 269
                if (splashScreen != NULL)
2114 cbradney 270
                        splashScreen->setStatus( tr("Initializing Hyphenator"));
490 cbradney 271
                qApp->processEvents();
766 cbradney 272
                initHyphenator();
801 cbradney 273
 
669 cbradney 274
                if (splashScreen != NULL)
275
                        splashScreen->setStatus( tr("Reading Scrapbook"));
801 cbradney 276
                initScrapbook();
277
 
669 cbradney 278
                if (splashScreen != NULL)
1230 cbradney 279
                        splashScreen->setStatus( tr("Setting up Shortcuts"));
280
                qApp->processEvents();
281
                SetShortCut();
1485 tsoots 282
 
1441 cbradney 283
                emit prefsChanged();
1485 tsoots 284
 
1208 cbradney 285
                connect(fileWatcher, SIGNAL(fileDeleted(QString )), this, SLOT(removeRecent(QString)));
3 paul 286
                connect(this, SIGNAL(TextIFont(QString)), this, SLOT(AdjustFontMenu(QString)));
287
                connect(this, SIGNAL(TextISize(int)), this, SLOT(setFSizeMenu(int)));
1545 cbradney 288
                connect(this, SIGNAL(TextISize(int)), propertiesPalette, SLOT(setSize(int)));
2382 fschmid 289
                connect(this, SIGNAL(TextUSval(int)), propertiesPalette, SLOT(setExtra(int)));
1545 cbradney 290
                connect(this, SIGNAL(TextStil(int)), propertiesPalette, SLOT(setStil(int)));
291
                connect(this, SIGNAL(TextScale(int)), propertiesPalette, SLOT(setTScale(int)));
2230 fschmid 292
                connect(this, SIGNAL(TextScaleV(int)), propertiesPalette, SLOT(setTScaleV(int)));
2234 fschmid 293
                connect(this, SIGNAL(TextBase(int)), propertiesPalette, SLOT(setTBase(int)));
2247 fschmid 294
                connect(this, SIGNAL(TextShadow(int, int )), propertiesPalette, SLOT(setShadowOffs(int, int )));
2257 fschmid 295
                connect(this, SIGNAL(TextOutline(int)), propertiesPalette, SLOT(setOutlineW(int)));
2262 fschmid 296
                connect(this, SIGNAL(TextUnderline(int, int)), propertiesPalette, SLOT(setUnderline(int, int)));
2272 fschmid 297
                connect(this, SIGNAL(TextStrike(int, int)), propertiesPalette, SLOT(setStrike(int, int)));
1545 cbradney 298
                connect(this, SIGNAL(TextFarben(QString, QString, int, int)), propertiesPalette, SLOT(setActFarben(QString, QString, int, int)));
766 cbradney 299
 
801 cbradney 300
                initCrashHandler();
3 paul 301
        }
767 cbradney 302
        closeSplash();
2199 cbradney 303
        scribusInitialized=true;
2223 cbradney 304
        //pluginManager->languageChange();
767 cbradney 305
        return retVal;
3 paul 306
}
307
 
767 cbradney 308
void ScribusApp::initSplash(bool showSplash)
309
{
310
        if (showSplash)
311
        {
312
                splashScreen = new SplashScreen();
313
                splashScreen->setStatus(QObject::tr("Initializing..."));
314
        }
315
        else
316
                splashScreen = NULL;
317
}
318
 
319
void ScribusApp::closeSplash()
320
{
321
        if (splashScreen!=NULL)
322
        {
323
                splashScreen->close();
324
                delete splashScreen;
325
                splashScreen = NULL;
326
        }
327
}
328
 
766 cbradney 329
void ScribusApp::initToolBars()
330
{
331
        WerkTools2 = new QToolBar( tr("File"), this);
1208 cbradney 332
        scrActions["fileNew"]->addTo(WerkTools2);
333
        scrActions["fileOpen"]->addTo(WerkTools2);
1210 cbradney 334
        scrMenuMgr->addMenuToWidgetOfAction("FileOpenRecent", scrActions["fileOpen"]);
1208 cbradney 335
        scrActions["fileSave"]->addTo(WerkTools2);
336
        scrActions["fileClose"]->addTo(WerkTools2);
337
        scrActions["filePrint"]->addTo(WerkTools2);
1255 cbradney 338
        scrActions["toolsPreflightVerifier"]->addTo(WerkTools2);
1208 cbradney 339
        scrActions["fileExportAsPDF"]->addTo(WerkTools2);
1485 tsoots 340
 
2397 cbradney 341
        editToolBar = new QToolBar( tr("Edit"), this);
1114 tsoots 342
        UndoWidget* uWidget = new UndoWidget(editToolBar, "uWidget");
1247 tsoots 343
        undoManager->registerGui(uWidget);
1485 tsoots 344
 
766 cbradney 345
        WerkTools = new WerkToolB(this);
346
        setDockEnabled(WerkTools, DockLeft, false);
347
        setDockEnabled(WerkTools, DockRight, false);
348
        WerkTools->Sichtbar = true;
349
        WerkTools->setEnabled(false);
350
        WerkToolsP = new WerkToolBP(this);
351
        setDockEnabled(WerkToolsP, DockLeft, false);
352
        setDockEnabled(WerkToolsP, DockRight, false);
353
        WerkToolsP->setEnabled(false);
354
        WerkToolsP->Sichtbar = true;
801 cbradney 355
 
356
        connect(WerkTools, SIGNAL(Schliessen()), this, SLOT(ToggleTools()));
1770 cbradney 357
        connect(WerkToolsP, SIGNAL(NewMode(int)), this, SLOT(setAppMode(int)));
801 cbradney 358
        connect(WerkToolsP, SIGNAL(Schliessen()), this, SLOT(TogglePDFTools()));
766 cbradney 359
}
360
 
2295 cbradney 361
void ScribusApp::initFonts(bool showFontInfo)
767 cbradney 362
{
363
        if (splashScreen!=NULL) {
364
                splashScreen->setStatus( tr("Searching for Fonts"));
365
                qApp->processEvents();
366
        }
2295 cbradney 367
        NoFonts=GetAllFonts(showFontInfo);
767 cbradney 368
        if (NoFonts)
369
        {
370
                if (splashScreen!=NULL)
371
                        splashScreen->close(); // 10/10/2004 pv fix #1200
1801 cbradney 372
                QString mess = tr("There are no fonts found on your system.");
373
                mess += "\n" + tr("Exiting now.");
767 cbradney 374
                QMessageBox::critical(this, tr("Fatal Error"), mess, 1, 0, 0);
375
        }
829 cbradney 376
        else
1485 tsoots 377
        if (splashScreen!=NULL)
829 cbradney 378
        {
379
                splashScreen->setStatus( tr("Font System Initialized"));
380
                qApp->processEvents();
381
        }
767 cbradney 382
}
766 cbradney 383
 
770 cbradney 384
void ScribusApp::initDefaultPrefs()
385
{
386
        /** Default font and size **/
387
        SCFontsIterator it(Prefs.AvailFonts);
1194 fschmid 388
        Prefs.toolSettings.defFont = it.currentKey();
389
        Prefs.toolSettings.defSize = 120;
770 cbradney 390
        Prefs.AppFontSize = qApp->font().pointSize();
391
 
392
        /** Default colours **/
393
        Prefs.DColors.clear();
1693 craig 394
        QString pfadC = ScPaths::instance().libDir();
872 cbradney 395
        QString pfadC2 = pfadC + "rgbscribus.txt";
770 cbradney 396
        QFile fiC(pfadC2);
397
        if (!fiC.exists())
398
        {
399
                Prefs.DColors.insert("White", CMYKColor(0, 0, 0, 0));
400
                Prefs.DColors.insert("Black", CMYKColor(0, 0, 0, 255));
401
                Prefs.DColors.insert("Blue", CMYKColor(255, 255, 0, 0));
402
                Prefs.DColors.insert("Cyan", CMYKColor(255, 0, 0, 0));
403
                Prefs.DColors.insert("Green", CMYKColor(255, 0, 255, 0));
404
                Prefs.DColors.insert("Red", CMYKColor(0, 255, 255, 0));
405
                Prefs.DColors.insert("Yellow", CMYKColor(0, 0, 255, 0));
406
                Prefs.DColors.insert("Magenta", CMYKColor(0, 255, 0, 0));
407
                Prefs.DColorSet = "Scribus-Small";
408
        }
409
        else
410
        {
411
                if (fiC.open(IO_ReadOnly))
412
                {
413
                        QString ColorEn, Cname;
414
                        int Rval, Gval, Bval;
415
                        QTextStream tsC(&fiC);
416
                        ColorEn = tsC.readLine();
417
                        while (!tsC.atEnd())
418
                        {
419
                                ColorEn = tsC.readLine();
420
                                QTextStream CoE(&ColorEn, IO_ReadOnly);
421
                                CoE >> Rval;
422
                                CoE >> Gval;
423
                                CoE >> Bval;
424
                                CoE >> Cname;
425
                                CMYKColor tmp;
426
                                tmp.setColorRGB(Rval, Gval, Bval);
427
                                Prefs.DColors.insert(Cname, tmp);
428
                        }
429
                        fiC.close();
430
                }
431
                Prefs.DColorSet = "X11 RGB-Set";
432
        }
433
 
434
        Prefs.Wheelval = 40;
879 fschmid 435
        Prefs.guidesSettings.marginsShown = true;
436
        Prefs.guidesSettings.framesShown = true;
437
        Prefs.guidesSettings.gridShown = false;
438
        Prefs.guidesSettings.guidesShown = false;
439
        Prefs.guidesSettings.baseShown = false;
440
        Prefs.guidesSettings.showPic = true;
2353 fschmid 441
        Prefs.guidesSettings.showControls = false;
879 fschmid 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();
2355 cbradney 807
 
808
        alignDistributePalette = new AlignDistributePalette(this, "AlignDistributePalette", false);
809
        connect( scrActions["toolsAlignDistribute"], SIGNAL(toggled(bool)) , alignDistributePalette, SLOT(setPaletteShown(bool)) );
810
        connect( alignDistributePalette, SIGNAL(paletteShown(bool)), scrActions["toolsAlignDistribute"], SLOT(setOn(bool)));
811
        connect( alignDistributePalette, SIGNAL(documentChanged()), this, SLOT(slotDocCh()));
812
        alignDistributePalette->setPrefsContext("AlignDistributePalette");
813
        alignDistributePalette->installEventFilter(this);
814
        alignDistributePalette->hide();
815
 
1448 cbradney 816
        undoPalette = new UndoPalette(this, "undoPalette");
1493 cbradney 817
        undoPalette->installEventFilter(this);
1448 cbradney 818
        undoManager->registerGui(undoPalette);
1493 cbradney 819
        connect(undoPalette, SIGNAL(paletteShown(bool)), this, SLOT(setUndoPalette(bool)));
1448 cbradney 820
        connect(undoPalette, SIGNAL(objectMode(bool)), this, SLOT(setUndoMode(bool)));
1485 tsoots 821
 
1545 cbradney 822
        connect(propertiesPalette, SIGNAL(DocChanged()), this, SLOT(slotDocCh()));
823
        connect(propertiesPalette, SIGNAL(NewAbStyle(int)), this, SLOT(setNewAbStyle(int)));
824
        connect(propertiesPalette, SIGNAL(BackHome()), this, SLOT(Aktiv()));
825
        connect(propertiesPalette, SIGNAL(Stellung(int)), this, SLOT(setItemHoch(int)));
826
        connect(propertiesPalette, SIGNAL(EditCL()), this, SLOT(ToggleFrameEdit()));
827
        connect(propertiesPalette, SIGNAL(NewTF(QString)), this, SLOT(SetNewFont(QString)));
828
        connect(propertiesPalette, SIGNAL(UpdtGui(int)), this, SLOT(HaveNewSel(int)));
829
        connect(propertiesPalette->Cpal, SIGNAL(NewPen(QString)), this, SLOT(setPenFarbe(QString)));
830
        connect(propertiesPalette->Cpal, SIGNAL(NewBrush(QString)), this, SLOT(setBrushFarbe(QString)));
831
        connect(propertiesPalette->Cpal, SIGNAL(NewPenShade(int)), this, SLOT(setPenShade(int)));
832
        connect(propertiesPalette->Cpal, SIGNAL(NewBrushShade(int)), this, SLOT(setBrushShade(int)));
2026 cbradney 833
        connect(propertiesPalette->Cpal, SIGNAL(NewTrans(double)), this, SLOT(setItemFillTransparency(double)));
834
        connect(propertiesPalette->Cpal, SIGNAL(NewTransS(double)), this, SLOT(setItemLineTransparency(double)));
1545 cbradney 835
        connect(propertiesPalette->Cpal, SIGNAL(NewGradient(int)), this, SLOT(setGradFill(int)));
836
        connect(propertiesPalette->Cpal->gradEdit->Preview, SIGNAL(gradientChanged()), this, SLOT(updtGradFill()));
837
        connect(propertiesPalette->Cpal, SIGNAL(gradientChanged()), this, SLOT(updtGradFill()));
838
        connect(propertiesPalette->Cpal, SIGNAL(QueryItem()), this, SLOT(GetBrushPen()));
839
        connect(docCheckerPalette, SIGNAL(selectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
840
        connect(docCheckerPalette, SIGNAL(selectPage(int)), this, SLOT(SelectFromOutlS(int)));
2093 cbradney 841
        connect(docCheckerPalette, SIGNAL(selectMasterPage(QString)), this, SLOT(manageMasterPages(QString)));
1545 cbradney 842
        connect(outlinePalette, SIGNAL(selectElement(int, int, bool)), this, SLOT(SelectFromOutl(int, int, bool)));
843
        connect(outlinePalette, SIGNAL(selectPage(int)), this, SLOT(SelectFromOutlS(int)));
2093 cbradney 844
        connect(outlinePalette, SIGNAL(selectMasterPage(QString)), this, SLOT(manageMasterPages(QString)));
1545 cbradney 845
        connect(propertiesPalette->Spal, SIGNAL(newStyle(int)), this, SLOT(setNewAbStyle(int)));
846
        connect(propertiesPalette, SIGNAL(EditLSt()), this, SLOT(slotEditLineStyles()));
847
        connect(nodePalette, SIGNAL(Schliessen()), this, SLOT(NoFrameEdit()));
848
        connect(layerPalette, SIGNAL(LayerActivated(int)), this, SLOT(changeLayer(int)));
849
        connect(layerPalette, SIGNAL(LayerRemoved(int, bool)), this, SLOT(LayerRemove(int, bool)));
850
        connect(layerPalette, SIGNAL(LayerChanged()), this, SLOT(showLayer()));
2093 cbradney 851
        connect(pagePalette, SIGNAL(EditTemp(QString)), this, SLOT(manageMasterPages(QString)));
852
        connect(pagePalette->PageView, SIGNAL(UseTemp(QString, int)), this, SLOT(Apply_MasterPage(QString, int)));
1545 cbradney 853
        connect(pagePalette->PageView, SIGNAL(NewPage(int, QString)), this, SLOT(slotNewPageP(int, QString)));
854
        connect(pagePalette->Trash, SIGNAL(DelPage(int)), this, SLOT(DeletePage2(int)));
855
        connect(pagePalette, SIGNAL(GotoSeite(int)), this, SLOT(SelectFromOutlS(int)));
856
        connect(bookmarkPalette->BView, SIGNAL(MarkMoved()), this, SLOT(StoreBookmarks()));
857
        connect(bookmarkPalette->BView, SIGNAL(ChangeBMNr(int, int, int)), this, SLOT(ChBookmarks(int, int, int)));
858
        connect(bookmarkPalette->BView, SIGNAL(SelectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
801 cbradney 859
}
860
 
861
void ScribusApp::initScrapbook()
862
{
1554 cbradney 863
        QString scrapbookFile = QDir::convertSeparators(PrefsPfad+"/scrap13.scs");
801 cbradney 864
        QFileInfo scrapbookFileInfo = QFileInfo(scrapbookFile);
865
        if (scrapbookFileInfo.exists())
2144 cbradney 866
                scrapbookPalette->readContents(scrapbookFile);
867
        scrapbookPalette->setScrapbookFileName(scrapbookFile);
1545 cbradney 868
        scrapbookPalette->AdjustMenu();
801 cbradney 869
}
870
 
871
void ScribusApp::initCrashHandler()
872
{
873
        typedef void (*HandlerType)(int);
874
        HandlerType handler     = 0;
875
        handler = ScribusApp::defaultCrashHandler;
876
        if (!handler)
877
                handler = SIG_DFL;
878
        sigset_t mask;
879
        sigemptyset(&mask);
880
#ifdef SIGSEGV
881
        signal (SIGSEGV, handler);
882
        sigaddset(&mask, SIGSEGV);
883
#endif
884
#ifdef SIGFPE
885
        signal (SIGFPE, handler);
886
        sigaddset(&mask, SIGFPE);
887
#endif
888
#ifdef SIGILL
889
        signal (SIGILL, handler);
890
        sigaddset(&mask, SIGILL);
891
#endif
892
#ifdef SIGABRT
893
        signal (SIGABRT, handler);
894
        sigaddset(&mask, SIGABRT);
895
#endif
896
        sigprocmask(SIG_UNBLOCK, &mask, 0);
897
}
898
 
770 cbradney 899
const QString ScribusApp::getGuiLanguage()
900
{
901
        return guiLanguage;
902
}
903
 
1525 cbradney 904
bool ScribusApp::warningVersion(QWidget *parent)
905
{
906
        bool retval = false;
2143 subik 907
        int t = QMessageBox::warning(parent, QObject::tr("Scribus Development Version"), "<qt>" +
2132 cbradney 908
                                                                 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 909
                                                                 QObject::tr("&Cancel"), QObject::tr("&Proceed"), "", 1, 0);
910
        if (t == 1)
911
                retval = true;
912
        return retval;
913
}
914
 
675 cbradney 915
/*!
916
 \fn QString ScribusApp::getPreferencesLocation()
917
 \author Craig Bradney
918
 \date Thu 18 Nov 2004
919
 \brief Get the user's preference file location. Rename any existing old preferences files
920
 \param None
921
 \retval QString Location of the user's preferences
922
 */
923
 
924
QString ScribusApp::getPreferencesLocation()
925
{
926
        QString Pff = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus");
927
        QFileInfo Pffi = QFileInfo(Pff);
928
        QString PrefsPfad;
1144 cbradney 929
        //If we are using ~/.scribus
675 cbradney 930
        if (Pffi.exists())
931
        {
932
                if (Pffi.isDir())
933
                        PrefsPfad = Pff;
934
                else
935
                        PrefsPfad = QDir::homeDirPath();
936
        }
1144 cbradney 937
        else // Move to using ~/.scribus/scribus.* from ~/.scribus.*
675 cbradney 938
        {
1144 cbradney 939
                QDir prefsDirectory = QDir();
940
                prefsDirectory.mkdir(Pff);
675 cbradney 941
                PrefsPfad = Pff;
1144 cbradney 942
                QString oldPR = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus.rc");
943
                QFileInfo oldPi = QFileInfo(oldPR);
944
                if (oldPi.exists())
945
                        moveFile(oldPR, Pff+"/scribus.rc");
946
                QString oldPR2 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusfont.rc");
947
                QFileInfo oldPi2 = QFileInfo(oldPR2);
948
                if (oldPi2.exists())
949
                        moveFile(oldPR2, Pff+"/scribusfont.rc");
950
                QString oldPR3 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusscrap.scs");
951
                QFileInfo oldPi3 = QFileInfo(oldPR3);
952
                if (oldPi3.exists())
953
                        moveFile(oldPR3, Pff+"/scrap.scs");
675 cbradney 954
        }
1392 cbradney 955
        return PrefsPfad;
956
}
957
 
958
/*!
959
 \fn QString ScribusApp::convertToXMLPreferences(QString prefsLocation)
960
 \author Craig Bradney
961
 \date Sun 09 Jan 2005
962
 \brief Convert 1.2 prefs to 1.3 prefs
963
 \param prefsLocation Location of user preferences
964
 \retval None
965
 */
966
bool ScribusApp::convert12Preferences(const QString prefsLocation)
967
{
1144 cbradney 968
        //Now make copies for 1.3 use and leave the old ones alone for <1.3.0 usage
1554 cbradney 969
        QString oldPR[5], newPR[5];
970
        oldPR[0]=QDir::convertSeparators(prefsLocation+"/scribus.rc");
971
        oldPR[1]=QDir::convertSeparators(prefsLocation+"/scribusfont.rc");
972
        oldPR[2]=QDir::convertSeparators(prefsLocation+"/scrap.scs");
973
        oldPR[3]=QDir::convertSeparators(prefsLocation+"/prefs.xml");
974
        oldPR[4]=QDir::convertSeparators(prefsLocation+"/scripter.rc");
975
        newPR[0]=QDir::convertSeparators(prefsLocation+"/scribus13.rc");
976
        newPR[1]=QDir::convertSeparators(prefsLocation+"/scribusfont13.rc");
977
        newPR[2]=QDir::convertSeparators(prefsLocation+"/scrap13.scs");
978
        newPR[3]=QDir::convertSeparators(prefsLocation+"/prefs13.xml");
979
        newPR[4]=QDir::convertSeparators(prefsLocation+"/scripter13.rc");
1485 tsoots 980
 
1554 cbradney 981
        bool existsOldPR[5], existsNewPR[5];
982
        for (uint i=0;i<5;++i)
983
        {
984
                existsOldPR[i] =QFile::exists(oldPR[i]);
985
                existsNewPR[i] =QFile::exists(newPR[i]);
986
        }
1485 tsoots 987
 
1392 cbradney 988
        bool retVal=false;
1144 cbradney 989
        //Only check for these two as they will be autocreated if they dont exist.
1554 cbradney 990
        if( (existsOldPR[0] && !existsNewPR[0]) || (existsOldPR[3] && !existsNewPR[3]) )
1144 cbradney 991
        {
1392 cbradney 992
                retVal=true; // converting from 1.2 prefs
1144 cbradney 993
                if (splashScreen)
994
                        splashScreen->hide();
995
                if ( (QMessageBox::question( this, tr("Migrate Old Scribus Settings?"),
1392 cbradney 996
                          tr("Scribus has detected existing Scribus 1.2 preferences files.\n"
997
                                          "Do you want to migrate them to the new Scribus version?"),
998
                          QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::NoButton))==QMessageBox::Yes )
1144 cbradney 999
                {
1554 cbradney 1000
                        for (uint i=0;i<5;++i)
1001
                        {
1002
                                if (existsOldPR[i] && !existsNewPR[i])
1003
                                        copyFile(oldPR[i], newPR[i]);
1004
                        }
1144 cbradney 1005
                }
1006
                if (splashScreen)
1007
                        splashScreen->show();
1008
        }
1392 cbradney 1009
        return retVal;
675 cbradney 1010
}
1011
 
3 paul 1012
void ScribusApp::initMenuBar()
1013
{
1014
        QFont tmp;
1015
        RecentDocs.clear();
1208 cbradney 1016
 
1017
        scrMenuMgr->createMenu("File", tr("&File"));
1018
        scrMenuMgr->addMenuItem(scrActions["fileNew"], "File");
1019
        scrMenuMgr->addMenuItem(scrActions["fileOpen"], "File");
1020
        recentFileMenuName="FileOpenRecent";
1021
        scrMenuMgr->createMenu(recentFileMenuName, tr("Open &Recent"), "File");
1022
        scrMenuMgr->addMenuSeparator("File");
1023
        scrMenuMgr->addMenuItem(scrActions["fileClose"], "File");
1024
        scrMenuMgr->addMenuItem(scrActions["fileSave"], "File");
1025
        scrMenuMgr->addMenuItem(scrActions["fileSaveAs"], "File");
1026
        scrMenuMgr->addMenuItem(scrActions["fileRevert"], "File");
1027
        scrMenuMgr->addMenuItem(scrActions["fileCollect"], "File");
1028
        scrMenuMgr->addMenuSeparator("File");
1029
        scrMenuMgr->createMenu("FileImport", tr("&Import"), "File");
1030
        scrMenuMgr->addMenuItem(scrActions["fileImportText"], "FileImport");
1031
        scrMenuMgr->addMenuItem(scrActions["fileImportAppendText"], "FileImport");
1032
        scrMenuMgr->addMenuItem(scrActions["fileImportImage"], "FileImport");
1033
        scrMenuMgr->createMenu("FileExport", tr("&Export"), "File");
1034
        scrMenuMgr->addMenuItem(scrActions["fileExportText"], "FileExport");
1035
        scrMenuMgr->addMenuItem(scrActions["fileExportAsEPS"], "FileExport");
1036
        scrMenuMgr->addMenuItem(scrActions["fileExportAsPDF"], "FileExport");
1037
        scrMenuMgr->addMenuSeparator("File");
1038
        scrMenuMgr->addMenuItem(scrActions["fileDocSetup"], "File");
1039
        scrMenuMgr->addMenuItem(scrActions["filePrint"], "File");
1040
        scrMenuMgr->addMenuSeparator("File");
1041
        scrMenuMgr->addMenuItem(scrActions["fileQuit"], "File");
1042
 
1485 tsoots 1043
        scrActions["fileClose"]->setEnabled(false);
1208 cbradney 1044
        scrActions["fileSave"]->setEnabled(false);
1045
        scrActions["fileSaveAs"]->setEnabled(false);
1046
        scrActions["fileRevert"]->setEnabled(false);
1047
        scrActions["fileCollect"]->setEnabled(false);
1048
        scrActions["fileImportText"]->setEnabled(false);
1049
        scrActions["fileImportImage"]->setEnabled(false);
1050
        scrActions["fileImportAppendText"]->setEnabled(false);
2093 cbradney 1051
        scrActions["pageImport"]->setEnabled(false);
1208 cbradney 1052
        scrActions["fileExportText"]->setEnabled(false);
1053
        scrActions["fileExportAsEPS"]->setEnabled(false);
1054
        scrActions["fileExportAsPDF"]->setEnabled(false);
1055
        scrMenuMgr->setMenuEnabled("FileExport", false);
1056
        scrActions["fileDocSetup"]->setEnabled(false);
1057
        scrActions["filePrint"]->setEnabled(false);
1485 tsoots 1058
 
1227 cbradney 1059
        scrMenuMgr->createMenu("Edit", tr("&Edit"));
1060
        scrMenuMgr->addMenuItem(scrActions["editUndoAction"], "Edit");
1061
        scrMenuMgr->addMenuItem(scrActions["editRedoAction"], "Edit");
1062
        scrMenuMgr->addMenuItem(scrActions["editActionMode"], "Edit");
1063
        scrMenuMgr->addMenuSeparator("Edit");
1064
        scrMenuMgr->addMenuItem(scrActions["editCut"], "Edit");
1065
        scrMenuMgr->addMenuItem(scrActions["editCopy"], "Edit");
1066
        scrMenuMgr->addMenuItem(scrActions["editPaste"], "Edit");
1963 cbradney 1067
        scrMenuMgr->addMenuItem(scrActions["editClearContents"], "Edit");
1227 cbradney 1068
        scrMenuMgr->addMenuItem(scrActions["editSelectAll"], "Edit");
1837 cbradney 1069
        scrMenuMgr->addMenuItem(scrActions["editDeselectAll"], "Edit");
1227 cbradney 1070
        scrMenuMgr->addMenuSeparator("Edit");
1071
        scrMenuMgr->addMenuItem(scrActions["editSearchReplace"], "Edit");
1981 cbradney 1072
        scrMenuMgr->addMenuItem(scrActions["toolsEditWithStoryEditor"], "Edit");
2259 cbradney 1073
        scrMenuMgr->addMenuItem(scrActions["editEditWithImageEditor"], "Edit");
1227 cbradney 1074
        scrMenuMgr->addMenuSeparator("Edit");
1075
        scrMenuMgr->addMenuItem(scrActions["editColors"], "Edit");
1076
        scrMenuMgr->addMenuItem(scrActions["editParaStyles"], "Edit");
1077
        scrMenuMgr->addMenuItem(scrActions["editLineStyles"], "Edit");
2093 cbradney 1078
        scrMenuMgr->addMenuItem(scrActions["editMasterPages"], "Edit");
1227 cbradney 1079
        scrMenuMgr->addMenuItem(scrActions["editJavascripts"], "Edit");
1080
        scrMenuMgr->addMenuSeparator("Edit");
1081
        scrMenuMgr->addMenuItem(scrActions["editPreferences"], "Edit");
1082
        scrActions["editUndoAction"]->setEnabled(false);
1083
        scrActions["editRedoAction"]->setEnabled(false);
1446 tsoots 1084
        scrActions["editActionMode"]->setEnabled(true);
1227 cbradney 1085
        scrActions["editCut"]->setEnabled(false);
1086
        scrActions["editCopy"]->setEnabled(false);
1087
        scrActions["editPaste"]->setEnabled(false);
1963 cbradney 1088
        scrActions["editClearContents"]->setEnabled(false);
1227 cbradney 1089
        scrActions["editSelectAll"]->setEnabled(false);
1837 cbradney 1090
        scrActions["editDeselectAll"]->setEnabled(false);
1227 cbradney 1091
        scrActions["editSearchReplace"]->setEnabled(false);
1092
        scrActions["editParaStyles"]->setEnabled(false);
1093
        scrActions["editLineStyles"]->setEnabled(false);
2093 cbradney 1094
        scrActions["editMasterPages"]->setEnabled(false);
1227 cbradney 1095
        scrActions["editJavascripts"]->setEnabled(false);
1996 cbradney 1096
        scrActions["toolsEditWithStoryEditor"]->setEnabled(false);
2279 cbradney 1097
        scrActions["editEditWithImageEditor"]->setEnabled(false);
1227 cbradney 1098
 
1099
        //Style Menu
1325 cbradney 1100
        scrMenuMgr->createMenu("Style", tr("St&yle"));
1437 cbradney 1101
        //Color menu
1102
        // CB TODO
1103
        scrMenuMgr->createMenu("Color", tr("&Color"));
1104
        ColorMenC = new QComboBox(false);
1105
        ColorMenC->setEditable(false);
1106
        scrMenuMgr->addMenuItem(ColorMenC, "Color");
1485 tsoots 1107
 
1437 cbradney 1108
        //Text size menu
1109
        scrMenuMgr->createMenu("FontSize", tr("&Size"));
1110
        scrActionGroups["fontSize"]->addTo(scrMenuMgr->getLocalPopupMenu("FontSize"));
1485 tsoots 1111
 
1437 cbradney 1112
        //Shade menu
1113
        scrMenuMgr->createMenu("Shade", tr("&Shade"));
1114
        scrActionGroups["shade"]->addTo(scrMenuMgr->getLocalPopupMenu("Shade"));
1485 tsoots 1115
 
1437 cbradney 1116
        //Font menu
1117
        scrMenuMgr->createMenu("Font", tr("&Font"));
1118
        FontMenu = scrMenuMgr->getLocalPopupMenu("Font");
1485 tsoots 1119
 
1437 cbradney 1120
        //Type style menu
1121
        scrMenuMgr->createMenu("TypeEffects", tr("&Effects"));
1122
        scrActionGroups["typeEffects"]->addTo(scrMenuMgr->getLocalPopupMenu("TypeEffects"));
1485 tsoots 1123
 
1236 cbradney 1124
        //Item Menu
1125
        scrMenuMgr->createMenu("Item", tr("&Item"));
1126
        scrMenuMgr->addMenuItem(scrActions["itemDuplicate"], "Item");
1127
        scrMenuMgr->addMenuItem(scrActions["itemMulDuplicate"], "Item");
1128
        scrMenuMgr->addMenuItem(scrActions["itemDelete"], "Item");
1129
        scrMenuMgr->addMenuSeparator("Item");
1130
        scrMenuMgr->addMenuItem(scrActions["itemGroup"], "Item");
1131
        scrMenuMgr->addMenuItem(scrActions["itemUngroup"], "Item");
1132
        scrMenuMgr->addMenuItem(scrActions["itemLock"], "Item");
1858 cbradney 1133
        scrMenuMgr->addMenuItem(scrActions["itemLockSize"], "Item");
2256 cbradney 1134
        scrMenuMgr->addMenuSeparator("Item");
2026 cbradney 1135
        scrMenuMgr->addMenuItem(scrActions["itemImageIsVisible"], "Item");
2260 cbradney 1136
        scrMenuMgr->addMenuItem(scrActions["itemUpdateImage"], "Item");
2259 cbradney 1137
        scrMenuMgr->addMenuItem(scrActions["itemAdjustFrameToImage"], "Item");
2260 cbradney 1138
        scrMenuMgr->addMenuItem(scrActions["itemExtendedImageProperties"], "Item");
2256 cbradney 1139
        scrMenuMgr->createMenu("ItemPreviewSettings", "Preview Settings", "Item");
1140
        scrMenuMgr->addMenuItem(scrActions["itemPreviewLow"], "ItemPreviewSettings");
1141
        scrMenuMgr->addMenuItem(scrActions["itemPreviewNormal"], "ItemPreviewSettings");
1142
        scrMenuMgr->addMenuItem(scrActions["itemPreviewFull"], "ItemPreviewSettings");
1236 cbradney 1143
        scrMenuMgr->addMenuSeparator("Item");
2256 cbradney 1144
        scrMenuMgr->createMenu("ItemLevel", "Level");
1858 cbradney 1145
        scrMenuMgr->addMenuToMenu("ItemLevel", "Item");
2104 cbradney 1146
        scrMenuMgr->addMenuItem(scrActions["itemRaise"], "ItemLevel");
1858 cbradney 1147
        scrMenuMgr->addMenuItem(scrActions["itemLower"], "ItemLevel");
2104 cbradney 1148
        scrMenuMgr->addMenuItem(scrActions["itemRaiseToTop"], "ItemLevel");
1149
        scrMenuMgr->addMenuItem(scrActions["itemLowerToBottom"], "ItemLevel");
2408 cbradney 1150
        scrMenuMgr->createMenu("ItemLayer", "Send to La&yer");
1151
        scrMenuMgr->addMenuToMenu("ItemLayer", "Item");
1152
        layerMenuName="ItemLayer";
1981 cbradney 1153
        scrMenuMgr->addMenuItem(scrActions["itemSendToScrapbook"], "Item");
1236 cbradney 1154
        scrMenuMgr->addMenuSeparator("Item");
2256 cbradney 1155
        scrMenuMgr->addMenuItem(scrActions["itemAttributes"], "Item");
1981 cbradney 1156
        scrMenuMgr->createMenu("ItemPDFOptions", tr("&PDF Options"));
1157
        scrMenuMgr->addMenuToMenu("ItemPDFOptions", "Item");
1158
        scrMenuMgr->addMenuItem(scrActions["itemPDFIsAnnotation"], "ItemPDFOptions");
2143 subik 1159
        scrMenuMgr->addMenuItem(scrActions["itemPDFIsBookmark"], "ItemPDFOptions");
1981 cbradney 1160
        scrMenuMgr->addMenuItem(scrActions["itemPDFAnnotationProps"], "ItemPDFOptions");
1161
        scrMenuMgr->addMenuItem(scrActions["itemPDFFieldProps"], "ItemPDFOptions");
1236 cbradney 1162
        scrMenuMgr->createMenu("ItemShapes", tr("&Shape"), "Item");
1163
        // CB TODO
1164
        //Shape menu
169 Franz 1165
        SCustom = new Autoforms(0);
1236 cbradney 1166
        scrMenuMgr->addMenuItem(SCustom, "ItemShapes");
272 Franz 1167
        connect(SCustom, SIGNAL(FormSel(int, int, double *)), this, SLOT(MakeFrame(int, int, double *)));
1236 cbradney 1168
        scrMenuMgr->addMenuItem(scrActions["itemShapeEdit"], "ItemShapes");
1858 cbradney 1169
        scrMenuMgr->createMenu("ItemConvertTo", tr("C&onvert To"));
1170
        scrMenuMgr->addMenuToMenu("ItemConvertTo", "Item");
1171
        scrMenuMgr->addMenuItem(scrActions["itemConvertToBezierCurve"], "ItemConvertTo");
1172
        scrMenuMgr->addMenuItem(scrActions["itemConvertToImageFrame"], "ItemConvertTo");
1173
        scrMenuMgr->addMenuItem(scrActions["itemConvertToOutlines"], "ItemConvertTo");
1174
        scrMenuMgr->addMenuItem(scrActions["itemConvertToPolygon"], "ItemConvertTo");
1175
        scrMenuMgr->addMenuItem(scrActions["itemConvertToTextFrame"], "ItemConvertTo");
2143 subik 1176
 
1236 cbradney 1177
        scrMenuMgr->addMenuItem(scrActions["itemAttachTextToPath"], "Item");
1178
        scrMenuMgr->addMenuItem(scrActions["itemDetachTextFromPath"], "Item");
1179
        scrMenuMgr->addMenuItem(scrActions["itemCombinePolygons"], "Item");
1180
        scrMenuMgr->addMenuItem(scrActions["itemSplitPolygons"], "Item");
1181
        scrMenuMgr->setMenuEnabled("ItemShapes", false);
1182
        scrActions["itemGroup"]->setEnabled(false);
1183
        scrActions["itemUngroup"]->setEnabled(false);
1184
        scrActions["itemAttachTextToPath"]->setEnabled(false);
1185
        scrActions["itemDetachTextFromPath"]->setEnabled(false);
1186
        scrActions["itemCombinePolygons"]->setEnabled(false);
1187
        scrActions["itemSplitPolygons"]->setEnabled(false);
1188
        scrActions["itemLock"]->setEnabled(false);
1858 cbradney 1189
        scrActions["itemLockSize"]->setEnabled(false);
2026 cbradney 1190
        scrActions["itemImageIsVisible"]->setEnabled(false);
1858 cbradney 1191
        scrMenuMgr->setMenuEnabled("ItemConvertTo", false);
1192
        scrActions["itemConvertToBezierCurve"]->setEnabled(false);
1193
        scrActions["itemConvertToImageFrame"]->setEnabled(false);
1236 cbradney 1194
        scrActions["itemConvertToOutlines"]->setEnabled(false);
1858 cbradney 1195
        scrActions["itemConvertToPolygon"]->setEnabled(false);
1196
        scrActions["itemConvertToTextFrame"]->setEnabled(false);
1485 tsoots 1197
 
1801 cbradney 1198
        //Insert menu
1199
        scrMenuMgr->createMenu("Insert", tr("I&nsert"));
1200
        scrMenuMgr->addMenuItem(scrActions["toolsInsertTextFrame"], "Insert");
1201
        scrMenuMgr->addMenuItem(scrActions["toolsInsertImageFrame"], "Insert");
1202
        scrMenuMgr->addMenuItem(scrActions["toolsInsertTableFrame"], "Insert");
1203
        scrMenuMgr->addMenuItem(scrActions["toolsInsertShape"], "Insert");
1204
        scrMenuMgr->addMenuItem(scrActions["toolsInsertPolygon"], "Insert");
1205
        scrMenuMgr->addMenuItem(scrActions["toolsInsertLine"], "Insert");
1206
        scrMenuMgr->addMenuItem(scrActions["toolsInsertBezier"], "Insert");
1207
        scrMenuMgr->addMenuItem(scrActions["toolsInsertFreehandLine"], "Insert");
1208
        scrMenuMgr->addMenuSeparator("Insert");
1903 cbradney 1209
        scrMenuMgr->addMenuItem(scrActions["insertGlyph"], "Insert");
2143 subik 1210
 
2226 cbradney 1211
        scrMenuMgr->createMenu("InsertChar", tr("Character"), "Insert");
1212
        //scrMenuMgr->addMenuToMenu("InsertChar", "Insert");
1903 cbradney 1213
        scrMenuMgr->addMenuItem(scrActions["specialPageNumber"], "InsertChar");
1214
        scrMenuMgr->addMenuItem(scrActions["specialSmartHyphen"], "InsertChar");
2407 fschmid 1215
        scrMenuMgr->addMenuItem(scrActions["specialNonBreakingHyphen"], "InsertChar");
2039 cbradney 1216
        scrMenuMgr->addMenuSeparator("InsertChar");
1903 cbradney 1217
        scrMenuMgr->addMenuItem(scrActions["specialCopyRight"], "InsertChar");
1218
        scrMenuMgr->addMenuItem(scrActions["specialRegdTM"], "InsertChar");
1219
        scrMenuMgr->addMenuItem(scrActions["specialTM"], "InsertChar");
1220
        scrMenuMgr->addMenuItem(scrActions["specialBullet"], "InsertChar");
1221
        scrMenuMgr->addMenuSeparator("InsertChar");
1222
        scrMenuMgr->addMenuItem(scrActions["specialDashEm"], "InsertChar");
1223
        scrMenuMgr->addMenuItem(scrActions["specialDashEn"], "InsertChar");
1224
        scrMenuMgr->addMenuItem(scrActions["specialDashFigure"], "InsertChar");
1225
        scrMenuMgr->addMenuItem(scrActions["specialDashQuotation"], "InsertChar");
2143 subik 1226
 
2226 cbradney 1227
        scrMenuMgr->createMenu("InsertQuote", tr("Quote"), "Insert");
1228
        //scrMenuMgr->addMenuToMenu("InsertQuote", "Insert");
2039 cbradney 1229
        scrMenuMgr->addMenuItem(scrActions["specialQuoteApostrophe"], "InsertQuote");
1230
        scrMenuMgr->addMenuItem(scrActions["specialQuoteStraight"], "InsertQuote");
1231
        scrMenuMgr->addMenuSeparator("InsertQuote");
1232
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleLeft"], "InsertQuote");
1233
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleRight"], "InsertQuote");
1234
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleLeft"], "InsertQuote");
1235
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleRight"], "InsertQuote");
1236
        scrMenuMgr->addMenuSeparator("InsertQuote");
1237
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleReversed"], "InsertQuote");
1238
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleReversed"], "InsertQuote");
1239
        scrMenuMgr->addMenuSeparator("InsertQuote");
1240
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleLeftGuillemet"], "InsertQuote");
1241
        scrMenuMgr->addMenuItem(scrActions["specialQuoteSingleRightGuillemet"], "InsertQuote");
1242
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleLeftGuillemet"], "InsertQuote");
1243
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleRightGuillemet"], "InsertQuote");
1244
        scrMenuMgr->addMenuSeparator("InsertQuote");
1245
        scrMenuMgr->addMenuItem(scrActions["specialQuoteLowSingleComma"], "InsertQuote");
1246
        scrMenuMgr->addMenuItem(scrActions["specialQuoteLowDoubleComma"], "InsertQuote");
1247
        scrMenuMgr->addMenuItem(scrActions["specialQuoteDoubleTurnedComma"], "InsertQuote");
1248
        scrMenuMgr->addMenuSeparator("InsertQuote");
1249
        scrMenuMgr->addMenuItem(scrActions["specialQuoteCJKSingleLeft"], "InsertQuote");
1250
        scrMenuMgr->addMenuItem(scrActions["specialQuoteCJKSingleRight"], "InsertQuote");
1251
        scrMenuMgr->addMenuItem(scrActions["specialQuoteCJKDoubleLeft"], "InsertQuote");
1252
        scrMenuMgr->addMenuItem(scrActions["specialQuoteCJKDoubleRight"], "InsertQuote");
1903 cbradney 1253
 
2226 cbradney 1254
        scrMenuMgr->createMenu("InsertSpace", tr("Space"), "Insert");
1255
        //scrMenuMgr->addMenuToMenu("InsertSpace", "Insert");
1903 cbradney 1256
        scrMenuMgr->addMenuItem(scrActions["specialNonBreakingSpace"], "InsertSpace");
2352 fschmid 1257
        scrMenuMgr->addMenuItem(scrActions["specialNewLine"], "InsertSpace");
1258
        scrMenuMgr->addMenuItem(scrActions["specialFrameBreak"], "InsertSpace");
2384 fschmid 1259
        scrMenuMgr->addMenuItem(scrActions["specialColumnBreak"], "InsertSpace");
1903 cbradney 1260
        scrMenuMgr->addMenuSeparator("Insert");
1818 cbradney 1261
        scrMenuMgr->addMenuItem(scrActions["insertSampleText"], "Insert");
1903 cbradney 1262
        scrActions["insertGlyph"]->setEnabled(false);
2143 subik 1263
 
1236 cbradney 1264
        //Page menu
1265
        scrMenuMgr->createMenu("Page", tr("&Page"));
1266
        scrMenuMgr->addMenuItem(scrActions["pageInsert"], "Page");
2143 subik 1267
        scrMenuMgr->addMenuItem(scrActions["pageImport"], "Page");
1236 cbradney 1268
        scrMenuMgr->addMenuItem(scrActions["pageDelete"], "Page");
1269
        scrMenuMgr->addMenuItem(scrActions["pageCopy"], "Page");
1270
        scrMenuMgr->addMenuItem(scrActions["pageMove"], "Page");
2093 cbradney 1271
        scrMenuMgr->addMenuItem(scrActions["pageApplyMasterPage"], "Page");
1236 cbradney 1272
        scrMenuMgr->addMenuItem(scrActions["pageManageGuides"], "Page");
1273
        scrActions["pageDelete"]->setEnabled(false);
1274
        scrActions["pageMove"]->setEnabled(false);
1485 tsoots 1275
 
1236 cbradney 1276
        //View menu
1246 cbradney 1277
        scrMenuMgr->createMenu("View", tr("&View"));
1278
        scrMenuMgr->addMenuItem(scrActions["viewFitInWindow"], "View");
1279
        scrMenuMgr->addMenuItem(scrActions["viewFit50"], "View");
1280
        scrMenuMgr->addMenuItem(scrActions["viewFit75"], "View");
1281
        scrMenuMgr->addMenuItem(scrActions["viewFit100"], "View");
1282
        scrMenuMgr->addMenuItem(scrActions["viewFit200"], "View");
1283
        scrMenuMgr->addMenuItem(scrActions["viewFit20"], "View");
1284
        scrMenuMgr->addMenuSeparator("View");
1285
        scrMenuMgr->addMenuItem(scrActions["viewShowMargins"], "View");
1286
        scrMenuMgr->addMenuItem(scrActions["viewShowFrames"], "View");
1287
        scrMenuMgr->addMenuItem(scrActions["viewShowImages"], "View");
1288
        scrMenuMgr->addMenuItem(scrActions["viewShowGrid"], "View");
1289
        scrMenuMgr->addMenuItem(scrActions["viewShowGuides"], "View");
1334 cbradney 1290
        scrMenuMgr->addMenuItem(scrActions["viewShowBaseline"], "View");
1246 cbradney 1291
        scrMenuMgr->addMenuItem(scrActions["viewShowTextChain"], "View");
2353 fschmid 1292
        scrMenuMgr->addMenuItem(scrActions["viewShowTextControls"], "View");
1246 cbradney 1293
        scrMenuMgr->addMenuSeparator("View");
1294
        scrMenuMgr->addMenuItem(scrActions["viewSnapToGrid"], "View");
1295
        scrMenuMgr->addMenuItem(scrActions["viewSnapToGuides"], "View");
1330 fschmid 1296
//      scrMenuMgr->addMenuItem(scrActions["viewNewView"], "View");
1485 tsoots 1297
 
1236 cbradney 1298
        //Tool menu
1255 cbradney 1299
        scrMenuMgr->createMenu("Tools", tr("&Tools"));
1300
        scrMenuMgr->addMenuItem(scrActions["toolsProperties"], "Tools");
1301
        scrMenuMgr->addMenuItem(scrActions["toolsOutline"], "Tools");
1302
        scrMenuMgr->addMenuItem(scrActions["toolsScrapbook"], "Tools");
1303
        scrMenuMgr->addMenuItem(scrActions["toolsLayers"], "Tools");
1304
        scrMenuMgr->addMenuItem(scrActions["toolsPages"], "Tools");
1305
        scrMenuMgr->addMenuItem(scrActions["toolsBookmarks"], "Tools");
1525 cbradney 1306
        scrMenuMgr->addMenuItem(scrActions["toolsMeasurements"], "Tools");
1255 cbradney 1307
        scrMenuMgr->addMenuItem(scrActions["toolsActionHistory"], "Tools");
1308
        scrMenuMgr->addMenuItem(scrActions["toolsPreflightVerifier"], "Tools");
2355 cbradney 1309
        scrMenuMgr->addMenuItem(scrActions["toolsAlignDistribute"], "Tools");
1255 cbradney 1310
        scrMenuMgr->addMenuSeparator("Tools");
1311
        scrMenuMgr->addMenuItem(scrActions["toolsToolbarTools"], "Tools");
1485 tsoots 1312
        scrMenuMgr->addMenuItem(scrActions["toolsToolbarPDF"], "Tools");
1265 cbradney 1313
        //scrActions["toolsPreflightVerifier"]->setEnabled(false);
1485 tsoots 1314
 
1236 cbradney 1315
        //Extra menu
1260 cbradney 1316
        scrMenuMgr->createMenu("Extras", tr("E&xtras"));
1317
        scrMenuMgr->addMenuItem(scrActions["extrasManagePictures"], "Extras");
1318
        scrMenuMgr->addMenuItem(scrActions["extrasHyphenateText"], "Extras");
1694 cbradney 1319
        scrMenuMgr->addMenuItem(scrActions["extrasGenerateTableOfContents"], "Extras");
2143 subik 1320
 
1260 cbradney 1321
        scrMenuMgr->setMenuEnabled("Extras", false);
1322
        scrActions["extrasHyphenateText"]->setEnabled(false);
1485 tsoots 1323
 
1236 cbradney 1324
        //Window menu
1260 cbradney 1325
        scrMenuMgr->createMenu("Windows", tr("&Windows"));
1326
        connect(scrMenuMgr->getLocalPopupMenu("Windows"), SIGNAL(aboutToShow()), this, SLOT(windowsMenuAboutToShow()));
1485 tsoots 1327
 
1260 cbradney 1328
        //Help menu
1269 cbradney 1329
        scrMenuMgr->createMenu("Help", tr("&Help"));
1330
        scrMenuMgr->addMenuItem(scrActions["helpAboutScribus"], "Help");
1331
        scrMenuMgr->addMenuItem(scrActions["helpAboutQt"], "Help");
1332
        scrMenuMgr->addMenuSeparator("Help");
1333
        scrMenuMgr->addMenuItem(scrActions["helpTooltips"], "Help");
1334
        scrMenuMgr->addMenuItem(scrActions["helpManual"], "Help");
1485 tsoots 1335
 
1208 cbradney 1336
        scrMenuMgr->addMenuToMenuBar("File");
1227 cbradney 1337
        scrMenuMgr->addMenuToMenuBar("Edit");
1325 cbradney 1338
        scrMenuMgr->addMenuToMenuBar("Style");
1339
        scrMenuMgr->setMenuEnabled("Style", false);
1236 cbradney 1340
        scrMenuMgr->addMenuToMenuBar("Item");
1801 cbradney 1341
        scrMenuMgr->setMenuEnabled("Item", false);
1342
        scrMenuMgr->addMenuToMenuBar("Insert");
1343
        scrMenuMgr->setMenuEnabled("Insert", false);
1236 cbradney 1344
        scrMenuMgr->addMenuToMenuBar("Page");
1345
        scrMenuMgr->setMenuEnabled("Page", false);
1246 cbradney 1346
        scrMenuMgr->addMenuToMenuBar("View");
1347
        scrMenuMgr->setMenuEnabled("View", false);
1255 cbradney 1348
        scrMenuMgr->addMenuToMenuBar("Tools");
1260 cbradney 1349
        scrMenuMgr->addMenuToMenuBar("Extras");
1350
        scrMenuMgr->setMenuEnabled("Extras", false);
1351
        scrMenuMgr->addMenuToMenuBar("Windows");
1352
        scrMenuMgr->setMenuEnabled("Windows", false);
3 paul 1353
        menuBar()->insertSeparator();
1269 cbradney 1354
        scrMenuMgr->addMenuToMenuBar("Help");
1355
 
1236 cbradney 1356
        //Alignment menu
1325 cbradney 1357
        scrMenuMgr->createMenu("Alignment", tr("&Alignment"));
1337 cbradney 1358
        scrMenuMgr->addMenuItem(scrActions["alignLeft"], "Alignment");
1359
        scrMenuMgr->addMenuItem(scrActions["alignCenter"], "Alignment");
1360
        scrMenuMgr->addMenuItem(scrActions["alignRight"], "Alignment");
1361
        scrMenuMgr->addMenuItem(scrActions["alignBlock"], "Alignment");
1362
        scrMenuMgr->addMenuItem(scrActions["alignForced"], "Alignment");
1443 tsoots 1363
 
801 cbradney 1364
        connect(ColorMenC, SIGNAL(activated(int)), this, SLOT(setItemFarbe(int)));
1365
        connect(FontMenu, SIGNAL(activated(int)), this, SLOT(setItemFont(int)));
3 paul 1366
}
1367
 
1368
void ScribusApp::initStatusBar()
1369
{
2433 cbradney 1370
        mainWindowStatusLabel = new QLabel( "           ", statusBar(), "ft");
1371
        mainWindowProgressBar = new QProgressBar(statusBar(), "p");
1372
        mainWindowProgressBar->setCenterIndicator(true);
1373
        mainWindowProgressBar->setFixedWidth( 100 );
1374
        mainWindowProgressBar->reset();
1375
        mainWindowXPosLabel = new QLabel( "X-Pos:", statusBar(), "xt");
1376
        mainWindowYPosLabel = new QLabel( "Y-Pos:", statusBar(), "yt");
1377
        mainWindowXPosDataLabel = new QLabel( "         ", statusBar(), "dt");
1378
        mainWindowYPosDataLabel = new QLabel( "         ", statusBar(), "ydt");
809 cbradney 1379
 
2433 cbradney 1380
        statusBar()->addWidget(mainWindowStatusLabel, 3, true);
1381
        statusBar()->addWidget(mainWindowProgressBar, 0, true);
1382
        statusBar()->addWidget(mainWindowXPosLabel, 0, true);
1383
        statusBar()->addWidget(mainWindowXPosDataLabel, 1, true);
1384
        statusBar()->addWidget(mainWindowYPosLabel, 0, true);
1385
        statusBar()->addWidget(mainWindowYPosDataLabel, 1, true);
3 paul 1386
}
1387
 
2150 cbradney 1388
void ScribusApp::setMousePositionOnStatusBar(double xp, double yp)
3 paul 1389
{
1065 cbradney 1390
        QString suffix=unitGetSuffixFromIndex(doc->docUnitIndex);
1391
        int multiplier=unitGetDecimalsFromIndex(doc->docUnitIndex);
2150 cbradney 1392
        double divisor=static_cast<double>(multiplier);
1393
        int precision=unitGetPrecisionFromIndex(doc->docUnitIndex);
809 cbradney 1394
        QString tmp;
2433 cbradney 1395
        mainWindowXPosDataLabel->setText(tmp.setNum(qRound(xp*doc->unitRatio * multiplier) / divisor, 'f', precision) + suffix);
1396
        mainWindowYPosDataLabel->setText(tmp.setNum(qRound(yp*doc->unitRatio * multiplier) / divisor, 'f', precision) + suffix);
3 paul 1397
}
1398
 
1437 cbradney 1399
void ScribusApp::SetKeyEntry(QString actName, QString cleanMenuText, QString keyseq, int rowNumber)
3 paul 1400
{
1401
        Keys ke;
1230 cbradney 1402
        if (actName!="")
1403
        {
1404
                if (scrActions[actName])
1392 cbradney 1405
                {
1230 cbradney 1406
                        ke.actionName=actName;
1392 cbradney 1407
                        ke.keySequence = keyseq;
1408
                        ke.cleanMenuText=cleanMenuText;
1437 cbradney 1409
                        ke.tableRow=rowNumber;
1392 cbradney 1410
                        Prefs.KeyActions.insert(actName, ke);
1411
                }
1230 cbradney 1412
                else
1748 craig 1413
                        qDebug("%s", QString("Action Name: %1 does not exist").arg(actName).ascii());
1230 cbradney 1414
        }
3 paul 1415
}
1416
 
2150 cbradney 1417
void ScribusApp::deleteSelectedTextFromFrame(PageItem *currItem)
3 paul 1418
{
2150 cbradney 1419
        int firstSelection = 0;
238 Franz 1420
        bool first = false;
1957 cbradney 1421
        for (ScText *it = currItem->itemText.first(); it != 0; it = currItem->itemText.next())
272 Franz 1422
        {
1423
                if (it->cselect)
1424
                {
238 Franz 1425
                        first = true;
2434 fschmid 1426
                        if ((it->ch == QChar(25)) && (it->cembedded != 0))
2447 fschmid 1427
                                doc->FrameItems.remove(it->cembedded);
1957 cbradney 1428
                        currItem->itemText.remove();
1429
                        it = currItem->itemText.prev();
272 Franz 1430
                        if (it == 0)
1957 cbradney 1431
                                it = currItem->itemText.first();
272 Franz 1432
                }
238 Franz 1433
                if (!first)
2150 cbradney 1434
                        firstSelection++;
272 Franz 1435
        }
1957 cbradney 1436
        if (currItem->itemText.count() != 0)
238 Franz 1437
        {
1957 cbradney 1438
                if (currItem->itemText.first()->cselect)
3 paul 1439
                {
1957 cbradney 1440
                        currItem->itemText.remove();
1441
                        currItem->CPos = 0;
238 Franz 1442
                }
3 paul 1443
                else
2150 cbradney 1444
                        currItem->CPos = firstSelection;
238 Franz 1445
        }
3 paul 1446
        else
1957 cbradney 1447
                currItem->CPos = 0;
1448
        currItem->HasSel = false;
2447 fschmid 1449
        for (uint a = 0; a < doc->FrameItems.count(); ++a)
2443 fschmid 1450
        {
2447 fschmid 1451
                doc->FrameItems.at(a)->ItemNr = a;
2443 fschmid 1452
        }
272 Franz 1453
        DisableTxEdit();
3 paul 1454
}
1455
 
1957 cbradney 1456
void ScribusApp::setTBvals(PageItem *currItem)
3 paul 1457
{
1957 cbradney 1458
        if (currItem->itemText.count() != 0)
272 Franz 1459
        {
1957 cbradney 1460
                int ChPos = QMIN(currItem->CPos, static_cast<int>(currItem->itemText.count()-1));
2185 fschmid 1461
                doc->CurrentStyle = currItem->itemText.at(ChPos)->cstyle & 1919;
1957 cbradney 1462
                doc->currentParaStyle = currItem->itemText.at(ChPos)->cab;
1065 cbradney 1463
                setAbsValue(doc->currentParaStyle);
1545 cbradney 1464
                propertiesPalette->setAli(doc->currentParaStyle);
1957 cbradney 1465
                doc->CurrFont = currItem->itemText.at(ChPos)->cfont->SCName;
1466
                doc->CurrFontSize = currItem->itemText.at(ChPos)->csize;
1467
                doc->CurrTextFill = currItem->itemText.at(ChPos)->ccolor;
1468
                doc->CurrTextFillSh = currItem->itemText.at(ChPos)->cshade;
1469
                doc->CurrTextStroke = currItem->itemText.at(ChPos)->cstroke;
1470
                doc->CurrTextStrokeSh = currItem->itemText.at(ChPos)->cshade2;
1471
                doc->CurrTextScale = currItem->itemText.at(ChPos)->cscale;
2230 fschmid 1472
                doc->CurrTextScaleV = currItem->itemText.at(ChPos)->cscalev;
2234 fschmid 1473
                doc->CurrTextBase = currItem->itemText.at(ChPos)->cbase;
2247 fschmid 1474
                doc->CurrTextShadowX = currItem->itemText.at(ChPos)->cshadowx;
1475
                doc->CurrTextShadowY = currItem->itemText.at(ChPos)->cshadowy;
2257 fschmid 1476
                doc->CurrTextOutline = currItem->itemText.at(ChPos)->coutline;
2262 fschmid 1477
                doc->CurrTextUnderPos = currItem->itemText.at(ChPos)->cunderpos;
1478
                doc->CurrTextUnderWidth = currItem->itemText.at(ChPos)->cunderwidth;
2272 fschmid 1479
                doc->CurrTextStrikePos = currItem->itemText.at(ChPos)->cstrikepos;
1480
                doc->CurrTextStrikeWidth = currItem->itemText.at(ChPos)->cstrikewidth;
2262 fschmid 1481
                emit TextUnderline(doc->CurrTextUnderPos, doc->CurrTextUnderWidth);
2272 fschmid 1482
                emit TextStrike(doc->CurrTextStrikePos, doc->CurrTextStrikeWidth);
2247 fschmid 1483
                emit TextShadow(doc->CurrTextShadowX, doc->CurrTextShadowY);
68 Franz 1484
                emit TextFarben(doc->CurrTextStroke, doc->CurrTextFill, doc->CurrTextStrokeSh, doc->CurrTextFillSh);
1485
                emit TextIFont(doc->CurrFont);
272 Franz 1486
                emit TextISize(doc->CurrFontSize);
1957 cbradney 1487
                emit TextUSval(currItem->itemText.at(ChPos)->cextra);
272 Franz 1488
                emit TextStil(doc->CurrentStyle);
68 Franz 1489
                emit TextScale(doc->CurrTextScale);
2230 fschmid 1490
                emit TextScaleV(doc->CurrTextScaleV);
2234 fschmid 1491
                emit TextBase(doc->CurrTextBase);
2257 fschmid 1492
                emit TextOutline(doc->CurrTextOutline);
272 Franz 1493
        }
3 paul 1494
}
1495
 
1496
void ScribusApp::wheelEvent(QWheelEvent *w)
1497
{
1498
        if (HaveDoc)
239 Franz 1499
        {
276 Franz 1500
                if ((w->orientation() != Qt::Vertical) || ( w->state() & ShiftButton ))
3 paul 1501
                {
239 Franz 1502
                        if (w->delta() < 0)
240 Franz 1503
                                view->scrollBy(Prefs.Wheelval, 0);
239 Franz 1504
                        else
240 Franz 1505
                                view->scrollBy(-Prefs.Wheelval, 0);
239 Franz 1506
                }
3 paul 1507
                else
239 Franz 1508
                {
1509
                        if (w->delta() < 0)
240 Franz 1510
                                view->scrollBy(0, Prefs.Wheelval);
239 Franz 1511
                        else
240 Franz 1512
                                view->scrollBy(0, -Prefs.Wheelval);
239 Franz 1513
                }
3 paul 1514
                w->accept();
239 Franz 1515
        }
3 paul 1516
}
1517
 
1485 tsoots 1518
//Special keys assigned to actions are stolen by the action and not passed to
1445 cbradney 1519
//keyPressEvent so process them here.
1903 cbradney 1520
void ScribusApp::specialActionKeyEvent(QString actionName, int unicodevalue)
1445 cbradney 1521
{
1522
        if (HaveDoc)
1523
        {
1524
                if (doc->appMode==EditMode)
1525
                {
1526
                        if (view->SelItem.count() == 1)
1527
                        {
1528
                                struct ScText *hg = new ScText;
1957 cbradney 1529
                                PageItem *currItem = view->SelItem.at(0);
1903 cbradney 1530
                                if (unicodevalue!=-1)
1445 cbradney 1531
                                {
1903 cbradney 1532
                                        hg->ch = QString(QChar(unicodevalue));
1789 fschmid 1533
                                        hg->cfont = (*doc->AllFonts)[doc->CurrFont];
1445 cbradney 1534
                                        hg->csize = doc->CurrFontSize;
1535
                                        hg->ccolor = doc->CurrTextFill;
1536
                                        hg->cshade = doc->CurrTextFillSh;
1537
                                        hg->cstroke = doc->CurrTextStroke;
1538
                                        hg->cshade2 = doc->CurrTextStrokeSh;
1539
                                        hg->cscale = doc->CurrTextScale;
2230 fschmid 1540
                                        hg->cscalev = doc->CurrTextScaleV;
2234 fschmid 1541
                                        hg->cbase = doc->CurrTextBase;
2247 fschmid 1542
                                        hg->cshadowx = doc->CurrTextShadowX;
1543
                                        hg->cshadowy = doc->CurrTextShadowY;
2257 fschmid 1544
                                        hg->coutline = doc->CurrTextOutline;
2262 fschmid 1545
                                        hg->cunderpos = doc->CurrTextUnderPos;
1546
                                        hg->cunderwidth = doc->CurrTextUnderWidth;
2272 fschmid 1547
                                        hg->cstrikepos = doc->CurrTextStrikePos;
1548
                                        hg->cstrikewidth = doc->CurrTextStrikeWidth;
1445 cbradney 1549
                                        hg->cselect = false;
1550
                                        hg->cstyle = doc->CurrentStyle;
1551
                                        hg->cab = doc->currentParaStyle;
1552
                                        if (doc->docParagraphStyles[doc->currentParaStyle].Font != "")
1553
                                        {
1789 fschmid 1554
                                                hg->cfont = (*doc->AllFonts)[doc->docParagraphStyles[doc->currentParaStyle].Font];
1445 cbradney 1555
                                                hg->csize = doc->docParagraphStyles[doc->currentParaStyle].FontSize;
1556
                                        }
1557
                                        hg->cextra = 0;
1558
                                        hg->xp = 0;
1559
                                        hg->yp = 0;
1560
                                        hg->PRot = 0;
1561
                                        hg->PtransX = 0;
1562
                                        hg->PtransY = 0;
2434 fschmid 1563
                                        hg->cembedded = 0;
1957 cbradney 1564
                                        currItem->itemText.insert(currItem->CPos, hg);
1565
                                        currItem->CPos += 1;
1566
                                        currItem->Tinput = true;
1567
                                        view->RefreshItem(currItem);
1445 cbradney 1568
                                }
1903 cbradney 1569
                                else if (actionName=="specialSmartHyphen") //ignore the char as we use an attribute if the text item, for now.
1445 cbradney 1570
                                {
1957 cbradney 1571
                                        currItem->itemText.at(QMAX(currItem->CPos-1,0))->cstyle ^= 128;
1572
                                        currItem->Tinput = true;
1573
                                        view->RefreshItem(currItem);
1485 tsoots 1574
                                }
1445 cbradney 1575
                        }
1576
                }
1577
        }
1578
}
1579
 
1493 cbradney 1580
/*!
1581
  \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.
1582
 */
1525 cbradney 1583
bool ScribusApp::eventFilter( QObject */*o*/, QEvent *e )
1493 cbradney 1584
{
1525 cbradney 1585
        bool retVal;
1493 cbradney 1586
        if ( e->type() == QEvent::KeyPress ) {
1587
                QKeyEvent *k = (QKeyEvent *)e;
2357 cbradney 1588
                int keyMod=0;
1589
                if (k->state() & ShiftButton)
1590
                        keyMod |= SHIFT;
1591
                if (k->state() & ControlButton)
1592
                        keyMod |= CTRL;
1593
                if (k->state() & AltButton)
1594
                        keyMod |= ALT;
2369 cbradney 1595
 
1493 cbradney 1596
                QKeySequence currKeySeq = QKeySequence(k->key() | keyMod);
1525 cbradney 1597
                retVal=true;
2357 cbradney 1598
                //Palette actions
1493 cbradney 1599
                if (currKeySeq == scrActions["specialToggleAllPalettes"]->accel())
1600
                        scrActions["specialToggleAllPalettes"]->activate();
1601
                else
1602
                if (currKeySeq == scrActions["toolsProperties"]->accel())
1603
                        scrActions["toolsProperties"]->toggle();
1604
                else
1605
                if (currKeySeq == scrActions["toolsOutline"]->accel())
1606
                        scrActions["toolsOutline"]->toggle();
1607
                else
1608
                if (currKeySeq == scrActions["toolsScrapbook"]->accel())
1609
                        scrActions["toolsScrapbook"]->toggle();
1610
                else
1611
                if (currKeySeq == scrActions["toolsLayers"]->accel())
1612
                        scrActions["toolsLayers"]->toggle();
1613
                else
1614
                if (currKeySeq == scrActions["toolsPages"]->accel())
1615
                        scrActions["toolsPages"]->toggle();
1616
                else
1617
                if (currKeySeq == scrActions["toolsBookmarks"]->accel())
1618
                        scrActions["toolsBookmarks"]->toggle();
1619
                else
1620
                if (currKeySeq == scrActions["toolsActionHistory"]->accel())
1621
                        scrActions["toolsActionHistory"]->toggle();
1622
                else
1623
                if (currKeySeq == scrActions["toolsPreflightVerifier"]->accel())
1624
                        scrActions["toolsPreflightVerifier"]->toggle();
1525 cbradney 1625
                else
2355 cbradney 1626
                if (currKeySeq == scrActions["toolsAlignDistribute"]->accel())
1627
                        scrActions["toolsAlignDistribute"]->toggle();
1628
                else
2357 cbradney 1629
                //Undo actions
1630
                if (currKeySeq == scrActions["editUndoAction"]->accel() && scrActions["editUndoAction"]->isEnabled())
1631
                        scrActions["editUndoAction"]->activate();
1632
                else
1633
                if (currKeySeq == scrActions["editRedoAction"]->accel() && scrActions["editRedoAction"]->isEnabled())
1634
                        scrActions["editRedoAction"]->activate();
1635
                else
1636
                //Other actions
1565 cbradney 1637
                if (currKeySeq == scrActions["fileQuit"]->accel())
1638
                        scrActions["fileQuit"]->activate();
2143 subik 1639
                else
1525 cbradney 1640
                        retVal=false;
1493 cbradney 1641
        }
1525 cbradney 1642
        else
1643
                retVal=false;
1493 cbradney 1644
        //Return false to pass event to object
1645
        return retVal;
1646
}
1647
 
3 paul 1648
void ScribusApp::keyPressEvent(QKeyEvent *k)
1649
{
146 Franz 1650
        QWidgetList windows;
237 Franz 1651
        QWidget* w = NULL;
1065 cbradney 1652
        struct ScText *hg;
3 paul 1653
        int kk = k->key();
1654
        int as = k->ascii();
80 Franz 1655
        double altx, alty;
3 paul 1656
        QString uc = k->text();
1657
        QString cr, Tcha, Twort;
1658
        uint Tcoun;
237 Franz 1659
        int len, pos, c;
92 Franz 1660
        if (keyrep)
1661
                return;
1662
        keyrep = true;
3 paul 1663
        switch (k->state())
272 Franz 1664
        {
1665
        case ShiftButton:
1554 cbradney 1666
                KeyMod = SHIFT;
272 Franz 1667
                break;
1668
        case AltButton:
1554 cbradney 1669
                KeyMod = ALT;
272 Franz 1670
                break;
1671
        case ControlButton:
1554 cbradney 1672
                KeyMod = CTRL;
272 Franz 1673
                break;
1674
        default:
1675
                KeyMod = 0;
1676
                break;
1677
        }
292 Franz 1678
        if ((kk == Key_Escape) && (HaveDoc))
1679
        {
1680
                keyrep = false;
1957 cbradney 1681
                PageItem *currItem;
855 fschmid 1682
                if ((view->SelItem.count() != 0))
1683
                {
1957 cbradney 1684
                        currItem = view->SelItem.at(0);
1065 cbradney 1685
                        switch (doc->appMode)
855 fschmid 1686
                        {
1065 cbradney 1687
                                case NormalMode:
1957 cbradney 1688
                                        currItem->Sizing = false;
855 fschmid 1689
                                        if (doc->SubMode != -1)
1690
                                        {
1691
                                                view->Deselect(false);
1957 cbradney 1692
                                                doc->Items.remove(currItem->ItemNr);
855 fschmid 1693
                                        }
1694
                                        break;
1229 fschmid 1695
                                case LinkFrames:
1696
                                case UnlinkFrames:
1065 cbradney 1697
                                case EditMode:
1827 fschmid 1698
                                case Rotation:
1699
                                                view->Deselect(false);
1700
                                case PanningMode:
855 fschmid 1701
                                        break;
1065 cbradney 1702
                                case DrawBezierLine:
1957 cbradney 1703
                                        currItem->PoLine.resize(currItem->PoLine.size()-2);
1704
                                        if (currItem->PoLine.size() < 4)
855 fschmid 1705
                                        {
1706
                                                view->Deselect(false);
1957 cbradney 1707
                                                doc->Items.remove(currItem->ItemNr);
855 fschmid 1708
                                        }
1709
                                        else
1710
                                        {
1957 cbradney 1711
                                                view->SizeItem(currItem->PoLine.WidthHeight().x(), currItem->PoLine.WidthHeight().y(), currItem->ItemNr, false, false);
1712
                                                view->SetPolyClip(currItem, qRound(QMAX(currItem->Pwidth / 2, 1)));
1713
                                                view->AdjustItemSize(currItem);
1714
                                                currItem->ContourLine = currItem->PoLine.copy();
1715
                                                currItem->ClipEdited = true;
1716
                                                currItem->FrameType = 3;
855 fschmid 1717
                                                slotDocCh();
1718
                                        }
1719
                                        view->FirstPoly = true;
1720
                                        break;
1721
                                default:
1722
                                        view->Deselect(false);
1957 cbradney 1723
                                        doc->Items.remove(currItem->ItemNr);
855 fschmid 1724
                                        break;
1725
                        }
1726
                }
1727
                view->Mpressed = false;
1728
                doc->DragP = false;
1729
                doc->leaveDrag = false;
1730
                view->Imoved = false;
1731
                view->mCG = false;
1732
                view->MidButt = false;
1733
                doc->SubMode = -1;
1827 fschmid 1734
                doc->ElemToLink = NULL;
292 Franz 1735
                NoFrameEdit();
1736
                slotSelect();
1737
                return;
1738
        }
232 Franz 1739
        ButtonState buttonState = k->state();
272 Franz 1740
        if ((HaveDoc) && (!view->LE->hasFocus()) && (!view->PGS->PageCombo->hasFocus()))
1741
        {
1065 cbradney 1742
                if ((doc->appMode != EditMode) && (view->SelItem.count() == 0))
272 Franz 1743
                {
1744
                        switch (kk)
146 Franz 1745
                        {
272 Franz 1746
                        case Key_Space:
1747
                                keyrep = false;
1065 cbradney 1748
                                if (doc->appMode == PanningMode)
1749
                                        setAppMode(NormalMode);
272 Franz 1750
                                else
1751
                                {
1065 cbradney 1752
                                        setAppMode(PanningMode);
272 Franz 1753
                                        qApp->setOverrideCursor(QCursor(loadIcon("HandC.xpm")), true);
1754
                                }
1755
                                return;
1756
                                break;
1757
                        case Key_Prior:
1758
                                view->scrollBy(0, -Prefs.Wheelval);
1759
                                keyrep = false;
1760
                                return;
1761
                                break;
1762
                        case Key_Next:
1763
                                view->scrollBy(0, Prefs.Wheelval);
1764
                                keyrep = false;
1765
                                return;
1766
                                break;
1767
                        case Key_Tab:
1768
                                keyrep = false;
1769
                                windows = wsp->windowList();
1770
                                if (windows.count() > 1)
1771
                                {
1772
                                        for (int i = 0; i < static_cast<int>(windows.count()); ++i)
250 Franz 1773
                                        {
272 Franz 1774
                                                if (wsp->activeWindow() == windows.at(i))
1775
                                                {
1776
                                                        if (i == static_cast<int>(windows.count()-1))
1777
                                                                w = windows.at(0);
1778
                                                        else
1779
                                                                w = windows.at(i+1);
1780
                                                        break;
1781
                                                }
250 Franz 1782
                                        }
1545 cbradney 1783
                                        doc->OpenNodes = outlinePalette->buildReopenVals();
1784
                                        docCheckerPalette->clearErrorList();
272 Franz 1785
                                        if ( w )
1786
                                                w->showNormal();
1787
                                        newActWin(w);
1788
                                }
1789
                                return;
1790
                                break;
1791
                        }
1792
                }
456 fschmid 1793
                if (view->SelItem.count() != 0)
272 Franz 1794
                {
1957 cbradney 1795
                        PageItem *currItem = view->SelItem.at(0);
1065 cbradney 1796
                        switch (doc->appMode)
272 Franz 1797
                        {
1065 cbradney 1798
                        case NormalMode:
272 Franz 1799
                                switch (kk)
1800
                                {
360 Franz 1801
                                case Key_Backspace:
272 Franz 1802
                                case Key_Delete:
1803
                                        if (!doc->EditClip)
2148 fschmid 1804
                                        {
997 fschmid 1805
                                                view->DeleteItem();
2148 fschmid 1806
                                                slotDocCh();
1807
                                        }
272 Franz 1808
                                        break;
360 Franz 1809
                                case Key_Prior:
1957 cbradney 1810
                                        if (!currItem->locked())
2148 fschmid 1811
                                        {
456 fschmid 1812
                                                view->RaiseItem();
2148 fschmid 1813
                                                slotDocCh();
1814
                                        }
360 Franz 1815
                                        break;
1816
                                case Key_Next:
1957 cbradney 1817
                                        if (!currItem->locked())
2148 fschmid 1818
                                        {
456 fschmid 1819
                                                view->LowerItem();
2148 fschmid 1820
                                                slotDocCh();
1821
                                        }
360 Franz 1822
                                        break;
272 Franz 1823
                                case Key_Left:
1957 cbradney 1824
                                        if (!currItem->locked())
272 Franz 1825
                                        {
1826
                                                if ( buttonState & ShiftButton )
456 fschmid 1827
                                                        view->moveGroup(-10, 0);
272 Franz 1828
                                                else if ( buttonState & ControlButton )
456 fschmid 1829
                                                        view->moveGroup(-0.1, 0);
272 Franz 1830
                                                else
456 fschmid 1831
                                                        view->moveGroup(-1, 0);
2148 fschmid 1832
                                                slotDocCh();
272 Franz 1833
                                        }
1834
                                        break;
1835
                                case Key_Right:
1957 cbradney 1836
                                        if (!currItem->locked())
272 Franz 1837
                                        {
1838
                                                if ( buttonState & ShiftButton )
456 fschmid 1839
                                                        view->moveGroup(10, 0);
272 Franz 1840
                                                else if ( buttonState & ControlButton )
456 fschmid 1841
                                                        view->moveGroup(0.1, 0);
272 Franz 1842
                                                else
456 fschmid 1843
                                                        view->moveGroup(1, 0);
2148 fschmid 1844
                                                slotDocCh();
272 Franz 1845
                                        }
1846
                                        break;
1847
                                case Key_Up:
1957 cbradney 1848
                                        if (!currItem->locked())
272 Franz 1849
                                        {
1850
                                                if ( buttonState & ShiftButton )
456 fschmid 1851
                                                        view->moveGroup(0, -10);
272 Franz 1852
                                                else if ( buttonState & ControlButton )
456 fschmid 1853
                                                        view->moveGroup(0, -0.1);
272 Franz 1854
                                                else
456 fschmid 1855
                                                        view->moveGroup(0, -1);
2148 fschmid 1856
                                                slotDocCh();
272 Franz 1857
                                        }
1858
                                        break;
1859
                                case Key_Down:
1957 cbradney 1860
                                        if (!currItem->locked())
272 Franz 1861
                                        {
1862
                                                if ( buttonState & ShiftButton )
456 fschmid 1863
                                                        view->moveGroup(0, 10);
272 Franz 1864
                                                else if ( buttonState & ControlButton )
456 fschmid 1865
                                                        view->moveGroup(0, 0.1);
272 Franz 1866
                                                else
456 fschmid 1867
                                                        view->moveGroup(0, 1);
2148 fschmid 1868
                                                slotDocCh();
272 Franz 1869
                                        }
1870
                                        break;
1871
                                default:
1872
                                        break;
1873
                                }
1874
                                break;
1065 cbradney 1875
                        case EditMode:
1957 cbradney 1876
                                int oldPos = currItem->CPos; // 15-mar-2004 jjsa for cursor movement with Shift + Arrow key
1877
                                view->oldCp = currItem->CPos;
1878
                                if (currItem->itemType() == PageItem::ImageFrame)
1298 fschmid 1879
                                {
1880
                                        switch (kk)
1881
                                        {
1882
                                                case Key_Left:
1957 cbradney 1883
                                                        if (!currItem->locked())
1298 fschmid 1884
                                                        {
1885
                                                                if ( buttonState & ShiftButton )
1957 cbradney 1886
                                                                        view->MoveItemI(-10, 0, currItem->ItemNr, true);
1298 fschmid 1887
                                                                else if ( buttonState & ControlButton )
1957 cbradney 1888
                                                                        view->MoveItemI(-0.1, 0, currItem->ItemNr, true);
1298 fschmid 1889
                                                                else
1957 cbradney 1890
                                                                        view->MoveItemI(-1, 0, currItem->ItemNr, true);
1298 fschmid 1891
                                                        }
1892
                                                        break;
1893
                                                case Key_Right:
1957 cbradney 1894
                                                        if (!currItem->locked())
1298 fschmid 1895
                                                        {
1896
                                                                if ( buttonState & ShiftButton )
1957 cbradney 1897
                                                                        view->MoveItemI(10, 0, currItem->ItemNr, true);
1298 fschmid 1898
                                                                else if ( buttonState & ControlButton )
1957 cbradney 1899
                                                                        view->MoveItemI(0.1, 0, currItem->ItemNr, true);
1298 fschmid 1900
                                                                else
1957 cbradney 1901
                                                                        view->MoveItemI(1, 0, currItem->ItemNr, true);
1298 fschmid 1902
                                                        }
1903
                                                        break;
1904
                                                case Key_Up:
1957 cbradney 1905
                                                        if (!currItem->locked())
1298 fschmid 1906
                                                        {
1907
                                                                if ( buttonState & ShiftButton )
1957 cbradney 1908
                                                                        view->MoveItemI(0, -10, currItem->ItemNr, true);
1298 fschmid 1909
                                                                else if ( buttonState & ControlButton )
1957 cbradney 1910
                                                                        view->MoveItemI(0, -0.1, currItem->ItemNr, true);
1298 fschmid 1911
                                                                else
1957 cbradney 1912
                                                                        view->MoveItemI(0, -1, currItem->ItemNr, true);
1298 fschmid 1913
                                                        }
1914
                                                        break;
1915
                                                case Key_Down:
1957 cbradney 1916
                                                        if (!currItem->locked())
1298 fschmid 1917
                                                        {
1918
                                                                if ( buttonState & ShiftButton )
1957 cbradney 1919
                                                                        view->MoveItemI(0, 10, currItem->ItemNr, true);
1298 fschmid 1920
                                                                else if ( buttonState & ControlButton )
1957 cbradney 1921
                                                                        view->MoveItemI(0, 0.1, currItem->ItemNr, true);
1298 fschmid 1922