+EditPopupFindAsset::EditPopupFindAsset(MWindow *mwindow, EditPopup *popup)
+ : BC_MenuItem(_("Find in Resources"))
+{
+ this->mwindow = mwindow;
+ this->popup = popup;
+}
+
+int EditPopupFindAsset::handle_event()
+{
+ Edit *edit = popup->edit;
+ if( edit ) {
+ Indexable *idxbl = (Indexable *)edit->asset;
+ if( !idxbl ) idxbl = (Indexable *)edit->nested_edl;
+ if( idxbl ) {
+ AWindowGUI *agui = mwindow->awindow->gui;
+ agui->lock_window("EditPopupFindAsset::handle_event");
+ AssetPicon *picon = 0;
+ for( int i=0, n=agui->assets.size(); i<n; ++i ) {
+ AssetPicon *ap = (AssetPicon *)agui->assets[i];
+ int found = ap->indexable && ( idxbl == ap->indexable ||
+ !strcmp(idxbl->path, ap->indexable->path) );
+ if( found && !picon ) picon = ap;
+ ap->set_selected(found);
+ }
+ if( picon ) {
+ int selected_folder = picon->indexable->awindow_folder;
+ mwindow->edl->session->awindow_folder = selected_folder;
+ for( int i=0,n=agui->folders.size(); i<n; ++i ) {
+ AssetPicon *folder_item = (AssetPicon *)agui->folders[i];
+ int selected = folder_item->foldernum == selected_folder ? 1 : 0;
+ folder_item->set_selected(selected);
+ }
+ }
+ agui->unlock_window();
+ agui->async_update_assets();
+ }
+ }
+ return 1;
+}
+