Subversion Repositories Scribus

Rev

Rev 1822 | Rev 1858 | 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
 
330 Franz 21
#include <vector>
3 paul 22
// include files for QT
23
#include <qscrollview.h>
24
#include <qptrlist.h>
25
#include <qlineedit.h>
26
#include <qscrollbar.h>
27
#include <qpushbutton.h>
28
#include <qpopupmenu.h>
29
#include <qlabel.h>
30
#include <qtoolbutton.h>
31
#include <qprogressdialog.h>
160 Franz 32
#include <qspinbox.h>
3 paul 33
// application specific includes
34
#include "scribusdoc.h"
456 fschmid 35
#include "scpainter.h"
3 paul 36
#include "page.h"
838 cbradney 37
class Hruler;
38
class Vruler;
1226 tsoots 39
class UndoManager;
68 Franz 40
#include "mspinbox.h"
199 Franz 41
#include "pageselector.h"
42
 
3 paul 43
extern QPixmap loadIcon(QString nam);
44
 
45
/**
1510 tsoots 46
 * This class provides an incomplete base for your application view.
3 paul 47
 */
48
 
49
class ScribusView : public QScrollView
50
{
168 Franz 51
        Q_OBJECT
52
 
53
public:
1065 cbradney 54
    ScribusView(QWidget *parent=0, ScribusDoc *doc=0, ApplicationPrefs *prefs=0);
3 paul 55
    ~ScribusView() {};
56
  /** Vergroesserungseingabefeld */
68 Franz 57
        MSpinBox* LE;
199 Franz 58
        PageSelector* PGS;
168 Franz 59
        QToolButton *UN;
1612 cbradney 60
        Hruler *horizRuler;
61
        Vruler *vertRuler;
456 fschmid 62
  /** Dokument zu dem die Seite gehoert */
63
        ScribusDoc *Doc;
1065 cbradney 64
        ApplicationPrefs *Prefs;
1298 fschmid 65
        UndoManager *undoManager;
456 fschmid 66
        double Scale;
67
        double OldScale;
68
        double GroupX;
69
        double GroupY;
70
        double GroupW;
71
        double GroupH;
72
        double oldW;
73
        int oldCp;
74
        int Mxp;
75
        int Myp;
76
        int Dxp;
77
        int Dyp;
78
        int HowTo;
79
        int SeRx;
80
        int SeRy;
81
        int GyM;
82
        int GxM;
83
        int ClRe;
84
        int ClRe2;
85
        int SegP1;
86
        int SegP2;
87
        int RotMode;
88
        int DrHY;
89
        int DrVX;
90
        bool EdPoints;
91
        bool Mpressed;
92
        bool Imoved;
93
        bool MoveGY;
94
        bool MoveGX;
95
        bool HaveSelRect;
96
        bool mCG;
97
        bool EditContour;
98
        bool GroupSel;
99
        bool DraggedGroup;
100
        bool DraggedGroupFirst;
101
        bool HanMove;
102
        bool MidButt;
103
        bool updateOn;
104
        bool FirstPoly;
105
        bool Magnify;
106
        bool MoveSym;
107
        bool CursVis;
108
        FPoint RCenter;
109
        FPointArray RecordP;
110
        void DrawMasterItems(ScPainter *painter, Page *page, QRect clip);
111
        void DrawPageItems(ScPainter *painter, QRect clip);
112
        void DrawPageMarks(ScPainter *p, Page* page, QRect clip);
168 Franz 113
        Page* addPage(int nr);
456 fschmid 114
        QPtrList<PageItem> SelItem;
705 fschmid 115
        QPtrList<PageItem> linkedFramesToShow;
456 fschmid 116
        QValueList<int> SelNode;
1510 tsoots 117
        struct AlignObjs
118
        {
971 fschmid 119
                int ObjNr;
120
                int Group;
121
                double x1;
122
                double y1;
123
                double x2;
124
                double y2;
125
                QPtrList<PageItem> Objects;
126
        };
127
        QValueList<AlignObjs> AObjects;
128
        struct oldPageVar
129
        {
130
                uint newPg;
131
                double oldXO;
132
                double oldYO;
133
        };
456 fschmid 134
  /** Deletes a Page */
168 Franz 135
        void delPage(int Nr);
3 paul 136
  /** verschiebt Seiten */
168 Franz 137
        void movePage(int from, int to, int ziel, int art);
138
        void reformPages();
3 paul 139
        void LaMenu();
168 Franz 140
        void ShowTemplate(int nr);
141
        void HideTemplate();
142
        int CountElements();
1815 fschmid 143
        QImage PageToPixmap(int Nr, int maxGr);
144
        QImage MPageToPixmap(QString name, int maxGr);
168 Franz 145
        void RecalcPictures(ProfilesL *Pr, QProgressBar *dia = 0);
456 fschmid 146
        void FromHRuler(QMouseEvent *m);
147
        void FromVRuler(QMouseEvent *m);
1115 tsoots 148
        void SetYGuide(QMouseEvent *m, int oldIndex);
149
        void SetXGuide(QMouseEvent *m, int oldIndex);
456 fschmid 150
        bool ApplyGuides(double *x, double *y);
151
        void SnapToGuides(PageItem* b);
152
        QPoint ApplyGrid(QPoint in);
153
        FPoint ApplyGridF(FPoint in);
154
        FPoint transformPointI(FPoint in, double dx, double dy, double rot, double sx, double sy);
155
        FPoint transformPoint(FPoint in, double dx, double dy, double rot, double sx, double sy);
156
        void getBoundingRect(PageItem *b, double *x1, double *y1, double *x2, double *y2);
157
        QRect getRedrawBounding(PageItem* b);
158
        void setRedrawBounding(PageItem* b);
159
        void setGroupRect();
160
        void getGroupRect(double *x, double *y, double *w, double *h);
161
        void getGroupRectScreen(double *x, double *y, double *w, double *h);
162
        void paintGroupRect(bool norm = true);
163
        void PaintSizeRect(QPainter *p, QRect neu);
164
        void ToView(QPainter *p);
165
        void RefreshItem(PageItem *b);
166
        bool MoveItem(double newX, double newY, PageItem* ite, bool fromMP = false);
925 fschmid 167
        void MoveItemI(double newX, double newY, int ite, bool redraw = true);
456 fschmid 168
        void UpdateClip(PageItem* b);
631 fschmid 169
        void SetPolyClip(PageItem *b, int up);
456 fschmid 170
        void ConvertClip(PageItem *b);
171
        void UpdatePolyClip(PageItem *b);
172
        void MarkClip(PageItem *b);
173
        bool PointOnLine(QPoint Start, QPoint Ende, QRect MArea);
174
        void MirrorPolyH();
175
        void MirrorPolyV();
1510 tsoots 176
        void TransformPoly(int mode, int rot = 1, double scaling = 1.0);
456 fschmid 177
        void Reset1Control();
178
        void ResetControl();
179
        void MoveClipPoint(PageItem *b, FPoint np);
180
        bool SizeItem(double newX, double newY, int ite, bool fromMP = false, bool DoUpdateClip = true, bool redraw = true);
1206 tsoots 181
        bool SizeItem(double newX, double newY, PageItem *pi, bool fromMP, bool DoUpdateClip, bool redraw);
456 fschmid 182
        void moveGroup(double x, double y, bool fromMP = false);
183
        void MoveRotated(PageItem *b, FPoint npv, bool fromMP = false);
184
        bool MoveSizeItem(FPoint newX, FPoint newY, int ite, bool fromMP = false);
185
        void RotateGroup(double win);
186
        void scaleGroup(double scx, double scy);
187
        void RotateItem(double win, int ite);
1211 tsoots 188
        void RotateItem(double win, PageItem *pi);
456 fschmid 189
        void AdjustItemSize(PageItem *b);
190
        void AdvanceSel(PageItem *b, int oldPos, int len, int dir, int expandSel, int state);
191
        void setNewPos(PageItem *b, int oldPos, int len, int dir);
192
        void ExpandSel(PageItem *b, int dir, int oldPos);
193
        void deselectAll(PageItem *b);
194
        bool slotSetCurs(int x, int y);
195
        void slotDoCurs(bool draw);
196
        void HandleCurs(QPainter *p, PageItem *b, QRect mpo);
795 fschmid 197
        void HandleSizer(QPainter *p, PageItem *b, QRect mpo, QMouseEvent *m);
456 fschmid 198
        bool GetItem(PageItem **b, int nr = -1);
199
        void Deselect(bool prop = true);
200
        int OnPage(double x2, double  y2);
201
        int OnPage(PageItem *b);
202
        void GroupOnPage(PageItem* b);
1427 fschmid 203
        void SelectItemNr(int nr, bool draw = true, bool single = false);
204
        void SelectItem(PageItem *pi, bool draw = true, bool single = false);
795 fschmid 205
        void selectPage(QMouseEvent *m);
456 fschmid 206
        bool SeleItem(QMouseEvent *m);
207
        void SetupDraw(int Nr);
208
        void updateGradientVectors(PageItem *b);
209
        void EmitValues(PageItem *b);
210
        void Transform(PageItem *b, QPainter *p);
211
        void TransformM(PageItem *b, QPainter *p);
212
        void SetFrameShape(PageItem *b, int count, double *vals);
213
        void SetRectFrame(PageItem *b);
214
        void SetOvalFrame(PageItem *b);
215
        void SetFrameRound(PageItem *b);
216
        void SetFrameRect();
217
        void SetFrameRounded();
218
        void SetFrameOval();
219
        int PaintEllipse(double x, double y, double b, double h, double w, QString fill, QString outline);
220
        int PaintPict(double x, double y, double b, double h);
221
        int PaintRect(double x, double y, double b, double h, double w, QString fill, QString outline);
222
        int PaintLine(double x, double y, double b, double h, double w, QString outline);
223
        int PaintText(double x, double y, double b, double h, double w, QString outline);
224
        int PaintPoly(double x, double y, double b, double h, double w, QString fill, QString outline);
225
        int PaintPolyLine(double x, double y, double b, double h, double w, QString fill, QString outline);
226
        void insertColor(QString nam, double c, double m, double y, double k);
227
        void ChLineWidth(double w);
228
        void ChLineArt(PenStyle w);
229
        void ChLineJoin(PenJoinStyle w);
230
        void ChLineEnd(PenCapStyle w);
231
        void ChLineSpa(double w);
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);
240
        void ItemTextScale(int sha);
241
        void ItemBrush(QString farbe);
242
        void ItemBrushShade(int sha);
243
        void ItemPenShade(int sha);
244
        void ItemGradFill(int typ);
245
        void chTyStyle(int s);
246
        void SetAbStyle(int s);
247
        void chAbStyle(PageItem *b, int s);
248
        void chKerning(double us);
249
        void chFSize(int size);
250
        void FlipImageH();
251
        void FlipImageV();
1151 fschmid 252
        void LoadPict(QString fn, int ItNr, bool reload = false);
1832 tsoots 253
        void loadPict(QString fn, PageItem *pageItem, bool reload = false);
456 fschmid 254
        void AdjustPreview(PageItem *b, bool reload = true);
255
        void AdjustPictScale(PageItem *b, bool reload = true);
1065 cbradney 256
        void PasteItem(struct CopyPasteBuffer *Buffer, bool loading, bool drag = false);
456 fschmid 257
        void BuildAObj();
258
        void doAlign(QValueList<uint> &Object, int moveCode, double xp, double xdisp, double ydisp, double minx = 0.0);
259
        void AlignObj(bool xa, bool ya, bool Vth, bool Vtv, double xdisp, double ydisp, int xart, int yart);
260
        void QueryFarben();
261
        void ToPathText();
262
        void FromPathText();
263
        void UniteObj();
264
        void SplitObj();
238 Franz 265
        void rememberPreviousSettings(int mx=0, int my=0);
1211 tsoots 266
        bool mousePressed();
1254 tsoots 267
        bool groupTransactionStarted();
1263 tsoots 268
        void setGroupTransactionStarted(bool isOn);
3 paul 269
 
270
public slots: // Public slots
1151 fschmid 271
  /** Fhrt die Vergr�erung/Verkleinerung aus; */
168 Franz 272
        void slotDoZoom();
1151 fschmid 273
  /** Vergr�ert die Ansicht */
238 Franz 274
        void slotZoomIn(int mx=0,int my=0);
3 paul 275
  /** Verkleinert die Ansicht */
238 Franz 276
        void slotZoomOut(int mx=0,int my=0);
1151 fschmid 277
  /** Vergr�ert die Ansicht */
238 Franz 278
        void slotZoomIn2(int mx=0,int my=0);
3 paul 279
  /** Verkleinert die Ansicht */
238 Franz 280
        void slotZoomOut2(int mx=0,int my=0);
456 fschmid 281
  /** Redraws everything */
168 Franz 282
        void DrawNew();
283
        void setMenTxt(int Seite);
3 paul 284
        void setLayMenTxt(int l);
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);
1624 fschmid 291
        void useEmbeddedPath();
456 fschmid 292
        void TogglePic();
293
        void UpdatePic();
294
        void FrameToPic();
295
        void ToggleBookmark();
296
        void ToggleAnnotation();
297
        void ToggleLock();
298
        void ToggleResize();
299
        void sentToScrap();
300
        void sentToLayer(int id);
301
        void ToBack();
302
        void ToFront();
303
        void LowerItem();
304
        void RaiseItem();
305
        void ToPicFrame();
306
        void ToPolyFrame();
307
        void ToTextFrame();
308
        void ToBezierFrame();
309
        void Bezier2Poly();
310
        void ClearItem();
311
        void DeleteItem();
312
        void PasteToPage();
313
        void TextToPath();
314
        void BlinkCurs();
1155 fschmid 315
        void updatePict(QString name);
316
        void removePict(QString name);
168 Franz 317
 
3 paul 318
private: // Private attributes
1822 cbradney 319
        QPushButton *zoomOutToolbarButton;
320
        QPushButton *zoomInToolbarButton;
168 Franz 321
        QPushButton *LY;
322
        QPopupMenu *Unitmen;
3 paul 323
        QPopupMenu *Laymen;
456 fschmid 324
        QPopupMenu *pmen3;
168 Franz 325
        bool Ready;
238 Franz 326
        int    oldX;
327
        int    oldY;
1254 tsoots 328
        bool _groupTransactionStarted;
1341 tsoots 329
        bool _itemCreationTransactionStarted;
1461 tsoots 330
        bool _isGlobalMode;
1226 tsoots 331
 
3 paul 332
private slots:
168 Franz 333
        void Zval();
334
        void setRulerPos(int x, int y);
1443 tsoots 335
        void selectionChanged();
1461 tsoots 336
        void setObjectUndoMode();
337
        void setGlobalUndoMode();
168 Franz 338
 
3 paul 339
protected: // Protected methods
456 fschmid 340
        virtual void drawContents(QPainter *p, int clipx, int clipy, int clipw, int cliph);
341
        virtual void leaveEvent(QEvent *);
342
        virtual void contentsDragEnterEvent(QDragEnterEvent *e);
343
        virtual void contentsDragMoveEvent(QDragMoveEvent *e);
344
        virtual void contentsDragLeaveEvent(QDragLeaveEvent *e);
345
        virtual void contentsDropEvent(QDropEvent *e);
346
        virtual void contentsMouseDoubleClickEvent(QMouseEvent *m);
347
        virtual void contentsMouseReleaseEvent(QMouseEvent *m);
348
        virtual void contentsMouseMoveEvent(QMouseEvent *m);
349
        virtual void contentsMousePressEvent(QMouseEvent *m);
3 paul 350
        virtual void contentsWheelEvent ( QWheelEvent *ev );
351
        virtual void setHBarGeometry(QScrollBar &bar, int x, int y, int w, int h);
352
        virtual void setVBarGeometry(QScrollBar &bar, int x, int y, int w, int h);
168 Franz 353
 
3 paul 354
signals:
355
        void changeUN(int);
356
        void changeLA(int);
456 fschmid 357
        void ItemPos(double, double);
358
        void HaveSel(int);
359
        void ItemGeom(double, double);
360
        void DocChanged();
361
        void PolyOpen();
362
        void PStatus(int, uint);
363
        void SetAngle(double);
364
        void SetSizeValue(double);
365
        void SetLineArt(PenStyle, PenCapStyle, PenJoinStyle);
366
        void SetLocalValues(double, double, double, double);
367
        void ItemFarben(QString, QString, int, int);
368
        void ItemGradient(int);
369
        void ItemTrans(double, double);
370
        void ItemTextAttr(double);
371
        void ItemTextUSval(double);
372
        void ItemTextCols(int, double);
373
        void SetDistValues(double, double, double, double);
374
        void ItemTextAbs(int);
375
        void ItemTextFont(QString);
376
        void ItemTextSize(int);
377
        void ItemTextSca(int);
378
        void ItemTextFarben(QString, QString, int, int);
379
        void ItemTextStil(int);
380
        void ItemRadius(double);
381
        void HasTextSel();
382
        void HasNoTextSel();
383
        void MVals(double, double, double, double, double, double, int);
384
        void PaintingDone();
385
        void LoadPic();
386
        void AppendText();
387
        void EditText();
388
        void DoGroup();
389
        void DoUnGroup();
390
        void CutItem();
391
        void CopyItem();
392
        void Amode(int);
393
        void AddBM(PageItem *);
394
        void DelBM(PageItem *);
395
        void NewBMNr(int, int);
396
        void ChBMText(PageItem *);
397
        void ToScrap(QString);
398
        void LoadElem(QString, int, int, bool, bool, ScribusDoc *, ScribusView *);
399
        void LevelChanged(uint);
400
        void RasterPic(bool);
401
        void HavePoint(bool, bool);
402
        void ClipPo(double, double);
403
        void AnnotProps();
404
        void EndNodeEdit();
405
        void Hrule(int);
406
        void Vrule(int);
407
        void EditGuides();
408
        void MousePos(double, double);
1155 fschmid 409
        void callGimp();
1491 fschmid 410
        void AddObj(PageItem *);
411
        void UpdtObj(uint, uint);
3 paul 412
};
413
#endif