insilmaril@0
|
1 |
#ifndef MAPEDITOR_H
|
insilmaril@0
|
2 |
#define MAPEDITOR_H
|
insilmaril@0
|
3 |
|
insilmaril@366
|
4 |
#include <QBuffer>
|
insilmaril@408
|
5 |
#include <QGraphicsView>
|
insilmaril@0
|
6 |
|
insilmaril@0
|
7 |
#include "mapcenterobj.h"
|
insilmaril@175
|
8 |
#include "file.h"
|
insilmaril@0
|
9 |
#include "misc.h"
|
insilmaril@366
|
10 |
#include "selection.h"
|
insilmaril@366
|
11 |
#include "settings.h"
|
insilmaril@0
|
12 |
|
insilmaril@408
|
13 |
class Q3NetworkOperation;
|
insilmaril@408
|
14 |
class Q3UrlOperator;
|
insilmaril@119
|
15 |
|
insilmaril@408
|
16 |
class MapEditor : public QGraphicsView, public xmlObj {
|
insilmaril@0
|
17 |
Q_OBJECT
|
insilmaril@0
|
18 |
|
insilmaril@0
|
19 |
public:
|
insilmaril@408
|
20 |
MapEditor(QWidget* parent=0);
|
insilmaril@0
|
21 |
~MapEditor();
|
insilmaril@0
|
22 |
MapCenterObj* getMapCenter();
|
insilmaril@408
|
23 |
QGraphicsScene * getScene();
|
insilmaril@0
|
24 |
void adjustCanvasSize();// adjust canvas size to map and scrollview
|
insilmaril@139
|
25 |
bool isRepositionBlocked(); // block while load or undo
|
insilmaril@0
|
26 |
|
insilmaril@0
|
27 |
private:
|
insilmaril@295
|
28 |
QString getName(LinkableMapObj*); // Get e.g. heading or filename
|
insilmaril@0
|
29 |
void makeTmpDirs(); // create temporary directories
|
insilmaril@408
|
30 |
QString saveToDir(const QString&,const QString &,bool, const QPointF &,LinkableMapObj*);
|
insilmaril@395
|
31 |
void saveStateChangingPart (LinkableMapObj *, LinkableMapObj *, const QString &, const QString &);
|
insilmaril@393
|
32 |
void saveStateRemovingPart (LinkableMapObj *, const QString &);
|
insilmaril@366
|
33 |
void saveState(LinkableMapObj *, const QString &, LinkableMapObj *, const QString &, const QString &);
|
insilmaril@366
|
34 |
void saveState(const QString &, const QString &, const QString &, const QString &, const QString &);
|
insilmaril@366
|
35 |
void saveState(const SaveMode&, const QString &, const QString &, const QString &, const QString &, const QString &, LinkableMapObj *);
|
insilmaril@393
|
36 |
public:
|
insilmaril@106
|
37 |
void parseAtom(const QString &);
|
insilmaril@393
|
38 |
private:
|
insilmaril@395
|
39 |
void addFloatImageInt(const QPixmap &img);
|
insilmaril@119
|
40 |
|
insilmaril@119
|
41 |
private slots:
|
insilmaril@408
|
42 |
void fetchImage(const QString &img);
|
insilmaril@408
|
43 |
void imageDataFetched(const QByteArray &, Q3NetworkOperation *);
|
insilmaril@408
|
44 |
void imageDataFinished(Q3NetworkOperation *);
|
insilmaril@0
|
45 |
|
insilmaril@0
|
46 |
public:
|
insilmaril@0
|
47 |
bool isDefault(); // false, if map was changed once
|
insilmaril@0
|
48 |
bool isUnsaved(); // save necessary
|
insilmaril@0
|
49 |
bool hasChanged(); // undo possible
|
insilmaril@0
|
50 |
void setChanged(); // called from NoteEditor via LMO
|
insilmaril@0
|
51 |
void closeMap();
|
insilmaril@0
|
52 |
void setFilePath (QString);
|
insilmaril@0
|
53 |
void setFilePath (QString,QString);
|
insilmaril@0
|
54 |
QString getFilePath (); // Full path e.g. "/home/tux/map.xml"
|
insilmaril@0
|
55 |
QString getFileName (); // e.g. "map.xml"
|
insilmaril@0
|
56 |
QString getMapName (); // e.g. "map"
|
insilmaril@0
|
57 |
QString getDestPath (); // e.g. "/home/tux/map.vym"
|
insilmaril@205
|
58 |
ErrorCode load (QString, LoadMode ); // newmap, import/replace selection
|
insilmaril@163
|
59 |
public:
|
insilmaril@0
|
60 |
int save(const SaveMode &); // Save map
|
insilmaril@0
|
61 |
void setZipped(bool); // save map zipped
|
insilmaril@0
|
62 |
bool saveZipped(); // 1 if file will be saved zipped
|
insilmaril@0
|
63 |
void print(); // print canvas
|
insilmaril@408
|
64 |
void setAntiAlias (bool);
|
insilmaril@408
|
65 |
void setSmoothPixmap(bool);
|
insilmaril@0
|
66 |
private:
|
insilmaril@0
|
67 |
QPixmap getPixmap();
|
insilmaril@260
|
68 |
void setHideTmpMode (HideTmpMode); // temporary hide stuff
|
insilmaril@260
|
69 |
HideTmpMode getHideTmpMode(); // temporary hide stuff
|
insilmaril@0
|
70 |
public:
|
insilmaril@260
|
71 |
void setExportMode (bool); // temporary hide stuff during export
|
insilmaril@366
|
72 |
void exportImage (QString fn); // export as PNG
|
insilmaril@366
|
73 |
void exportImage (QString fn, QString); // export in given format
|
insilmaril@185
|
74 |
void exportOOPresentation(const QString &,const QString &);
|
insilmaril@0
|
75 |
void exportXML(const QString&); // export to directory
|
insilmaril@0
|
76 |
void clear(); // clear map
|
insilmaril@106
|
77 |
void copy(); // copy branch to clipboard
|
insilmaril@163
|
78 |
void redo(); // redo last action
|
insilmaril@390
|
79 |
bool isRedoAvailable();
|
insilmaril@0
|
80 |
void undo(); // undo last action
|
insilmaril@390
|
81 |
bool isUndoAvailable();
|
insilmaril@404
|
82 |
void gotoHistoryStep (int);// goto a step in history
|
insilmaril@0
|
83 |
private:
|
insilmaril@394
|
84 |
void addMapReplaceInt(const QString & undoSel, const QString & path);
|
insilmaril@394
|
85 |
void addMapInsertInt (const QString & path, int pos);
|
insilmaril@166
|
86 |
void pasteNoSave(); // paste clipboard to branch
|
insilmaril@0
|
87 |
void cutNoSave(); // cut to clipboard
|
insilmaril@0
|
88 |
public:
|
insilmaril@0
|
89 |
void paste(); // paste clipboard to branch and backup
|
insilmaril@0
|
90 |
void cut(); // cut to clipboard and backup
|
insilmaril@393
|
91 |
void move (const int &x, const int &y);
|
insilmaril@393
|
92 |
void moveRel (const int &x, const int &y);
|
insilmaril@0
|
93 |
void moveBranchUp();
|
insilmaril@0
|
94 |
void moveBranchDown();
|
insilmaril@393
|
95 |
QString getHeading (bool &ok,QPoint &p); // Get heading, ok if selection is branch
|
insilmaril@366
|
96 |
void setHeading(const QString &);
|
insilmaril@106
|
97 |
private:
|
insilmaril@366
|
98 |
void setHeadingInt(const QString &);
|
insilmaril@366
|
99 |
void setURLInt(const QString &); // Just set the URL for selection
|
insilmaril@366
|
100 |
void setVymLinkInt(const QString &); // Set vymLink for selection
|
insilmaril@366
|
101 |
BranchObj* addNewBranchInt(int); // pos allows to add above/below selection
|
insilmaril@106
|
102 |
public:
|
insilmaril@394
|
103 |
BranchObj* addNewBranch(int); // pos allows to add above/below selection
|
insilmaril@394
|
104 |
BranchObj* addNewBranchBefore(); // insert and make selection its
|
insilmaril@0
|
105 |
void deleteSelection();
|
insilmaril@0
|
106 |
LinkableMapObj* getSelection(); // returns selection
|
insilmaril@0
|
107 |
void unselect(); // before changing current noteedit
|
insilmaril@0
|
108 |
void reselect(); // after changing current noteedit
|
insilmaril@366
|
109 |
bool select(const QString &); // Select by string
|
insilmaril@366
|
110 |
QString getSelectString();
|
insilmaril@0
|
111 |
private:
|
insilmaril@366
|
112 |
void selectInt(LinkableMapObj*);
|
insilmaril@366
|
113 |
void selectNextBranchInt(); // Increment number of branch
|
insilmaril@366
|
114 |
void selectPrevBranchInt(); // Decrement number of branch
|
insilmaril@0
|
115 |
public:
|
insilmaril@0
|
116 |
void selectUpperBranch();
|
insilmaril@0
|
117 |
void selectLowerBranch();
|
insilmaril@0
|
118 |
void selectLeftBranch();
|
insilmaril@0
|
119 |
void selectRightBranch();
|
insilmaril@0
|
120 |
void selectFirstBranch();
|
insilmaril@0
|
121 |
void selectLastBranch();
|
insilmaril@408
|
122 |
void selectMapBackgroundImage();
|
insilmaril@408
|
123 |
void setMapBackgroundImage(const QString &);
|
insilmaril@398
|
124 |
void selectMapBackgroundColor();
|
insilmaril@398
|
125 |
void setMapBackgroundColor(QColor);
|
insilmaril@398
|
126 |
QColor getMapBackgroundColor();
|
insilmaril@395
|
127 |
QColor getCurrentHeadingColor();
|
insilmaril@395
|
128 |
void colorItem(QColor);
|
insilmaril@395
|
129 |
void colorBranch(QColor);
|
insilmaril@0
|
130 |
void toggleStandardFlag(QString);
|
insilmaril@0
|
131 |
virtual void setViewCenter(); // needed for zooming
|
insilmaril@0
|
132 |
BranchObj* findText(QString,bool); // Find object
|
insilmaril@0
|
133 |
void findReset(); // Reset Find
|
insilmaril@395
|
134 |
void setURL(const QString &); // set the URL
|
insilmaril@0
|
135 |
void editURL(); // edit the URL
|
insilmaril@266
|
136 |
QString getURL(); // returns URL of selection or ""
|
insilmaril@366
|
137 |
QStringList getURLs(); // returns URLs of subtree
|
insilmaril@0
|
138 |
void editHeading2URL(); // copy heading to URL
|
insilmaril@0
|
139 |
void editBugzilla2URL(); // create URL to Bugzilla
|
insilmaril@175
|
140 |
void editFATE2URL(); // create URL to FATE
|
insilmaril@0
|
141 |
void editVymLink(); // edit link to another map
|
insilmaril@0
|
142 |
void deleteVymLink(); // delete link to another map
|
insilmaril@0
|
143 |
QString getVymLink(); // return path to map
|
insilmaril@366
|
144 |
QStringList getVymLinks(); // return paths in subtree
|
insilmaril@395
|
145 |
void setHideExport(bool); // toggle the export flag
|
insilmaril@243
|
146 |
void toggleHideExport(); // toggle the export flag
|
insilmaril@395
|
147 |
void deleteKeepChilds(); // remove but keep childs
|
insilmaril@395
|
148 |
void deleteChilds(); // remove childs
|
insilmaril@0
|
149 |
void editMapInfo(); // dialog to enter author, ...
|
insilmaril@0
|
150 |
void updateActions(); // update e.g. format buttons
|
insilmaril@160
|
151 |
void updateNoteFlag(); // when TextEditor changes
|
insilmaril@398
|
152 |
void setMapAuthor (const QString &);
|
insilmaril@398
|
153 |
void setMapComment(const QString &);
|
insilmaril@398
|
154 |
void setMapLinkStyle (const QString &); // Set style of link
|
insilmaril@398
|
155 |
LinkStyle getMapLinkStyle (); // requested in LMO
|
insilmaril@398
|
156 |
void setMapDefLinkColor(QColor); // default color of links
|
insilmaril@398
|
157 |
void setMapLinkColorHintInt(); // color of links
|
insilmaril@398
|
158 |
void setMapLinkColorHint(LinkColorHint);// color of links
|
insilmaril@398
|
159 |
LinkColorHint getMapLinkColorHint();
|
insilmaril@398
|
160 |
QColor getMapDefLinkColor();
|
insilmaril@398
|
161 |
void setMapDefXLinkColor(QColor);
|
insilmaril@398
|
162 |
QColor getMapDefXLinkColor();
|
insilmaril@398
|
163 |
void setMapDefXLinkWidth (int);
|
insilmaril@398
|
164 |
int getMapDefXLinkWidth();
|
insilmaril@398
|
165 |
void toggleMapLinkColorHint(); // after changing linkStyles
|
insilmaril@398
|
166 |
void selectMapLinkColor();
|
insilmaril@0
|
167 |
void toggleScroll();
|
insilmaril@0
|
168 |
void unScrollAll();
|
insilmaril@0
|
169 |
void loadFloatImage ();
|
insilmaril@366
|
170 |
void saveFloatImage ();
|
insilmaril@0
|
171 |
void setFrame(const FrameType &);
|
insilmaril@175
|
172 |
void setIncludeImagesVer(bool);
|
insilmaril@175
|
173 |
void setIncludeImagesHor(bool);
|
insilmaril@160
|
174 |
void setHideLinkUnselected (bool);
|
insilmaril@160
|
175 |
bool getHideLinkUnselected ();
|
insilmaril@0
|
176 |
private:
|
insilmaril@366
|
177 |
void importDirInt(BranchObj *,QDir);
|
insilmaril@0
|
178 |
public:
|
insilmaril@0
|
179 |
void importDir();
|
insilmaril@95
|
180 |
void followXLink (int);
|
insilmaril@95
|
181 |
void editXLink (int);
|
insilmaril@366
|
182 |
void testFunction(); // just testing new stuff
|
insilmaril@366
|
183 |
// set /mainwindo/showTestMenu=true...
|
insilmaril@0
|
184 |
|
insilmaril@0
|
185 |
protected:
|
insilmaril@0
|
186 |
void ensureSelectionVisible();
|
insilmaril@0
|
187 |
virtual void updateViewCenter(); // needed for zooming
|
insilmaril@408
|
188 |
virtual void contextMenuEvent ( QContextMenuEvent *e );
|
insilmaril@398
|
189 |
virtual void keyPressEvent(QKeyEvent*);
|
insilmaril@398
|
190 |
virtual void keyReleaseEvent(QKeyEvent*);
|
insilmaril@408
|
191 |
virtual void mousePressEvent(QMouseEvent*);
|
insilmaril@408
|
192 |
virtual void mouseReleaseEvent(QMouseEvent*);
|
insilmaril@408
|
193 |
virtual void mouseDoubleClickEvent(QMouseEvent*);
|
insilmaril@408
|
194 |
virtual void mouseMoveEvent(QMouseEvent*);
|
insilmaril@0
|
195 |
|
insilmaril@408
|
196 |
virtual void contentsDragEnterEvent(QDragEnterEvent *event);
|
insilmaril@119
|
197 |
virtual void contentsDropEvent(QDropEvent *event);
|
insilmaril@0
|
198 |
private:
|
insilmaril@408
|
199 |
QGraphicsScene *mapScene;
|
insilmaril@0
|
200 |
MapCenterObj* mapCenter;
|
insilmaril@0
|
201 |
|
insilmaril@0
|
202 |
bool adjustCanvasRequested; // collect requests until end of user event
|
insilmaril@0
|
203 |
BranchObj *editingBO; // entering Text into BO
|
insilmaril@0
|
204 |
|
insilmaril@97
|
205 |
QColor defLinkColor; // default color for links
|
insilmaril@97
|
206 |
QColor defXLinkColor; // default color for xlinks
|
insilmaril@97
|
207 |
int defXLinkWidth; // default width for xlinks
|
insilmaril@0
|
208 |
LinkColorHint linkcolorhint;// use heading color or own color
|
insilmaril@0
|
209 |
LinkStyle linkstyle; // default style for links
|
insilmaril@0
|
210 |
|
insilmaril@398
|
211 |
QCursor HandOpenCursor; // cursor while moving canvas view
|
insilmaril@398
|
212 |
QCursor PickColorCursor; // cursor while picking color
|
insilmaril@398
|
213 |
QCursor CopyCursor; // cursor while picking color
|
insilmaril@398
|
214 |
QCursor XLinkCursor; // cursor while picking color
|
insilmaril@83
|
215 |
bool pickingColor;
|
insilmaril@83
|
216 |
bool drawingLink; // true while creating a link
|
insilmaril@93
|
217 |
bool copyingObj; // true while creating a link
|
insilmaril@95
|
218 |
XLinkObj* tmpXLink;
|
insilmaril@366
|
219 |
|
insilmaril@366
|
220 |
Selection xelection;
|
insilmaril@0
|
221 |
LinkableMapObj* selection; // select a LinkableMapObj
|
insilmaril@0
|
222 |
LinkableMapObj* selectionLast; // last selection
|
insilmaril@0
|
223 |
MapObj* movingObj; // moving a MapObj
|
insilmaril@83
|
224 |
MapObj* linkingObj_src; // part of a link
|
insilmaril@408
|
225 |
QPointF movingObj_orgPos; // org. pos of mouse before move
|
insilmaril@408
|
226 |
QPointF movingObj_orgRelPos; // org. relative pos of mouse before move
|
insilmaril@408
|
227 |
QPointF movingObj_start; // rel. pos of mouse to absPos
|
insilmaril@408
|
228 |
QPointF movingCont_start; // inital pos of moving Content or
|
insilmaril@408
|
229 |
QPointF movingVec; // how far has Content moved
|
insilmaril@408
|
230 |
QPointF movingCenter; // used when zooming
|
insilmaril@0
|
231 |
QPrinter* printer; // Printing
|
insilmaril@0
|
232 |
|
insilmaril@0
|
233 |
bool mapDefault; // Flag if map is untouched
|
insilmaril@0
|
234 |
bool mapChanged; // Flag if undo is possible
|
insilmaril@0
|
235 |
bool mapUnsaved; // Flag if map should be saved
|
insilmaril@0
|
236 |
|
insilmaril@0
|
237 |
bool printFrame; // Print frame around map
|
insilmaril@0
|
238 |
bool printFooter; // Print footer below map
|
insilmaril@0
|
239 |
|
insilmaril@0
|
240 |
bool zipped; // should map be zipped
|
insilmaril@393
|
241 |
static int mapNum; // unique number for Editor
|
insilmaril@0
|
242 |
QString fileName; // short name of file (for tab)
|
insilmaril@0
|
243 |
QString filePath; // path to file which will be saved
|
insilmaril@0
|
244 |
QString fileDir; // dir where file is saved
|
insilmaril@0
|
245 |
QString destPath; // path to .vym file (needed for vymlinks)
|
insilmaril@0
|
246 |
QString mapName; // fileName without ".vym"
|
insilmaril@0
|
247 |
|
insilmaril@377
|
248 |
QString tmpMapDir; // tmp directory with undo history
|
insilmaril@366
|
249 |
QString histPath; // Path to history file
|
insilmaril@381
|
250 |
int stepsTotal; // total number of steps (undos+redos)
|
insilmaril@366
|
251 |
SimpleSettings undoSet; // undo/redo commands
|
insilmaril@139
|
252 |
bool blockReposition; // block while load or undo
|
insilmaril@139
|
253 |
bool blockSaveState; // block while load or undo
|
insilmaril@0
|
254 |
|
insilmaril@0
|
255 |
BranchObj* itFind; // next object in find process
|
insilmaril@0
|
256 |
bool EOFind; // true, if search failed
|
insilmaril@0
|
257 |
|
insilmaril@0
|
258 |
QPoint exportOffset; // set before export, used in save
|
insilmaril@260
|
259 |
HideTmpMode hidemode; // true while exporting to hide some stuff
|
insilmaril@260
|
260 |
|
insilmaril@0
|
261 |
void resizeEvent( QResizeEvent * );
|
insilmaril@119
|
262 |
|
insilmaril@381
|
263 |
Q3UrlOperator *urlOperator;
|
insilmaril@381
|
264 |
QDataStream *imageData;
|
insilmaril@381
|
265 |
QBuffer *imageBuffer;
|
insilmaril@0
|
266 |
};
|
insilmaril@0
|
267 |
#endif
|
insilmaril@0
|
268 |
|