diff options
author | Carl Hetherington <carl@carlh.net> | 2011-10-29 20:07:00 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-10-29 20:07:00 +0000 |
commit | 4d365d08c1f654289f3df5a3b2ef6079b1dcea28 (patch) | |
tree | 16c571e289b6c9762b3d561959a951357a9c8029 /gtk2_ardour/ardour_ui_ed.cc | |
parent | 780cd2fabcf15e666fa219fc94720c8c67da204b (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.cc | 111 |
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()) { |