Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
DockArea Class Reference

#include "stage/workspace/dock-area.hpp"

Description

A class to manage DockItem objects for WorkspaceWindow.

Todo:
this code is smelly and needs some clean-up ///////////////////////////////TICKET #1026

Definition at line 49 of file dock-area.hpp.

Classes

class  Panel
 A helper class that will create PanelDescription objects. More...
 
class  PanelDescription
 A class to describe and instantiate Panel types. More...
 

Static Public Member Functions

template<class P >
static int findPanelID ()
 retrieve the internal type-ID corresponding to the given panel implementation type.
 
static int getPanelDescriptionCount ()
 Gets the number of panel descriptions.
 
static const gchar * getPanelStockID (const int index)
 Gets a panel description's stock id.
 
static const char * getPanelTitle (int index)
 Gets a panel description's title.
 

Public Member Functions

 DockArea (WorkspaceWindow &)
 
 ~DockArea ()
 
void setupDock ()
 Initialises this dock manager and creates the dock and all it's widgets.
 
Gdl::Dock & getDock ()
 Gets a pointer to the dock object.
 
Gdl::DockBar & getDockBar ()
 Gets a pointer to the dock bar.
 
WorkspaceWindowgetWorkspaceWindow ()
 Returns a reference to the owner workspace window.
 
panel::PanelshowPanel (const int description_index)
 Shows a panel given a description index.
 
bool hasPanel (const int description_index)
 was the indicated panel already allocated within this PanelManager's realm?
 
void switchPanel (panel::Panel &old_panel, const int description_index)
 Switches a panel from one type to another, without touching the underlying GdlDockItem.
 
void splitPanel (panel::Panel &panel, Gtk::Orientation split_direction)
 Splits a panel into two panels of the same type.
 

Private Member Functions

void createPanels ()
 Creates the standard panel layout.
 
panel::PanelcreatePanel_by_index (const int index)
 Creates a panel by description index.
 
panel::PanelcreatePanel_by_index (const int index, Gdl::DockItem &dock_item)
 Creates a panel by description index with a given GdlDockItem.
 
panel::PanelcreatePanel_by_name (CStr class_name)
 Creates a panel by class name.
 
int getPanelType (panel::Panel *const panel) const
 Gets the type of a given panel.
 
void removePanel (panel::Panel *const panel)
 Removes a panel from the panel list and deletes it.
 
void clearPanels ()
 Removes all panels from the panel list and deletes them.
 
void on_panel_shown (panel::Panel *panel)
 An event handler for when the panel is shown or hidden.
 

Static Private Member Functions

static int findPanelDescription (CStr class_name)
 Find the index of a panel description given the class name.
 

Private Attributes

WorkspaceWindowworkspaceWindow_
 reference to the owner workspace window object
 
Gdl::Dock dock_
 The pointer to GDL dock widget.
 
Gdl::DockBar dockBar_
 The pointer to GDL dock bar widget.
 
Glib::RefPtr< Gdl::DockLayout > dockLayout_
 The pointer to GDL dock layout object.
 
GdlDockPlaceholder * dockPlaceholders_ [4]
 Pointers to the 4 root place holders.
 
std::list< panel::Panel * > panels_
 list of all panels created
 

Static Private Attributes

static unsigned short panelID = 0
 An accumulator for the panel id.
 
static const PanelDescription panelDescriptionList []
 The list of panel descriptions.
 

Constructor & Destructor Documentation

◆ DockArea()

◆ ~DockArea()

~DockArea ( )

Definition at line 76 of file dock-area.cpp.

References DockArea::clearPanels(), and DockArea::dockPlaceholders_.

+ Here is the call graph for this function:

Member Function Documentation

◆ setupDock()

void setupDock ( )

Initialises this dock manager and creates the dock and all it's widgets.

Remarks
This function must be called only once as the first call after construction.
Deprecated:
///////////////////////////////////////////////////////////////////////////////////TICKET #1145 UI must not populate itself!!!!!

Definition at line 94 of file dock-area.cpp.

References DockArea::createPanels(), DockArea::dock_, DockArea::dockPlaceholders_, and NULL.

+ Here is the call graph for this function:

◆ getDock()

Gdl::Dock & getDock ( )

Gets a pointer to the dock object.

Remarks
Note that this must not be called before setup_dock. ///////////////////////////////TICKET #1026 : code smell

Definition at line 116 of file dock-area.cpp.

References DockArea::dock_.

◆ getDockBar()

Gdl::DockBar & getDockBar ( )

Gets a pointer to the dock bar.

Remarks
Note that this must not be called before setup_dock.

Definition at line 123 of file dock-area.cpp.

References DockArea::dockBar_.

◆ getWorkspaceWindow()

WorkspaceWindow & getWorkspaceWindow ( )

Returns a reference to the owner workspace window.

Definition at line 130 of file dock-area.cpp.

References DockArea::workspaceWindow_.

◆ showPanel()

panel::Panel & showPanel ( const int  description_index)

Shows a panel given a description index.

Parameters
description_indexThe index of the panel type to show.
Returns
existing or new Panel, docked within the realm of this PanelManager.

Definition at line 146 of file dock-area.cpp.

References DockArea::createPanel_by_index(), DockArea::dock_, Panel::getDockItem(), DockArea::getPanelType(), Panel::is_shown(), DockArea::panels_, and Panel::show().

+ Here is the call graph for this function:

◆ hasPanel()

bool hasPanel ( const int  description_index)

was the indicated panel already allocated within this PanelManager's realm?

Definition at line 137 of file dock-area.cpp.

References DockArea::getPanelType(), util::has_any(), and DockArea::panels_.

+ Here is the call graph for this function:

◆ switchPanel()

void switchPanel ( panel::Panel old_panel,
const int  description_index 
)

Switches a panel from one type to another, without touching the underlying GdlDockItem.

Parameters
old_panelThe panel which will be transformed to a new type.
description_indexThe index of the panel description that will be instantiated.

Definition at line 177 of file dock-area.cpp.

References DockArea::createPanel_by_index(), Panel::getDockItem(), DockArea::getPanelDescriptionCount(), and DockArea::removePanel().

+ Here is the call graph for this function:

◆ splitPanel()

void splitPanel ( panel::Panel panel,
Gtk::Orientation  split_direction 
)

Splits a panel into two panels of the same type.

Parameters
panelThe panel to split.
split_directionThe direction to split the panel in.

Definition at line 194 of file dock-area.cpp.

References DockArea::createPanel_by_index(), Panel::getDockItem(), and DockArea::getPanelType().

+ Here is the call graph for this function:

◆ findPanelID()

template<class P >
int findPanelID ( )
inlinestatic

retrieve the internal type-ID corresponding to the given panel implementation type.

Returns
internal index into the panelDescriptionList, or -1 if not found.
Deprecated:
the whole concept of panel identification needs overhaul 8/2018

Definition at line 352 of file dock-area.hpp.

References DockArea::findPanelDescription().

+ Here is the call graph for this function:

◆ getPanelDescriptionCount()

int getPanelDescriptionCount ( )
static

Gets the number of panel descriptions.

Definition at line 225 of file dock-area.cpp.

References DockArea::panelDescriptionList.

Referenced by DockArea::createPanel_by_index(), DockArea::findPanelDescription(), DockArea::getPanelStockID(), DockArea::getPanelTitle(), DockArea::getPanelType(), and DockArea::switchPanel().

+ Here is the caller graph for this function:

◆ getPanelStockID()

const gchar * getPanelStockID ( const int  index)
static

Gets a panel description's stock id.

Parameters
indexThe index of the panel to retrieve.
Returns
Returns the stock id of a panel at this index.

Definition at line 232 of file dock-area.cpp.

References DockArea::getPanelDescriptionCount(), DockArea::PanelDescription::getStockID(), and DockArea::panelDescriptionList.

+ Here is the call graph for this function:

◆ getPanelTitle()

const char * getPanelTitle ( int  index)
static

Gets a panel description's title.

Parameters
indexThe index of the panel to retrieve.
Returns
Returns the title of a panel at this index.

Definition at line 241 of file dock-area.cpp.

References DockArea::getPanelDescriptionCount(), DockArea::PanelDescription::getTitle(), and DockArea::panelDescriptionList.

+ Here is the call graph for this function:

◆ createPanels()

void createPanels ( )
private

Creates the standard panel layout.

Definition at line 250 of file dock-area.cpp.

References DockArea::createPanel_by_name(), DockArea::dock_, and Panel::getDockItem().

Referenced by DockArea::setupDock().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ findPanelDescription()

int findPanelDescription ( CStr  class_name)
staticprivate

Find the index of a panel description given the class name.

Parameters
class_nameThe name of the object class to search for.
Returns
Returns the index of the panel description found, or -1 if no description was found for this type.

Definition at line 264 of file dock-area.cpp.

References DockArea::getPanelDescriptionCount(), and DockArea::panelDescriptionList.

Referenced by DockArea::createPanel_by_name(), and DockArea::findPanelID().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createPanel_by_index() [1/2]

panel::Panel * createPanel_by_index ( const int  index)
private

Creates a panel by description index.

Parameters
indexThe index of the description to instantiate.
Returns
Returns a pointer to the new instantiated panel object.

Definition at line 281 of file dock-area.cpp.

References DockArea::createPanel_by_index(), DockArea::getPanelDescriptionCount(), and DockArea::panelID.

Referenced by DockArea::createPanel_by_index(), DockArea::createPanel_by_name(), DockArea::showPanel(), DockArea::splitPanel(), and DockArea::switchPanel().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createPanel_by_index() [2/2]

panel::Panel * createPanel_by_index ( const int  index,
Gdl::DockItem &  dock_item 
)
private

Creates a panel by description index with a given GdlDockItem.

Parameters
indexThe index of the description to instantiate.
dock_itemThe GdlDockItem to attach this panel to
Returns
Returns a pointer to the new instantiated panel object.

Definition at line 297 of file dock-area.cpp.

References DockArea::PanelDescription::create(), DockArea::on_panel_shown(), DockArea::panelDescriptionList, DockArea::panels_, and Panel::signal_hidePanel().

+ Here is the call graph for this function:

◆ createPanel_by_name()

panel::Panel * createPanel_by_name ( CStr  class_name)
private

Creates a panel by class name.

Parameters
class_nameThe name of the object class to create.
Returns
Returns a pointer to the new instantiated panel object.

Definition at line 316 of file dock-area.cpp.

References DockArea::createPanel_by_index(), and DockArea::findPanelDescription().

Referenced by DockArea::createPanels().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPanelType()

int getPanelType ( panel::Panel *const  panel) const
private

Gets the type of a given panel.

Parameters
panelThe Panel to get the type of
Returns
Returns the index of the panel description found, or -1 if no description was found for this type.

Definition at line 325 of file dock-area.cpp.

References DockArea::getPanelDescriptionCount(), and DockArea::panelDescriptionList.

Referenced by DockArea::hasPanel(), DockArea::showPanel(), and DockArea::splitPanel().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removePanel()

void removePanel ( panel::Panel *const  panel)
private

Removes a panel from the panel list and deletes it.

Parameters
panelThe panel to remove and delete.

Definition at line 343 of file dock-area.cpp.

References DockArea::panels_.

Referenced by DockArea::on_panel_shown(), and DockArea::switchPanel().

+ Here is the caller graph for this function:

◆ clearPanels()

void clearPanels ( )
private

Removes all panels from the panel list and deletes them.

Definition at line 361 of file dock-area.cpp.

References DockArea::panels_.

Referenced by DockArea::~DockArea().

+ Here is the caller graph for this function:

◆ on_panel_shown()

void on_panel_shown ( panel::Panel panel)
private

An event handler for when the panel is shown or hidden.

Parameters
panelA pointer to the panel that was hidden.

Definition at line 373 of file dock-area.cpp.

References Panel::is_iconified(), Panel::is_shown(), and DockArea::removePanel().

Referenced by DockArea::createPanel_by_index().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ workspaceWindow_

WorkspaceWindow& workspaceWindow_
private

reference to the owner workspace window object

Definition at line 52 of file dock-area.hpp.

Referenced by DockArea::getWorkspaceWindow().

◆ dock_

Gdl::Dock dock_
private

The pointer to GDL dock widget.

Remarks
This value is NULL until setup_dock has been called.

Definition at line 57 of file dock-area.hpp.

Referenced by DockArea::DockArea(), DockArea::createPanels(), DockArea::getDock(), DockArea::setupDock(), and DockArea::showPanel().

◆ dockBar_

Gdl::DockBar dockBar_
private

The pointer to GDL dock bar widget.

Remarks
This value is NULL until setup_dock has been called.

Definition at line 62 of file dock-area.hpp.

Referenced by DockArea::getDockBar().

◆ dockLayout_

Glib::RefPtr<Gdl::DockLayout> dockLayout_
private

The pointer to GDL dock layout object.

Remarks
This value is NULL until setup_dock has been called.

Definition at line 67 of file dock-area.hpp.

Referenced by DockArea::DockArea().

◆ dockPlaceholders_

GdlDockPlaceholder* dockPlaceholders_[4]
private

Pointers to the 4 root place holders.

Remarks
All 4 entries are NULL until setup_dock has been called.

Definition at line 72 of file dock-area.hpp.

Referenced by DockArea::DockArea(), DockArea::~DockArea(), and DockArea::setupDock().

◆ panels_

std::list<panel::Panel*> panels_
private

◆ panelID

unsigned short panelID = 0
staticprivate

An accumulator for the panel id.

Definition at line 80 of file dock-area.hpp.

Referenced by DockArea::createPanel_by_index().

◆ panelDescriptionList

const DockArea::PanelDescription panelDescriptionList
staticprivate
+ Collaboration diagram for DockArea:

The documentation for this class was generated from the following files: