Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
102 Franz 1
/***************************************************************************
2
                          story.h    -  description
3
                             -------------------
4
    begin                : Tue Nov 11 2003
5
    copyright            : (C) 2003 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 STORY_H
19
#define STORY_H
20
 
21
#include <qvariant.h>
351 Franz 22
#include <qmainwindow.h>
102 Franz 23
#include <qptrlist.h>
24
#include <qtable.h>
25
#include <qtextedit.h>
103 Franz 26
#include <qpopupmenu.h>
27
#include <qmenubar.h>
124 Franz 28
#include <qstatusbar.h>
29
#include <qlabel.h>
126 Franz 30
#include <qbuttongroup.h>
351 Franz 31
#include <qspinbox.h>
32
#include <qtoolbutton.h>
33
#include <qtoolbar.h>
34
#include <qlayout.h>
371 Franz 35
#include <qsplitter.h>
461 fschmid 36
#include <qcheckbox.h>
2969 craig 37
 
38
#include "scribusapi.h"
102 Franz 39
#include "pageitem.h"
40
 
3252 craig 41
class MSpinBox;
42
class Spalette;
43
class StyleSelect;
44
class AlignSelect;
45
class FontCombo;
46
class ShadeButton;
47
class PrefsManager;
3868 subik 48
class PrefsContext;
3252 craig 49
 
3868 subik 50
 
1893 subik 51
struct PtiSmall {
351 Franz 52
                    int csize;
2247 fschmid 53
                    short cshade;
54
                    short cshade2;
55
                    short cstyle;
56
                    short cab;
57
                        short cscale;
58
                        short cscalev;
59
                        short cbase;
60
                        short cshadowx;
61
                        short cshadowy;
2257 fschmid 62
                        short coutline;
2262 fschmid 63
                        short cunderpos;
64
                        short cunderwidth;
2272 fschmid 65
                        short cstrikepos;
66
                        short cstrikewidth;
2382 fschmid 67
                    int cextra;
351 Franz 68
                        QString ch;
69
                    QString cfont;
70
                    QString ccolor;
71
                        QString cstroke;
2499 fschmid 72
                        PageItem* cembedded;
351 Franz 73
                   };
74
 
2969 craig 75
class SCRIBUS_API SEditor : public QTextEdit
102 Franz 76
{
77
        Q_OBJECT
78
 
79
public:
351 Franz 80
        SEditor (QWidget* parent, ScribusDoc *docc);
102 Franz 81
        ~SEditor() {};
2494 cbradney 82
        void setCurrentDocument(ScribusDoc *docc);
351 Franz 83
        void setAlign(int style);
1957 cbradney 84
        void saveItemText(PageItem *currItem);
85
        void loadItemText(PageItem *currItem);
86
        void loadText(QString tx, PageItem *currItem);
366 Franz 87
        void updateAll();
351 Franz 88
        void updateFromChars(int p);
89
        void updateSel(int code, struct PtiSmall *hg);
90
        void deleteSel();
91
        void setStyle(int Csty);
2407 fschmid 92
        void setFarbe(bool marker);
351 Franz 93
        void insChars(QString t);
363 Franz 94
        void insStyledText();
95
        void copyStyledText();
351 Franz 96
 
97
        typedef QPtrList<PtiSmall> ChList;
98
        QPtrList<ChList> StyledText;
2499 fschmid 99
        QPtrList<PageItem> FrameItems;
373 Franz 100
        QValueList<int> ParagStyles;
351 Franz 101
        ScribusDoc* doc;
3034 cbradney 102
        bool unicodeTextEditMode;
353 Franz 103
        bool wasMod;
371 Franz 104
        bool ready;
3034 cbradney 105
        int unicodeInputCount;
351 Franz 106
        int CurrentStyle;
1065 cbradney 107
        int currentParaStyle;
351 Franz 108
        int CurrFontSize;
109
        int CurrTextFillSh;
110
        int CurrTextStrokeSh;
111
        int CurrTextScale;
2230 fschmid 112
        int CurrTextScaleV;
2234 fschmid 113
        int CurrTextBase;
2247 fschmid 114
        int CurrTextShadowX;
115
        int CurrTextShadowY;
2257 fschmid 116
        int CurrTextOutline;
2262 fschmid 117
        int CurrTextUnderPos;
118
        int CurrTextUnderWidth;
2272 fschmid 119
        int CurrTextStrikePos;
120
        int CurrTextStrikeWidth;
2382 fschmid 121
        int CurrTextKern;
351 Franz 122
        QString CurrTextStroke;
123
        QString CurrTextFill;
124
        QString CurrFont;
3034 cbradney 125
        QString unicodeInputString;
363 Franz 126
        QString tBuffer;
127
        ChList cBuffer;
376 Franz 128
        int ClipData;
385 Franz 129
        bool StoredSel;
130
        int SelParaStart;
131
        int SelParaEnd;
132
        int SelCharStart;
133
        int SelCharEnd;
102 Franz 134
 
374 Franz 135
protected:
136
        void keyPressEvent(QKeyEvent *k);
2233 fschmid 137
        void imEndEvent(QIMEvent *e);
385 Franz 138
        void focusOutEvent(QFocusEvent *e);
374 Franz 139
        QPopupMenu* createPopupMenu(const QPoint & pos);
140
 
351 Franz 141
public slots:
142
        void cut();
363 Franz 143
        void copy();
351 Franz 144
        void paste();
376 Franz 145
        void ClipChange();
399 Franz 146
        void SelClipChange();
351 Franz 147
 
102 Franz 148
signals:
351 Franz 149
        void setProps(int, int);
372 Franz 150
        void SideBarUp(bool);
151
        void SideBarUpdate();
376 Franz 152
        void PasteAvail();
102 Franz 153
};
154
 
2969 craig 155
class SCRIBUS_API SideBar : public QLabel
371 Franz 156
{
157
        Q_OBJECT
158
 
1893 subik 159
public:
371 Franz 160
        SideBar(QWidget *pa);
161
        ~SideBar() {};
162
        int offs;
374 Franz 163
        int CurrentPar;
371 Franz 164
        SEditor *editor;
374 Franz 165
        QPopupMenu *pmen;
372 Franz 166
        bool noUpdt;
373 Franz 167
        bool inRep;
371 Franz 168
 
374 Franz 169
protected:
170
        void paintEvent(QPaintEvent *e);
171
        void mouseReleaseEvent(QMouseEvent *m);
172
 
173
signals:
174
        void ChangeStyle(int, int);
1893 subik 175
        //! signal raised when user ask for style manager
176
        void sigEditStyles();
374 Franz 177
 
371 Franz 178
public slots:
374 Franz 179
        void setPStyle(int s);
371 Franz 180
        void doMove(int x, int y);
181
        void doRepaint();
372 Franz 182
        void setRepaint(bool r);
1893 subik 183
        //! slot raising style manager
184
        void editStyles();
371 Franz 185
};
186
 
2969 craig 187
class SCRIBUS_API SToolBColorF : public QToolBar
102 Franz 188
{
189
        Q_OBJECT
190
 
1893 subik 191
public:
351 Franz 192
        SToolBColorF(QMainWindow* parent, ScribusDoc *doc);
193
        ~SToolBColorF() {};
2494 cbradney 194
        void setCurrentDocument(ScribusDoc *doc);
351 Franz 195
        QLabel* FillIcon;
196
        QComboBox* TxFill;
197
        ShadeButton *PM2;
124 Franz 198
 
351 Franz 199
public slots:
200
        void SetColor(int c);
201
        void SetShade(int s);
202
        void newShadeHandler();
2505 cbradney 203
        void languageChange();
351 Franz 204
 
124 Franz 205
signals:
351 Franz 206
        void NewColor(int, int);
102 Franz 207
};
208
 
2969 craig 209
class SCRIBUS_API SToolBColorS : public QToolBar
102 Franz 210
{
211
        Q_OBJECT
212
 
1893 subik 213
public:
351 Franz 214
        SToolBColorS(QMainWindow* parent, ScribusDoc *doc);
215
        ~SToolBColorS() {};
2494 cbradney 216
        void setCurrentDocument(ScribusDoc *doc);
351 Franz 217
        QLabel* StrokeIcon;
218
        QComboBox* TxStroke;
219
        ShadeButton *PM1;
220
 
221
public slots:
222
        void SetColor(int c);
223
        void SetShade(int s);
224
        void newShadeHandler();
2505 cbradney 225
        void languageChange();
351 Franz 226
 
227
signals:
228
        void NewColor(int, int);
229
};
230
 
2969 craig 231
class SCRIBUS_API SToolBStyle : public QToolBar
351 Franz 232
{
233
        Q_OBJECT
234
 
1893 subik 235
public:
351 Franz 236
        SToolBStyle(QMainWindow* parent);
237
        ~SToolBStyle() {};
238
        StyleSelect* SeStyle;
1845 cbradney 239
        QLabel* trackingLabel;
351 Franz 240
        MSpinBox* Extra;
241
 
242
public slots:
2272 fschmid 243
        void newStrikeHandler();
2262 fschmid 244
        void newUnderlineHandler();
2257 fschmid 245
        void newOutlineHandler();
2254 fschmid 246
        void newShadowHandler();
351 Franz 247
        void newKernHandler();
2254 fschmid 248
        void SetShadow(int x, int y);
2272 fschmid 249
        void setStrike(int p, int w);
2262 fschmid 250
        void setUnderline(int p, int w);
2257 fschmid 251
        void setOutline(int o);
351 Franz 252
        void SetStyle(int s);
2382 fschmid 253
        void SetKern(int k);
2505 cbradney 254
        void languageChange();
351 Franz 255
 
256
signals:
2382 fschmid 257
        void NewKern(int);
2254 fschmid 258
        void NewShadow(int, int);
2257 fschmid 259
        void newOutline(int);
2272 fschmid 260
        void newStrike(int, int);
2262 fschmid 261
        void newUnderline(int, int);
716 cbradney 262
        void newStyle(int);
351 Franz 263
};
264
 
2969 craig 265
class SCRIBUS_API SToolBAlign : public QToolBar
351 Franz 266
{
267
        Q_OBJECT
268
 
1893 subik 269
public:
351 Franz 270
        SToolBAlign(QMainWindow* parent);
271
        ~SToolBAlign() {};
272
        AlignSelect* GroupAlign;
273
        Spalette *Spal;
274
 
275
public slots:
276
        void newStyleHandler(int s);
277
        void SetAlign(int s);
2505 cbradney 278
        void languageChange();
351 Franz 279
 
280
signals:
281
        void NewAlign(int);
716 cbradney 282
        void newStyle(int);
351 Franz 283
};
284
 
2969 craig 285
class SCRIBUS_API SToolBFont : public QToolBar
351 Franz 286
{
287
        Q_OBJECT
288
 
1893 subik 289
public:
351 Franz 290
        SToolBFont(QMainWindow* parent);
291
        ~SToolBFont() {};
292
        FontCombo* Fonts;
293
        MSpinBox* Size;
2242 fschmid 294
        MSpinBox* ChScale;
295
        MSpinBox* ChScaleV;
2230 fschmid 296
        QLabel* ScaleTxt;
297
        QLabel* ScaleTxtV;
351 Franz 298
 
299
public slots:
300
        void SetFont(QString f);
301
        void SetSize(double s);
302
        void SetScale(int s);
2230 fschmid 303
        void SetScaleV(int s);
351 Franz 304
        void newSizeHandler();
2505 cbradney 305
        void languageChange();
351 Franz 306
 
307
signals:
308
        void NewFont(const QString &);
309
        void NewSize(double);
310
        void NewScale(int);
2230 fschmid 311
        void NewScaleV(int);
351 Franz 312
};
313
 
2969 craig 314
class SCRIBUS_API StoryEditor : public QMainWindow
351 Franz 315
{
316
        Q_OBJECT
317
 
102 Franz 318
public:
2494 cbradney 319
        StoryEditor( QWidget* parent );
102 Franz 320
        StoryEditor( QWidget* parent, ScribusDoc *docc, PageItem* ite );
3868 subik 321
        ~StoryEditor();
351 Franz 322
        void closeEvent(QCloseEvent *);
1951 fschmid 323
        void keyPressEvent (QKeyEvent * e);
2498 fschmid 324
        bool eventFilter( QObject* ob, QEvent* ev );
2494 cbradney 325
        //int exec();
351 Franz 326
        void changeAlign(int align);
327
        int result;
2494 cbradney 328
        void setCurrentDocumentAndItem(ScribusDoc *doc=NULL, PageItem *item=NULL);
329
        bool textDataChanged() const;
330
        PageItem* currentItem() const;
331
        ScribusDoc* currentDocument() const;
102 Franz 332
 
103 Franz 333
        QPopupMenu* fmenu;
334
        QPopupMenu* emenu;
357 Franz 335
        QPopupMenu* settingsMenu;
353 Franz 336
        QToolBar* FileTools;
337
        QToolButton* DatNeu;
338
        QToolButton* DatOpe;
339
        QToolButton* DatSav;
357 Franz 340
        QToolButton* DatFin;
353 Franz 341
        QToolButton* DatClo;
342
        QToolButton* DatCan;
343
        QToolButton* DatRel;
344
        QToolButton* DatUpdt;
351 Franz 345
        SToolBFont* FontTools;
346
        SToolBAlign* AlignTools;
347
        SToolBColorF* FillTools;
348
        SToolBColorS* StrokeTools;
349
        SToolBStyle* StyleTools;
371 Franz 350
        QSplitter* EdSplit;
351
        SideBar* EditorBar;
351 Franz 352
        SEditor* Editor;
126 Franz 353
        QButtonGroup* ButtonGroup1;
354
        QButtonGroup* ButtonGroup2;
355
        QLabel* WordCT1;
356
        QLabel* WordCT3;
124 Franz 357
        QLabel* ParCT;
358
        QLabel* ParC;
359
        QLabel* WordCT;
360
        QLabel* WordC;
361
        QLabel* CharCT;
362
        QLabel* CharC;
363
        QLabel* WordCT2;
364
        QLabel* WordC2;
365
        QLabel* CharCT2;
366
        QLabel* CharC2;
461 fschmid 367
        /*! Enables/disables the "smart" selection (#1203) - 10/16/2004 pv */
368
        bool smartSelection;
369
        int smartSel;
351 Franz 370
 
2494 cbradney 371
        ScribusDoc* currDoc;
372
        PageItem* currItem;
373
        bool textChanged;
113 Franz 374
        int Mcopy;
375
        int Mcut;
376
        int Mdel;
377
        int Mpaste;
378
        int Mupdt;
1208 cbradney 379
        int M_FileRevert;
353 Franz 380
        bool firstSet;
2498 fschmid 381
        bool activFromApp;
2500 fschmid 382
        bool blockUpdate;
2664 fschmid 383
        int CurrPara;
384
        int CurrChar;
102 Franz 385
 
386
public slots:
357 Franz 387
        void setBackPref();
388
        void setFontPref();
351 Franz 389
        void newTxFill(int c, int s);
390
        void newTxStroke(int c, int s);
391
        void newTxFont(const QString &f);
392
        void newTxSize(double s);
393
        void newTxScale(int s);
2230 fschmid 394
        void newTxScaleV(int s);
351 Franz 395
        void newTxStyle(int s);
2382 fschmid 396
        void newTxKern(int s);
2254 fschmid 397
        void newShadowOffs(int x, int y);
2257 fschmid 398
        void newTxtOutline(int o);
2262 fschmid 399
        void newTxtUnderline(int p, int w);
2272 fschmid 400
        void newTxtStrike(int p, int w);
351 Franz 401
        void updateProps(int p, int ch);
402
        void newAlign(int st);
374 Franz 403
        void changeAlignSB(int pa, int align);
124 Franz 404
        void updateStatus();
103 Franz 405
        void Do_leave();
351 Franz 406
        void Do_leave2();
295 Franz 407
        void Do_saveDocument();
351 Franz 408
        bool Do_new();
409
        void slotFileRevert();
410
 
352 Franz 411
        void Do_selectAll();
103 Franz 412
        void Do_copy();
413
        void Do_paste();
414
        void Do_cut();
415
        void Do_del();
253 Franz 416
        void Do_insSp();
357 Franz 417
        void Do_fontPrev();
113 Franz 418
        void CopyAvail(bool u);
376 Franz 419
        void PasteAvail();
102 Franz 420
        void updateTextFrame();
189 Franz 421
        void SearchText();
112 Franz 422
        void slotEditStyles();
102 Franz 423
        void modifiedText();
162 Franz 424
        void LoadTextFile();
425
        void SaveTextFile();
445 fschmid 426
        // 10/12/2004 - pv - #1203: wrong selection on double click
427
        void doubleClick(int para, int pos);
461 fschmid 428
        void ToggleSmart();
2505 cbradney 429
        void languageChange();
102 Franz 430
 
107 Franz 431
signals:
432
        void DocChanged();
112 Franz 433
        void EditSt();
107 Franz 434
 
102 Franz 435
protected:
2494 cbradney 436
        void buildGUI();
437
        void connectSignals();
438
        void disconnectSignals();
3868 subik 439
        /*! \brief Loading the preferences (position).
440
        It's in separate method due the 2 constructors. */
441
        void loadPrefs();
442
        /*! \brief Saving the preferences (position). */
443
        void savePrefs();
2494 cbradney 444
 
351 Franz 445
    QHBoxLayout* StoryEd2Layout;
126 Franz 446
        QGridLayout* ButtonGroup1Layout;
447
        QGridLayout* ButtonGroup2Layout;
3868 subik 448
 
2834 cbradney 449
        PrefsManager* prefsManager;
3868 subik 450
        PrefsContext* prefs;
102 Franz 451
};
452
 
453
#endif
454