X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ffolderlistmenu.C;h=51150a71494be5811872f68110673bf5b3268522;hb=a95193c3fd88733d184f2d460eca1fe6ddf8af28;hp=823c9f3105df2c85e5a53e40f161c6ac887642de;hpb=3ac72077bee819333ea9e8c3c3307b529ecf3647;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/folderlistmenu.C b/cinelerra-5.1/cinelerra/folderlistmenu.C index 823c9f31..51150a71 100644 --- a/cinelerra-5.1/cinelerra/folderlistmenu.C +++ b/cinelerra-5.1/cinelerra/folderlistmenu.C @@ -25,6 +25,7 @@ #include "edl.h" #include "edlsession.h" #include "language.h" +#include "mainsession.h" #include "mwindow.h" @@ -41,8 +42,16 @@ FolderListMenu::~FolderListMenu() void FolderListMenu::create_objects() { + BC_MenuItem *menu_item; + BC_SubMenu *submenu; add_item(format = new FolderListFormat(mwindow, this)); add_item(new FolderListSort(mwindow, this)); + add_item(menu_item = new BC_MenuItem(_("Folder..."))); + menu_item->add_submenu(submenu = new BC_SubMenu()); + submenu->add_submenuitem(new FolderListNew(mwindow, this, _("New Media"), 0)); + submenu->add_submenuitem(new FolderListNew(mwindow, this, _("New Clips"), 1)); + submenu->add_submenuitem(new FolderListModify(mwindow, this)); + submenu->add_submenuitem(new FolderListDelete(mwindow, this)); update_titles(); } @@ -92,3 +101,66 @@ int FolderListSort::handle_event() return 1; } +FolderListNew::FolderListNew(MWindow *mwindow, FolderListMenu *menu, + const char *text, int is_clips) + : BC_MenuItem(text) +{ + this->mwindow = mwindow; + this->menu = menu; + this->is_clips = is_clips; +} + +int FolderListNew::handle_event() +{ + int cx, cy, cw = 320, ch = 120; + menu->gui->get_abs_cursor(cx, cy); + if( (cx-=cw/2) < 50 ) cx = 50; + if( (cy-=ch/2) < 50 ) cy = 50; + menu->gui->new_folder_thread->start(cx, cy, cw, ch, is_clips); + return 1; +} + +FolderListModify::FolderListModify(MWindow *mwindow, FolderListMenu *menu) + : BC_MenuItem(_("Modify folder")) +{ + this->mwindow = mwindow; + this->menu = menu; +} + +int FolderListModify::handle_event() +{ + int awindow_folder = mwindow->edl->session->awindow_folder; + BinFolder *folder = mwindow->edl->get_folder(awindow_folder); + if( folder ) { + int bw = mwindow->session->bwindow_w; + int bh = mwindow->session->bwindow_h; + int cx, cy; + menu->gui->get_abs_cursor(cx, cy); + if( (cx-=bw/2) < 50 ) cx = 50; + if( (cy-=bh/2) < 50 ) cy = 50; + menu->gui->modify_folder_thread->start(folder, cx, cy, bw, bh); + } + return 1; +} + +FolderListDelete::FolderListDelete(MWindow *mwindow, FolderListMenu *menu) + : BC_MenuItem(_("Delete folder")) +{ + this->mwindow = mwindow; + this->menu = menu; +} + +int FolderListDelete::handle_event() +{ + AssetPicon *picon = (AssetPicon *)menu->gui->folder_list->get_selection(0, 0); + if( picon && picon->foldernum >= AWINDOW_USER_FOLDERS ) { + int foldernum = picon->foldernum; + BinFolder *folder = mwindow->edl->get_folder(foldernum); + mwindow->delete_folder(folder->title); + if( mwindow->edl->session->awindow_folder == foldernum ) + mwindow->edl->session->awindow_folder = AW_MEDIA_FOLDER; + mwindow->awindow->gui->async_update_assets(); + } + return 1; +} +