X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmainmenu.C;h=0bd56ec3525664c91d1e05448b52dabcdd84ad1e;hp=7fa7b747282d1ec5508ea56c3366aa80976fafc5;hb=502b6f3b6fd04f6b01c6d70dcb81aa304dd0db1c;hpb=190b4810ec184c74ceab3fcd6faf09a91c92c53c diff --git a/cinelerra-5.1/cinelerra/mainmenu.C b/cinelerra-5.1/cinelerra/mainmenu.C index 7fa7b747..0bd56ec3 100644 --- a/cinelerra-5.1/cinelerra/mainmenu.C +++ b/cinelerra-5.1/cinelerra/mainmenu.C @@ -60,6 +60,7 @@ #include "patchbay.h" #include "playbackengine.h" #include "preferences.h" +#include "proxy.h" #include "preferencesthread.h" #include "quit.h" #include "record.h" @@ -97,7 +98,7 @@ void MainMenu::create_objects() total_loads = 0; add_menu(filemenu = new BC_Menu(_("File"))); - filemenu->add_item(new_project = new New(mwindow)); + filemenu->add_item(new_project = new NewProject(mwindow)); new_project->create_objects(); // file loaders @@ -112,9 +113,13 @@ void MainMenu::create_objects() save->create_objects(saveas); saveas->set_mainmenu(this); filemenu->add_item(record_menu_item = new RecordMenuItem(mwindow)); +#ifdef HAVE_DVB filemenu->add_item(new ChannelScan(mwindow)); +#endif +#ifdef HAVE_COMMERCIAL if( mwindow->has_commercials() ) filemenu->add_item(new DbWindowScan(mwindow)); +#endif filemenu->add_item(new SubttlSWin(mwindow)); filemenu->add_item(render = new RenderItem(mwindow)); @@ -163,10 +168,9 @@ void MainMenu::create_objects() keyframemenu->add_item(new ClearKeyframes(mwindow)); keyframemenu->add_item(new StraightenKeyframes(mwindow)); keyframemenu->add_item(new BendKeyframes(mwindow)); - keyframemenu->add_item(keyframe_curve_type = - new KeyframeCurveType(mwindow, - mwindow->edl->local_session->floatauto_type)); + 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(new BC_MenuItem("-")); keyframemenu->add_item(new CopyDefaultKeyframe(mwindow)); keyframemenu->add_item(new PasteDefaultKeyframe(mwindow)); @@ -196,12 +200,18 @@ void MainMenu::create_objects() trackmenu->add_item(new DeleteTracks(mwindow)); trackmenu->add_item(new DeleteTrack(mwindow)); trackmenu->add_item(new ConcatenateTracks(mwindow)); + AppendTracks *append_tracks; + trackmenu->add_item(append_tracks = new AppendTracks(mwindow)); + append_tracks->create_objects(); trackmenu->add_item(new AddSubttlTrack(mwindow)); add_menu(settingsmenu = new BC_Menu(_("Settings"))); settingsmenu->add_item(new SetFormat(mwindow)); settingsmenu->add_item(preferences = new PreferencesMenuitem(mwindow)); + ProxyMenuItem *proxy; + settingsmenu->add_item(proxy = new ProxyMenuItem(mwindow)); + proxy->create_objects(); mwindow->preferences_thread = preferences->thread; settingsmenu->add_item(labels_follow_edits = new LabelsFollowEdits(mwindow)); settingsmenu->add_item(plugins_follow_edits = new PluginsFollowEdits(mwindow)); @@ -211,7 +221,7 @@ void MainMenu::create_objects() settingsmenu->add_item(new BC_MenuItem("-")); settingsmenu->add_item(new SaveSettingsNow(mwindow)); settingsmenu->add_item(loop_playback = new LoopPlayback(mwindow)); - settingsmenu->add_item(new SetBRenderStart(mwindow)); + settingsmenu->add_item(brender_active = new SetBRenderActive(mwindow)); // set scrubbing speed // ScrubSpeed *scrub_speed; // settingsmenu->add_item(scrub_speed = new ScrubSpeed(mwindow)); @@ -251,6 +261,8 @@ void MainMenu::create_objects() windowmenu->add_item(new BC_MenuItem("-")); windowmenu->add_item(split_x = new SplitX(mwindow)); windowmenu->add_item(split_y = new SplitY(mwindow)); + windowmenu->add_item(mixer_viewer = new MixerViewer(mwindow)); + windowmenu->add_item(new TileMixers(mwindow)); windowmenu->add_item(new TileWindows(mwindow,_("Default positions"),-1,_("Ctrl-P"),'p')); windowmenu->add_item(new TileWindows(mwindow,_("Tile left"),0)); windowmenu->add_item(new TileWindows(mwindow,_("Tile right"),1)); @@ -615,7 +627,8 @@ Undo::Undo(MWindow *mwindow) : BC_MenuItem(_("Undo"), "z", 'z') } int Undo::handle_event() { - mwindow->undo_entry(mwindow->gui); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->undo_entry(mwindow->gui); return 1; } int Undo::update_caption(const char *new_caption) @@ -635,8 +648,8 @@ Redo::Redo(MWindow *mwindow) : BC_MenuItem(_("Redo"), _("Shift-Z"), 'Z') int Redo::handle_event() { - mwindow->redo_entry(mwindow->gui); - + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->redo_entry(mwindow->gui); return 1; } int Redo::update_caption(const char *new_caption) @@ -656,7 +669,8 @@ CutKeyframes::CutKeyframes(MWindow *mwindow) int CutKeyframes::handle_event() { - mwindow->cut_automation(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->cut_automation(); return 1; } @@ -669,7 +683,8 @@ CopyKeyframes::CopyKeyframes(MWindow *mwindow) int CopyKeyframes::handle_event() { - mwindow->copy_automation(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->copy_automation(); return 1; } @@ -682,7 +697,8 @@ PasteKeyframes::PasteKeyframes(MWindow *mwindow) int PasteKeyframes::handle_event() { - mwindow->paste_automation(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->paste_automation(); return 1; } @@ -695,7 +711,8 @@ ClearKeyframes::ClearKeyframes(MWindow *mwindow) int ClearKeyframes::handle_event() { - mwindow->clear_automation(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->clear_automation(); return 1; } @@ -730,11 +747,10 @@ int BendKeyframes::handle_event() -KeyframeCurveType::KeyframeCurveType(MWindow *mwindow, int curve_type) +KeyframeCurveType::KeyframeCurveType(MWindow *mwindow) : BC_MenuItem(_("Create curve type...")) { this->mwindow = mwindow; - this->curve_type = curve_type; this->curve_menu = 0; } KeyframeCurveType::~KeyframeCurveType() @@ -743,26 +759,28 @@ KeyframeCurveType::~KeyframeCurveType() void KeyframeCurveType::create_objects() { - curve_menu = new KeyframeCurveTypeMenu(this); - mwindow->gui->add_subwindow(curve_menu); + add_submenu(curve_menu = new KeyframeCurveTypeMenu(this)); for( int i=FloatAuto::SMOOTH; i<=FloatAuto::FREE; ++i ) { - curve_menu->add_item(new KeyframeCurveTypeItem(i)); + KeyframeCurveTypeItem *curve_type_item = new KeyframeCurveTypeItem(i, this); + curve_menu->add_submenuitem(curve_type_item); } } -int KeyframeCurveType::handle_event() +void KeyframeCurveType::update(int curve_type) { for( int i=0; itotal_items(); ++i ) { - KeyframeCurveTypeItem *curve_type_item = - (KeyframeCurveTypeItem *)curve_menu->get_item(i); + KeyframeCurveTypeItem *curve_type_item = (KeyframeCurveTypeItem *)curve_menu->get_item(i); curve_type_item->set_checked(curve_type_item->type == curve_type); } - curve_menu->activate_menu(); +} + +int KeyframeCurveType::handle_event() +{ return 1; } KeyframeCurveTypeMenu::KeyframeCurveTypeMenu(KeyframeCurveType *menu_item) - : BC_PopupMenu(0, 0, 0, "", 0) + : BC_SubMenu() { this->menu_item = menu_item; } @@ -770,10 +788,11 @@ KeyframeCurveTypeMenu::~KeyframeCurveTypeMenu() { } -KeyframeCurveTypeItem::KeyframeCurveTypeItem(int type) +KeyframeCurveTypeItem::KeyframeCurveTypeItem(int type, KeyframeCurveType *main_item) : BC_MenuItem(FloatAuto::curve_name(type)) { this->type = type; + this->main_item = main_item; } KeyframeCurveTypeItem::~KeyframeCurveTypeItem() { @@ -781,9 +800,8 @@ KeyframeCurveTypeItem::~KeyframeCurveTypeItem() int KeyframeCurveTypeItem::handle_event() { - KeyframeCurveType *menu_item = ((KeyframeCurveTypeMenu *)get_popup_menu())->menu_item; - menu_item->curve_type = type; - menu_item->mwindow->set_keyframe_type(type); + main_item->update(type); + main_item->mwindow->set_keyframe_type(type); return 1; } @@ -797,7 +815,8 @@ CutDefaultKeyframe::CutDefaultKeyframe(MWindow *mwindow) int CutDefaultKeyframe::handle_event() { - mwindow->cut_default_keyframe(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->cut_default_keyframe(); return 1; } @@ -810,7 +829,8 @@ CopyDefaultKeyframe::CopyDefaultKeyframe(MWindow *mwindow) int CopyDefaultKeyframe::handle_event() { - mwindow->copy_default_keyframe(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->copy_default_keyframe(); return 1; } @@ -823,12 +843,13 @@ PasteDefaultKeyframe::PasteDefaultKeyframe(MWindow *mwindow) int PasteDefaultKeyframe::handle_event() { - mwindow->paste_default_keyframe(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->paste_default_keyframe(); return 1; } ClearDefaultKeyframe::ClearDefaultKeyframe(MWindow *mwindow) - : BC_MenuItem(_("Clear default keyframe"), _("Alt-Del"), BACKSPACE) + : BC_MenuItem(_("Clear default keyframe"), _("Alt-Del"), DELETE) { set_alt(); this->mwindow = mwindow; @@ -836,19 +857,21 @@ ClearDefaultKeyframe::ClearDefaultKeyframe(MWindow *mwindow) int ClearDefaultKeyframe::handle_event() { - mwindow->clear_default_keyframe(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->clear_default_keyframe(); return 1; } Cut::Cut(MWindow *mwindow) - : BC_MenuItem(_("Cut"), "x", 'x') + : BC_MenuItem(_("Split | Cut"), "x", 'x') { this->mwindow = mwindow; } int Cut::handle_event() { - mwindow->cut(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->cut(); return 1; } @@ -860,7 +883,8 @@ Copy::Copy(MWindow *mwindow) int Copy::handle_event() { - mwindow->copy(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->copy(); return 1; } @@ -872,21 +896,24 @@ Paste::Paste(MWindow *mwindow) int Paste::handle_event() { - mwindow->paste(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->paste(); return 1; } Clear::Clear(MWindow *mwindow) - : BC_MenuItem(_("Clear"), _("Del"), BACKSPACE) + : BC_MenuItem(_("Clear"), _("Del"), DELETE) { this->mwindow = mwindow; } int Clear::handle_event() { - mwindow->cwindow->gui->lock_window("Clear::handle_event"); - mwindow->clear_entry(); - mwindow->cwindow->gui->unlock_window(); + if( mwindow->session->current_operation == NO_OPERATION ) { + mwindow->cwindow->gui->lock_window("Clear::handle_event"); + mwindow->clear_entry(); + mwindow->cwindow->gui->unlock_window(); + } return 1; } @@ -899,7 +926,8 @@ PasteSilence::PasteSilence(MWindow *mwindow) int PasteSilence::handle_event() { - mwindow->paste_silence(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->paste_silence(); return 1; } @@ -911,7 +939,8 @@ SelectAll::SelectAll(MWindow *mwindow) int SelectAll::handle_event() { - mwindow->select_all(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->select_all(); return 1; } @@ -957,7 +986,8 @@ MuteSelection::MuteSelection(MWindow *mwindow) int MuteSelection::handle_event() { - mwindow->mute_selection(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->mute_selection(); return 1; } @@ -995,7 +1025,8 @@ AddAudioTrack::AddAudioTrack(MWindow *mwindow) int AddAudioTrack::handle_event() { - mwindow->add_audio_track_entry(0, 0); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->add_audio_track_entry(0, 0); return 1; } @@ -1018,7 +1049,8 @@ DefaultATransition::DefaultATransition(MWindow *mwindow) int DefaultATransition::handle_event() { - mwindow->paste_audio_transition(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->paste_audio_transition(); return 1; } @@ -1062,7 +1094,8 @@ AddVideoTrack::AddVideoTrack(MWindow *mwindow) int AddVideoTrack::handle_event() { - mwindow->add_video_track_entry(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->add_video_track_entry(); return 1; } @@ -1102,7 +1135,8 @@ DefaultVTransition::DefaultVTransition(MWindow *mwindow) int DefaultVTransition::handle_event() { - mwindow->paste_video_transition(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->paste_video_transition(); return 1; } @@ -1141,7 +1175,8 @@ DeleteTrack::DeleteTrack(MWindow *mwindow) int DeleteTrack::handle_event() { - mwindow->delete_track(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->delete_track(); return 1; } @@ -1153,7 +1188,8 @@ MoveTracksUp::MoveTracksUp(MWindow *mwindow) int MoveTracksUp::handle_event() { - mwindow->move_tracks_up(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->move_tracks_up(); return 1; } @@ -1165,7 +1201,8 @@ MoveTracksDown::MoveTracksDown(MWindow *mwindow) int MoveTracksDown::handle_event() { - mwindow->move_tracks_down(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->move_tracks_down(); return 1; } @@ -1199,8 +1236,10 @@ LoopPlayback::LoopPlayback(MWindow *mwindow) int LoopPlayback::handle_event() { - mwindow->toggle_loop_playback(); - set_checked(mwindow->edl->local_session->loop_playback); + if( mwindow->session->current_operation == NO_OPERATION ) { + mwindow->toggle_loop_playback(); + set_checked(mwindow->edl->local_session->loop_playback); + } return 1; } @@ -1218,7 +1257,8 @@ AddSubttlTrack::AddSubttlTrack(MWindow *mwindow) int AddSubttlTrack::handle_event() { - mwindow->add_subttl_track_entry(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->add_subttl_track_entry(); return 1; } @@ -1230,33 +1270,30 @@ PasteSubttl::PasteSubttl(MWindow *mwindow) int PasteSubttl::handle_event() { - mwindow->gui->swindow->paste_subttl(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->gui->swindow->paste_subttl(); return 1; } - - - - -SetBRenderStart::SetBRenderStart(MWindow *mwindow) - : BC_MenuItem(_("Set background render")) +SetBRenderActive::SetBRenderActive(MWindow *mwindow) + : BC_MenuItem(_("Toggle background rendering"),_("Shift-G"),'G') { this->mwindow = mwindow; + set_shift(1); } -int SetBRenderStart::handle_event() +int SetBRenderActive::handle_event() { - mwindow->set_brender_start(); + if( mwindow->session->current_operation == NO_OPERATION ) { + int v = mwindow->brender_active ? 0 : 1; + set_checked(v); + mwindow->set_brender_active(v); + } return 1; } - - - - - LabelsFollowEdits::LabelsFollowEdits(MWindow *mwindow) : BC_MenuItem(_("Edit labels")) { @@ -1275,16 +1312,16 @@ int LabelsFollowEdits::handle_event() PluginsFollowEdits::PluginsFollowEdits(MWindow *mwindow) - : BC_MenuItem(_("Edit effects")) -{ - this->mwindow = mwindow; + : BC_MenuItem(_("Edit effects")) +{ + this->mwindow = mwindow; set_checked(mwindow->edl->session->plugins_follow_edits); } int PluginsFollowEdits::handle_event() { set_checked(get_checked() ^ 1); - mwindow->edl->session->plugins_follow_edits = get_checked(); + mwindow->edl->session->plugins_follow_edits = get_checked(); return 1; } @@ -1292,45 +1329,45 @@ int PluginsFollowEdits::handle_event() KeyframesFollowEdits::KeyframesFollowEdits(MWindow *mwindow) - : BC_MenuItem(_("Keyframes follow edits")) -{ - this->mwindow = mwindow; + : BC_MenuItem(_("Keyframes follow edits")) +{ + this->mwindow = mwindow; set_checked(mwindow->edl->session->autos_follow_edits); } int KeyframesFollowEdits::handle_event() -{ - mwindow->edl->session->autos_follow_edits ^= 1; +{ + mwindow->edl->session->autos_follow_edits ^= 1; set_checked(!get_checked()); return 1; } CursorOnFrames::CursorOnFrames(MWindow *mwindow) - : BC_MenuItem(_("Align cursor on frames")) -{ - this->mwindow = mwindow; + : BC_MenuItem(_("Align cursor on frames")) +{ + this->mwindow = mwindow; set_checked(mwindow->edl->session->cursor_on_frames); } int CursorOnFrames::handle_event() { - mwindow->edl->session->cursor_on_frames = !mwindow->edl->session->cursor_on_frames; + mwindow->edl->session->cursor_on_frames = !mwindow->edl->session->cursor_on_frames; set_checked(mwindow->edl->session->cursor_on_frames); return 1; } TypelessKeyframes::TypelessKeyframes(MWindow *mwindow) - : BC_MenuItem(_("Typeless keyframes")) -{ - this->mwindow = mwindow; + : BC_MenuItem(_("Typeless keyframes")) +{ + this->mwindow = mwindow; set_checked(mwindow->edl->session->typeless_keyframes); } int TypelessKeyframes::handle_event() { - mwindow->edl->session->typeless_keyframes = !mwindow->edl->session->typeless_keyframes; + mwindow->edl->session->typeless_keyframes = !mwindow->edl->session->typeless_keyframes; set_checked(mwindow->edl->session->typeless_keyframes); return 1; } @@ -1356,9 +1393,9 @@ int ScrubSpeed::handle_event() return 1; } -SaveSettingsNow::SaveSettingsNow(MWindow *mwindow) : BC_MenuItem(_("Save settings now")) -{ - this->mwindow = mwindow; +SaveSettingsNow::SaveSettingsNow(MWindow *mwindow) : BC_MenuItem(_("Save settings now")) +{ + this->mwindow = mwindow; } int SaveSettingsNow::handle_event() @@ -1415,14 +1452,21 @@ int ShowCWindow::handle_event() ShowGWindow::ShowGWindow(MWindow *mwindow) - : BC_MenuItem(_("Show Overlays")) + : BC_MenuItem(_("Show Overlays"), _("Ctrl-0"), '0') { this->mwindow = mwindow; + set_ctrl(1); set_checked(mwindow->session->show_gwindow); } int ShowGWindow::handle_event() { - mwindow->show_gwindow(); + if( mwindow->session->current_operation == NO_OPERATION ) { + if( !mwindow->session->show_gwindow ) + mwindow->show_gwindow(); + else + mwindow->hide_gwindow(); + set_checked(mwindow->session->show_gwindow); + } return 1; } @@ -1449,11 +1493,13 @@ TileWindows::TileWindows(MWindow *mwindow, const char *item_title, int config, } int TileWindows::handle_event() { - int window_config = config >= 0 ? config : - mwindow->session->window_config; - if( mwindow->tile_windows(window_config) ) { - mwindow->restart_status = 1; - mwindow->gui->set_done(0); + if( mwindow->session->current_operation == NO_OPERATION ) { + int window_config = config >= 0 ? config : + mwindow->session->window_config; + if( mwindow->tile_windows(window_config) ) { + mwindow->restart_status = 1; + mwindow->gui->set_done(0); + } } return 1; } @@ -1467,7 +1513,8 @@ SplitX::SplitX(MWindow *mwindow) } int SplitX::handle_event() { - mwindow->split_x(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->split_x(); return 1; } @@ -1480,8 +1527,35 @@ SplitY::SplitY(MWindow *mwindow) } int SplitY::handle_event() { - mwindow->split_y(); + if( mwindow->session->current_operation == NO_OPERATION ) + mwindow->split_y(); + return 1; +} + + +MixerViewer::MixerViewer(MWindow *mwindow) + : BC_MenuItem(_("Mixer Viewer"), _("Shift-M"), 'M') +{ + this->mwindow = mwindow; + set_shift(1); +} + +int MixerViewer::handle_event() +{ + mwindow->start_mixer(); return 1; } +TileMixers::TileMixers(MWindow *mwindow) + : BC_MenuItem(_("Tile mixers"), "Alt-t", 't') +{ + this->mwindow = mwindow; + set_alt(); +} + +int TileMixers::handle_event() +{ + mwindow->tile_mixers(); + return 1; +}