summaryrefslogtreecommitdiffstats
path: root/src/main.cpp
diff options
context:
space:
mode:
authorJan Darmochwal2010-10-07 16:56:12 +0200
committerJan Darmochwal2010-10-07 16:56:12 +0200
commite7e9cf2849d0000acf47ecde86e4853687a03409 (patch)
treeaa811c315fa49eccf3691f932ebbc8b28d67fa14 /src/main.cpp
parentAdded files to parse command line options (diff)
downloadvmchooser-e7e9cf2849d0000acf47ecde86e4853687a03409.tar.gz
vmchooser-e7e9cf2849d0000acf47ecde86e4853687a03409.tar.xz
vmchooser-e7e9cf2849d0000acf47ecde86e4853687a03409.zip
Tidy up the code
* fixed compiler warnings, added -Werror to CMakeLists.txt * removed LibXml2 and boost stuff from CMakeLists.txt * fixed some things cpplint.py complains about: * make single-argument constructors explicit * add space before if/for/while/... * don't put { on a line of its own * remove space after ! operator * add space between // and comment * remove extra space before ( in function call * remove extra space before ) * shorten lines to <= 80 characters * remove blank lines at the start of a code block * maybe others
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp265
1 files changed, 132 insertions, 133 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 90a9fbc..91b39e7 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -13,10 +13,6 @@
#include "globals.h"
#include "command_line_options.h"
-#include <boost/filesystem.hpp>
-
-namespace bfs=boost::filesystem;
-
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
@@ -26,134 +22,137 @@ int main(int argc, char *argv[]) {
std::string version = "0.0.13";
- CommandLineOptions cmdOptions(argc, argv);
-
- std::string usage(a.translate(
- "Console",
- "Usage: vmchooser [ OPTIONS | FILE ]\n\n"
- " -d, --default name of default session\n"
- " -p, --path path to vmware .xml files\n"
- " -x, --xpath path of X Session .desktop files\n"
- " -s, --size window size <width>x<height>\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 1;
- }
-
- if (cmdOptions.contains("usage")) {
- std::cout << usage;
- return 0;
- }
-
- if (cmdOptions.contains("version")) {
- std::cout << version;
- return 0;
- }
-
- if (cmdOptions.contains("file")) {
- QString file(cmdOptions.value("file"));
-
- if (file.endsWith(".desktop")) {
- XSession s;
- return s.init(file) && s.run();
- } else if (file.endsWith(".xml")) {
- // our XML-files can contain multiple sessions
- // let's just take the first one
- Session* s(VSession::readXmlFile(file).value(0));
- return s && s->run();
- } else {
- std::cerr << "not a valid session file" << std::endl;
- return 1;
- }
- }
-
- // read configuration file:
- // file supplied as command line option or
- // user vmchooser.conf or
- // globel vmchooser.conf
- QString confFile;
- QString userConfFile(QDir::homePath() + "/" +
- VMCHOOSER_USER_PATH + "/" +
- VMCHOOSER_CONF_FILE);
- QString globalConfFile(QString(VMCHOOSER_ETC_BASE_PATH) + "/" +
- VMCHOOSER_CONF_FILE);
- 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 = readSessionName();
- }
-
- QString vSessionXmlPath;
- if (cmdOptions.contains("path")) {
- vSessionXmlPath = cmdOptions.value("path");
- } else if (settings.contains("path")) {
- vSessionXmlPath = settings.value("path").toString();
- } else {
- vSessionXmlPath = VMCHOOSER_VMPATH;
- }
-
- QString xSessionPath;
- if (cmdOptions.contains("xpath")) {
- xSessionPath = cmdOptions.value("xpath");
- } else if (settings.contains("xpath")) {
- xSessionPath = settings.value("xpath").toString();
- } else {
- xSessionPath = VMCHOOSER_X_SESSIONS_PATH;
- }
-
- 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", "invlid size argument").toUtf8().data() << std::endl;
- exit(1);
- } else {
- width = VMCHOOSER_DEFAULT_WIDTH;
- height = VMCHOOSER_DEFAULT_HEIGHT;
- }
-
- /* read session files */
- QList<Session*> xsessions(XSession::readSessions(xSessionPath));
- QList<Session*> vsessions(VSession::readXmlDir(vSessionXmlPath));
-
- Dialog w;
- w.resize(width, height);
- if (xsessions.size()) {
- w.addItems(xsessions, a.translate("Dialog", "X Sessions"));
- }
- if (vsessions.size()) {
- w.addItems(vsessions, a.translate("Dialog", "Virtual Sessions"));
- }
- w.selectSession(defaultSession);
- w.show();
- return a.exec();
+ CommandLineOptions cmdOptions(argc, argv);
+
+ std::string usage(a.translate(
+ "Console",
+ "Usage: vmchooser [ OPTIONS | FILE ]\n\n"
+ " -d, --default name of default session\n"
+ " -p, --path path to vmware .xml files\n"
+ " -x, --xpath path of X Session .desktop files\n"
+ " -s, --size window size <width>x<height>\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 1;
+ }
+
+ if (cmdOptions.contains("usage")) {
+ std::cout << usage;
+ return 0;
+ }
+
+ if (cmdOptions.contains("version")) {
+ std::cout << version;
+ return 0;
+ }
+
+ if (cmdOptions.contains("file")) {
+ QString file(cmdOptions.value("file"));
+
+ if (file.endsWith(".desktop")) {
+ XSession s;
+ return s.init(file) && s.run();
+ } else if (file.endsWith(".xml")) {
+ // our XML-files can contain multiple sessions
+ // let's just take the first one
+ Session* s(VSession::readXmlFile(file).value(0));
+ return s && s->run();
+ } else {
+ std::cerr << "not a valid session file" << std::endl;
+ return 1;
+ }
+ }
+
+ // read configuration file:
+ // file supplied as command line option or
+ // user vmchooser.conf or
+ // globel vmchooser.conf
+ QString confFile;
+ QString userConfFile(QDir::homePath() + "/" +
+ VMCHOOSER_USER_PATH + "/" +
+ VMCHOOSER_CONF_FILE);
+ QString globalConfFile(QString(VMCHOOSER_ETC_BASE_PATH) + "/" +
+ VMCHOOSER_CONF_FILE);
+ 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 = readSessionName();
+ }
+
+ QString vSessionXmlPath;
+ if (cmdOptions.contains("path")) {
+ vSessionXmlPath = cmdOptions.value("path");
+ } else if (settings.contains("path")) {
+ vSessionXmlPath = settings.value("path").toString();
+ } else {
+ vSessionXmlPath = VMCHOOSER_VMPATH;
+ }
+
+ QString xSessionPath;
+ if (cmdOptions.contains("xpath")) {
+ xSessionPath = cmdOptions.value("xpath");
+ } else if (settings.contains("xpath")) {
+ xSessionPath = settings.value("xpath").toString();
+ } else {
+ xSessionPath = VMCHOOSER_X_SESSIONS_PATH;
+ }
+
+ 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",
+ "invlid size argument").toUtf8().data()
+ << std::endl;
+ exit(1);
+ } else {
+ width = VMCHOOSER_DEFAULT_WIDTH;
+ height = VMCHOOSER_DEFAULT_HEIGHT;
+ }
+
+ /* read session files */
+ QList<Session*> xsessions(XSession::readSessions(xSessionPath));
+ QList<Session*> vsessions(VSession::readXmlDir(vSessionXmlPath));
+
+ Dialog w;
+ w.resize(width, height);
+ if (xsessions.size()) {
+ w.addItems(xsessions, a.translate("Dialog", "X Sessions"));
+ }
+ if (vsessions.size()) {
+ w.addItems(vsessions, a.translate("Dialog", "Virtual Sessions"));
+ }
+ w.selectSession(defaultSession);
+ w.show();
+ return a.exec();
}