X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fawindowgui.C;fp=cinelerra-5.1%2Fcinelerra%2Fawindowgui.C;h=009647b3dbc7daeb084fd2fc56173be89e4f4ab5;hp=3f9f9b2fa0a82161d150047d294b992c95c429c9;hb=0d3917a4eda0344055badf0bd6e235c15c3b6cb8;hpb=8b0e73a6d3623764c261f64f5f3e96349d1f9032 diff --git a/cinelerra-5.1/cinelerra/awindowgui.C b/cinelerra-5.1/cinelerra/awindowgui.C index 3f9f9b2f..009647b3 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.C +++ b/cinelerra-5.1/cinelerra/awindowgui.C @@ -579,7 +579,7 @@ void AssetPicon::create_objects() icon_vframe = new VFrame(0, -1, pixmap_w, pixmap_h, BC_RGB888, -1); icon_vframe->transfer_from(gui->temp_picon); - if( asset->awindow_folder == AW_MEDIA_FOLDER ) { + if( asset->folder_no == AW_MEDIA_FOLDER ) { // vicon images double framerate = asset->get_frame_rate(); if( !framerate ) framerate = VICON_RATE; @@ -645,7 +645,7 @@ void AssetPicon::create_objects() base_colors[i], line_colors[i]); } mwindow->audio_cache->check_in(asset); - if( asset->awindow_folder == AW_MEDIA_FOLDER ) { + if( asset->folder_no == AW_MEDIA_FOLDER ) { double secs = duration; if( secs > 5 ) secs = 5; double refresh_rate = gui->vicon_thread->refresh_rate; @@ -1642,6 +1642,10 @@ void AWindowGUI::update_asset_list() for( int i=0; icreate_objects(); + if( picon->indexable ) + picon->foldernum = AW_MEDIA_FOLDER; + else if( picon->edl ) + picon->foldernum = AW_CLIP_FOLDER; assets.append(picon); } @@ -1763,7 +1767,7 @@ EDL *AWindowGUI::collect_proxy(Indexable *indexable) if( current->data_type != TRACK_AUDIO ) continue; current->insert_asset(unproxy_asset, 0, length, 0, atrack++); } - proxy_edl->awindow_folder = AW_PROXY_FOLDER; + proxy_edl->folder_no = AW_PROXY_FOLDER; return proxy_edl; } @@ -1776,7 +1780,7 @@ void AWindowGUI::collect_assets(int proxy) while( (result = (AssetPicon*)asset_list->get_selection(0, i++)) != 0 ) { Indexable *indexable = result->indexable; if( proxy && indexable && indexable->is_asset && - indexable->awindow_folder == AW_PROXY_FOLDER ) { + indexable->folder_no == AW_PROXY_FOLDER ) { EDL *drag_edl = collect_proxy(indexable); if( drag_edl ) mwindow->session->drag_clips->append(drag_edl); continue; @@ -1792,30 +1796,22 @@ void AWindowGUI::collect_assets(int proxy) } } -void AWindowGUI::copy_picons(ArrayList *dst, - ArrayList *src, int folder) +void AWindowGUI::copy_picons(AssetPicon *picon, ArrayList *src) { // Remove current pointers + ArrayList *dst = displayed_assets; dst[0].remove_all(); dst[1].remove_all_objects(); - AWindowFolderSubItems *sub_items = 0; - if( folder >= 0 && folder < AW_LABEL_FOLDER ) { - AssetPicon *picon = 0; - for( int k=folders.size(); --k>=0; ) { - picon = (AssetPicon*)folders[k]; - if( picon->foldernum == folder ) break; - } - if( picon ) - sub_items = picon->sub_items; - folder = AW_NO_FOLDER; - } + + AWindowFolderSubItems *sub_items = picon ? picon->sub_items : 0; + int folder = mwindow->edl->session->awindow_folder; BinFolder *bin_folder = folder < AWINDOW_USER_FOLDERS ? 0 : mwindow->edl->get_folder(folder); // Create new pointers for( int i = 0; i < src->total; i++ ) { - int visible = folder < 0 ? 1 : 0; - AssetPicon *picon = (AssetPicon*)src->values[i]; + int visible = folder >= AW_CLIP_FOLDER ? 0 : 1; + picon = (AssetPicon*)src->values[i]; picon->sort_key = -1; if( !visible && bin_folder ) { Indexable *idxbl = bin_folder->is_clips ? (Indexable *)picon->edl : @@ -1827,9 +1823,9 @@ void AWindowGUI::copy_picons(ArrayList *dst, visible = 1; } } - if( !visible && picon->indexable && picon->indexable->awindow_folder == folder ) + if( !visible && picon->indexable && picon->indexable->folder_no == folder ) visible = 1; - if( !visible && picon->edl && picon->edl->local_session->folder == folder ) + if( !visible && picon->edl && picon->edl->folder_no == folder ) visible = 1; if( visible && sub_items ) { if( !sub_items->matches(picon->get_text()) ) @@ -1904,39 +1900,29 @@ void AWindowGUI::filter_displayed_assets() //allow_iconlisting = 1; asset_titles[0] = C_("Title"); asset_titles[1] = _("Comments"); - int folder = mwindow->edl->session->awindow_folder; - - switch( folder ) { - case AW_AEFFECT_FOLDER: - copy_picons(displayed_assets, &aeffects, folder); - break; - case AW_VEFFECT_FOLDER: - copy_picons(displayed_assets, &veffects, folder); - break; - case AW_ATRANSITION_FOLDER: - copy_picons(displayed_assets, &atransitions, folder); - break; - case AW_VTRANSITION_FOLDER: - copy_picons(displayed_assets, &vtransitions, folder); - break; - case AW_LABEL_FOLDER: - copy_picons(displayed_assets, &labellist, AW_NO_FOLDER); - asset_titles[0] = _("Time Stamps"); - asset_titles[1] = C_("Title"); - //allow_iconlisting = 0; - break; - default: - copy_picons(displayed_assets, &assets, mwindow->edl->session->awindow_folder); - break; - } - - // Ensure the current folder icon is highlighted + AssetPicon *picon = 0; int selected_folder = mwindow->edl->session->awindow_folder; + // Ensure the current folder icon is highlighted for( int i = 0; i < folders.total; i++ ) { AssetPicon *folder_item = (AssetPicon *)folders.values[i]; int selected = folder_item->foldernum == selected_folder ? 1 : 0; folder_item->set_selected(selected); + if( selected ) picon = folder_item; + } + + ArrayList *src = &assets; + switch( selected_folder ) { + case AW_AEFFECT_FOLDER: src = &aeffects; break; + case AW_VEFFECT_FOLDER: src = &veffects; break; + case AW_ATRANSITION_FOLDER: src = &atransitions; break; + case AW_VTRANSITION_FOLDER: src = &vtransitions; break; + case AW_LABEL_FOLDER: src = &labellist; + asset_titles[0] = _("Time Stamps"); + asset_titles[1] = C_("Title"); + //allow_iconlisting = 0; + break; } + copy_picons(picon, src); } @@ -2163,7 +2149,7 @@ int AWindowFolders::drag_stop() if( get_hidden() ) return 0; if( mwindow->session->current_operation == DRAG_ASSET && gui->folder_list->cursor_above() ) { // check user folder - int item_no = gui->folder_list->get_cursor_item(); + int item_no = gui->folder_list->get_cursor_data_item_no(); AssetPicon *picon = (AssetPicon *)(item_no < 0 ? 0 : gui->folders[item_no]); if( picon && picon->foldernum >= AWINDOW_USER_FOLDERS ) { BinFolder *folder = mwindow->edl->get_folder(picon->foldernum); @@ -2488,11 +2474,14 @@ int AWindowAssets::drag_motion_event() lock_window("AWindowAssets::drag_motion_event"); if( mwindow->session->current_operation == DRAG_ASSET && gui->folder_list->cursor_above() ) { // highlight user folder - int item_no = gui->folder_list->get_cursor_item(); + BC_ListBoxItem *item = 0; + int item_no = gui->folder_list->get_cursor_data_item_no(&item); if( item_no >= 0 ) { AssetPicon *folder = (AssetPicon *)gui->folders[item_no]; if( folder->foldernum < AWINDOW_USER_FOLDERS ) item_no = -1; } + if( item_no >= 0 ) + item_no = gui->folder_list->item_to_index(&gui->folders, item); int folder_xposition = gui->folder_list->get_xposition(); int folder_yposition = gui->folder_list->get_yposition(); gui->folder_list->update(&gui->folders, 0, 0, 1,