main.cpp
author insilmaril
Mon, 20 Nov 2006 12:12:05 +0000
changeset 405 a4532e5c2ce3
parent 404 53efc2562a7d
child 406 1c8ff1928b97
permissions -rw-r--r--
historywindow moved to mainwindow. Started to get rid of Q3PtrList finally
insilmaril@366
     1
#include <QApplication>
insilmaril@366
     2
#include <q3network.h>
insilmaril@0
     3
insilmaril@404
     4
#include "flagrowobj.h"
insilmaril@404
     5
#include "mainwindow.h"
insilmaril@404
     6
#include "options.h"
insilmaril@0
     7
#include "settings.h"
insilmaril@404
     8
#include "version.h"
insilmaril@0
     9
insilmaril@0
    10
// Global variables
insilmaril@0
    11
TextEditor *textEditor;			// used in Constr. of LinkableMapObj
insilmaril@0
    12
								// initialized in mainwindow
insilmaril@404
    13
QString vymName(__VYM_NAME);
insilmaril@404
    14
QString vymVersion(__VYM_VERSION);
insilmaril@404
    15
QString vymBuildDate(__VYM_BUILD_DATE);
insilmaril@0
    16
insilmaril@0
    17
Main *mainWindow;				// used in BranchObj::select()								
insilmaril@164
    18
QString tmpVymDir;				// All temp files go there, created in mainwindow
insilmaril@166
    19
QString clipboardDir;			// Clipboard used in all mapEditors
insilmaril@215
    20
QDir vymBaseDir;				// Containing all styles, scripts, images, ...
insilmaril@366
    21
QDir lastImageDir;
insilmaril@366
    22
QDir lastFileDir;
insilmaril@269
    23
QString iconPath;				// Pointing to icons used for toolbars
insilmaril@269
    24
QString flagsPath;				// Pointing to flags
insilmaril@166
    25
bool clipboardEmpty;			
insilmaril@0
    26
FlagRowObj *systemFlagsDefault;	// used to copy from in LinkableMapObj
insilmaril@0
    27
FlagRowObj *standardFlagsDefault;
insilmaril@0
    28
insilmaril@366
    29
insilmaril@366
    30
Settings settings ("InSilmaril","vym"); // Organization, Application name
insilmaril@366
    31
insilmaril@0
    32
Options options;
insilmaril@366
    33
ImageIO imageIO;
insilmaril@0
    34
insilmaril@0
    35
int statusbarTime=3500;
insilmaril@0
    36
insilmaril@394
    37
int main(int argc, char* argv[])
insilmaril@0
    38
{
insilmaril@394
    39
	//Q_INIT_RESOURCE (application);
insilmaril@366
    40
insilmaril@0
    41
    QApplication app(argc,argv);
insilmaril@0
    42
insilmaril@0
    43
insilmaril@0
    44
	// Reading and initializing options commandline options
insilmaril@0
    45
	options.add ("version", SwitchOption, "v","version");
insilmaril@243
    46
	options.add ("local", SwitchOption, "l", "local");
insilmaril@0
    47
	options.add ("help", SwitchOption, "h", "help");
insilmaril@0
    48
	options.add ("quit", SwitchOption, "q", "quit");
insilmaril@0
    49
	options.add ("test", StringOption, "t", "test");
insilmaril@0
    50
	options.setHelpText (
insilmaril@0
    51
		"VYM - View Your Mind\n"
insilmaril@0
    52
		"--------------------\n\n"
insilmaril@0
    53
		"Information about vym can be found in vym.pdf,\n"
insilmaril@0
    54
		"which should be part of the vym package.\n"
insilmaril@0
    55
		"It is also available at the project homepage:\n\n"
insilmaril@0
    56
		"http://www.InSilmaril.de/vym\n");
insilmaril@0
    57
	if (options.parse())
insilmaril@0
    58
	{
insilmaril@366
    59
		cout << endl << options.getHelpText().ascii()<<endl;
insilmaril@0
    60
		return 1;
insilmaril@0
    61
	}
insilmaril@0
    62
insilmaril@0
    63
	if (options.isOn ("version"))
insilmaril@0
    64
	{
insilmaril@185
    65
		cout << "vym version "<<__VYM_VERSION
insilmaril@366
    66
			<<"  (c) 2004-2006 Uwe Drechsel - "
insilmaril@404
    67
			<<__VYM_BUILD_DATE<<endl;
insilmaril@0
    68
			
insilmaril@0
    69
		return 0;	
insilmaril@0
    70
	}		
insilmaril@0
    71
	
insilmaril@243
    72
	// Use /usr/share/vym or /usr/local/share/vym or . ?
insilmaril@269
    73
	// First try options
insilmaril@243
    74
	if (options.isOn ("local"))
insilmaril@243
    75
	{
insilmaril@243
    76
		vymBaseDir.setPath (vymBaseDir.currentDirPath());
insilmaril@269
    77
	} else
insilmaril@269
    78
	// then look for environment variable
insilmaril@269
    79
	if (getenv("VYMHOME")!=0)
insilmaril@269
    80
	{
insilmaril@269
    81
		vymBaseDir.setPath (getenv("VYMHOME"));
insilmaril@269
    82
	} else
insilmaril@269
    83
	// ok, let's find my way on my own
insilmaril@243
    84
	{
insilmaril@390
    85
		#if defined (Q_OS_MACX)
insilmaril@394
    86
			vymBaseDir.setPath(vymBaseDir.currentDirPath() +"/vym.app/Contents/Resources");
insilmaril@390
    87
insilmaril@390
    88
		#else
insilmaril@390
    89
			vymBaseDir.setPath ("/usr/share/vym");
insilmaril@308
    90
			if (!vymBaseDir.exists())
insilmaril@390
    91
			{
insilmaril@390
    92
				vymBaseDir.setPath ("/usr/local/share/vym");
insilmaril@390
    93
				if (!vymBaseDir.exists())
insilmaril@390
    94
					vymBaseDir.setPath(vymBaseDir.currentDirPath() );
insilmaril@390
    95
			}		
insilmaril@390
    96
		#endif
insilmaril@243
    97
	}
insilmaril@243
    98
insilmaril@269
    99
	iconPath=vymBaseDir.path()+"/icons/";
insilmaril@269
   100
	flagsPath=vymBaseDir.path()+"/flags/";
insilmaril@269
   101
insilmaril@366
   102
	// Some directories
insilmaril@366
   103
	lastImageDir=QDir().current();
insilmaril@366
   104
	lastFileDir=QDir().current();
insilmaril@366
   105
insilmaril@0
   106
	if (options.isOn ("help"))
insilmaril@0
   107
	{
insilmaril@366
   108
		cout << options.getHelpText().ascii()<<endl;
insilmaril@0
   109
		return 0;	
insilmaril@0
   110
	}	
insilmaril@0
   111
insilmaril@366
   112
    q3InitNetworkProtocols();
insilmaril@243
   113
insilmaril@243
   114
insilmaril@243
   115
	// Initialize translations
insilmaril@243
   116
	QTranslator translator (0);
insilmaril@243
   117
	translator.load( QString("vym_")+QTextCodec::locale(), vymBaseDir.path() + "/lang");
insilmaril@243
   118
    app.installTranslator( &translator );
insilmaril@243
   119
insilmaril@243
   120
	// Initializing the row of system flags
insilmaril@243
   121
	// is done in first call to MapEditor(),
insilmaril@243
   122
	// because we need at least one canvas first
insilmaril@243
   123
	systemFlagsDefault=NULL;
insilmaril@243
   124
	standardFlagsDefault=NULL;
insilmaril@243
   125
insilmaril@0
   126
	// Initialize window of TextEditor
insilmaril@0
   127
	textEditor = new TextEditor();
insilmaril@269
   128
	textEditor->setIcon (QPixmap (iconPath+"vym-editor.png"));
insilmaril@0
   129
	if (textEditor->showWithMain()) textEditor->show();
insilmaril@0
   130
insilmaril@166
   131
	// Initialize mainwindow 
insilmaril@0
   132
    Main m;
insilmaril@0
   133
	//m.resize(m.sizeHint());
insilmaril@269
   134
	m.setIcon (QPixmap (iconPath+"vym-48x48.png"));
insilmaril@0
   135
	m.show();
insilmaril@0
   136
	m.fileNew();
insilmaril@0
   137
	m.loadCmdLine();
insilmaril@0
   138
insilmaril@0
   139
	// For benchmarking we may want to quit immediatly after drawing
insilmaril@0
   140
	if (options.isOn ("quit"))
insilmaril@0
   141
	{
insilmaril@0
   142
		return 0;
insilmaril@0
   143
	}	
insilmaril@0
   144
insilmaril@0
   145
    QObject::connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) );
insilmaril@0
   146
insilmaril@0
   147
    return app.exec();
insilmaril@0
   148
}
insilmaril@0
   149