Credit Andrew - fix vorbis audio which was scratchy and ensure aging plugin does...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / clippopup.C
index c38efd99d71584d035c451b8ef6453c197463638..d473e195af2d2331d535c282f0eb9214d0282e7a 100644 (file)
@@ -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;
+}
+