summaryrefslogtreecommitdiffstats
path: root/src/main.cpp
diff options
context:
space:
mode:
authorNils Schwabe2014-04-04 15:00:58 +0200
committerNils Schwabe2014-04-04 15:00:58 +0200
commitfc48e4b44760d0bb432a238e4c1b986062a91311 (patch)
tree6963b3bd46f06b2a9b57b80f1f0f5c09a84dc42b /src/main.cpp
parentchanged adDUSerAndHostname() (diff)
downloadvmchooser2-fc48e4b44760d0bb432a238e4c1b986062a91311.tar.gz
vmchooser2-fc48e4b44760d0bb432a238e4c1b986062a91311.tar.xz
vmchooser2-fc48e4b44760d0bb432a238e4c1b986062a91311.zip
removed addPrinters() and addScanners
introduced "change the run-virt.sh path" in cmd line and config file
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp443
1 files changed, 226 insertions, 217 deletions
diff --git a/src/main.cpp b/src/main.cpp
index d55f01c..e646620 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -21,221 +21,230 @@
#include "choosersettings.h"
int main(int argc, char *argv[]) {
- QApplication a(argc, argv);
-
- QTranslator translator;
- translator.load(":" + QLocale::system().name());
- a.installTranslator(&translator);
-
- CommandLineOptions cmdOptions(argc, argv);
-
- std::string usage(a.translate(
- "Console",
- "Usage: vmchooser [ OPTIONS ]\n\n"
- " -d, --default name of default session\n"
- " -c, --config alternative config file\n"
- " -e, --env name of the environment\n"
- " -f, --file direct boot .desktop file\n"
- " -x, --xpath path of X Session .desktop files\n"
- " -u, --url url of vmware .xml file\n"
- " -s, --size window size <width>x<height>\n"
- " -t, --theme theme\n"
- " -b, --pvs show pvs options\n"
- " -D, --debug print debug information\n"
- " -v, --version print version and exit\n"
- " -h, --help print usage information and exit\n"
- "\nFILE can be a vmware .xml or an X .desktop file\n")
- .toUtf8().data());
-
- if (cmdOptions.contains("error")) {
- std::cerr << usage;
- return EXIT_FAILURE;
- }
-
- if (cmdOptions.contains("usage")) {
- std::cout << usage;
- return EXIT_SUCCESS;
- }
-
- if (cmdOptions.contains("version")) {
- std::cout << "vmchooser " << VMCHOOSER_VERSION << std::endl;
- return EXIT_SUCCESS;
- }
-
- if (cmdOptions.contains("file")) {
- QString file(cmdOptions.value("file"));
-
- if (file.endsWith(".desktop")) {
- XSession s;
- if (s.init(file) && s.run()) {
- return EXIT_SUCCESS;
- }
- std::cerr << a.translate(
- "Console",
- "vmchooser: failed to run session").toUtf8().data() <<
- std::endl;
- return EXIT_FAILURE;
- } else {
- std::cerr << a.translate(
- "Console",
- "vmchooser: invalid session file").toUtf8().data() <<
- std::endl;
- return EXIT_FAILURE;
- }
- }
-
- // read configuration file:
- // file supplied as command line option or
- // user vmchooser.conf or
- // global vmchooser.conf
- QString confFile;
- if (cmdOptions.contains("config")) {
- confFile = cmdOptions.value("config");
- } else if (QFileInfo(userConfFile).exists()) {
- confFile = userConfFile;
- } else {
- confFile = globalConfFile;
- }
- QSettings settings(confFile, QSettings::IniFormat);
- settings.setIniCodec("UTF-8");
-
- QString defaultSession;
- if (cmdOptions.contains("default")) {
- defaultSession = cmdOptions.value("default");
- } else if (settings.contains("default")) {
- defaultSession = settings.value("default").toString();
- } else {
- defaultSession = ChooserSettings::getSetting("last-session");
- }
-
- if (cmdOptions.contains("path")) {
- vSessionPath = cmdOptions.value("path");
- } else if (settings.contains("path")) {
- vSessionPath = settings.value("path").toString();
- } // else keep default path
-
- if (cmdOptions.contains("xpath")) {
- xSessionPath = cmdOptions.value("xpath");
- } else if (settings.contains("xpath")) {
- xSessionPath = settings.value("xpath").toString();
- } // else keep default path
-
- if (cmdOptions.contains("url")) {
- urlBase = cmdOptions.value("url");
- } else if (settings.contains("url")) {
- urlBase = settings.value("url").toString();
- } else {
- std::cerr << a.translate("Console", "vmchooser: no URL given").toUtf8().data() << std::endl;
- return EXIT_FAILURE;
- }
-
- /* PARSE URL */
- if (!urlBase.startsWith("http://")) {
- std::cerr << a.translate("Console", "vmchooser: invalid URL").toUtf8().data() << std::endl;
- return EXIT_FAILURE;
- } else {
- if (!urlBase.endsWith("/")) {
- urlBase += "/";
- }
- }
-
- QString size;
- if (cmdOptions.contains("size")) {
- size = cmdOptions.value("size");
- } else if (settings.contains("size")) {
- size = settings.value("size").toString();
- }
-
- int width, height;
- QRegExp rx("^(\\d+)x(\\d+)$");
- if (rx.indexIn(size) != -1) {
- QStringList list = rx.capturedTexts();
- width = list.value(1).toInt();
- height = list.value(2).toInt();
- } else if (!size.isEmpty()) {
- std::cerr << a.translate(
- "Console",
- "vmchooser: invalid size argument").toUtf8().data()
- << std::endl;
- return EXIT_FAILURE;
- } else {
- width = VMCHOOSER_DEFAULT_WIDTH;
- height = VMCHOOSER_DEFAULT_HEIGHT;
- }
-
- if (cmdOptions.contains("env")) {
- pool = cmdOptions.value("env");
- } else if (settings.contains("pool")) {
- pool = settings.value("pool").toString();
- }
-
- if (cmdOptions.contains("theme")) {
- theme = cmdOptions.value("theme");
- } else if (settings.contains("theme")) {
- theme = settings.value("theme").toString();
- }
-
- if (cmdOptions.contains("debugMode")) {
- debugMode = true;
- }
-
- /* read session files */
- QList<Session*> xsessions(XSession::readSessions(xSessionPath));
-
- Dialog w;
-
- /* DOWNLOAD VSESSIONS */
- HttpXmlDownloader httpxmldownloader;
- httpxmldownloader.connectSlot(&w, SLOT(addSessionsAfterDownload(QNetworkReply*)));
-
- // read xml and add items later
- httpxmldownloader.makeRequest(urlBase + "list.php");
-
- /* DOWNLOAD NEWS */
- HttpXmlDownloader news_downloader;
- news_downloader.connectSlot(&w, SLOT(addNewsAfterDownload(QNetworkReply*)));
- news_downloader.makeRequest(urlBase + "news.php");
-
- /* DOWNLOAD HELP-SECTION */
- HttpXmlDownloader help_downloader;
- help_downloader.connectSlot(&w, SLOT(addHelpAfterDownload(QNetworkReply*)));
- help_downloader.makeRequest(urlBase + "help.php");
-
- w.setTheme();
-
- w.setWindowFlags(Qt::FramelessWindowHint);
- if (cmdOptions.contains("pvs")) {
- pvsEnabled = true;
- } else if (settings.contains("pvs")) {
- if (settings.value("pvs").toInt() == 1)
- pvsEnabled = true;
- }
-
- if ( pvsEnabled )
- w.showSettingsPVS();
-
- w.resize(width, height);
-
- if (xsessions.size()) {
- qSort(xsessions.begin(), xsessions.end(), myLessThan);
- w.addItems(xsessions, 0);
- }
-
- w.addLabelItem(a.translate("Dialog", "Loading..."), 1);
-
- QSettings SLXsettings(OPENSLXCONFIG, QSettings::NativeFormat);
- if ( SLXsettings.contains("SLX_BENCHMARK_VM") ) {
- QString vm = SLXsettings.value("SLX_BENCHMARK_VM").toString();
- vm.remove('\'');
- w.startSession(vm);
- }
- w.show();
-
- // center dialog on primary screen
- QRect desktopRect = QApplication::desktop()->availableGeometry(&w);
- QPoint center = desktopRect.center();
- w.move(center.x()-w.width()*0.5, center.y()-w.height()*0.5);
- a.setActiveWindow(&w);
-
- return a.exec();
+ QApplication a(argc, argv);
+
+ QTranslator translator;
+ translator.load(":" + QLocale::system().name());
+ a.installTranslator(&translator);
+
+ CommandLineOptions cmdOptions(argc, argv);
+
+ std::string usage(
+ a.translate("Console", "Usage: vmchooser [ OPTIONS ]\n\n"
+ " -d, --default name of default session\n"
+ " -c, --config alternative config file\n"
+ " -e, --env name of the environment\n"
+ " -f, --file direct boot .desktop file\n"
+ " -x, --xpath path of X Session .desktop files\n"
+ " -u, --url url of vmware .xml file\n"
+ " -s, --size window size <width>x<height>\n"
+ " -t, --theme theme\n"
+ " -b, --pvs show pvs options\n"
+ " -D, --debug print debug information\n"
+ " -v, --version print version and exit\n"
+ " -h, --help print usage information and exit\n"
+ " -S, --runscript change path to run-virt.sh\n"
+ "\nFILE can be a vmware .xml or an X .desktop file\n").toUtf8().data());
+
+ if (cmdOptions.contains("error")) {
+ std::cerr << usage;
+ return EXIT_FAILURE;
+ }
+
+ if (cmdOptions.contains("usage")) {
+ std::cout << usage;
+ return EXIT_SUCCESS;
+ }
+
+ if (cmdOptions.contains("version")) {
+ std::cout << "vmchooser " << VMCHOOSER_VERSION << std::endl;
+ return EXIT_SUCCESS;
+ }
+
+ if (cmdOptions.contains("file")) {
+ QString file(cmdOptions.value("file"));
+
+ if (file.endsWith(".desktop")) {
+ XSession s;
+ if (s.init(file) && s.run()) {
+ return EXIT_SUCCESS;
+ }
+ std::cerr
+ << a.translate("Console",
+ "vmchooser: failed to run session").toUtf8().data()
+ << std::endl;
+ return EXIT_FAILURE;
+ } else {
+ std::cerr
+ << a.translate("Console", "vmchooser: invalid session file").toUtf8().data()
+ << std::endl;
+ return EXIT_FAILURE;
+ }
+ }
+
+ // read configuration file:
+ // file supplied as command line option or
+ // user vmchooser.conf or
+ // global vmchooser.conf
+ QString confFile;
+ if (cmdOptions.contains("config")) {
+ confFile = cmdOptions.value("config");
+ } else if (QFileInfo(userConfFile).exists()) {
+ confFile = userConfFile;
+ } else {
+ confFile = globalConfFile;
+ }
+ QSettings settings(confFile, QSettings::IniFormat);
+ settings.setIniCodec("UTF-8");
+
+ QString defaultSession;
+ if (cmdOptions.contains("default")) {
+ defaultSession = cmdOptions.value("default");
+ } else if (settings.contains("default")) {
+ defaultSession = settings.value("default").toString();
+ } else {
+ defaultSession = ChooserSettings::getSetting("last-session");
+ }
+
+ if (cmdOptions.contains("path")) {
+ vSessionPath = cmdOptions.value("path");
+ } else if (settings.contains("path")) {
+ vSessionPath = settings.value("path").toString();
+ } // else keep default path
+
+ if (cmdOptions.contains("xpath")) {
+ xSessionPath = cmdOptions.value("xpath");
+ } else if (settings.contains("xpath")) {
+ xSessionPath = settings.value("xpath").toString();
+ } // else keep default path
+
+ if (cmdOptions.contains("url")) {
+ urlBase = cmdOptions.value("url");
+ } else if (settings.contains("url")) {
+ urlBase = settings.value("url").toString();
+ } else {
+ std::cerr
+ << a.translate("Console", "vmchooser: no URL given").toUtf8().data()
+ << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ // Change the runVmScript path
+ if (cmdOptions.contains("runscript")) {
+ runVmScript = cmdOptions.value("runscript");
+ } else if (settings.contains("runscript")) {
+ runVmScript = settings.value("runscript").toString();
+ }
+
+ /* PARSE URL */
+ if (!urlBase.startsWith("http://")) {
+ std::cerr
+ << a.translate("Console", "vmchooser: invalid URL").toUtf8().data()
+ << std::endl;
+ return EXIT_FAILURE;
+ } else {
+ if (!urlBase.endsWith("/")) {
+ urlBase += "/";
+ }
+ }
+
+ QString size;
+ if (cmdOptions.contains("size")) {
+ size = cmdOptions.value("size");
+ } else if (settings.contains("size")) {
+ size = settings.value("size").toString();
+ }
+
+ int width, height;
+ QRegExp rx("^(\\d+)x(\\d+)$");
+ if (rx.indexIn(size) != -1) {
+ QStringList list = rx.capturedTexts();
+ width = list.value(1).toInt();
+ height = list.value(2).toInt();
+ } else if (!size.isEmpty()) {
+ std::cerr
+ << a.translate("Console", "vmchooser: invalid size argument").toUtf8().data()
+ << std::endl;
+ return EXIT_FAILURE;
+ } else {
+ width = VMCHOOSER_DEFAULT_WIDTH;
+ height = VMCHOOSER_DEFAULT_HEIGHT;
+ }
+
+ if (cmdOptions.contains("env")) {
+ pool = cmdOptions.value("env");
+ } else if (settings.contains("pool")) {
+ pool = settings.value("pool").toString();
+ }
+
+ if (cmdOptions.contains("theme")) {
+ theme = cmdOptions.value("theme");
+ } else if (settings.contains("theme")) {
+ theme = settings.value("theme").toString();
+ }
+
+ if (cmdOptions.contains("debugMode")) {
+ debugMode = true;
+ }
+
+ /* read session files */
+ QList<Session*> xsessions(XSession::readSessions(xSessionPath));
+
+ Dialog w;
+
+ /* DOWNLOAD VSESSIONS */
+ HttpXmlDownloader httpxmldownloader;
+ httpxmldownloader.connectSlot(&w,
+ SLOT(addSessionsAfterDownload(QNetworkReply*)));
+
+ // read xml and add items later
+ httpxmldownloader.makeRequest(urlBase + "list.php");
+
+ /* DOWNLOAD NEWS */
+ HttpXmlDownloader news_downloader;
+ news_downloader.connectSlot(&w, SLOT(addNewsAfterDownload(QNetworkReply*)));
+ news_downloader.makeRequest(urlBase + "news.php");
+
+ /* DOWNLOAD HELP-SECTION */
+ HttpXmlDownloader help_downloader;
+ help_downloader.connectSlot(&w, SLOT(addHelpAfterDownload(QNetworkReply*)));
+ help_downloader.makeRequest(urlBase + "help.php");
+
+ w.setTheme();
+
+ w.setWindowFlags(Qt::FramelessWindowHint);
+ if (cmdOptions.contains("pvs")) {
+ pvsEnabled = true;
+ } else if (settings.contains("pvs")) {
+ if (settings.value("pvs").toInt() == 1)
+ pvsEnabled = true;
+ }
+
+ if (pvsEnabled)
+ w.showSettingsPVS();
+
+ w.resize(width, height);
+
+ if (xsessions.size()) {
+ qSort(xsessions.begin(), xsessions.end(), myLessThan);
+ w.addItems(xsessions, 0);
+ }
+
+ w.addLabelItem(a.translate("Dialog", "Loading..."), 1);
+
+ QSettings SLXsettings(OPENSLXCONFIG, QSettings::NativeFormat);
+ if (SLXsettings.contains("SLX_BENCHMARK_VM")) {
+ QString vm = SLXsettings.value("SLX_BENCHMARK_VM").toString();
+ vm.remove('\'');
+ w.startSession(vm);
+ }
+ w.show();
+
+ // center dialog on primary screen
+ QRect desktopRect = QApplication::desktop()->availableGeometry(&w);
+ QPoint center = desktopRect.center();
+ w.move(center.x() - w.width() * 0.5, center.y() - w.height() * 0.5);
+ a.setActiveWindow(&w);
+
+ return a.exec();
}