X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmainmenu.C;h=0ec9cf672a87ab07dcbd6ca213c6b685b1a06080;hb=9a75aafbc51be29b49351a51e9084bb34d255c0d;hp=f33a5c74fd37f9afe6b3d71dd5f339bac95ab45d;hpb=44f0242e0f313fd1b49675c697629b73dc260d21;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/mainmenu.C b/cinelerra-5.1/cinelerra/mainmenu.C index f33a5c74..0ec9cf67 100644 --- a/cinelerra-5.1/cinelerra/mainmenu.C +++ b/cinelerra-5.1/cinelerra/mainmenu.C @@ -28,6 +28,7 @@ #include "bdcreate.h" #include "cache.h" #include "channelinfo.h" +#include "convert.h" #include "cplayback.h" #include "cropvideo.h" #include "cwindow.h" @@ -36,6 +37,7 @@ #include "dvdcreate.h" #include "edl.h" #include "edlsession.h" +#include "exportedl.h" #include "file.h" #include "filesystem.h" #include "filexml.h" @@ -77,7 +79,8 @@ #include "transportque.h" #include "viewmenu.h" #include "zoombar.h" -#include "exportedl.h" +#include "zwindow.h" +#include "zwindowgui.h" #include @@ -218,6 +221,9 @@ void MainMenu::create_objects() ProxyMenuItem *proxy; settingsmenu->add_item(proxy = new ProxyMenuItem(mwindow)); proxy->create_objects(); + ConvertMenuItem *convert; + settingsmenu->add_item(convert = new ConvertMenuItem(mwindow)); + convert->create_objects(); mwindow->preferences_thread = preferences->thread; settingsmenu->add_item(cursor_on_frames = new CursorOnFrames(mwindow)); settingsmenu->add_item(labels_follow_edits = new LabelsFollowEdits(mwindow)); @@ -945,9 +951,7 @@ Clear::Clear(MWindow *mwindow) int Clear::handle_event() { 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; } @@ -1243,8 +1247,9 @@ int DeleteFirstTrack::handle_event() } DeleteLastTrack::DeleteLastTrack(MWindow *mwindow) - : BC_MenuItem(_("Delete last track"), "d", 'd') + : BC_MenuItem(_("Delete last track"), "Ctrl-d", 'd') { + set_ctrl(1); this->mwindow = mwindow; } @@ -1504,7 +1509,9 @@ ShowVWindow::ShowVWindow(MWindow *mwindow) } int ShowVWindow::handle_event() { + mwindow->gui->unlock_window(); mwindow->show_vwindow(); + mwindow->gui->lock_window("ShowVWindow::handle_event"); return 1; } @@ -1516,7 +1523,9 @@ ShowAWindow::ShowAWindow(MWindow *mwindow) } int ShowAWindow::handle_event() { + mwindow->gui->unlock_window(); mwindow->show_awindow(); + mwindow->gui->lock_window("ShowAWindow::handle_event"); return 1; } @@ -1528,7 +1537,9 @@ ShowCWindow::ShowCWindow(MWindow *mwindow) } int ShowCWindow::handle_event() { + mwindow->gui->unlock_window(); mwindow->show_cwindow(); + mwindow->gui->lock_window("ShowCWindow::handle_event"); return 1; } @@ -1543,10 +1554,12 @@ ShowGWindow::ShowGWindow(MWindow *mwindow) int ShowGWindow::handle_event() { if( mwindow->session->current_operation == NO_OPERATION ) { + mwindow->gui->unlock_window(); if( !mwindow->session->show_gwindow ) mwindow->show_gwindow(); else mwindow->hide_gwindow(); + mwindow->gui->lock_window("ShowGWindow::handle_event"); set_checked(mwindow->session->show_gwindow); } return 1; @@ -1561,7 +1574,9 @@ ShowLWindow::ShowLWindow(MWindow *mwindow) } int ShowLWindow::handle_event() { + mwindow->gui->unlock_window(); mwindow->show_lwindow(); + mwindow->gui->lock_window("ShowLWindow::handle_event"); return 1; } @@ -1625,45 +1640,98 @@ void MixerItems::create_objects() { BC_SubMenu *mixer_submenu = new BC_SubMenu(); add_submenu(mixer_submenu); - mixer_submenu->add_submenuitem(new MixerViewer(mwindow)); - mixer_submenu->add_submenuitem(new TileMixers(mwindow)); - mixer_submenu->add_submenuitem(new AlignMixers(mwindow)); + mixer_submenu->add_submenuitem(new MixerViewer(this)); + mixer_submenu->add_submenuitem(new TileMixers(this)); + mixer_submenu->add_submenuitem(new AlignMixers(this)); } -MixerViewer::MixerViewer(MWindow *mwindow) - : BC_MenuItem(_("Mixer Viewer"), _("Shift-M"), 'M') +int MixerItems::activate_submenu() +{ + BC_SubMenu *mixer_submenu = (BC_SubMenu *)get_submenu(); + int k = mixer_submenu->total_items(); + while( --k >= 0 ) { + MixerItem *mixer_item = (MixerItem *)mixer_submenu->get_item(k); + if( mixer_item->idx < 0 ) continue; + mixer_submenu->del_item(mixer_item); + } + int n = mwindow->edl->mixers.size(); + for( int i=0; iedl->mixers[i]; + if( !mixer ) continue; + MixerItem *mixer_item = new MixerItem(this, mixer->title, mixer->idx); + mixer_submenu->add_submenuitem(mixer_item); + } + return BC_MenuItem::activate_submenu(); +} + +MixerItem::MixerItem(MixerItems *mixer_items, const char *text, int idx) + : BC_MenuItem(text) +{ + this->mixer_items = mixer_items; + this->idx = idx; +} + +MixerItem::MixerItem(MixerItems *mixer_items, const char *text, const char *hotkey_text, int hotkey) + : BC_MenuItem(text, hotkey_text, hotkey) +{ + this->mixer_items = mixer_items; + this->idx = -1; +} + +int MixerItem::handle_event() +{ + if( idx < 0 ) return 0; + MWindow *mwindow = mixer_items->mwindow; + Mixer *mixer = mwindow->edl->mixers.get_mixer(idx); + if( !mixer ) return 0; + ZWindow *zwindow = mwindow->get_mixer(idx); + if( !zwindow ) + zwindow = mwindow->get_mixer(mixer); + if( !zwindow->zgui ) { + zwindow->set_title(mixer->title); + zwindow->start(); + } + zwindow->zgui->lock_window("MixerItem::handle_event"); + zwindow->zgui->raise_window(); + zwindow->zgui->unlock_window(); + mwindow->refresh_mixers(); + return 1; +} + +MixerViewer::MixerViewer(MixerItems *mixer_items) + : MixerItem(mixer_items, _("Mixer Viewer"), _("Shift-M"), 'M') { - this->mwindow = mwindow; set_shift(1); } int MixerViewer::handle_event() { + MWindow *mwindow = mixer_items->mwindow; mwindow->start_mixer(); return 1; } -TileMixers::TileMixers(MWindow *mwindow) - : BC_MenuItem(_("Tile mixers"), "Alt-t", 't') +TileMixers::TileMixers(MixerItems *mixer_items) + : MixerItem(mixer_items, _("Tile mixers"), "Alt-t", 't') { - this->mwindow = mwindow; set_alt(); } int TileMixers::handle_event() { + MWindow *mwindow = mixer_items->mwindow; mwindow->tile_mixers(); return 1; } -AlignMixers::AlignMixers(MWindow *mwindow) - : BC_MenuItem(_("Align mixers")) +AlignMixers::AlignMixers(MixerItems *mixer_items) + : MixerItem(mixer_items, _("Align mixers"), "", 0) { - this->mwindow = mwindow; } int AlignMixers::handle_event() { + MWindow *mwindow = mixer_items->mwindow; int wx, wy; mwindow->gui->get_abs_cursor(wx, wy); mwindow->mixers_align->start_dialog(wx, wy); @@ -1857,7 +1925,7 @@ int LoadLayoutNameText::handle_event() } LoadLayoutConfirm::LoadLayoutConfirm(LoadLayoutDialog *layout_dialog, int x, int y) - : BC_Window(_(PROGRAM_NAME ": Layout"), x, y, 300,140, 300,140, 0) + : BC_Window(_(PROGRAM_NAME ": Layout"), x, y, xS(300),yS(140), xS(300),yS(140), 0) { this->layout_dialog = layout_dialog; } @@ -1868,20 +1936,22 @@ LoadLayoutConfirm::~LoadLayoutConfirm() void LoadLayoutConfirm::create_objects() { + int xs10 = xS(10), xs20 = xS(20); + int ys10 = yS(10); lock_window("LoadLayoutConfirm::create_objects"); - int x = 10, y = 10, pad = 10; + int x = xs10, y = ys10; BC_SubMenu *layout_submenu = layout_dialog->load_layout->get_submenu(); LoadLayoutItem *item = (LoadLayoutItem *) layout_submenu->get_item(layout_dialog->idx); BC_Title *title; add_subwindow(title = new BC_Title(x, y, _("Layout Name:"))); - int x1 = x + title->get_w() + 10; + int x1 = x + title->get_w() + xs10; add_subwindow(title = new BC_Title(x1, y, item->get_text())); - y += title->get_h() + pad; + y += title->get_h() + ys10; add_subwindow(name_text = new LoadLayoutNameText(this, - x, y, get_w()-x-20, item->layout_text)); + x, y, get_w()-x-xs20, item->layout_text)); y += name_text->get_h(); - x1 = x + 80; + x1 = x + xS(80); char legend[BCTEXTLEN]; sprintf(legend, _("a-z,A-Z,0-9_ only, %dch max"), LAYOUT_NAME_LEN); add_subwindow(title = new BC_Title(x1, y, legend));