diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-13 15:18:32 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-13 15:18:32 +0000 |
commit | 66e91bafd2b72100f0ad2cdcc4d39818bd766ca3 (patch) | |
tree | fdc95be6097f0c38dcb0f2cacdd0a0ec95d4efd0 /gtk2_ardour/panner_ui.cc | |
parent | 493339e9690dcf9e30cd83e104f59d501532765d (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.cc | 27 |
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; } } |