Documentation/CLI Support in CTK
Command Line Interface (CLI) support in CTK will primarly focus on providing an API for working with existing CLI modules. Providing utilities and tools for creating CLI modules from scratch is a desired addition but there are no concrete plans for this yet. For example integration in different frameworks, see CLI In Context.
Getting the Code
The code is available in the CTK master:
https://github.com/commontk/CTK
Enable the following CMake options to be able to play with the code:
- BUILD_TESTING (for creating CLI test modules)
- CTK_APP_ctkCommandLineModuleExplorer (small program allowing you to test-drive CLI modules using the CTK CLI module API, enables all the options below)
- CTK_LIB_CommandLineModules/Core (the CTK library providing the core CLI module API)
- CTK_LIB_CommandLineModules/Frontend/QtGui (the CTK library providing GUI generation using the Qt widgets)
- CTK_LIB_CommandLineModules/Backend/LocalProcess (the CTK library for executing local executable files as command line modules)
API Design
This is a partially overview of the API design, showing the GUI generation process for the Qt front-end.
Overview of some central classes and their scope.
Please see the full [file:///opt/ctk-builds/CTK-debug-gcc/CTK-build/Documentation/html/group__CommandLineModulesCore__API.html Core API] for a list of available classes and their documentation.
ctkCmdLineModuleDescription
C++ API for accessing the command line arguments meta-data defined in the XML description.
This class is read-only.
ctkCmdLineModuleReference
A handle to a command line module.
- Get ctkCmdLineModuleDescription class
- Convenient meta-data access (module location etc.)
- Used to crate actual ctkCmdLineModuleFrontend instances from specific ctkCmdLineModuleFrontendFactory implementations
ctkCmdLineModuleFrontend
Represents an invokable command line module and its current parameter values.
Multiple instances for the same ModuleReference may exist.
- Set/Get individual parameter values or all at once
- Reset to default parameters
- Get GUI representation (QObject*)
- Get parameter value change notifications
ctkCmdLineModuleFuture
Returned by the ctkCmdLineModuleManager run method and used to communicate with a running module.
- Run/Abort
- Status
- Progress reporting
ctkCmdLineModuleManager
Responsible for managing and running other ctkCmdLineModule* classes.
- Register specific back-ends for handling different types of modules
- Register/Unregister modules
- Get ctkCmdLineModuleReference objects
- Run ctkCmdLineModuleFrontend objects
Customizability
See also the ctkCmdLineModuleFrontendQtGui class for customization information.
- Use parameters for the default XSLT file to customize widget class names for argument types
- Use your own XSLT file for custom transformations of XML to UI
- Use your own QUiLoader to control instantiation of certain widget types
General
- Use a custom factory to create your own GUI based on a ctkCmdLineModuleDescription instance.