X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fclippopup.C;h=c38efd99d71584d035c451b8ef6453c197463638;hp=c9151e67b03d8516b446f4a2aeef821cb0cc1c67;hb=5d8a7826b0f80f00622e46baf75453995a76e343;hpb=d17640d4122d028eee849d9fedf8ba35f7f0f6e0 diff --git a/cinelerra-5.1/cinelerra/clippopup.C b/cinelerra-5.1/cinelerra/clippopup.C index c9151e67..c38efd99 100644 --- a/cinelerra-5.1/cinelerra/clippopup.C +++ b/cinelerra-5.1/cinelerra/clippopup.C @@ -65,13 +65,13 @@ void ClipPopup::create_objects() BC_SubMenu *submenu; add_item(info = new ClipPopupInfo(mwindow, this)); add_item(format = new AWindowListFormat(mwindow, gui)); - add_item(new ClipPopupSort(mwindow, this)); + add_item(sort = new ClipPopupSort(mwindow, this)); + add_item(open_edl = new ClipPopupOpenEDL(mwindow, this)); + add_item(to_media = new ClipPopupToMedia(mwindow, this)); add_item(view = new ClipPopupView(mwindow, this)); add_item(view_window = new ClipPopupViewWindow(mwindow, this)); - add_item(new ClipPopupCopy(mwindow, this)); - add_item(new ClipPopupNest(mwindow, this)); - add_item(new ClipPopupUnNest(mwindow, this)); - add_item(new ClipPopupPaste(mwindow, this)); + add_item(copy = new ClipPopupCopy(mwindow, this)); + add_item(paste = new ClipPopupPaste(mwindow, this)); add_item(menu_item = new BC_MenuItem(_("Match..."))); menu_item->add_submenu(submenu = new BC_SubMenu()); submenu->add_submenuitem(new ClipMatchSize(mwindow, this)); @@ -417,107 +417,46 @@ void ClipListMenu::update() } -ClipPopupNest::ClipPopupNest(MWindow *mwindow, ClipPopup *popup) - : BC_MenuItem(_("Nest")) +ClipPopupToMedia::ClipPopupToMedia(MWindow *mwindow, ClipPopup *popup) + : BC_MenuItem(_("Nest to Media")) { this->mwindow = mwindow; this->popup = popup; } -ClipPopupNest::~ClipPopupNest() +ClipPopupToMedia::~ClipPopupToMedia() { } -int ClipPopupNest::handle_event() +int ClipPopupToMedia::handle_event() { - MWindowGUI *gui = mwindow->gui; - gui->lock_window("ClipPopupNest::handle_event 1"); - if( mwindow->edl->session->proxy_scale != 1 ) { + if( mwindow->edl->session->proxy_scale == 1 ) + mwindow->clip_to_media(); + else eprintf("Nesting not allowed when proxy scale != 1"); - return 1; - } - int clips_total = mwindow->session->drag_clips->total; - for( int i=0; iedl; - 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[i]; - 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); - int idx = edl->clips.number_of(clip); - if( idx >= 0 ) { - edl->clips[idx] = new_clip; - clip->remove_user(); - } - else - edl->clips.append(new_clip); - mwindow->mainindexes->add_next_asset(0, nested); - } - mwindow->mainindexes->start_build(); - popup->gui->async_update_assets(); - gui->unlock_window(); return 1; } -ClipPopupUnNest::ClipPopupUnNest(MWindow *mwindow, ClipPopup *popup) - : BC_MenuItem(_("UnNest")) +ClipPopupOpenEDL::ClipPopupOpenEDL(MWindow *mwindow, ClipPopup *popup) + : BC_MenuItem(_("Open EDL")) { this->mwindow = mwindow; this->popup = popup; } -ClipPopupUnNest::~ClipPopupUnNest() + +ClipPopupOpenEDL::~ClipPopupOpenEDL() { } -int ClipPopupUnNest::handle_event() +int ClipPopupOpenEDL::handle_event() { - EDL *nested_edl = 0; - MWindowGUI *gui = mwindow->gui; - gui->lock_window("ClipPopupUnNest::handle_event 1"); int clips_total = mwindow->session->drag_clips->total; - for( int i=0; isession->drag_clips->values[i]; - Track *track = clip->tracks->first; - Edit *edit = track ? track->edits->first : 0; - 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 && - strcmp(edit->nested_edl->path, nested_edl->path) ) ) - nested_edl = 0; - } - if( nested_edl ) { - EDL *edl = mwindow->edl; - EDL *new_clip = new EDL(edl); - new_clip->create_objects(); - new_clip->copy_all(nested_edl); - new_clip->folder_no = AW_CLIP_FOLDER; - int idx = edl->clips.number_of(clip); - if( idx >= 0 ) { - edl->clips[idx] = new_clip; - clip->remove_user(); - } - else - edl->clips.append(new_clip); - popup->gui->async_update_assets(); - } + if( clips_total ) { + popup->unlock_window(); + EDL *clip = mwindow->session->drag_clips->values[0]; + mwindow->stack_push(clip); + popup->lock_window("ClipPopupOpenEDL::handle_event"); } - gui->unlock_window(); return 1; }