2 #include "assetpopup.h"
3 #include "assetremove.h"
5 #include "awindowgui.h"
6 #include "awindowmenu.h"
9 #include "cwindowgui.h"
12 #include "localsession.h"
13 #include "mainindexes.h"
14 #include "mainsession.h"
16 #include "mwindowgui.h"
19 #include "vwindowgui.h"
23 AssetPopup::AssetPopup(MWindow *mwindow, AWindowGUI *gui)
30 this->mwindow = mwindow;
34 AssetPopup::~AssetPopup()
38 void AssetPopup::create_objects()
40 add_item(format = new AssetListFormat(mwindow));
41 add_item(info = new AssetPopupInfo(mwindow, this));
42 add_item(new AssetPopupSort(mwindow, this));
43 add_item(index = new AssetPopupBuildIndex(mwindow, this));
44 add_item(view = new AssetPopupView(mwindow, this));
45 add_item(new AssetPopupPaste(mwindow, this));
46 add_item(new AssetMatchSize(mwindow, this));
47 add_item(new AssetPopupProjectRemove(mwindow, this));
48 add_item(new AssetPopupDiskRemove(mwindow, this));
51 void AssetPopup::paste_assets()
53 // Collect items into the drag vectors for temporary storage
54 gui->lock_window("AssetPopup::paste_assets");
55 mwindow->gui->lock_window("AssetPopup::paste_assets");
56 mwindow->cwindow->gui->lock_window("AssetPopup::paste_assets");
58 gui->collect_assets();
59 mwindow->paste_assets(mwindow->edl->local_session->get_selectionstart(1),
60 mwindow->edl->tracks->first);
63 mwindow->gui->unlock_window();
64 mwindow->cwindow->gui->unlock_window();
67 void AssetPopup::match_size()
69 // Collect items into the drag vectors for temporary storage
70 gui->collect_assets();
71 mwindow->gui->lock_window("AssetPopup::match_size");
72 mwindow->asset_to_size();
73 mwindow->gui->unlock_window();
76 int AssetPopup::update()
79 gui->collect_assets();
91 AssetPopupInfo::AssetPopupInfo(MWindow *mwindow, AssetPopup *popup)
92 : BC_MenuItem(_("Info..."))
94 this->mwindow = mwindow;
98 AssetPopupInfo::~AssetPopupInfo()
102 int AssetPopupInfo::handle_event()
104 if(mwindow->session->drag_assets->total)
106 if(mwindow->awindow->asset_edit->running() &&
107 mwindow->awindow->asset_edit->window)
109 mwindow->awindow->asset_edit->window->raise_window();
110 mwindow->awindow->asset_edit->window->flush();
114 mwindow->awindow->asset_edit->edit_asset(
115 mwindow->session->drag_assets->values[0]);
119 if(mwindow->session->drag_clips->total)
121 popup->gui->awindow->clip_edit->edit_clip(
122 mwindow->session->drag_clips->values[0]);
133 AssetPopupBuildIndex::AssetPopupBuildIndex(MWindow *mwindow, AssetPopup *popup)
134 : BC_MenuItem(_("Rebuild index"))
136 this->mwindow = mwindow;
140 AssetPopupBuildIndex::~AssetPopupBuildIndex()
144 int AssetPopupBuildIndex::handle_event()
146 //printf("AssetPopupBuildIndex::handle_event 1\n");
147 mwindow->rebuild_indices();
157 AssetPopupSort::AssetPopupSort(MWindow *mwindow, AssetPopup *popup)
158 : BC_MenuItem(_("Sort items"))
160 this->mwindow = mwindow;
164 AssetPopupSort::~AssetPopupSort()
168 int AssetPopupSort::handle_event()
170 mwindow->awindow->gui->sort_assets();
180 AssetPopupView::AssetPopupView(MWindow *mwindow, AssetPopup *popup)
181 : BC_MenuItem(_("View"))
183 this->mwindow = mwindow;
187 AssetPopupView::~AssetPopupView()
191 int AssetPopupView::handle_event()
193 mwindow->vwindow->gui->lock_window("AssetPopupView::handle_event");
195 if(mwindow->session->drag_assets->total)
196 mwindow->vwindow->change_source(
197 mwindow->session->drag_assets->values[0]);
199 if(mwindow->session->drag_clips->total)
200 mwindow->vwindow->change_source(
201 mwindow->session->drag_clips->values[0]);
203 mwindow->vwindow->gui->unlock_window();
213 AssetPopupPaste::AssetPopupPaste(MWindow *mwindow, AssetPopup *popup)
214 : BC_MenuItem(_("Paste"))
216 this->mwindow = mwindow;
220 AssetPopupPaste::~AssetPopupPaste()
224 int AssetPopupPaste::handle_event()
226 popup->paste_assets();
237 AssetMatchSize::AssetMatchSize(MWindow *mwindow, AssetPopup *popup)
238 : BC_MenuItem(_("Match project size"))
240 this->mwindow = mwindow;
244 AssetMatchSize::~AssetMatchSize()
248 int AssetMatchSize::handle_event()
267 AssetPopupProjectRemove::AssetPopupProjectRemove(MWindow *mwindow, AssetPopup *popup)
268 : BC_MenuItem(_("Remove from project"))
270 this->mwindow = mwindow;
276 AssetPopupProjectRemove::~AssetPopupProjectRemove()
280 int AssetPopupProjectRemove::handle_event()
282 mwindow->remove_assets_from_project(1);
289 AssetPopupDiskRemove::AssetPopupDiskRemove(MWindow *mwindow, AssetPopup *popup)
290 : BC_MenuItem(_("Remove from disk"))
292 this->mwindow = mwindow;
297 AssetPopupDiskRemove::~AssetPopupDiskRemove()
302 int AssetPopupDiskRemove::handle_event()
304 mwindow->awindow->asset_remove->start();