/media/hdb5/canorusNightlyBuildSystem/trunk/src/main.cpp

Go to the documentation of this file.
00001 
00008 #include <QApplication>
00009 #include <QSplashScreen>
00010 #include <QTranslator>
00011 #include <QFont>
00012 #include <QLocale>
00013 
00014 // Python.h needs to be loaded first!
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         // Set main application properties
00053         CACanorus::initMain();
00054         
00055         // Parse switch and settings command line arguments
00056         if ( !CACanorus::parseSettingsArguments(argc, argv) )
00057                 return 0;
00058         
00059         splash.show();
00060         
00061         // Load system translation if found
00062         QList<QString> translationLocations =
00063                 CACanorus::locateResource(QString("lang/") + QLocale::system().name() + ".qm"); // load language_COUNTRY.qm
00064         if (!translationLocations.size())
00065                 translationLocations = CACanorus::locateResource(QString("lang/") + QLocale::system().name().left(2) + ".qm"); // if not found, load language.qm only
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) // \todo add Arabic, etc.
00074                 mainApp.setLayoutDirection(Qt::RightToLeft);
00075         
00076         // Init MIDI devices
00077         CACanorus::initPlayback();
00078         
00079         // Load config file
00080         CASettingsDialog::CASettingsPage showSettingsPage = CACanorus::initSettings();
00081         
00082         // Init dialogs etc.
00083         CACanorus::initCommonGUI();
00084                 
00085         // Enable scripting and plugins subsystem
00086         splash.showMessage( QObject::tr("Initializing Scripting engine", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00087         mainApp.processEvents();
00088         CACanorus::initScripting();
00089                 
00090         // Finds all the plugins
00091         splash.showMessage( QObject::tr("Reading Plugins", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00092         mainApp.processEvents();
00093         CAPluginManager::readPlugins();
00094         
00095         // Initialize autosave
00096         splash.showMessage( QObject::tr("Initializing Automatic recovery", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00097         mainApp.processEvents();
00098         CACanorus::initAutoRecovery();
00099         
00100         // Initialize undo/redo stacks
00101         splash.showMessage( QObject::tr("Initializing Undo/Redo framework", "splashScreen"), Qt::AlignBottom|Qt::AlignLeft, Qt::white );
00102         mainApp.processEvents();
00103         CACanorus::initUndo();
00104         
00105         // Check for any crashed Canorus sessions and open the recovery files
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         // Creates a main window of a document to open if passed in command line
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         // If no file to open is passed in command line, create a new default main window. It's shown automatically by CACanorus::addMainWin().
00116         if (!CACanorus::mainWinCount()) {
00117                 CAMainWin *mainWin = new CAMainWin();
00118                 mainWin->newDocument();
00119                 mainWin->show();
00120         }
00121         splash.close();
00122         
00123         // Show settings dialog, if needed (eg. MIDI setup when running Canorus for the first time)
00124         if ( showSettingsPage != CASettingsDialog::UndefinedSettings ) {
00125                 CASettingsDialog( showSettingsPage, CACanorus::mainWinAt(0) );
00126         }
00127         
00128         return mainApp.exec();
00129 }

Generated on Sat Feb 9 13:06:25 2008 for Canorus by  doxygen 1.5.3