summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-07-08 01:21:22 +0000
committerCarl Hetherington <carl@carlh.net>2010-07-08 01:21:22 +0000
commitc546ad359a1edb9cc2c2383cac00d49648b97268 (patch)
treed040c430f78f2ce18b038bfd88efea50f8c752dd /gtk2_ardour
parent4885f29be158999626eb6dfa5507fe2258d388b0 (diff)
Allow multiple MIDI tracer windows.
git-svn-id: svn://localhost/ardour2/branches/3.0@7392 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour.menus.in2
-rw-r--r--gtk2_ardour/ardour_ui.h4
-rw-r--r--gtk2_ardour/ardour_ui2.cc3
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc21
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc2
5 files changed, 19 insertions, 13 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index e2edc18f0a..261fe4a8d5 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -437,7 +437,7 @@
<menuitem action='ToggleBundleManager'/>
<menuitem action='ToggleThemeManager'/>
<menuitem action='ToggleBigClock'/>
- <menuitem action='ToggleMIDITracer'/>
+ <menuitem action='NewMIDITracer'/>
<menuitem action='toggle-audio-connection-manager'/>
<menuitem action='toggle-midi-connection-manager'/>
<menuitem action='toggle-log-window'/>
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index c0cc88f24e..da85048fb4 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -165,7 +165,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void toggle_theme_manager ();
void toggle_bundle_manager ();
void toggle_big_clock_window ();
- void toggle_midi_tracer_window ();
+ void new_midi_tracer_window ();
void toggle_route_params_window ();
void toggle_editing_space();
@@ -327,7 +327,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void update_transport_clocks (nframes_t pos);
void record_state_changed ();
- MidiTracer* _midi_tracer_window;
+ std::list<MidiTracer*> _midi_tracer_windows;
/* Transport Control */
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index 3a321cc5e3..da518e1b13 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -107,9 +107,6 @@ ARDOUR_UI::setup_windows ()
setup_transport();
build_menu_bar ();
- _midi_tracer_window = new MidiTracer ();
- manage_window (*_midi_tracer_window);
-
setup_tooltips ();
return 0;
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index 6ae05ef0ee..096f8ac730 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -216,18 +216,27 @@ ARDOUR_UI::toggle_big_clock_window ()
}
void
-ARDOUR_UI::toggle_midi_tracer_window ()
+ARDOUR_UI::new_midi_tracer_window ()
{
- RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("ToggleMIDITracer"));
+ RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("NewMIDITracer"));
if (!act) {
return;
}
- RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic (act);
- if (tact->get_active ()) {
- _midi_tracer_window->show_all ();
+ std::list<MidiTracer*>::iterator i = _midi_tracer_windows.begin ();
+ while (i != _midi_tracer_windows.end() && (*i)->get_visible() == true) {
+ ++i;
+ }
+
+ if (i == _midi_tracer_windows.end()) {
+ /* all our MIDITracer windows are visible; make a new one */
+ MidiTracer* t = new MidiTracer ();
+ manage_window (*t);
+ t->show_all ();
+ _midi_tracer_windows.push_back (t);
} else {
- _midi_tracer_window->hide ();
+ /* re-use the hidden one */
+ (*i)->show_all ();
}
}
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 80950e2d32..e60f681823 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -225,7 +225,7 @@ ARDOUR_UI::install_actions ()
ActionManager::session_sensitive_actions.push_back (act);
act = ActionManager::register_toggle_action (common_actions, X_("ToggleBigClock"), _("Big Clock"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window));
ActionManager::session_sensitive_actions.push_back (act);
- act = ActionManager::register_toggle_action (common_actions, X_("ToggleMIDITracer"), _("MIDI Tracer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_midi_tracer_window));
+ 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);
ActionManager::register_action (common_actions, X_("About"), _("About"), sigc::mem_fun(*this, &ARDOUR_UI::show_about));
ActionManager::register_action (common_actions, X_("Chat"), _("Chat"), sigc::mem_fun(*this, &ARDOUR_UI::launch_chat));