insilmaril@0
|
1 |
#ifndef MAPEDITOR_H
|
insilmaril@0
|
2 |
#define MAPEDITOR_H
|
insilmaril@0
|
3 |
|
insilmaril@0
|
4 |
#include <qcanvas.h>
|
insilmaril@0
|
5 |
#include <qlineedit.h>
|
insilmaril@0
|
6 |
#include <qcursor.h>
|
insilmaril@0
|
7 |
#include <qfiledialog.h>
|
insilmaril@0
|
8 |
#include <qevent.h>
|
insilmaril@0
|
9 |
#include <qprocess.h>
|
insilmaril@119
|
10 |
#include <qbuffer.h>
|
insilmaril@0
|
11 |
|
insilmaril@0
|
12 |
#include "mapcenterobj.h"
|
insilmaril@0
|
13 |
#include "misc.h"
|
insilmaril@0
|
14 |
|
insilmaril@119
|
15 |
class QNetworkOperation;
|
insilmaril@119
|
16 |
class QUrlOperator;
|
insilmaril@119
|
17 |
|
insilmaril@0
|
18 |
class MapEditor : public QCanvasView , public xmlObj {
|
insilmaril@0
|
19 |
Q_OBJECT
|
insilmaril@0
|
20 |
|
insilmaril@0
|
21 |
public:
|
insilmaril@0
|
22 |
MapEditor(QWidget* parent=0, bool interactive=false, const char* name=0, WFlags f=0);
|
insilmaril@0
|
23 |
~MapEditor();
|
insilmaril@0
|
24 |
QColor color();
|
insilmaril@0
|
25 |
QColor backgroundColor();
|
insilmaril@0
|
26 |
MapCenterObj* getMapCenter();
|
insilmaril@0
|
27 |
QCanvas* getCanvas();
|
insilmaril@0
|
28 |
void adjustCanvasSize();// adjust canvas size to map and scrollview
|
insilmaril@0
|
29 |
bool blockReposition(); // block while load or undo
|
insilmaril@0
|
30 |
|
insilmaril@0
|
31 |
private:
|
insilmaril@0
|
32 |
void makeTmpDirs(); // create temporary directories
|
insilmaril@0
|
33 |
void delTmpDirs(); // delete temporary directories
|
insilmaril@0
|
34 |
void makeSubDirs(const QString&);
|
insilmaril@0
|
35 |
// create subdirs in dir
|
insilmaril@106
|
36 |
QString saveToDir(const QString&,const QString &,bool, const QPoint &,LinkableMapObj*);
|
insilmaril@0
|
37 |
void saveState(); // save actual state to backup
|
insilmaril@106
|
38 |
void saveState(LinkableMapObj *);
|
insilmaril@106
|
39 |
void saveState(const QString &);
|
insilmaril@105
|
40 |
void saveState(const SaveMode&, LinkableMapObj *, const QString &);
|
insilmaril@106
|
41 |
void parseAtom(const QString &);
|
insilmaril@0
|
42 |
|
insilmaril@119
|
43 |
void addFloatImage(const QPixmap &img);
|
insilmaril@119
|
44 |
|
insilmaril@119
|
45 |
private slots:
|
insilmaril@0
|
46 |
void finishedLineEditNoSave();
|
insilmaril@119
|
47 |
void fetchImage(const QString &img);
|
insilmaril@119
|
48 |
void imageDataFetched(const QByteArray &, QNetworkOperation *);
|
insilmaril@119
|
49 |
void imageDataFinished(QNetworkOperation *);
|
insilmaril@0
|
50 |
|
insilmaril@0
|
51 |
public:
|
insilmaril@0
|
52 |
bool isDefault(); // false, if map was changed once
|
insilmaril@0
|
53 |
bool isUnsaved(); // save necessary
|
insilmaril@0
|
54 |
bool hasChanged(); // undo possible
|
insilmaril@0
|
55 |
void setChanged(); // called from NoteEditor via LMO
|
insilmaril@0
|
56 |
void closeMap();
|
insilmaril@0
|
57 |
void setFilePath (QString);
|
insilmaril@0
|
58 |
void setFilePath (QString,QString);
|
insilmaril@0
|
59 |
QString getFilePath (); // Full path e.g. "/home/tux/map.xml"
|
insilmaril@0
|
60 |
QString getFileName (); // e.g. "map.xml"
|
insilmaril@0
|
61 |
QString getMapName (); // e.g. "map"
|
insilmaril@0
|
62 |
QString getDestPath (); // e.g. "/home/tux/map.vym"
|
insilmaril@0
|
63 |
int load (QString&, const LoadMode &); // newmap, import/replace selection
|
insilmaril@0
|
64 |
int save(const SaveMode &); // Save map
|
insilmaril@0
|
65 |
void setZipped(bool); // save map zipped
|
insilmaril@0
|
66 |
bool saveZipped(); // 1 if file will be saved zipped
|
insilmaril@0
|
67 |
void print(); // print canvas
|
insilmaril@0
|
68 |
private:
|
insilmaril@0
|
69 |
QPixmap getPixmap();
|
insilmaril@0
|
70 |
public:
|
insilmaril@0
|
71 |
void exportImage (QString fn); // export as PNG
|
insilmaril@0
|
72 |
void exportImage (QString fn, int); // export in given format
|
insilmaril@0
|
73 |
void exportASCII();
|
insilmaril@0
|
74 |
void exportXML(const QString&); // export to directory
|
insilmaril@0
|
75 |
void clear(); // clear map
|
insilmaril@106
|
76 |
void copy(); // copy branch to clipboard
|
insilmaril@0
|
77 |
void undo(); // undo last action
|
insilmaril@0
|
78 |
private:
|
insilmaril@106
|
79 |
void undoXML(const QString &); // undo by replacing with saved data
|
insilmaril@0
|
80 |
LinkableMapObj* pasteNoSave(); // paste clipboard to branch
|
insilmaril@0
|
81 |
void cutNoSave(); // cut to clipboard
|
insilmaril@0
|
82 |
public:
|
insilmaril@0
|
83 |
void paste(); // paste clipboard to branch and backup
|
insilmaril@0
|
84 |
void cut(); // cut to clipboard and backup
|
insilmaril@0
|
85 |
void moveBranchUp();
|
insilmaril@0
|
86 |
void moveBranchDown();
|
insilmaril@106
|
87 |
void editHeading(); // Start editing heading
|
insilmaril@106
|
88 |
private:
|
insilmaril@106
|
89 |
void setHeading(const QString &); // Just set the heading for selection
|
insilmaril@106
|
90 |
public:
|
insilmaril@0
|
91 |
void addNewBranch(int); // pos allows to add above/below selection
|
insilmaril@98
|
92 |
void addNewBranchHere(); // insert and make selection its
|
insilmaril@0
|
93 |
void deleteSelection();
|
insilmaril@0
|
94 |
LinkableMapObj* getSelection(); // returns selection
|
insilmaril@83
|
95 |
bool select(const QString &); // Select
|
insilmaril@0
|
96 |
void unselect(); // before changing current noteedit
|
insilmaril@0
|
97 |
void reselect(); // after changing current noteedit
|
insilmaril@0
|
98 |
private:
|
insilmaril@0
|
99 |
void selectNextBranch(); // Increment number of branch
|
insilmaril@0
|
100 |
void selectPrevBranch(); // Decrement number of branch
|
insilmaril@0
|
101 |
public:
|
insilmaril@0
|
102 |
void selectUpperBranch();
|
insilmaril@0
|
103 |
void selectLowerBranch();
|
insilmaril@0
|
104 |
void selectLeftBranch();
|
insilmaril@0
|
105 |
void selectRightBranch();
|
insilmaril@0
|
106 |
void selectFirstBranch();
|
insilmaril@0
|
107 |
void selectLastBranch();
|
insilmaril@0
|
108 |
void setColor(QColor);
|
insilmaril@0
|
109 |
void selectBackgroundColor();
|
insilmaril@0
|
110 |
void setBackgroundColor(QColor);
|
insilmaril@0
|
111 |
QColor pickColor();
|
insilmaril@0
|
112 |
void colorItem();
|
insilmaril@0
|
113 |
void colorBranch();
|
insilmaril@0
|
114 |
void toggleStandardFlag(QString);
|
insilmaril@0
|
115 |
virtual void setViewCenter(); // needed for zooming
|
insilmaril@0
|
116 |
BranchObj* findText(QString,bool); // Find object
|
insilmaril@0
|
117 |
void findReset(); // Reset Find
|
insilmaril@0
|
118 |
void openURL(); // open URL in external browser
|
insilmaril@0
|
119 |
void editURL(); // edit the URL
|
insilmaril@0
|
120 |
void editHeading2URL(); // copy heading to URL
|
insilmaril@0
|
121 |
void editBugzilla2URL(); // create URL to Bugzilla
|
insilmaril@0
|
122 |
void editVymLink(); // edit link to another map
|
insilmaril@0
|
123 |
void deleteVymLink(); // delete link to another map
|
insilmaril@0
|
124 |
QString getVymLink(); // return path to map
|
insilmaril@98
|
125 |
void removeBranchHere(); // remove but keep childs
|
insilmaril@98
|
126 |
void removeChilds(); // remove childs
|
insilmaril@0
|
127 |
void editMapInfo(); // dialog to enter author, ...
|
insilmaril@0
|
128 |
void updateActions(); // update e.g. format buttons
|
insilmaril@0
|
129 |
void setLinkStyle (LinkStyle); // Set style of link
|
insilmaril@0
|
130 |
LinkStyle getLinkStyle (); // requested in LMO
|
insilmaril@0
|
131 |
void setLinkColor(QColor); // default color of links
|
insilmaril@0
|
132 |
void setLinkColorHint(); // color of links
|
insilmaril@0
|
133 |
void setLinkColorHint(LinkColorHint); // color of links
|
insilmaril@0
|
134 |
LinkColorHint getLinkColorHint();
|
insilmaril@0
|
135 |
QColor getDefLinkColor();
|
insilmaril@97
|
136 |
void setDefXLinkColor(QColor);
|
insilmaril@97
|
137 |
QColor getDefXLinkColor();
|
insilmaril@97
|
138 |
void setDefXLinkWidth (int);
|
insilmaril@97
|
139 |
int getDefXLinkWidth();
|
insilmaril@0
|
140 |
void toggleLinkColorHint(); // after changing linkStyles
|
insilmaril@0
|
141 |
void selectLinkColor();
|
insilmaril@0
|
142 |
void toggleScroll();
|
insilmaril@0
|
143 |
void unScrollAll();
|
insilmaril@0
|
144 |
void loadFloatImage ();
|
insilmaril@0
|
145 |
void saveFloatImage (int);
|
insilmaril@0
|
146 |
void toggleFloatExport();
|
insilmaril@0
|
147 |
void setFrame(const FrameType &);
|
insilmaril@0
|
148 |
private:
|
insilmaril@0
|
149 |
void importDir(BranchObj *,QDir);
|
insilmaril@0
|
150 |
public:
|
insilmaril@0
|
151 |
void importDir();
|
insilmaril@95
|
152 |
void followXLink (int);
|
insilmaril@95
|
153 |
void editXLink (int);
|
insilmaril@0
|
154 |
void testFunction(); // FIXME just testing
|
insilmaril@0
|
155 |
|
insilmaril@0
|
156 |
protected:
|
insilmaril@0
|
157 |
void ensureSelectionVisible();
|
insilmaril@0
|
158 |
virtual void updateViewCenter(); // needed for zooming
|
insilmaril@0
|
159 |
virtual void contentsContextMenuEvent ( QContextMenuEvent *e );
|
insilmaril@0
|
160 |
virtual void contentsMousePressEvent(QMouseEvent*);
|
insilmaril@0
|
161 |
virtual void contentsMouseReleaseEvent(QMouseEvent*);
|
insilmaril@0
|
162 |
virtual void contentsMouseDoubleClickEvent(QMouseEvent*);
|
insilmaril@0
|
163 |
virtual void contentsMouseMoveEvent(QMouseEvent*);
|
insilmaril@0
|
164 |
|
insilmaril@119
|
165 |
virtual void contentsDragEnterEvent(QDragEnterEvent *event);
|
insilmaril@119
|
166 |
virtual void contentsDropEvent(QDropEvent *event);
|
insilmaril@0
|
167 |
private:
|
insilmaril@0
|
168 |
QCanvas* mapCanvas;
|
insilmaril@0
|
169 |
MapCenterObj* mapCenter;
|
insilmaril@0
|
170 |
|
insilmaril@0
|
171 |
bool adjustCanvasRequested; // collect requests until end of user event
|
insilmaril@0
|
172 |
BranchObj *editingBO; // entering Text into BO
|
insilmaril@0
|
173 |
QLineEdit* lineedit;
|
insilmaril@0
|
174 |
|
insilmaril@0
|
175 |
QColor actColor; // actual color
|
insilmaril@97
|
176 |
QColor defLinkColor; // default color for links
|
insilmaril@97
|
177 |
QColor defXLinkColor; // default color for xlinks
|
insilmaril@97
|
178 |
int defXLinkWidth; // default width for xlinks
|
insilmaril@0
|
179 |
LinkColorHint linkcolorhint;// use heading color or own color
|
insilmaril@0
|
180 |
LinkStyle linkstyle; // default style for links
|
insilmaril@0
|
181 |
|
insilmaril@0
|
182 |
QCursor handOpenCursor; // cursor while moving canvas view
|
insilmaril@0
|
183 |
QCursor pickColorCursor; // cursor while picking color
|
insilmaril@83
|
184 |
bool pickingColor;
|
insilmaril@83
|
185 |
bool drawingLink; // true while creating a link
|
insilmaril@93
|
186 |
bool copyingObj; // true while creating a link
|
insilmaril@95
|
187 |
XLinkObj* tmpXLink;
|
insilmaril@0
|
188 |
|
insilmaril@0
|
189 |
LinkableMapObj* selection; // select a LinkableMapObj
|
insilmaril@0
|
190 |
LinkableMapObj* selectionLast; // last selection
|
insilmaril@0
|
191 |
MapObj* movingObj; // moving a MapObj
|
insilmaril@83
|
192 |
MapObj* linkingObj_src; // part of a link
|
insilmaril@0
|
193 |
QPoint movingObj_start; // rel. pos of mouse to absPos
|
insilmaril@0
|
194 |
QPoint movingCont_start; // inital pos of moving Content or
|
insilmaril@0
|
195 |
QPoint movingVec; // how far has Content moved
|
insilmaril@0
|
196 |
QPoint movingCenter; // used when zooming
|
insilmaril@0
|
197 |
QPrinter* printer; // Printing
|
insilmaril@0
|
198 |
|
insilmaril@0
|
199 |
bool mapDefault; // Flag if map is untouched
|
insilmaril@0
|
200 |
bool mapChanged; // Flag if undo is possible
|
insilmaril@0
|
201 |
bool mapUnsaved; // Flag if map should be saved
|
insilmaril@0
|
202 |
QString backupXML; // backup (XML) for undo
|
insilmaril@105
|
203 |
QString undoCommand; // FIXME testing
|
insilmaril@0
|
204 |
// if != NULL
|
insilmaril@0
|
205 |
|
insilmaril@0
|
206 |
bool printFrame; // Print frame around map
|
insilmaril@0
|
207 |
bool printFooter; // Print footer below map
|
insilmaril@0
|
208 |
|
insilmaril@0
|
209 |
bool zipped; // should map be zipped
|
insilmaril@0
|
210 |
QString fileName; // short name of file (for tab)
|
insilmaril@0
|
211 |
QString filePath; // path to file which will be saved
|
insilmaril@0
|
212 |
QString fileDir; // dir where file is saved
|
insilmaril@0
|
213 |
QString destPath; // path to .vym file (needed for vymlinks)
|
insilmaril@0
|
214 |
QString mapName; // fileName without ".vym"
|
insilmaril@0
|
215 |
QString lastImageDir; // save dir for adding images
|
insilmaril@0
|
216 |
|
insilmaril@0
|
217 |
bool isInteractive; // non interactive don't need tmpdirs
|
insilmaril@0
|
218 |
QString bakMapDir; // tmp directory with data for undo
|
insilmaril@0
|
219 |
bool blockreposition; // block while load or undo
|
insilmaril@0
|
220 |
|
insilmaril@0
|
221 |
BranchObj* itFind; // next object in find process
|
insilmaril@0
|
222 |
bool EOFind; // true, if search failed
|
insilmaril@0
|
223 |
|
insilmaril@0
|
224 |
QPoint exportOffset; // set before export, used in save
|
insilmaril@0
|
225 |
void resizeEvent( QResizeEvent * );
|
insilmaril@119
|
226 |
|
insilmaril@119
|
227 |
QUrlOperator *urlOperator;
|
insilmaril@119
|
228 |
QDataStream *imageData;
|
insilmaril@119
|
229 |
QBuffer *imageBuffer;
|
insilmaril@119
|
230 |
|
insilmaril@0
|
231 |
};
|
insilmaril@0
|
232 |
#endif
|
insilmaril@0
|
233 |
|