X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fclippopup.C;h=65eebb61e889f642a58eb3990c709ab4e476b8b0;hp=c38efd99d71584d035c451b8ef6453c197463638;hb=HEAD;hpb=5d8a7826b0f80f00622e46baf75453995a76e343 diff --git a/cinelerra-5.1/cinelerra/clippopup.C b/cinelerra-5.1/cinelerra/clippopup.C index c38efd99..d473e195 100644 --- a/cinelerra-5.1/cinelerra/clippopup.C +++ b/cinelerra-5.1/cinelerra/clippopup.C @@ -67,6 +67,7 @@ void ClipPopup::create_objects() add_item(format = new AWindowListFormat(mwindow, gui)); add_item(sort = new ClipPopupSort(mwindow, this)); add_item(open_edl = new ClipPopupOpenEDL(mwindow, this)); + add_item(close_edl = new ClipPopupCloseEDL(mwindow, gui)); add_item(to_media = new ClipPopupToMedia(mwindow, this)); add_item(view = new ClipPopupView(mwindow, this)); add_item(view_window = new ClipPopupViewWindow(mwindow, this)); @@ -128,6 +129,12 @@ int ClipPopup::update() { format->update(); gui->collect_assets(); + EDL *clip = !mwindow->session->drag_clips->size() ? 0 : + mwindow->session->drag_clips->get(0); + int enable_open = clip ? 1 : 0; + open_edl->set_enabled(enable_open); + int enable_close = mwindow->stack.size() > 0 ? 1 : 0; + close_edl->set_enabled(enable_close); return 0; } @@ -406,6 +413,7 @@ ClipListMenu::~ClipListMenu() void ClipListMenu::create_objects() { add_item(format = new AWindowListFormat(mwindow, gui)); + add_item(close_edl = new ClipPopupCloseEDL(mwindow, gui)); add_item(new AWindowListSort(mwindow, gui)); add_item(new ClipPasteToFolder(mwindow)); update(); @@ -414,6 +422,8 @@ void ClipListMenu::create_objects() void ClipListMenu::update() { format->update(); + int enable_close = mwindow->stack.size() > 0 ? 1 : 0; + close_edl->set_enabled(enable_close); } @@ -429,10 +439,10 @@ ClipPopupToMedia::~ClipPopupToMedia() int ClipPopupToMedia::handle_event() { - if( mwindow->edl->session->proxy_scale == 1 ) + if( mwindow->edl->session->proxy_state != PROXY_ACTIVE ) mwindow->clip_to_media(); else - eprintf("Nesting not allowed when proxy scale != 1"); + eprintf("Nesting not allowed when proxy active"); return 1; } @@ -454,9 +464,29 @@ int ClipPopupOpenEDL::handle_event() if( clips_total ) { popup->unlock_window(); EDL *clip = mwindow->session->drag_clips->values[0]; - mwindow->stack_push(clip); + mwindow->stack_push(clip, 0); popup->lock_window("ClipPopupOpenEDL::handle_event"); } return 1; } +ClipPopupCloseEDL::ClipPopupCloseEDL(MWindow *mwindow, AWindowGUI *gui) + : BC_MenuItem(_("Close EDL")) +{ + this->mwindow = mwindow; + this->gui = gui; +} +ClipPopupCloseEDL::~ClipPopupCloseEDL() +{ +} + +int ClipPopupCloseEDL::handle_event() +{ + gui->unlock_window(); + mwindow->gui->lock_window("ClipPopupCloseEDL::handle_event"); + mwindow->stack_pop(); + mwindow->gui->unlock_window(); + gui->lock_window("ClipPopupCloseEDL::handle_event"); + return 1; +} +