SVN checkout 11/12/2010
[monav:monav.git] / preprocessor / main.cpp
1 /*
2 Copyright 2010  Christian Vetter veaac.fdirct@gmail.com
3
4 This file is part of MoNav.
5
6 MoNav is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 MoNav is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with MoNav.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #include "preprocessingwindow.h"
21 #include <QtPlugin>
22 #include <QtGui/QApplication>
23 #include <QMessageBox>
24 #include <QThread>
25 #include <cstdio>
26
27 Q_IMPORT_PLUGIN( mapnikrenderer );
28 Q_IMPORT_PLUGIN( contractionhierarchies );
29 Q_IMPORT_PLUGIN( gpsgrid );
30 Q_IMPORT_PLUGIN( unicodetournamenttrie );
31 Q_IMPORT_PLUGIN( osmrenderer );
32 Q_IMPORT_PLUGIN( osmimporter );
33
34 bool isSilent = false;
35
36 void MessageBoxHandler(QtMsgType type, const char *msg)
37 {
38         if ( !isSilent && QApplication::instance() != NULL ) {
39                 const bool isGuiThread = QThread::currentThread() == QApplication::instance()->thread();
40                 if ( isGuiThread ) {
41                         switch (type) {
42                         case QtDebugMsg:
43                                 //QMessageBox::information(0, "Debug message", msg, QMessageBox::Ok);
44                                 break;
45                         case QtWarningMsg:
46                                 QMessageBox::warning(0, "Warning", msg, QMessageBox::Ok);
47                                 break;
48                         case QtCriticalMsg:
49                                 QMessageBox::critical(0, "Critical error", msg, QMessageBox::Ok);
50                                 break;
51                         case QtFatalMsg:
52                                 QMessageBox::critical(0, "Fatal error", msg, QMessageBox::Ok);
53                                 abort();
54                         }
55                 }
56         }
57         printf( "%s\n", msg );
58 }
59
60 void help()
61 {
62         qDebug( "MoNav Preprocessor Usage:" );
63         qDebug( "\t--silent             No GUI will be used. A preprocessing action has to be specified." );
64         qDebug( "\t--all                Action: All preprocessing steps will be computed." );
65         qDebug( "\t--daemon             Action: All preprocessing steps for the routing daemon will be computed." );
66         qDebug( "\t--config=<filename>  Specifies a config file." );
67         qDebug( "\t--name=<string>      Overwrite the name specified in the settings." );
68         qDebug( "\t--description=<text> Overwrite the description specified in the settings." );
69         qDebug( "\t--image=<filename>   Overwrite the image specified in the settings." );
70         qDebug( "\t--input=<filename>   Overwrite the input filename specified in the settings." );
71         qDebug( "\t--ouput=<directory>  Overwrite the output directory specified in the settings." );
72         qDebug( "\t--threads=<number>   Overwrite the number of threads specified in the settings." );
73 }
74
75 int main(int argc, char *argv[])
76 {
77         qInstallMsgHandler( MessageBoxHandler );
78         QApplication a(argc, argv);
79
80         QStringList args = QApplication::arguments();
81         if ( args.contains( "--help" ) || args.contains( "-h" ) || args.contains( "/?" ) ) {
82                 help();
83                 return 0;
84         }
85         if ( args.contains( "--silent" ) )
86                 isSilent = true;
87
88         if ( isSilent ) {
89                 QString configFile;
90                 int index = args.indexOf( QRegExp( "--config=.*" ) );
91                 if ( index != -1 )
92                         configFile = args[index].section( '=', 1 );
93                 PreprocessingWindow w;
94                 if ( args.contains( "--all") )
95                         return w.preprocessAll() ? 0 : 1;
96                 if ( args.contains( "--daemon" ) )
97                         return w.preprocessDaemon() ? 0 : 1;
98                 help();
99         } else {
100                 PreprocessingWindow w;
101                 w.show();
102                 return a.exec();
103         }
104 }