X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmainmenu.C;h=6023c5e56f2998489bac98b12a109118b2ac65b0;hb=8a2d79c16c6793d7d3483e9a74205569228ca0cc;hp=a94fb5894819aa649def542713bb147a18b5bc3f;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/mainmenu.C b/cinelerra-5.1/cinelerra/mainmenu.C index a94fb589..6023c5e5 100644 --- a/cinelerra-5.1/cinelerra/mainmenu.C +++ b/cinelerra-5.1/cinelerra/mainmenu.C @@ -36,6 +36,7 @@ #include "dvdcreate.h" #include "edl.h" #include "edlsession.h" +#include "file.h" #include "filesystem.h" #include "filexml.h" #include "floatauto.h" @@ -272,9 +273,15 @@ void MainMenu::create_objects() 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)); + windowmenu->add_item(new BC_MenuItem("-")); + + windowmenu->add_item(new TileWindows(mwindow,_("Default positions"),-1,_("Ctrl-P"),'p')); + windowmenu->add_item(load_layout = new LoadLayout(mwindow, _("Load layout..."),LAYOUT_LOAD)); + load_layout->create_objects(); + windowmenu->add_item(save_layout = new LoadLayout(mwindow, _("Save layout..."),LAYOUT_SAVE)); + save_layout->create_objects(); } int MainMenu::load_defaults(BC_Hash *defaults) @@ -1568,3 +1575,52 @@ int TileMixers::handle_event() return 1; } + +LoadLayoutItem::LoadLayoutItem(LoadLayout *load_layout, const char *text, int no, int hotkey) + : BC_MenuItem(text, "", hotkey) +{ + this->no = no; + this->load_layout = load_layout; + if( hotkey ) { + char hot_txt[BCSTRLEN]; + sprintf(hot_txt, _("CtlSft+F%d"), hotkey-KEY_F1+1); + set_ctrl(); set_shift(); + set_hotkey_text(hot_txt); + } +} + +int LoadLayoutItem::handle_event() +{ + MWindow *mwindow = load_layout->mwindow; + switch( load_layout->action ) { + case LAYOUT_LOAD: + mwindow->load_layout(no); + break; + case LAYOUT_SAVE: + mwindow->save_layout(no); + break; + } + return 1; +} + +LoadLayout::LoadLayout(MWindow *mwindow, const char *text, int action) + : BC_MenuItem(text) +{ + this->mwindow = mwindow; + this->action = action; +} + +void LoadLayout::create_objects() +{ + BC_SubMenu *layout_submenu = new BC_SubMenu(); + add_submenu(layout_submenu); + for( int i=1; i<=4; ++i ) { + char text[BCSTRLEN]; + sprintf(text, _("Layout %d"), i); + LoadLayoutItem *load_layout_item = + new LoadLayoutItem(this, text, i, + action==LAYOUT_LOAD ? KEY_F1-1+i : 0); + layout_submenu->add_submenuitem(load_layout_item); + } +} +