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/commands/CMak...


From: Remon Sijrier
Subject: [Traverso-commit] traverso resources/keymap.xml src/commands/CMak...
Date: Wed, 13 Feb 2008 23:02:17 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       08/02/13 23:02:17

Modified files:
        resources      : keymap.xml 
        src/commands   : CMakeLists.txt MoveClip.cpp MoveClip.h 
        src/commands/plugins/TraversoCommands: TraversoCommands.cpp 
        src/core       : AudioClipGroup.cpp AudioClipGroup.h 

Log message:
        * MoveClip now uses AudioClipGroup to 
move/copy-move/fold-sheet/fold-track.
        Currently not working: to_prev/next_snap() and moving to other tracks. 
Suggestions anyone?

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/resources/keymap.xml?cvsroot=traverso&r1=1.103&r2=1.104
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/CMakeLists.txt?cvsroot=traverso&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/MoveClip.cpp?cvsroot=traverso&r1=1.64&r2=1.65
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/MoveClip.h?cvsroot=traverso&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/plugins/TraversoCommands/TraversoCommands.cpp?cvsroot=traverso&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/AudioClipGroup.cpp?cvsroot=traverso&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/AudioClipGroup.h?cvsroot=traverso&r1=1.2&r2=1.3

Patches:
Index: resources/keymap.xml
===================================================================
RCS file: /sources/traverso/traverso/resources/keymap.xml,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -b -r1.103 -r1.104
--- resources/keymap.xml        13 Feb 2008 10:41:00 -0000      1.103
+++ resources/keymap.xml        13 Feb 2008 23:02:16 -0000      1.104
@@ -484,8 +484,8 @@
                </keyfact>
                <keyfact type="HKEY2" key1="D" key2="F" >
                        <Objects>
-                               <Object objectname="SheetView" mousehint="RL" 
modes="All" sortorder="20" pluginname="TraversoCommands" 
commandname="MultiMove" arguments="true" />
-                               <Object objectname="SheetView" mousehint="RL" 
modes="All" sortorder="21" pluginname="TraversoCommands" modifierkeys="CTRL" 
commandname="MultiMoveSingle" arguments="false" />
+                               <Object objectname="TrackView" mousehint="LRUD" 
modes="All" sortorder="20" pluginname="TraversoCommands" commandname="MoveClip" 
arguments="fold_track" />
+                               <Object objectname="SheetView" mousehint="LRUD" 
modes="All" sortorder="21" pluginname="TraversoCommands" modifierkeys="CTRL" 
commandname="MoveClip" arguments="fold_sheet" />
                        </Objects>
                </keyfact>
                <keyfact type="HKEY2" key1="Z" key2="V" >

Index: src/commands/CMakeLists.txt
===================================================================
RCS file: /sources/traverso/traverso/src/commands/CMakeLists.txt,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- src/commands/CMakeLists.txt 12 Feb 2008 10:52:39 -0000      1.8
+++ src/commands/CMakeLists.txt 13 Feb 2008 23:02:17 -0000      1.9
@@ -54,6 +54,10 @@
 
 ADD_LIBRARY(${TRAVERSO_COMMANDS_LIBRARY} STATIC ${TRAVERSO_COMMANDS_SOURCES} 
${TRAVERSO_COMMANDS_UI_SOURCES} ${TRAVERSO_COMMANDS_MOC_SOURCES})
 
+TARGET_LINK_LIBRARIES(traversocommands
+       traversocore
+)
+
 IF(USE_PCH)
     ADD_DEPENDENCIES(traversocommands precompiled_headers)
 ENDIF(USE_PCH)

Index: src/commands/MoveClip.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/commands/MoveClip.cpp,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -b -r1.64 -r1.65
--- src/commands/MoveClip.cpp   13 Feb 2008 12:45:39 -0000      1.64
+++ src/commands/MoveClip.cpp   13 Feb 2008 23:02:17 -0000      1.65
@@ -24,8 +24,6 @@
 #include "AudioClip.h"
 #include "ContextPointer.h"
 #include "InputEngine.h"
-#include "ProjectManager.h"
-#include "ResourcesManager.h"
 #include "SnapList.h"
 #include "Sheet.h"
 #include "Track.h"
@@ -53,14 +51,14 @@
 /**
  *     Creates  a Move Clip or Copy Clip Command object.
  */
-MoveClip::MoveClip(AudioClipView* cv, QVariantList args)
-       : Command(cv->get_clip(), "")
+MoveClip::MoveClip(ViewItem* view, QVariantList args)
+       : Command(view->get_context(), "")
        , d(new Data)
 {
-       m_actionType = "move"; // default action!
+       QString action = "move"; // default action!
        
        if (args.size() > 0) {
-               m_actionType = args.at(0).toString();
+               action = args.at(0).toString();
        }
        if (args.size() > 1) {
                d->verticalOnly = args.at(1).toBool();
@@ -68,29 +66,69 @@
                d->verticalOnly = false;
        }
        
-       m_clip = cv->get_clip();
-       d->view = cv;
-       d->sv = d->view->get_sheetview();
-       d->zoom = 0;
-       m_sheet = d->sv->get_sheet();
-       m_targetTrack = 0;
-       
        QString des;
-       if (m_actionType == "copy") {
+       if (action == "copy") {
                des = tr("Copy Clip");
-       } else if (m_actionType == "move") {
+               m_actionType = COPY;
+       } else if (action == "move") {
                des = tr("Move Clip");
-       } else if (m_actionType == "move_to_start") {
+               m_actionType = MOVE;
+       } else if (action == "move_to_start") {
                des = tr("Move Clip To Start");
-       } else if (m_actionType == "move_to_end") {
+               m_actionType = MOVE_TO_START;
+       } else if (action == "move_to_end") {
                des = tr("Move Clip To End");
+               m_actionType = MOVE_TO_END;
+       } else if (action == "fold_sheet") {
+               des = tr("Fold Sheet");
+               m_actionType = FOLD_SHEET;
+       } else if (action == "fold_track") {
+               des = tr("Fold Track");
+               m_actionType = FOLD_TRACK;
+       } else {
+               PERROR("MoveClip: Unknown action type: %s", QS_C(action));
        }
        
        setText(des);
        
-       if (m_actionType == "move_to_start" || m_actionType == "move_to_end") {
-               init_data();
+       if (m_actionType == FOLD_SHEET || m_actionType == FOLD_TRACK) {
+               
+               TimeRef currentLocation = 
TimeRef(cpointer().on_first_input_event_scene_x() * d->sv->timeref_scalefactor);
+               
+               QList<AudioClip*> movingClips;
+               QList<Track*> tracks;
+               
+               if (m_actionType == FOLD_TRACK) {
+                       TrackView* tv = qobject_cast<TrackView*>(view);
+                       Q_ASSERT(tv);
+                       d->sv= tv->get_sheetview();
+                       tracks.append(tv->get_track());
+               } else {
+                       d->sv = qobject_cast<SheetView*>(view);
+                       Q_ASSERT(d->sv);
+                       tracks = d->sv->get_sheet()->get_tracks();
+               }
+               
+               foreach(Track* track, tracks) {
+                       QList<AudioClip*> clips = track->get_cliplist();
+                       foreach(AudioClip* clip, clips) {
+                               if (clip->get_track_end_location() > 
currentLocation) {
+                                       movingClips.append(clip);
+                               }
+                       }
+               }
+               
+               m_group.set_clips(movingClips);
+       
+       } else {
+               AudioClipView* cv = qobject_cast<AudioClipView*>(view);
+               Q_ASSERT(cv);
+               d->sv = cv->get_sheetview();
+               m_group.add_clip(cv->get_clip());
        }
+       
+       d->zoom = 0;
+       m_sheet = d->sv->get_sheet();
 }
 
 
@@ -104,34 +142,24 @@
        }
 }
 
-void MoveClip::init_data()
-{
-       if (m_actionType == "copy") {
-               m_clip = resources_manager()->get_clip(m_clip->get_id());
-               m_clip->set_sheet(m_sheet);
-               m_clip->set_track(d->view->get_clip()->get_track());
-               
m_clip->set_track_start_location(m_clip->get_track_start_location() + 
TimeRef(d->sv->timeref_scalefactor * 3));
-       
-               Command::process_command(m_clip->get_track()->add_clip(m_clip, 
false));
-       }
-
-       m_clip->set_snappable(false);
-       m_originTrack = m_targetTrack = m_clip->get_track();
-       m_originalTrackStartLocation = m_clip->get_track_start_location();
-       d->origTrackEndLocation = m_clip->get_track_end_location();
-       d->origXPos = cpointer().on_first_input_event_scene_x();
-       d->origPos = QPointF(d->origXPos, 
cpointer().on_first_input_event_scene_y());
-       d->sv->start_shuttle(true, true);
-}
-
-
 int MoveClip::begin_hold()
 {
-       d->sv->stop_follow_play_head();
+       m_trackStartLocation = m_group.get_track_start_location();
 
-       init_data();
+       if (m_actionType == COPY) {
+               // FIXME Memory leak here!
+               QList<AudioClip*> newclips = m_group.copy_clips();
+               m_group.set_clips(newclips);
+               m_group.add_all_clips_to_tracks();
+               m_group.move_to(m_trackStartLocation + 
TimeRef(d->sv->timeref_scalefactor * 3));
+       }
        
-       m_clip->set_as_moving(true);
+       m_group.set_snappable(false);
+       m_group.set_as_moving(true);
+       
+       d->sv->stop_follow_play_head();
+       d->sv->start_shuttle(true, true);
+       d->sceneXStartPos = cpointer().on_first_input_event_scene_x();
 
        return 1;
 }
@@ -139,8 +167,8 @@
 
 int MoveClip::finish_hold()
 {
-       m_clip->set_snappable(true);
-       m_clip->set_as_moving(false);
+       m_group.set_snappable(true);
+       m_group.set_as_moving(false);
        
        d->sv->start_shuttle(false);
 
@@ -156,17 +184,14 @@
        delete d;
        d = 0;
        
-       if (m_actionType == "copy") {
-               Command::process_command(m_targetTrack->remove_clip(m_clip, 
false));
-               Command::process_command(m_originTrack->remove_clip(m_clip, 
false));
-       } else {
-               m_sheet->move_clip(m_targetTrack, m_originTrack, m_clip, 
m_originalTrackStartLocation);
+       if (m_actionType == COPY) {
+               m_group.remove_all_clips_from_tracks();
        }
        
-       if (m_originTrack == m_targetTrack &&  m_posDiff == qint64(0) && 
-                  ! (m_actionType == "copy" || m_actionType == "move_to_start" 
|| m_actionType == "move_to_end") ) {
+/*     if (m_originTrack == m_targetTrack &&  m_posDiff == qint64(0) && 
+                  ! (m_actionType == COPY || m_actionType == MOVE_TO_START || 
m_actionType == MOVE_TO_END) ) {
                return -1;
-       }
+       }*/
        
        return 1;
 }
@@ -175,17 +200,17 @@
 int MoveClip::do_action()
 {
        PENTER;
-       if (m_actionType == "move") {
-               m_sheet->move_clip(m_originTrack, m_targetTrack, m_clip, 
m_originalTrackStartLocation + m_posDiff);
+       if (m_actionType == MOVE || m_actionType == FOLD_SHEET || m_actionType 
== FOLD_TRACK) {
+               m_group.move_to(m_trackStartLocation + m_posDiff);
        }
-       else if (m_actionType == "copy") {
-               Command::process_command(m_targetTrack->add_clip(m_clip, 
false));
-               m_clip->set_track_start_location(m_originalTrackStartLocation + 
m_posDiff);
+       else if (m_actionType == COPY) {
+               m_group.add_all_clips_to_tracks();
+               m_group.move_to(m_trackStartLocation + m_posDiff);
        }
-       else if (m_actionType == "move_to_start") {
+       else if (m_actionType == MOVE_TO_START) {
                move_to_start(false);
        }
-       else if (m_actionType == "move_to_end") {
+       else if (m_actionType == MOVE_TO_END) {
                move_to_end(false);
        }
        
@@ -197,10 +222,10 @@
 {
        PENTER;
        
-       if (m_actionType == "copy") {
-               Command::process_command(m_targetTrack->remove_clip(m_clip, 
false));
+       if (m_actionType == COPY) {
+               m_group.remove_all_clips_from_tracks();
        } else {
-               m_sheet->move_clip(m_targetTrack, m_originTrack, m_clip, 
m_originalTrackStartLocation);
+               m_group.move_to(m_trackStartLocation);
        }
 
        return 1;
@@ -214,54 +239,44 @@
 
 int MoveClip::jog()
 {
-       if (!m_clip) {
-               return 0;
-       }
-       
-       
        if (d->zoom) {
                d->zoom->jog();
                return 0;
        }
        
-       
-       QPointF diffPoint(cpointer().scene_pos() - d->origPos);
-       
-       d->origPos = cpointer().scene_pos();
-       
+       // Detect if we moved up/down tracks. 
+       // FIXME!
        TrackView* trackView = 
d->sv->get_trackview_under(cpointer().scene_pos());
        if (trackView) {
-               m_targetTrack = trackView->get_track();
        }
 
-       int newXPos = cpointer().scene_x();
-
-       TimeRef diff_f = TimeRef((cpointer().scene_x() - d->origXPos) * 
d->sv->timeref_scalefactor);
-       if (d->verticalOnly) {
-               diff_f = TimeRef();
+       // Calculate the distance moved based on the current scene x pos and 
the initial one.
+       // Only assign if we the movements is allowed in horizontal direction
+       TimeRef diff_f;
+       if (!d->verticalOnly) {
+               diff_f = (cpointer().scene_x() - d->sceneXStartPos) * 
d->sv->timeref_scalefactor;
        }
        
+       // If the moved distance (diff_f) makes as go beyond the left most 
position (== 0, or TimeRef())
+       // set the newTrackStartLocation to 0. Else calculate it based on the 
original track start location
+       // and the distance moved.
        TimeRef newTrackStartLocation;
-       TimeRef newTrackEndLocation = d->origTrackEndLocation + diff_f;
-
-       if (diff_f < TimeRef() && m_originalTrackStartLocation < (-1 * diff_f)) 
{
+       if (diff_f < TimeRef() && m_trackStartLocation < (-1 * diff_f)) {
                newTrackStartLocation = qint64(0);
        } else {
-               newTrackStartLocation = m_originalTrackStartLocation + diff_f;
+               newTrackStartLocation = m_trackStartLocation + diff_f;
        }
 
+       // substract the snap distance, if snap is turned on.
        if (m_sheet->is_snap_on() && !d->verticalOnly) {
-               newTrackStartLocation -= 
m_sheet->get_snap_list()->calculate_snap_diff(newTrackStartLocation, 
newTrackEndLocation);
+               newTrackStartLocation -= 
m_sheet->get_snap_list()->calculate_snap_diff(newTrackStartLocation, 
newTrackStartLocation + m_group.get_length());
        }
        
-       m_posDiff = newTrackStartLocation - m_originalTrackStartLocation;
-
-       // store the new position only if the clip was moved, but not if it 
stuck to a snap position
-       if (m_originalTrackStartLocation != newTrackStartLocation) {
-               d->origPos.setX(newXPos);
-       }
+       // Now that the new track start location is known, the position diff 
can be calculated
+       m_posDiff = newTrackStartLocation - m_trackStartLocation;
 
-       m_sheet->move_clip(m_clip->get_track(), m_targetTrack, m_clip, 
newTrackStartLocation);
+       // and used to move the group to it's new location.
+       m_group.move_to(m_trackStartLocation + m_posDiff);
        
        d->sv->update_shuttle_factor();
        
@@ -278,14 +293,14 @@
        Q_UNUSED(autorepeat);
        ie().bypass_jog_until_mouse_movements_exceeded_manhattenlength();
        
-       TimeRef trackStartLocation = 
m_sheet->get_snap_list()->next_snap_pos(m_clip->get_track_start_location());
+/*     TimeRef trackStartLocation = 
m_sheet->get_snap_list()->next_snap_pos(m_clip->get_track_start_location());
        TimeRef trackEndLocation = 
m_sheet->get_snap_list()->next_snap_pos(m_clip->get_track_end_location());
        qint64 startdiff = (trackStartLocation - 
m_clip->get_track_start_location()).universal_frame();
        qint64 enddiff = (trackEndLocation - 
m_clip->get_track_end_location()).universal_frame();
        qint64 diff = (abs(startdiff) < abs(enddiff)) ? startdiff : enddiff;
        trackStartLocation = m_clip->get_track_start_location() + diff;
-       m_posDiff = trackStartLocation - m_originalTrackStartLocation;
-       m_clip->set_track_start_location(trackStartLocation);
+       m_posDiff = trackStartLocation - m_trackStartLocation;
+       m_clip->set_track_start_location(trackStartLocation);*/
 }
 
 void MoveClip::prev_snap_pos(bool autorepeat)
@@ -293,27 +308,27 @@
        Q_UNUSED(autorepeat);
        ie().bypass_jog_until_mouse_movements_exceeded_manhattenlength();
        
-       TimeRef trackStartLocation = 
m_sheet->get_snap_list()->prev_snap_pos(m_clip->get_track_start_location());
+/*     TimeRef trackStartLocation = 
m_sheet->get_snap_list()->prev_snap_pos(m_clip->get_track_start_location());
        TimeRef trackEndLocation = 
m_sheet->get_snap_list()->prev_snap_pos(m_clip->get_track_end_location());
        qint64 startdiff = (trackStartLocation - 
m_clip->get_track_start_location()).universal_frame();
        qint64 enddiff = (trackEndLocation - 
m_clip->get_track_end_location()).universal_frame();
        qint64 diff = (abs(startdiff) < abs(enddiff)) ? startdiff : enddiff;
        trackStartLocation = m_clip->get_track_start_location() + diff;
-       m_posDiff = trackStartLocation - m_originalTrackStartLocation;
-       m_clip->set_track_start_location(trackStartLocation);
+       m_posDiff = trackStartLocation - m_trackStartLocation;
+       m_clip->set_track_start_location(trackStartLocation);*/
 }
 
 void MoveClip::move_to_start(bool autorepeat)
 {
        Q_UNUSED(autorepeat)
-       TimeRef location;
-       m_clip->set_track_start_location(location);
+       TimeRef location; // location == 0
+       m_group.move_to(location);
 }
 
 void MoveClip::move_to_end(bool autorepeat)
 {
        Q_UNUSED(autorepeat)
-       
m_clip->set_track_start_location(m_clip->get_sheet()->get_last_location());
+       m_group.move_to(m_sheet->get_last_location());
 }
 
 void MoveClip::start_zoom(bool autorepeat)
@@ -329,7 +344,7 @@
                delete d->zoom;
                d->zoom = 0;
                cpointer().get_viewport()->set_holdcursor(":/cursorHoldLrud");
-               d->origXPos -= int((d->origPos - cpointer().scene_pos()).x());
+               d->sceneXStartPos -= int((d->origPos - 
cpointer().scene_pos()).x());
                d->origPos = cpointer().scene_pos();
                d->sv->start_shuttle(true, true);
        }

Index: src/commands/MoveClip.h
===================================================================
RCS file: /sources/traverso/traverso/src/commands/MoveClip.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- src/commands/MoveClip.h     13 Feb 2008 12:45:39 -0000      1.28
+++ src/commands/MoveClip.h     13 Feb 2008 23:02:17 -0000      1.29
@@ -26,12 +26,13 @@
 
 #include <QPoint>
 #include <defines.h>
+#include "AudioClipGroup.h"
 
 class AudioClip;
 class Sheet;
 class Track;
 class SheetView;
-class AudioClipView;
+class ViewItem;
 class Zoom;
 
 class MoveClip : public Command
@@ -42,7 +43,7 @@
        Q_CLASSINFO("start_zoom", tr("Jog Zoom"));
        
 public :
-       MoveClip(AudioClipView* clipView, QVariantList args);
+       MoveClip(ViewItem* view, QVariantList args);
         ~MoveClip();
 
         int begin_hold();
@@ -56,27 +57,30 @@
        void set_cursor_shape(int useX, int useY);
        
 private :
+       enum ActionType {
+               MOVE,
+               COPY,
+               FOLD_TRACK,
+               FOLD_SHEET,
+               MOVE_TO_START,
+               MOVE_TO_END
+       };
+       
        Sheet*          m_sheet;
+       AudioClipGroup  m_group;
        AudioClip*      m_clip;
-        TimeRef        m_originalTrackStartLocation;
+        TimeRef        m_trackStartLocation;
         TimeRef        m_posDiff;
-        Track*                 m_originTrack;
-        Track*                 m_targetTrack;
-       QString         m_actionType;
+       ActionType      m_actionType;
        
        struct Data {
-               int             origXPos;
-               TimeRef         xoffset;
+               int             sceneXStartPos;
                SheetView*      sv;
-               AudioClipView*  view;
                QPointF         origPos;
-               TimeRef         origTrackEndLocation;
-               bool            resync;
                bool            verticalOnly;
                Zoom*           zoom;
        };
                        
-
        Data* d;
 
        void init_data();

Index: src/commands/plugins/TraversoCommands/TraversoCommands.cpp
===================================================================
RCS file: 
/sources/traverso/traverso/src/commands/plugins/TraversoCommands/TraversoCommands.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- src/commands/plugins/TraversoCommands/TraversoCommands.cpp  13 Feb 2008 
12:45:40 -0000      1.25
+++ src/commands/plugins/TraversoCommands/TraversoCommands.cpp  13 Feb 2008 
23:02:17 -0000      1.26
@@ -263,16 +263,16 @@
                
                case MoveClipCommand:
                {
-                       AudioClipView* view = qobject_cast<AudioClipView*>(obj);
+                       ViewItem* view = qobject_cast<ViewItem*>(obj);
                        if (!view) {
                                PERROR("TraversoCommands: Supplied QObject was 
not an AudioClipView! "
                                        "MoveClipCommand needs an AudioClipView 
as argument");
                                return 0;
                        }
 
-                       if (view->get_clip()->is_locked()) {
-                               return 0;
-                       }
+//                     if (view->get_clip()->is_locked()) {
+//                             return 0;
+//                     }
 
                        return new MoveClip(view, arguments);
                }

Index: src/core/AudioClipGroup.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/AudioClipGroup.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/core/AudioClipGroup.cpp 13 Feb 2008 15:29:14 -0000      1.2
+++ src/core/AudioClipGroup.cpp 13 Feb 2008 23:02:17 -0000      1.3
@@ -22,6 +22,10 @@
 #include "AudioClipGroup.h"
 
 #include "AudioClip.h"
+#include "Command.h"
+#include "ProjectManager.h"
+#include "ResourcesManager.h"
+#include "Track.h"
 
 #include "Debugger.h"
 
@@ -46,6 +50,12 @@
        update_track_start_and_end_locations();
 }
 
+void AudioClipGroup::set_clips(QList< AudioClip * > clips)
+{
+       m_clips = clips;
+       update_track_start_and_end_locations();
+}
+
 void AudioClipGroup::move_to(TimeRef location)
 {
        foreach(AudioClip* clip, m_clips) {
@@ -82,3 +92,33 @@
                clip->set_as_moving(move);
        }
 }
+
+QList<AudioClip*> AudioClipGroup::copy_clips()
+{
+       QList<AudioClip*> newclips;
+       
+       foreach(AudioClip* clip, m_clips) {
+               AudioClip* newclip = 
resources_manager()->get_clip(clip->get_id());
+               newclip->set_sheet(clip->get_sheet());
+               newclip->set_track(clip->get_track());
+               
newclip->set_track_start_location(clip->get_track_start_location());
+               newclips.append(newclip);
+       }
+       
+       return newclips;
+}
+
+void AudioClipGroup::add_all_clips_to_tracks()
+{
+       foreach(AudioClip* clip, m_clips) {
+               Command::process_command(clip->get_track()->add_clip(clip, 
false));
+       }
+}
+
+void AudioClipGroup::remove_all_clips_from_tracks()
+{
+       foreach(AudioClip* clip, m_clips) {
+               Command::process_command(clip->get_track()->remove_clip(clip, 
false));
+       }
+}
+

Index: src/core/AudioClipGroup.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/AudioClipGroup.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/core/AudioClipGroup.h   13 Feb 2008 15:29:14 -0000      1.2
+++ src/core/AudioClipGroup.h   13 Feb 2008 23:02:17 -0000      1.3
@@ -33,11 +33,16 @@
        AudioClipGroup(QList<AudioClip*> clips);
        
        void add_clip(AudioClip* clip);
+       void set_clips(QList<AudioClip*> clips);
        void move_to(TimeRef location);
        
        void set_snappable(bool snap);
        void set_as_moving(bool move);
        
+       QList<AudioClip*> copy_clips();
+       void add_all_clips_to_tracks();
+       void remove_all_clips_from_tracks();
+       
        TimeRef get_track_start_location() const {return m_trackStartLocation;}
        TimeRef get_track_end_location() const {return m_trackEndLocation;}
        TimeRef get_length() const {return m_trackEndLocation - 
m_trackStartLocation;}




reply via email to

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