123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /*=============================================================================
- 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 __ctkModuleDescription_h
- #define __ctkModuleDescription_h
- // Qt includes
- #include <QHash>
- #include <QIcon>
- #include <QVector>
- // Module parameter
- #include "ctkModuleParameterGroup.h"
- /**
- * Description of the parameters of a module
- *
- * The parameters can be used for automated GUI generation or execution
- * of the module.
- *
- * For example:
- * - Target: This is the entry point for a shared object module and the full
- * command (with path) for an executable.
- * - Type: Unknown, SharedObjectModule, CommandLineModule
- * - AlternativeTarget: This is the entry
- * point for a shared object module and the full command (with path)
- * for an executable. The alternative target is used for a second version
- * of a module (whose type differs from the primary target,
- * executable verses shared object).
- * - Location: This is path to the file (shared
- * object or executable) for the module
- * - AlternativeLocation: This is path to the
- * file (shared object or executable) for a second version of the
- * module (usually a different type from the primary).
- */
- class CTK_MODULDESC_EXPORT ctkModuleDescription : public QHash<QString, QString>
- {
- public:
- // Optional icon associated to the module
- void setIcon(const QIcon& logo);
- const QIcon& icon() const;
-
- void addParameterGroup(ctkModuleParameterGroup* group);
- const QVector<ctkModuleParameterGroup*>& parameterGroups() const;
-
- // Return the group that contain the parameter associated to the name
- ctkModuleParameterGroup* parameterGroup(const QString& parameterName) const;
- // Return the first parameter corresponding to the name from any group
- ctkModuleParameter* parameter(const QString& parameterName) const;
-
- // Does the module have any simple (primitive) return types?
- bool hasReturnParameters() const;
- /// TODO: move to ctkModuleParameter
- bool setParameterDefaultValue(const QString& parameterName,
- const QString& value);
- ///
- /// Read a parameter file. Syntax of file is "name: value" for each
- /// parameter. Returns a bool indicating whether any parameter value
- /// was modified.
- bool readParameterFile(const QString& filename);
- ///
- /// Write a parameter file. By default, the method writes out all
- /// the parameters. The "withHandlesToBulkParameters" parameter
- /// controls whether the handles to the bulk parameters (image,
- /// geometry, etc.) are written to the file.
- bool writeParameterFile(const QString& filename, bool withHandlesToBulkParameters = true)const;
- private:
- friend CTK_MODULDESC_EXPORT QTextStream & operator<<(QTextStream &os, const ctkModuleDescription &module);
- /// Groups of parameters
- QVector<ctkModuleParameterGroup*> ParameterGroups;
- /// Icon of the module
- QIcon Icon;
- };
- CTK_MODULDESC_EXPORT QTextStream & operator<<(QTextStream &os, const ctkModuleDescription &module);
- #endif
|