X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fclippopup.C;h=4027b8190a148b75898b637e4ca89820fd40d7d4;hp=dd73896330963ebdd431aaf67b58155b3a704fd0;hb=a19a685a46ddc630010788707d9e5b9d2342af46;hpb=7ead44762b23da404eee89b63e0474153fdf58a1 diff --git a/cinelerra-5.1/cinelerra/clippopup.C b/cinelerra-5.1/cinelerra/clippopup.C index dd738963..4027b819 100644 --- a/cinelerra-5.1/cinelerra/clippopup.C +++ b/cinelerra-5.1/cinelerra/clippopup.C @@ -32,6 +32,7 @@ #include "edit.h" #include "edits.h" #include "edl.h" +#include "edlsession.h" #include "filexml.h" #include "language.h" #include "localsession.h" @@ -174,7 +175,7 @@ ClipPopupSort::~ClipPopupSort() int ClipPopupSort::handle_event() { - mwindow->awindow->gui->sort_assets(0); + mwindow->awindow->gui->sort_assets(); return 1; } @@ -219,21 +220,18 @@ ClipPopupViewWindow::~ClipPopupViewWindow() int ClipPopupViewWindow::handle_event() { -// Find window with nothing - VWindow *vwindow = mwindow->get_viewer(1); - -// TODO: create new vwindow or change current vwindow - vwindow->gui->lock_window("ClipPopupView::handle_event"); - - if( mwindow->session->drag_assets->total ) - vwindow->change_source( - mwindow->session->drag_assets->values[0]); - else - if( mwindow->session->drag_clips->total ) - vwindow->change_source( - mwindow->session->drag_clips->values[0]); - - vwindow->gui->unlock_window(); + for( int i=0; isession->drag_assets->size(); ++i ) { + VWindow *vwindow = mwindow->get_viewer(1); + vwindow->gui->lock_window("ClipPopupView::handle_event 1"); + vwindow->change_source(mwindow->session->drag_assets->get(i)); + vwindow->gui->unlock_window(); + } + for( int i=0; isession->drag_clips->size(); ++i ) { + VWindow *vwindow = mwindow->get_viewer(1); + vwindow->gui->lock_window("ClipPopupView::handle_event 2"); + vwindow->change_source(mwindow->session->drag_clips->get(i)); + vwindow->gui->unlock_window(); + } return 1; } @@ -432,33 +430,30 @@ int ClipPopupNest::handle_event() { MWindowGUI *gui = mwindow->gui; gui->lock_window("ClipPopupNest::handle_event 1"); - if( mwindow->session->drag_clips->total > 0 ) { + if( mwindow->edl->session->proxy_scale != 1 ) { + eprintf("Nesting not allowed when proxy scale != 1"); + } + else if( mwindow->session->drag_clips->total > 0 ) { EDL *edl = mwindow->edl; + time_t dt; time(&dt); + struct tm dtm; localtime_r(&dt, &dtm); + char path[BCSTRLEN]; + sprintf(path, _("Nested_%02d%02d%02d-%02d%02d%02d"), + dtm.tm_year+1900, dtm.tm_mon+1, dtm.tm_mday, + dtm.tm_hour, dtm.tm_min, dtm.tm_sec); EDL *clip = mwindow->session->drag_clips->values[0]; - EDL *clip_edl = new EDL; // no parent for nested clip - clip_edl->create_objects(); - clip_edl->copy_all(clip); - EDL *new_clip = new EDL(edl); - new_clip->create_objects(); - new_clip->awindow_folder = AW_CLIP_FOLDER; + EDL *nested = edl->new_nested(clip, path); + EDL *new_clip = edl->create_nested_clip(nested); + new_clip->folder_no = AW_CLIP_FOLDER; + sprintf(new_clip->local_session->clip_icon, + "clip_%02d%02d%02d-%02d%02d%02d.png", + dtm.tm_year+1900, dtm.tm_mon+1, dtm.tm_mday, + dtm.tm_hour, dtm.tm_min, dtm.tm_sec); snprintf(new_clip->local_session->clip_title, sizeof(new_clip->local_session->clip_title), _("Nested: %s"), clip->local_session->clip_title); strcpy(new_clip->local_session->clip_notes, clip->local_session->clip_notes); - time_t dt; time(&dt); - struct tm dtm; localtime_r(&dt, &dtm); - char path[BCSTRLEN]; - sprintf(path, _("Nested_%02d%02d%02d-%02d%02d%02d"), - dtm.tm_year+1900, dtm.tm_mon+1, dtm.tm_mday, - dtm.tm_hour, dtm.tm_min, dtm.tm_sec); - clip_edl->set_path(path); - sprintf(new_clip->local_session->clip_icon, - "clip_%02d%02d%02d-%02d%02d%02d.png", - dtm.tm_year+1900, dtm.tm_mon+1, dtm.tm_mday, - dtm.tm_hour, dtm.tm_min, dtm.tm_sec); - new_clip->set_path(path); - new_clip->to_nested(clip_edl); int idx = edl->clips.number_of(clip); if( idx >= 0 ) { edl->clips[idx] = new_clip; @@ -466,9 +461,8 @@ int ClipPopupNest::handle_event() } else edl->clips.append(new_clip); - mwindow->mainindexes->add_next_asset(0, clip_edl); + mwindow->mainindexes->add_next_asset(0, nested); mwindow->mainindexes->start_build(); - clip_edl->remove_user(); popup->gui->async_update_assets(); } gui->unlock_window(); @@ -498,7 +492,9 @@ int ClipPopupUnNest::handle_event() nested_edl = edit && !edit->next && !edit->asset ? edit->nested_edl : 0; while( nested_edl && (track=track->next)!=0 ) { Edit *edit = track->edits->first; - if( !edit || edit->next || edit->nested_edl != nested_edl ) + if( !edit || edit->next || + ( edit->nested_edl != nested_edl && + strcmp(edit->nested_edl->path, nested_edl->path) ) ) nested_edl = 0; } if( nested_edl ) { @@ -506,7 +502,7 @@ int ClipPopupUnNest::handle_event() EDL *new_clip = new EDL(edl); new_clip->create_objects(); new_clip->copy_all(nested_edl); - new_clip->awindow_folder = AW_CLIP_FOLDER; + new_clip->folder_no = AW_CLIP_FOLDER; int idx = edl->clips.number_of(clip); if( idx >= 0 ) { edl->clips[idx] = new_clip;