summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui_ed.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-10-29 20:07:00 +0000
committerCarl Hetherington <carl@carlh.net>2011-10-29 20:07:00 +0000
commit4d365d08c1f654289f3df5a3b2ef6079b1dcea28 (patch)
tree16c571e289b6c9762b3d561959a951357a9c8029 /gtk2_ardour/ardour_ui_ed.cc
parent780cd2fabcf15e666fa219fc94720c8c67da204b (diff)
Use general VisibilityGroup class to manage visibility
of bits of the status bar. git-svn-id: svn://localhost/ardour2/branches/3.0@10340 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/ardour_ui_ed.cc')
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc111
1 files changed, 13 insertions, 98 deletions
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index c9381b7a64..8ab5a9aa50 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -566,12 +566,15 @@ ARDOUR_UI::build_menu_bar ()
use_menubar_as_top_menubar ();
#endif
+ bool wall_clock = false;
+ bool disk_space = false;
+
if (!Profile->get_small_screen()) {
#ifndef GTKOSX
// OSX provides its own wallclock, thank you very much
- _status_bar_visiblity = (StatusBarComponent) (_status_bar_visiblity | StatusWallClock);
+ wall_clock = true;
#endif
- _status_bar_visiblity = (StatusBarComponent) (_status_bar_visiblity | StatusDiskSpace);
+ disk_space = true;
}
hbox->pack_end (wall_clock_box, false, false, 2);
@@ -586,102 +589,14 @@ ARDOUR_UI::build_menu_bar ()
menu_bar_base.set_name ("MainMenuBar");
menu_bar_base.add (menu_hbox);
- ev->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::status_bar_button_press_event));
-}
-
-bool
-ARDOUR_UI::status_bar_button_press_event (GdkEventButton* ev)
-{
- if (ev->button != 3) {
- return false;
- }
-
- using namespace Menu_Helpers;
-
- Menu* m = manage (new Menu);
-
- MenuList& items = m->items ();
-
- items.push_back (CheckMenuElem (_("Wall Clock")));
- CheckMenuItem* i = dynamic_cast<CheckMenuItem*> (&items.back ());
- i->set_active (_status_bar_visiblity & StatusWallClock);
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_status_bar_visibility), StatusWallClock));
-
- items.push_back (CheckMenuElem (_("Disk Space")));
- i = dynamic_cast<CheckMenuItem*> (&items.back ());
- i->set_active (_status_bar_visiblity & StatusDiskSpace);
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_status_bar_visibility), StatusDiskSpace));
+ _status_bar_visibility.add (&wall_clock_box, X_("WallClock"), _("Wall Clock"), wall_clock);
+ _status_bar_visibility.add (&disk_space_box, X_("Disk"), _("Disk Space"), disk_space);
+ _status_bar_visibility.add (&cpu_load_box, X_("DSP"), _("DSP"));
+ _status_bar_visibility.add (&buffer_load_box, X_("Buffers"), _("Buffers"));
+ _status_bar_visibility.add (&sample_rate_box, X_("JACK"), _("JACK Sampling Rate and Latency"));
+ _status_bar_visibility.add (&format_box, X_("Format"), _("File Format"));
- items.push_back (CheckMenuElem (_("DSP")));
- i = dynamic_cast<CheckMenuItem*> (&items.back ());
- i->set_active (_status_bar_visiblity & StatusCPULoad);
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_status_bar_visibility), StatusCPULoad));
-
- items.push_back (CheckMenuElem (_("Buffers")));
- i = dynamic_cast<CheckMenuItem*> (&items.back ());
- i->set_active (_status_bar_visiblity & StatusBufferLoad);
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_status_bar_visibility), StatusBufferLoad));
-
- items.push_back (CheckMenuElem (_("JACK Sampling Rate and Latency")));
- i = dynamic_cast<CheckMenuItem*> (&items.back ());
- i->set_active (_status_bar_visiblity & StatusSampleRate);
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_status_bar_visibility), StatusSampleRate));
-
- items.push_back (CheckMenuElem (_("File Format")));
- i = dynamic_cast<CheckMenuItem*> (&items.back ());
- i->set_active (_status_bar_visiblity & StatusFormat);
- i->signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_status_bar_visibility), StatusFormat));
-
- m->popup (1, ev->time);
-
- return true;
-}
-
-void
-ARDOUR_UI::update_status_bar_visibility ()
-{
- if (_status_bar_visiblity & StatusWallClock) {
- wall_clock_box.show ();
- } else {
- wall_clock_box.hide ();
- }
-
- if (_status_bar_visiblity & StatusDiskSpace) {
- disk_space_box.show ();
- } else {
- disk_space_box.hide ();
- }
-
- if (_status_bar_visiblity & StatusCPULoad) {
- cpu_load_box.show ();
- } else {
- cpu_load_box.hide ();
- }
-
- if (_status_bar_visiblity & StatusBufferLoad) {
- buffer_load_box.show ();
- } else {
- buffer_load_box.hide ();
- }
-
- if (_status_bar_visiblity & StatusSampleRate) {
- sample_rate_box.show ();
- } else {
- sample_rate_box.hide ();
- }
-
- if (_status_bar_visiblity & StatusFormat) {
- format_box.show ();
- } else {
- format_box.hide ();
- }
-}
-
-void
-ARDOUR_UI::toggle_status_bar_visibility (StatusBarComponent c)
-{
- _status_bar_visiblity = (StatusBarComponent) (_status_bar_visiblity ^ c);
- update_status_bar_visibility ();
+ ev->signal_button_press_event().connect (sigc::mem_fun (_status_bar_visibility, &VisibilityGroup::button_press_event));
}
void
@@ -829,7 +744,7 @@ ARDOUR_UI::save_ardour_state ()
Config->add_extra_xml (get_transport_controllable_state());
XMLNode* window_node = new XMLNode (X_("UI"));
- window_node->add_property (X_("status-bar-visibility"), enum_2_string (_status_bar_visiblity));
+ window_node->add_property (_status_bar_visibility.get_state_name().c_str(), _status_bar_visibility.get_state_value ());
for (list<WindowProxyBase*>::iterator i = _window_proxies.begin(); i != _window_proxies.end(); ++i) {
if ((*i)->rc_configured()) {