int main(int argc, const char** argv) { // list of all the valid options Map<String, String> valid_options, valid_flags, option_lists; valid_flags["--help"] = "help"; valid_flags["--debug"] = "debug"; valid_options["-ini"] = "ini"; // invalid, but keep for now in order to inform users where to find this functionality now valid_options["-execute"] = "execute"; valid_options["-out_dir"] = "out_dir"; Param param; param.parseCommandLine(argc, argv, valid_options, valid_flags, option_lists); // '--help' given if (param.exists("help")) { print_usage(); return 0; } // '-debug' given if (param.exists("debug")) { LOG_INFO << "Debug flag provided. Enabling 'LOG_DEBUG' ..." << std::endl; Log_debug.insert(cout); // allows to use LOG_DEBUG << "something" << std::endl; } // test if unknown options were given if (param.exists("unknown")) { // if TOPPAS is packed as Mac OS X bundle it will get a -psn_.. parameter by default from the OS // if this is the only unknown option it will be ignored .. maybe this should be solved directly // in Param.h if (!(param.getValue("unknown").toString().hasSubstring("-psn") && !param.getValue("unknown").toString().hasSubstring(", "))) { LOG_ERROR << "Unknown option(s) '" << param.getValue("unknown").toString() << "' given. Aborting!" << endl; print_usage(Log_error); return 1; } } try { if (param.exists("execute") || param.exists("out_dir")) { LOG_ERROR << "The parameters '-execute' and '-out_dir' are not valid anymore. This functionality has been moved to the ExecutePipeline tool." << endl; return 1; } QApplicationTOPP a(argc, const_cast<char**>(argv)); a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit())); TOPPASBase* mw = new TOPPASBase(); mw->show(); a.connect(&a, SIGNAL(fileOpen(QString)), mw, SLOT(openToppasFile(QString))); // Create the splashscreen that is displayed while the application loads (version is drawn dynamically) QPixmap qpm(":/TOPPAS_Splashscreen.png"); QPainter pt_ver(&qpm); pt_ver.setFont(QFont("Helvetica [Cronyx]", 15, 2, true)); pt_ver.setPen(QColor(44, 50, 152)); pt_ver.drawText(490, 84, VersionInfo::getVersion().toQString()); QSplashScreen* splash_screen = new QSplashScreen(qpm); splash_screen->show(); QApplication::processEvents(); StopWatch stop_watch; stop_watch.start(); if (param.exists("ini")) { mw->loadPreferences((String)param.getValue("ini")); } if (param.exists("misc")) { mw->loadFiles(param.getValue("misc"), splash_screen); } else // remember this new window as obsolete once a real workflow is loaded without this window being touched { // if this is not desired, simply call newPipeline() without arguments mw->newPipeline(mw->IDINITIALUNTITLED); } // We are about to show the application. // Proper time to remove the splash screen, if at least 1.5 seconds have passed... while (stop_watch.getClockTime() < 1.5) /*wait*/ { } stop_watch.stop(); splash_screen->close(); delete splash_screen; #ifdef OPENMS_WINDOWSPLATFORM FreeConsole(); // get rid of console window at this point (we will not see any console output from this point on) AttachConsole(-1); // if the parent is a console, reattach to it - so we can see debug output - a normal user will usually not use cmd.exe to start a GUI) #endif int result = a.exec(); delete(mw); return result; } //######################## ERROR HANDLING ################################# catch (Exception::UnableToCreateFile& e) { cout << String("Error: Unable to write file (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::FileNotFound& e) { cout << String("Error: File not found (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::FileNotReadable& e) { cout << String("Error: File not readable (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::FileEmpty& e) { cout << String("Error: File empty (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::ParseError& e) { cout << String("Error: Unable to read file (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::InvalidValue& e) { cout << String("Error: Invalid value (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::BaseException& e) { cout << String("Error: Unexpected error (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } return 1; }
int main(int argc, const char** argv) { //list of all the valid options Map<String, String> valid_options, valid_flags, option_lists; valid_flags["--help"] = "help"; valid_options["-ini"] = "ini"; Param param; param.parseCommandLine(argc, argv, valid_options, valid_flags, option_lists); // '--help' given if (param.exists("help")) { print_usage(); return 0; } // test if unknown options were given if (param.exists("unknown")) { // if TOPPView is packed as Mac OS X bundle it will get a -psn_.. parameter by default from the OS // if this is the only unknown option it will be ignored .. maybe this should be solved directly // in Param.h if (!(param.getValue("unknown").toString().hasSubstring("-psn") && !param.getValue("unknown").toString().hasSubstring(", "))) { cout << "Unknown option(s) '" << param.getValue("unknown").toString() << "' given. Aborting!" << endl; print_usage(); return 1; } } try { QApplicationTOPP a(argc, const_cast<char**>(argv)); a.connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit())); TOPPViewBase* mw = new TOPPViewBase(); a.connect(&a, SIGNAL(fileOpen(QString)), mw, SLOT(loadFile(QString))); mw->show(); // Create the splashscreen that is displayed while the application loads QSplashScreen* splash_screen = new QSplashScreen(QPixmap(":/TOPPView_Splashscreen.png")); splash_screen->show(); splash_screen->showMessage("Loading parameters"); QApplication::processEvents(); StopWatch stop_watch; stop_watch.start(); if (param.exists("ini")) { mw->loadPreferences((String)param.getValue("ini")); } //load command line files if (param.exists("misc")) { mw->loadFiles(param.getValue("misc"), splash_screen); } // We are about to show the application. // Proper time to remove the splashscreen, if at least 1.5 seconds have passed... while (stop_watch.getClockTime() < 1.5) /*wait*/ { } stop_watch.stop(); splash_screen->close(); delete splash_screen; #ifdef OPENMS_WINDOWSPLATFORM FreeConsole(); // get rid of console window at this point (we will not see any console output from this point on) AttachConsole(-1); // if the parent is a console, reattach to it - so we can see debug output - a normal user will usually not use cmd.exe to start a GUI) #endif int result = a.exec(); delete(mw); return result; } //######################## ERROR HANDLING ################################# catch (Exception::UnableToCreateFile& e) { cout << String("Error: Unable to write file (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::FileNotFound& e) { cout << String("Error: File not found (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::FileNotReadable& e) { cout << String("Error: File not readable (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::FileEmpty& e) { cout << String("Error: File empty (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::ParseError& e) { cout << String("Error: Unable to read file (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::InvalidValue& e) { cout << String("Error: Invalid value (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } catch (Exception::BaseException& e) { cout << String("Error: Unexpected error (") << e.what() << ")" << endl << "Code location: " << e.getFile() << ":" << e.getLine() << endl; } return 1; }
int main(int argc, const char** argv) { #if defined(__APPLE__) // we do not want to load plugins as this leads to serious problems // when shipping on mac os x QApplication::setLibraryPaths(QStringList()); #endif // ensure correct encoding of paths QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); Map<String, String> option_lists; Map<String, String> options; options["-print"] = "print"; Map<String, String> flags; flags["--help"] = "help"; Param param; param.parseCommandLine(argc, argv, options, flags, option_lists); //catch command line errors if (param.exists("help") //help requested || argc > 3 //too many arguments || (argc == 3 && !param.exists("print")) //three argument but no -print || (param.exists("print") && param.getValue("print") == "") //-print but no file given ) { cerr << endl << "INIFileEditor -- An editor for OpenMS configuration files." << endl << endl << "Usage:" << endl << " INIFileEditor [options] [file]" << endl << endl << "Options are:" << endl << " --help Shows this help and exits" << endl << " -print <file> Prints the content of the file to the command line and exits" << endl << endl; return 0; } //print a ini file as text if (param.exists("print")) { Param data; ParamXMLFile paramFile; try { paramFile.load(param.getValue("print"), data); for (Param::ParamIterator it = data.begin(); it != data.end(); ++it) { cout << it.getName() << " = " << it->value << endl; } } catch (Exception::BaseException& e) { LOG_ERROR << "Error while parsing file '" << param.getValue("print") << "'\n"; LOG_ERROR << e << "\n"; } return 0; } //Create window QApplicationTOPP app(argc, const_cast<char**>(argv)); //set plastique style unless windows / mac style is available if (QStyleFactory::keys().contains("windowsxp", Qt::CaseInsensitive)) { app.setStyle("windowsxp"); } else if (QStyleFactory::keys().contains("macintosh", Qt::CaseInsensitive)) { app.setStyle("macintosh"); } else if (QStyleFactory::keys().contains("plastique", Qt::CaseInsensitive)) { app.setStyle("plastique"); } INIFileEditorWindow editor_window; //Open passed file if (argc == 2) { //cout << "OPEN: " << argv[1] << endl; editor_window.openFile(argv[1]); } #ifdef OPENMS_WINDOWSPLATFORM FreeConsole(); // get rid of console window at this point (we will not see any console output from this point on) AttachConsole(-1); // if the parent is a console, reattach to it - so we can see debug output - a normal user will usually not use cmd.exe to start a GUI) #endif editor_window.show(); return app.exec(); }