diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-03-19 20:53:22 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-03-19 20:53:22 +0000 |
commit | d1630219500305397e1608e09508872f0ab2f836 (patch) | |
tree | 5ae9bc1619fb2a0646628614aa85103288bfee60 /gtk2_ardour/ardour_ui2.cc | |
parent | 587021ac0b63897d9b984d01b62b5dbb8514dd4f (diff) |
lots of tricks & tweaks related to the monitor section and All That It Uses
git-svn-id: svn://localhost/ardour2/branches/3.0@6777 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/ardour_ui2.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 55 |
1 files changed, 41 insertions, 14 deletions
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 52ab0716d8..6162ef22d9 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -72,10 +72,6 @@ ARDOUR_UI::setup_windows () we_have_dependents (); - setup_clock (); - setup_transport(); - build_menu_bar (); - theme_manager->signal_unmap().connect (sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/ToggleThemeManager"))); #ifdef TOP_MENUBAR @@ -97,6 +93,10 @@ ARDOUR_UI::setup_windows () editor->add_toplevel_controls (top_packer); + setup_clock (); + setup_transport(); + build_menu_bar (); + setup_tooltips (); return 0; @@ -174,6 +174,22 @@ block_prelight (Gtk::Widget& w) } #endif +XMLNode* +ARDOUR_UI::tearoff_settings (const char* name) const +{ + XMLNode* ui_node = Config->extra_xml(X_("UI")); + + if (ui_node) { + XMLNode* tearoff_node = ui_node->child (X_("Tearoffs")); + if (tearoff_node) { + XMLNode* mnode = tearoff_node->child (name); + return mnode; + } + } + + return 0; +} + void ARDOUR_UI::setup_transport () { @@ -319,9 +335,9 @@ ARDOUR_UI::setup_transport () /* CANNOT sigc::bind these to clicked or toggled, must use pressed or released */ solo_alert_button.set_name ("TransportSoloAlert"); - solo_alert_button.signal_pressed().connect (sigc::mem_fun(*this,&ARDOUR_UI::solo_alert_toggle)); + solo_alert_button.signal_button_press_event().connect (sigc::mem_fun(*this,&ARDOUR_UI::solo_alert_press), false); auditioning_alert_button.set_name ("TransportAuditioningAlert"); - auditioning_alert_button.signal_pressed().connect (sigc::mem_fun(*this,&ARDOUR_UI::audition_alert_toggle)); + auditioning_alert_button.signal_button_press_event().connect (sigc::mem_fun(*this,&ARDOUR_UI::audition_alert_press), false); alert_box.pack_start (solo_alert_button, false, false); alert_box.pack_start (auditioning_alert_button, false, false); @@ -435,6 +451,11 @@ ARDOUR_UI::setup_transport () Image* img = manage (new Image ((::get_icon (X_("sae"))))); transport_tearoff_hbox.pack_end (*img, false, false, 6); } + + XMLNode* tnode = tearoff_settings ("transport"); + if (tnode) { + transport_tearoff->set_state (*tnode); + } } void @@ -482,20 +503,26 @@ ARDOUR_UI::auditioning_changed (bool onoff) UI::instance()->call_slot (boost::bind (&ARDOUR_UI::_auditioning_changed, this, onoff)); } -void -ARDOUR_UI::audition_alert_toggle () +bool +ARDOUR_UI::audition_alert_press (GdkEventButton* ev) { if (_session) { _session->cancel_audition(); } + return true; } -void -ARDOUR_UI::solo_alert_toggle () +bool +ARDOUR_UI::solo_alert_press (GdkEventButton* ev) { - if (_session) { - _session->set_solo (_session->get_routes(), !_session->soloing()); - } + if (_session) { + if (_session->soloing()) { + _session->set_solo (_session->get_routes(), false); + } else if (_session->listening()) { + _session->set_listen (_session->get_routes(), false); + } + } + return true; } void @@ -505,7 +532,7 @@ ARDOUR_UI::solo_blink (bool onoff) return; } - if (_session->soloing()) { + if (_session->soloing() || _session->listening()) { if (onoff) { solo_alert_button.set_state (STATE_ACTIVE); } else { |