aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin/imode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/coreplugin/imode.cpp')
-rw-r--r--src/plugins/coreplugin/imode.cpp100
1 files changed, 98 insertions, 2 deletions
diff --git a/src/plugins/coreplugin/imode.cpp b/src/plugins/coreplugin/imode.cpp
index 7c5fd8e9ad..f3faeab19b 100644
--- a/src/plugins/coreplugin/imode.cpp
+++ b/src/plugins/coreplugin/imode.cpp
@@ -27,16 +27,110 @@
#include "modemanager.h"
-using namespace Core;
+namespace Core {
+
+/*!
+ \class Core::IMode
+ \inheaderfile coreplugin/imode.h
+ \ingroup mainclasses
+ \inmodule QtCreator
+
+ \brief The IMode class represents a mode in \QC.
+
+ This class defines a mode and its representation as a tool button in the
+ mode selector on the left side of \QC's main window.
+
+ Modes are used to show a different UI for different development tasks.
+ Therefore modes control the layout of most of Qt Creator's main window,
+ except for the tool bar on the left side and the status bar. For example
+ Edit mode, the most commonly used mode for coding, shows the code editor
+ and various navigation and output panes. Debug mode enhances that view with
+ a configurable layout of debugging related information. Design mode
+ reserves all the main window's space for the graphical editor.
+
+ A mode is an IContext. Set the context's \l{IContext::widget()}{widget}
+ to define the mode's layout.
+
+ Adding a mode should be done sparingly, only as a last reserve. Consider if
+ your feature can instead be implemented as a INavigationWidgetFactory,
+ IOutputPane, \c{Debugger::Utils::Perspective}, separate dialog, or
+ specialized IEditor first.
+
+ If you add a mode, consider adding a NavigationWidgetPlaceHolder
+ on the left side and a OutputPanePlaceHolder on the bottom of your
+ mode's layout.
+
+ Modes automatically register themselves with \QC when they are created and
+ unregister themselves when they are destructed.
+*/
+
+/*!
+ \property IMode::enabled
+
+ This property holds whether the mode is enabled.
+
+ By default, this property is \c true.
+*/
+
+/*!
+ \property IMode::displayName
+
+ This property holds the display name of the mode.
+
+ The display name is shown under the mode icon in the mode selector.
+*/
+
+/*!
+ \property IMode::icon
+
+ This property holds the icon of the mode.
+
+ The icon is shown for the mode in the mode selector. Mode icons should
+ support the sizes 34x34 pixels and 68x68 pixels for HiDPI.
+*/
+
+/*!
+ \property IMode::priority
+
+ This property holds the priority of the mode.
+
+ The priority defines the order in which the modes are shown in the mode
+ selector. Higher priority moves to mode towards the top. Welcome mode,
+ which should stay at the top, has the priority 100. The default priority is
+ -1.
+*/
+
+/*!
+ \property IMode::id
+
+ This property holds the ID of the mode.
+*/
+
+/*!
+ \property IMode::menu
+
+ This property holds the mode's menu.
+
+ By default, a mode does not have a menu. When you set a menu, it is not
+ owned by the mode unless you set the parent explicitly.
+*/
+
+/*!
+ Creates an IMode with an optional \a parent.
+
+ Registers the mode in \QC.
+*/
IMode::IMode(QObject *parent) : IContext(parent)
{
ModeManager::instance()->addMode(this);
}
+/*!
+ Unregisters the mode from \QC and destroys it.
+*/
IMode::~IMode()
{
ModeManager::instance()->removeMode(this);
- delete m_menu;
}
void IMode::setEnabled(bool enabled)
@@ -51,3 +145,5 @@ bool IMode::isEnabled() const
{
return m_isEnabled;
}
+
+} // namespace Core