Subversion Repositories Scribus

Rev

Rev 232 | Rev 247 | 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.h  -  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
#ifndef SCRIBUS_H
19
#define SCRIBUS_H
20
 
21
#define VERS09x
22
 
23
// include files for QT
24
#include <qapplication.h>
25
#include <qmainwindow.h>
26
#include <qaction.h>
27
#include <qmenubar.h>
28
#include <qpopupmenu.h>
29
#include <qtoolbar.h>
30
#include <qtoolbutton.h>
31
#include <qstatusbar.h>
32
#include <qtooltip.h>
33
#include <qstring.h>
34
#include <qpixmap.h>
35
#include <qmessagebox.h>
36
#include <qpainter.h>
37
#include <qmap.h>
38
#include <qfont.h>
39
#include <qtimer.h>
40
#include <qintdict.h>
41
#include <qprogressdialog.h>
42
#include <qprogressbar.h>
43
#include <qworkspace.h>
44
#include <qptrlist.h>
45
#include <qclipboard.h>
46
 
47
// application specific includes
48
#include "scribusview.h"
49
#include "scribusdoc.h"
50
#include "scribuswin.h"
51
#include "tree.h"
52
#include "mpalette.h"
53
#include "frameedit.h"
54
#include "scrap.h"
55
#include "layers.h"
56
#include "libpostscript/pslib.h"
57
#include "werktoolb.h"
58
#include "seiten.h"
59
#include "bookpalette.h"
17 Franz 60
#include "splash.h"
169 Franz 61
class Autoforms;
62
class FontCombo;
222 Franz 63
class StilFormate;
225 Franz 64
class LineFormate;
3 paul 65
 
66
/**
67
  * This Class is the base class for your application. It sets up the main
68
  * window and providing a menubar, toolbar
69
  * and statusbar. For the main view, an instance of class ScribusView is
70
  * created which creates your view.
71
  */
72
class ScribusApp : public QMainWindow
73
{
162 Franz 74
        Q_OBJECT
3 paul 75
 
168 Franz 76
public:
188 Franz 77
        /** constructor */
162 Franz 78
        ScribusApp();
79
        /** destructor */
80
        ~ScribusApp() {};
188 Franz 81
    /** init methods */
82
        void initGui();
162 Franz 83
        /** initMenuBar creates the menu_bar and inserts the menuitems */
84
        void initMenuBar();
85
        /** setup the statusbar */
86
        void initStatusBar();
87
        void SetShortCut();
88
        void SetKeyEntry(int Nr, QString text, int Men, int KeyC);
89
        bool doFileNew(double b, double h, double tpr, double lr, double rr, double br, double ab, double sp,
3 paul 90
                                                                         bool atf, bool fp, int einh, bool firstleft, int Ori, int SNr);
162 Franz 91
        bool DoFileSave(QString fn);
92
        void closeEvent(QCloseEvent *ce);
93
        void keyPressEvent(QKeyEvent *k);
94
        void wheelEvent(QWheelEvent *w);
95
        void DeleteSel(PageItem *b);
96
        void setTBvals(PageItem *b);
97
        void SavePrefs();
98
        void ShowSubs();
99
        void applyNewMaster(QString name);
100
        void UpdateRecent(QString fn);
101
        void InitPlugs(SplashScreen *spl);
102
        void InitHyphenator();
103
        void FinalizePlugs();
104
        bool DLLName(QString name, QString *PName, int *typ, void **Zeig);
105
        void CallDLL(QString name);
106
        PSLib* getPSDriver(bool psart, SCFonts &AllFonts, QMap<QString,QFont> DocFonts, CListe DocColors, bool pdf);
107
        void closePSDriver();
108
        bool getPDFDriver(QString fn, QString nam, int Components, int frPa, int toPa, QMap<int,QPixmap> thumbs);
109
        bool DoSaveAsEps(QString fn);
168 Franz 110
        QString CFileDialog(QString caption = "", QString filter = "", QString defNa = "", bool Pre = false,
111
                                                bool mod = true, bool comp = false, bool cod = false);
162 Franz 112
        void GetCMSProfiles();
113
        void GetCMSProfilesDir(QString pfad);
114
        void RecalcColors(QProgressBar *dia = 0);
115
        void SwitchWin();
116
        void RestoreBookMarks();
117
        void AdjustBM();
118
        void ReorgFonts();
119
        void GetUsedFonts(QMap<QString,QFont> *Really);
120
        static void defaultCrashHandler (int sig);
121
        void emergencySave();
122
        struct CLBuf Buffer;
123
        QString Buffer2;
124
        QString Buffer3;
125
        bool BuFromApp;
126
        ProfilesL MonitorProfiles;
127
        ProfilesL PrinterProfiles;
128
        ProfilesL PDFXProfiles;
129
        double DispX;
130
        double DispY;
131
        bool NoFonts;
132
        int HaveDoc;
133
        struct preV Prefs;
134
        /** view is the main widget which represents your working area. The View
135
         * class should handle all events of the view widget.  It is kept empty so
136
         * you can create your view according to your application's needs by
137
         * changing the view class.
138
         */
139
        ScribusView *view;
140
        /** doc represents your actual document and is created only once. It keeps
141
         * information such as filename and does the serialization of your files.
142
         */
143
        ScribusDoc *doc;
144
        QLabel* FMess;
145
        QProgressBar* FProg;
146
        QLabel* XMess;
147
        QLabel* XDat;
148
        QLabel* YMess;
149
        QLabel* YDat;
150
        Mpalette *Mpal;
151
        NodePalette *Npal;
152
        Tree *Tpal;
153
        Biblio *ScBook;
154
        LayerPalette* Lpal;
155
        SeitenPal *Sepal;
156
        BookPalette *BookPal;
157
        QMap<QString,QString> Sprachen;
158
        QWorkspace *wsp;
159
        QPopupMenu* windowsMenu;
160
        ScribusWin* ActWin;
161
        QString PrefsPfad;
162
        QClipboard *ClipB;
163
        QString LoadEnc;
164
        bool singleClose;
173 Franz 165
        bool ScriptRunning;
188 Franz 166
        Autoforms* SCustom;
167
        WerkToolB* WerkTools;
214 Franz 168
        int HavePngAlpha;
3 paul 169
 
162 Franz 170
public slots:
171
        void slotStoryEditor();
172
        void InvertPict();
173
        void Collect();
174
        void ChBookmarks(int s, int e, int n);
175
        void AddBookMark(PageItem *ite);
176
        void DelBookMark(PageItem *ite);
177
        void BookMarkTxT(PageItem *ite);
178
        void StoreBookmarks();
179
        void ReadPrefs();
180
        void ManageGuides();
181
        void SetTranspar(double t);
182
        void SetTransparS(double t);
183
        void ReportMP(double xp, double yp);
184
        bool DoFileClose();
185
        void DoSaveClose();
186
        void windowsMenuAboutToShow();
187
        void newActWin(QWidget *w);
188
        void windowsMenuActivated(int id);
189
        void ToggleObjLock();
190
        void UnDoAction();
191
        void CanUndo();
192
        void configHyphenator();
193
        void doHyphenate();
194
        void slotTest();
195
        void slotTest2();
196
        void PutScrap(QString t);
197
        void Pfadtext();
198
        void noPfadtext();
199
        void UniteOb();
200
        void SplitUniteOb();
201
        void TraceText();
202
        void changeLayer(int l);
203
        void showLayer();
216 Franz 204
        void LayerRemove(int l, bool dl = false);
162 Franz 205
        void SetCMSPrefs();
206
        void ManageJava();
207
        void ManageTemp(QString temp = "");
208
        void ManTempEnd();
209
        /** generate a new document in the actual view */
210
        bool slotFileNew();
211
        bool slotDocMerge();
212
        bool LadeSeite(QString fileName, int Nr, bool Mpa);
213
        /** open a document */
214
        void slotFileOpen();
218 Franz 215
        void slotFileAppend();
162 Franz 216
        /** open a document */
217
        void LoadRecent(int id);
218
        bool slotDocOpen();
219
        bool LadeDoc(QString fileName);
220
        void slotAutoSaved();
221
        /** save a document */
222
        void slotFileSave();
223
        /** save a document under a different filename*/
224
        void slotFileSaveAs();
225
        void slotFileRevert();
226
        /** Sichert den Text eines Elements */
227
        void SaveText();
228
        /** close the actual file */
229
        bool slotFileClose();
230
        /** print the actual file */
231
        void slotFilePrint();
232
        /** exits the application */
233
        void slotFileQuit();
234
        /** put the marked text/object into the clipboard and remove
235
         * it from the document */
236
        void slotEditCut();
237
        /** put the marked text/object into the clipboard*/
238
        void slotEditCopy();
239
        /** paste the clipboard into the document*/
240
        void slotEditPaste();
241
        void EnableTxEdit();
242
        void DisableTxEdit();
243
        void SelectAll();
244
        void ClipChange();
245
        void DeleteText();
246
        /** shows an about dlg*/
247
        void slotHelpAbout();
3 paul 248
    void slotHelpAboutQt();
162 Franz 249
        void slotOnlineHelp();
250
        void ToggleTips();
251
        /** Erzeugt eine neue Seite */
3 paul 252
        void slotNewPageP(int wo, QString templ);
162 Franz 253
        void slotNewPageM();
3 paul 254
        void slotNewPageT(int w);
162 Franz 255
        void slotNewPage(int w);
256
        /** Loescht die aktuelle Seite */
257
        void DeletePage();
3 paul 258
        void DeletePage2(int pg);
162 Franz 259
        /** Verschiebt Seiten */
260
        void MovePage();
261
        void CopyPage();
262
        /** Ansicht absolut zoomen */
80 Franz 263
        void slotZoomAbs(double z);
3 paul 264
        /** Ansicht ganzes Blatt) */
265
        void slotZoomFit();
162 Franz 266
        /** Ansicht 20 % */
3 paul 267
        void slotZoom20();
162 Franz 268
        /** Ansicht 50 % */
3 paul 269
        void slotZoom50();
162 Franz 270
        /** Ansicht 75 % */
3 paul 271
        void slotZoom75();
272
        /** Ansicht 100 % */
273
        void slotZoom100();
274
        /** Ansicht 200 % */
275
        void slotZoom200();
276
        /** Schaltet Raender ein/aus */
277
        void ToggleMarks();
278
        void ToggleFrames();
279
        /** Schaltet Werkzeuge ein/aus */
119 Franz 280
        void setTools(bool visible);
3 paul 281
        void ToggleTools();
119 Franz 282
        void setPDFTools(bool visible);
14 Franz 283
        void TogglePDFTools();
3 paul 284
        /** Schaltet Masspalette ein/aus */
119 Franz 285
        void setMpal(bool visible);
3 paul 286
        void ToggleMpal();
287
        /** Schaltet Uebersichtspalette ein/aus*/
288
        void ToggleTpal();
119 Franz 289
        void setTpal(bool visible);
3 paul 290
        void ToggleBpal();
162 Franz 291
        void setBpal(bool visible);
3 paul 292
        void ToggleLpal();
162 Franz 293
        void setLpal(bool visible);
3 paul 294
        void ToggleSepal();
162 Franz 295
        void setSepal(bool visible);
3 paul 296
        void ToggleBookpal();
162 Franz 297
        void setBookpal(bool visible);
3 paul 298
        /** Schaltet Bilder ein/aus */
299
        void TogglePics();
300
        /** Schaltet Raster ein/aus */
301
        void ToggleRaster();
302
        /** Schaltet Rasterbenutzung ein/aus */
303
        void ToggleURaster();
304
        /** Schaltet Rahmenbearbeitung ein/aus */
305
        void ToggleFrameEdit();
306
        void slotSelect();
307
        void ModeFromTB(int);
308
        /** Switch AppMode */
309
        void setAppMode(int mode);
310
        /** Neues Dokument erzeugt */
311
        void HaveNewDoc();
312
        /** Element ausgewaehlt */
313
        void HaveNewSel(int Nr);
314
        /** Dokument ist geaendert worden */
315
        void slotDocCh(bool reb = true);
316
        /** Setzt die Farbe */
317
        void setItemFarbe(int id);
318
        /** Setzt die Abstufung */
319
        void setItemShade(int id);
320
        /** Setzt den Font */
321
        void setItemFont(int id);
169 Franz 322
        void setItemFont2(int id);
3 paul 323
        /** Korrigiert das FontMenu */
324
        void AdjustFontMenu(QString nf);
325
        void SetNewFont(QString nf);
326
        /** Setz die Zeichensatzgroesse */
327
        void setItemFSize(int id);
328
        void setFSizeMenu(int size);
329
        /** Farbeditor */
330
        void slotEditColors();
331
        /** Setzt den Pen-Tonwert */
332
        void setPenShade(int sh);
333
        /** Setzt den Brush-Tonwert */
334
        void setBrushShade(int sh);
335
        void setGradFill(int typ, QString col1, int sh1, QString col2, int sh2);
336
        /** Setzt die Pen-Farbe */
337
        void setPenFarbe(QString farbe);
338
        /** Setzt die Brush-Farbe */
339
        void setBrushFarbe(QString farbe);
340
        void setCSMenu(QString f, QString l, int fs, int ls);
341
        /** Fragt nach den Farben */
342
        void GetBrushPen();
169 Franz 343
        /** Erzeugt einen Rahmen */
344
        void MakeFrame(int f, int c, double *vals);
3 paul 345
        /** Loescht ein Element */
346
        void DeleteObjekt();
347
        /** Setzt das Element in den Hintergrund */
348
        void Objekt2Back();
349
        /** Setzt das Element in den Vordergrund */
350
        void Objekt2Front();
351
        /** Bewegt das Element eine Ebene nach oben */
352
        void ObjektRaise();
353
        /** Bewegt das Element nach unten */
354
        void ObjektLower();
355
        /** Dupliziert das Element */
356
        void ObjektDup();
357
        /** Dupliziert das Element mehrfach*/
358
        void ObjektDupM();
359
        /** Setzt die Infos fuer das Dokument */
360
        void InfoDoc();
361
        /** Reformatiert das Dokument */
362
        bool SetupDoc();
363
        /** Richtet Objekte aus */
364
        void ObjektAlign();
80 Franz 365
        void DoAlign(bool xa, bool ya, bool Vth, bool Vtv, double xdp, double ydp, int xart, int yart);
3 paul 366
        void GetAllFonts();
367
        void BuildFontMenu();
368
        void slotFontOrg();
369
        void slotPrefsOrg();
370
        void slotEditStyles();
222 Franz 371
        void saveStyles(StilFormate *dia);
27 Franz 372
        void slotEditLineStyles();
225 Franz 373
        void saveLStyles(LineFormate *dia);
3 paul 374
        void setNewAbStyle(int a);
375
        void setAbsValue(int a);
376
        void SelectFromOutl(int Page, int Item);
377
        void SelectFromOutlS(int Page);
378
        void SaveAsEps();
379
        void SaveAsPDF();
380
        void Aktiv();
381
        void setItemHoch(int h);
382
        void setStilvalue(int s);
383
        void setItemTypeStyle(int id);
384
        void slotElemRead(QString Name, int x, int y, bool art, bool loca, ScribusDoc* docc);
51 Franz 385
        void slotChangeUnit(int art, bool draw = true);
3 paul 386
        void NoFrameEdit();
387
        void setItemTextAli(int id);
388
        void ApplyTemp();
68 Franz 389
        void Apply_Temp(QString in, int Snr, bool reb = true);
3 paul 390
        void GroupObj();
391
        void UnGroupObj();
392
        void StatusPic();
393
        void RunPlug(int id);
394
        void RunImportPlug(int id);
395
        void RunExportPlug(int id);
396
        void RunHelpPlug(int id);
397
        void ModifyAnnot();
398
        void ToggleGuides();
241 Franz 399
        void ToggleBase();
3 paul 400
        void ToggleUGuides();
27 Franz 401
        void HaveRaster(bool art);
140 Franz 402
        void EditTabs();
164 Franz 403
        void SearchText();
3 paul 404
 
405
signals:
406
        void TextISize(int);
407
        void TextIFont(QString);
80 Franz 408
        void TextUSval(double);
3 paul 409
        void TextStil(int);
410
        void TextFarben(QString, QString, int, int);
68 Franz 411
        void TextScale(int);
80 Franz 412
 
3 paul 413
private:
188 Franz 414
    /** the splash screen */
415
        SplashScreen * splash;
416
    /** init methods */
417
        void initScribus();
3 paul 418
 
162 Franz 419
        /** file_menu contains all items of the menubar entry "File" */
420
        QPopupMenu *fileMenu;
421
        /** edit_menu contains all items of the menubar entry "Edit" */
422
        QPopupMenu *editMenu;
423
        /** StilMenu enthaelt das Stilemenue */
424
        QPopupMenu *StilMenu;
425
        /** ObjMenu enthaelt das Objektemenue */
426
        QPopupMenu *ObjMenu;
427
        /** pageMenu enthaelt das Seitenmenue */
428
        QPopupMenu *pageMenu;
429
        /** view_menu contains all items of the menubar entry "View" */
430
        QPopupMenu *viewMenu;
431
        /** ColorMenu enthaelt die Farben des Dokuments */
432
        QPopupMenu *ColorMenu;
433
        QComboBox *ColorMenC;
434
        /** SizeTMenu enthaelt die Schriftgroessen */
435
        QPopupMenu *SizeTMenu;
436
        /** ShadeMenu enthaelt die Tonwerte */
437
        QPopupMenu *ShadeMenu;
438
        /** ShapeMenu enthaelt die Rahmenformen */
439
        QPopupMenu *ShapeMenu;
440
        /** FontMenu enthaelt die Fonts */
441
        QPopupMenu *FontMenu;
169 Franz 442
    FontCombo* FontSub;
162 Franz 443
        QPopupMenu *TypeStyleMenu;
444
        QPopupMenu *AliMenu;
445
        QPopupMenu *recentMenu;
446
        QPopupMenu *hymen;
447
        QToolBar *WerkTools2;
448
        WerkToolBP* WerkToolsP;
449
        QToolButton* DatOpe;
450
        QToolButton* DatSav;
451
        QToolButton* DatClo;
452
        QToolButton* DatPri;
453
        QToolButton* DatPDF;
454
        QToolButton* DatNeu;
455
        int KeyMod;
456
        int ShapeEdit;
457
        int ShapeM;
458
        int DistM;
459
        int PfadT;
460
        int PfadDT;
461
        int PfadS;
462
        int PfadV;
463
        int PfadTP;
464
        int pgmd;
465
        int pgmm;
466
        int pgmv;
467
        int Stm;
468
        int Obm;
469
        int Markers;
470
        int FrameDr;
471
        int Bilder;
472
        int Ras;
473
        int uRas;
474
        int Guide;
475
        int uGuide;
241 Franz 476
        int Base;
162 Franz 477
        int viewTools;
478
        int viewToolsP;
479
        int viewMpal;
480
        int viewTpal;
481
        int viewNpal;
482
        int viewBpal;
483
        int viewLpal;
484
        int viewSepal;
485
        int viewBopal;
486
        int fid1;
487
        int fid2;
488
        int fid2a;
218 Franz 489
        int fid2aa;
162 Franz 490
        int fid3;
491
        int fid4;
492
        int fid5;
493
        int fid51;
494
        int fid52;
495
        int fid6;
496
        int fid7;
497
        int fid8;
498
        int fid9;
499
        int fid10;
500
        int fid11;
501
        int fid12;
502
        int fid13;
503
        int fid14;
504
        int edUndo;
505
        int edid1;
506
        int edid2;
507
        int edid3;
508
        int edid4;
509
        int edid5;
510
        int edid6;
511
        int edid6a;
164 Franz 512
        int Sear;
162 Franz 513
        int Loesch;
514
        int tman;
515
        int jman;
516
        int tip;
517
        int Gr;
518
        int UnGr;
519
        int LockOb;
520
        int exmn;
521
        int hyph;
522
        int ORaise;
523
        int OLower;
524
        int OBack;
525
        int OFront;
232 Franz 526
        int ODup;
527
        int OMDup;
162 Franz 528
        bool tipsOn;
529
        bool keyrep;
530
        QPopupMenu *helpMenu;
531
        QPopupMenu *toolMenu;
532
        QPopupMenu *extraMenu;
533
        QPopupMenu *importMenu;
534
        QPopupMenu *exportMenu;
535
        double mm2pts(int mm);
536
        double pts2mm(double pts);
537
        QMap<int,QString> FontID;
538
        int HaveGS;
539
        void *PSDriver;
540
        int DocNr;
541
        QStringList RecentDocs;
168 Franz 542
        struct PlugData {
543
                                                QString Datei;
544
                                                void *Zeiger;
545
                                                int Typ;
162 Franz 546
                                        } ;
547
        QMap<QString, PlugData> PluginMap;
548
        bool PrinterUsed;
168 Franz 549
        struct PDe {
550
                                        QString Pname;
551
                                QString Dname;
552
                                        QString Command;
162 Franz 553
                        } PDef ;
3 paul 554
};
555
#endif