Subversion Repositories Scribus

Rev

Rev 731 | Rev 740 | 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>
30
#include <cstdio>
31
#include <cstdlib>
391 Franz 32
#include <cmath>
3 paul 33
#include <dlfcn.h>
135 Franz 34
#include <unistd.h>
3 paul 35
#include <iostream>
119 Franz 36
#include <signal.h>
80 Franz 37
#include <string>
3 paul 38
#include "scribus.h"
39
#include "scribus.moc"
40
#include "newfile.h"
41
#include "page.h"
42
#include "query.h"
43
#include "mdup.h"
44
#include "docinfo.h"
45
#include "reformdoc.h"
46
#include "serializer.h"
47
#include "align.h"
48
#include "fmitem.h"
49
#include "fontprefs.h"
50
#include "libprefs/prefs.h"
51
#include "pdfopts.h"
52
#include "inspage.h"
53
#include "delpages.h"
54
#include "movepage.h"
55
#include "helpbrowser.h"
56
#include "scribusXml.h"
57
#include "libabout/about.h"
58
#include "druck.h"
59
#include "editformats.h"
60
#include "muster.h"
61
#include "applytemplate.h"
62
#include "picstatus.h"
63
#include "customfdialog.h"
64
#include "cmsprefs.h"
65
#include "annot.h"
66
#include "annota.h"
67
#include "javadocs.h"
151 Franz 68
#include "colorm.h"
265 Franz 69
#include "mpalette.h"
284 Franz 70
#include "measurements.h"
364 Franz 71
#include "gtgettext.h"
506 fschmid 72
#include "fileloader.h"
128 Franz 73
 
617 cbradney 74
#ifdef _MSC_VER
75
 #if (_MSC_VER >= 1200)
76
  #include "win-config.h"
77
 #endif
128 Franz 78
#else
79
 #include "config.h"
80
#endif
81
 
3 paul 82
#include "fpoint.h"
83
#include "fpointarray.h"
84
#include "hysettings.h"
85
#include "guidemanager.h"
284 Franz 86
#include "keymanager.h"
3 paul 87
#include "mergedoc.h"
27 Franz 88
#include "lineformats.h"
102 Franz 89
#include "story.h"
123 Franz 90
#include "autoform.h"
140 Franz 91
#include "tabmanager.h"
164 Franz 92
#include "search.h"
169 Franz 93
#include "fontcombo.h"
415 Franz 94
#include "prefsfile.h"
731 fschmid 95
#include "polygonwidget.h"
134 Franz 96
 
3 paul 97
extern QPixmap loadIcon(QString nam);
90 Franz 98
extern bool overwrite(QWidget *parent, QString filename);
124 Franz 99
extern void CopyPageItem(struct CLBuf *Buffer, PageItem *b);
203 Franz 100
extern void ReOrderText(ScribusDoc *doc, ScribusView *view);
204 Franz 101
extern int copyFile(QString source, QString target);
102
extern int moveFile(QString source, QString target);
3 paul 103
 
104
using namespace std;
105
 
106
#ifdef HAVE_CMS
107
cmsHPROFILE CMSoutputProf;
108
cmsHPROFILE CMSprinterProf;
109
cmsHTRANSFORM stdTrans;
110
cmsHTRANSFORM stdProof;
111
cmsHTRANSFORM stdTransImg;
272 Franz 112
cmsHTRANSFORM stdProofImg;
3 paul 113
bool SoftProofing;
114
bool Gamut;
115
bool CMSuse;
116
int IntentMonitor;
117
int IntentPrinter;
118
#endif
119
bool CMSavail;
120
ProfilesL InputProfiles;
80 Franz 121
double UmReFaktor;
3 paul 122
QString DocDir;
119 Franz 123
ScribusApp* ScApp;
415 Franz 124
PrefsFile* prefsFile;
3 paul 125
 
188 Franz 126
ScribusApp::ScribusApp()
272 Franz 127
{} // ScribusApp::ScribusApp()
188 Franz 128
 
669 cbradney 129
void ScribusApp::initGui(bool showSplash)
188 Franz 130
{
669 cbradney 131
        if (showSplash)
132
        {
133
                splashScreen = new SplashScreen();
134
                splashScreen->setStatus(QObject::tr("Initializing..."));
135
        }
136
        else
137
                splashScreen = NULL;
138
 
272 Franz 139
        initScribus();
669 cbradney 140
 
141
        if (splashScreen!=NULL)
142
        {
143
                splashScreen->close();
144
                delete splashScreen;
145
                splashScreen = NULL;
146
        }
188 Franz 147
}
148
 
149
void ScribusApp::initScribus()
150
{
173 Franz 151
        ScApp = this;
355 Franz 152
        CurrStED = NULL;
272 Franz 153
        setCaption( tr("Scribus " VERSION));
118 Franz 154
        setKeyCompression(false);
272 Franz 155
        setIcon(loadIcon("AppIcon.png"));
156
        MenuItemsFile.clear();
157
        initMenuBar();
158
        initStatusBar();
490 cbradney 159
        qApp->processEvents();
272 Franz 160
        WerkTools2 = new QToolBar( tr("File"), this);
161
        DatNeu = new QToolButton(loadIcon("DateiNeu.xpm"), tr("Create a new Document"), QString::null, this, SLOT(slotFileNew()), WerkTools2);
162
        DatOpe = new QToolButton(loadIcon("DateiOpen.xpm"), tr("Open a Document"), QString::null, this, SLOT(slotDocOpen()), WerkTools2);
348 Franz 163
        DatSav = new QToolButton(loadIcon("DateiSave2.png"), tr("Save the current Document"), QString::null, this, SLOT(slotFileSave()), WerkTools2);
164
        DatClo = new QToolButton(loadIcon("DateiClose.png"), tr("Close the current Document"), QString::null, this, SLOT(slotFileClose()), WerkTools2);
272 Franz 165
        DatPri = new QToolButton(loadIcon("DateiPrint.xpm"), tr("Print the current Document"), QString::null, this, SLOT(slotFilePrint()), WerkTools2);
166
        DatPDF = new QToolButton(loadIcon("acrobat.png"), tr("Save the current Document as PDF"), QString::null, this, SLOT(SaveAsPDF()), WerkTools2);
167
        DatSav->setEnabled(false);
168
        DatClo->setEnabled(false);
169
        DatPri->setEnabled(false);
170
        DatPDF->setEnabled(false);
171
        DatOpe->setPopup(recentMenu);
172
        WerkTools = new WerkToolB(this);
173
        setDockEnabled(WerkTools, DockLeft, false);
174
        setDockEnabled(WerkTools, DockRight, false);
175
        WerkTools->Sichtbar = true;
176
        WerkTools->setEnabled(false);
177
        WerkToolsP = new WerkToolBP(this);
178
        setDockEnabled(WerkToolsP, DockLeft, false);
179
        setDockEnabled(WerkToolsP, DockRight, false);
180
        WerkToolsP->setEnabled(false);
181
        WerkToolsP->Sichtbar = true;
675 cbradney 182
 
183
        PrefsPfad = getPreferencesLocation();
415 Franz 184
        prefsFile = new PrefsFile(QDir::convertSeparators(PrefsPfad + "/prefs.xml"));
185
        dirs = prefsFile->getContext("dirs");
3 paul 186
        /** Erstelle Fontliste */
272 Franz 187
        NoFonts = false;
3 paul 188
        BuFromApp = false;
669 cbradney 189
        if (splashScreen!=NULL)
190
                splashScreen->setStatus( tr("Searching for Fonts"));
490 cbradney 191
        qApp->processEvents();
272 Franz 192
        GetAllFonts();
193
        if (NoFonts)
194
        {
669 cbradney 195
                if (splashScreen!=NULL)
196
                        splashScreen->close(); // 10/10/2004 pv fix #1200
675 cbradney 197
                QString mess = tr("There are no Postscript fonts on your system");
3 paul 198
                mess += "\n" + tr("Exiting now");
199
                QMessageBox::critical(this, tr("Fatal Error"), mess, 1, 0, 0);
272 Franz 200
        }
201
        else
202
        {
203
                HaveDoc = 0;
135 Franz 204
                singleClose = false;
173 Franz 205
                ScriptRunning = false;
253 Franz 206
                DLLReturn = "";
207
                DLLinput = "";
95 Franz 208
                view = NULL;
209
                doc = NULL;
249 Franz 210
                Buffer2 = "";
253 Franz 211
                UniCinp = false;
212
                UniCinC = 0;
213
                UniCinS = "";
272 Franz 214
                BuildFontMenu();
3 paul 215
                SCFontsIterator it(Prefs.AvailFonts);
216
                Prefs.DefFont = it.currentKey();
272 Franz 217
                Prefs.DefSize = 120;
218
                Prefs.AppFontSize = qApp->font().pointSize();
219
                /** Default Farbenliste */
220
                Prefs.DColors.clear();
221
                QString pfadC = PREL;
222
                QString pfadC2 = pfadC + "/lib/scribus/rgbscribus.txt";
223
                QFile fiC(pfadC2);
224
                if (!fiC.exists())
225
                {
226
                        Prefs.DColors.insert("White", CMYKColor(0, 0, 0, 0));
227
                        Prefs.DColors.insert("Black", CMYKColor(0, 0, 0, 255));
147 Franz 228
                        Prefs.DColors.insert("Blue", CMYKColor(255, 255, 0, 0));
229
                        Prefs.DColors.insert("Cyan", CMYKColor(255, 0, 0, 0));
230
                        Prefs.DColors.insert("Green", CMYKColor(255, 0, 255, 0));
231
                        Prefs.DColors.insert("Red", CMYKColor(0, 255, 255, 0));
232
                        Prefs.DColors.insert("Yellow", CMYKColor(0, 0, 255, 0));
233
                        Prefs.DColors.insert("Magenta", CMYKColor(0, 255, 0, 0));
238 Franz 234
                        Prefs.DColorSet = "Scribus-Small";
272 Franz 235
                }
147 Franz 236
                else
272 Franz 237
                {
238
                        if (fiC.open(IO_ReadOnly))
147 Franz 239
                        {
240
                                QString ColorEn, Cname;
241
                                int Rval, Gval, Bval;
242
                                QTextStream tsC(&fiC);
243
                                ColorEn = tsC.readLine();
244
                                while (!tsC.atEnd())
272 Franz 245
                                {
147 Franz 246
                                        ColorEn = tsC.readLine();
247
                                        QTextStream CoE(&ColorEn, IO_ReadOnly);
248
                                        CoE >> Rval;
249
                                        CoE >> Gval;
250
                                        CoE >> Bval;
251
                                        CoE >> Cname;
252
                                        CMYKColor tmp;
253
                                        tmp.setColorRGB(Rval, Gval, Bval);
254
                                        Prefs.DColors.insert(Cname, tmp);
272 Franz 255
                                }
147 Franz 256
                                fiC.close();
272 Franz 257
                        }
238 Franz 258
                        Prefs.DColorSet = "X11 RGB-Set";
272 Franz 259
                }
3 paul 260
                DispX = 10;
261
                DispY = 10;
262
                Prefs.Wheelval = 40;
263
                Prefs.GrabRad = 4;
264
                Prefs.GuideRad = 10;
265
                Prefs.DminGrid = 20;
272 Franz 266
                Prefs.DmajGrid = 100;
267
                DocNr = 1;
268
                Prefs.DminColor = QColor(green);
269
                Prefs.DmajColor = QColor(green);
270
                Prefs.DpapColor = QColor(white);
271
                Prefs.DmargColor = QColor(blue);
3 paul 272
                Prefs.guideColor = QColor(darkBlue);
338 Franz 273
                Prefs.baseColor = QColor(lightGray);
272 Franz 274
                Prefs.DVHoch = 33;
275
                Prefs.DVHochSc = 100;
276
                Prefs.DVTief = 33;
277
                Prefs.DVTiefSc = 100;
278
                Prefs.DVKapit = 75;
279
                Prefs.GUI = "Default";
280
                Prefs.Dpen = "Black";
281
                Prefs.Dbrush = "Black";
282
                Prefs.Dshade = 100;
283
                Prefs.Dshade2 = 100;
284
                Prefs.DLineArt = SolidLine;
285
                Prefs.Dwidth = 1;
286
                Prefs.DpenLine = "Black";
287
                Prefs.DpenText = "Black";
139 Franz 288
                Prefs.DCols = 1;
289
                Prefs.DGap = 0.0;
272 Franz 290
                Prefs.DshadeLine = 100;
291
                Prefs.DLstyleLine = SolidLine;
292
                Prefs.DwidthLine = 1;
293
                Prefs.MagMin = 10;
294
                Prefs.MagMax = 800;
295
                Prefs.MagStep = 25;
296
                Prefs.DbrushPict = "White";
297
                Prefs.ShadePict = 100;
298
                Prefs.ScaleX = 1;
299
                Prefs.ScaleY = 1;
300
                Prefs.Before = true;
301
                Prefs.Einheit = 0;
3 paul 302
                UmReFaktor = 1.0;
731 fschmid 303
                Prefs.PolyC = 4;
304
                Prefs.PolyF = 0.5;
305
                Prefs.PolyS = false;
306
                Prefs.PolyFd = 0;
307
                Prefs.PolyR = 0;
272 Franz 308
                Prefs.Werkv = true;
309
                Prefs.WerkvP = true;
310
                Prefs.Mpalv = false;
310 Franz 311
                Prefs.Mapalv = false;
272 Franz 312
                Prefs.Tpalv = false;
313
                Prefs.SCpalv = false;
314
                Prefs.Lpalv = false;
3 paul 315
                Prefs.Bopalv = false;
272 Franz 316
                Prefs.Mpalx = 0;
317
                Prefs.Mpaly = 0;
310 Franz 318
                Prefs.Mapalx = 0;
319
                Prefs.Mapaly = 0;
87 Franz 320
                Prefs.Tpalx = 0;
321
                Prefs.Tpaly = 0;
322
                Prefs.SCpalx = 0;
323
                Prefs.SCpaly = 0;
324
                Prefs.SCpalw = 100;
325
                Prefs.SCpalh = 200;
326
                Prefs.Sepalx = 0;
327
                Prefs.Sepaly = 0;
328
                Prefs.Bopalx = 0;
329
                Prefs.Bopaly = 0;
330
                Prefs.Lpalx = 0;
331
                Prefs.Lpaly = 0;
272 Franz 332
                Prefs.PSize = 40;
333
                Prefs.SaveAtQ = true;
334
                Prefs.FramesShown = true;
335
                Prefs.GridShown = false;
336
                Prefs.MarginsShown = true;
337
                Prefs.GuidesShown = true;
332 Franz 338
                Prefs.BaseShown = false;
705 fschmid 339
                Prefs.linkShown = false;
272 Franz 340
                Prefs.ClipMargin = true;
344 Franz 341
                Prefs.GCRMode = true;
272 Franz 342
                Prefs.PagesSbS = true;
343
                Prefs.RecentDocs.clear();
344
                Prefs.RecentDCount = 5;
345
                Prefs.RandFarbig = false;
346
                Prefs.AutoLine = 20;
3 paul 347
                Prefs.PageFormat = 4;
348
                Prefs.Ausrichtung = 0;
349
                Prefs.PageBreite = 595;
350
                Prefs.PageHoehe = 842;
351
                Prefs.RandOben = 9;
352
                Prefs.RandUnten = 40;
353
                Prefs.RandLinks = 9;
354
                Prefs.RandRechts = 9;
355
                Prefs.DoppelSeiten = false;
356
                Prefs.ErsteLinks = false;
357
                Prefs.ScaleType = true;
358
                Prefs.AspectRatio = true;
359
                Prefs.MinWordLen = 3;
249 Franz 360
                Prefs.HyCount = 2;
3 paul 361
                Prefs.Language = "";
362
                Prefs.Automatic = true;
363
                Prefs.AutoCheck = false;
364
                Prefs.PDFTransparency = false;
365
                Prefs.AutoSave = false;
366
                Prefs.AutoSaveTime = 600000;
11 Franz 367
                Prefs.DisScale = 1.0;
282 Franz 368
                Prefs.DocDir = QDir::homeDirPath();
68 Franz 369
                Prefs.ProfileDir = "";
91 Franz 370
                Prefs.ScriptDir = "";
409 Franz 371
                Prefs.TemplateDir = "";
151 Franz 372
                Prefs.CustomColorSets.clear();
213 Franz 373
                Prefs.PrPr_Mode = false;
344 Franz 374
                Prefs.Gcr_Mode = true;
213 Franz 375
                Prefs.PrPr_AlphaText = false;
376
                Prefs.PrPr_AlphaGraphics = false;
377
                Prefs.PrPr_Transparency = false;
378
                Prefs.PrPr_C = true;
379
                Prefs.PrPr_M = true;
380
                Prefs.PrPr_Y = true;
381
                Prefs.PrPr_K = true;
220 Franz 382
                Prefs.gimp_exe = "gimp";
383
                Prefs.gs_antiGraph = true;
384
                Prefs.gs_antiText = true;
385
                Prefs.gs_exe = "gs";
241 Franz 386
                Prefs.BaseGrid = 14.4;
387
                Prefs.BaseOffs = 0.0;
357 Franz 388
                Prefs.STEcolor = QColor(white);
389
                Prefs.STEfont = font().toString();
220 Franz 390
                PDef.Pname = "";
391
                PDef.Dname = "";
392
                PDef.Command = "";
272 Franz 393
                PrinterUsed = false;
3 paul 394
                resize(610, 600);
272 Franz 395
                QVBox* vb = new QVBox( this );
396
                vb->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
397
                wsp = new QWorkspace( vb );
398
                setCentralWidget( vb );
3 paul 399
                connect(wsp, SIGNAL(windowActivated(QWidget *)), this, SLOT(newActWin(QWidget *)));
77 Franz 400
                Tpal = new Tree(this, 0);
32 Franz 401
                Mpal = new Mpalette(this, &Prefs);
3 paul 402
                Mpal->Cpal->SetColors(Prefs.DColors);
403
                Npal = new NodePalette(this);
404
                Lpal = new LayerPalette(this);
30 Franz 405
                ScBook = new Biblio(this, &Prefs);
3 paul 406
                Sepal = new SeitenPal(this);
407
                BookPal = new BookPalette(this);
284 Franz 408
                MaPal = new Measurements(this);
409
                MaPal->hide();
3 paul 410
                CMSavail = false;
92 Franz 411
                keyrep = false;
3 paul 412
                Prefs.DCMSset.DefaultMonitorProfile = "";
413
                Prefs.DCMSset.DefaultPrinterProfile = "";
414
                Prefs.DCMSset.DefaultInputProfile = "";
415
                Prefs.DCMSset.DefaultInputProfile2 = "";
416
                Prefs.DCMSset.CMSinUse = false;
417
                Prefs.DCMSset.SoftProofOn = false;
418
                Prefs.DCMSset.GamutCheck = false;
117 Franz 419
                Prefs.DCMSset.BlackPoint = true;
3 paul 420
                Prefs.DCMSset.DefaultIntentMonitor = 1;
421
                Prefs.DCMSset.DefaultIntentMonitor2 = 1;
422
                Prefs.DCMSset.DefaultIntentPrinter = 0;
423
                Prefs.GFontSub.clear();
238 Franz 424
                SetKeyEntry(56, tr("Smart Hyphen"), 0, CTRL+Key_Minus);
3 paul 425
                SetKeyEntry(57, tr("Align Left"), 0, CTRL+Key_L);
426
                SetKeyEntry(58, tr("Align Right"), 0, CTRL+Key_R);
427
                SetKeyEntry(59, tr("Align Center"), 0, CTRL+Key_E);
238 Franz 428
                SetKeyEntry(60, tr("Insert Page Number"), 0, CTRL+Key_NumberSign);
3 paul 429
                SetKeyEntry(61, tr("Attach Text to Path"), PfadT, 0);
430
                SetKeyEntry(62, tr("Show Layers"), viewLpal, 0);
73 Franz 431
                SetKeyEntry(63, tr("Javascripts..."), jman, 0);
3 paul 432
                SetKeyEntry(64, tr("Undo"), edUndo, CTRL+Key_Z);
433
                SetKeyEntry(65, tr("Show Page Palette"), viewSepal, 0);
319 Franz 434
                SetKeyEntry(66, tr("Lock/Unlock"), LockOb, CTRL+Key_F);
73 Franz 435
                SetKeyEntry(67, tr("Non Breaking Space"), 0, CTRL+Key_Space);
669 cbradney 436
                if (splashScreen != NULL)
437
                        splashScreen->setStatus( tr("Reading Preferences"));
490 cbradney 438
                qApp->processEvents();
68 Franz 439
                ReadPrefs();
120 Franz 440
                if (Prefs.DefFont == "")
441
                        Prefs.DefFont = it.currentKey();
669 cbradney 442
                if (splashScreen != NULL)
443
                        splashScreen->setStatus( tr("Getting ICC Profiles"));
3 paul 444
                GetCMSProfiles();
669 cbradney 445
                if (splashScreen != NULL)
446
                        splashScreen->setStatus( tr("Init Hyphenator"));
490 cbradney 447
                qApp->processEvents();
3 paul 448
                InitHyphenator();
449
                Mpal->Cpal->UseTrans(Prefs.PDFTransparency);
494 fschmid 450
                Mpal->Fonts->RebuildList(&Prefs, 0);
3 paul 451
                DocDir = Prefs.DocDir;
669 cbradney 452
                if (splashScreen != NULL)
453
                        splashScreen->setStatus( tr("Setting up Shortcuts"));
490 cbradney 454
                qApp->processEvents();
3 paul 455
                SetShortCut();
456
                if (CMSavail)
272 Franz 457
                {
308 Franz 458
                        settingsMenu->insertItem( tr("&Color Management..."), this , SLOT(SetCMSPrefs()));
3 paul 459
                        ProfilesL::Iterator ip;
460
                        if ((Prefs.DCMSset.DefaultInputProfile == "") || (!InputProfiles.contains(Prefs.DCMSset.DefaultInputProfile)))
272 Franz 461
                        {
3 paul 462
                                ip = InputProfiles.begin();
463
                                Prefs.DCMSset.DefaultInputProfile = ip.key();
272 Franz 464
                        }
3 paul 465
                        if ((Prefs.DCMSset.DefaultInputProfile2 == "") || (!InputProfiles.contains(Prefs.DCMSset.DefaultInputProfile2)))
272 Franz 466
                        {
3 paul 467
                                ip = InputProfiles.begin();
468
                                Prefs.DCMSset.DefaultInputProfile2 = ip.key();
272 Franz 469
                        }
3 paul 470
                        if ((Prefs.DCMSset.DefaultMonitorProfile == "") || (!MonitorProfiles.contains(Prefs.DCMSset.DefaultMonitorProfile)))
272 Franz 471
                        {
3 paul 472
                                ip = MonitorProfiles.begin();
473
                                Prefs.DCMSset.DefaultMonitorProfile = ip.key();
272 Franz 474
                        }
3 paul 475
                        if ((Prefs.DCMSset.DefaultPrinterProfile == "") || (!PrinterProfiles.contains(Prefs.DCMSset.DefaultPrinterProfile)))
272 Franz 476
                        {
3 paul 477
                                ip = PrinterProfiles.begin();
478
                                Prefs.DCMSset.DefaultPrinterProfile = ip.key();
272 Franz 479
                        }
3 paul 480
#ifdef HAVE_CMS
481
                        SoftProofing = Prefs.DCMSset.SoftProofOn;
482
                        CMSuse = false;
483
                        IntentPrinter = Prefs.DCMSset.DefaultIntentPrinter;
484
                        IntentMonitor = Prefs.DCMSset.DefaultIntentMonitor;
485
#endif
272 Franz 486
 
487
                }
669 cbradney 488
                if (splashScreen != NULL)
489
                        splashScreen->setStatus( tr("Reading Scrapbook"));
3 paul 490
                QString SCf = PrefsPfad+"/scrap.scs";
491
                QFileInfo SCfi = QFileInfo(SCf);
492
                if (SCfi.exists())
493
                        ScBook->BibWin->ReadContents(SCf);
263 Franz 494
                ScBook->ScFilename = SCf;
3 paul 495
                ScBook->AdjustMenu();
220 Franz 496
                HaveGS = system(Prefs.gs_exe+" -h > /dev/null 2>&1");
497
                HavePngAlpha = system(Prefs.gs_exe+" -sDEVICE=pngalpha -c quit > /dev/null 2>&1");
669 cbradney 498
                if (splashScreen != NULL)
499
                        splashScreen->setStatus( tr("Initializing Plugins"));
490 cbradney 500
                qApp->processEvents();
669 cbradney 501
                InitPlugs();
3 paul 502
                ClipB = QApplication::clipboard();
276 Franz 503
                PalettesStat[0] = false;
504
                GuidesStat[0] = false;
3 paul 505
                connect(WerkTools, SIGNAL(NewMode(int)), this, SLOT(ModeFromTB(int)));
506
                connect(WerkTools, SIGNAL(Schliessen()), this, SLOT(ToggleTools()));
14 Franz 507
                connect(WerkToolsP, SIGNAL(NewMode(int)), this, SLOT(ModeFromTB(int)));
508
                connect(WerkToolsP, SIGNAL(Schliessen()), this, SLOT(TogglePDFTools()));
310 Franz 509
                connect(MaPal, SIGNAL(Schliessen(bool)), this, SLOT(setMapal(bool)));
3 paul 510
                connect(Mpal, SIGNAL(DocChanged()), this, SLOT(slotDocCh()));
511
                connect(Mpal, SIGNAL(NewAbStyle(int)), this, SLOT(setNewAbStyle(int)));
512
                connect(Mpal, SIGNAL(BackHome()), this, SLOT(Aktiv()));
513
                connect(Mpal, SIGNAL(Stellung(int)), this, SLOT(setItemHoch(int)));
514
                connect(Mpal, SIGNAL(Schliessen()), this, SLOT(ToggleMpal()));
515
                connect(Mpal, SIGNAL(EditCL()), this, SLOT(ToggleFrameEdit()));
32 Franz 516
                connect(Mpal, SIGNAL(NewTF(QString)), this, SLOT(SetNewFont(QString)));
162 Franz 517
                connect(Mpal, SIGNAL(UpdtGui(int)), this, SLOT(HaveNewSel(int)));
3 paul 518
                connect(Mpal->Cpal, SIGNAL(NewPen(QString)), this, SLOT(setPenFarbe(QString)));
519
                connect(Mpal->Cpal, SIGNAL(NewBrush(QString)), this, SLOT(setBrushFarbe(QString)));
520
                connect(Mpal->Cpal, SIGNAL(NewPenShade(int)), this, SLOT(setPenShade(int)));
521
                connect(Mpal->Cpal, SIGNAL(NewBrushShade(int)), this, SLOT(setBrushShade(int)));
80 Franz 522
                connect(Mpal->Cpal, SIGNAL(NewTrans(double)), this, SLOT(SetTranspar(double)));
523
                connect(Mpal->Cpal, SIGNAL(NewTransS(double)), this, SLOT(SetTransparS(double)));
295 Franz 524
                connect(Mpal->Cpal, SIGNAL(NewGradient(int)), this, SLOT(setGradFill(int)));
686 cbradney 525
                connect(Mpal->Cpal->gradEdit->Preview, SIGNAL(gradientChanged()), this, SLOT(updtGradFill()));
295 Franz 526
                connect(Mpal->Cpal, SIGNAL(gradientChanged()), this, SLOT(updtGradFill()));
3 paul 527
                connect(Mpal->Cpal, SIGNAL(QueryItem()), this, SLOT(GetBrushPen()));
528
                connect(Tpal, SIGNAL(Schliessen()), this, SLOT(ToggleTpal()));
367 Franz 529
                connect(Tpal, SIGNAL(CloseMpal()), this, SLOT(ToggleMpal()));
530
                connect(Tpal, SIGNAL(CloseSpal()), this, SLOT(ToggleBpal()));
3 paul 531
                connect(Tpal, SIGNAL(SelectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
532
                connect(Tpal, SIGNAL(SelectSeite(int)), this, SLOT(SelectFromOutlS(int)));
356 Franz 533
                connect(Tpal, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
716 cbradney 534
                connect(Mpal->Spal, SIGNAL(newStyle(int)), this, SLOT(setNewAbStyle(int)));
27 Franz 535
                connect(Mpal, SIGNAL(EditLSt()), this, SLOT(slotEditLineStyles()));
356 Franz 536
                connect(Mpal, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
367 Franz 537
                connect(Mpal, SIGNAL(CloseTpal()), this, SLOT(ToggleTpal()));
538
                connect(Mpal, SIGNAL(CloseBpal()), this, SLOT(ToggleBpal()));
3 paul 539
                connect(Npal, SIGNAL(Schliessen()), this, SLOT(NoFrameEdit()));
540
                connect(Lpal, SIGNAL(LayerActivated(int)), this, SLOT(changeLayer(int)));
216 Franz 541
                connect(Lpal, SIGNAL(LayerRemoved(int, bool)), this, SLOT(LayerRemove(int, bool)));
3 paul 542
                connect(Lpal, SIGNAL(LayerChanged()), this, SLOT(showLayer()));
543
                connect(Lpal, SIGNAL(Schliessen()), this, SLOT(ToggleLpal()));
356 Franz 544
                connect(Lpal->Table, SIGNAL(Schliessen()), this, SLOT(ToggleLpal()));
545
                connect(Lpal->Table, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
3 paul 546
                connect(Sepal, SIGNAL(Schliessen()), this, SLOT(ToggleSepal()));
547
                connect(ScBook, SIGNAL(Schliessen()), this, SLOT(ToggleBpal()));
356 Franz 548
                connect(ScBook->BibWin, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
366 Franz 549
                connect(ScBook->BibWin, SIGNAL(Schliessen()), this, SLOT(ToggleBpal()));
367 Franz 550
                connect(ScBook->BibWin, SIGNAL(CloseTpal()), this, SLOT(ToggleTpal()));
551
                connect(ScBook->BibWin, SIGNAL(CloseMpal()), this, SLOT(ToggleMpal()));
3 paul 552
                connect(Sepal, SIGNAL(EditTemp(QString)), this, SLOT(ManageTemp(QString)));
553
                connect(Sepal->PageView, SIGNAL(UseTemp(QString, int)), this, SLOT(Apply_Temp(QString, int)));
554
                connect(Sepal->PageView, SIGNAL(NewPage(int, QString)), this, SLOT(slotNewPageP(int, QString)));
555
                connect(Sepal->Trash, SIGNAL(DelPage(int)), this, SLOT(DeletePage2(int)));
556
                connect(Sepal, SIGNAL(GotoSeite(int)), this, SLOT(SelectFromOutlS(int)));
356 Franz 557
                connect(Sepal, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
3 paul 558
                connect(BookPal->BView, SIGNAL(MarkMoved()), this, SLOT(StoreBookmarks()));
559
                connect(BookPal->BView, SIGNAL(ChangeBMNr(int, int, int)), this, SLOT(ChBookmarks(int, int, int)));
366 Franz 560
                connect(BookPal->BView, SIGNAL(SelectElement(int, int)), this, SLOT(SelectFromOutl(int, int)));
3 paul 561
                connect(BookPal, SIGNAL(Schliessen()), this, SLOT(ToggleBookpal()));
356 Franz 562
                connect(BookPal, SIGNAL(ToggleAllPalettes()), this, SLOT(ToggleAllPalettes()));
3 paul 563
                connect(recentMenu, SIGNAL(activated(int)), this, SLOT(LoadRecent(int)));
148 Franz 564
                connect(ColorMenC, SIGNAL(activated(int)), this, SLOT(setItemFarbe(int)));
272 Franz 565
                connect(ShadeMenu, SIGNAL(activated(int)), this, SLOT(setItemShade(int)));
566
                connect(FontMenu, SIGNAL(activated(int)), this, SLOT(setItemFont(int)));
567
                connect(SizeTMenu, SIGNAL(activated(int)), this, SLOT(setItemFSize(int)));
568
                connect(TypeStyleMenu, SIGNAL(activated(int)), this, SLOT(setItemTypeStyle(int)));
569
                connect(AliMenu, SIGNAL(activated(int)), this, SLOT(setItemTextAli(int)));
3 paul 570
                connect(this, SIGNAL(TextIFont(QString)), this, SLOT(AdjustFontMenu(QString)));
571
                connect(this, SIGNAL(TextISize(int)), this, SLOT(setFSizeMenu(int)));
572
                connect(this, SIGNAL(TextISize(int)), Mpal, SLOT(setSize(int)));
80 Franz 573
                connect(this, SIGNAL(TextUSval(double)), Mpal, SLOT(setExtra(double)));
3 paul 574
                connect(this, SIGNAL(TextStil(int)), Mpal, SLOT(setStil(int)));
68 Franz 575
                connect(this, SIGNAL(TextScale(int)), Mpal, SLOT(setTScale(int)));
576
                connect(this, SIGNAL(TextFarben(QString, QString, int, int)), Mpal, SLOT(setActFarben(QString, QString, int, int)));
3 paul 577
                connect(ClipB, SIGNAL(dataChanged()), this, SLOT(ClipChange()));
272 Franz 578
                typedef void (*HandlerType)(int);
119 Franz 579
                HandlerType handler     = 0;
580
                handler = ScribusApp::defaultCrashHandler;
272 Franz 581
                if (!handler)
582
                        handler = SIG_DFL;
583
                sigset_t mask;
584
                sigemptyset(&mask);
119 Franz 585
#ifdef SIGSEGV
272 Franz 586
                signal (SIGSEGV, handler);
587
                sigaddset(&mask, SIGSEGV);
119 Franz 588
#endif
589
#ifdef SIGFPE
272 Franz 590
                signal (SIGFPE, handler);
591
                sigaddset(&mask, SIGFPE);
119 Franz 592
#endif
593
#ifdef SIGILL
272 Franz 594
                signal (SIGILL, handler);
595
                sigaddset(&mask, SIGILL);
119 Franz 596
#endif
597
#ifdef SIGABRT
272 Franz 598
                signal (SIGABRT, handler);
599
                sigaddset(&mask, SIGABRT);
119 Franz 600
#endif
272 Franz 601
                sigprocmask(SIG_UNBLOCK, &mask, 0);
3 paul 602
        }
603
}
604
 
675 cbradney 605
/*!
606
 \fn QString ScribusApp::getPreferencesLocation()
607
 \author Craig Bradney
608
 \date Thu 18 Nov 2004
609
 \brief Get the user's preference file location. Rename any existing old preferences files
610
 \param None
611
 \retval QString Location of the user's preferences
612
 */
613
 
614
QString ScribusApp::getPreferencesLocation()
615
{
616
        QString Pff = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus");
617
        QFileInfo Pffi = QFileInfo(Pff);
618
        QString PrefsPfad;
619
        if (Pffi.exists())
620
        {
621
                if (Pffi.isDir())
622
                        PrefsPfad = Pff;
623
                else
624
                        PrefsPfad = QDir::homeDirPath();
625
        }
626
        else
627
        {
628
                QDir di = QDir();
629
                di.mkdir(Pff);
630
                PrefsPfad = Pff;
631
                QString OldPR = QDir::convertSeparators(QDir::homeDirPath()+"/.scribus.rc");
632
                QFileInfo OldPi = QFileInfo(OldPR);
633
                if (OldPi.exists())
634
                        moveFile(OldPR, Pff+"/scribus.rc");
635
                QString OldPR2 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusfont.rc");
636
                QFileInfo OldPi2 = QFileInfo(OldPR2);
637
                if (OldPi2.exists())
638
                        moveFile(OldPR2, Pff+"/scribusfont.rc");
639
                QString OldPR3 = QDir::convertSeparators(QDir::homeDirPath()+"/.scribusscrap.scs");
640
                QFileInfo OldPi3 = QFileInfo(OldPR3);
641
                if (OldPi3.exists())
642
                        moveFile(OldPR3, Pff+"/scrap.scs");
643
        }
644
        return PrefsPfad;
645
}
646
 
3 paul 647
void ScribusApp::initMenuBar()
648
{
649
        int MenID;
650
        QFont tmp;
651
        recentMenu = new QPopupMenu();
652
        RecentDocs.clear();
653
        fileMenu=new QPopupMenu();
506 fschmid 654
        M_NewFile = fileMenu->insertItem(loadIcon("DateiNeu16.png"), tr("&New"), this, SLOT(slotFileNew()), CTRL+Key_N);
308 Franz 655
        fid13 = fileMenu->insertItem(loadIcon("DateiOpen16.png"), tr("&Open..."), this, SLOT(slotDocOpen()), CTRL+Key_O);
656
        fid14 = fileMenu->insertItem( tr("Open &Recent"), recentMenu);
506 fschmid 657
        SetKeyEntry(0, tr("New"), M_NewFile, CTRL+Key_N);
3 paul 658
        SetKeyEntry(1, tr("Open..."), fid13, CTRL+Key_O);
659
        fileMenu->insertSeparator();
308 Franz 660
        fid1 = fileMenu->insertItem(loadIcon("DateiClos16.png"), tr("&Close"), this, SLOT(slotFileClose()), CTRL+Key_W);
3 paul 661
        SetKeyEntry(2, tr("Close"), fid1, CTRL+Key_W);
662
        fileMenu->setItemEnabled(fid1, 0);
270 Franz 663
        MenuItemsFile.append(fid1);
308 Franz 664
        fid4 = fileMenu->insertItem(loadIcon("DateiSave16.png"), tr("&Save"), this, SLOT(slotFileSave()), CTRL+Key_S);
3 paul 665
        SetKeyEntry(3, tr("Save"), fid4, CTRL+Key_S);
666
        fileMenu->setItemEnabled(fid4, 0);
506 fschmid 667
        M_SaveAs = fileMenu->insertItem( loadIcon("filesaveas.png"), tr("Save &As..."), this, SLOT(slotFileSaveAs()));
668
        SetKeyEntry(4, tr("Save as..."), M_SaveAs, 0);
669
        fileMenu->setItemEnabled(M_SaveAs, 0);
348 Franz 670
        fid52 = fileMenu->insertItem(loadIcon("revert.png"), tr("Re&vert to Saved"), this, SLOT(slotFileRevert()));
112 Franz 671
        fileMenu->setItemEnabled(fid52, 0);
308 Franz 672
        fid51 = fileMenu->insertItem( tr("Collect for O&utput..."), this, SLOT(Collect()));
3 paul 673
        fileMenu->setItemEnabled(fid51, 0);
270 Franz 674
        MenuItemsFile.append(fid51);
3 paul 675
        fileMenu->insertSeparator();
676
        importMenu = new QPopupMenu();
308 Franz 677
        fid2 = importMenu->insertItem( tr("&Get Text/Picture..."), this, SLOT(slotFileOpen()));
3 paul 678
        importMenu->setItemEnabled(fid2, 0);
308 Franz 679
        fid2aa = importMenu->insertItem( tr("Append &Text..."), this, SLOT(slotFileAppend()));
218 Franz 680
        importMenu->setItemEnabled(fid2aa, 0);
326 Franz 681
        fid2a = importMenu->insertItem( tr("Import &Page(s)..."), this, SLOT(slotDocMerge()));
3 paul 682
        importMenu->setItemEnabled(fid2a, 0);
308 Franz 683
        fileMenu->insertItem( tr("&Import"), importMenu);
3 paul 684
        exportMenu = new QPopupMenu();
308 Franz 685
        fid3 = exportMenu->insertItem( tr("Save &Text..."), this, SLOT(SaveText()));
3 paul 686
        exportMenu->setItemEnabled(fid3, 0);
308 Franz 687
        fid8 = exportMenu->insertItem( tr("Save Page as &EPS..."), this, SLOT(SaveAsEps()));
3 paul 688
        exportMenu->setItemEnabled(fid8, 0);
308 Franz 689
        fid10 = exportMenu->insertItem( tr("Save as P&DF..."), this, SLOT(SaveAsPDF()));
3 paul 690
        exportMenu->setItemEnabled(fid10, 0);
308 Franz 691
        fid11 = fileMenu->insertItem( tr("&Export"), exportMenu);
3 paul 692
        fileMenu->setItemEnabled(fid11, 0);
693
        fileMenu->insertSeparator();
361 Franz 694
        fid6 = fileMenu->insertItem(loadIcon("documentinfo.png"), tr("Document &Information..."), this, SLOT(InfoDoc()), CTRL+Key_I);
3 paul 695
        fileMenu->setItemEnabled(fid6, 0);
270 Franz 696
        MenuItemsFile.append(fid6);
3 paul 697
        SetKeyEntry(5, tr("Document Info..."), fid6, CTRL+Key_I);
308 Franz 698
        fid7 = fileMenu->insertItem( tr("Document &Setup..."), this, SLOT(SetupDoc()));
3 paul 699
        fileMenu->setItemEnabled(fid7, 0);
270 Franz 700
        MenuItemsFile.append(fid7);
3 paul 701
        SetKeyEntry(6, tr("Document Setup..."), fid7, 0);
506 fschmid 702
        M_Print = fileMenu->insertItem(loadIcon("DateiPrint16.png"), tr("&Print..."), this, SLOT(slotFilePrint()), CTRL+Key_P);
703
        fileMenu->setItemEnabled(M_Print, 0);
704
        MenuItemsFile.append(M_Print);
705
        SetKeyEntry(7, tr("Print..."), M_Print, CTRL+Key_P);
3 paul 706
        fileMenu->insertSeparator();
308 Franz 707
        MenID = fileMenu->insertItem(loadIcon("exit.png"), tr("&Quit"), this, SLOT(slotFileQuit()), CTRL+Key_Q);
3 paul 708
        SetKeyEntry(8, tr("Quit"), MenID, CTRL+Key_Q);
709
        editMenu = new QPopupMenu();
308 Franz 710
        edUndo = editMenu->insertItem( tr("&Undo"), this, SLOT(UnDoAction()), CTRL+Key_Z);
3 paul 711
        editMenu->insertSeparator();
308 Franz 712
        edid1 = editMenu->insertItem(loadIcon("editcut.png"), tr("Cu&t"), this , SLOT(slotEditCut()), CTRL+Key_X);
713
        edid2 = editMenu->insertItem(loadIcon("editcopy.png"), tr("&Copy"), this , SLOT(slotEditCopy()), CTRL+Key_C);
714
        edid3 = editMenu->insertItem(loadIcon("editpaste.png"), tr("&Paste"), this , SLOT(slotEditPaste()), CTRL+Key_V);
715
        edid4 = editMenu->insertItem(loadIcon("editdelete.png"), tr("C&lear"), this, SLOT(DeleteText()));
716
        edid5 = editMenu->insertItem( tr("Select &All"), this, SLOT(SelectAll()), CTRL+Key_A);
3 paul 717
        SetKeyEntry(9, tr("Cut"), edid1, CTRL+Key_X);
718
        SetKeyEntry(10, tr("Copy"), edid2, CTRL+Key_C);
719
        SetKeyEntry(11, tr("Paste"), edid3, CTRL+Key_V);
720
        SetKeyEntry(12, tr("Clear"), edid4, 0);
721
        SetKeyEntry(13, tr("Select all"), edid5, CTRL+Key_A);
722
        editMenu->insertSeparator();
357 Franz 723
        Sear = editMenu->insertItem(loadIcon("find16.png"),  tr("&Search/Replace..."), this, SLOT(SearchText()));
164 Franz 724
        editMenu->insertSeparator();
308 Franz 725
        MenID = editMenu->insertItem( tr("C&olors..."), this , SLOT(slotEditColors()));
3 paul 726
        SetKeyEntry(14, tr("Colors..."), MenID, 0);
308 Franz 727
        edid6 = editMenu->insertItem( tr("&Paragraph Styles..."), this , SLOT(slotEditStyles()));
728
        edid6a = editMenu->insertItem( tr("&Line Styles..."), this , SLOT(slotEditLineStyles()));
3 paul 729
        SetKeyEntry(15, tr("Styles..."), edid6, 0);
308 Franz 730
        tman = editMenu->insertItem( tr("&Templates..."), this, SLOT(ManageTemp()));
3 paul 731
        SetKeyEntry(16, tr("Templates..."), tman, 0);
308 Franz 732
        jman = editMenu->insertItem( tr("&Javascripts..."), this, SLOT(ManageJava()));
3 paul 733
        editMenu->setItemEnabled(edUndo, 0);
734
        editMenu->setItemEnabled(edid1, 0);
735
        editMenu->setItemEnabled(edid2, 0);
736
        editMenu->setItemEnabled(edid3, 0);
737
        editMenu->setItemEnabled(edid4, 0);
738
        editMenu->setItemEnabled(edid5, 0);
739
        editMenu->setItemEnabled(edid6, 0);
27 Franz 740
        editMenu->setItemEnabled(edid6a, 0);
164 Franz 741
        editMenu->setItemEnabled(Sear, 0);
3 paul 742
        editMenu->setItemEnabled(tman, 0);
743
        editMenu->setItemEnabled(jman, 0);
744
        StilMenu = new QPopupMenu();
745
        ObjMenu = new QPopupMenu();
68 Franz 746
        SetKeyEntry(19, tr("Select New Font"), 0, 0);
308 Franz 747
        ODup = ObjMenu->insertItem( tr("D&uplicate"), this, SLOT(ObjektDup()), CTRL+Key_D);
232 Franz 748
        SetKeyEntry(20, tr("Duplicate"), ODup, CTRL+Key_D);
308 Franz 749
        OMDup = ObjMenu->insertItem( tr("&Multiple Duplicate"), this, SLOT(ObjektDupM()));
232 Franz 750
        SetKeyEntry(21, tr("Multiple Duplicate"), OMDup, 0);
308 Franz 751
        Loesch = ObjMenu->insertItem( tr("&Delete"), this, SLOT(DeleteObjekt()), CTRL+Key_K);
3 paul 752
        SetKeyEntry(22, tr("Delete"), Loesch, CTRL+Key_K);
753
        ObjMenu->insertSeparator();
308 Franz 754
        Gr = ObjMenu->insertItem( tr("&Group"), this, SLOT(GroupObj()), CTRL+Key_G);
3 paul 755
        SetKeyEntry(23, tr("Group"), Gr, CTRL+Key_G);
308 Franz 756
        UnGr = ObjMenu->insertItem( tr("&Ungroup"), this, SLOT(UnGroupObj()),CTRL+Key_U);
74 Franz 757
        SetKeyEntry(24, tr("Un-group"), UnGr, CTRL+Key_U);
319 Franz 758
        LockOb = ObjMenu->insertItem( tr("&Lock"), this, SLOT(ToggleObjLock()), CTRL+Key_F);
3 paul 759
        ObjMenu->insertSeparator();
308 Franz 760
        OBack = ObjMenu->insertItem( tr("Send to &Back"), this, SLOT(Objekt2Back()));
3 paul 761
        SetKeyEntry(25, tr("Send to Back"), OBack, 0);
308 Franz 762
        OFront = ObjMenu->insertItem( tr("Bring to &Front"), this, SLOT(Objekt2Front()));
3 paul 763
        SetKeyEntry(26, tr("Bring to Front"), OFront, 0);
308 Franz 764
        OLower = ObjMenu->insertItem( tr("&Lower"), this, SLOT(ObjektLower()));
3 paul 765
        SetKeyEntry(27, tr("Lower"), OLower, 0);
308 Franz 766
        ORaise = ObjMenu->insertItem( tr("&Raise"), this, SLOT(ObjektRaise()));
3 paul 767
        SetKeyEntry(28, tr("Raise"), ORaise, 0);
308 Franz 768
        DistM = ObjMenu->insertItem( tr("Distribute/&Align..."), this, SLOT(ObjektAlign()));
3 paul 769
        SetKeyEntry(29, tr("Distribute/Align..."), DistM, 0);
770
        ObjMenu->insertSeparator();
771
        ShapeMenu = new QPopupMenu();
169 Franz 772
        SCustom = new Autoforms(0);
773
        ShapeMenu->insertItem(SCustom);
272 Franz 774
        connect(SCustom, SIGNAL(FormSel(int, int, double *)), this, SLOT(MakeFrame(int, int, double *)));
377 Franz 775
        ShapeEdit = ShapeMenu->insertItem( tr("&Edit Shape"), this, SLOT(ToggleFrameEdit()));
308 Franz 776
        ShapeM = ObjMenu->insertItem( tr("&Shape"), ShapeMenu);
777
        PfadT = ObjMenu->insertItem( tr("&Attach Text to Path"), this, SLOT(Pfadtext()));
778
        PfadDT = ObjMenu->insertItem( tr("&Detach Text from Path"), this, SLOT(noPfadtext()));
779
        PfadV = ObjMenu->insertItem( tr("&Combine Polygons"), this, SLOT(UniteOb()));
780
        PfadS = ObjMenu->insertItem( tr("Split &Polygons"), this, SLOT(SplitUniteOb()));
781
        PfadTP = ObjMenu->insertItem( tr("C&onvert to Outlines"), this, SLOT(TraceText()));
3 paul 782
        ObjMenu->setItemEnabled(ShapeM, 0);
783
        ObjMenu->setItemEnabled(DistM, 0);
784
        ObjMenu->setItemEnabled(Gr, 0);
785
        ObjMenu->setItemEnabled(UnGr, 0);
786
        ObjMenu->setItemEnabled(PfadT, 0);
162 Franz 787
        ObjMenu->setItemEnabled(PfadDT, 0);
3 paul 788
        ObjMenu->setItemEnabled(PfadV, 0);
789
        ObjMenu->setItemEnabled(PfadS, 0);
790
        ObjMenu->setItemEnabled(LockOb, 0);
791
        ObjMenu->setItemEnabled(PfadTP, 0);
792
        pageMenu = new QPopupMenu();
308 Franz 793
        MenID = pageMenu->insertItem( tr("&Insert..."), this, SLOT(slotNewPageM()));
3 paul 794
        SetKeyEntry(30, tr("Insert..."), MenID, 0);
308 Franz 795
        pgmd = pageMenu->insertItem( tr("&Delete..."), this, SLOT(DeletePage()));
3 paul 796
        SetKeyEntry(31, tr("Delete..."), pgmd, 0);
308 Franz 797
        MenID = pageMenu->insertItem( tr("&Copy")+"...", this, SLOT(CopyPage()));
3 paul 798
        SetKeyEntry(61, tr("Copy")+"...", MenID, 0);
308 Franz 799
        pgmv = pageMenu->insertItem( tr("&Move..."), this, SLOT(MovePage()));
3 paul 800
        SetKeyEntry(32, tr("Move..."), pgmv, 0);
308 Franz 801
        MenID = pageMenu->insertItem( tr("&Apply Template..."), this, SLOT(ApplyTemp()));
3 paul 802
        SetKeyEntry(33, tr("Apply Template..."), MenID, 0);
348 Franz 803
        MenID = pageMenu->insertItem( tr("Manage &Guides..."), this, SLOT(ManageGuides()));
3 paul 804
        SetKeyEntry(49, tr("Manage Guides..."), MenID, 0);
805
        pageMenu->setItemEnabled(pgmd, 0);
806
        pageMenu->setItemEnabled(pgmv, 0);
807
        viewMenu=new QPopupMenu();
308 Franz 808
        MenID = viewMenu->insertItem( tr("&Fit in Window"), this, SLOT(slotZoomFit()), CTRL+Key_0);
3 paul 809
        SetKeyEntry(34, tr("Fit in Window"), MenID, CTRL+Key_0);
308 Franz 810
        MenID = viewMenu->insertItem("&50%", this, SLOT(slotZoom50()));
3 paul 811
        SetKeyEntry(35, tr("50%"), MenID, 0);
308 Franz 812
        MenID = viewMenu->insertItem("&75%", this, SLOT(slotZoom75()));
3 paul 813
        SetKeyEntry(36, tr("75%"), MenID, 0);
308 Franz 814
        MenID = viewMenu->insertItem( tr("&100%"), this, SLOT(slotZoom100()), CTRL+Key_1);
340 Franz 815
        SetKeyEntry(37, tr("100%"), MenID, CTRL+Key_1);
308 Franz 816
        MenID = viewMenu->insertItem("&200%", this, SLOT(slotZoom200()));
3 paul 817
        SetKeyEntry(38, tr("200%"), MenID, 0);
308 Franz 818
        MenID = viewMenu->insertItem( tr("&Thumbnails"), this, SLOT(slotZoom20()));
3 paul 819
        SetKeyEntry(39, tr("Thumbnails"), MenID, 0);
820
        viewMenu->insertSeparator();
327 Franz 821
        Markers = viewMenu->insertItem( tr("Show &Margins"), this, SLOT(ToggleMarks()));
3 paul 822
        SetKeyEntry(40, tr("Hide Margins"), Markers, 0);
327 Franz 823
        viewMenu->setItemChecked(Markers, true);
824
        FrameDr = viewMenu->insertItem( tr("Show &Frames"), this, SLOT(ToggleFrames()));
3 paul 825
        SetKeyEntry(41, tr("Hide Frames"), FrameDr, 0);
327 Franz 826
        viewMenu->setItemChecked(FrameDr, true);
827
        Bilder = viewMenu->insertItem( tr("Show &Images"), this, SLOT(TogglePics()));
828
        viewMenu->setItemChecked(Bilder, true);
3 paul 829
        SetKeyEntry(42, tr("Hide Images"), Bilder, 0);
308 Franz 830
        Ras = viewMenu->insertItem( tr("Show &Grid"), this, SLOT(ToggleRaster()));
3 paul 831
        SetKeyEntry(43, tr("Show Grid"), Ras, 0);
327 Franz 832
        viewMenu->setItemChecked(Ras, false);
833
        Guide = viewMenu->insertItem( tr("Show G&uides"), this, SLOT(ToggleGuides()));
834
        viewMenu->setItemChecked(Guide, true);
340 Franz 835
        Base = viewMenu->insertItem( tr("Show &Baseline Grid"), this, SLOT(ToggleBase()));
705 fschmid 836
        viewMenu->setItemChecked(Base, false);
837
        textLinks = viewMenu->insertItem( tr("Show &Text Chain"), this, SLOT(ToggleTextLinks()));
838
        viewMenu->setItemChecked(textLinks, false);
340 Franz 839
        viewMenu->insertSeparator();
840
        uRas = viewMenu->insertItem( tr("Sn&ap to Grid"), this, SLOT(ToggleURaster()));
841
        SetKeyEntry(44, tr("Snap to Grid"), uRas, 0);
308 Franz 842
        uGuide = viewMenu->insertItem( tr("Sna&p to Guides"), this, SLOT(ToggleUGuides()));
3 paul 843
        toolMenu=new QPopupMenu();
308 Franz 844
        viewMpal = toolMenu->insertItem( tr("&Properties"), this, SLOT(ToggleMpal()));
119 Franz 845
        SetKeyEntry(46, tr("Properties"), viewMpal, 0);
308 Franz 846
        viewTpal = toolMenu->insertItem( tr("&Outline"), this, SLOT(ToggleTpal()));
119 Franz 847
        SetKeyEntry(47, tr("Outline"), viewTpal, 0);
308 Franz 848
        viewBpal = toolMenu->insertItem( tr("&Scrapbook"), this, SLOT(ToggleBpal()));
119 Franz 849
        SetKeyEntry(48, tr("Scrapbook"), viewBpal, 0);
308 Franz 850
        viewLpal = toolMenu->insertItem( tr("&Layers"), this, SLOT(ToggleLpal()));
851
        viewSepal = toolMenu->insertItem( tr("P&age Palette"), this, SLOT(ToggleSepal()));
852
        viewBopal = toolMenu->insertItem( tr("&Bookmarks"), this, SLOT(ToggleBookpal()));
3 paul 853
        extraMenu=new QPopupMenu();
308 Franz 854
        MenID = extraMenu->insertItem( tr("&Manage Pictures"), this, SLOT(StatusPic()));
3 paul 855
        SetKeyEntry(51, tr("Manage Pictures"), MenID, 0);
308 Franz 856
        hyph = extraMenu->insertItem( tr("&Hyphenate Text"), this, SLOT(doHyphenate()));
3 paul 857
        extraMenu->setItemEnabled(hyph, 0);
858
        SetKeyEntry(50, tr("Hyphenate Text"), hyph, 0);
284 Franz 859
 
860
        settingsMenu = new QPopupMenu();
308 Franz 861
        tip = settingsMenu->insertItem( tr("Toolti&ps"), this, SLOT(ToggleTips()));
862
        toolbarMenuTools = settingsMenu->insertItem( tr("&Tools"), this, SLOT(ToggleTools()));
863
        toolbarMenuPDFTools = settingsMenu->insertItem( tr("P&DF Tools"), this, SLOT(TogglePDFTools()));
284 Franz 864
        SetKeyEntry(45, tr("Tools"), toolbarMenuTools, 0);
308 Franz 865
        SetKeyEntry(55, tr("Tooltips"), tip, 0);
284 Franz 866
        tipsOn = true;
867
        settingsMenu->setItemChecked(tip, tipsOn);
868
        settingsMenu->insertSeparator();
341 Franz 869
        MenID = settingsMenu->insertItem( tr("P&references..."), this , SLOT(slotPrefsOrg()));
308 Franz 870
        MenID = settingsMenu->insertItem( tr("&Fonts..."), this , SLOT(slotFontOrg()));
284 Franz 871
        SetKeyEntry(17, tr("Fonts..."), MenID, 0);
308 Franz 872
        settingsMenu->insertItem( tr("&Hyphenator..."), this, SLOT(configHyphenator()));
873
        settingsMenu->insertItem( tr("&Keyboard Shortcuts..."), this, SLOT(DefKB()));
284 Franz 874
 
3 paul 875
        windowsMenu = new QPopupMenu();
876
        windowsMenu->setCheckable( true );
877
        connect(windowsMenu, SIGNAL(aboutToShow()), this, SLOT(windowsMenuAboutToShow()));
878
        helpMenu=new QPopupMenu();
308 Franz 879
        MenID = helpMenu->insertItem( tr("&About Scribus"), this, SLOT(slotHelpAbout()));
3 paul 880
        SetKeyEntry(52, tr("About Scribus"), MenID, 0);
308 Franz 881
        MenID = helpMenu->insertItem( tr("About &Qt"), this, SLOT(slotHelpAboutQt()));
3 paul 882
        SetKeyEntry(53, tr("About Qt"), MenID, 0);
883
        helpMenu->insertSeparator();
308 Franz 884
        MenID = helpMenu->insertItem( tr("Scribus &Manual..."), this, SLOT(slotOnlineHelp()));
3 paul 885
        SetKeyEntry(54, tr("Online-Help..."), MenID, 0);
456 fschmid 886
 
887
/*      editMenu->insertItem( tr("Test"), this, SLOT(slotTest()));
888
        editMenu->insertItem( tr("Test2"), this, SLOT(slotTest2()));
889
*/
237 Franz 890
        menuBar()->insertItem( tr("&File"), fileMenu);
891
        menuBar()->insertItem( tr("&Edit"), editMenu);
308 Franz 892
        Stm = menuBar()->insertItem( tr("St&yle"), StilMenu);
238 Franz 893
        Obm = menuBar()->insertItem( tr("&Item"), ObjMenu);
894
        pgmm = menuBar()->insertItem( tr("&Page"), pageMenu);
175 Franz 895
        menuBar()->setItemEnabled(Stm, 0);
3 paul 896
        menuBar()->setItemEnabled(Obm, 0);
897
        menuBar()->setItemEnabled(pgmm, 0);
272 Franz 898
        ViMen = menuBar()->insertItem( tr("&View"), viewMenu);
899
        menuBar()->setItemEnabled(ViMen, 0);
237 Franz 900
        menuBar()->insertItem( tr("&Tools"), toolMenu);
238 Franz 901
        exmn = menuBar()->insertItem( tr("E&xtras"), extraMenu);
3 paul 902
        menuBar()->setItemEnabled(exmn, 0);
284 Franz 903
        SetMen = menuBar()->insertItem( tr("&Settings"), settingsMenu );
272 Franz 904
        WinMen = menuBar()->insertItem( tr("&Windows"), windowsMenu );
905
        menuBar()->setItemEnabled(WinMen, 0);
3 paul 906
        menuBar()->insertSeparator();
237 Franz 907
        menuBar()->insertItem( tr("&Help"), helpMenu);
3 paul 908
        AliMenu = new QPopupMenu();
308 Franz 909
        AliMenu->insertItem( tr("&Left"));
910
        AliMenu->insertItem( tr("&Center"));
911
        AliMenu->insertItem( tr("&Right"));
912
        AliMenu->insertItem( tr("&Block"));
913
        AliMenu->insertItem( tr("&Forced"));
3 paul 914
        ColorMenu = new QPopupMenu();
148 Franz 915
        ColorMenC = new QComboBox(false);
916
        ColorMenC->setEditable(false);
917
        ColorMenu->insertItem(ColorMenC);
3 paul 918
        SizeTMenu = new QPopupMenu();
308 Franz 919
        SizeTMenu->insertItem( tr("&Other..."));
617 cbradney 920
        QString ar_sizes[] = {" 7", " 9", "10", "11", "12", "14", "18", "24", "36", "48", "60", "72"};
274 Franz 921
        size_t f_size = sizeof(ar_sizes) / sizeof(*ar_sizes);
922
        for (uint s = 0; s < f_size; ++s)
923
                SizeTMenu->insertItem(ar_sizes[s] + tr(" pt"));
3 paul 924
        ShadeMenu = new QPopupMenu();
308 Franz 925
        ShadeMenu->insertItem( tr("&Other..."));
3 paul 926
        ShadeMenu->insertItem("0 %");
927
        ShadeMenu->insertItem("10 %");
928
        ShadeMenu->insertItem("20 %");
929
        ShadeMenu->insertItem("30 %");
930
        ShadeMenu->insertItem("40 %");
931
        ShadeMenu->insertItem("50 %");
932
        ShadeMenu->insertItem("60 %");
933
        ShadeMenu->insertItem("70 %");
934
        ShadeMenu->insertItem("80 %");
935
        ShadeMenu->insertItem("90 %");
936
        ShadeMenu->insertItem("100 %");
937
        FontMenu = new QPopupMenu();
938
        TypeStyleMenu = new QPopupMenu();
112 Franz 939
        TypeStyleMenu->insertItem( tr("Normal"));
3 paul 940
        tmp = qApp->font();
941
        tmp = qApp->font();
942
        tmp.setUnderline(true);
112 Franz 943
        TypeStyleMenu->insertItem(new FmItem( tr("Underline"), tmp));
3 paul 944
        tmp = qApp->font();
945
        tmp.setStrikeOut(true);
112 Franz 946
        TypeStyleMenu->insertItem(new FmItem( tr("Strikethru"), tmp));
947
        TypeStyleMenu->insertItem( tr("Small Caps"));
948
        TypeStyleMenu->insertItem( tr("Superscript"));
949
        TypeStyleMenu->insertItem( tr("Subscript"));
950
        TypeStyleMenu->insertItem( tr("Outlined"));
3 paul 951
}
952
 
953
void ScribusApp::initStatusBar()
954
{
955
        FMess = new QLabel(statusBar(), "ft");
956
        FMess->setText("           ");
957
        statusBar()->addWidget(FMess, 3, true);
958
        FProg = new QProgressBar(statusBar(), "p");
272 Franz 959
        FProg->setCenterIndicator(true);
3 paul 960
        FProg->setFixedWidth( 100 );
961
        statusBar()->addWidget(FProg, 0, true);
962
        FProg->reset();
963
        XMess = new QLabel(statusBar(), "xt");
112 Franz 964
        XMess->setText( tr("X-Pos:"));
3 paul 965
        statusBar()->addWidget(XMess, 0, true);
966
        XDat = new QLabel(statusBar(), "dt");
967
        statusBar()->addWidget(XDat, 1, true);
968
        XDat->setText("         ");
969
        YMess = new QLabel(statusBar(), "yt");
112 Franz 970
        YMess->setText( tr("Y-Pos:"));
3 paul 971
        statusBar()->addWidget(YMess, 0, true);
972
        YDat = new QLabel(statusBar(), "ydt");
973
        statusBar()->addWidget(YDat, 1, true);
80 Franz 974
        YDat->setText("         ");
3 paul 975
}
976
 
80 Franz 977
void ScribusApp::ReportMP(double xp, double yp)
3 paul 978
{
979
        QString tmp, tmp2;
173 Franz 980
        int multiplier, precision;
981
        double divisor;
3 paul 982
        switch (doc->Einheit)
272 Franz 983
        {
984
        case 0:
274 Franz 985
                tmp2 = tr(" pt");
272 Franz 986
                multiplier = 100;
987
                divisor = 100.0;
988
                precision = 2;
989
                break;
990
        case 1:
274 Franz 991
                tmp2 = tr(" mm");
272 Franz 992
                multiplier = 1000;
993
                divisor = 1000.0;
994
                precision = 3;
995
                break;
996
        case 2:
274 Franz 997
                tmp2 = tr(" in");
272 Franz 998
                multiplier = 10000;
999
                divisor = 10000.0;
1000
                precision = 4;
1001
                break;
1002
        case 3:
274 Franz 1003
                tmp2 = tr(" p");
272 Franz 1004
                multiplier = 100;
1005
                divisor = 100.0;
1006
                precision = 2;
1007
                break;
1008
        default:  // jjsa 21-03-2004 added default (complains for lint)
274 Franz 1009
                tmp2 = tr(" pt");
272 Franz 1010
                multiplier = 100;
1011
                divisor = 100.0;
1012
                precision = 2;
1013
                break;
1014
        }
173 Franz 1015
        XDat->setText(tmp.setNum(qRound(xp*UmReFaktor * multiplier) / divisor, 'f', precision)+tmp2);
1016
        YDat->setText(tmp.setNum(qRound(yp*UmReFaktor * multiplier) / divisor, 'f', precision)+tmp2);
3 paul 1017
}
1018
 
1019
void ScribusApp::SetKeyEntry(int Nr, QString text, int Men, int KeyC)
1020
{
1021
        Keys ke;
1022
        ke.Name = text;
1023
        ke.MenuID = Men;
1024
        ke.KeyID = KeyC;
1025
        Prefs.KeyActions.insert(Nr, ke);
1026
}
1027
 
1028
void ScribusApp::DeleteSel(PageItem *b)
1029
{
1030
        Pti *it;
238 Franz 1031
        int FirstSel = 0;
1032
        bool first = false;
272 Franz 1033
        for (it = b->Ptext.first(); it != 0; it = b->Ptext.next())
1034
        {
1035
                if (it->cselect)
1036
                {
238 Franz 1037
                        first = true;
272 Franz 1038
                        b->Ptext.remove();
1039
                        it = b->Ptext.prev();
1040
                        if (it == 0)
1041
                                it = b->Ptext.first();
1042
                }
238 Franz 1043
                if (!first)
1044
                        FirstSel++;
272 Franz 1045
        }
3 paul 1046
        if (b->Ptext.count() != 0)
238 Franz 1047
        {
272 Franz 1048
                if (b->Ptext.first()->cselect)
3 paul 1049
                {
272 Franz 1050
                        b->Ptext.remove();
3 paul 1051
                        b->CPos = 0;
238 Franz 1052
                }
3 paul 1053
                else
238 Franz 1054
                        b->CPos = FirstSel;
1055
        }
3 paul 1056
        else
1057
                b->CPos = 0;
272 Franz 1058
        b->HasSel = false;
1059
        DisableTxEdit();
3 paul 1060
}
1061
 
1062
void ScribusApp::setTBvals(PageItem *b)
1063
{
1064
        if (b->Ptext.count() != 0)
272 Franz 1065
        {
1066
                int ChPos = QMIN(b->CPos, static_cast<int>(b->Ptext.count()-1));
1067
                doc->CurrentStyle = b->Ptext.at(ChPos)->cstyle & 127;
1068
                doc->CurrentABStil = b->Ptext.at(ChPos)->cab;
1069
                setAbsValue(doc->CurrentABStil);
1070
                Mpal->setAli(doc->CurrentABStil);
1071
                doc->CurrFont = b->Ptext.at(ChPos)->cfont;
1072
                doc->CurrFontSize = b->Ptext.at(ChPos)->csize;
1073
                doc->CurrTextFill = b->Ptext.at(ChPos)->ccolor;
1074
                doc->CurrTextFillSh = b->Ptext.at(ChPos)->cshade;
1075
                doc->CurrTextStroke = b->Ptext.at(ChPos)->cstroke;
1076
                doc->CurrTextStrokeSh = b->Ptext.at(ChPos)->cshade2;
1077
                doc->CurrTextScale = b->Ptext.at(ChPos)->cscale;
68 Franz 1078
                emit TextFarben(doc->CurrTextStroke, doc->CurrTextFill, doc->CurrTextStrokeSh, doc->CurrTextFillSh);
1079
                emit TextIFont(doc->CurrFont);
272 Franz 1080
                emit TextISize(doc->CurrFontSize);
1081
                emit TextUSval(b->Ptext.at(ChPos)->cextra);
1082
                emit TextStil(doc->CurrentStyle);
68 Franz 1083
                emit TextScale(doc->CurrTextScale);
272 Franz 1084
        }
3 paul 1085
}
1086
 
1087
void ScribusApp::wheelEvent(QWheelEvent *w)
1088
{
1089
        if (HaveDoc)
239 Franz 1090
        {
276 Franz 1091
                if ((w->orientation() != Qt::Vertical) || ( w->state() & ShiftButton ))
3 paul 1092
                {
239 Franz 1093
                        if (w->delta() < 0)
240 Franz 1094
                                view->scrollBy(Prefs.Wheelval, 0);
239 Franz 1095
                        else
240 Franz 1096
                                view->scrollBy(-Prefs.Wheelval, 0);
239 Franz 1097
                }
3 paul 1098
                else
239 Franz 1099
                {
1100
                        if (w->delta() < 0)
240 Franz 1101
                                view->scrollBy(0, Prefs.Wheelval);
239 Franz 1102
                        else
240 Franz 1103
                                view->scrollBy(0, -Prefs.Wheelval);
239 Franz 1104
                }
3 paul 1105
                w->accept();
239 Franz 1106
        }
3 paul 1107
}
1108
 
1109
void ScribusApp::keyPressEvent(QKeyEvent *k)
1110
{
146 Franz 1111
        QWidgetList windows;
237 Franz 1112
        QWidget* w = NULL;
3 paul 1113
        struct Pti *hg;
1114
        int kk = k->key();
1115
        int as = k->ascii();
80 Franz 1116
        double altx, alty;
3 paul 1117
        QString uc = k->text();
1118
        QString cr, Tcha, Twort;
1119
        uint Tcoun;
237 Franz 1120
        int len, pos, c;
92 Franz 1121
        if (keyrep)
1122
                return;
1123
        keyrep = true;
3 paul 1124
        switch (k->state())
272 Franz 1125
        {
1126
        case ShiftButton:
1127
                KeyMod = 0x00200000;
1128
                break;
1129
        case AltButton:
1130
                KeyMod = 0x00800000;
1131
                break;
1132
        case ControlButton:
1133
                KeyMod = 0x00400000;
1134
                break;
1135
        default:
1136
                KeyMod = 0;
1137
                break;
1138
        }
276 Franz 1139
        if (kk == Key_F10)
1140
        {
1141
                keyrep = false;
1142
                ToggleAllPalettes();
1143
                return;
1144
        }
1145
        if ((kk == Key_F11) && (HaveDoc))
1146
        {
1147
                keyrep = false;
1148
                ToggleAllGuides();
1149
                return;
1150
        }
292 Franz 1151
        if ((kk == Key_Escape) && (HaveDoc))
1152
        {
1153
                keyrep = false;
1154
                NoFrameEdit();
1155
                slotSelect();
1156
                return;
1157
        }
232 Franz 1158
        ButtonState buttonState = k->state();
272 Franz 1159
        if ((HaveDoc) && (!view->LE->hasFocus()) && (!view->PGS->PageCombo->hasFocus()))
1160
        {
456 fschmid 1161
                if ((doc->AppMode != 7) && (view->SelItem.count() == 0))
272 Franz 1162
                {
1163
                        switch (kk)
146 Franz 1164
                        {
272 Franz 1165
                        case Key_Space:
1166
                                keyrep = false;
1167
                                if (doc->AppMode == 23)
1168
                                        setAppMode(1);
1169
                                else
1170
                                {
1171
                                        setAppMode(23);
1172
                                        qApp->setOverrideCursor(QCursor(loadIcon("HandC.xpm")), true);
1173
                                }
1174
                                return;
1175
                                break;
1176
                        case Key_Prior:
1177
                                view->scrollBy(0, -Prefs.Wheelval);
1178
                                keyrep = false;
1179
                                return;
1180
                                break;
1181
                        case Key_Next:
1182
                                view->scrollBy(0, Prefs.Wheelval);
1183
                                keyrep = false;
1184
                                return;
1185
                                break;
1186
                        case Key_Tab:
1187
                                keyrep = false;
1188
                                windows = wsp->windowList();
1189
                                if (windows.count() > 1)
1190
                                {
1191
                                        for (int i = 0; i < static_cast<int>(windows.count()); ++i)
250 Franz 1192
                                        {
272 Franz 1193
                                                if (wsp->activeWindow() == windows.at(i))
1194
                                                {
1195
                                                        if (i == static_cast<int>(windows.count()-1))
1196
                                                                w = windows.at(0);
1197
                                                        else
1198
                                                                w = windows.at(i+1);
1199
                                                        break;
1200
                                                }
250 Franz 1201
                                        }
272 Franz 1202
                                        doc->OpenNodes = Tpal->buildReopenVals();
1203
                                        if ( w )
1204
                                                w->showNormal();
1205
                                        newActWin(w);
1206
                                }
1207
                                return;
1208
                                break;
1209
                        }
1210
                }
456 fschmid 1211
                if (view->SelItem.count() != 0)
272 Franz 1212
                {
456 fschmid 1213
                        PageItem *b = view->SelItem.at(0);
358 Franz 1214
                        if (kk == Key_F9)
1215
                        {
1216
                                keyrep = false;
1217
                                if (doc->AppMode == 7)
1218
                                        setAppMode(1);
1219
                                else
1220
                                        setAppMode(7);
1221
                                return;
1222
                        }
272 Franz 1223
                        switch (doc->AppMode)
1224
                        {
1225
                        case 1:
1226
                                switch (kk)
1227
                                {
360 Franz 1228
                                case Key_Backspace:
272 Franz 1229
                                case Key_Delete:
1230
                                        if (!doc->EditClip)
1231
                                        {
1232
                                                if ((!b->Locked) && (!((b->isTableItem) && (b->isSingleSel))))
456 fschmid 1233
                                                        view->DeleteItem();
272 Franz 1234
                                        }
1235
                                        break;
360 Franz 1236
                                case Key_Prior:
1237
                                        if (!b->Locked)
456 fschmid 1238
                                                view->RaiseItem();
360 Franz 1239
                                        break;
1240
                                case Key_Next:
1241
                                        if (!b->Locked)
456 fschmid 1242
                                                view->LowerItem();
360 Franz 1243
                                        break;
272 Franz 1244
                                case Key_Left:
1245
                                        if (!k->isAutoRepeat())
1246
                                        {
456 fschmid 1247
                                                view->storeUndoInf(b);
272 Franz 1248
                                                doc->UnData.UnCode = 1;
1249
                                                doc->UnDoValid = true;
1250
                                                CanUndo();
1251
                                        }
1252
                                        if (!b->Locked)
1253
                                        {
1254
                                                if ( buttonState & ShiftButton )
456 fschmid 1255
                                                        view->moveGroup(-10, 0);
272 Franz 1256
                                                else if ( buttonState & ControlButton )
456 fschmid 1257
                                                        view->moveGroup(-0.1, 0);
272 Franz 1258
                                                else
456 fschmid 1259
                                                        view->moveGroup(-1, 0);
272 Franz 1260
                                        }
1261
                                        break;
1262
                                case Key_Right:
1263
                                        if (!k->isAutoRepeat())
1264
                                        {
456 fschmid 1265
                                                view->storeUndoInf(b);
272 Franz 1266
                                                doc->UnData.UnCode = 1;
1267
                                                doc->UnDoValid = true;
1268
                                                CanUndo();
1269
                                        }
1270
                                        if (!b->Locked)
1271
                                        {
1272
                                                if ( buttonState & ShiftButton )
456 fschmid 1273
                                                        view->moveGroup(10, 0);
272 Franz 1274
                                                else if ( buttonState & ControlButton )
456 fschmid 1275
                                                        view->moveGroup(0.1, 0);
272 Franz 1276
                                                else
456 fschmid 1277
                                                        view->moveGroup(1, 0);
272 Franz 1278
                                        }
1279
                                        break;
1280
                                case Key_Up:
1281
                                        if (!k->isAutoRepeat())
1282
                                        {
456 fschmid 1283
                                                view->storeUndoInf(b);
272 Franz 1284
                                                doc->UnData.UnCode = 1;
1285
                                                doc->UnDoValid = true;
1286
                                                CanUndo();
1287
                                        }
1288
                                        if (!b->Locked)
1289
                                        {
1290
                                                if ( buttonState & ShiftButton )
456 fschmid 1291
                                                        view->moveGroup(0, -10);
272 Franz 1292
                                                else if ( buttonState & ControlButton )
456 fschmid 1293
                                                        view->moveGroup(0, -0.1);
272 Franz 1294
                                                else
456 fschmid 1295
                                                        view->moveGroup(0, -1);
272 Franz 1296
                                        }
1297
                                        break;
1298
                                case Key_Down:
1299
                                        if (!k->isAutoRepeat())
1300
                                        {
456 fschmid 1301
                                                view->storeUndoInf(b);
272 Franz 1302
                                                doc->UnData.UnCode = 1;
1303
                                                doc->UnDoValid = true;
1304
                                                CanUndo();
1305
                                        }
1306
                                        if (!b->Locked)
1307
                                        {
1308
                                                if ( buttonState & ShiftButton )
456 fschmid 1309
                                                        view->moveGroup(0, 10);
272 Franz 1310
                                                else if ( buttonState & ControlButton )
456 fschmid 1311
                                                        view->moveGroup(0, 0.1);
272 Franz 1312
                                                else
456 fschmid 1313
                                                        view->moveGroup(0, 1);
272 Franz 1314
                                        }
1315
                                        break;
1316
                                default:
1317
                                        if (b->PType == 4)
1318
                                        {
1319
                                                if ((kk + KeyMod) == Prefs.KeyActions[59].KeyID)
146 Franz 1320
                                                {
272 Franz 1321
                                                        setNewAbStyle(1);
1322
                                                        b->Tinput = true;
456 fschmid 1323
                                                        view->RefreshItem(b);
272 Franz 1324
                                                }
1325
                                                if ((kk + KeyMod) == Prefs.KeyActions[58].KeyID)
1326
                                                {
1327
                                                        setNewAbStyle(2);
1328
                                                        b->Tinput = true;
456 fschmid 1329
                                                        view->RefreshItem(b);
272 Franz 1330
                                                }
1331
                                                if ((kk + KeyMod) == Prefs.KeyActions[57].KeyID)
1332
                                                {
1333
                                                        setNewAbStyle(0);
1334
                                                        b->Tinput = true;
456 fschmid 1335
                                                        view->RefreshItem(b);
272 Franz 1336
                                                }
1337
                                        }
1338
                                        break;
1339
                                }
1340
                                slotDocCh();
1341
                                break;
1342
                        case 7:
1343
                                int oldPos = b->CPos; // 15-mar-2004 jjsa for cursor movement with Shift + Arrow key
456 fschmid 1344
                                view->oldCp = b->CPos;
272 Franz 1345
                                if (b->PType == 4)
1346
                                {
456 fschmid 1347
                                        view->slotDoCurs(false);
272 Franz 1348
                                        switch (kk)
1349
                                        {
1350
                                        case Key_Prior:
1351
                                        case Key_Next:
1352
                                        case Key_End:
1353
                                        case Key_Home:
1354
                                        case Key_Right:
1355
                                        case Key_Left:
1356
                                        case Key_Up:
1357
                                        case Key_Down:
1358
                                                if ( (buttonState & ShiftButton) == 0 )
456 fschmid 1359
                                                        view->deselectAll(b);
272 Franz 1360
                                        }
1361
                                        if (UniCinp)
1362
                                        {
1363
                                                int conv = 0;
1364
                                                bool ok = false;
1365
                                                UniCinS += uc;
1366
                                                conv = UniCinS.toInt(&ok, 16);
1367
                                                if (!ok)
1368
                                                {
1369
                                                        UniCinp = false;
1370
                                                        UniCinC = 0;
1371
                                                        UniCinS = "";
1372
                                                        keyrep = false;
1373
                                                        return;
1374
                                                }
1375
                                                UniCinC++;
1376
                                                if (UniCinC == 4)
1377
                                                {
1378
                                                        UniCinp = false;
1379
                                                        UniCinC = 0;
1380
                                                        UniCinS = "";
1381
                                                        if (ok)
146 Franz 1382
                                                        {
282 Franz 1383
                                                                if (b->HasSel)
1384
                                                                        DeleteSel(b);
272 Franz 1385
                                                                if (conv < 31)
1386
                                                                        conv = 32;
1387
                                                                hg = new Pti;
1388
                                                                hg->ch = QString(QChar(conv));
1389
                                                                hg->cfont = doc->CurrFont;
1390
                                                                hg->csize = doc->CurrFontSize;
1391
                                                                hg->ccolor = doc->CurrTextFill;
1392
                                                                hg->cshade = doc->CurrTextFillSh;
1393
                                                                hg->cstroke = doc->CurrTextStroke;
1394
                                                                hg->cshade2 = doc->CurrTextStrokeSh;
1395
                                                                hg->cscale = doc->CurrTextScale;
1396
                                                                hg->cselect = false;
1397
                                                                hg->cstyle = doc->CurrentStyle;
1398
                                                                hg->cab = doc->CurrentABStil;
1399
                                                                if (doc->Vorlagen[doc->CurrentABStil].Font != "")
146 Franz 1400
                                                                {
272 Franz 1401
                                                                        hg->cfont = doc->Vorlagen[doc->CurrentABStil].Font;
1402
                                                                        hg->csize = doc->Vorlagen[doc->CurrentABStil].FontSize;
146 Franz 1403
                                                                }
272 Franz 1404
                                                                hg->cextra = 0;
1405
                                                                hg->xp = 0;
1406
                                                                hg->yp = 0;
1407
                                                                hg->PRot = 0;
1408
                                                                hg->PtransX = 0;
1409
                                                                hg->PtransY = 0;
1410
                                                                b->Ptext.insert(b->CPos, hg);
1411
                                                                b->CPos += 1;
1412
                                                                b->Tinput = true;
282 Franz 1413
                                                                setTBvals(b);
456 fschmid 1414
                                                                view->RefreshItem(b);
272 Franz 1415
                                                                keyrep = false;
1416
                                                                return;
146 Franz 1417
                                                        }
1418
                                                }
272 Franz 1419
                                                else
1420
                                                {
1421
                                                        keyrep = false;
1422
                                                        return;
1423
                                                }
1424
                                        }
1425
                                        switch (kk)
1426
                                        {
1427
                                        case Key_F12:
1428
                                                UniCinp = true;
1429
                                                UniCinC = 0;
1430
                                                UniCinS = "";
1431
                                                keyrep = false;
1432
                                                return;
1433
                                                break;
291 Franz 1434
                                        case Key_Home:
272 Franz 1435
                                                // go to begin of line
1436
                                                if ( (pos = b->CPos) == 0 )
1437
                                                        break; // at begin of frame
1438
                                                len = static_cast<int>(b->Ptext.count());
1439
                                                if ( pos == len )
1440
                                                        pos--;
1441
                                                if ( (buttonState & ControlButton) == 0 )
1442
                                                {
1443
                                                        alty =  b->Ptext.at(pos)->yp;
1444
                                                        c = b->Ptext.at(pos)->ch.at(0).latin1();
1445
                                                        if ( c == 13 ) // new line, position is wrong
1446
                                                                if ( --pos > 0 )
1447
                                                                        alty =  b->Ptext.at(pos)->yp;
1448
                                                        // check for yp at actual position
1449
                                                        if ( pos < len )
1450
                                                        {
1451
                                                                altx =  b->Ptext.at(pos)->yp;
1452
                                                                if ( altx > alty )
3 paul 1453
                                                                {
272 Franz 1454
                                                                        // we was at begin of line
1455
                                                                        break;
3 paul 1456
                                                                }
272 Franz 1457
                                                        }
1458
                                                        while (  pos > 0 && b->Ptext.at(pos-1)->yp == alty )
1459
                                                                pos--;
1460
                                                        if ( b->Ptext.at(pos)->ch.at(0).latin1() == 13 )
1461
                                                                pos++;
1462
                                                }
1463
                                                else
1464
                                                {
1465
                                                        // paragraph begin
1466
                                                        if ( pos < len &&
1467
                                                                b->Ptext.at(pos)->ch.at(0).latin1() == 13 )
1468
                                                                pos--;
1469
                                                        while(pos > 0 )
1470
                                                                if ( b->Ptext.at(pos)->ch.at(0).latin1() == 13 )
3 paul 1471
                                                                {
272 Franz 1472
                                                                        pos++;
1473
                                                                        break;
3 paul 1474
                                                                }
272 Franz 1475
                                                                else
1476
                                                                        pos--;
1477
                                                }
1478
                                                b->CPos = pos;
1479
                                                if ( buttonState & ShiftButton )
456 fschmid 1480
                                                        view->ExpandSel(b, -1, oldPos);
272 Franz 1481
                                                break;
291 Franz 1482
                                        case Key_End:
272 Franz 1483
                                                // go to end of line
1484
                                                len = static_cast<int>(b->Ptext.count());
1485
                                                if ( b->CPos >= len )
1486
                                                        break; // at end of frame
1487
                                                if ( (buttonState & ControlButton) == 0 )
1488
                                                {
1489
                                                        if ( b->CPos < len && b->Ptext.at(b->CPos)->ch.at(0).latin1() == 13 )
239 Franz 1490
                                                        {
272 Franz 1491
                                                                // at end of paragraph and therefore line
1492
                                                                break;
239 Franz 1493
                                                        }
272 Franz 1494
                                                        alty =  b->Ptext.at(b->CPos)->yp;
1495
                                                        while (  b->CPos < len-1 &&  b->Ptext.at(b->CPos+1)->yp == alty )
1496
                                                                b->CPos++;
1497
 
1498
                                                        if ( b->CPos < len -1 )
1499
                                                                c = b->Ptext.at(b->CPos+1)->ch.at(0).latin1();
1500
                                                        else if ( b->CPos == len - 1 )
1501
                                                                c = 13;
1502
                                                        else
1503
                                                                c = 0;
1504
                                                        if ( c == 13 )
1505
                                                                b->CPos++;
1506
                                                }
1507
                                                else
1508
                                                {
1509
                                                        // go to end of paragraph
1510
                                                        if ( b->Ptext.at(b->CPos)->ch.at(0).latin1() == 13 )
239 Franz 1511
                                                        {
272 Franz 1512
                                                                break;
239 Franz 1513
                                                        }
272 Franz 1514
                                                        pos = b->CPos;
1515
                                                        while ( pos < len )
239 Franz 1516
                                                        {
272 Franz 1517
                                                                if ( b->Ptext.at(pos)->ch.at(0).latin1() == 13 )
1518
                                                                        break;
239 Franz 1519
                                                                else
272 Franz 1520
                                                                        pos++;
239 Franz 1521
                                                        }
272 Franz 1522
                                                        b->CPos = pos;
1523
                                                }
1524
                                                if ( buttonState & ShiftButton )
456 fschmid 1525
                                                        view->ExpandSel(b, 1, oldPos);
272 Franz 1526
                                                break;
1527
                                        case Key_Down:
1528
                                                if (b->CPos != static_cast<int>(b->Ptext.count()))
1529
                                                {
1530
                                                        alty = b->Ptext.at(b->CPos)->yp;
1531
                                                        altx = b->Ptext.at(b->CPos)->xp;
1532
                                                        do
1533
                                                        {
1534
                                                                b->CPos += 1;
1535
                                                                if (b->CPos == static_cast<int>(b->Ptext.count()))
1536
                                                                        break;
1537
                                                                if (b->Ptext.at(b->CPos)->yp > alty)
3 paul 1538
                                                                {
272 Franz 1539
                                                                        if (b->Ptext.at(b->CPos)->xp >= altx)
1540
                                                                                break;
3 paul 1541
                                                                }
239 Franz 1542
                                                        }
272 Franz 1543
                                                        while (b->CPos < static_cast<int>(b->Ptext.count()));
1544
                                                        if ( buttonState & ShiftButton )
237 Franz 1545
                                                        {
272 Franz 1546
                                                                if ( buttonState & AltButton )
1547
                                                                        b->CPos = b->Ptext.count();
456 fschmid 1548
                                                                view->ExpandSel(b, 1, oldPos);
237 Franz 1549
                                                        }
272 Franz 1550
                                                        else
1551
                                                                if (b->CPos == static_cast<int>(b->Ptext.count()))
1552
                                                                        if (b->NextBox != 0)
253 Franz 1553
                                                                        {
272 Franz 1554
                                                                                if (b->NextBox->Ptext.count() != 0)
253 Franz 1555
                                                                                {
456 fschmid 1556
                                                                                        view->Deselect(true);
272 Franz 1557
                                                                                        b->NextBox->CPos = 0;
456 fschmid 1558
                                                                                        view->SelectItemNr(b->NextBox->ItemNr);
272 Franz 1559
                                                                                        b = b->NextBox;
253 Franz 1560
                                                                                }
1561
                                                                        }
272 Franz 1562
                                                }
1563
                                                else
1564
                                                {
1565
                                                        if (b->NextBox != 0)
1566
                                                        {
1567
                                                                if (b->NextBox->Ptext.count() != 0)
253 Franz 1568
                                                                {
456 fschmid 1569
                                                                        view->Deselect(true);
272 Franz 1570
                                                                        b->NextBox->CPos = 0;
456 fschmid 1571
                                                                        view->SelectItemNr(b->NextBox->ItemNr);
272 Franz 1572
                                                                        b = b->NextBox;
253 Franz 1573
                                                                }
1574
                                                        }
272 Franz 1575
                                                }
1576
                                                if ( b->HasSel )
456 fschmid 1577
                                                        view->RefreshItem(b);
272 Franz 1578
                                                setTBvals(b);
1579
                                                break;
1580
                                        case Key_Up:
1581
                                                if (b->CPos > 0)
1582
                                                {
1583
                                                        if (b->CPos == static_cast<int>(b->Ptext.count()))
1584
                                                                b->CPos -= 1;
1585
                                                        alty = b->Ptext.at(b->CPos)->yp;
1586
                                                        altx = b->Ptext.at(b->CPos)->xp;
1587
                                                        if (b->CPos > 0)
1588
                                                        {
1589
                                                                do
235 Franz 1590
                                                                {
272 Franz 1591
                                                                        b->CPos -= 1;
1592
                                                                        if (b->CPos == 0)
1593
                                                                                break;
1594
                                                                        if (b->Ptext.at(b->CPos)->yp < alty)
235 Franz 1595
                                                                        {
272 Franz 1596
                                                                                if (b->Ptext.at(b->CPos)->xp <= altx)
235 Franz 1597
                                                                                        break;
1598
                                                                        }
1599
                                                                }
272 Franz 1600
                                                                while (b->CPos > 0);
1601
                                                        }
1602
                                                        if ( buttonState & ShiftButton )
1603
                                                        {
1604
                                                                if ( buttonState & AltButton )
1605
                                                                        b->CPos = 0;
456 fschmid 1606
                                                                view->ExpandSel(b, -1, oldPos);
272 Franz 1607
                                                        }
1608
                                                        else
1609
                                                                if (b->CPos == 0)
237 Franz 1610
                                                                {
272 Franz 1611
                                                                        if (b->BackBox != 0)
237 Franz 1612
                                                                        {
456 fschmid 1613
                                                                                view->Deselect(true);
3 paul 1614
                                                                                b->BackBox->CPos = b->BackBox->Ptext.count();
456 fschmid 1615
                                                                                view->SelectItemNr(b->BackBox->ItemNr);
3 paul 1616
                                                                                b = b->BackBox;
232 Franz 1617
                                                                        }
272 Franz 1618
                                                                }
1619
                                                }
1620
                                                else
1621
                                                {
1622
                                                        b->CPos = 0;
1623
                                                        if (b->BackBox != 0)
1624
                                                        {
456 fschmid 1625
                                                                view->Deselect(true);
272 Franz 1626
                                                                b->BackBox->CPos = b->BackBox->Ptext.count();
456 fschmid 1627
                                                                view->SelectItemNr(b->BackBox->ItemNr);
272 Franz 1628
                                                                b = b->BackBox;
1629
                                                        }
1630
                                                }
1631
                                                if ( b->HasSel )
456 fschmid 1632
                                                        view->RefreshItem(b);
272 Franz 1633
                                                setTBvals(b);
1634
                                                break;
291 Franz 1635
                                        case Key_Prior:
272 Franz 1636
                                                b->CPos = 0;
1637
                                                if ( buttonState & ShiftButton )
456 fschmid 1638
                                                        view->ExpandSel(b, -1, oldPos);
272 Franz 1639
                                                setTBvals(b);
1640
                                                break;
291 Franz 1641
                                        case Key_Next:
272 Franz 1642
                                                b->CPos = static_cast<int>(b->Ptext.count());
1643
                                                if ( buttonState & ShiftButton )
456 fschmid 1644
                                                        view->ExpandSel(b, 1, oldPos);
272 Franz 1645
                                                setTBvals(b);
1646
                                                break;
1647
                                        case Key_Left:
1648
                                                if ( buttonState & ControlButton )
1649
                                                {
456 fschmid 1650
                                                        view->setNewPos(b, oldPos, b->Ptext.count(),-1);
272 Franz 1651
                                                        if ( buttonState & ShiftButton )
456 fschmid 1652
                                                                view->ExpandSel(b, -1, oldPos);
272 Franz 1653
                                                }
1654
                                                else if ( buttonState & ShiftButton )
1655
                                                {
1656
                                                        b->CPos--;
1657
                                                        if ( b->CPos < 0 )
1658
                                                                b->CPos = 0;
1659
                                                        else
456 fschmid 1660
                                                                view->ExpandSel(b, -1, oldPos);
272 Franz 1661
                                                }
1662
                                                else
1663
                                                {
1664
                                                        b->CPos -= 1;
1665
                                                        if (b->CPos < 0)
1666
                                                        {
1667
                                                                b->CPos = 0;
1668
                                                                if (b->BackBox != 0)
1669
                                                                {
456 fschmid 1670
                                                                        view->Deselect(true);
272 Franz 1671
                                                                        b->BackBox->CPos = b->BackBox->Ptext.count();
456 fschmid 1672
                                                                        view->SelectItemNr(b->BackBox->ItemNr);
272 Franz 1673
                                                                        b = b->BackBox;
1674
                                                                }
1675
                                                        }
1676
                                                }
405 Franz 1677
                                                if ((b->CPos > 0) && (b->CPos == static_cast<int>(b->Ptext.count())))
272 Franz 1678
                                                {
283 Franz 1679
                                                        if (b->Ptext.at(b->CPos-1)->cstyle & 256)
1680
                                                        {
1681
                                                                b->CPos -= 1;
405 Franz 1682
                                                                while ((b->CPos > 0) && (b->Ptext.at(b->CPos)->cstyle & 256))
283 Franz 1683
                                                                {
1684
                                                                        b->CPos--;
1685
                                                                        if (b->CPos == 0)
1686
                                                                                break;
1687
                                                                }
1688
                                                        }
272 Franz 1689
                                                }
283 Franz 1690
                                                else
1691
                                                {
405 Franz 1692
                                                        while ((b->CPos > 0) && (b->Ptext.at(b->CPos)->cstyle & 256))
283 Franz 1693
                                                        {
1694
                                                                b->CPos--;
1695
                                                                if (b->CPos == 0)
1696
                                                                        break;
1697
                                                        }
1698
                                                }
272 Franz 1699
                                                if ( b->HasSel )
456 fschmid 1700
                                                        view->RefreshItem(b);
272 Franz 1701
                                                setTBvals(b);
1702
                                                break;
1703
                                        case Key_Right:
1704
                                                if ( buttonState & ControlButton )
1705
                                                {
456 fschmid 1706
                                                        view->setNewPos(b, oldPos, b->Ptext.count(),1);
272 Franz 1707
                                                        if ( buttonState & ShiftButton )
456 fschmid 1708
                                                                view->ExpandSel(b, 1, oldPos);
272 Franz 1709
                                                }
1710
                                                else if ( buttonState & ShiftButton )
1711
                                                {
1712
                                                        b->CPos++;
1713
                                                        if ( b->CPos > static_cast<int>(b->Ptext.count()) )
1714
                                                                b->CPos--;
1715
                                                        else
456 fschmid 1716
                                                                view->ExpandSel(b, 1, oldPos);
272 Franz 1717
                                                }
1718
                                                else
1719
                                                {
1720
                                                        b->CPos += 1; // new position within text ?
1721
                                                        if (b->CPos > static_cast<int>(b->Ptext.count()))
1722
                                                        {
1723
                                                                b->CPos -= 1;
1724
                                                                if (b->NextBox != 0)
1725
                                                                {
1726
                                                                        if (b->NextBox->Ptext.count() != 0)
232 Franz 1727
                                                                        {
456 fschmid 1728
                                                                                view->Deselect(true);
272 Franz 1729
                                                                                b->NextBox->CPos = 0;
456 fschmid 1730
                                                                                view->SelectItemNr(b->NextBox->ItemNr);
272 Franz 1731
                                                                                b = b->NextBox;
232 Franz 1732
                                                                        }
272 Franz 1733
                                                                }
1734
                                                        }
1735
                                                }
1736
                                                if ( b->HasSel )
456 fschmid 1737
                                                        view->RefreshItem(b);
272 Franz 1738
                                                setTBvals(b);
1739
                                                break;
1740
                                        case Key_Delete:
1741
                                                if (b->CPos == static_cast<int>(b->Ptext.count()))
1742
                                                {
1743
                                                        if (b->HasSel)
1744
                                                        {
1745
                                                                DeleteSel(b);
232 Franz 1746
                                                                setTBvals(b);
456 fschmid 1747
                                                                view->RefreshItem(b);
272 Franz 1748
                                                        }
1749
                                                        keyrep = false;
1750
                                                        return;
1751
                                                }
1752
                                                if (b->Ptext.count() == 0)
1753
                                                {
1754
                                                        keyrep = false;
1755
                                                        return;
1756
                                                }
1757
                                                cr = b->Ptext.at(b->CPos)->ch;
1758
                                                if (b->HasSel)
1759
                                                        DeleteSel(b);
1760
                                                else
1761
                                                        b->Ptext.remove(b->CPos);
1762
                                                b->Tinput = false;
1763
                                                if ((cr == QChar(13)) && (b->Ptext.count() != 0))
1764
                                                {
456 fschmid 1765
                                                        view->chAbStyle(b, b->Ptext.at(QMAX(b->CPos-1,0))->cab);
272 Franz 1766
                                                        b->Tinput = false;
1767
                                                }
1768
                                                setTBvals(b);
456 fschmid 1769
                                                view->RefreshItem(b);
272 Franz 1770
                                                break;
1771
                                        case Key_Backspace:
1772
                                                if (b->CPos == 0)
1773
                                                {
1774
                                                        if (b->HasSel)
1775
                                                        {
1776
                                                                DeleteSel(b);
1777
                                                                setTBvals(b);
456 fschmid 1778
                                                                view->RefreshItem(b);
272 Franz 1779
                                                        }
1780
                                                        keyrep = false;
1781
                                                        return;
1782
                                                }
1783
                                                if (b->Ptext.count() == 0)
1784
                                                {
1785
                                                        keyrep = false;
1786
                                                        return;
1787
                                                }
1788
                                                cr = b->Ptext.at(QMAX(b->CPos-1,0))->ch;
1789
                                                if (b->HasSel)
1790
                                                        DeleteSel(b);
1791
                                                else
456 fschmid 1792
                                                {
272 Franz 1793
                                                        b->CPos -= 1;
456 fschmid 1794
                                                        b->Ptext.remove(b->CPos);
1795
                                                }
272 Franz 1796
                                                b->Tinput = false;
1797
                                                if ((cr == QChar(13)) && (b->Ptext.count() !=