traverso-commit
[Top][All Lists]
Advanced

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

[Traverso-commit] traverso/src core/Song.cpp core/Song.h core/Tra...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src core/Song.cpp core/Song.h core/Tra...
Date: Thu, 17 May 2007 12:45:20 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       07/05/17 12:45:20

Modified files:
        src/core       : Song.cpp Song.h Track.cpp Track.h 
        src/traverso/songcanvas: SongView.cpp SongView.h SongWidget.cpp 
                                 TimeLineViewPort.cpp TimeLineViewPort.h 

Log message:
        * Store scrollbar values via Song::get/set_state()
        * Scrollbar cleanups, set scrollbar positions on songview creation from 
saved values
        (for some reason it doesn't scroll to the right position :( )
        * Use AddRemoveClip for recorded audioclips

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Song.cpp?cvsroot=traverso&r1=1.100&r2=1.101
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Song.h?cvsroot=traverso&r1=1.52&r2=1.53
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Track.cpp?cvsroot=traverso&r1=1.54&r2=1.55
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Track.h?cvsroot=traverso&r1=1.27&r2=1.28
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/SongView.cpp?cvsroot=traverso&r1=1.49&r2=1.50
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/SongView.h?cvsroot=traverso&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/SongWidget.cpp?cvsroot=traverso&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineViewPort.cpp?cvsroot=traverso&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineViewPort.h?cvsroot=traverso&r1=1.4&r2=1.5

Patches:
Index: core/Song.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Song.cpp,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -b -r1.100 -r1.101
--- core/Song.cpp       17 May 2007 07:18:48 -0000      1.100
+++ core/Song.cpp       17 May 2007 12:45:19 -0000      1.101
@@ -183,7 +183,9 @@
        title = e.attribute( "title", "" );
        artists = e.attribute( "artists", "" );
        set_gain(e.attribute( "mastergain", "1.0").toFloat() );
-       set_hzoom(e.attribute( "hzoom", "" ).toInt());
+       set_hzoom(e.attribute("hzoom", "" ).toInt());
+       m_sbx = e.attribute("sbx", "0").toInt();
+       m_sby = e.attribute("sby", "0").toInt();
        set_first_visible_frame(e.attribute( "firstVisibleFrame", "0" 
).toUInt());
        set_work_at(e.attribute( "workingFrame", "0").toUInt());
        set_transport_pos(e.attribute( "transportFrame", "0").toUInt());
@@ -222,6 +224,8 @@
        properties.setAttribute("workingFrame", (uint)workingFrame);
        properties.setAttribute("transportFrame", (uint)transportFrame);
        properties.setAttribute("hzoom", m_hzoom);
+       properties.setAttribute("sbx", m_sbx);
+       properties.setAttribute("sby", m_sby);
        properties.setAttribute("mastergain", m_gain);
        songNode.appendChild(properties);
 
@@ -653,9 +657,9 @@
                        int clipcount = 0;
                        foreach(Track* track, m_tracks) {
                                if (track->armed()) {
-                                       Command* cmd = track->init_recording();
-                                       if (cmd) {
-                                               group->add_command(cmd);
+                                       AudioClip* clip = 
track->init_recording();
+                                       if (clip) {
+                                               group->add_command(new 
AddRemoveClip(clip, AddRemoveClip::ADD));
                                                clipcount++;
                                        }
                                }

Index: core/Song.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Song.h,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -b -r1.52 -r1.53
--- core/Song.h 15 May 2007 17:08:08 -0000      1.52
+++ core/Song.h 17 May 2007 12:45:19 -0000      1.53
@@ -79,6 +79,7 @@
        int get_numtracks() const {return m_tracks.size();}
        int get_track_index(qint64 id) const;
        int get_mode() const {return m_mode;}
+       void get_scrollbar_xy(int& x, int& y) {x = m_sbx; y = m_sby;}
        
        nframes_t get_transport_frame() const;
        nframes_t get_working_frame() const {return workingFrame;}
@@ -107,6 +108,7 @@
        void set_transport_pos(nframes_t pos);
        void set_hzoom(int hzoom);
        void set_snapping(bool snap);
+       void set_scrollbar_xy(int x, int y) {m_sbx = x; m_sby = y;}
        int set_state( const QDomNode & node );
        void set_recording(bool recording);
        
@@ -169,6 +171,8 @@
        QString         title;
        int             m_mode;
        int             m_hzoom;
+       int             m_sbx;
+       int             m_sby;
        bool            m_rendering;
        bool            changed;
        bool            isSnapOn;

Index: core/Track.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Track.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -b -r1.54 -r1.55
--- core/Track.cpp      8 May 2007 10:51:55 -0000       1.54
+++ core/Track.cpp      17 May 2007 12:45:19 -0000      1.55
@@ -299,7 +299,7 @@
        return isArmed;
 }
 
-Command* Track::init_recording()
+AudioClip* Track::init_recording()
 {
        PENTER2;
        if ( ! isArmed) {
@@ -318,7 +318,7 @@
                PERROR("Could not create AudioClip to record to!");
                resources_manager()->remove_clip_from_database(clip->get_id());
        } else {
-               return add_clip( clip );
+               return clip;
        }
        
        return 0;

Index: core/Track.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Track.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- core/Track.h        5 Apr 2007 17:53:48 -0000       1.27
+++ core/Track.h        17 May 2007 12:45:19 -0000      1.28
@@ -60,7 +60,7 @@
        Command* remove_clip(AudioClip* clip, bool historable=true, bool 
ismove=false);
        Command* remove_plugin(Plugin* plugin);
        
-       Command* init_recording();
+       AudioClip* init_recording();
        
        int arm();
        int disarm();

Index: traverso/songcanvas/SongView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/SongView.cpp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -b -r1.49 -r1.50
--- traverso/songcanvas/SongView.cpp    17 May 2007 06:55:43 -0000      1.49
+++ traverso/songcanvas/SongView.cpp    17 May 2007 12:45:20 -0000      1.50
@@ -120,26 +120,18 @@
        connect(m_song, SIGNAL(trackRemoved(Track*)), this, 
SLOT(remove_trackview(Track*)));
        connect(m_song, SIGNAL(lastFramePositionChanged()), this, 
SLOT(update_scrollbars()));
        connect(m_song, SIGNAL(modeChanged()), this, SLOT(song_mode_changed()));
-       connect(m_hScrollBar, SIGNAL(valueChanged(int)), 
this,SLOT(set_snap_range(int)));
-       connect(m_hScrollBar, SIGNAL(sliderMoved(int)), 
this,SLOT(stop_follow_play_head()));
        connect(&m_shuttletimer, SIGNAL(timeout() ), this, SLOT 
(update_shuttle()) );
-       
+       connect(m_hScrollBar, SIGNAL(sliderMoved(int)), 
this,SLOT(stop_follow_play_head()));
        connect(m_hScrollBar, SIGNAL(valueChanged(int)), this, 
SLOT(hscrollbar_value_changed(int)));
-       connect(m_vScrollBar, SIGNAL(valueChanged(int)),
-               m_clipsViewPort->verticalScrollBar(), SLOT(setValue(int)));
-
-       connect(m_clipsViewPort->horizontalScrollBar(), 
SIGNAL(valueChanged(int)),
-                 m_hScrollBar, SLOT(setValue(int)));
-
-       connect(m_clipsViewPort->verticalScrollBar(), SIGNAL(valueChanged(int)),
-                 m_vScrollBar, SLOT(setValue(int))); 
-       
-       m_vScrollBar->setValue(0.0);
+       connect(m_vScrollBar, SIGNAL(valueChanged(int)), 
m_clipsViewPort->verticalScrollBar(), SLOT(setValue(int)));
 
        load_theme_data();
        
-       // FIXME Center too position on song close!!
-       center();
+       int x, y;
+       m_song->get_scrollbar_xy(x, y);
+       printf("pagestep %d\n", m_hScrollBar->pageStep());
+       set_hscrollbar_value(x + 
m_clipsViewPort->horizontalScrollBar()->pageStep());
+       set_vscrollbar_value(y);
 }
 
 SongView::~SongView()
@@ -211,14 +203,17 @@
 
 void SongView::update_scrollbars()
 {
+       if (!m_sceneHeight) {
+               return;
+       }
+       
        int width = (m_song->get_last_frame() / scalefactor) - 
(m_clipsViewPort->width() / 4);
        
        m_hScrollBar->setRange(0, width);
        m_hScrollBar->setSingleStep(m_clipsViewPort->width() / 10);
        m_hScrollBar->setPageStep(m_clipsViewPort->width());
        
-       m_vScrollBar->setRange(0, (m_sceneHeight < m_clipsViewPort->height()) ?
-               0 : m_sceneHeight - m_clipsViewPort->height());
+       m_vScrollBar->setRange(0, m_sceneHeight - m_clipsViewPort->height() / 
2);
        m_vScrollBar->setSingleStep(m_clipsViewPort->height() / 10);
        m_vScrollBar->setPageStep(m_clipsViewPort->height());
        
@@ -234,8 +229,8 @@
 {
        if (!ie().is_holding()) {
                m_clipsViewPort->horizontalScrollBar()->setValue(value);
-               set_snap_range(m_hScrollBar->value());
        }
+       set_snap_range(m_hScrollBar->value());
 }
 
 Command* SongView::zoom()
@@ -328,7 +323,7 @@
                centerX = m_song->get_working_frame();
        }
 
-       scrollbar->setValue(centerX / scalefactor - m_clipsViewPort->width() / 
2);
+       set_hscrollbar_value(centerX / scalefactor - m_clipsViewPort->width() / 
2);
        return (Command*) 0;
 }
 
@@ -448,11 +443,11 @@
 
 void SongView::update_shuttle()
 {
-       QScrollBar* hscrollbar = m_clipsViewPort->horizontalScrollBar();
-       hscrollbar->setValue(hscrollbar->value() + m_shuttleXfactor);
+       int x = m_clipsViewPort->horizontalScrollBar()->value() + 
m_shuttleXfactor;
+       set_hscrollbar_value(x);
        
-       QScrollBar* vscrollbar = m_clipsViewPort->verticalScrollBar();
-       vscrollbar->setValue(vscrollbar->value() + m_shuttleYfactor);
+       int y = m_clipsViewPort->verticalScrollBar()->value() + 
m_shuttleYfactor;
+       set_vscrollbar_value(y);
        
        if (m_shuttleXfactor != 0 || m_shuttleYfactor != 0) {
                ie().jog();
@@ -522,15 +517,13 @@
 
 Command* SongView::scroll_up( )
 {
-       QScrollBar* scrollbar = m_clipsViewPort->verticalScrollBar();
-       scrollbar->setValue(scrollbar->value() - 50);
+       set_vscrollbar_value(m_clipsViewPort->verticalScrollBar()->value() - 
50);
        return 0;
 }
 
 Command* SongView::scroll_down( )
 {
-       QScrollBar* scrollbar = m_clipsViewPort->verticalScrollBar();
-       scrollbar->setValue(scrollbar->value() + 50);
+       set_vscrollbar_value(m_clipsViewPort->verticalScrollBar()->value() + 
50);
        return 0;
 }
 
@@ -538,8 +531,7 @@
 {
        PENTER3;
        stop_follow_play_head();
-       QScrollBar* scrollbar = m_clipsViewPort->horizontalScrollBar();
-       scrollbar->setValue(scrollbar->value() + 50);
+       set_hscrollbar_value(m_clipsViewPort->horizontalScrollBar()->value() + 
50);
        return (Command*) 0;
 }
 
@@ -548,8 +540,7 @@
 {
        PENTER3;
        stop_follow_play_head();
-       QScrollBar* scrollbar = m_clipsViewPort->horizontalScrollBar();
-       scrollbar->setValue(scrollbar->value() - 50); 
+       set_hscrollbar_value(m_clipsViewPort->horizontalScrollBar()->value() - 
50);
        return (Command*) 0;
 }
 
@@ -593,5 +584,22 @@
        return (Command*) 0;
 }
 
+void SongView::set_hscrollbar_value(int value)
+{
+       m_clipsViewPort->horizontalScrollBar()->setValue(value);
+       m_hScrollBar->setValue(value);
+       m_song->set_scrollbar_xy(m_hScrollBar->value(), m_vScrollBar->value());
+}
+
+void SongView::set_vscrollbar_value(int value)
+{
+       if (value > m_vScrollBar->maximum()) {
+               value = m_vScrollBar->maximum();
+       }
+       m_clipsViewPort->verticalScrollBar()->setValue(value);
+       m_vScrollBar->setValue(value);
+       m_song->set_scrollbar_xy(m_hScrollBar->value(), m_vScrollBar->value());
+}
+
 //eof
 

Index: traverso/songcanvas/SongView.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/SongView.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- traverso/songcanvas/SongView.h      17 May 2007 06:55:43 -0000      1.24
+++ traverso/songcanvas/SongView.h      17 May 2007 12:45:20 -0000      1.25
@@ -109,6 +109,8 @@
        int     m_trackTopIndent;
        
        void layout_tracks();
+       void set_hscrollbar_value(int value);
+       void set_vscrollbar_value(int value);
 
 
 public slots:

Index: traverso/songcanvas/SongWidget.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/SongWidget.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- traverso/songcanvas/SongWidget.cpp  7 May 2007 18:37:14 -0000       1.17
+++ traverso/songcanvas/SongWidget.cpp  17 May 2007 12:45:20 -0000      1.18
@@ -223,7 +223,7 @@
 
        m_trackPanel = new TrackPanelViewPort(m_scene, this);
        m_clipsViewPort = new ClipsViewPort(m_scene, this);
-       m_timeLine = new TimeLineViewPort(m_scene, this, m_clipsViewPort);
+       m_timeLine = new TimeLineViewPort(m_scene, this);
        m_songPanelVP = new SongPanelViewPort(m_scene, this);
        
        m_mainLayout = new QGridLayout(this);

Index: traverso/songcanvas/TimeLineViewPort.cpp
===================================================================
RCS file: 
/sources/traverso/traverso/src/traverso/songcanvas/TimeLineViewPort.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- traverso/songcanvas/TimeLineViewPort.cpp    7 May 2007 10:31:22 -0000       
1.6
+++ traverso/songcanvas/TimeLineViewPort.cpp    17 May 2007 12:45:20 -0000      
1.7
@@ -20,7 +20,7 @@
 */
 
 #include "TimeLineViewPort.h"
-#include "ClipsViewPort.h"
+#include "SongView.h"
 #include "SongWidget.h"
 #include "TimeLineView.h"
 #include <QScrollBar>
@@ -29,11 +29,9 @@
                
 #include <Debugger.h>
 
-TimeLineViewPort::TimeLineViewPort(QGraphicsScene* scene, SongWidget* sw, 
ClipsViewPort* view)
+TimeLineViewPort::TimeLineViewPort(QGraphicsScene* scene, SongWidget* sw)
        : ViewPort(scene, sw)
 {
-       clipView = view;
-       
        setMaximumHeight(TIMELINE_HEIGHT);
        setMinimumHeight(TIMELINE_HEIGHT);
        setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@@ -43,10 +41,11 @@
 
 void TimeLineViewPort::wheelEvent ( QWheelEvent * e )
 {
-       if (e->delta() > 0)
-               
clipView->horizontalScrollBar()->setValue(clipView->horizontalScrollBar()->value()
 - clipView->horizontalScrollBar()->pageStep() / 6);
-       else
-               
clipView->horizontalScrollBar()->setValue(clipView->horizontalScrollBar()->value()
 + clipView->horizontalScrollBar()->pageStep() / 6);
+       if (e->delta() > 0) {
+               m_sv->scroll_left();
+       } else {
+               m_sv->scroll_right();
+       }
 }
 
 void TimeLineViewPort::set_songview( SongView * view )
@@ -54,6 +53,7 @@
        m_timeLineView = new TimeLineView(view);
        scene()->addItem(m_timeLineView);
        m_timeLineView->setPos(0, -TIMELINE_HEIGHT);
+       m_sv = view;
 }
 
 void TimeLineViewPort::get_pointed_context_items(QList<ContextItem* > &list)

Index: traverso/songcanvas/TimeLineViewPort.h
===================================================================
RCS file: 
/sources/traverso/traverso/src/traverso/songcanvas/TimeLineViewPort.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- traverso/songcanvas/TimeLineViewPort.h      7 May 2007 10:31:22 -0000       
1.4
+++ traverso/songcanvas/TimeLineViewPort.h      17 May 2007 12:45:20 -0000      
1.5
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
  
-    $Id: TimeLineViewPort.h,v 1.4 2007/05/07 10:31:22 r_sijrier Exp $
+    $Id: TimeLineViewPort.h,v 1.5 2007/05/17 12:45:20 r_sijrier Exp $
 */
 
 #ifndef TIME_LINE_VIEW_PORT_H
@@ -28,14 +28,13 @@
 class SongWidget;
 class SongView;
 class TimeLineView;
-class ClipsViewPort;
 
 #define TIMELINE_HEIGHT 32
                
 class TimeLineViewPort : public ViewPort
 {
 public:
-       TimeLineViewPort(QGraphicsScene* scene, SongWidget* sw, ClipsViewPort* 
clipView);
+       TimeLineViewPort(QGraphicsScene* scene, SongWidget* sw);
        ~TimeLineViewPort() {};
        
        void set_songview(SongView* view);
@@ -48,7 +47,7 @@
        void wheelEvent ( QWheelEvent * e );
 
 private:
-       ClipsViewPort*  clipView;
+       SongView*       m_sv;
        TimeLineView*   m_timeLineView;
 };
 




reply via email to

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