X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmainmenu.C;h=56b18436e0efcc95f525be8610b2561e9a6bcee9;hp=72b9b68bc9535d20c4d2fcbc81266db10912a27a;hb=1db0dacec8f9d7f5687e582bd282d9bf83bd58f0;hpb=9303c74f396d12f0fb48639ff6a835824cbc5987 diff --git a/cinelerra-5.1/cinelerra/mainmenu.C b/cinelerra-5.1/cinelerra/mainmenu.C index 72b9b68b..56b18436 100644 --- a/cinelerra-5.1/cinelerra/mainmenu.C +++ b/cinelerra-5.1/cinelerra/mainmenu.C @@ -118,8 +118,8 @@ void MainMenu::create_objects() filemenu->add_item(saveas = new SaveAs(mwindow)); save->create_objects(saveas); saveas->set_mainmenu(this); - SaveProject *save_project; - filemenu->add_item(save_project = new SaveProject(mwindow)); + filemenu->add_item(new SaveProject(mwindow)); + filemenu->add_item(new SaveSession(mwindow)); filemenu->add_item(record_menu_item = new RecordMenuItem(mwindow)); #ifdef HAVE_DVB @@ -174,11 +174,13 @@ void MainMenu::create_objects() keyframemenu->add_item(new CopyKeyframes(mwindow)); keyframemenu->add_item(new PasteKeyframes(mwindow)); keyframemenu->add_item(new ClearKeyframes(mwindow)); - keyframemenu->add_item(new StraightenKeyframes(mwindow)); - keyframemenu->add_item(new BendKeyframes(mwindow)); + keyframemenu->add_item(set_auto_curves = new SetAutomationCurveMode(mwindow)); + set_auto_curves->create_objects(); keyframemenu->add_item(keyframe_curve_type = new KeyframeCurveType(mwindow)); keyframe_curve_type->create_objects(); keyframe_curve_type->update(mwindow->edl->local_session->floatauto_type); + keyframemenu->add_item(keyframe_create = new KeyframeCreate(mwindow)); + keyframe_create->create_objects(); keyframemenu->add_item(new BC_MenuItem("-")); keyframemenu->add_item(new CopyDefaultKeyframe(mwindow)); keyframemenu->add_item(new PasteDefaultKeyframe(mwindow)); @@ -205,13 +207,13 @@ void MainMenu::create_objects() add_menu(trackmenu = new BC_Menu(_("Tracks"))); trackmenu->add_item(new MoveTracksUp(mwindow)); trackmenu->add_item(new MoveTracksDown(mwindow)); + trackmenu->add_item(new RollTracksUp(mwindow)); + trackmenu->add_item(new RollTracksDown(mwindow)); trackmenu->add_item(new DeleteTracks(mwindow)); trackmenu->add_item(new DeleteFirstTrack(mwindow)); trackmenu->add_item(new DeleteLastTrack(mwindow)); trackmenu->add_item(new ConcatenateTracks(mwindow)); trackmenu->add_item(new AlignTimecodes(mwindow)); - trackmenu->add_item(new SwapTracksUp(mwindow)); - trackmenu->add_item(new SwapTracksDown(mwindow)); AppendTracks *append_tracks; trackmenu->add_item(append_tracks = new AppendTracks(mwindow)); append_tracks->create_objects(); @@ -636,7 +638,7 @@ int DumpUndo::handle_event() // ================================================= edit -Undo::Undo(MWindow *mwindow) : BC_MenuItem(_("Undo"), "z", 'z') +Undo::Undo(MWindow *mwindow) : BC_MenuItem(_("Undo"), "z or Ctrl-z", 'z') { this->mwindow = mwindow; } @@ -732,36 +734,40 @@ int ClearKeyframes::handle_event() } - -StraightenKeyframes::StraightenKeyframes(MWindow *mwindow) - : BC_MenuItem(_("Change to linear")) +SetAutomationCurveItem::SetAutomationCurveItem(SetAutomationCurveMode *set_curve_mode, int id) + : BC_MenuItem(FloatAuto::curve_name(id)) { - this->mwindow = mwindow; + this->set_curve_mode = set_curve_mode; + this->id = id; } -int StraightenKeyframes::handle_event() +int SetAutomationCurveItem::handle_event() { - mwindow->set_automation_mode(FloatAuto::LINEAR); + set_curve_mode->mwindow->set_automation_mode((FloatAuto::t_mode)id); return 1; } +SetAutoCurveModeMenu::SetAutoCurveModeMenu(SetAutomationCurveMode *curve_mode) +: BC_SubMenu() +{ + this->curve_mode = curve_mode; +} - - -BendKeyframes::BendKeyframes(MWindow *mwindow) - : BC_MenuItem(_("Change to smooth")) +SetAutomationCurveMode::SetAutomationCurveMode(MWindow *mwindow) + : BC_MenuItem(_("Set curve modes...")) { this->mwindow = mwindow; + curve_mode_menu = 0; } -int BendKeyframes::handle_event() +void SetAutomationCurveMode::create_objects() { - mwindow->set_automation_mode(FloatAuto::SMOOTH); - return 1; + add_submenu(curve_mode_menu = new SetAutoCurveModeMenu(this)); + for( int id=FloatAuto::SMOOTH; id<=FloatAuto::BUMP; ++id ) + curve_mode_menu->add_item(new SetAutomationCurveItem(this, id)); } - KeyframeCurveType::KeyframeCurveType(MWindow *mwindow) : BC_MenuItem(_("Create curve type...")) { @@ -775,7 +781,7 @@ KeyframeCurveType::~KeyframeCurveType() void KeyframeCurveType::create_objects() { add_submenu(curve_menu = new KeyframeCurveTypeMenu(this)); - for( int i=FloatAuto::SMOOTH; i<=FloatAuto::FREE; ++i ) { + for( int i=FloatAuto::SMOOTH; i<=FloatAuto::BUMP; ++i ) { KeyframeCurveTypeItem *curve_type_item = new KeyframeCurveTypeItem(i, this); curve_menu->add_submenuitem(curve_type_item); } @@ -821,6 +827,63 @@ int KeyframeCurveTypeItem::handle_event() } +KeyframeCreateItem::KeyframeCreateItem(KeyframeCreate *keyframe_create, + const char *text, int mask) + : BC_MenuItem(text) +{ + this->keyframe_create = keyframe_create; + this->mask = mask; +} + +int KeyframeCreateItem::handle_event() +{ + MWindow *mwindow = keyframe_create->mwindow; + int mode = mwindow->edl->local_session->floatauto_type; + int mask = this->mask; + if( !mask ) { // visible + int *autos = mwindow->edl->session->auto_conf->autos; + int modes = (1<>=1, ++i ) { + if( !(modes & 1) ) continue; + if( autos[i] ) mask |= (1<create_keyframes(mask, mode); + return 1; +} + +KeyframeCreateMenu::KeyframeCreateMenu(KeyframeCreate *keyframe_create) +: BC_SubMenu() +{ + this->keyframe_create = keyframe_create; +} + +KeyframeCreate::KeyframeCreate(MWindow *mwindow) + : BC_MenuItem(_("Create keyframes...")) +{ + this->mwindow = mwindow; + keyframe_create_menu = 0; +} + +void KeyframeCreate::create_objects() +{ + add_submenu(keyframe_create_menu = new KeyframeCreateMenu(this)); + keyframe_create_menu->add_item(new KeyframeCreateItem(this, _("Visible"), 0)); + keyframe_create_menu->add_item(new KeyframeCreateItem(this, _("Fade"), + (1<add_item(new KeyframeCreateItem(this, _("Speed"), + (1<add_item(new KeyframeCreateItem(this, _("Camera XYZ"), + (7<add_item(new KeyframeCreateItem(this, _("Projector XYZ"), + (7<add_item(new KeyframeCreateItem(this, _("Fade+Speed+XYZ"), + (1<mwindow = mwindow; + this->mwindow = mwindow; + set_shift(); } int MoveTracksDown::handle_event() @@ -1293,30 +1357,33 @@ int MoveTracksDown::handle_event() } -SwapTracksUp::SwapTracksUp(MWindow *mwindow) - : BC_MenuItem(_("Swap tracks up"), 0, UP) +RollTracksUp::RollTracksUp(MWindow *mwindow) + : BC_MenuItem(_("Roll tracks up"), _("Ctrl-Shift-Up"), UP) { this->mwindow = mwindow; + set_ctrl(); set_shift(); } -int SwapTracksUp::handle_event() +int RollTracksUp::handle_event() { if( mwindow->session->current_operation == NO_OPERATION ) - mwindow->swap_tracks_up(); + mwindow->roll_tracks_up(); return 1; } -SwapTracksDown::SwapTracksDown(MWindow *mwindow) - : BC_MenuItem(_("Swap tracks down"), 0, DOWN) +RollTracksDown::RollTracksDown(MWindow *mwindow) + : BC_MenuItem(_("Roll tracks down"), _("Ctrl-Shift-Down"), DOWN) { - set_shift(); this->mwindow = mwindow; + this->mwindow = mwindow; + set_ctrl(); + set_shift(); } -int SwapTracksDown::handle_event() +int RollTracksDown::handle_event() { if( mwindow->session->current_operation == NO_OPERATION ) - mwindow->swap_tracks_down(); + mwindow->roll_tracks_down(); return 1; } @@ -1510,10 +1577,11 @@ int ScrubSpeed::handle_event() } SaveSettingsNow::SaveSettingsNow(MWindow *mwindow) - : BC_MenuItem(_("Save settings now"),_("Ctrl-s"),'s') + : BC_MenuItem(_("Save settings now"),_("Ctrl-Shift-S"),'S') { this->mwindow = mwindow; set_ctrl(1); + set_shift(1); } int SaveSettingsNow::handle_event() @@ -1541,7 +1609,7 @@ ShowVWindow::ShowVWindow(MWindow *mwindow) int ShowVWindow::handle_event() { mwindow->gui->unlock_window(); - mwindow->show_vwindow(); + mwindow->show_vwindow(1); mwindow->gui->lock_window("ShowVWindow::handle_event"); return 1; }