#include "asset.h"
#include "assetedit.h"
#include "assetpopup.h"
+#include "assetremove.h"
#include "assets.h"
#include "audiodevice.h"
-#include "awindowgui.h"
#include "awindow.h"
+#include "awindowgui.h"
#include "bccmodels.h"
#include "bcsignals.h"
#include "bchash.h"
AssetVIcon::AssetVIcon(AssetPicon *picon, int w, int h, double framerate, int64_t length)
- : VIcon(w, h, framerate)
+ : VIcon(w, h, framerate), Garbage("AssetVIcon")
{
this->picon = picon;
this->length = length;
AssetVIcon::~AssetVIcon()
{
+ picon->gui->vicon_thread->del_vicon(this);
delete temp;
}
AssetPicon::~AssetPicon()
{
- if( vicon )
- gui->vicon_thread->del_vicon(vicon);
+ if( vicon ) vicon->remove_user();
delete vicon_frame;
if( indexable ) indexable->remove_user();
if( edl ) edl->remove_user();
}
gui->vicon_thread->add_vicon(vicon);
}
+ else if( asset->folder_no == AW_PROXY_FOLDER ) {
+ char unproxy_path[BCTEXTLEN];
+ int proxy_scale = mwindow->edl->session->proxy_scale;
+ if( !ProxyRender::from_proxy_path(unproxy_path, asset, proxy_scale) ) {
+ Asset *unproxy = mwindow->edl->assets->get_asset(unproxy_path);
+ if( unproxy ) {
+ int i = gui->assets.total;
+ while( --i >= 0 ) {
+ AssetPicon *picon = (AssetPicon*)gui->assets[i];
+ if( picon->id == unproxy->id ) {
+ vicon = picon->vicon;
+ if( vicon ) vicon->add_user();
+ break;
+ }
+ }
+ }
+ }
+ }
}
else {
{
if( !vicon_drawing || !vicon_thread->interrupted ) return;
if( mwindow->edl->session->awindow_folder == AW_MEDIA_FOLDER ||
+ mwindow->edl->session->awindow_folder == AW_PROXY_FOLDER ||
mwindow->edl->session->awindow_folder >= AWINDOW_USER_FOLDERS ) {
switch( mwindow->edl->session->assetlist_format ) {
case ASSETS_ICONS:
case 'v':
return cycle_assetlist_format();
case DELETE:
- if( shift_down() ) {
+ if( shift_down() && ctrl_down() ) {
PluginServer* plugin = selected_plugin();
if( !plugin ) break;
remove_plugin = new AWindowRemovePlugin(awindow, plugin);
unlock_window();
remove_plugin->start();
- lock_window();
+ lock_window("AWindowGUI::keypress_event 1");
+ return 1;
}
+ collect_assets();
+ if( shift_down() ) {
+ mwindow->awindow->asset_remove->start();
+ return 1;
+ }
+ unlock_window();
+ mwindow->remove_assets_from_project(1, 1,
+ mwindow->session->drag_assets,
+ mwindow->session->drag_clips);
+ lock_window("AWindowGUI::keypress_event 2");
+ return 1;
+ case KEY_F1:
+ case KEY_F2:
+ case KEY_F3:
+ case KEY_F4:
+ if( shift_down() && ctrl_down() ) {
+ resend_event(mwindow->gui);
+ return 1;
+ }
+ break;
}
return 0;
}
if( text && text[0] )
visible = bstrcasestr(picon->get_text(), text) ? 1 : 0;
}
- if( picon->vicon )
- picon->vicon->hidden = !visible ? 1 : 0;
+ if( visible && picon->vicon && picon->vicon->hidden )
+ picon->vicon->hidden = 0;
if( visible ) {
BC_ListBoxItem *item2, *item1;
dst[0].append(item1 = picon);
}
else if( gui->vicon_drawing && get_button_down() && get_buttonpress() == 1 &&
( mwindow->edl->session->awindow_folder == AW_MEDIA_FOLDER ||
+ mwindow->edl->session->awindow_folder == AW_PROXY_FOLDER ||
mwindow->edl->session->awindow_folder >= AWINDOW_USER_FOLDERS ) &&
(item = (AssetPicon*)get_selection(0, 0)) != 0 ) {
VIcon *vicon = 0;
return 1;
}
+AssetSelectUsedItem::AssetSelectUsedItem(AssetSelectUsed *select_used, const char *text, int action)
+ : BC_MenuItem(text)
+{
+ this->select_used = select_used;
+ this->action = action;
+}
+
+int AssetSelectUsedItem::handle_event()
+{
+ MWindow *mwindow = select_used->mwindow;
+ AWindowGUI *gui = select_used->gui;
+ AWindowAssets *asset_list = gui->asset_list;
+ ArrayList<BC_ListBoxItem*> *data = gui->displayed_assets;
+
+ switch( action ) {
+ case SELECT_ALL:
+ case SELECT_NONE:
+ asset_list->set_all_selected(data, action==SELECT_ALL ? 1 : 0);
+ break;
+ case SELECT_USED:
+ case SELECT_UNUSED:
+ asset_list->set_all_selected(data, 0);
+ for( int i = 0; i < data->total; i++ ) {
+ AssetPicon *picon = (AssetPicon*)data->values[i];
+ Indexable *idxbl = picon->indexable ? picon->indexable :
+ picon->edl ? picon->edl->get_proxy_asset() : 0;
+ int used = idxbl && mwindow->edl->in_use(idxbl) ? 1 : 0;
+ asset_list->set_selected(data, i, action==SELECT_USED ? used : !used);
+ }
+ break;
+ }
+
+ int asset_xposition = asset_list->get_xposition();
+ int asset_yposition = asset_list->get_yposition();
+ asset_list->update(gui->displayed_assets, gui->asset_titles,
+ mwindow->edl->session->asset_columns, ASSET_COLUMNS,
+ asset_xposition, asset_yposition, -1, 0);
+ asset_list->center_selection();
+ return 1;
+}
+
+AssetSelectUsed::AssetSelectUsed(MWindow *mwindow, AWindowGUI *gui)
+ : BC_MenuItem(_("Select"))
+{
+ this->mwindow = mwindow;
+ this->gui = gui;
+}
+