cut with active speed auto correction, add locale pref, mod prores dft profile to...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / editpopup.C
index e0c40b9c73755cbf15ae1881dd9d8c715cb3e43a..da9b06ba4cb84d5b60c08acf376461e166ff1e8e 100644 (file)
@@ -75,7 +75,11 @@ void EditPopup::create_objects()
        add_item(new EditPopupMutePack(mwindow, this));
        add_item(new EditPopupPaste(mwindow, this));
        add_item(new EditPopupOverwrite(mwindow, this));
+       add_item(new BC_MenuItem("-"));
        add_item(new EditPopupOverwritePlugins(mwindow, this));
+       add_item(new EditCollectEffects(mwindow, this));
+       add_item(new EditPasteEffects(mwindow, this));
+       add_item(new EditPopupTimecode(mwindow, this));
 }
 
 int EditPopup::activate_menu(Track *track, Edit *edit,
@@ -213,7 +217,7 @@ int EditPopupCutPack::handle_event()
 }
 
 EditPopupMute::EditPopupMute(MWindow *mwindow, EditPopup *popup)
- : BC_MenuItem(_("Mute"),_("Ctrl-m"),'m')
+ : BC_MenuItem(C_("Mute"),_("Ctrl-m"),'m')
 {
        this->mwindow = mwindow;
        this->popup = popup;
@@ -304,3 +308,64 @@ int EditPopupOverwritePlugins::handle_event()
        return 1;
 }
 
+
+EditCollectEffects::EditCollectEffects(MWindow *mwindow, EditPopup *popup)
+ : BC_MenuItem(_("Collect Effects"))
+{
+       this->mwindow = mwindow;
+       this->popup = popup;
+       set_ctrl(1);
+}
+
+int EditCollectEffects::handle_event()
+{
+       if( mwindow->session->current_operation == NO_OPERATION )
+               mwindow->collect_effects();
+       return 1;
+}
+
+EditPasteEffects::EditPasteEffects(MWindow *mwindow, EditPopup *popup)
+ : BC_MenuItem(_("Paste Effects"))
+{
+       this->mwindow = mwindow;
+       this->popup = popup;
+       set_ctrl(1);
+       set_shift(1);
+}
+
+int EditPasteEffects::handle_event()
+{
+       if( mwindow->session->current_operation == NO_OPERATION )
+               mwindow->paste_effects();
+       return 1;
+}
+
+EditPopupTimecode::EditPopupTimecode(MWindow *mwindow, EditPopup *popup)
+ : BC_MenuItem(_("Timecode"),_("Ctrl-!"),'!')
+{
+       this->mwindow = mwindow;
+       this->popup = popup;
+       set_ctrl(1);
+}
+
+int EditPopupTimecode::handle_event()
+{
+       if( mwindow->session->current_operation != NO_OPERATION ) return 1;
+       Edit *edit = popup->edit;
+       if( !edit || !edit->asset ) return 1;
+       Asset *asset = edit->asset;
+       double timecode = asset->timecode != -2 ? asset->timecode :
+               FFMPEG::get_timecode(asset->path,
+                       edit->track->data_type, edit->channel,
+                       mwindow->edl->session->frame_rate);
+       asset->timecode = timecode;
+       if( timecode >= 0 ) {
+               int64_t pos = edit->startproject + edit->startsource;
+               double position = edit->track->from_units(pos);
+               mwindow->set_timecode_offset(timecode - position);
+       }
+       else
+               mwindow->set_timecode_offset(0);
+       return 1;
+}
+