1 #include <qapplication.h>
3 #include <qtranslator.h>
6 #include <qtextcodec.h>
10 #include <Q3PopupMenu>
11 #include <Q3ActionGroup>
15 #include "mainwindow.h"
17 #include "flagrowobj.h"
20 TextEditor *textEditor; // used in Constr. of LinkableMapObj
21 // initialized in mainwindow
23 Main *mainWindow; // used in BranchObj::select()
24 QString tmpVymDir; // All temp files go there, created in mainwindow
25 QString clipboardDir; // Clipboard used in all mapEditors
26 QDir vymBaseDir; // Containing all styles, scripts, images, ...
27 QString iconPath; // Pointing to icons used for toolbars
28 QString flagsPath; // Pointing to flags
30 FlagRowObj *systemFlagsDefault; // used to copy from in LinkableMapObj
31 FlagRowObj *standardFlagsDefault;
34 // (QActionGroup could not be "enabled")
35 Q3PtrList <QAction> actionListBranches;
37 // Actions which change sometimes
38 QAction *actionFileSave;
39 QAction *actionFilePrint;
40 QAction *actionEditUndo;
41 QAction *actionEditRedo;
42 QAction *actionEditCopy;
43 QAction *actionEditCut;
44 QAction *actionEditPaste;
45 QAction *actionEditMoveUp;
46 QAction *actionEditMoveDown;
47 QAction *actionEditToggleScroll;
48 QAction *actionEditOpenURL;
49 QAction *actionEditOpenURLTab;
50 QAction *actionEditURL;
51 QAction *actionEditHeading2URL;
52 QAction *actionEditBugzilla2URL;
53 QAction *actionEditFATE2URL;
54 QAction *actionEditOpenVymLink;
55 QAction *actionEditVymLink;
56 QAction *actionEditToggleHideExport;
57 QAction *actionEditDeleteVymLink;
58 QAction *actionEditMapInfo;
59 QAction *actionEditHeading;
60 QAction *actionEditDelete;
61 QAction *actionEditAddBranch;
62 QAction *actionEditAddBranchHere;
63 QAction *actionEditAddBranchAbove;
64 QAction *actionEditAddBranchBelow;
65 QAction *actionEditRemoveBranchKeepChilds;
66 QAction *actionEditRemoveChilds;
67 QAction *actionEditImportAdd;
68 QAction *actionEditImportReplace;
69 QAction *actionEditSaveBranch;
70 QAction *actionEditSelectFirst;
71 QAction *actionEditSelectLast;
72 QAction *actionEditLoadImage;
74 QAction *actionFormatColor;
75 QAction *actionFormatPickColor;
76 QAction *actionFormatColorBranch;
77 QAction *actionFormatColorSubtree;
78 QAction *actionFormatBackColor;
79 QAction *actionFormatLinkColorHint;
80 QAction *actionFormatLinkColor;
82 Q3ActionGroup *actionGroupModModes;
83 QAction *actionModModeColor;
84 QAction *actionModModeLink;
85 QAction *actionModModeCopy;
87 Q3ActionGroup *actionGroupFormatFrameTypes;
88 QAction *actionFormatFrameNone;
89 QAction *actionFormatFrameRectangle;
91 Q3ActionGroup *actionGroupFormatLinkStyles;
92 QAction *actionFormatIncludeImagesVer;
93 QAction *actionFormatIncludeImagesHor;
94 QAction *actionFormatHideLinkUnselected;
95 QAction *actionFormatLinkStyleLine;
96 QAction *actionFormatLinkStyleParabel;
97 QAction *actionFormatLinkStylePolyLine;
98 QAction *actionFormatLinkStylePolyParabel;
100 QAction *actionViewToggleNoteEditor;
101 QAction *actionViewToggleHistoryWindow;
103 QAction *actionSettingsAutoselectHeading;
104 QAction *actionSettingsAutoselectText;
105 QAction *actionSettingsPasteNewHeading;
106 QAction *actionSettingsAutoedit;
107 QAction *actionSettingsUseDelKey;
108 QAction *actionSettingsUseFlagGroups;
109 QAction *actionSettingsUseHideExport;
111 Q3PopupMenu *branchContextMenu;
112 Q3PopupMenu *branchAddContextMenu;
113 Q3PopupMenu *branchRemoveContextMenu;
114 Q3PopupMenu *branchLinksContextMenu;
115 Q3PopupMenu *branchLinksContextMenuDup;
116 Q3PopupMenu *floatimageContextMenu;
117 Q3PopupMenu *saveImageFormatMenu;
118 Q3PopupMenu *canvasContextMenu;
119 Q3PopupMenu *lastMapsMenu;
120 Q3PopupMenu *importMenu;
121 Q3PopupMenu *exportMenu;
122 Q3PopupMenu *exportImageFormatMenu;
128 int statusbarTime=3500;
130 int main(int argc, char** argv)
132 QApplication app(argc,argv);
135 // Reading and initializing options commandline options
136 options.add ("version", SwitchOption, "v","version");
137 options.add ("local", SwitchOption, "l", "local");
138 options.add ("help", SwitchOption, "h", "help");
139 options.add ("quit", SwitchOption, "q", "quit");
140 options.add ("test", StringOption, "t", "test");
141 options.setHelpText (
142 "VYM - View Your Mind\n"
143 "--------------------\n\n"
144 "Information about vym can be found in vym.pdf,\n"
145 "which should be part of the vym package.\n"
146 "It is also available at the project homepage:\n\n"
147 "http://www.InSilmaril.de/vym\n");
150 //FIXME QT3 cout << endl << options.getHelpText()<<endl;
154 if (options.isOn ("version"))
156 cout << "vym version "<<__VYM_VERSION
157 <<" (c) 2004 Uwe Drechsel - "
158 <<__BUILD_DATE<<endl;
163 // Use /usr/share/vym or /usr/local/share/vym or . ?
165 if (options.isOn ("local"))
167 vymBaseDir.setPath (vymBaseDir.currentDirPath());
169 // then look for environment variable
170 if (getenv("VYMHOME")!=0)
172 vymBaseDir.setPath (getenv("VYMHOME"));
174 // ok, let's find my way on my own
176 vymBaseDir.setPath ("/usr/share/vym");
177 if (!vymBaseDir.exists())
179 vymBaseDir.setPath ("/usr/local/share/vym");
180 if (!vymBaseDir.exists())
181 vymBaseDir.setPath(vymBaseDir.currentDirPath() );
185 iconPath=vymBaseDir.path()+"/icons/";
186 flagsPath=vymBaseDir.path()+"/flags/";
188 if (options.isOn ("help"))
190 //FIXME QT3 cout << options.getHelpText()<<endl;
194 if (options.isOn ("test"))
196 // FIXME testing string option only
197 //FIXME QT3 cout << "Testing: "<<options.getArg("test")<< endl;
201 Q3MimeSourceFactory *factory = Q3MimeSourceFactory::defaultFactory();
202 factory->setPixmap("vym-128x128", QPixmap(iconPath+"vym-128x128.png"));
203 q3InitNetworkProtocols();
206 // Initialize translations
207 QTranslator translator (0);
208 translator.load( QString("vym_")+QTextCodec::locale(), vymBaseDir.path() + "/lang");
209 app.installTranslator( &translator );
211 // Initializing the row of system flags
212 // is done in first call to MapEditor(),
213 // because we need at least one canvas first
214 systemFlagsDefault=NULL;
215 standardFlagsDefault=NULL;
217 // Initialize window of TextEditor
218 textEditor = new TextEditor();
219 textEditor->setIcon (QPixmap (iconPath+"vym-editor.png"));
220 if (textEditor->showWithMain()) textEditor->show();
222 // Initialize mainwindow
224 //m.resize(m.sizeHint());
225 m.setIcon (QPixmap (iconPath+"vym-48x48.png"));
230 // For benchmarking we may want to quit immediatly after drawing
231 if (options.isOn ("quit"))
236 QObject::connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) );