--- /dev/null
+#include "options.h"
+
+#include <iostream>
+#include <QApplication>
+
+
+using namespace std;
+
+
+Option::Option()
+{
+ name="";
+ sName="";
+ lName="";
+ type=Switch;
+ sarg="";
+ active=false;
+}
+
+Option::Option (const QString &n, const Type &t, const QString &s, const QString &l)
+{
+ sName="-"+s;
+ lName="--"+l;
+ type=t;
+ name=n;
+}
+
+void Option::set(const QString &n, const Type &t, const QString &s, const QString &l)
+{
+ sName="-"+s;
+ lName="--"+l;
+ type=t;
+ name=n;
+}
+
+QString Option::getName () { return name; }
+QString Option::getShort () { return sName; }
+QString Option::getLong() { return lName; }
+Option::Type Option::getType() { return type; }
+void Option::setArg(const QString& s) { sarg=s; }
+QString Option::getArg() { return sarg; }
+void Option::setActive() { active=true; }
+bool Option::isActive() { return active; }
+
+///////////////////////////////////////////////////////////////
+Options::Options() {}
+
+int Options::parse()
+{
+ QStringList arglist=qApp->arguments();
+
+ // Get program name
+ progname=arglist.first();
+ arglist.pop_front();
+
+ // Work through rest of options
+ bool isFile;
+ for (int i=0; i< arglist.size(); ++i)
+ {
+ isFile=true;
+ if (arglist[i].left(1)=="-")
+ {
+ // Compare given option to all defined options
+ for (int j=0; j < optlist.size(); ++j)
+ {
+ if (arglist.at(i)==optlist.value(j).getShort() ||
+ arglist.at(i)==optlist.value(j).getLong())
+ {
+ optlist[j].setActive();
+ isFile=false;
+ if (optlist[j].getType()==Option::String)
+ {
+ i++;
+ if (i==arglist.size())
+ {
+ qWarning ("Error: argument to option missing");
+ return 1;
+ }
+ optlist[j].setArg (arglist[i]);
+ isFile=false;
+ }
+ break;
+ }
+ }
+ if (isFile)
+ {
+ qWarning("Error: Unknown argument ");
+ return 1;
+ }
+ } else
+ filelist.append (arglist[i]);
+ }
+ return 0;
+}
+
+void Options::add (Option o)
+{
+ optlist.append (o);
+}
+
+void Options::add (const QString &n, const Option::Type &t=Option::Switch, const QString &s="", const QString &l="")
+{
+ Option o;
+ o.set (n,t,s,l);
+ optlist.append (o);
+}
+
+void Options::setHelpText (const QString &s)
+{
+ helptext=s;
+}
+
+QString Options::getHelpText ()
+{
+ return helptext;
+}
+
+QString Options::getProgramName()
+{
+ return progname;
+}
+
+QStringList Options::getFileList ()
+{
+ return filelist;
+}
+
+bool Options::isOn(const QString &s)
+{
+ for (int i=0; i<optlist.size(); ++i)
+ if (optlist[i].getName()==s && optlist[i].isActive() )
+ return true;
+ return false;
+}
+
+QString Options::getArg(const QString &s)
+{
+ for (int i=0; i<optlist.size(); ++i)
+ if (optlist[i].getName()==s) return optlist[i].getArg();
+ return QString();
+}