summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-12-22 20:21:27 +0100
committerRobin Gareus <robin@gareus.org>2017-12-22 22:15:50 +0100
commit22c497b62d30157a367e5ae90e48d13f036b9bae (patch)
treeb5dad08c89fa471c9a3b870b946615a727de6e0f /gtk2_ardour
parentaab787f686e6287a06ba94ed8c87b524c4690f0f (diff)
Add a separate, dedicated transport-control window
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour.menus.in1
-rw-r--r--gtk2_ardour/ardour_ui.cc4
-rw-r--r--gtk2_ardour/ardour_ui.h4
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc19
-rw-r--r--gtk2_ardour/big_transport_window.cc41
-rw-r--r--gtk2_ardour/big_transport_window.h44
-rw-r--r--gtk2_ardour/wscript1
7 files changed, 114 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index 41354563c6..dd6ba9c8e8 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -569,6 +569,7 @@
<menuitem action='toggle-bundle-manager'/>
#endif
<menuitem action='toggle-big-clock'/>
+ <menuitem action='toggle-big-transport'/>
#if 0
<menuitem action='toggle-speaker-config'/>
#endif
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 2aba7ffb64..698b1ebef6 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -138,6 +138,7 @@ typedef uint64_t microseconds_t;
#include "audio_clock.h"
#include "audio_region_view.h"
#include "big_clock_window.h"
+#include "big_transport_window.h"
#include "bundle_manager.h"
#include "duplicate_routes_dialog.h"
#include "debug.h"
@@ -316,6 +317,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
, add_video_dialog (X_("add-video"), _("Add Video"), boost::bind (&ARDOUR_UI::create_add_video_dialog, this))
, bundle_manager (X_("bundle-manager"), _("Bundle Manager"), boost::bind (&ARDOUR_UI::create_bundle_manager, this))
, big_clock_window (X_("big-clock"), _("Big Clock"), boost::bind (&ARDOUR_UI::create_big_clock_window, this))
+ , big_transport_window (X_("big-transport"), _("Transport Controls"), boost::bind (&ARDOUR_UI::create_big_transport_window, this))
, audio_port_matrix (X_("audio-connection-manager"), _("Audio Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::AUDIO))
, midi_port_matrix (X_("midi-connection-manager"), _("MIDI Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::MIDI))
, key_editor (X_("key-editor"), _("Keyboard Shortcuts"), boost::bind (&ARDOUR_UI::create_key_editor, this))
@@ -464,6 +466,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
bundle_manager.set_state (*ui_xml, 0);
location_ui.set_state (*ui_xml, 0);
big_clock_window.set_state (*ui_xml, 0);
+ big_transport_window.set_state (*ui_xml, 0);
audio_port_matrix.set_state (*ui_xml, 0);
midi_port_matrix.set_state (*ui_xml, 0);
export_video_dialog.set_state (*ui_xml, 0);
@@ -486,6 +489,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
WM::Manager::instance().register_window (&bundle_manager);
WM::Manager::instance().register_window (&location_ui);
WM::Manager::instance().register_window (&big_clock_window);
+ WM::Manager::instance().register_window (&big_transport_window);
WM::Manager::instance().register_window (&audio_port_matrix);
WM::Manager::instance().register_window (&midi_port_matrix);
WM::Manager::instance().register_window (&idleometer);
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index f714e03134..a6bac4ca9e 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -87,6 +87,7 @@
#include "about.h"
#include "add_video_dialog.h"
#include "big_clock_window.h"
+#include "big_transport_window.h"
#include "bundle_manager.h"
#include "engine_dialog.h"
#include "export_video_dialog.h"
@@ -105,6 +106,7 @@ class About;
class AddRouteDialog;
class AddVideoDialog;
class BigClockWindow;
+class BigTransportWindow;
class BundleManager;
class EngineControl;
class ExportVideoDialog;
@@ -679,6 +681,7 @@ private:
WM::ProxyWithConstructor<AddVideoDialog> add_video_dialog;
WM::ProxyWithConstructor<BundleManager> bundle_manager;
WM::ProxyWithConstructor<BigClockWindow> big_clock_window;
+ WM::ProxyWithConstructor<BigTransportWindow> big_transport_window;
WM::ProxyWithConstructor<GlobalPortMatrixWindow> audio_port_matrix;
WM::ProxyWithConstructor<GlobalPortMatrixWindow> midi_port_matrix;
WM::ProxyWithConstructor<KeyEditor> key_editor;
@@ -689,6 +692,7 @@ private:
BundleManager* create_bundle_manager ();
AddVideoDialog* create_add_video_dialog ();
BigClockWindow* create_big_clock_window();
+ BigTransportWindow* create_big_transport_window();
GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType);
KeyEditor* create_key_editor ();
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index 7592c34dcc..8b6eaa044b 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -45,6 +45,7 @@
#include "add_video_dialog.h"
#include "ardour_ui.h"
#include "big_clock_window.h"
+#include "big_transport_window.h"
#include "bundle_manager.h"
#include "global_port_matrix.h"
#include "gui_object.h"
@@ -88,6 +89,10 @@ ARDOUR_UI::set_session (Session *s)
transport_ctrl.set_session (s);
+ if (big_transport_window) {
+ big_transport_window->set_session (s);
+ }
+
if (!_session) {
WM::Manager::instance().set_session (s);
/* Session option editor cannot exist across change-of-session */
@@ -868,6 +873,14 @@ ARDOUR_UI::create_big_clock_window ()
return new BigClockWindow (*big_clock);
}
+BigTransportWindow*
+ARDOUR_UI::create_big_transport_window ()
+{
+ BigTransportWindow* btw = new BigTransportWindow ();
+ btw->set_session (_session);
+ return btw;
+}
+
void
ARDOUR_UI::handle_locations_change (Location *)
{
@@ -890,6 +903,9 @@ ARDOUR_UI::tabbed_window_state_event_handler (GdkEventWindowState* ev, void* obj
if (big_clock_window) {
big_clock_window->set_transient_for (*editor->own_window());
}
+ if (big_transport_window) {
+ big_transport_window->set_transient_for (*editor->own_window());
+ }
}
} else if (object == mixer) {
@@ -899,6 +915,9 @@ ARDOUR_UI::tabbed_window_state_event_handler (GdkEventWindowState* ev, void* obj
if (big_clock_window) {
big_clock_window->set_transient_for (*mixer->own_window());
}
+ if (big_transport_window) {
+ big_transport_window->set_transient_for (*mixer->own_window());
+ }
}
}
diff --git a/gtk2_ardour/big_transport_window.cc b/gtk2_ardour/big_transport_window.cc
new file mode 100644
index 0000000000..ce56ed90c9
--- /dev/null
+++ b/gtk2_ardour/big_transport_window.cc
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2017 Robin Gareus <robin@gareus.org>
+ * Copyright (C) 2013 Paul Davis
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <gtkmm/box.h>
+
+#include "ardour_ui.h"
+#include "big_transport_window.h"
+
+#include "pbd/i18n.h"
+
+using namespace Glib;
+using namespace Gtk;
+
+BigTransportWindow::BigTransportWindow ()
+ : ArdourWindow (_("Transport Controls"))
+{
+ transport_ctrl.setup (ARDOUR_UI::instance ());
+ transport_ctrl.map_actions ();
+
+ set_keep_above (true);
+ VBox* vbox = manage (new VBox);
+ vbox->pack_start (transport_ctrl, true, true);
+ add (*vbox);
+ vbox->show_all();
+}
diff --git a/gtk2_ardour/big_transport_window.h b/gtk2_ardour/big_transport_window.h
new file mode 100644
index 0000000000..ccb125f05e
--- /dev/null
+++ b/gtk2_ardour/big_transport_window.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2017 Robin Gareus <robin@gareus.org>
+ * Copyright (C) 2013 Paul Davis
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _big_transport_window_h_
+#define _big_transport_window_h_
+
+#include "ardour_window.h"
+#include "transport_control_ui.h"
+
+namespace ARDOUR {
+ class Session;
+}
+
+class BigTransportWindow : public ArdourWindow
+{
+public:
+ BigTransportWindow ();
+
+ void set_session (ARDOUR::Session *s) {
+ transport_ctrl.set_session (s);
+ }
+
+private:
+ TransportControlUI transport_ctrl;
+};
+
+#endif
+
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript
index 2555de84c4..171e17498f 100644
--- a/gtk2_ardour/wscript
+++ b/gtk2_ardour/wscript
@@ -53,6 +53,7 @@ gtk2_ardour_sources = [
'automation_time_axis.cc',
'axis_view.cc',
'big_clock_window.cc',
+ 'big_transport_window.cc',
'bundle_manager.cc',
'clock_group.cc',
'color_theme_manager.cc',