5 //#include <q3filedialog.h>
6 //#include <q3process.h>
8 #include <QContextMenuEvent>
10 #include <QDragEnterEvent>
14 #include <QMouseEvent>
16 #include <QResizeEvent>
18 #include "mapcenterobj.h"
20 #include "historywindow.h"
22 #include "selection.h"
25 class Q3NetworkOperation;
28 class MapEditor : public Q3CanvasView , public xmlObj {
32 MapEditor(QWidget* parent=0, bool interactive=false, const char* name=0, Qt::WFlags f=0);
35 QColor backgroundColor();
36 MapCenterObj* getMapCenter();
37 Q3Canvas* getCanvas();
38 void adjustCanvasSize();// adjust canvas size to map and scrollview
39 bool isRepositionBlocked(); // block while load or undo
42 QString getName(LinkableMapObj*); // Get e.g. heading or filename
43 void makeTmpDirs(); // create temporary directories
44 QString saveToDir(const QString&,const QString &,bool, const QPoint &,LinkableMapObj*);
45 void saveStateComplete (const QString &);
46 void saveStatePart (LinkableMapObj *, const QString &);
47 void saveStateConstSelection (const QString &, const QString &, const QString &);
48 void saveStateComData (LinkableMapObj *, const QString &, LinkableMapObj *, const QString &, const QString &, LinkableMapObj *);
49 void saveState(LinkableMapObj *, const QString &, LinkableMapObj *, const QString &, const QString &);
50 void saveState(const QString &, const QString &, const QString &, const QString &, const QString &);
51 void saveState(const SaveMode&, const QString &, const QString &, const QString &, const QString &, const QString &, LinkableMapObj *);
52 void parseAtom(const QString &);
54 void addFloatImage(const QPixmap &img);
57 void fetchImage(const QString &img);
58 void imageDataFetched(const QByteArray &, Q3NetworkOperation *);
59 void imageDataFinished(Q3NetworkOperation *);
62 void toggleHistoryWindow();
63 bool isDefault(); // false, if map was changed once
64 bool isUnsaved(); // save necessary
65 bool hasChanged(); // undo possible
66 void setChanged(); // called from NoteEditor via LMO
68 void setFilePath (QString);
69 void setFilePath (QString,QString);
70 QString getFilePath (); // Full path e.g. "/home/tux/map.xml"
71 QString getFileName (); // e.g. "map.xml"
72 QString getMapName (); // e.g. "map"
73 QString getDestPath (); // e.g. "/home/tux/map.vym"
74 ErrorCode load (QString, LoadMode ); // newmap, import/replace selection
76 int save(const SaveMode &); // Save map
77 void setZipped(bool); // save map zipped
78 bool saveZipped(); // 1 if file will be saved zipped
79 void print(); // print canvas
82 void setHideTmpMode (HideTmpMode); // temporary hide stuff
83 HideTmpMode getHideTmpMode(); // temporary hide stuff
85 void setExportMode (bool); // temporary hide stuff during export
86 void exportImage (QString fn); // export as PNG
87 void exportImage (QString fn, QString); // export in given format
88 void exportOOPresentation(const QString &,const QString &);
89 void exportXML(const QString&); // export to directory
90 void clear(); // clear map
91 void copy(); // copy branch to clipboard
92 void redo(); // redo last action
93 void undo(); // undo last action
94 void gotoStep (int);// goto a step in history
96 void undoXML(const QString &, const QString &);
97 void pasteNoSave(); // paste clipboard to branch
98 void cutNoSave(); // cut to clipboard
100 void paste(); // paste clipboard to branch and backup
101 void cut(); // cut to clipboard and backup
102 void move (const int &,const int&);
103 void moveRel (const int &,const int&);
105 void moveBranchDown();
106 QString getHeading (bool &,QPoint &); // Get heading, ok if selection is branch
107 void setHeading(const QString &);
109 void setHeadingInt(const QString &);
110 void setURLInt(const QString &); // Just set the URL for selection
111 void setVymLinkInt(const QString &); // Set vymLink for selection
112 BranchObj* addNewBranchInt(int); // pos allows to add above/below selection
114 void addNewBranch(int); // pos allows to add above/below selection
115 void addNewBranchHere(); // insert and make selection its
116 void deleteSelection();
117 LinkableMapObj* getSelection(); // returns selection
118 void unselect(); // before changing current noteedit
119 void reselect(); // after changing current noteedit
120 bool select(const QString &); // Select by string
121 QString getSelectString();
123 void selectInt(LinkableMapObj*);
124 void selectNextBranchInt(); // Increment number of branch
125 void selectPrevBranchInt(); // Decrement number of branch
127 void selectUpperBranch();
128 void selectLowerBranch();
129 void selectLeftBranch();
130 void selectRightBranch();
131 void selectFirstBranch();
132 void selectLastBranch();
133 void setColor(QColor);
134 void selectBackgroundColor();
135 void setBackgroundColor(QColor);
139 void toggleStandardFlag(QString);
140 virtual void setViewCenter(); // needed for zooming
141 BranchObj* findText(QString,bool); // Find object
142 void findReset(); // Reset Find
143 void editURL(); // edit the URL
144 QString getURL(); // returns URL of selection or ""
145 QStringList getURLs(); // returns URLs of subtree
146 void editHeading2URL(); // copy heading to URL
147 void editBugzilla2URL(); // create URL to Bugzilla
148 void editFATE2URL(); // create URL to FATE
149 void editVymLink(); // edit link to another map
150 void deleteVymLink(); // delete link to another map
151 QString getVymLink(); // return path to map
152 QStringList getVymLinks(); // return paths in subtree
153 void toggleHideExport(); // toggle the export flag
154 void removeBranchKeepChilds(); // remove but keep childs
155 void removeChilds(); // remove childs
156 void editMapInfo(); // dialog to enter author, ...
157 void updateActions(); // update e.g. format buttons
158 void updateNoteFlag(); // when TextEditor changes
159 void setLinkStyle (LinkStyle); // Set style of link
160 LinkStyle getLinkStyle (); // requested in LMO
161 void setLinkColor(QColor); // default color of links
162 void setLinkColorHint(); // color of links
163 void setLinkColorHint(LinkColorHint); // color of links
164 LinkColorHint getLinkColorHint();
165 QColor getDefLinkColor();
166 void setDefXLinkColor(QColor);
167 QColor getDefXLinkColor();
168 void setDefXLinkWidth (int);
169 int getDefXLinkWidth();
170 void toggleLinkColorHint(); // after changing linkStyles
171 void selectLinkColor();
174 void loadFloatImage ();
175 void saveFloatImage ();
176 void setFrame(const FrameType &);
177 void setIncludeImagesVer(bool);
178 void setIncludeImagesHor(bool);
179 void setHideLinkUnselected (bool);
180 bool getHideLinkUnselected ();
182 void importDirInt(BranchObj *,QDir);
185 void followXLink (int);
186 void editXLink (int);
187 void testFunction(); // just testing new stuff
188 // set /mainwindo/showTestMenu=true...
191 void ensureSelectionVisible();
192 virtual void updateViewCenter(); // needed for zooming
193 virtual void contentsContextMenuEvent ( QContextMenuEvent *e );
194 virtual void contentsMousePressEvent(QMouseEvent*);
195 virtual void contentsMouseReleaseEvent(QMouseEvent*);
196 virtual void contentsMouseDoubleClickEvent(QMouseEvent*);
197 virtual void contentsMouseMoveEvent(QMouseEvent*);
199 virtual void contentsDragEnterEvent(QDragEnterEvent *event);
200 virtual void contentsDropEvent(QDropEvent *event);
203 MapCenterObj* mapCenter;
205 bool adjustCanvasRequested; // collect requests until end of user event
206 BranchObj *editingBO; // entering Text into BO
208 QColor actColor; // actual color
209 QColor defLinkColor; // default color for links
210 QColor defXLinkColor; // default color for xlinks
211 int defXLinkWidth; // default width for xlinks
212 LinkColorHint linkcolorhint;// use heading color or own color
213 LinkStyle linkstyle; // default style for links
215 QCursor handOpenCursor; // cursor while moving canvas view
216 QCursor pickColorCursor; // cursor while picking color
218 bool drawingLink; // true while creating a link
219 bool copyingObj; // true while creating a link
223 LinkableMapObj* selection; // select a LinkableMapObj
224 LinkableMapObj* selectionLast; // last selection
225 MapObj* movingObj; // moving a MapObj
226 MapObj* linkingObj_src; // part of a link
227 QPoint movingObj_orgPos; // org. pos of mouse before move
228 QPoint movingObj_orgRelPos; // org. relative pos of mouse before move
229 QPoint movingObj_start; // rel. pos of mouse to absPos
230 QPoint movingCont_start; // inital pos of moving Content or
231 QPoint movingVec; // how far has Content moved
232 QPoint movingCenter; // used when zooming
233 QPrinter* printer; // Printing
235 bool mapDefault; // Flag if map is untouched
236 bool mapChanged; // Flag if undo is possible
237 bool mapUnsaved; // Flag if map should be saved
239 bool printFrame; // Print frame around map
240 bool printFooter; // Print footer below map
242 bool zipped; // should map be zipped
243 static int mapNum; // unique number for Editor
244 QString fileName; // short name of file (for tab)
245 QString filePath; // path to file which will be saved
246 QString fileDir; // dir where file is saved
247 QString destPath; // path to .vym file (needed for vymlinks)
248 QString mapName; // fileName without ".vym"
250 bool isInteractive; // non interactive don't need tmpdirs
251 QString tmpMapDir; // tmp directory with undo history
252 QString histPath; // Path to history file
253 int stepsTotal; // total number of steps (undos+redos)
254 SimpleSettings undoSet; // undo/redo commands
255 bool blockReposition; // block while load or undo
256 bool blockSaveState; // block while load or undo
258 BranchObj* itFind; // next object in find process
259 bool EOFind; // true, if search failed
261 QPoint exportOffset; // set before export, used in save
262 HideTmpMode hidemode; // true while exporting to hide some stuff
264 void resizeEvent( QResizeEvent * );
266 Q3UrlOperator *urlOperator;
267 QDataStream *imageData;
268 QBuffer *imageBuffer;
270 HistoryWindow historyWindow;