add gesture control for position+width controls of a 2in/2out panner - not used,...
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 7 Jan 2011 22:18:53 +0000 (22:18 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 7 Jan 2011 22:18:53 +0000 (22:18 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@8479 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/panner_ui.cc
gtk2_ardour/stereo_panner.cc
gtk2_ardour/stereo_panner.h

index 61247d26ccad13eb8c3fa9c2844d67f028c35eba..52ae16a64884bc40fd93d08ffe3fdc4ddd42064a 100644 (file)
@@ -375,8 +375,6 @@ PannerUI::setup_pan ()
        uint32_t const nouts = _panner->nouts();
        uint32_t const npans = _panner->npanners();
 
-        cerr << "Pan setup, outs == " << nouts << " pans = " << npans << endl;
-
        if (int32_t (nouts) == _current_nouts && int32_t (npans) == _current_npans) {
                return;
        }
@@ -421,6 +419,20 @@ PannerUI::setup_pan ()
                         _stereo_panner->set_size_request (-1, pan_bar_height);
                         panning_viewport.add (*_stereo_panner);
 
+                        boost::shared_ptr<AutomationControl> ac;
+
+                        ac = _panner->direction_control();
+                        _stereo_panner->StartPositionGesture.connect (sigc::bind (sigc::mem_fun (*this, &PannerUI::start_touch), 
+                                                              boost::weak_ptr<AutomationControl> (ac)));
+                        _stereo_panner->StopPositionGesture.connect (sigc::bind (sigc::mem_fun (*this, &PannerUI::stop_touch), 
+                                                             boost::weak_ptr<AutomationControl>(ac)));
+
+                        ac = _panner->width_control();
+                        _stereo_panner->StartWidthGesture.connect (sigc::bind (sigc::mem_fun (*this, &PannerUI::start_touch), 
+                                                              boost::weak_ptr<AutomationControl> (ac)));
+                        _stereo_panner->StopWidthGesture.connect (sigc::bind (sigc::mem_fun (*this, &PannerUI::stop_touch), 
+                                                             boost::weak_ptr<AutomationControl>(ac)));
+
                 } else {
                         
                         /* N-in/2out - just use a set of single-channel panners */
index 70190cc859ebef441921ec8a25483cde5dd92d1b..4e715c49eee9e9eb287739e54045f18000732630 100644 (file)
@@ -363,6 +363,7 @@ StereoPanner::on_button_press_event (GdkEventButton* ev)
                 if (ev->y < 20) {
                         /* top section of widget is for position drags */
                         dragging_position = true;
+                        StartPositionGesture ();
                 } else {
                         /* lower section is for dragging width */
                         
@@ -388,6 +389,7 @@ StereoPanner::on_button_press_event (GdkEventButton* ev)
                                         dragging_right = true;
                                 }
                         }
+                        StartWidthGesture ();
                 }
 
                 dragging = true;
@@ -403,6 +405,8 @@ StereoPanner::on_button_release_event (GdkEventButton* ev)
                 return false;
         }
 
+        bool dp = dragging_position;
+
         dragging = false;
         dragging_position = false;
         dragging_left = false;
@@ -418,6 +422,12 @@ StereoPanner::on_button_release_event (GdkEventButton* ev)
                 /* reset to default */
                 position_control->set_value (0.5);
                 width_control->set_value (1.0);
+        } else {
+                if (dp) {
+                        StopPositionGesture ();
+                } else {
+                        StopWidthGesture ();
+                }
         }
 
         return true;
index 52abb3068752fa6df14fcd9e567883f1045c012e..86a53eccf70c54aa08d0b7e4a46324d4be834f91 100644 (file)
@@ -37,6 +37,11 @@ class StereoPanner : public Gtk::DrawingArea
        StereoPanner (boost::shared_ptr<PBD::Controllable> pos, boost::shared_ptr<PBD::Controllable> width);
        ~StereoPanner ();
 
+       sigc::signal<void> StartPositionGesture;
+       sigc::signal<void> StopPositionGesture;
+       sigc::signal<void> StartWidthGesture;
+       sigc::signal<void> StopWidthGesture;
+
   protected:
        bool on_expose_event (GdkEventExpose*);
        bool on_button_press_event (GdkEventButton*);