r663: This commit was generated by cvs2svn to compensate for changes in r662,
[cinelerra_cv.git] / cinelerra / assetpopup.C
blob66f750c810f2b2f9696687da19932f72274c202b
1 #include "assetedit.h"
2 #include "assetpopup.h"
3 #include "assetremove.h"
4 #include "awindow.h"
5 #include "awindowgui.h"
6 #include "awindowmenu.h"
7 #include "clipedit.h"
8 #include "cwindow.h"
9 #include "cwindowgui.h"
10 #include "edl.h"
11 #include "language.h"
12 #include "localsession.h"
13 #include "mainindexes.h"
14 #include "mainsession.h"
15 #include "mwindow.h"
16 #include "mwindowgui.h"
17 #include "tracks.h"
18 #include "vwindow.h"
19 #include "vwindowgui.h"
23 AssetPopup::AssetPopup(MWindow *mwindow, AWindowGUI *gui)
24  : BC_PopupMenu(0, 
25                 0, 
26                 0, 
27                 "", 
28                 0)
30         this->mwindow = mwindow;
31         this->gui = gui;
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);
62         gui->unlock_window();
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()
78         format->update();
79         gui->collect_assets();
80         return 0;
91 AssetPopupInfo::AssetPopupInfo(MWindow *mwindow, AssetPopup *popup)
92  : BC_MenuItem(_("Info..."))
94         this->mwindow = mwindow;
95         this->popup = popup;
98 AssetPopupInfo::~AssetPopupInfo()
102 int AssetPopupInfo::handle_event()
104         if(mwindow->session->drag_assets->total)
105         {
106                 if(mwindow->awindow->asset_edit->running() && 
107                         mwindow->awindow->asset_edit->window)
108                 {
109                         mwindow->awindow->asset_edit->window->raise_window();
110                         mwindow->awindow->asset_edit->window->flush();
111                 }
112                 else
113                 {
114                         mwindow->awindow->asset_edit->edit_asset(
115                                 mwindow->session->drag_assets->values[0]);
116                 }
117         }
118         else
119         if(mwindow->session->drag_clips->total)
120         {
121                 popup->gui->awindow->clip_edit->edit_clip(
122                         mwindow->session->drag_clips->values[0]);
123         }
124         return 1;
133 AssetPopupBuildIndex::AssetPopupBuildIndex(MWindow *mwindow, AssetPopup *popup)
134  : BC_MenuItem(_("Rebuild index"))
136         this->mwindow = mwindow;
137         this->popup = popup;
140 AssetPopupBuildIndex::~AssetPopupBuildIndex()
144 int AssetPopupBuildIndex::handle_event()
146 //printf("AssetPopupBuildIndex::handle_event 1\n");
147         mwindow->rebuild_indices();
148         return 1;
157 AssetPopupSort::AssetPopupSort(MWindow *mwindow, AssetPopup *popup)
158  : BC_MenuItem(_("Sort items"))
160         this->mwindow = mwindow;
161         this->popup = popup;
164 AssetPopupSort::~AssetPopupSort()
168 int AssetPopupSort::handle_event()
170         mwindow->awindow->gui->sort_assets();
171         return 1;
180 AssetPopupView::AssetPopupView(MWindow *mwindow, AssetPopup *popup)
181  : BC_MenuItem(_("View"))
183         this->mwindow = mwindow;
184         this->popup = popup;
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]);
198         else
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();
204         return 1;
213 AssetPopupPaste::AssetPopupPaste(MWindow *mwindow, AssetPopup *popup)
214  : BC_MenuItem(_("Paste"))
216         this->mwindow = mwindow;
217         this->popup = popup;
220 AssetPopupPaste::~AssetPopupPaste()
224 int AssetPopupPaste::handle_event()
226         popup->paste_assets();
227         return 1;
237 AssetMatchSize::AssetMatchSize(MWindow *mwindow, AssetPopup *popup)
238  : BC_MenuItem(_("Match project size"))
240         this->mwindow = mwindow;
241         this->popup = popup;
244 AssetMatchSize::~AssetMatchSize()
248 int AssetMatchSize::handle_event()
250         popup->match_size();
251         return 1;
267 AssetPopupProjectRemove::AssetPopupProjectRemove(MWindow *mwindow, AssetPopup *popup)
268  : BC_MenuItem(_("Remove from project"))
270         this->mwindow = mwindow;
271         this->popup = popup;
276 AssetPopupProjectRemove::~AssetPopupProjectRemove()
280 int AssetPopupProjectRemove::handle_event()
282         mwindow->remove_assets_from_project(1);
283         return 1;
289 AssetPopupDiskRemove::AssetPopupDiskRemove(MWindow *mwindow, AssetPopup *popup)
290  : BC_MenuItem(_("Remove from disk"))
292         this->mwindow = mwindow;
293         this->popup = popup;
297 AssetPopupDiskRemove::~AssetPopupDiskRemove()
302 int AssetPopupDiskRemove::handle_event()
304         mwindow->awindow->asset_remove->start();
305         return 1;