Lumiera  0.pre.03
»edityourfreedom«
PanelManager Class Reference

#include "gui/workspace/panel-manager.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 53 of file panel-manager.hpp.

Public Member Functions

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

Static Public Member Functions

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

Classes

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

Private Member Functions

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

Static Private Member Functions

static int findPanelDescription (const char *class_name)
 Find the index of a panel description given the class name. More...
 

Private Attributes

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

Static Private Attributes

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

Constructor & Destructor Documentation

◆ PanelManager()

◆ ~PanelManager()

Definition at line 80 of file panel-manager.cpp.

References PanelManager::clearPanels(), and PanelManager::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.

Definition at line 98 of file panel-manager.cpp.

References PanelManager::createPanels(), PanelManager::dock_, PanelManager::dockPlaceholders_, ENSURE(), and NULL.

Referenced by WorkspaceWindow::createUI().

+ Here is the call graph for this function:
+ Here is the caller 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 120 of file panel-manager.cpp.

References PanelManager::dock_.

Referenced by WorkspaceWindow::createUI().

+ Here is the caller graph for this function:

◆ 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 127 of file panel-manager.cpp.

References PanelManager::dockBar_.

Referenced by WorkspaceWindow::createUI().

+ Here is the caller graph for this function:

◆ getWorkspaceWindow()

WorkspaceWindow & getWorkspaceWindow ( )

Returns a reference to the owner workspace window.

Definition at line 134 of file panel-manager.cpp.

References PanelManager::workspaceWindow_.

Referenced by Panel::getWorkspaceWindow().

+ Here is the caller graph for this function:

◆ 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 150 of file panel-manager.cpp.

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

Referenced by Actions::populateShowPanelActions().

+ Here is the call graph for this function:
+ Here is the caller 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 141 of file panel-manager.cpp.

References PanelManager::getPanelType(), util::has_any(), and PanelManager::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 180 of file panel-manager.cpp.

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

Referenced by PanelBar::on_panel_type().

+ Here is the call graph for this function:
+ Here is the caller 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 197 of file panel-manager.cpp.

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

Referenced by PanelBar::on_split_panel().

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

◆ findPanelID()

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.

Definition at line 353 of file panel-manager.hpp.

◆ getPanelDescriptionCount()

int getPanelDescriptionCount ( )
static

Gets the number of panel descriptions.

Definition at line 228 of file panel-manager.cpp.

References PanelManager::panelDescriptionList.

Referenced by PanelManager::createPanel_by_index(), PanelManager::findPanelDescription(), PanelManager::getPanelStockID(), PanelManager::getPanelTitle(), PanelManager::getPanelType(), Actions::populateShowPanelActions(), and PanelManager::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 235 of file panel-manager.cpp.

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

Referenced by Actions::populateShowPanelActions().

+ Here is the call graph for this function:
+ Here is the caller 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 243 of file panel-manager.cpp.

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

+ Here is the call graph for this function:

◆ createPanels()

void createPanels ( )
private

Creates the standard panel layout.

Definition at line 251 of file panel-manager.cpp.

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

Referenced by PanelManager::setupDock().

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

◆ findPanelDescription()

int findPanelDescription ( const char *  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 265 of file panel-manager.cpp.

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

Referenced by PanelManager::createPanel_by_name().

+ 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 282 of file panel-manager.cpp.

References PanelManager::getPanelDescriptionCount(), and PanelManager::panelID.

Referenced by PanelManager::createPanel_by_name(), PanelManager::showPanel(), PanelManager::splitPanel(), and PanelManager::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 panel-manager.cpp.

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

+ Here is the call graph for this function:

◆ createPanel_by_name()

panel::Panel * createPanel_by_name ( const char *  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 panel-manager.cpp.

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

Referenced by PanelManager::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 panel-manager.cpp.

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

Referenced by PanelManager::hasPanel(), PanelManager::showPanel(), and PanelManager::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 panel-manager.cpp.

References PanelManager::panels_.

Referenced by PanelManager::on_panel_shown(), and PanelManager::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 panel-manager.cpp.

References PanelManager::panels_.

Referenced by PanelManager::~PanelManager().

+ 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 panel-manager.cpp.

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

Referenced by PanelManager::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 56 of file panel-manager.hpp.

Referenced by PanelManager::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 61 of file panel-manager.hpp.

Referenced by PanelManager::createPanels(), PanelManager::getDock(), PanelManager::PanelManager(), PanelManager::setupDock(), and PanelManager::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 66 of file panel-manager.hpp.

Referenced by PanelManager::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 71 of file panel-manager.hpp.

Referenced by PanelManager::PanelManager().

◆ 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 76 of file panel-manager.hpp.

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

◆ panels_

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

◆ panelID

unsigned short panelID
staticprivate

An accumulator for the panel id.

Definition at line 84 of file panel-manager.hpp.

Referenced by PanelManager::createPanel_by_index().

◆ panelDescriptionList

+ Collaboration diagram for PanelManager:

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