Subversion Repositories Scribus

Rev

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