traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso resources/keymap.xml src/traverso/song...


From: Remon Sijrier
Subject: [Traverso-commit] traverso resources/keymap.xml src/traverso/song...
Date: Mon, 26 Nov 2007 19:16:30 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/11/26 19:16:30

Modified files:
        resources      : keymap.xml 
        src/traverso/songcanvas: CurveView.cpp CurveView.h 

Log message:
        * Added [ D V ] for vertical node moving
        * also show gain decrease when using scroll wheel, up/down arrow keys 
during node drag.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/resources/keymap.xml?cvsroot=traverso&r1=1.89&r2=1.90
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/CurveView.cpp?cvsroot=traverso&r1=1.70&r2=1.71
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/CurveView.h?cvsroot=traverso&r1=1.17&r2=1.18

Patches:
Index: resources/keymap.xml
===================================================================
RCS file: /sources/traverso/traverso/resources/keymap.xml,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -b -r1.89 -r1.90
--- resources/keymap.xml        26 Nov 2007 18:39:58 -0000      1.89
+++ resources/keymap.xml        26 Nov 2007 19:16:29 -0000      1.90
@@ -439,6 +439,12 @@
                                <Object objectname="Song" modes="All" 
sortorder="4" pluginname="TraversoCommands" commandname="Gain" />
                        </Objects>
                </keyfact>
+               <keyfact type="HKEY2" key1="D" key2="V" >
+                       <Objects>
+               <Object objectname="CurveView" mousehint="UD" 
slotsignature="drag_node_vertical_only" modes="Effects" sortorder="4" />
+                       </Objects>
+               </keyfact>
+
                
                
                <keyfact type="D_FKEY" key1="T" >

Index: src/traverso/songcanvas/CurveView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/CurveView.cpp,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -b -r1.70 -r1.71
--- src/traverso/songcanvas/CurveView.cpp       26 Nov 2007 18:58:07 -0000      
1.70
+++ src/traverso/songcanvas/CurveView.cpp       26 Nov 2007 19:16:29 -0000      
1.71
@@ -40,7 +40,12 @@
 
 #define NODE_SOFT_SELECTION_DISTANCE 40
        
-DragNode::DragNode(CurveNode* node, CurveView* curveview, qint64 scalefactor, 
TimeRef rangeMin, TimeRef rangeMax, const QString& des)
+DragNode::DragNode(CurveNode* node,
+       CurveView* curveview,
+       qint64 scalefactor,
+       TimeRef rangeMin,
+       TimeRef rangeMax,
+       const QString& des)
        : Command(curveview->get_context(), des)
        , d(new Private)
 {
@@ -49,6 +54,12 @@
        d->rangeMax = rangeMax;
        d->curveView = curveview;
        d->scalefactor = scalefactor;
+       d->verticalOnly = false;
+}
+
+void DragNode::set_vertical_only()
+{
+       d->verticalOnly = true;
 }
 
 int DragNode::prepare_actions()
@@ -93,13 +104,13 @@
 void DragNode::move_up(bool )
 {
        m_newValue = m_newValue + ( 1 / d->curveView->boundingRect().height());
-       do_action();
+       calculate_and_set_node_values();
 }
 
 void DragNode::move_down(bool )
 {
        m_newValue = m_newValue - ( 1 / d->curveView->boundingRect().height());
-       do_action();
+       calculate_and_set_node_values();
 }
 
 void DragNode::set_cursor_shape(int useX, int useY)
@@ -117,7 +128,9 @@
        
        d->mousepos = mousepos;
        
+       if (!d->verticalOnly) {
        m_newWhen = m_newWhen + dx * d->scalefactor;
+       }
        m_newValue = m_newValue - ( dy / d->curveView->boundingRect().height());
        
        TimeRef startoffset = d->curveView->get_start_offset();
@@ -128,6 +141,11 @@
                m_newWhen = startoffset.universal_frame();
        }
        
+       return calculate_and_set_node_values();
+}
+
+int DragNode::calculate_and_set_node_values()
+{
        if (m_newValue < 0.0) {
                m_newValue = 0.0;
        }
@@ -154,6 +172,7 @@
 }
 
                
+               
 CurveView::CurveView(SongView* sv, ViewItem* parentViewItem, Curve* curve)
        : ViewItem(parentViewItem, curve)
        , m_curve(curve)
@@ -542,6 +561,21 @@
        return ie().did_not_implement();
 }
 
+
+Command * CurveView::drag_node_vertical_only()
+{
+       DragNode* drag = qobject_cast<DragNode*>(drag_node());
+       
+       if (!drag) {
+               return 0;
+       }
+       
+       drag->set_vertical_only();
+       
+       return drag;
+}
+
+
 void CurveView::node_moved( )
 {
        if (!m_blinkingNode) {
@@ -629,3 +663,4 @@
        return group;
 
 }
+

Index: src/traverso/songcanvas/CurveView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/CurveView.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- src/traverso/songcanvas/CurveView.h 26 Nov 2007 18:58:07 -0000      1.17
+++ src/traverso/songcanvas/CurveView.h 26 Nov 2007 19:16:29 -0000      1.18
@@ -39,8 +39,13 @@
                        Q_CLASSINFO("move_up", tr("Move Up"));
        Q_CLASSINFO("move_down", tr("Move Down"));
        
-       public:
-               DragNode(CurveNode* node, CurveView* curveview, qint64 
scalefactor, TimeRef rangeMin, TimeRef rangeMax, const QString& des);
+public:
+       DragNode(CurveNode* node,
+               CurveView* curveview,
+               qint64 scalefactor,
+               TimeRef rangeMin,
+               TimeRef rangeMax,
+               const QString& des);
        
                int prepare_actions();
                int do_action();
@@ -50,8 +55,9 @@
                int begin_hold();
                int jog();
                void set_cursor_shape(int useX, int useY);
+       void set_vertical_only();
 
-       private :
+private :
                class   Private {
                        public:
                                CurveView*      curveView;
@@ -59,6 +65,7 @@
                                TimeRef         rangeMin;
                                TimeRef         rangeMax;
                                QPoint          mousepos;
+                       bool            verticalOnly;
                };
        
                Private* d;
@@ -68,8 +75,10 @@
                double  m_newWhen;
                double  m_newValue;
        
+       int calculate_and_set_node_values();
 
-       public slots:
+
+public slots:
                void move_up(bool autorepeat);
                void move_down(bool autorepeat);
 };
@@ -82,6 +91,7 @@
        Q_CLASSINFO("remove_node", tr("Remove node"))
        Q_CLASSINFO("remove_all_nodes", tr("Remove all Nodes"))
        Q_CLASSINFO("drag_node", tr("Move node"))
+       Q_CLASSINFO("drag_node_vertical_only", tr("Move node (vertical only)"))
 
 public:
        CurveView(SongView* sv, ViewItem* parentViewItem, Curve* curve);
@@ -123,6 +133,7 @@
        Command* remove_node();
        Command* remove_all_nodes();
        Command* drag_node();
+       Command* drag_node_vertical_only();
        
 private slots:
        void add_curvenode_view(CurveNode* node);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]