summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour.menus.in1
-rw-r--r--gtk2_ardour/ardour_ui.h4
-rw-r--r--gtk2_ardour/ardour_ui2.cc5
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc17
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc1
-rw-r--r--gtk2_ardour/ardour_ui_mixer.cc20
-rw-r--r--gtk2_ardour/wscript1
7 files changed, 49 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index f666262f16..15f1bde1b6 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -511,6 +511,7 @@
</menu>
<menu action = 'WindowMenu'>
<menuitem action='toggle-mixer'/>
+ <menuitem action='toggle-meterbridge'/>
<menuitem action='toggle-editor-mixer'/>
<separator/>
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 0ed5d145b4..dd025b6f8b 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -71,6 +71,7 @@
#include "ardour_dialog.h"
#include "ardour_window.h"
#include "editing.h"
+#include "meterbridge.h"
#include "nsm.h"
#include "ui_config.h"
#include "enums.h"
@@ -306,6 +307,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void goto_editor_window ();
void goto_mixer_window ();
void toggle_mixer_window ();
+ void toggle_meterbridge ();
void toggle_editor_mixer ();
int setup_windows ();
@@ -570,6 +572,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
PublicEditor *editor;
int create_editor ();
+ Meterbridge *meterbridge;
+ int create_meterbridge ();
/* Dialogs that can be created via new<T> */
WM::Proxy<SpeakerDialog> speaker_config_window;
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index 76396e845d..5a64e53140 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -78,6 +78,11 @@ ARDOUR_UI::setup_windows ()
return -1;
}
+ if (create_meterbridge ()) {
+ error << _("UI: cannot setup meterbridge") << endmsg;
+ return -1;
+ }
+
/* all other dialogs are created conditionally */
we_have_dependents ();
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index e8d94bbe04..4ed563e201 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -315,6 +315,23 @@ ARDOUR_UI::toggle_mixer_window ()
}
void
+ARDOUR_UI::toggle_meterbridge ()
+{
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("toggle-meterbridge"));
+ if (!act) {
+ return;
+ }
+
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
+
+ if (tact->get_active()) {
+ meterbridge->show_window ();
+ } else {
+ meterbridge->hide ();
+ }
+}
+
+void
ARDOUR_UI::toggle_editor_mixer ()
{
bool obscuring = false;
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index b6ba025d99..c5a9ee0775 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -229,6 +229,7 @@ ARDOUR_UI::install_actions ()
ActionManager::register_toggle_action (common_actions, X_("toggle-mixer"), S_("Window|Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_window));
ActionManager::register_action (common_actions, X_("toggle-editor-mixer"), _("Toggle Editor+Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_editor_mixer));
+ ActionManager::register_toggle_action (common_actions, X_("toggle-meterbridge"), S_("Window|Meter"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_meterbridge));
act = ActionManager::register_action (common_actions, X_("NewMIDITracer"), _("MIDI Tracer"), sigc::mem_fun(*this, &ARDOUR_UI::new_midi_tracer_window));
ActionManager::session_sensitive_actions.push_back (act);
diff --git a/gtk2_ardour/ardour_ui_mixer.cc b/gtk2_ardour/ardour_ui_mixer.cc
index 2604e8215b..a2669f968d 100644
--- a/gtk2_ardour/ardour_ui_mixer.cc
+++ b/gtk2_ardour/ardour_ui_mixer.cc
@@ -26,6 +26,7 @@
#include "actions.h"
#include "ardour_ui.h"
#include "mixer_ui.h"
+#include "meterbridge.h"
#include "i18n.h"
@@ -50,3 +51,22 @@ ARDOUR_UI::create_mixer ()
return 0;
}
+
+int
+ARDOUR_UI::create_meterbridge ()
+
+{
+ try {
+ meterbridge = Meterbridge::instance ();
+ }
+
+ catch (failed_constructor& err) {
+ return -1;
+ }
+
+ meterbridge->signal_window_state_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::main_window_state_event_handler), false));
+ meterbridge->signal_unmap().connect (sigc::bind (sigc::ptr_fun (&ActionManager::uncheck_toggleaction), X_("<Actions>/Common/toggle-meterbridge")));
+
+ return 0;
+}
+
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript
index 5a8ecc771c..325f0eac62 100644
--- a/gtk2_ardour/wscript
+++ b/gtk2_ardour/wscript
@@ -145,6 +145,7 @@ gtk2_ardour_sources = [
'mixer_group_tabs.cc',
'mixer_strip.cc',
'mixer_ui.cc',
+ 'meterbridge.cc',
'monitor_section.cc',
'mono_panner.cc',
'mono_panner_editor.cc',