lumiera_/src/gui/widget/panel-bar.hpp

118 lines
3.2 KiB
C++
Raw Normal View History

2009-03-08 17:50:23 +01:00
/*
PANEL-BAR.hpp - container to place widgets into the GDL dock attachment area
2010-12-17 23:28:49 +01:00
2009-03-08 17:50:23 +01:00
Copyright (C) Lumiera.org
2009, Joel Holdsworth <joel@airwebreathe.org.uk>
2010-12-17 23:28:49 +01:00
2009-03-08 17:50:23 +01:00
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
2010-12-17 23:28:49 +01:00
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
2009-03-08 17:50:23 +01:00
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
2010-12-17 23:28:49 +01:00
2009-03-08 17:50:23 +01:00
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
2010-12-17 23:28:49 +01:00
2009-03-08 17:50:23 +01:00
*/
2009-03-08 17:50:23 +01:00
/** @file panel-bar.hpp
** Custom container widget to allow placing toolbar buttons
** into the active docking header area of GDL docking panels.
** This arrangement allows us to save a significant amount
** of screen real estate
**
2009-03-08 17:50:23 +01:00
*/
#ifndef GUI_WIDGET_PANEL_BAR_H
#define GUI_WIDGET_PANEL_BAR_H
#include "gui/widget/menu-button.hpp"
2009-03-08 17:50:23 +01:00
#include <gtkmm.h>
2009-03-08 17:50:23 +01:00
namespace gui {
namespace panel {
class Panel;
}
2009-03-18 18:58:57 +01:00
namespace widget {
2009-03-18 18:58:57 +01:00
2009-04-14 20:39:58 +02:00
2009-04-15 13:24:34 +02:00
/**
* A container widget for widgets
* to be displayed on GDL panels grips.
*/
class PanelBar
: public Gtk::Box
{
/** reference to the owner panel */
panel::Panel& panel_;
/** The panel menu drop-down button widget,
* that will be displayed in the corner of the bar. */
MenuButton panelButton_;
/** pointer to the lock menu item.
* @remarks This value will remain NULL until
* after setup_panel_button has been called. */
Gtk::CheckMenuItem* lockItem_;
/** The bar window.
* @remarks This window is used only to set the cursor
* as an arrow for any child widgets. */
Glib::RefPtr<Gdk::Window> window_;
public:
/** create a PanelBar with a given stock_id.
* @param owner_panel The GDL panel that is the parent of this panel bar.
* @param stock_id The stock id with a name and an icon for this panel.
*/
PanelBar (panel::Panel& owner_panel, const gchar *stock_id);
private:
/**
* Sets up panelButton, populating it with menu items.
*/
void setupPanelButton();
/**
* An event handler for when a panel type is chosen.
* @param type_index index of the panel description that will be instantiated.
*/
void on_panel_type (int type_index);
/**
* An event handler for when the "Hide" menu item is clicked
*/
void on_hide();
/**
* Event handler for when the "Lock" menu item is clicked
*/
void on_lock();
/**
* Event handler for when the split panel menu item is clicked
* @param split_direction The direction to split in.
*/
void on_split_panel (Gtk::Orientation split_direction);
};
2009-04-14 20:39:58 +02:00
}}// gui::widget
#endif /*GUI_WIDGET_PANEL_BAR_H*/