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