Subversion Repositories Scribus

Rev

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