The generic/default application. More...
#include <Application.h>
Public Types | |
enum | TargetPositionningPolicy { SAME_TRANSFORMATION , NO_TRANSFORMATION , SUBFRAME } |
: Policy to determine how a newly instantiated component's frame should be initialized regarding of its parent's component. More... | |
Public Member Functions | |
Application (QString name, int &argc, char **argv, bool autoloadExtension=true, bool registerFileExtension=false) | |
Initializes the window system and constructs a CamiTK application object with argc command line arguments in argv. More... | |
~Application () override | |
destructor More... | |
Static Public Member Functions | |
Component instances management | |
static Component * | open (const QString &) |
load the filename and returns the corresponding top level Component (returns nullptr if an error occurs) More... | |
static Component * | openDirectory (const QString &dirName, const QString &pluginName) |
load a directory and returns the corresponding Component (returns nullptr if an error occurs) More... | |
static bool | loadWorkspace (const QString &filepath) |
load a camitk file and its content into the application More... | |
static bool | close (Component *component) |
Close a Component: if it has been changed, ask the user for more information, then if everything is ok, delete it. More... | |
static bool | save (Component *component) |
save a component to its file (as given by component->getFileName()). More... | |
static bool | saveWorkspace (const QString &filepath) |
save the current workspace to a .camitk file. More... | |
static const ComponentList & | getTopLevelComponents () |
get the current application wide list of instantiated top-level Components. More... | |
static const ComponentList & | getAllComponents () |
get the current application wide list of all Components. More... | |
static bool | isAlive (Component *) |
does this Component still exists? More... | |
static bool | hasModified () |
Return true if at least one of the opened components has been modified, false otherwise. More... | |
Selection management | |
static const ComponentList & | getSelectedComponents () |
get the currently selected Components. More... | |
static void | clearSelectedComponents () |
clear all the selection, i.e call setSelected(false) for all the previously selected components and clear the list. More... | |
Action instances management | |
static Action * | getAction (QString) |
get a registered action given its name More... | |
static const ActionList | getActions () |
get all the actions registered in the application (note: the returned ActionList is guaranteed to be sorted by action name and to contain no duplicates) More... | |
static ActionList | getActions (Component *) |
get all the actions that can be applied on a given component (note: the returned ActionList is guaranteed to be sorted by action name and to contain no duplicates) More... | |
static ActionList | getActions (ComponentList) |
Get all the actions that can be applied on any components of the given list of components (note: the returned ActionList is guaranteed to be sorted by action name and to contain no duplicates) More... | |
static ActionList | getActions (ComponentList, QString) |
get all the actions that of a given tag (note: the returned ActionList is guaranteed to be sorted by action name and to contain no duplicates) More... | |
static int | registerAllActions (ActionExtension *) |
register all actions from the given ActionExtension More... | |
static int | unregisterAllActions (ActionExtension *) |
unregister all actions from the given ActionExtension More... | |
static void | setTriggeredAction (Action *action) |
set the currently triggered action This is used by Action::trigger(..) to refresh all the viewer (the viewers interested by the fact an action was triggered can then update what they need to) More... | |
static Action * | getTriggeredAction () |
get the currently triggered action More... | |
Application resources management | |
static QString | getSelectedLanguage () |
Returns for the current CamiTK application, the selected language (stored in its .ini configuration file) More... | |
Protected Member Functions | |
bool | eventFilter (QObject *object, QEvent *event) override |
Event filter of this class instance to watch its properties instances. More... | |
Friends | |
Friend class | |
class | Component |
class | PersistenceManager |
Property management | |
static PropertyObject * | getPropertyObject () |
Get the property object of the application. More... | |
Application specific | |
bool | notify (QObject *, QEvent *) override |
reimplemented from QApplication to catch all exception from external libs used in CEP (e.g. from ITK) and avoid crashes... More... | |
static QString | getName () |
get the application name More... | |
static QSettings & | getSettings () |
Get the Core wide settings. More... | |
static int | exec () |
Overriden from QApplication: Enters the main event loop and waits until exit() is called, then returns the value that was set to exit() (which is 0 if exit() is called via quit()). More... | |
static const QDir | getLastUsedDirectory () |
Get the last used directory (e.g. More... | |
static void | setLastUsedDirectory (QDir) |
set (force) the last used directory More... | |
static void | addRecentDocument (QFileInfo) |
Add a document to the list of recent documents (e.g. More... | |
static const QList< QFileInfo > | getRecentDocuments () |
Get the list of recent documents. More... | |
static const int | getMaxRecentDocuments () |
get the maximal number of recent documents stored More... | |
Main Window management | |
void | setMainWindow (MainWindow *mw) |
set the main window. More... | |
static MainWindow * | getMainWindow () |
get the main window More... | |
static void | refresh () |
refresh the main window (this will call the refresh method of all viewers) More... | |
static void | showStatusBarMessage (QString msg, int timeout=0) |
Set a message to the status bar. More... | |
static void | resetProgressBar () |
Resets the progress bar if it exists. More... | |
static void | setProgressBarValue (int) |
set the progress bar value, value should be in [0..100]. More... | |
static void | vtkProgressFunction (vtkObject *caller, long unsigned int, void *, void *) |
Observer function to be called by vtkFilters and to update progress bar Example of use: More... | |
Viewer management | |
static Viewer * | getViewer (QString name) |
get the pointer to a registered viewer given its name More... | |
static Viewer * | getNewViewer (QString name, QString className) |
instantiate a new viewer of the given name and given class name (Viewer inheriting class). More... | |
static const ViewerList | getViewers () |
get all the viewers registered in the application (note: the returned ViewerList is guaranteed to be sorted by viewer name and to not contain any duplicate) More... | |
static ViewerList | getViewers (Component *) |
get the viewers that can manage/display the given component (note: the returned ViewerList is guaranteed to be sorted by viewer name and to contain no duplicates) More... | |
static bool | registerViewer (Viewer *) |
register a viewer in the viewer list (therefore allowing it to be refreshed by the main window automatically More... | |
static int | registerAllViewers (ViewerExtension *) |
register all viewers from the given ViewerExtension More... | |
static int | unregisterAllViewers (ViewerExtension *) |
unregister all viewers from the given ViewerExtension More... | |
Actions pipeline history | |
static void | addHistoryItem (HistoryItem item) |
Add the history item to the application history. More... | |
static HistoryItem | removeLastHistoryItem () |
Remove the last pushed actions in the history of the current pipeline. More... | |
static void | saveHistoryAsSXML () |
Save the history as an SCXML file, stored using. More... | |
The generic/default application.
Once this class is instantiated in the main, everything is setup. The constructor can take the command line arguments. It can also be asked not to load the extensions automatically,see Application().
If you do not have a specific MainWindow extension, then the default CamiTK MainWindow is used, see setMainWindow().
This class manages all application-level instances, structures and all. This explains the number of static methods in this class.
It manages:
: Policy to determine how a newly instantiated component's frame should be initialized regarding of its parent's component.
camitk::Application::Application | ( | QString | name, |
int & | argc, | ||
char ** | argv, | ||
bool | autoloadExtension = true , |
||
bool | registerFileExtension = false |
||
) |
Initializes the window system and constructs a CamiTK application object with argc command line arguments in argv.
The first parameter is the name of the application (used as a identifier in the settings, for example)
The second and third parameters comes from the command line (see QApplication API documentation). This constructor inits all the CamiTK context:
name | the name of the application, it will be used to save specific configuration for example. |
argc | the number of command line arguments |
argv | the values of the command line arguments |
autoloadExtension | if true, all the plugins are loaded |
registerFileExtension | if true, the application will prompt the user at first run if he wants to register file formats handled by loaded components with this application for opening. |
References camitk::ExtensionManager::autoload(), CAMITK_INFO, eventFilter(), camitk::ExtensionManager::getFileExtensions(), getName(), camitk::Core::getTestDataDir(), initIcons(), camitk::PropertyObject::loadFromSettings(), and camitk::ExtensionManager::registerFileExtension().
|
override |
destructor
References CAMITK_INFO.
|
static |
Add the history item to the application history.
The item is added to the history stack of actions used in a pipeline
item | the item to add to the history |
|
static |
Add a document to the list of recent documents (e.g.
when a document was opened) and update lastUsedDirectory
Referenced by loadWorkspace(), and open().
|
static |
clear all the selection, i.e call setSelected(false) for all the previously selected components and clear the list.
References camitk::Component::setSelected().
|
static |
Close a Component: if it has been changed, ask the user for more information, then if everything is ok, delete it.
component | the Component to close. |
References camitk::Component::getModified(), camitk::Component::getName(), refresh(), save(), and showStatusBarMessage().
Referenced by main().
|
overrideprotected |
Event filter of this class instance to watch its properties instances.
Each time a property has dynamically changed, this method is called.
References getName(), and camitk::PropertyObject::saveToSettings().
Referenced by Application().
|
static |
Overriden from QApplication: Enters the main event loop and waits until exit() is called, then returns the value that was set to exit() (which is 0 if exit() is called via quit()).
It is necessary to call this function to start event handling. The main event loop receives events from the window system and dispatches these to the application widgets.
Generally, no user interaction can take place before calling exec(). As a special case, modal widgets like QMessageBox can be used before calling exec(), because modal widgets call exec() to start a local event loop.
To make your application perform idle processing, i.e., executing a special function whenever there are no pending events, use a QTimer with 0 timeout. More advanced idle processing schemes can be achieved using processEvents().
References camitk::MainWindow::aboutToShow(), CAMITK_ERROR_ALT, setMainWindow(), and camitk::MainWindow::show().
Referenced by main().
|
static |
get a registered action given its name
Referenced by camitk::MainWindow::closeEvent(), camitk::InteractiveViewer::initActions(), camitk::MainWindow::MainWindow(), WorkspaceExtension::open(), registerAllActions(), save(), saveHistoryAsSXML(), camitk::PersistenceManager::saveWorkspace(), and camitk::MainWindow::show().
|
static |
get all the actions registered in the application (note: the returned ActionList is guaranteed to be sorted by action name and to contain no duplicates)
Referenced by camitk::Component::getActionMenu(), getActions(), and main().
|
static |
get all the actions that can be applied on a given component (note: the returned ActionList is guaranteed to be sorted by action name and to contain no duplicates)
References getActions(), camitk::Action::getComponentClassName(), and camitk::Component::getHierarchy().
|
static |
Get all the actions that can be applied on any components of the given list of components (note: the returned ActionList is guaranteed to be sorted by action name and to contain no duplicates)
References getActions().
|
static |
get all the actions that of a given tag (note: the returned ActionList is guaranteed to be sorted by action name and to contain no duplicates)
References camitk::actionLessThan(), getActions(), and camitk::Action::getTag().
|
static |
get the current application wide list of all Components.
This is the public method (return a const, the component list is private and cannot be modified externally).
Referenced by isAlive(), refresh(), and camitk::InteractiveViewer::refresh().
|
static |
Get the last used directory (e.g.
the directory of the last opened document)
|
static |
get the main window
References setMainWindow().
Referenced by loadWorkspace(), camitk::PersistenceManager::loadWorkspace(), saveWorkspace(), and camitk::PersistenceManager::saveWorkspace().
|
static |
get the maximal number of recent documents stored
|
static |
get the application name
Referenced by ActionStateMachine::ActionStateMachine(), Application(), camitk::InteractiveViewer::cameraOrientationChanged(), eventFilter(), camitk::InteractiveViewer::eventFilter(), camitk::Core::getGlobalInstallDir(), getSelectedLanguage(), camitk::MainWindow::initSettings(), camitk::InteractiveViewer::initSettings(), camitk::PersistenceManager::loadWorkspace(), camitk::MainWindow::saveSettings(), camitk::PersistenceManager::saveWorkspace(), camitk::MainWindow::setCentralViewer(), and camitk::InteractiveViewer::setHighlightMode().
|
static |
instantiate a new viewer of the given name and given class name (Viewer inheriting class).
References CAMITK_ERROR_ALT, camitk::ViewerExtension::getNewInstance(), and camitk::ExtensionManager::getViewerExtensionsList().
|
static |
Get the property object of the application.
Note that every time a property is changed, the Application is notified, update its settings and take the new property values into account.
Referenced by camitk::Action::applyTargetPosition(), camitk::PersistenceManager::loadWorkspace(), and camitk::PersistenceManager::saveWorkspace().
|
static |
Get the list of recent documents.
|
static |
get the currently selected Components.
This is the public method (return a const, the selected component list is private and cannot be modified externally).
Referenced by camitk::MeshComponent::changeSelectedSelection(), camitk::InteractiveViewer::keyPressEvent(), camitk::InteractiveViewer::refresh(), camitk::InteractiveViewer::renderingActorsChanged(), camitk::InteractiveViewer::setGlyph(), camitk::InteractiveViewer::setLabel(), camitk::InteractiveViewer::updateActions(), and camitk::Action::updateTargets().
|
static |
Returns for the current CamiTK application, the selected language (stored in its .ini configuration file)
References getName(), and getSettings().
Referenced by camitk::ActionExtension::initResources(), camitk::ComponentExtension::initResources(), and camitk::ViewerExtension::initResources().
|
static |
Get the Core wide settings.
This is the preferred methods for accessing and writing the settings for your specific needs, although you can use any kind of settings you like, using this allow you to store all settings in one place for all Core needs. This settings are stored in the user scope, using the INI format (i.e. no registers !), the organisation name is TIMC-IMAG and the application name is equal to Core::version. Check the QSettings API documentation to know exactly where is the settings file or call Application::getSettings().fileName()
The recommended method is to use one section for each Core area. Use the beginGroup("my area")/endGroup() to define specific settings area.
Referenced by camitk::ExtensionManager::autoload(), camitk::InteractiveViewer::cameraOrientationChanged(), camitk::InteractiveViewer::eventFilter(), getSelectedLanguage(), camitk::Core::getUserInstallDir(), camitk::MainWindow::initSettings(), camitk::InteractiveViewer::initSettings(), camitk::PropertyObject::loadFromSettings(), camitk::MainWindow::saveSettings(), camitk::PropertyObject::saveToSettings(), camitk::MainWindow::setCentralViewer(), and camitk::InteractiveViewer::setHighlightMode().
|
static |
get the current application wide list of instantiated top-level Components.
This is the public method (return a const, the top-level component list is private and cannot be modified externally).
Referenced by hasModified(), camitk::InteractiveViewer::refresh(), saveWorkspace(), and camitk::PersistenceManager::saveWorkspace().
|
static |
get the currently triggered action
Referenced by camitk::MainWindow::refresh().
|
static |
get the pointer to a registered viewer given its name
Referenced by camitk::Frame::getFrameVisibility(), camitk::MainWindow::initSettings(), camitk::PersistenceManager::loadWorkspace(), camitk::Component::refresh(), VRMLComponentExtension::save(), camitk::MeshComponent::setDataRepresentationOff(), camitk::Frame::setFrameVisibility(), and camitk::Component::setVisibility().
|
static |
get all the viewers registered in the application (note: the returned ViewerList is guaranteed to be sorted by viewer name and to not contain any duplicate)
Referenced by camitk::Component::getActionMenu(), getViewers(), and camitk::PersistenceManager::saveWorkspace().
|
static |
get the viewers that can manage/display the given component (note: the returned ViewerList is guaranteed to be sorted by viewer name and to contain no duplicates)
References camitk::Viewer::getComponentClassNames(), camitk::Component::getHierarchy(), and getViewers().
|
static |
Return true if at least one of the opened components has been modified, false otherwise.
References getTopLevelComponents().
|
static |
does this Component still exists?
References getAllComponents().
Referenced by camitk::Component::deleteChildren(), and camitk::InteractiveViewer::refresh().
|
static |
load a camitk file and its content into the application
References addRecentDocument(), getMainWindow(), camitk::MainWindow::initSettings(), camitk::PersistenceManager::loadWorkspace(), and showStatusBarMessage().
|
override |
reimplemented from QApplication to catch all exception from external libs used in CEP (e.g. from ITK) and avoid crashes...
References CAMITK_ERROR.
|
static |
load the filename and returns the corresponding top level Component (returns nullptr if an error occurs)
References addRecentDocument(), CAMITK_ERROR_ALT, CAMITK_WARNING_IF_ALT, camitk::Core::getComponentDirectories(), camitk::ExtensionManager::getComponentExtension(), camitk::ComponentExtension::getName(), camitk::Component::isTopLevel(), camitk::ComponentExtension::open(), refresh(), resetProgressBar(), showStatusBarMessage(), and camitk::AbortException::what().
Referenced by camitk::MainWindow::dropEvent(), camitk::PersistenceManager::loadComponents(), and main().
|
static |
load a directory and returns the corresponding Component (returns nullptr if an error occurs)
dirName | the name of the directory to open |
pluginName | the name of the plugin to use |
References CAMITK_ERROR_ALT, camitk::Core::getComponentDirectories(), camitk::ExtensionManager::getDataDirectoryComponentExtension(), camitk::ComponentExtension::getName(), camitk::ComponentExtension::open(), refresh(), resetProgressBar(), showStatusBarMessage(), and camitk::AbortException::what().
|
static |
refresh the main window (this will call the refresh method of all viewers)
References getAllComponents(), and camitk::MainWindow::refresh().
Referenced by close(), camitk::Component::getActionMenu(), camitk::PersistenceManager::loadComponents(), open(), openDirectory(), and camitk::Action::trigger().
|
static |
register all actions from the given ActionExtension
References CAMITK_ERROR_ALT, getAction(), camitk::ActionExtension::getActions(), camitk::Action::getDescription(), camitk::Action::getExtensionName(), camitk::Action::getFamily(), and camitk::Action::getName().
Referenced by camitk::ExtensionManager::loadExtension().
|
static |
register all viewers from the given ViewerExtension
References camitk::ViewerExtension::getViewers(), and registerViewer().
Referenced by ActionStateMachine::ActionStateMachine(), and camitk::ExtensionManager::loadExtension().
|
static |
register a viewer in the viewer list (therefore allowing it to be refreshed by the main window automatically
References CAMITK_ERROR_ALT, camitk::Viewer::getDescription(), camitk::Viewer::getName(), and camitk::ViewerExtension::getName().
Referenced by registerAllViewers().
|
static |
Remove the last pushed actions in the history of the current pipeline.
|
static |
Resets the progress bar if it exists.
See example of use for ProgressFunction for more detailed explanation.
References camitk::MainWindow::getProgressBar().
Referenced by open(), PMLComponentExtension::open(), and openDirectory().
|
static |
save a component to its file (as given by component->getFileName()).
This method look for the proper loaded ComponentExtension, and call its save(Component*) method
References CAMITK_ERROR_ALT, getAction(), camitk::Core::getComponentDirectories(), camitk::ExtensionManager::getComponentExtension(), camitk::Component::getFileName(), camitk::Component::getName(), camitk::ComponentExtension::save(), camitk::Action::setInputComponent(), setLastUsedDirectory(), camitk::Component::setModified(), showStatusBarMessage(), and camitk::Action::SUCCESS.
Referenced by close(), and main().
|
static |
Save the history as an SCXML file, stored using.
References CAMITK_ERROR_ALT, CAMITK_WARNING_ALT, getAction(), camitk::Core::getCurrentWorkingDir(), camitk::Action::getDescription(), camitk::HistoryItem::getInputHistoryComponents(), camitk::Action::getName(), camitk::HistoryComponent::getName(), camitk::HistoryItem::getName(), camitk::HistoryItem::getOutputHistoryComponents(), camitk::HistoryComponent::getType(), camitk::HistoryComponent::IMAGE_COMPONENT, camitk::HistoryComponent::MESH_COMPONENT, and camitk::HistoryComponent::OTHER.
|
static |
save the current workspace to a .camitk file.
This method uses PersistenceManager to save the workspace
References CAMITK_WARNING_ALT, getMainWindow(), getTopLevelComponents(), camitk::MainWindow::saveSettings(), and camitk::PersistenceManager::saveWorkspace().
|
static |
set (force) the last used directory
Referenced by save().
void camitk::Application::setMainWindow | ( | MainWindow * | mw | ) |
set the main window.
You need to call this method in order to use a customized CamiTK MainWindow instead of the default one. This method has to be called after init().
It allows you to set the main window using your application extension instance.
mw | The instance of main window you want to use for your application (if NULL a new instance of the MainWindow class is created) |
References CAMITK_ERROR, and camitk::MainWindow::redirectToConsole().
Referenced by exec(), getMainWindow(), and ActionStateMachine::initMainWindow().
|
static |
set the progress bar value, value should be in [0..100].
Attempting to change the current value to one outside the minimum-maximum range has no effect on the current value.
Consider using vtkProgressFunction()
References camitk::MainWindow::getProgressBar().
Referenced by camitk::ItkProgressObserver::Execute(), camitk::ItkProgressObserver::ItkProgressObserver(), and camitk::ItkProgressObserver::Reset().
|
static |
set the currently triggered action This is used by Action::trigger(..) to refresh all the viewer (the viewers interested by the fact an action was triggered can then update what they need to)
Referenced by camitk::Action::trigger().
|
static |
Set a message to the status bar.
By default there is no timeout (default), i.e. the given message remains displayed until this method is called again (or the status bar is cleared otherwise).
msg | the message to display in the status bar. |
timeout | number of milli-seconds (timeout) before the status bar is cleared (default = 0, i.e. until next call) |
References CAMITK_INFO_ALT.
Referenced by close(), loadWorkspace(), open(), PMLComponentExtension::open(), openDirectory(), camitk::InteractiveViewer::picked(), and save().
|
static |
unregister all actions from the given ActionExtension
References camitk::ActionExtension::getActions(), and camitk::Action::getName().
Referenced by camitk::ExtensionManager::unloadActionExtension().
|
static |
unregister all viewers from the given ViewerExtension
References camitk::Viewer::getName(), and camitk::ViewerExtension::getViewers().
Referenced by camitk::ExtensionManager::unloadViewerExtension().
|
static |
Observer function to be called by vtkFilters and to update progress bar Example of use:
References camitk::MainWindow::getProgressBar().
|
friend |
|
friend |