main.cpp
author insilmaril
Tue, 13 Jun 2006 08:49:12 +0000
branchqt4-port
changeset 3 6a0342b3c519
parent 2 608f976aa7bb
child 4 ec3d2962893d
permissions -rw-r--r--
ported standard flags to QT4
     1 #include <QApplication>
     2 #include <qpixmap.h>
     3 #include <qtranslator.h>
     4 #include <qdir.h>
     5 #include <q3ptrlist.h>
     6 #include <qtextcodec.h>
     7 #include <q3network.h>
     8 #include <qmime.h>
     9 //Added by qt3to4:
    10 #include <Q3PopupMenu>
    11 #include <QActionGroup>
    12 
    13 #include "settings.h"
    14 #include "options.h"
    15 #include "mainwindow.h"
    16 
    17 #include "flagrowobj.h"
    18 
    19 // Global variables
    20 TextEditor *textEditor;			// used in Constr. of LinkableMapObj
    21 								// initialized in mainwindow
    22 
    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
    29 bool clipboardEmpty;			
    30 FlagRowObj *systemFlagsDefault;	// used to copy from in LinkableMapObj
    31 FlagRowObj *standardFlagsDefault;
    32 
    33 // Lists of actions
    34 // (QActionGroup could not be "enabled")
    35 Q3PtrList <QAction> actionListBranches;
    36 
    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;
    73 
    74 QAction *actionFormatColor;		
    75 QAction *actionFormatPickColor;		
    76 QAction *actionFormatColorBranch;
    77 QAction *actionFormatColorSubtree;
    78 QAction *actionFormatBackColor;
    79 QAction *actionFormatLinkColorHint;
    80 QAction *actionFormatLinkColor;		
    81 
    82 QActionGroup *actionGroupModModes;
    83 QAction *actionModModeColor;
    84 QAction *actionModModeLink;
    85 QAction *actionModModeCopy;
    86 
    87 QActionGroup *actionGroupFormatFrameTypes;
    88 QAction *actionFormatFrameNone;
    89 QAction *actionFormatFrameRectangle;
    90 
    91 QActionGroup *actionGroupFormatLinkStyles;
    92 QAction *actionFormatIncludeImagesVer;
    93 QAction *actionFormatIncludeImagesHor;
    94 QAction *actionFormatHideLinkUnselected;
    95 QAction *actionFormatLinkStyleLine;
    96 QAction *actionFormatLinkStyleParabel;
    97 QAction *actionFormatLinkStylePolyLine;
    98 QAction *actionFormatLinkStylePolyParabel;
    99 
   100 QAction *actionViewToggleNoteEditor;
   101 QAction *actionViewToggleHistoryWindow;
   102 
   103 QAction *actionSettingsAutoselectHeading;
   104 QAction *actionSettingsAutoselectText;
   105 QAction *actionSettingsPasteNewHeading;
   106 QAction *actionSettingsAutoedit;
   107 QAction *actionSettingsUseDelKey;
   108 QAction *actionSettingsUseFlagGroups;
   109 QAction *actionSettingsUseHideExport;
   110 
   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;
   123 
   124 
   125 Settings settings ("vym","vym"); // Organization, Application name
   126 Options options;
   127 
   128 int statusbarTime=3500;
   129 
   130 int main(int argc, char** argv)
   131 {
   132     QApplication app(argc,argv);
   133 
   134 
   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");
   148 	if (options.parse())
   149 	{
   150 //FIXME QT3		cout << endl << options.getHelpText()<<endl;
   151 		return 1;
   152 	}
   153 
   154 	if (options.isOn ("version"))
   155 	{
   156 		cout << "vym version "<<__VYM_VERSION
   157 			<<"  (c) 2004 Uwe Drechsel - "
   158 			<<__BUILD_DATE<<endl;
   159 			
   160 		return 0;	
   161 	}		
   162 	
   163 	// Use /usr/share/vym or /usr/local/share/vym or . ?
   164 	// First try options
   165 	if (options.isOn ("local"))
   166 	{
   167 		vymBaseDir.setPath (vymBaseDir.currentDirPath());
   168 	} else
   169 	// then look for environment variable
   170 	if (getenv("VYMHOME")!=0)
   171 	{
   172 		vymBaseDir.setPath (getenv("VYMHOME"));
   173 	} else
   174 	// ok, let's find my way on my own
   175 	{
   176 		vymBaseDir.setPath ("/usr/share/vym");
   177 		if (!vymBaseDir.exists())
   178 		{
   179 			vymBaseDir.setPath ("/usr/local/share/vym");
   180 			if (!vymBaseDir.exists())
   181 				vymBaseDir.setPath(vymBaseDir.currentDirPath() );
   182 		}		
   183 	}
   184 
   185 	iconPath=vymBaseDir.path()+"/icons/";
   186 	flagsPath=vymBaseDir.path()+"/flags/";
   187 
   188 	if (options.isOn ("help"))
   189 	{
   190 //FIXME QT3 		cout << options.getHelpText()<<endl;
   191 		return 0;	
   192 	}	
   193 
   194 	if (options.isOn ("test"))
   195 	{
   196 		// FIXME testing string option only
   197 //FIXME QT3		cout << "Testing: "<<options.getArg("test")<< endl;
   198 	}	
   199 
   200 
   201     Q3MimeSourceFactory *factory = Q3MimeSourceFactory::defaultFactory();
   202     factory->setPixmap("vym-128x128", QPixmap(iconPath+"vym-128x128.png"));
   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