summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui2.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-03-19 20:53:22 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-03-19 20:53:22 +0000
commitd1630219500305397e1608e09508872f0ab2f836 (patch)
tree5ae9bc1619fb2a0646628614aa85103288bfee60 /gtk2_ardour/ardour_ui2.cc
parent587021ac0b63897d9b984d01b62b5dbb8514dd4f (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.cc55
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 {