CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkCommandLineParser.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Library: CTK
4 
5  Copyright (c) Kitware Inc.
6 
7  Licensed under the Apache License, Version 2.0 (the "License");
8  you may not use this file except in compliance with the License.
9  You may obtain a copy of the License at
10 
11  http://www.apache.org/licenses/LICENSE-2.0.txt
12 
13  Unless required by applicable law or agreed to in writing, software
14  distributed under the License is distributed on an "AS IS" BASIS,
15  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  See the License for the specific language governing permissions and
17  limitations under the License.
18 
19 =========================================================================*/
20 
21 #ifndef __ctkCommandLineParser_h
22 #define __ctkCommandLineParser_h
23 
24 // Qt includes
25 #include <QString>
26 #include <QStringList>
27 #include <QVariant>
28 
29 class QSettings;
30 
31 // CTK includes
32 #include "ctkCoreExport.h"
33 
62 class CTK_CORE_EXPORT ctkCommandLineParser : public QObject
63 {
64  Q_OBJECT
65  Q_PROPERTY(QString errorString READ errorString)
66  Q_PROPERTY(QStringList unparsedArguments READ unparsedArguments)
67  Q_PROPERTY(bool settingsEnabled READ settingsEnabled)
68 
69 public:
70 
71  typedef QObject Superclass;
72 
84  ctkCommandLineParser(QObject* newParent = 0);
85 
101  ctkCommandLineParser(QSettings* settings, QObject* newParent = 0);
102 
104 
125  QHash<QString, QVariant> parseArguments(const QStringList &arguments, bool* ok = 0);
126 
131  QHash<QString, QVariant> parseArguments(int argc, char** argv, bool* ok = 0);
132 
140  QString errorString() const;
141 
151  const QStringList& unparsedArguments() const;
152 
163  Q_INVOKABLE bool argumentAdded(const QString& argument) const;
164 
173  Q_INVOKABLE bool argumentParsed(const QString& argument) const;
174 
219  void addArgument(const QString& longarg, const QString& shortarg,
220  QVariant::Type type, const QString& argHelp = QString(),
221  const QVariant& defaultValue = QVariant(),
222  bool ignoreRest = false, bool deprecated = false);
223 
236  void addDeprecatedArgument(const QString& longarg, const QString& shortarg,
237  const QString& argHelp);
238 
253  bool setExactMatchRegularExpression(const QString& argument, const QString& expression,
254  const QString& exactMatchFailedMessage);
255 
261  int fieldWidth() const;
262 
271  QString helpText(const char charPad = ' ') const;
272 
297  void setArgumentPrefix(const QString& longPrefix, const QString& shortPrefix);
298 
309  void beginGroup(const QString& description);
310 
316  void endGroup();
317 
339  void enableSettings(const QString& disableLongArg = "",
340  const QString& disableShortArg = "");
341 
353  void mergeSettings(bool merge);
354 
362  bool settingsEnabled() const;
363 
364 
371  void setStrictModeEnabled(bool strictMode);
372 
373 private:
374  class ctkInternal;
375  ctkInternal * Internal;
376 };
377 #endif
QString helpText(const char charPad=' ') const
void addArgument(const QString &longarg, const QString &shortarg, QVariant::Type type, const QString &argHelp=QString(), const QVariant &defaultValue=QVariant(), bool ignoreRest=false, bool deprecated=false)
QHash< QString, QVariant > parseArguments(int argc, char **argv, bool *ok=0)
const QStringList & unparsedArguments() const
Q_INVOKABLE bool argumentAdded(const QString &argument) const
bool setExactMatchRegularExpression(const QString &argument, const QString &expression, const QString &exactMatchFailedMessage)
void mergeSettings(bool merge)
void setArgumentPrefix(const QString &longPrefix, const QString &shortPrefix)
void addDeprecatedArgument(const QString &longarg, const QString &shortarg, const QString &argHelp)
QString errorString() const
ctkCommandLineParser(QSettings *settings, QObject *newParent=0)
void setStrictModeEnabled(bool strictMode)
ctkCommandLineParser(QObject *newParent=0)
int fieldWidth() const
Q_INVOKABLE bool argumentParsed(const QString &argument) const
QHash< QString, QVariant > parseArguments(const QStringList &arguments, bool *ok=0)
void enableSettings(const QString &disableLongArg="", const QString &disableShortArg="")
void beginGroup(const QString &description)
bool settingsEnabled() const