00001
00008 #include <QApplication>
00009 #include <QSplashScreen>
00010 #include <QTranslator>
00011 #include <QFont>
00012 #include <QLocale>
00013
00014
00015 #include "canorus.h"
00016 #include "ui/mainwin.h"
00017 #include "ui/settingsdialog.h"
00018 #include "interface/pluginmanager.h"
00019
00020 #include <iostream>
00021
00022 #ifdef Q_WS_X11
00023 #include <signal.h>
00024 void catch_sig(int)
00025 {
00026 qApp->quit();
00027 }
00028 #endif
00029
00034 int main(int argc, char *argv[]) {
00035 QApplication mainApp(argc, argv);
00036
00037 #ifdef Q_WS_X11
00038 signal(SIGINT, catch_sig);
00039 signal(SIGQUIT, catch_sig);
00040 #endif
00041
00042 QPixmap splashPixmap( 400, 300 );
00043 if ( CACanorus::locateResource("images/splash.png").size() )
00044 splashPixmap = QPixmap( CACanorus::locateResource("images/splash.png")[0] );
00045
00046 QSplashScreen splash( splashPixmap );
00047 QFont font("Century Schoolbook L");
00048 font.setPixelSize(17);
00049 splash.setFont(font);
00050 mainApp.processEvents();
00051
00052
00053 CACanorus::initMain();
00054
00055
00056 if ( !CACanorus::parseSettingsArguments(argc, argv) )
00057 return 0;
00058
00059 splash.show();
00060
00061
00062 QList<QString> translationLocations =
00063 CACanorus::locateResource(QString("lang/") + QLocale::system().name() + ".qm");
00064 if (!translationLocations.size())
00065 translationLocations = CACanorus::locateResource(QString("lang/") + QLocale::system().name().left(2) + ".qm");
00066
00067 QTranslator translator;
00068 if (translationLocations.size()) {
00069 translator.load(translationLocations[0]);
00070 mainApp.installTranslator(&translator);
00071 }
00072
00073 if(QLocale::system().language() == QLocale::Hebrew)
00074 mainApp.setLayoutDirection(Qt::RightToLeft);
00075
00076
00077 CACanorus::initPlayback();
00078
00079
00080 CASettingsDialog::CASettingsPage showSettingsPage = CACanorus::initSettings();
00081
00082
00083 CACanorus::initCommonGUI();
00084
00085
00086 splash.showMessage( QObject::tr("Initializing Scripting engine", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00087 mainApp.processEvents();
00088 CACanorus::initScripting();
00089
00090
00091 splash.showMessage( QObject::tr("Reading Plugins", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00092 mainApp.processEvents();
00093 CAPluginManager::readPlugins();
00094
00095
00096 splash.showMessage( QObject::tr("Initializing Automatic recovery", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00097 mainApp.processEvents();
00098 CACanorus::initAutoRecovery();
00099
00100
00101 splash.showMessage( QObject::tr("Initializing Undo/Redo framework", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00102 mainApp.processEvents();
00103 CACanorus::initUndo();
00104
00105
00106 splash.showMessage( QObject::tr("Searching for recovery documents", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00107 mainApp.processEvents();
00108 CACanorus::autoRecovery()->openRecovery();
00109
00110
00111 splash.showMessage( QObject::tr("Initializing Main window", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00112 mainApp.processEvents();
00113 CACanorus::parseOpenFileArguments(argc, argv);
00114
00115
00116 if (!CACanorus::mainWinCount()) {
00117 CAMainWin *mainWin = new CAMainWin();
00118 mainWin->newDocument();
00119 mainWin->show();
00120 }
00121 splash.close();
00122
00123
00124 if ( showSettingsPage != CASettingsDialog::UndefinedSettings ) {
00125 CASettingsDialog( showSettingsPage, CACanorus::mainWinAt(0) );
00126 }
00127
00128 return mainApp.exec();
00129 }