Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
3 paul 1
/***************************************************************************
2
                          scribusview.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
 
18
#ifndef SCRIBUSVIEW_H
19
#define SCRIBUSVIEW_H
20
 
3054 avox 21
#include "styleoptions.h"
22
 
330 Franz 23
#include <vector>
3 paul 24
// include files for QT
25
#include <qscrollview.h>
26
#include <qptrlist.h>
27
#include <qlineedit.h>
28
#include <qscrollbar.h>
3054 avox 29
#if OPTION_USE_QTOOLBUTTON
30
    #include <qtoolbutton.h>
31
#else
32
    #include <qpushbutton.h>
33
#endif
3 paul 34
#include <qpopupmenu.h>
35
#include <qlabel.h>
2966 fschmid 36
#include <qcombobox.h>
3 paul 37
#include <qprogressdialog.h>
160 Franz 38
#include <qspinbox.h>
3 paul 39
// application specific includes
2969 craig 40
#include "scribusapi.h"
3 paul 41
#include "scribusdoc.h"
2355 cbradney 42
#include "scribusstructs.h"
456 fschmid 43
#include "scpainter.h"
3670 cbradney 44
class Page;
3054 avox 45
#include "mspinbox.h"
46
#include "util.h"
838 cbradney 47
class Hruler;
48
class Vruler;
1226 tsoots 49
class UndoManager;
2868 fschmid 50
class RulerMover;
3054 avox 51
//#include "pageselector.h"
52
class PageSelector;
199 Franz 53
 
3054 avox 54
 
3 paul 55
/**
1510 tsoots 56
 * This class provides an incomplete base for your application view.
3 paul 57
 */
58
 
2969 craig 59
class SCRIBUS_API ScribusView : public QScrollView
3 paul 60
{
168 Franz 61
        Q_OBJECT
62
 
63
public:
2834 cbradney 64
    ScribusView(QWidget *parent=0, ScribusDoc *doc=0);
3 paul 65
    ~ScribusView() {};
66
  /** Vergroesserungseingabefeld */
3309 cbradney 67
        MSpinBox* zoomSpinBox; //zoom spinbox at bottom of view
68
        PageSelector* pageSelector; //Page selector at bottom of view
69
        RulerMover *rulerMover; //Widget between the two rulers for dragging the ruler origin
1612 cbradney 70
        Hruler *horizRuler;
71
        Vruler *vertRuler;
3054 avox 72
#if OPTION_USE_QTOOLBUTTON
3274 fschmid 73
        QToolButton *zoomDefaultToolbarButton;
3054 avox 74
        QToolButton *zoomOutToolbarButton;
75
        QToolButton *zoomInToolbarButton;
76
#else
3274 fschmid 77
        QPushButton *zoomDefaultToolbarButton;
2887 fschmid 78
        QPushButton *zoomOutToolbarButton;
79
        QPushButton *zoomInToolbarButton;
3054 avox 80
#endif
3309 cbradney 81
        QComboBox *layerMenu; //Menu for layers at bottom of view
82
        QComboBox *unitSwitcher; //Menu for units at bottom of view
456 fschmid 83
  /** Dokument zu dem die Seite gehoert */
84
        ScribusDoc *Doc;
1065 cbradney 85
        ApplicationPrefs *Prefs;
1298 fschmid 86
        UndoManager *undoManager;
456 fschmid 87
        double OldScale;
88
        double GroupX;
89
        double GroupY;
90
        double GroupW;
91
        double GroupH;
92
        double oldW;
93
        int oldCp;
94
        int Mxp;
95
        int Myp;
96
        int Dxp;
97
        int Dyp;
98
        int HowTo;
99
        int SeRx;
100
        int SeRy;
101
        int GyM;
102
        int GxM;
103
        int ClRe;
104
        int ClRe2;
105
        int SegP1;
106
        int SegP2;
107
        int RotMode;
108
        int DrHY;
109
        int DrVX;
110
        bool EdPoints;
111
        bool Mpressed;
112
        bool Imoved;
113
        bool MoveGY;
114
        bool MoveGX;
115
        bool HaveSelRect;
116
        bool mCG;
117
        bool EditContour;
118
        bool GroupSel;
119
        bool DraggedGroup;
120
        bool DraggedGroupFirst;
121
        bool HanMove;
122
        bool MidButt;
123
        bool updateOn;
124
        bool FirstPoly;
125
        bool Magnify;
126
        bool MoveSym;
127
        bool CursVis;
1874 fschmid 128
        bool previewMode;
456 fschmid 129
        FPoint RCenter;
130
        FPointArray RecordP;
131
        void DrawMasterItems(ScPainter *painter, Page *page, QRect clip);
132
        void DrawPageItems(ScPainter *painter, QRect clip);
133
        void DrawPageMarks(ScPainter *p, Page* page, QRect clip);
2880 fschmid 134
        Page* addPage(int nr, bool mov = true);
456 fschmid 135
        QPtrList<PageItem> SelItem;
705 fschmid 136
        QPtrList<PageItem> linkedFramesToShow;
456 fschmid 137
        QValueList<int> SelNode;
2355 cbradney 138
 
971 fschmid 139
        QValueList<AlignObjs> AObjects;
140
        struct oldPageVar
141
        {
142
                uint newPg;
143
                double oldXO;
144
                double oldYO;
145
        };
456 fschmid 146
  /** Deletes a Page */
168 Franz 147
        void delPage(int Nr);
2880 fschmid 148
        void reformPages(bool moveObjects = true);
2937 cbradney 149
        void updateLayerMenu();
2093 cbradney 150
        void showMasterPage(int nr);
151
        void hideMasterPage();
168 Franz 152
        int CountElements();
1815 fschmid 153
        QImage PageToPixmap(int Nr, int maxGr);
154
        QImage MPageToPixmap(QString name, int maxGr);
168 Franz 155
        void RecalcPictures(ProfilesL *Pr, QProgressBar *dia = 0);
2012 fschmid 156
        void RecalcPicturesRes();
2868 fschmid 157
        void rulerMove(QMouseEvent *m);
158
        void setRuler(QMouseEvent *m);
456 fschmid 159
        void FromHRuler(QMouseEvent *m);
160
        void FromVRuler(QMouseEvent *m);
1115 tsoots 161
        void SetYGuide(QMouseEvent *m, int oldIndex);
162
        void SetXGuide(QMouseEvent *m, int oldIndex);
456 fschmid 163
        bool ApplyGuides(double *x, double *y);
1957 cbradney 164
        void SnapToGuides(PageItem *currItem);
456 fschmid 165
        QPoint ApplyGrid(QPoint in);
166
        FPoint ApplyGridF(FPoint in);
3656 cbradney 167
        //CB moved to pageitem QRect getRedrawBounding(PageItem *currItem);
1957 cbradney 168
        void setRedrawBounding(PageItem *currItem);
456 fschmid 169
        void setGroupRect();
170
        void getGroupRect(double *x, double *y, double *w, double *h);
171
        void getGroupRectScreen(double *x, double *y, double *w, double *h);
172
        void paintGroupRect(bool norm = true);
173
        void PaintSizeRect(QPainter *p, QRect neu);
174
        void ToView(QPainter *p);
1957 cbradney 175
        void RefreshItem(PageItem *currItem);
456 fschmid 176
        bool MoveItem(double newX, double newY, PageItem* ite, bool fromMP = false);
3673 cbradney 177
        void MoveItemI(PageItem* currItem, double newX, double newY, bool redraw = true);
1957 cbradney 178
        void UpdateClip(PageItem *currItem);
179
        void SetPolyClip(PageItem *currItem, int up);
180
        void ConvertClip(PageItem *currItem);
181
        void UpdatePolyClip(PageItem *currItem);
2934 fschmid 182
        void MarkClip(PageItem *currItem, FPointArray cli, bool once = false);
456 fschmid 183
        bool PointOnLine(QPoint Start, QPoint Ende, QRect MArea);
184
        void MirrorPolyH();
185
        void MirrorPolyV();
1510 tsoots 186
        void TransformPoly(int mode, int rot = 1, double scaling = 1.0);
456 fschmid 187
        void Reset1Control();
188
        void ResetControl();
1957 cbradney 189
        void MoveClipPoint(PageItem *currItem, FPoint np);
456 fschmid 190
        bool SizeItem(double newX, double newY, int ite, bool fromMP = false, bool DoUpdateClip = true, bool redraw = true);
3673 cbradney 191
        bool SizeItem(double newX, double newY, PageItem *pi, bool fromMP = false, bool DoUpdateClip = true, bool redraw = true);
456 fschmid 192
        void moveGroup(double x, double y, bool fromMP = false);
1957 cbradney 193
        void MoveRotated(PageItem *currItem, FPoint npv, bool fromMP = false);
456 fschmid 194
        bool MoveSizeItem(FPoint newX, FPoint newY, int ite, bool fromMP = false);
195
        void RotateGroup(double win);
196
        void scaleGroup(double scx, double scy);
197
        void RotateItem(double win, int ite);
1211 tsoots 198
        void RotateItem(double win, PageItem *pi);
1957 cbradney 199
        void AdjustItemSize(PageItem *currItem);
200
        void AdvanceSel(PageItem *currItem, int oldPos, int len, int dir, int expandSel, int state);
201
        void setNewPos(PageItem *currItem, int oldPos, int len, int dir);
202
        void ExpandSel(PageItem *currItem, int dir, int oldPos);
203
        void deselectAll(PageItem *currItem);
456 fschmid 204
        bool slotSetCurs(int x, int y);
205
        void slotDoCurs(bool draw);
1957 cbradney 206
        void HandleCurs(QPainter *p, PageItem *currItem, QRect mpo);
207
        void HandleSizer(QPainter *p, PageItem *currItem, QRect mpo, QMouseEvent *m);
456 fschmid 208
        bool GetItem(PageItem **b, int nr = -1);
209
        void Deselect(bool prop = true);
3657 cbradney 210
        //int OnPage(double x2, double  y2);
211
        //int OnPage(PageItem *currItem);
212
        //void GroupOnPage(PageItem *currItem);
1427 fschmid 213
        void SelectItemNr(int nr, bool draw = true, bool single = false);
214
        void SelectItem(PageItem *pi, bool draw = true, bool single = false);
795 fschmid 215
        void selectPage(QMouseEvent *m);
456 fschmid 216
        bool SeleItem(QMouseEvent *m);
217
        void SetupDraw(int Nr);
1957 cbradney 218
        void updateGradientVectors(PageItem *currItem);
219
        void EmitValues(PageItem *currItem);
220
        void Transform(PageItem *currItem, QPainter *p);
221
        void TransformM(PageItem *currItem, QPainter *p);
456 fschmid 222
        void SetFrameRect();
223
        void SetFrameRounded();
224
        void SetFrameOval();
225
        void insertColor(QString nam, double c, double m, double y, double k);
226
        void ChLineWidth(double w);
227
        void ChLineArt(PenStyle w);
228
        void ChLineJoin(PenJoinStyle w);
229
        void ChLineEnd(PenCapStyle w);
230
        void ChLineSpa(double w);
2309 fschmid 231
        void ChLineSpaMode(int w);
456 fschmid 232
        void ChLocalXY(double x, double y);
233
        void ChLocalSc(double x, double y);
234
        void ItemFont(QString fon);
235
        void ItemPen(QString farbe);
236
        void ItemTextBrush(QString farbe);
237
        void ItemTextBrushS(int sha);
238
        void ItemTextPen(QString farbe);
239
        void ItemTextPenS(int sha);
2230 fschmid 240
        void ItemTextScaleV(int sha);
456 fschmid 241
        void ItemTextScale(int sha);
2234 fschmid 242
        void setItemTextBase(int sha);
2257 fschmid 243
        void setItemTextOutline(int sha);
2247 fschmid 244
        void setItemTextShadow(int shx, int shy);
2262 fschmid 245
        void setItemTextUnderline(int pos, int wid);
2272 fschmid 246
        void setItemTextStrike(int pos, int wid);
456 fschmid 247
        void ItemBrush(QString farbe);
248
        void ItemBrushShade(int sha);
249
        void ItemPenShade(int sha);
250
        void ItemGradFill(int typ);
251
        void chTyStyle(int s);
252
        void SetAbStyle(int s);
1957 cbradney 253
        void chAbStyle(PageItem *currItem, int s);
2382 fschmid 254
        void chKerning(int us);
456 fschmid 255
        void chFSize(int size);
256
        void FlipImageH();
257
        void FlipImageV();
3650 cbradney 258
        //void AdjustPictScale(PageItem *currItem, bool reload = true);
1065 cbradney 259
        void PasteItem(struct CopyPasteBuffer *Buffer, bool loading, bool drag = false);
456 fschmid 260
        void BuildAObj();
261
        void QueryFarben();
238 Franz 262
        void rememberPreviousSettings(int mx=0, int my=0);
1211 tsoots 263
        bool mousePressed();
1254 tsoots 264
        bool groupTransactionStarted();
1263 tsoots 265
        void setGroupTransactionStarted(bool isOn);
2380 cbradney 266
        void setScale(const double newScale);
267
        const double getScale();
2837 fschmid 268
        void adjustCanvas(FPoint minPos, FPoint maxPos);
3 paul 269
 
270
public slots: // Public slots
2199 cbradney 271
        void languageChange();
2380 cbradney 272
        void unitChange();
3274 fschmid 273
  /** Zooms in or out */
168 Franz 274
        void slotDoZoom();
3274 fschmid 275
        void slotZoom100();
276
  /** Zooms in */
238 Franz 277
        void slotZoomIn(int mx=0,int my=0);
3274 fschmid 278
        void slotZoomIn2(int mx=0,int my=0);
238 Franz 279
        void slotZoomOut(int mx=0,int my=0);
280
        void slotZoomOut2(int mx=0,int my=0);
456 fschmid 281
  /** Redraws everything */
168 Franz 282
        void DrawNew();
283
        void setMenTxt(int Seite);
2937 cbradney 284
        void setLayerMenuText(const QString &);
168 Franz 285
        void GotoPa(int Seite);
3 paul 286
        void GotoLa(int l);
168 Franz 287
        void GotoPage(int Seite);
288
        void ChgUnit(int art);
289
        void SetCPo(int x, int y);
3 paul 290
        void SetCCPo(int x, int y);
2260 cbradney 291
        void editExtendedImageProperties();
456 fschmid 292
        void TogglePic();
293
        void UpdatePic();
294
        void FrameToPic();
295
        void ToggleBookmark();
296
        void ToggleAnnotation();
297
        void ToggleLock();
1858 cbradney 298
        void ToggleSizeLock();
456 fschmid 299
        void sentToScrap();
300
        void ToBack();
301
        void ToFront();
302
        void LowerItem();
303
        void RaiseItem();
304
        void ToPicFrame();
305
        void ToPolyFrame();
306
        void ToTextFrame();
307
        void ToBezierFrame();
2026 cbradney 308
        void ToPathText();
309
        void FromPathText();
310
        void UniteObj();
311
        void SplitObj();
456 fschmid 312
        void Bezier2Poly();
313
        void ClearItem();
314
        void DeleteItem();
315
        void PasteToPage();
316
        void TextToPath();
317
        void BlinkCurs();
1155 fschmid 318
        void updatePict(QString name);
319
        void removePict(QString name);
2256 cbradney 320
        void changePreview(int id);
168 Franz 321
 
3 paul 322
private: // Private attributes
456 fschmid 323
        QPopupMenu *pmen3;
2173 fschmid 324
        QPopupMenu *pmenResolution;
168 Franz 325
        bool Ready;
238 Franz 326
        int    oldX;
327
        int    oldY;
1254 tsoots 328
        bool _groupTransactionStarted;
1461 tsoots 329
        bool _isGlobalMode;
2171 fschmid 330
        bool evSpon;
2951 fschmid 331
        bool forceRedraw;
2380 cbradney 332
        double Scale;
1226 tsoots 333
 
3 paul 334
private slots:
168 Franz 335
        void Zval();
336
        void setRulerPos(int x, int y);
1443 tsoots 337
        void selectionChanged();
1461 tsoots 338
        void setObjectUndoMode();
339
        void setGlobalUndoMode();
168 Franz 340
 
3 paul 341
protected: // Protected methods
2171 fschmid 342
        virtual void viewportPaintEvent ( QPaintEvent * p );
456 fschmid 343
        virtual void drawContents(QPainter *p, int clipx, int clipy, int clipw, int cliph);
344
        virtual void leaveEvent(QEvent *);
345
        virtual void contentsDragEnterEvent(QDragEnterEvent *e);
346
        virtual void contentsDragMoveEvent(QDragMoveEvent *e);
347
        virtual void contentsDragLeaveEvent(QDragLeaveEvent *e);
348
        virtual void contentsDropEvent(QDropEvent *e);
349
        virtual void contentsMouseDoubleClickEvent(QMouseEvent *m);
350
        virtual void contentsMouseReleaseEvent(QMouseEvent *m);
351
        virtual void contentsMouseMoveEvent(QMouseEvent *m);
352
        virtual void contentsMousePressEvent(QMouseEvent *m);
3 paul 353
        virtual void contentsWheelEvent ( QWheelEvent *ev );
354
        virtual void setHBarGeometry(QScrollBar &bar, int x, int y, int w, int h);
355
        virtual void setVBarGeometry(QScrollBar &bar, int x, int y, int w, int h);
168 Franz 356
 
3 paul 357
signals:
358
        void changeUN(int);
359
        void changeLA(int);
456 fschmid 360
        void ItemPos(double, double);
361
        void HaveSel(int);
362
        void ItemGeom(double, double);
363
        void DocChanged();
364
        void PolyOpen();
365
        void PStatus(int, uint);
366
        void SetAngle(double);
367
        void SetSizeValue(double);
368
        void SetLineArt(PenStyle, PenCapStyle, PenJoinStyle);
369
        void SetLocalValues(double, double, double, double);
370
        void ItemFarben(QString, QString, int, int);
371
        void ItemGradient(int);
372
        void ItemTrans(double, double);
373
        void ItemTextAttr(double);
2382 fschmid 374
        void ItemTextUSval(int);
456 fschmid 375
        void ItemTextCols(int, double);
376
        void SetDistValues(double, double, double, double);
377
        void ItemTextAbs(int);
378
        void ItemTextFont(QString);
379
        void ItemTextSize(int);
380
        void ItemTextSca(int);
2230 fschmid 381
        void ItemTextScaV(int);
2234 fschmid 382
        void ItemTextBase(int);
2257 fschmid 383
        void ItemTextOutline(int);
2247 fschmid 384
        void ItemTextShadow(int, int);
2262 fschmid 385
        void ItemTextUnderline(int, int);
2272 fschmid 386
        void ItemTextStrike(int, int);
456 fschmid 387
        void ItemTextFarben(QString, QString, int, int);
388
        void ItemTextStil(int);
389
        void ItemRadius(double);
390
        void HasTextSel();
391
        void HasNoTextSel();
392
        void MVals(double, double, double, double, double, double, int);
393
        void PaintingDone();
394
        void LoadPic();
395
        void AppendText();
396
        void DoGroup();
1858 cbradney 397
        //void DoUnGroup();
456 fschmid 398
        void CutItem();
399
        void CopyItem();
400
        void Amode(int);
401
        void AddBM(PageItem *);
402
        void DelBM(PageItem *);
403
        void NewBMNr(int, int);
404
        void ChBMText(PageItem *);
405
        void ToScrap(QString);
406
        void LoadElem(QString, int, int, bool, bool, ScribusDoc *, ScribusView *);
407
        void LevelChanged(uint);
408
        void RasterPic(bool);
409
        void HavePoint(bool, bool);
410
        void ClipPo(double, double);
411
        void AnnotProps();
412
        void EndNodeEdit();
413
        void Hrule(int);
414
        void Vrule(int);
415
        void EditGuides();
416
        void MousePos(double, double);
1155 fschmid 417
        void callGimp();
1491 fschmid 418
        void AddObj(PageItem *);
419
        void UpdtObj(uint, uint);
2626 cbradney 420
        void signalGuideInformation(int, double);
3 paul 421
};
422
#endif