/*============================================================================= Library: CTK Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics 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 CTKCMDLINEMODULEFRONTENDQTGUI_H #define CTKCMDLINEMODULEFRONTENDQTGUI_H #include "ctkCmdLineModuleFrontend.h" #include "ctkCommandLineModulesFrontendQtGuiExport.h" class ctkCmdLineModuleReference; class ctkCmdLineModuleXslTransform; class QUiLoader; class QWidget; struct ctkCmdLineModuleFrontendQtGuiPrivate; /** * \class ctkCmdLineModuleFrontendQtGui * \brief A Qt based implementation of the module front end. * \ingroup CommandLineModulesFrontendQtGui_API * * This class is able to generate a Qt widgets based GUI from the XML description of * a given module. It uses a customizable XML stylesheet to transform the raw XML description * into a .ui file which is fed into a QUiLoader to generate the GUI at runtime. * * Sub-classes have several possibilities to customize the generated GUI: *
Parameter Type | XSL Parameters | |||
---|---|---|---|---|
Widget Class | Default | Property Name (DisplayRole) | Default | |
boolean | booleanWidget | QCheckBox | booleanValueProperty | checked |
integer | integerWidget | QSpinBox | integerValueProperty | value |
float | floatingWidget | QDoubleSpinBox | floatValueProperty | value |
double | floatingWidget | QDoubleSpinBox | floatValueProperty | value |
integer-vector | vectorWidget | QLineEdit | vectorValueProperty | text |
float-vector | vectorWidget | QLineEdit | vectorValueProperty | value |
double-vector | vectorWidget | QLineEdit | vectorValueProperty | value |
string-vector | vectorWidget | QLineEdit | vectorValueProperty | value |
integer-enumeration | enumWidget | QComboBox (ctkCmdLineModuleQtUiLoader instantiates a custom private QComboBox sub-class) | enumerationValueProperty | currentEnumeration |
float-enumeration | enumWidget | QComboBox | enumerationValueProperty | currentEnumeration |
double-enumeration | enumWidget | QComboBox | enumerationValueProperty | currentEnumeration |
string-enumeration | enumWidget | QComboBox | enumerationValueProperty | currentEnumeration |
file (input channel) | fileInputWidget | ctkPathLineEdit | fileValueProperty | currentPath |
file (output channel) | fileOutputWidget | ctkPathLineEdit | fileValueProperty | currentPath |
geometry (input channel) | fileInputWidget | ctkPathLineEdit | fileValueProperty | currentPath |
geometry (output channel) | fileOutputWidget | ctkPathLineEdit | fileValueProperty | currentPath |
directory | directoryWidget | ctkPathLineEdit | directoryValueProperty | currentPath |
point | pointWidget | ctkCoordinatesWidget | pointValueProperty | coordinates |
region | pointWidget | ctkCoordinatesWidget | pointValueProperty | coordinates |
image (input channel) | imageInputWidget | ctkPathLineEdit | imageValueProperty | currentPath |
image (output channel) | imageOutputWidget | ctkPathLineEdit | imageValueProperty | currentPath |
[main container] | executableWidget | QWidget | n/a | n/a |
[group container] | parametersWidget | ctkCollapsibleGroupBox | n/a | n/a |
[unknown type] | unsupportedWidget | QLabel | n/a | n/a |
role
argument and always returns
* the value held by the default property, which usually correspongs to the
* DisplayRole.
*
* @see ctkCmdLineModuleFrontend::value()
*/
virtual QVariant value(const QString& parameter, int role = LocalResourceRole) const;
/**
* @brief Sets the parameter value.
* @param parameter
* @param value
* @param role
*
* This implementation does nothing if the role
parameter does not equal
* ctkCmdLineModuleFrontend::DisplayRole. If it does, it sets the value of the default
* QObject property to the provided value.
*
* @see ctkCmdLiineModuleFrontend::setValue()
*/
virtual void setValue(const QString& parameter, const QVariant& value, int role = DisplayRole);
virtual QList