FACT++  1.0
fact.cc
Go to the documentation of this file.
1 #include "FactGui.h"
2 
3 #include <TQtWidget.h>
4 #include <TSystem.h>
5 
6 #include "src/FACT.h"
7 #include "src/Dim.h"
8 #include "src/Configuration.h"
9 
10 /*
11  Extract usage clause(s) [if any] for SYNOPSIS.
12  Translators: "Usage" and "or" here are patterns (regular expressions) which
13  are used to match the usage synopsis in program output. An example from cp
14  (GNU coreutils) which contains both strings:
15  Usage: cp [OPTION]... [-T] SOURCE DEST
16  or: cp [OPTION]... SOURCE... DIRECTORY
17  or: cp [OPTION]... -t DIRECTORY SOURCE...
18  */
19 void PrintUsage()
20 {
21  cout << "\n"
22  "The FACT++ Graphical User Interfact (GUI).\n"
23  "\n"
24  "Usage: fact [-c type] [OPTIONS]\n"
25  " or: fact [OPTIONS]\n";
26  cout << endl;
27 
28 }
29 
30 void PrintHelp()
31 {
32  /* Additional help text which is printed after the configuration
33  options goes here */
34 }
35 
37 {
38  po::options_description config("Program options");
39  config.add_options()
40  ("dns", var<string>("localhost"), "Dim nameserver (overwites DIM_DNS_NODE environment variable)")
41  ("host", var<string>(""), "Address with which the Dim nameserver can connect to this host (overwites DIM_HOST_NODE environment variable)")
42  ("pixel-map-file", var<string>("FACTmap111030.txt"), "Pixel mapping file. Used here to get the default reference voltage.")
43  ("CommentDB", var<string>(""), "")
44  ;
45 
46  po::options_description runtype("Run type configuration");
47  runtype.add_options()
48  ("run-type", vars<string>(), "Names of available run-types")
49  ("run-time", vars<string>(), "Possible run-times for runs")
50  ("run-count", vars<uint32_t>(), "Number of events for a run")
51  ;
52 
53  conf.AddEnv("dns", "DIM_DNS_NODE");
54  conf.AddEnv("host", "DIM_HOST_NODE");
55 
56  conf.AddOptions(config);
57  conf.AddOptions(runtype);
58 }
59 
60 int main(int argc, const char* argv[])
61 {
62  Configuration conf(argv[0]);
64  SetupConfiguration(conf);
65 
66  if (!conf.DoParse(argc, argv, PrintHelp))
67  return -1;
68 
69  Dim::Setup(conf.Get<string>("dns"), conf.Get<string>("host"));
70 
71  cout << "LD_LIBRARY_PATH=" << gSystem->GetDynamicPath() << endl;
72 
73  cout << "--- Starting QApplication ---" << endl;
74  QApplication app(argc, const_cast<char**>(argv));
75 
76  cout << "--- Working around a root bug ---" << endl;
77  {
78  // It seems sometimes TGQt::RegisterWid is called before
79  // fWidgetArray is initialized, so we force that to happen here
80 // TQtWidget(NULL);
81 // cout << "LD_LIBRARY_PATH=" << gSystem->GetDynamicPath() << endl;
82  }
83 
84  cout << "--- Instantiating GUI ---" << endl;
85  FactGui gui(conf);
86 
87  cout << "--- Show GUI ---" << endl;
88  gui.show();
89 
90  cout << "--- Main loop ---" << endl;
91 
92  const int rc = app.exec();
93 
94  cout << "The end." << endl;
95 
96  return rc;
97 }
void SetupConfiguration(Configuration &conf)
Definition: fact.cc:36
void PrintUsage()
Definition: fact.cc:19
void SetPrintUsage(const std::function< void(void)> &func)
T Get(const std::string &var)
void PrintHelp()
Definition: fact.cc:30
void AddEnv(const std::string &conf, const std::string &env)
void Setup(const std::string &dns="", const std::string &host="")
Definition: DimSetup.cc:160
int main(int argc, const char *argv[])
Definition: fact.cc:60
void AddOptions(const po::options_description &opt, bool visible=true)
Definition: Configuration.h:92
Commandline parsing, resource file parsing and database access.
Definition: Configuration.h:9
bool DoParse(int argc, const char **argv, const std::function< void()> &func=std::function< void()>())