Subversion Repositories Scribus

Rev

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