main.cpp
author insilmaril
Thu, 27 Jul 2006 14:07:11 +0000
branchqt4-port
changeset 11 b8c547f0fc58
parent 9 f94317a94db1
child 13 9aadd0f58300
permissions -rw-r--r--
Floatimages have alphachannel again
     1 #include <QApplication>
     2 #include <QPixmap>
     3 #include <QTranslator>
     4 #include <QDir>
     5 #include <q3ptrlist.h>
     6 #include <QTextCodec>
     7 #include <q3network.h>
     8 #include <QMenu>
     9 #include <QActionGroup>
    10 
    11 #include "settings.h"
    12 #include "options.h"
    13 #include "mainwindow.h"
    14 #include "flagrowobj.h"
    15 
    16 // Global variables
    17 TextEditor *textEditor;			// used in Constr. of LinkableMapObj
    18 								// initialized in mainwindow
    19 
    20 Main *mainWindow;				// used in BranchObj::select()								
    21 QString tmpVymDir;				// All temp files go there, created in mainwindow
    22 QString clipboardDir;			// Clipboard used in all mapEditors
    23 QDir vymBaseDir;				// Containing all styles, scripts, images, ...
    24 QDir lastImageDir;
    25 QDir lastFileDir;
    26 QString iconPath;				// Pointing to icons used for toolbars
    27 QString flagsPath;				// Pointing to flags
    28 bool clipboardEmpty;			
    29 FlagRowObj *systemFlagsDefault;	// used to copy from in LinkableMapObj
    30 FlagRowObj *standardFlagsDefault;
    31 
    32 // Lists of actions
    33 // (QActionGroup could not be "enabled")
    34 Q3PtrList <QAction> actionListBranches;
    35 
    36 // Actions which change sometimes
    37 QAction *actionFileSave;
    38 QAction *actionFilePrint;
    39 QAction *actionEditUndo;
    40 QAction *actionEditRedo;
    41 QAction *actionEditCopy;
    42 QAction *actionEditCut;
    43 QAction *actionEditPaste;
    44 QAction *actionEditMoveUp;
    45 QAction *actionEditMoveDown;
    46 QAction *actionEditToggleScroll;
    47 QAction *actionEditOpenURL;
    48 QAction *actionEditOpenURLTab;
    49 QAction *actionEditURL;
    50 QAction *actionEditHeading2URL;
    51 QAction *actionEditBugzilla2URL;
    52 QAction *actionEditFATE2URL;
    53 QAction *actionEditOpenVymLink;
    54 QAction *actionEditVymLink;
    55 QAction *actionEditToggleHideExport;
    56 QAction *actionEditDeleteVymLink;
    57 QAction *actionEditMapInfo;
    58 QAction *actionEditHeading;
    59 QAction *actionEditDelete;
    60 QAction *actionEditAddBranch;
    61 QAction *actionEditAddBranchHere;
    62 QAction *actionEditAddBranchAbove;
    63 QAction *actionEditAddBranchBelow;
    64 QAction *actionEditRemoveBranchKeepChilds;
    65 QAction *actionEditRemoveChilds;
    66 QAction *actionEditImportAdd;
    67 QAction *actionEditImportReplace;
    68 QAction *actionEditSaveBranch;
    69 QAction *actionEditSelectFirst;
    70 QAction *actionEditSelectLast;
    71 QAction *actionEditLoadImage;
    72 
    73 QAction *actionFormatColor;		
    74 QAction *actionFormatPickColor;		
    75 QAction *actionFormatColorBranch;
    76 QAction *actionFormatColorSubtree;
    77 QAction *actionFormatBackColor;
    78 QAction *actionFormatLinkColorHint;
    79 QAction *actionFormatLinkColor;		
    80 
    81 QActionGroup *actionGroupModModes;
    82 QAction *actionModModeColor;
    83 QAction *actionModModeLink;
    84 QAction *actionModModeCopy;
    85 
    86 QActionGroup *actionGroupFormatFrameTypes;
    87 QAction *actionFormatFrameNone;
    88 QAction *actionFormatFrameRectangle;
    89 
    90 QActionGroup *actionGroupFormatLinkStyles;
    91 QAction *actionFormatIncludeImagesVer;
    92 QAction *actionFormatIncludeImagesHor;
    93 QAction *actionFormatHideLinkUnselected;
    94 QAction *actionFormatLinkStyleLine;
    95 QAction *actionFormatLinkStyleParabel;
    96 QAction *actionFormatLinkStylePolyLine;
    97 QAction *actionFormatLinkStylePolyParabel;
    98 
    99 QAction *actionViewToggleNoteEditor;
   100 QAction *actionViewToggleHistoryWindow;
   101 
   102 QAction *actionSettingsAutoselectHeading;
   103 QAction *actionSettingsAutoselectText;
   104 QAction *actionSettingsPasteNewHeading;
   105 QAction *actionSettingsAutoedit;
   106 QAction *actionSettingsUseDelKey;
   107 QAction *actionSettingsUseFlagGroups;
   108 QAction *actionSettingsUseHideExport;
   109 
   110 
   111 QMenu* branchContextMenu;
   112 QMenu* branchAddContextMenu;
   113 QMenu* branchRemoveContextMenu;
   114 QMenu* branchLinksContextMenuEdit;
   115 QMenu* branchLinksContextMenuFollow;
   116 QMenu* floatimageContextMenu;
   117 QMenu* canvasContextMenu;
   118 QMenu* fileLastMapsMenu;
   119 QMenu* fileImportMenu;
   120 QMenu* fileExportMenu;
   121 
   122 
   123 Settings settings ("vym","vym"); // Organization, Application name
   124 Options options;
   125 ImageIO imageIO;
   126 
   127 int statusbarTime=3500;
   128 
   129 int main(int argc, char** argv)
   130 {
   131     QApplication app(argc,argv);
   132 
   133 
   134 	// Reading and initializing options commandline options
   135 	options.add ("version", SwitchOption, "v","version");
   136 	options.add ("local", SwitchOption, "l", "local");
   137 	options.add ("help", SwitchOption, "h", "help");
   138 	options.add ("quit", SwitchOption, "q", "quit");
   139 	options.add ("test", StringOption, "t", "test");
   140 	options.setHelpText (
   141 		"VYM - View Your Mind\n"
   142 		"--------------------\n\n"
   143 		"Information about vym can be found in vym.pdf,\n"
   144 		"which should be part of the vym package.\n"
   145 		"It is also available at the project homepage:\n\n"
   146 		"http://www.InSilmaril.de/vym\n");
   147 	if (options.parse())
   148 	{
   149 //FIXME QT3		cout << endl << options.getHelpText()<<endl;
   150 		return 1;
   151 	}
   152 
   153 	if (options.isOn ("version"))
   154 	{
   155 		cout << "vym version "<<__VYM_VERSION
   156 			<<"  (c) 2004 Uwe Drechsel - "
   157 			<<__BUILD_DATE<<endl;
   158 			
   159 		return 0;	
   160 	}		
   161 	
   162 	// Use /usr/share/vym or /usr/local/share/vym or . ?
   163 	// First try options
   164 	if (options.isOn ("local"))
   165 	{
   166 		vymBaseDir.setPath (vymBaseDir.currentDirPath());
   167 	} else
   168 	// then look for environment variable
   169 	if (getenv("VYMHOME")!=0)
   170 	{
   171 		vymBaseDir.setPath (getenv("VYMHOME"));
   172 	} else
   173 	// ok, let's find my way on my own
   174 	{
   175 		vymBaseDir.setPath ("/usr/share/vym");
   176 		if (!vymBaseDir.exists())
   177 		{
   178 			vymBaseDir.setPath ("/usr/local/share/vym");
   179 			if (!vymBaseDir.exists())
   180 				vymBaseDir.setPath(vymBaseDir.currentDirPath() );
   181 		}		
   182 	}
   183 
   184 	iconPath=vymBaseDir.path()+"/icons/";
   185 	flagsPath=vymBaseDir.path()+"/flags/";
   186 
   187 	// Some directories
   188 	lastImageDir=QDir().current();
   189 	lastFileDir=QDir().current();
   190 
   191 	if (options.isOn ("help"))
   192 	{
   193 		cout << options.getHelpText().ascii()<<endl;
   194 		return 0;	
   195 	}	
   196 
   197 	if (options.isOn ("test"))
   198 	{
   199 		// FIXME testing string option only
   200 		cout << "Testing: "<<options.getArg("test").ascii()<< endl;
   201 	}	
   202 
   203     q3InitNetworkProtocols();
   204 
   205 
   206 	// Initialize translations
   207 	QTranslator translator (0);
   208 	translator.load( QString("vym_")+QTextCodec::locale(), vymBaseDir.path() + "/lang");
   209     app.installTranslator( &translator );
   210 
   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;
   216 
   217 	// Initialize window of TextEditor
   218 	textEditor = new TextEditor();
   219 	textEditor->setIcon (QPixmap (iconPath+"vym-editor.png"));
   220 	if (textEditor->showWithMain()) textEditor->show();
   221 
   222 	// Initialize mainwindow 
   223     Main m;
   224 	//m.resize(m.sizeHint());
   225 	m.setIcon (QPixmap (iconPath+"vym-48x48.png"));
   226 	m.show();
   227 	m.fileNew();
   228 	m.loadCmdLine();
   229 
   230 	// For benchmarking we may want to quit immediatly after drawing
   231 	if (options.isOn ("quit"))
   232 	{
   233 		return 0;
   234 	}	
   235 
   236     QObject::connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) );
   237 
   238     return app.exec();
   239 }
   240