Subversion Repositories Scribus

Rev

Rev 1194 | Rev 1232 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 paul 1
/***************************************************************************
2
                          scribusdoc.h  -  description
3
                             -------------------
4
    begin                : Fre Apr  6 21:47:55 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
#ifndef SCRIBUSDOC_H
18
#define SCRIBUSDOC_H
19
#ifdef HAVE_CONFIG_H
20
#include <config.h>
21
#endif
22
// include files for QT
23
#include <qobject.h>
24
#include <qdict.h>
25
#include <qcolor.h>
26
#include <qvaluelist.h>
27 Franz 27
#include <qvaluevector.h>
1179 tsoots 28
#include <qpixmap.h>
3 paul 29
#include <qptrlist.h>
30
#include <qfont.h>
31
#include <qmap.h>
32
#include <qpointarray.h>
33
#include <qstringlist.h>
34
#include <qtimer.h>
838 cbradney 35
 
36
#include "scribusstructs.h"
1179 tsoots 37
#include "undoobject.h"
3 paul 38
#include "hyphenator.h"
39
#ifdef HAVE_CMS
44 Franz 40
        #include CMS_INC
3 paul 41
#endif
42
 
68 Franz 43
#include <ft2build.h>
44
#include FT_FREETYPE_H
3 paul 45
class Page;
1190 tsoots 46
class UndoManager;
47
class UndoState;
3 paul 48
 
49
 
50
/**
51
  * the Document Class
52
  */
53
 
1179 tsoots 54
class ScribusDoc : public QObject, public UndoObject
3 paul 55
{
56
 
57
public:
1065 cbradney 58
    ScribusDoc(struct ApplicationPrefs *prefsData);
3 paul 59
    ~ScribusDoc();
60
    void setModified();
61
    void setUnModified();
62
    bool isModified() const;
63
  /** Setzt die Seitenattribute */
241 Franz 64
        void setPage(double b, double h, double t, double l, double r, double bo, double sp, double ab, bool atf, bool fp);
168 Franz 65
        void resetPage(double t, double l, double r, double bo, bool fp);
220 Franz 66
        bool AddFont(QString name, QFont fo);
1065 cbradney 67
        void loadStylesFromFile(QString fileName, QValueList<ParagraphStyle> *tempStyles = NULL);
1179 tsoots 68
        /**
69
         * @brief Should guides be locked or not
70
         * @param isLocked If true guides on pages cannot be moved if false they
71
         * can be dragged to new positions.
72
         * @author Riku Leino
73
         */
74
        void lockGuides(bool isLocked);
1190 tsoots 75
        /**
1179 tsoots 76
         * @brief Method used when an undo/redo is requested.
77
         * @param state State describing the action that is wanted to be undone/redone
78
         * @param isUndo If true undo is wanted else if false redo.
79
         * @author Riku Leino
80
         */
81
        void restore(UndoState* state, bool isUndo);
82
        /**
83
         * @brief Sets the name of the document
84
         * @param name Name for the document
85
         * @author Riku Leino
86
         */
87
        void setName(const QString& name);
168 Franz 88
 
89
protected:
3 paul 90
    bool modified;
1179 tsoots 91
    UndoManager *undoManager;
168 Franz 92
 
93
public: // Public attributes
3 paul 94
        bool SnapGuides;
95
        bool GuideLock;
168 Franz 96
        bool loading;
456 fschmid 97
        /** Scratch space around Pages */
98
        double ScratchLeft;
99
        double ScratchRight;
100
        double ScratchTop;
101
        double ScratchBottom;
102
  /** List of Pages */
103
        QPtrList<Page> Pages;
104
  /** List of Template Pages */
105
        QPtrList<Page> MasterPages;
106
  /** List of Document Pages */
107
        QPtrList<Page> DocPages;
108
  /** Mapping Template Name to Template Page numbers */
109
        QMap<QString,int> MasterNames;
110
  /** List of Objects */
111
        QPtrList<PageItem> Items;
112
        QPtrList<PageItem> MasterItems;
113
        QPtrList<PageItem> DocItems;
114
  /** Pagewidth  */
168 Franz 115
        double PageB;
456 fschmid 116
  /** Pageheight */
168 Franz 117
        double PageH;
456 fschmid 118
  /** Number of Pages */
168 Franz 119
        int PageC;
456 fschmid 120
  /** Margins */
1065 cbradney 121
        MarginStruct PageM;
456 fschmid 122
  /** Number of Columns */
168 Franz 123
        double PageSp;
456 fschmid 124
  /** Distance of Columns */
168 Franz 125
        double PageSpa;
456 fschmid 126
  /** Flag for automatic Textframes */
168 Franz 127
        bool PageAT;
456 fschmid 128
  /** Flag for facing Pages */
168 Franz 129
        bool PageFP;
3 paul 130
        /** Flag fuer Hoch- oder Querformat 0 = Hochformat */
519 cbradney 131
        int PageOri;   
132
        QString PageSize;
3 paul 133
        /** Erste Seitennummer im Dokument */
134
        int FirstPnum;
135
  /** Flag fuer Rasterbenutzung */
168 Franz 136
        bool useRaster;
3 paul 137
  /** Im Dokument benutzte Farben */
1065 cbradney 138
        ColorList PageColors;
139
        Page* currentPage;
3 paul 140
  /** InfoStrings fuer das aktuelle Dokument */
168 Franz 141
        QString DocAutor;
142
        QString DocTitel;
143
        QString DocComments;
68 Franz 144
        QString DocKeyWords;
330 Franz 145
        QString DocPublisher;
146
        QString DocType;
147
        QString DocDate;
148
        QString DocFormat;
149
        QString DocIdent;
150
        QString DocSource;
151
        QString DocLangInfo;
152
        QString DocRelation;
153
        QString DocCover;
154
        QString DocRights;
155
        QString DocContrib;
1065 cbradney 156
        int appMode;
123 Franz 157
        int SubMode;
158
        double *ShapeValues;
159
        int ValCount;
168 Franz 160
        QString DocName;
161
        QMap<QString,QFont> UsedFonts;
162
        SCFonts *AllFonts;
1065 cbradney 163
        ApplicationPrefs *prefsValues;
168 Franz 164
        QColor papColor;
165
        int CurrentSel;
166
        int CurrentStyle;
1065 cbradney 167
        int currentParaStyle;
68 Franz 168
        QString CurrFont;
169
        int CurrFontSize;
170
        QString CurrTextFill;
171
        int CurrTextFillSh;
172
        QString CurrTextStroke;
173
        int CurrTextStrokeSh;
174
        int CurrTextScale;
168 Franz 175
        bool EditClip;
176
        int EditClipMode;
1065 cbradney 177
        typoPrefs typographicSetttings;
178
        guidesPrefs guidesSettings;
1194 fschmid 179
        toolPrefs toolSettings;
3 paul 180
  /** Letztes Element fuer AutoTextrahmen */
168 Franz 181
        PageItem *LastAuto;
3 paul 182
  /** Erstes Element fuer AutoTextrahmen */
168 Franz 183
        PageItem *FirstAuto;
1065 cbradney 184
        int docUnitIndex;
168 Franz 185
        bool DragP;
227 Franz 186
        bool leaveDrag;
168 Franz 187
        PageItem *DraggedElem;
188
        PageItem *ElemToLink;
189
        QValueList<uint> DragElements;
1065 cbradney 190
        QValueList<ParagraphStyle> docParagraphStyles;
3 paul 191
        QValueList<Layer> Layers;
168 Franz 192
        bool MasterP;
193
        bool FirstPageLeft;
1065 cbradney 194
        bool marginColored;
168 Franz 195
        int GroupCounter;
1065 cbradney 196
        CMSData CMSSettings;
3 paul 197
        int ActiveLayer;
198
#ifdef HAVE_CMS
199
        cmsHPROFILE DocInputProf;
200
        cmsHPROFILE DocOutputProf;
201
        cmsHPROFILE DocPrinterProf;
202
#endif
168 Franz 203
        bool HasCMS;
3 paul 204
        QMap<QString,QString> JavaScripts;
205
        bool UnDoValid;
206
        UndoData UnData;
207
        int TotalItems;
1065 cbradney 208
        Hyphenator *docHyphenator;
3 paul 209
        int MinWordLen;
249 Franz 210
        int HyCount;
3 paul 211
        QString Language;
212
        bool Automatic;
213
        bool AutoCheck;
168 Franz 214
        bool TemplateMode;
1065 cbradney 215
        struct PDFOptions PDF_Optionen;
3 paul 216
        bool RePos;
168 Franz 217
        struct BookMa {
218
                                        QString Title;
219
                                        QString Text;
220
                                        QString Aktion;
221
                                        int Parent;
222
                                        int Seite;
223
                                        int Element;
224
                                        int ItemNr;
225
                                        int First;
226
                                        int Last;
227
                                        int Prev;
228
                                        int Next;
229
                                        };
3 paul 230
        QValueList<BookMa> BookMarks;
231
        bool OldBM;
232
        bool hasName;
233
        int RotMode;
234
        bool AutoSave;
734 fschmid 235
        int AutoSaveTime;
3 paul 236
        QTimer *ASaveTimer;
237
        FT_Library   library;
168 Franz 238
        QMap<QString,FT_Face> FFonts;
27 Franz 239
        QMap<QString,multiLine> MLineStyles;
1065 cbradney 240
        QValueList<ArrowDesc> arrowStyles;
59 Franz 241
        QWidget* WinHan;
63 Franz 242
        bool DoDrawing;
168 Franz 243
        QValueList<int> OpenNodes;
139 Franz 244
        QTimer *CurTimer;
1229 fschmid 245
        QMap<int, errorCodes> docItemErrors;
3 paul 246
};
247
 
248
#endif