From e8da728db30b63ea7361dbdd649ef0b9c530f6d6 Mon Sep 17 00:00:00 2001 From: zeromus Date: Sat, 28 Jun 2008 22:38:11 +0000 Subject: [PATCH] tasedit delete capability --- src/drivers/win/tasedit.cpp | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/drivers/win/tasedit.cpp b/src/drivers/win/tasedit.cpp index eaa7974b..1fded56b 100644 --- a/src/drivers/win/tasedit.cpp +++ b/src/drivers/win/tasedit.cpp @@ -235,15 +235,36 @@ static void InsertFrames() currMovieData.records.reserve(currMovieData.records.size()+frames); //insert frames before each selection - int ctr=0; - for(TSelectionFrames::iterator it(selectionFrames.begin()); it != selectionFrames.end(); it++) + for(TSelectionFrames::reverse_iterator it(selectionFrames.rbegin()); it != selectionFrames.rend(); it++) { - currMovieData.insertEmpty(*it+ctr,1); - ctr++; + currMovieData.insertEmpty(*it,1); } InvalidateGreenZone(*selectionFrames.begin()); + UpdateTasEdit(); + RedrawList(); +} + +//delete frames at the currently selected positions. +static void DeleteFrames() +{ + //this is going to be _really_ slow. + + //insert frames before each selection + int ctr=0; + for(TSelectionFrames::reverse_iterator it(selectionFrames.rbegin()); it != selectionFrames.rend(); it++) + { + currMovieData.records.erase(currMovieData.records.begin()+*it); + } + + InvalidateGreenZone(*selectionFrames.begin()); + + //in the particular case of deletion, we need to make sure we reset currFrameCounter to something reasonable + //why not the current green zone max? + currFrameCounter = currMovieData.greenZoneCount-1; + + UpdateTasEdit(); RedrawList(); } @@ -510,6 +531,9 @@ BOOL CALLBACK WndprocTasEdit(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar case WM_COMMAND: switch(LOWORD(wParam)) { + case MENU_DELETEFRAMES: + DeleteFrames(); + break; case MENU_INSERTFRAMES: InsertFrames(); break;