![]() |
ImFusion SDK 4.3
|
#include <ImFusion/GUI/DefaultAlgorithmController.h>
Default algorithm controller, with automatically generated GUI This GUI includes: A PropertiesWidget displaying the configurable properties of the Algorithm A push-button for each Algorithm::Action registered with the algorithm (see Algorithm::registerAction). More...
Default algorithm controller, with automatically generated GUI This GUI includes: A PropertiesWidget displaying the configurable properties of the Algorithm A push-button for each Algorithm::Action registered with the algorithm (see Algorithm::registerAction).
The push-button for the "compute" action is always shown last, and always calls Algorithm::compute() when clicked ( even if the "compute" action is overwritten with Algorithm::registerAction )
Public Slots | |
virtual void | onCompute () |
virtual void | updatePropertiesWidget () |
Public Member Functions | |
DefaultAlgorithmController (Algorithm *algo, const QString &uiTemplate="", bool configureOnChanged=false, bool autoDeleteAfterCompute=false) | |
void | init () override |
Two-step initialization function to be implemented by subclasses. | |
void | setAutoDeleteAfterCompute (bool enable) |
Sets if the algorithm will be deleted after onCompute() was called. | |
void | setConfigureOnChanged (bool enable) |
Sets if the algorithm should be re-configured with each changed value. | |
void | hideComputeButton (bool hide) |
Hides or shows the compute button. | |
void | setAddAlgorithmToHistory (bool toggle) |
Enable/disable algorithm registration on compute. | |
virtual void | copyAlgorithmConfiguration () const |
Copy the algorithm configuration as currently shown in the controller to the clipboard. | |
virtual void | pasteAlgorithmConfiguration () |
Paste the algorithm configuration from the clipboard. | |
void | setSplitCamelCase (bool enable) |
Calls PropertiesWidget::setSplitCamelCase(enabled) on m_propertiesWidget. | |
void | setCustomWidget (const std::string &subPropertyName, std::unique_ptr< QWidget > widget) |
Assign a custom widget to the subproperty. | |
OptimizationDialog * | optimizationDialog () const |
Getter for the OptimizationDialog. | |
![]() | |
AlgorithmController (Algorithm *algorithm) | |
Creates a new AlgorithmController wrapping the given algorithm, which must not be null. | |
const Algorithm * | algorithm () const |
Returns the underlying Algorithm instance. | |
Algorithm * | algorithm () |
void | showInputData () |
Shows the input data in the DisplayWidget. | |
InputDataVisibility | showsInputData () |
Checks if the input data is currently visible in the DisplayWidget. | |
void | showHelp () |
Attempts to open the user documentation page for the underlying algorithm. | |
std::optional< Filesystem::Path > | helpPath () const |
Returns the path to the user documentation page if it is available, std::nullopt otherwise. | |
std::string | title () const override |
Returns the original factory name of the underlying Algorithm. | |
![]() | |
void | setMainWindowBase (MainWindowBase *mw) |
Complete the initialization by providing the parent MainWindowBase instance hosting the controller by setting m_main and m_disp and eventually call init(). | |
virtual void | onSelectedDataChanged (const DataList &) |
Called by MainWindowBase in the case that the selection in the data model has changed. | |
virtual void | onVisibleDataChanged (const DataList &) |
Called by MainWindowBase in the case that the currently visible data has changed. | |
virtual std::vector< Location > | supportedLocations () const |
Returns the list of locations in which this controller is allowed to be placed by the parent MainWindowBase. | |
virtual Location | preferredLocation () const |
Returns the preferred location in which the parent MainWindowBase should place this controller. | |
virtual void | onLocationChanged (Location newLocation) |
Callback function called by the parent MainWindowBase/ControllerDecorator whenever the place was changed. | |
Location | location () const |
Convenience function to query the current controller Location from the parent ControllerDecorator. | |
ControllerDecorator * | getDecorator () const |
Convenience function to return m_main->getControllerDecorator(this) if m_main is set or nullptr otherwise. | |
template<typename T> | |
T * | getDecorator () const |
Convenience function to dynamic_cast the return value of getDecorator() to a derived type. | |
![]() | |
virtual void | configure (const Properties *p) |
Configure this object instance by de-serializing the given Properties. | |
virtual void | configuration (Properties *p) const |
Serialize the current object configuration into the given Properties object. | |
virtual void | configureDefaults () |
Retrieve the properties of this object, replaces values with their defaults and sets it again. | |
void | registerParameter (ParameterBase *param) |
Register the given Parameter or SubProperty, so that it will be configured during configure()/configuration(). | |
void | unregisterParameter (const ParameterBase *param) |
Remove the given Parameter or SubProperty from the list of registered parameters. | |
Configurable (const Configurable &rhs) | |
Configurable (Configurable &&rhs) noexcept | |
Configurable & | operator= (const Configurable &) |
Configurable & | operator= (Configurable &&) noexcept |
![]() | |
SignalReceiver ()=default | |
Default constructor. | |
SignalReceiver (const SignalReceiver &other) | |
Copy constructor, does not copy any existing signal connections from other. | |
SignalReceiver & | operator= (SignalReceiver rhs) |
Assignment operator, disconnects all existing connections, does not copy any existing signal connections from rhs. | |
virtual | ~SignalReceiver () |
Virtual destructor disconnects from all connected signals. | |
Protected Slots | |
virtual void | onParameterChanged (const std::string ¶mName) |
Protected Member Functions | |
void | addButton (const QString &title, const std::function< void()> &callback, int position=-1) |
Adds a button at the end of the widget One can pass a position to indicate the order of the added buttons, by passing nothing, the button is added to the end Note: Buttons must be added before the init method is called. | |
virtual void | fillActionMenu (QMenu &menu) |
Fill a QMenu with all available actions. | |
void | onAlgorithmParametersChanged () override |
Callback called when the Algorithm's signalParametersChanged signal was emitted. | |
void | onAlgorithmOutputChanged () override |
Callback called when the Algorithm's signalOutputChanged signal was emitted. | |
QVBoxLayout * | layout () const |
Return the main layout of the controller. | |
virtual OwningDataList | postprocessOutput (OwningDataList output) |
This function will be called directly on the output generated by the algorithm. | |
void | duplicateAlgorithmOnSelectedData () const override |
Instantiates a new copy of underlying Algorithm on the currently selected Data in the DataModel and adds it to the ApplicationController. | |
![]() | |
virtual void | closeAlgorithm (bool executed=false) |
Removes the algorithm from the ApplicationController and closes the controller. | |
void | addToDataAndAnnotationModels (OwningDataList data) |
Adds the contents of data to the DataModel of the parent MainWindowBase. | |
![]() | |
void | disconnectAll () |
Disconnects all existing connections. | |
Protected Attributes | |
bool | m_autoDeleteAfterCompute |
bool | m_configureOnChanged |
bool | m_isInitialized = false |
bool | m_addAlgorithmToHistory = true |
enable/disable register algorithm on compute() | |
bool | m_optUpdatesDisplay = false |
enable/disable display updates from the optimizer | |
PropertiesWidget * | m_propertiesWidget = nullptr |
OptimizationDialog * | m_optDialog = nullptr |
QVBoxLayout * | m_layout = nullptr |
QPushButton * | m_optDialogButton = nullptr |
QPushButton * | m_computeButton = nullptr |
QList< QPushButton * > | m_buttons |
![]() | |
Algorithm * | m_algorithm = nullptr |
The underlying algorithm. | |
![]() | |
MainWindowBase * | m_main = nullptr |
The parent MainWindowBase instance hosting this Controller. | |
DisplayWidgetMulti * | m_disp = nullptr |
The main DisplayWidget instance, convenience shortcut for m_main->display() . | |
![]() | |
std::vector< Param > | m_params |
List of all registered Parameter and SubProperty instances. | |
Additional Inherited Members | |
![]() | |
enum class | InputDataVisibility { None = 0 , All = 1 , Some = 2 } |
Enumeration of possible return values for showsInputData(). More... | |
![]() | |
enum class | Location : int { Unknown = -1 , Naked = 0 , PrimaryDock = 1 , SecondaryDock = 2 , Detached = 3 , ToolBar = 4 , UserLocation = 100 } |
Enumeration of possible placement/decoration options of a Controller. More... | |
![]() | |
Signal | signalTitleChanged |
Signal emitted when the title() has changed. | |
![]() | |
Signal | signalParametersChanged |
Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted. | |
|
overridevirtual |
Two-step initialization function to be implemented by subclasses.
This function is called by setMainWindowBase() after the m_disp
and m_main
attributes have been set and hence a complete initialization of the controller is possible at this point.
Implements Controller.
Reimplemented in GeometrySelfCalibrationController, Gl2D3DRegistrationController, GridBasedDistortionCorrectionController, Mesh2D3DRegistrationController, XRay2D3DRegistrationAlgorithmController, DefaultASCRegistrationController, DefaultASCSegmentationController< SegmentationAlgorithm >, DrawGraphController, LineToIsosurfaceIntersectionController, LinkPoseDeformableController, FrankaManagerController, RTStructureToLabelMapController, SpineMeshCurvatureController, ThresholdingFiducialExtractionController, ToolCalibrationController, TransferGraphFeatureToMeshController, GeometryDetectionController, SyntheticUltrasoundSweepController, TrackingEstimationController, UltrasoundDISARegistrationController, VertebraDissectionLegacyController, VolumeBasedMeshCurvatureController, and VolumeBasedMeshRegistrationController.
void setAutoDeleteAfterCompute | ( | bool | enable | ) |
Sets if the algorithm will be deleted after onCompute() was called.
Disabled by default.
void setConfigureOnChanged | ( | bool | enable | ) |
Sets if the algorithm should be re-configured with each changed value.
If enabled, changing a parameter in the widget will instantly re-configure the algorithm with the new value. Otherwise the algorithm is only configured when onCompute() is called. Disabled by default.
void setCustomWidget | ( | const std::string & | subPropertyName, |
std::unique_ptr< QWidget > | widget ) |
Assign a custom widget to the subproperty.
This widget will not be re-configured. It is the responsibility of the widget to handle all signals and re-configure its parameters if present. Note: if there are multiple subProperties with the same name, only one widget will be added for the last subProperty
|
overrideprotectedvirtual |
Callback called when the Algorithm's signalParametersChanged signal was emitted.
Reimplemented from AlgorithmController.
Reimplemented in Gl2D3DRegistrationController, and XRay2D3DRegistrationAlgorithmController.
|
overrideprotectedvirtual |
Callback called when the Algorithm's signalOutputChanged signal was emitted.
Reimplemented from AlgorithmController.
Reimplemented in ThresholdingFiducialExtractionController, GeometryDetectionController, and VertebraDissectionLegacyController.
|
protected |
Return the main layout of the controller.
The last item is the compute button. Derived classes should add their custom widgets before the compute button.
|
inlineprotectedvirtual |
This function will be called directly on the output generated by the algorithm.
Its purpose is to let derived classes do some custom post-processing.
Reimplemented in DefaultASCRegistrationController, DefaultASCSegmentationController< SegmentationAlgorithm >, and DrawGraphController.
|
overrideprotectedvirtual |
Instantiates a new copy of underlying Algorithm on the currently selected Data in the DataModel and adds it to the ApplicationController.
Reimplemented from AlgorithmController.
|
virtualslot |
Reimplemented in Gl2D3DRegistrationController.
|
virtualslot |
Reimplemented in Gl2D3DRegistrationController.
|
protectedvirtualslot |
Reimplemented in Gl2D3DRegistrationController.