X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ffolderlistmenu.C;h=51150a71494be5811872f68110673bf5b3268522;hb=02a79c110b1bce1d500849c82b2098863cd60424;hp=0eb39c2a77a1a766108fe3871f655851c4175a83;hpb=4b6c39e6cf4a3fd9c1b347db6de686ab55d6cac8;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/folderlistmenu.C b/cinelerra-5.1/cinelerra/folderlistmenu.C index 0eb39c2a..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,11 +42,19 @@ 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(); } - void FolderListMenu::update_titles() { format->set_text(mwindow->edl->session->folderlist_format == FOLDERS_TEXT ? @@ -53,7 +62,6 @@ void FolderListMenu::update_titles() } - FolderListFormat::FolderListFormat(MWindow *mwindow, FolderListMenu *menu) : BC_MenuItem("") { @@ -79,3 +87,80 @@ int FolderListFormat::handle_event() return 1; } + +FolderListSort::FolderListSort(MWindow *mwindow, FolderListMenu *menu) + : BC_MenuItem(_("Sort items")) +{ + this->mwindow = mwindow; + this->menu = menu; +} + +int FolderListSort::handle_event() +{ + mwindow->awindow->gui->sort_folders(); + 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; +} +