#include "alg/mussa.hpp"
#include "alg/parse_options.hpp"
-Mussa *initialize_mussa(int argc, char **argv)
+MussaOptions::MussaOptions()
+ : analysis(0),
+ useGUI(true)
+{
+}
+
+void initialize_mussa(MussaOptions& opts, int argc, char **argv)
{
po::options_description options("Mussa options");
po::positional_options_description pos_options;
if (vm.count("help")) {
std::cout << options << std::endl;
- return 0;
+ return;
}
- Mussa *m = new Mussa();
+ opts.analysis = new Mussa();
// currently we can only have one analysis loaded, so
// running trumps viewing.
if (vm.count("run-analysis")) {
- m->load_mupa_file( vm["run-analysis"].as< std::string >() );
+ opts.analysis->load_mupa_file( vm["run-analysis"].as< std::string >() );
std::cout << "I apologize for blocking the gui while running the analysis"
<< std::endl;
- m->analyze();
+ opts.analysis->analyze();
}
else if (vm.count("view-analysis")) {
- m->load( vm["view-analysis"].as< std::string >() );
+ opts.analysis->load( vm["view-analysis"].as< std::string >() );
}
if (vm.count("no-gui")) {
- return 0;
- } else {
- return m;
+ opts.useGUI=false;
}
}
-
class Mussa;
+//! collect information about runtime options
+struct MussaOptions
+{
+ //! set defaults for our options
+ MussaOptions();
+
+ //! pointer to our analysis, if its null, feel free to die
+ Mussa *analysis;
+ //! should we use the gui?
+ bool useGUI;
+};
+
//! initialize a mussa analysis from command line arguments
-Mussa *initialize_mussa(int argc, char** argv);
+void initialize_mussa(MussaOptions& opts, int argc, char** argv);
#endif
#include <boost/filesystem/operations.hpp>
using namespace boost::filesystem;
+#include <stdlib.h>
#include <QApplication>
#include "qui/MussaWindow.hpp"
#include "alg/parse_options.hpp"
-int startgui(Mussa *analysis, int argc, char **argv)
+int main(int argc, char **argv)
{
- QApplication app(argc, argv);
- Q_INIT_RESOURCE(icons);
- MussaWindow win(analysis);
- win.show();
- app.exec();
+ MussaOptions opts;
- return 0;
-}
+ // if we're under unix and don't have a display, see if we can still run
+#ifdef Q_WS_X11
+ opts.useGUI = getenv("DISPLAY") != 0;
+#endif
-int main(int argc, char **argv)
-{
- // let boost::filesystem store the path we were initially launched in
- initial_path();
+ QApplication app(argc, argv, opts.useGUI);
+ Q_INIT_RESOURCE(icons);
+
+ initialize_mussa(opts, argc, argv);
- Mussa *analysis = initialize_mussa(argc, argv);
- if (analysis == 0) {
+ if (opts.analysis == 0) {
return 1;
}
- return startgui(analysis, argc, argv);
+ if (opts.useGUI) {
+ MussaWindow win(opts.analysis);
+ win.show();
+ app.exec();
+ }
+
+ return 0;
}