, error_log_button (_("Errors"))
+ , _status_bar_visibility (X_("status-bar"))
+
{
using namespace Gtk::Menu_Helpers;
starting.connect (sigc::mem_fun(*this, &ARDOUR_UI::startup));
stopping.connect (sigc::mem_fun(*this, &ARDOUR_UI::shutdown));
- {
- _status_bar_visiblity = (StatusBarComponent) (StatusCPULoad | StatusBufferLoad | StatusSampleRate | StatusFormat);
- XMLNode* n = Config->extra_xml (X_("UI"));
- if (n) {
- XMLProperty* p = n->property (X_("status-bar-visibility"));
- if (p) {
- _status_bar_visiblity = (StatusBarComponent) string_2_enum (p->value(), _status_bar_visiblity);
- }
- }
- }
}
/** @return true if a session was chosen and `apply' clicked, otherwise false if `cancel' was clicked */
throw failed_constructor ();
}
+ /* Do this after setup_windows (), as that's when the _status_bar_visibility is created */
+ XMLNode* n = Config->extra_xml (X_("UI"));
+ if (n) {
+ _status_bar_visibility.set_state (*n);
+ }
+
check_memory_locking();
/* this is the first point at which all the keybindings are available */
/* We have to do this here since goto_editor_window() ends up calling show_all() on the
* editor window, and we may want stuff to be hidden.
*/
- update_status_bar_visibility ();
+ _status_bar_visibility.update ();
BootMessage (string_compose (_("%1 is ready for use"), PROGRAM_NAME));
}
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);
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
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()) {