123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /*=============================================================================
- Library: CTK
- Copyright (c) 2010 Brigham and Women's Hospital (BWH) All Rights Reserved.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- =============================================================================*/
- #ifndef __ctkCmdLineModuleDescription_h
- #define __ctkCmdLineModuleDescription_h
- #include <ctkCommandLineModulesCoreExport.h>
- #include <QList>
- #include <QSharedDataPointer>
- class QIcon;
- class QIODevice;
- class QTextStream;
- struct ctkCmdLineModuleDescriptionPrivate;
- class ctkCmdLineModuleParameterGroup;
- class ctkCmdLineModuleParameter;
- /**
- * \class ctkCmdLineModuleDescription
- * \brief Description of the parameters of a command line module.
- * \ingroup CommandLineModulesCore_API
- *
- * The parameters can be used for automated GUI generation or execution
- * of the module, and are directly related to the XML description used to
- * describe the command line module parameters.
- */
- class CTK_CMDLINEMODULECORE_EXPORT ctkCmdLineModuleDescription
- {
- public:
- ctkCmdLineModuleDescription(const ctkCmdLineModuleDescription& description);
- ~ctkCmdLineModuleDescription();
- ctkCmdLineModuleDescription& operator=(const ctkCmdLineModuleDescription& other);
- static ctkCmdLineModuleDescription parse(QIODevice* input);
- /**
- * @brief Returns the category, derived from the \code <category> \endcode tag.
- */
- QString category() const;
- /**
- * @brief Returns the title, derived from the \code <title> \endcode tag.
- */
- QString title() const;
- /**
- * @brief Helper method that returns the category followed by a dot followed by the title.
- */
- QString categoryDotTitle() const;
- /**
- * @brief Returns the title, derived from the \code <description> \endcode tag.
- */
- QString description() const;
- /**
- * @brief Returns the title, derived from the \code <version> \endcode tag.
- */
- QString version() const;
- /**
- * @brief Returns the title, derived from the \code <documentation-url> \endcode tag.
- */
- QString documentationURL() const;
- /**
- * @brief Returns the title, derived from the \code <license> \endcode tag.
- */
- QString license() const;
- /**
- * @brief Returns the title, derived from the \code <acknowledgements> \endcode tag.
- */
- QString acknowledgements() const;
- /**
- * @brief Returns the title, derived from the \code <contributor> \endcode tag.
- */
- QString contributor() const;
- /**
- * @brief Should return a QIcon, but does not appear to be supported yet.
- */
- QIcon logo() const;
- /**
- * \brief The XML can define groups of parameters, so this method returns
- * a QList of ctkCmdLineModuleParameterGroup to handle groups.
- */
- QList<ctkCmdLineModuleParameterGroup> parameterGroups() const;
- /**
- * @brief Searches the list of parameters, checking if a parameter has the given name.
- * @param name the name of the parameter, derived from the \code <name> \endcode tag.
- * @return true if this module has a parameter called name and false otherwise
- */
- bool hasParameter(const QString& name) const;
- /**
- * @brief Returns the parameter specified by name
- * @param name the name of the parameter, derived from the \code <name> \endcode tag.
- * @return the parameter
- * @throw ctkInvalidArgumentException if this module does not have this parameter.
- */
- ctkCmdLineModuleParameter parameter(const QString& name) const;
- /**
- * @brief Does the module have any simple (primitive) return types?
- */
- bool hasReturnParameters() const;
- private:
- friend class ctkCmdLineModuleXmlParser;
- friend struct ctkCmdLineModuleReferencePrivate;
- ctkCmdLineModuleDescription();
- QSharedDataPointer<ctkCmdLineModuleDescriptionPrivate> d;
- };
- CTK_CMDLINEMODULECORE_EXPORT QTextStream & operator<<(QTextStream& os, const ctkCmdLineModuleDescription& module);
- #endif
|