main.cpp
author insilmaril
Thu, 21 Apr 2005 19:14:38 +0000
changeset 97 0b048b6bb6f4
parent 94 6783e13bb05d
child 98 58adc2d2ed08
permissions -rw-r--r--
xlink color, width and defaults can be saved/ restored now
     1 #include <qapplication.h>
     2 #include <qpixmap.h>
     3 #include <qtranslator.h>
     4 #include <qdir.h>
     5 #include <qtextcodec.h>
     6 
     7 #include "settings.h"
     8 #include "options.h"
     9 #include "mainwindow.h"
    10 
    11 #include "icons/vym-48x48.xpm"
    12 #include "icons/vym-editor.xpm"
    13 
    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 MapEditor *clipboardME;			
    22 FlagRowObj *systemFlagsDefault;	// used to copy from in LinkableMapObj
    23 FlagRowObj *standardFlagsDefault;
    24 
    25 // Actions which change sometimes
    26 QAction *actionFileSave;
    27 QAction *actionFilePrint;
    28 QAction *actionEditUndo;
    29 QAction *actionEditCopy;
    30 QAction *actionEditCut;
    31 QAction *actionEditPaste;
    32 QAction *actionEditMoveUp;
    33 QAction *actionEditMoveDown;
    34 QAction *actionEditToggleScroll;
    35 QAction *actionEditOpenURL;
    36 QAction *actionEditURL;
    37 QAction *actionEditHeading2URL;
    38 QAction *actionEditBugzilla2URL;
    39 QAction *actionEditOpenVymLink;
    40 QAction *actionEditVymLink;
    41 QAction *actionEditDeleteVymLink;
    42 QAction *actionEditMapInfo;
    43 QAction *actionEditHeading;
    44 QAction *actionEditDelete;
    45 QAction *actionEditAddBranch;
    46 QAction *actionEditAddBranchAbove;
    47 QAction *actionEditAddBranchBelow;
    48 QAction *actionEditImportAdd;
    49 QAction *actionEditImportReplace;
    50 QAction *actionEditSaveBranch;
    51 QAction *actionEditSelectFirst;
    52 QAction *actionEditSelectLast;
    53 QAction *actionEditLoadImage;
    54 QAction *actionEditToggleFloatExport;
    55 
    56 QAction *actionFormatColor;		
    57 QAction *actionFormatPickColor;		
    58 QAction *actionFormatColorBranch;
    59 QAction *actionFormatColorSubtree;
    60 QAction *actionFormatBackColor;
    61 QAction *actionFormatLinkColorHint;
    62 QAction *actionFormatLinkColor;		
    63 
    64 QActionGroup *actionGroupModModes;
    65 QAction *actionModModeColor;
    66 QAction *actionModModeLink;
    67 QAction *actionModModeCopy;
    68 
    69 QActionGroup *actionGroupFormatFrameTypes;
    70 QAction *actionFormatFrameNone;
    71 QAction *actionFormatFrameRectangle;
    72 
    73 QActionGroup *actionGroupFormatLinkStyles;
    74 QAction *actionFormatLinkStyleLine;
    75 QAction *actionFormatLinkStyleParabel;
    76 QAction *actionFormatLinkStylePolyLine;
    77 QAction *actionFormatLinkStylePolyParabel;
    78 
    79 QAction *actionViewToggleNoteEditor;
    80 
    81 QAction *actionSettingsAutoselectHeading;
    82 QAction *actionSettingsAutoselectText;
    83 QAction *actionSettingsPasteNewHeading;
    84 QAction *actionSettingsAutoedit;
    85 QAction *actionSettingsUseDelKey;
    86 
    87 QPopupMenu *branchContextMenu;
    88 QPopupMenu *branchLinksContextMenu;
    89 QPopupMenu *branchLinksContextMenuDup;
    90 QPopupMenu *floatimageContextMenu;
    91 QPopupMenu *saveImageFormatMenu;
    92 QPopupMenu *canvasContextMenu;
    93 QPopupMenu *lastMapsMenu;
    94 QPopupMenu *exportMenu;
    95 QPopupMenu *exportImageFormatMenu;
    96 
    97 
    98 Settings settings;
    99 Options options;
   100 
   101 int statusbarTime=3500;
   102 
   103 int main(int argc, char** argv)
   104 {
   105     QApplication app(argc,argv);
   106 
   107 
   108 	// Use /usr/share/vym or /usr/local/share/vym or .
   109 	QDir shareDir;
   110 	shareDir.setPath ("/usr/share/vym");
   111 	if (!shareDir.exists())
   112         shareDir.setPath ("/usr/local/share/vym");
   113 	if (!shareDir.exists())
   114         shareDir.setPath(".");
   115 
   116 	// Initialize translations
   117 	QTranslator translator (0);
   118 	translator.load( QString("vym_")+QTextCodec::locale(), shareDir.path() + "/lang");
   119     app.installTranslator( &translator );
   120 
   121 	// Initializing the row of system flags
   122 	// is done in first call to MapEditor(),
   123 	// because we need at least one canvas first
   124 	systemFlagsDefault=NULL;
   125 	standardFlagsDefault=NULL;
   126 
   127 	// Reading and initializing options commandline options
   128 	options.add ("version", SwitchOption, "v","version");
   129 	options.add ("help", SwitchOption, "h", "help");
   130 	options.add ("quit", SwitchOption, "q", "quit");
   131 	options.add ("test", StringOption, "t", "test");
   132 	options.setHelpText (
   133 		"VYM - View Your Mind\n"
   134 		"--------------------\n\n"
   135 		"Information about vym can be found in vym.pdf,\n"
   136 		"which should be part of the vym package.\n"
   137 		"It is also available at the project homepage:\n\n"
   138 		"http://www.InSilmaril.de/vym\n");
   139 	if (options.parse())
   140 	{
   141 		cout << endl << options.getHelpText()<<endl;
   142 		return 1;
   143 	}
   144 
   145 	if (options.isOn ("version"))
   146 	{
   147 		cout << "vym version "<<__VYM_VERSION__
   148 			<<"  (c) 2004 Uwe Drechsel - "
   149 			<<__BUILD_DATE__<<endl;
   150 			
   151 		return 0;	
   152 	}		
   153 	
   154 	if (options.isOn ("help"))
   155 	{
   156 		cout << options.getHelpText()<<endl;
   157 		return 0;	
   158 	}	
   159 
   160 	if (options.isOn ("test"))
   161 	{
   162 		// FIXME testing string option only
   163 		cout << "Testing: "<<options.getArg("test")<< endl;
   164 	}	
   165 
   166 	// Initialize window of TextEditor
   167 	textEditor = new TextEditor();
   168 	textEditor->setIcon (QPixmap (vym_editor_xpm));
   169 	if (textEditor->showWithMain()) textEditor->show();
   170 
   171 	clipboardME = new MapEditor();
   172 	clipboardME->resize (800,600);
   173 	clipboardME->setCaption("VYM - clipboard");
   174 	clipboardME->hide();
   175 
   176 	// Initialize mainwindow after Mapeditors (because of Flags)
   177     Main m;
   178 	//m.resize(m.sizeHint());
   179 	m.setIcon (QPixmap (vym_logo_xpm));
   180 	m.show();
   181 	m.fileNew();
   182 	m.loadCmdLine();
   183 
   184 	// For benchmarking we may want to quit immediatly after drawing
   185 	if (options.isOn ("quit"))
   186 	{
   187 		return 0;
   188 	}	
   189 
   190     QObject::connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) );
   191 
   192     return app.exec();
   193 }
   194