summaryrefslogtreecommitdiff
path: root/gtk2_ardour/panner_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-12-13 15:18:32 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-12-13 15:18:32 +0000
commit66e91bafd2b72100f0ad2cdcc4d39818bd766ca3 (patch)
treefdc95be6097f0c38dcb0f2cacdd0a0ec95d4efd0 /gtk2_ardour/panner_ui.cc
parent493339e9690dcf9e30cd83e104f59d501532765d (diff)
new 2d panner GUI, implemented originally in a branch of 2.0-ongoing at LAC2009; unfinished work, but the basis for 2d panning in 3.0
git-svn-id: svn://localhost/ardour2/branches/3.0@4319 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/panner_ui.cc')
-rw-r--r--gtk2_ardour/panner_ui.cc27
1 files changed, 26 insertions, 1 deletions
diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc
index 3368905ad3..ed1e84f29b 100644
--- a/gtk2_ardour/panner_ui.cc
+++ b/gtk2_ardour/panner_ui.cc
@@ -124,6 +124,7 @@ PannerUI::PannerUI (Session& s)
pack_start (pan_vbox, true, true);
panner = 0;
+ big_window = 0;
set_width(Narrow);
}
@@ -308,6 +309,10 @@ PannerUI::~PannerUI ()
delete panner;
}
+ if (big_window) {
+ delete big_window;
+ }
+
if (pan_menu) {
delete pan_menu;
}
@@ -437,10 +442,17 @@ PannerUI::setup_pan ()
panner = new Panner2d (_io->panner(), 61);
panner->set_name ("MixerPanZone");
panner->show ();
+
+
+ panner->signal_button_press_event().connect
+ (bind (mem_fun(*this, &PannerUI::pan_button_event), (uint32_t) 0), false);
}
update_pan_sensitive ();
panner->reset (_io->n_inputs().n_audio());
+ if (big_window) {
+ big_window->reset (_io->n_inputs().n_audio());
+ }
panner->set_size_request (-1, 61);
/* and finally, add it to the panner frame */
@@ -455,6 +467,16 @@ bool
PannerUI::pan_button_event (GdkEventButton* ev, uint32_t which)
{
switch (ev->button) {
+ case 1:
+ if (panner && ev->type == GDK_2BUTTON_PRESS) {
+ if (!big_window) {
+ big_window = new Panner2dWindow (panner->get_panner(), 400, _io->n_inputs().n_audio());
+ }
+ big_window->show ();
+ return true;
+ }
+ break;
+
case 3:
if (pan_menu == 0) {
pan_menu = manage (new Menu);
@@ -688,7 +710,7 @@ PannerUI::pan_printer (char *buf, uint32_t len, Adjustment* adj)
}
void
-PannerUI::update_pan_sensitive ()
+PannerUI::update_pan_sensitive ()
{
bool sensitive = !(_io->panner().automation_state() & Play);
@@ -705,6 +727,9 @@ PannerUI::update_pan_sensitive ()
if (panner) {
panner->set_sensitive (sensitive);
}
+ if (big_window) {
+ big_window->set_sensitive (sensitive);
+ }
break;
}
}