insilmaril@0
|
1 |
#include <qapplication.h>
|
insilmaril@0
|
2 |
#include <qpixmap.h>
|
insilmaril@0
|
3 |
#include <qtranslator.h>
|
insilmaril@90
|
4 |
#include <qdir.h>
|
insilmaril@98
|
5 |
#include <qptrlist.h>
|
insilmaril@90
|
6 |
#include <qtextcodec.h>
|
insilmaril@117
|
7 |
#include <qnetwork.h>
|
jhilmer@152
|
8 |
#include <qmime.h>
|
insilmaril@0
|
9 |
|
insilmaril@0
|
10 |
#include "settings.h"
|
insilmaril@0
|
11 |
#include "options.h"
|
insilmaril@0
|
12 |
#include "mainwindow.h"
|
insilmaril@0
|
13 |
|
insilmaril@0
|
14 |
#include "icons/vym-48x48.xpm"
|
insilmaril@205
|
15 |
#include "icons/vym-128x128.xpm"
|
insilmaril@0
|
16 |
#include "icons/vym-editor.xpm"
|
insilmaril@0
|
17 |
|
insilmaril@0
|
18 |
#include "flagrowobj.h"
|
insilmaril@0
|
19 |
|
insilmaril@0
|
20 |
// Global variables
|
insilmaril@0
|
21 |
TextEditor *textEditor; // used in Constr. of LinkableMapObj
|
insilmaril@0
|
22 |
// initialized in mainwindow
|
insilmaril@0
|
23 |
|
insilmaril@0
|
24 |
Main *mainWindow; // used in BranchObj::select()
|
insilmaril@164
|
25 |
QString tmpVymDir; // All temp files go there, created in mainwindow
|
insilmaril@166
|
26 |
QString clipboardDir; // Clipboard used in all mapEditors
|
insilmaril@215
|
27 |
QDir vymBaseDir; // Containing all styles, scripts, images, ...
|
insilmaril@166
|
28 |
bool clipboardEmpty;
|
insilmaril@0
|
29 |
FlagRowObj *systemFlagsDefault; // used to copy from in LinkableMapObj
|
insilmaril@0
|
30 |
FlagRowObj *standardFlagsDefault;
|
insilmaril@0
|
31 |
|
insilmaril@98
|
32 |
// Lists of actions
|
insilmaril@98
|
33 |
// (QActionGroup could not be "enabled")
|
insilmaril@98
|
34 |
QPtrList <QAction> actionListBranches;
|
insilmaril@98
|
35 |
|
insilmaril@0
|
36 |
// Actions which change sometimes
|
insilmaril@0
|
37 |
QAction *actionFileSave;
|
insilmaril@0
|
38 |
QAction *actionFilePrint;
|
insilmaril@0
|
39 |
QAction *actionEditUndo;
|
insilmaril@163
|
40 |
QAction *actionEditRedo;
|
insilmaril@0
|
41 |
QAction *actionEditCopy;
|
insilmaril@0
|
42 |
QAction *actionEditCut;
|
insilmaril@0
|
43 |
QAction *actionEditPaste;
|
insilmaril@0
|
44 |
QAction *actionEditMoveUp;
|
insilmaril@0
|
45 |
QAction *actionEditMoveDown;
|
insilmaril@0
|
46 |
QAction *actionEditToggleScroll;
|
insilmaril@0
|
47 |
QAction *actionEditOpenURL;
|
insilmaril@0
|
48 |
QAction *actionEditURL;
|
insilmaril@0
|
49 |
QAction *actionEditHeading2URL;
|
insilmaril@0
|
50 |
QAction *actionEditBugzilla2URL;
|
insilmaril@175
|
51 |
QAction *actionEditFATE2URL;
|
insilmaril@0
|
52 |
QAction *actionEditOpenVymLink;
|
insilmaril@0
|
53 |
QAction *actionEditVymLink;
|
insilmaril@0
|
54 |
QAction *actionEditDeleteVymLink;
|
insilmaril@0
|
55 |
QAction *actionEditMapInfo;
|
insilmaril@0
|
56 |
QAction *actionEditHeading;
|
insilmaril@0
|
57 |
QAction *actionEditDelete;
|
insilmaril@0
|
58 |
QAction *actionEditAddBranch;
|
insilmaril@98
|
59 |
QAction *actionEditAddBranchHere;
|
insilmaril@0
|
60 |
QAction *actionEditAddBranchAbove;
|
insilmaril@0
|
61 |
QAction *actionEditAddBranchBelow;
|
insilmaril@98
|
62 |
QAction *actionEditRemoveBranchHere;
|
insilmaril@98
|
63 |
QAction *actionEditRemoveChilds;
|
insilmaril@0
|
64 |
QAction *actionEditImportAdd;
|
insilmaril@0
|
65 |
QAction *actionEditImportReplace;
|
insilmaril@0
|
66 |
QAction *actionEditSaveBranch;
|
insilmaril@0
|
67 |
QAction *actionEditSelectFirst;
|
insilmaril@0
|
68 |
QAction *actionEditSelectLast;
|
insilmaril@0
|
69 |
QAction *actionEditLoadImage;
|
insilmaril@0
|
70 |
QAction *actionEditToggleFloatExport;
|
insilmaril@0
|
71 |
|
insilmaril@0
|
72 |
QAction *actionFormatColor;
|
insilmaril@0
|
73 |
QAction *actionFormatPickColor;
|
insilmaril@0
|
74 |
QAction *actionFormatColorBranch;
|
insilmaril@0
|
75 |
QAction *actionFormatColorSubtree;
|
insilmaril@0
|
76 |
QAction *actionFormatBackColor;
|
insilmaril@0
|
77 |
QAction *actionFormatLinkColorHint;
|
insilmaril@0
|
78 |
QAction *actionFormatLinkColor;
|
insilmaril@0
|
79 |
|
insilmaril@89
|
80 |
QActionGroup *actionGroupModModes;
|
insilmaril@89
|
81 |
QAction *actionModModeColor;
|
insilmaril@89
|
82 |
QAction *actionModModeLink;
|
insilmaril@93
|
83 |
QAction *actionModModeCopy;
|
insilmaril@89
|
84 |
|
insilmaril@0
|
85 |
QActionGroup *actionGroupFormatFrameTypes;
|
insilmaril@0
|
86 |
QAction *actionFormatFrameNone;
|
insilmaril@0
|
87 |
QAction *actionFormatFrameRectangle;
|
insilmaril@0
|
88 |
|
insilmaril@0
|
89 |
QActionGroup *actionGroupFormatLinkStyles;
|
insilmaril@175
|
90 |
QAction *actionFormatIncludeImagesVer;
|
insilmaril@175
|
91 |
QAction *actionFormatIncludeImagesHor;
|
insilmaril@160
|
92 |
QAction *actionFormatHideLinkUnselected;
|
insilmaril@0
|
93 |
QAction *actionFormatLinkStyleLine;
|
insilmaril@0
|
94 |
QAction *actionFormatLinkStyleParabel;
|
insilmaril@0
|
95 |
QAction *actionFormatLinkStylePolyLine;
|
insilmaril@0
|
96 |
QAction *actionFormatLinkStylePolyParabel;
|
insilmaril@0
|
97 |
|
insilmaril@0
|
98 |
QAction *actionViewToggleNoteEditor;
|
insilmaril@0
|
99 |
|
insilmaril@0
|
100 |
QAction *actionSettingsAutoselectHeading;
|
insilmaril@0
|
101 |
QAction *actionSettingsAutoselectText;
|
insilmaril@0
|
102 |
QAction *actionSettingsPasteNewHeading;
|
insilmaril@0
|
103 |
QAction *actionSettingsAutoedit;
|
insilmaril@0
|
104 |
QAction *actionSettingsUseDelKey;
|
insilmaril@103
|
105 |
QAction *actionSettingsUseFlagGroups;
|
insilmaril@0
|
106 |
|
insilmaril@0
|
107 |
QPopupMenu *branchContextMenu;
|
insilmaril@98
|
108 |
QPopupMenu *branchAddContextMenu;
|
insilmaril@98
|
109 |
QPopupMenu *branchRemoveContextMenu;
|
insilmaril@89
|
110 |
QPopupMenu *branchLinksContextMenu;
|
insilmaril@94
|
111 |
QPopupMenu *branchLinksContextMenuDup;
|
insilmaril@0
|
112 |
QPopupMenu *floatimageContextMenu;
|
insilmaril@0
|
113 |
QPopupMenu *saveImageFormatMenu;
|
insilmaril@0
|
114 |
QPopupMenu *canvasContextMenu;
|
insilmaril@0
|
115 |
QPopupMenu *lastMapsMenu;
|
insilmaril@205
|
116 |
QPopupMenu *importMenu;
|
insilmaril@0
|
117 |
QPopupMenu *exportMenu;
|
insilmaril@0
|
118 |
QPopupMenu *exportImageFormatMenu;
|
insilmaril@0
|
119 |
|
insilmaril@0
|
120 |
|
insilmaril@0
|
121 |
Settings settings;
|
insilmaril@0
|
122 |
Options options;
|
insilmaril@0
|
123 |
|
insilmaril@0
|
124 |
int statusbarTime=3500;
|
insilmaril@0
|
125 |
|
insilmaril@0
|
126 |
int main(int argc, char** argv)
|
insilmaril@0
|
127 |
{
|
insilmaril@0
|
128 |
QApplication app(argc,argv);
|
insilmaril@0
|
129 |
|
jhilmer@152
|
130 |
QMimeSourceFactory *factory = QMimeSourceFactory::defaultFactory();
|
insilmaril@205
|
131 |
factory->setPixmap("vym_48x48", QPixmap(vym_48x48_xpm));
|
insilmaril@205
|
132 |
factory->setPixmap("vym_128x128", QPixmap(vym_128x128_xpm));
|
insilmaril@117
|
133 |
qInitNetworkProtocols();
|
insilmaril@0
|
134 |
|
insilmaril@215
|
135 |
// Use /usr/share/vym or /usr/local/share/vym or . ?
|
insilmaril@215
|
136 |
QDir vymBaseDir;
|
insilmaril@215
|
137 |
vymBaseDir.setPath ("/usr/share/vym");
|
insilmaril@215
|
138 |
if (!vymBaseDir.exists())
|
insilmaril@215
|
139 |
vymBaseDir.setPath ("/usr/local/share/vym");
|
insilmaril@215
|
140 |
if (!vymBaseDir.exists())
|
insilmaril@215
|
141 |
vymBaseDir.setPath(vymBaseDir.currentDirPath() );
|
insilmaril@90
|
142 |
|
insilmaril@0
|
143 |
// Initialize translations
|
insilmaril@0
|
144 |
QTranslator translator (0);
|
insilmaril@215
|
145 |
translator.load( QString("vym_")+QTextCodec::locale(), vymBaseDir.path() + "/lang");
|
insilmaril@0
|
146 |
app.installTranslator( &translator );
|
insilmaril@0
|
147 |
|
insilmaril@0
|
148 |
// Initializing the row of system flags
|
insilmaril@0
|
149 |
// is done in first call to MapEditor(),
|
insilmaril@0
|
150 |
// because we need at least one canvas first
|
insilmaril@0
|
151 |
systemFlagsDefault=NULL;
|
insilmaril@0
|
152 |
standardFlagsDefault=NULL;
|
insilmaril@0
|
153 |
|
insilmaril@0
|
154 |
// Reading and initializing options commandline options
|
insilmaril@0
|
155 |
options.add ("version", SwitchOption, "v","version");
|
insilmaril@0
|
156 |
options.add ("help", SwitchOption, "h", "help");
|
insilmaril@0
|
157 |
options.add ("quit", SwitchOption, "q", "quit");
|
insilmaril@0
|
158 |
options.add ("test", StringOption, "t", "test");
|
insilmaril@0
|
159 |
options.setHelpText (
|
insilmaril@0
|
160 |
"VYM - View Your Mind\n"
|
insilmaril@0
|
161 |
"--------------------\n\n"
|
insilmaril@0
|
162 |
"Information about vym can be found in vym.pdf,\n"
|
insilmaril@0
|
163 |
"which should be part of the vym package.\n"
|
insilmaril@0
|
164 |
"It is also available at the project homepage:\n\n"
|
insilmaril@0
|
165 |
"http://www.InSilmaril.de/vym\n");
|
insilmaril@0
|
166 |
if (options.parse())
|
insilmaril@0
|
167 |
{
|
insilmaril@0
|
168 |
cout << endl << options.getHelpText()<<endl;
|
insilmaril@0
|
169 |
return 1;
|
insilmaril@0
|
170 |
}
|
insilmaril@0
|
171 |
|
insilmaril@0
|
172 |
if (options.isOn ("version"))
|
insilmaril@0
|
173 |
{
|
insilmaril@185
|
174 |
cout << "vym version "<<__VYM_VERSION
|
insilmaril@0
|
175 |
<<" (c) 2004 Uwe Drechsel - "
|
insilmaril@185
|
176 |
<<__BUILD_DATE<<endl;
|
insilmaril@0
|
177 |
|
insilmaril@0
|
178 |
return 0;
|
insilmaril@0
|
179 |
}
|
insilmaril@0
|
180 |
|
insilmaril@0
|
181 |
if (options.isOn ("help"))
|
insilmaril@0
|
182 |
{
|
insilmaril@0
|
183 |
cout << options.getHelpText()<<endl;
|
insilmaril@0
|
184 |
return 0;
|
insilmaril@0
|
185 |
}
|
insilmaril@0
|
186 |
|
insilmaril@0
|
187 |
if (options.isOn ("test"))
|
insilmaril@0
|
188 |
{
|
insilmaril@0
|
189 |
// FIXME testing string option only
|
insilmaril@0
|
190 |
cout << "Testing: "<<options.getArg("test")<< endl;
|
insilmaril@0
|
191 |
}
|
insilmaril@0
|
192 |
|
insilmaril@0
|
193 |
// Initialize window of TextEditor
|
insilmaril@0
|
194 |
textEditor = new TextEditor();
|
insilmaril@0
|
195 |
textEditor->setIcon (QPixmap (vym_editor_xpm));
|
insilmaril@0
|
196 |
if (textEditor->showWithMain()) textEditor->show();
|
insilmaril@0
|
197 |
|
insilmaril@166
|
198 |
// Initialize mainwindow
|
insilmaril@0
|
199 |
Main m;
|
insilmaril@0
|
200 |
//m.resize(m.sizeHint());
|
insilmaril@205
|
201 |
m.setIcon (QPixmap (vym_48x48_xpm));
|
insilmaril@0
|
202 |
m.show();
|
insilmaril@0
|
203 |
m.fileNew();
|
insilmaril@0
|
204 |
m.loadCmdLine();
|
insilmaril@0
|
205 |
|
insilmaril@0
|
206 |
// For benchmarking we may want to quit immediatly after drawing
|
insilmaril@0
|
207 |
if (options.isOn ("quit"))
|
insilmaril@0
|
208 |
{
|
insilmaril@0
|
209 |
return 0;
|
insilmaril@0
|
210 |
}
|
insilmaril@0
|
211 |
|
insilmaril@0
|
212 |
QObject::connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) );
|
insilmaril@0
|
213 |
|
insilmaril@0
|
214 |
return app.exec();
|
insilmaril@0
|
215 |
}
|
insilmaril@0
|
216 |
|