Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <QApplication>
00029 #include <QtCore/QDir>
00030 #include "rtabmap/utilite/UEventsManager.h"
00031 #include "rtabmap/core/RtabmapThread.h"
00032 #include "rtabmap/core/Rtabmap.h"
00033 #include "rtabmap/gui/MainWindow.h"
00034 #include <QMessageBox>
00035 #include "rtabmap/utilite/UObjDeletionThread.h"
00036 #include "rtabmap/utilite/UFile.h"
00037 #include "rtabmap/utilite/UConversion.h"
00038 #include "ObjDeletionHandler.h"
00039
00040 using namespace rtabmap;
00041
00042 int main(int argc, char* argv[])
00043 {
00044
00045 ULogger::setType(ULogger::kTypeConsole);
00046 ULogger::setLevel(ULogger::kInfo);
00047
00048
00049 QApplication * app = new QApplication(argc, argv);
00050 app->setStyleSheet("QMessageBox { messagebox-text-interaction-flags: 5; }");
00051
00052 ParametersMap parameters = Parameters::parseArguments(argc, argv, false);
00053 MainWindow * mainWindow = new MainWindow();
00054 app->installEventFilter(mainWindow);
00055
00056 std::string database;
00057 for(int i=1; i<argc; ++i)
00058 {
00059 std::string value = uReplaceChar(argv[i], '~', UDirectory::homeDir());
00060 if(UFile::exists(value) &&
00061 UFile::getExtension(value).compare("db") == 0)
00062 {
00063 database = value;
00064 break;
00065 }
00066 }
00067
00068 UINFO("Program started...");
00069
00070 UEventsManager::addHandler(mainWindow);
00071
00072
00073 if(mainWindow->isSavedMaximized())
00074 {
00075 mainWindow->showMaximized();
00076 }
00077 else
00078 {
00079 mainWindow->show();
00080 }
00081
00082 RtabmapThread * rtabmap = new RtabmapThread(new Rtabmap());
00083 rtabmap->start();
00084 UEventsManager::addHandler(rtabmap);
00085
00086 if(!database.empty())
00087 {
00088 mainWindow->openDatabase(database.c_str(), parameters);
00089 }
00090 else if(parameters.size())
00091 {
00092 mainWindow->updateParameters(parameters);
00093 }
00094
00095
00096 app->connect( app, SIGNAL( lastWindowClosed() ),
00097 app, SLOT( quit() ) );
00098 app->exec();
00099
00100
00101 UEventsManager::removeHandler(mainWindow);
00102 UEventsManager::removeHandler(rtabmap);
00103
00104 UINFO("Killing threads...");
00105 rtabmap->join(true);
00106
00107 UINFO("Closing RTAB-Map...");
00108 delete rtabmap;
00109 delete mainWindow;
00110 delete app;
00111 UINFO("All done!");
00112
00113 return 0;
00114 }