X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fawindowgui.C;h=186dcc5b5b0efdb94c4b291de371d334c716ee55;hp=42672233ec775b5fe10e0273db3573e232c62f94;hb=9058f65f71aafbeab023657be0f6b84b629b70c4;hpb=f007a674187f11ab58a5aebfe1eec27a90398bcb diff --git a/cinelerra-5.1/cinelerra/awindowgui.C b/cinelerra-5.1/cinelerra/awindowgui.C index 42672233..186dcc5b 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.C +++ b/cinelerra-5.1/cinelerra/awindowgui.C @@ -552,6 +552,7 @@ void AssetPicon::create_objects() pixmap_w = pixmap_h * 16/9; icon_vframe = new VFrame(0, -1, pixmap_w, pixmap_h, BC_RGB888, -1); + icon_vframe->clear_frame(); { char string[BCTEXTLEN]; sprintf(string, _("Reading %s"), name); mwindow->gui->lock_window("AssetPicon::create_objects 3"); @@ -684,6 +685,7 @@ void AssetPicon::create_objects() pixmap_w = pixmap_h * 16/9; icon_vframe = new VFrame(0, -1, pixmap_w, pixmap_h, BC_RGB888, -1); + icon_vframe->clear_frame(); char string[BCTEXTLEN]; sprintf(string, _("Rendering %s"), name); mwindow->gui->lock_window("AssetPicon::create_objects 3"); @@ -1308,6 +1310,12 @@ int AWindowGUI::keypress_event() return 1; } break; + case 'o': + if( !ctrl_down() && !shift_down() ) { + assetlist_menu->load_file->handle_event(); + return 1; + } + break; case DELETE: if( shift_down() ) { PluginServer* plugin = selected_plugin(); @@ -1418,11 +1426,13 @@ void AWindowGUI::create_label_folder() void AWindowGUI::update_asset_list() { + ArrayList new_assets; for( int i = 0; i < assets.total; i++ ) { AssetPicon *picon = (AssetPicon*)assets.values[i]; picon->in_use = 0; } + mwindow->gui->lock_window("AWindowGUI::update_asset_list"); // Synchronize EDL clips for( int i=0; iedl->clips.size(); ++i ) { int exists = 0; @@ -1443,8 +1453,7 @@ void AWindowGUI::update_asset_list() if( !exists ) { AssetPicon *picon = new AssetPicon(mwindow, this, mwindow->edl->clips[i]); - picon->create_objects(); - assets.append(picon); + new_assets.append(picon); } } @@ -1467,15 +1476,10 @@ void AWindowGUI::update_asset_list() if( !exists ) { AssetPicon *picon = new AssetPicon(mwindow, this, current); - picon->create_objects(); - assets.append(picon); + new_assets.append(picon); } } - mwindow->gui->lock_window("AWindowGUI::update_asset_list"); - mwindow->gui->default_message(); - mwindow->gui->unlock_window(); - // Synchronize nested EDLs for( int i=0; iedl->nested_edls.size(); ++i ) { int exists = 0; @@ -1496,10 +1500,20 @@ void AWindowGUI::update_asset_list() if( !exists ) { AssetPicon *picon = new AssetPicon(mwindow, this, (Indexable*)nested_edl); - picon->create_objects(); - assets.append(picon); + new_assets.append(picon); } } + mwindow->gui->unlock_window(); + + for( int i=0; icreate_objects(); + assets.append(picon); + } + + mwindow->gui->lock_window(); + mwindow->gui->default_message(); + mwindow->gui->unlock_window(); for( int i = assets.size() - 1; i >= 0; i-- ) { AssetPicon *picon = (AssetPicon*)assets.get(i); @@ -1652,7 +1666,7 @@ void AWindowGUI::copy_picons(ArrayList *dst, if( picon->edl ) dst[1].append(item2 = new BC_ListBoxItem(picon->edl->local_session->clip_notes)); else - if( picon->label && picon->label->textstr ) + if( picon->label ) dst[1].append(item2 = new BC_ListBoxItem(picon->label->textstr)); else if( picon->mtime ) { char date_time[BCSTRLEN]; @@ -2018,20 +2032,30 @@ int AWindowAssets::handle_event() { AssetPicon *asset_picon = (AssetPicon *)get_selection(0, 0); if( !asset_picon ) return 0; + Indexable *picon_idxbl = asset_picon->indexable; + EDL *picon_edl = asset_picon->edl; + int proxy = 0; + VWindow *vwindow = 0; switch( mwindow->edl->session->awindow_folder ) { case AW_AEFFECT_FOLDER: case AW_VEFFECT_FOLDER: case AW_ATRANSITION_FOLDER: case AW_VTRANSITION_FOLDER: return 1; + case AW_PROXY_FOLDER: + proxy = 1; // fall thru + default: + if( mwindow->vwindows.size() > DEFAULT_VWINDOW ) + vwindow = mwindow->vwindows.get(DEFAULT_VWINDOW); + break; } - VWindow *vwindow = mwindow->vwindows.size() > DEFAULT_VWINDOW ? - mwindow->vwindows.get(DEFAULT_VWINDOW) : 0; if( !vwindow || !vwindow->is_running() ) return 1; + if( proxy && picon_idxbl ) { + picon_edl = gui->collect_proxy(picon_idxbl); + picon_idxbl = 0; + } - if( asset_picon->indexable ) - vwindow->change_source(asset_picon->indexable); - else if( asset_picon->edl ) - vwindow->change_source(asset_picon->edl); + if( picon_idxbl ) vwindow->change_source(picon_idxbl); + else if( picon_edl ) vwindow->change_source(picon_edl); return 1; } @@ -2459,10 +2483,14 @@ AddTools::AddTools(MWindow *mwindow, AWindowGUI *gui, int x, int y, const char * void AddTools::create_objects() { uint64_t vis = 0; - add_item(new AddPluginItem(this, "ladspa", PLUGIN_LADSPA_ID)); - vis |= 1 << PLUGIN_LADSPA_ID; add_item(new AddPluginItem(this, "ffmpeg", PLUGIN_FFMPEG_ID)); vis |= 1 << PLUGIN_FFMPEG_ID; + add_item(new AddPluginItem(this, "ladspa", PLUGIN_LADSPA_ID)); + vis |= 1 << PLUGIN_LADSPA_ID; +#ifdef HAVE_LV2 + add_item(new AddPluginItem(this, "lv2", PLUGIN_LV2_ID)); + vis |= 1 << PLUGIN_LV2_ID; +#endif for( int i=0; isize(); ++i ) { PluginServer *plugin = MWindow::plugindb->get(i); if( !plugin->audio && !plugin->video ) continue; @@ -2481,8 +2509,9 @@ void AddTools::create_objects() #if 0 // plugin_dirs list from toplevel makefile include plugin_defs -N_("ladspa") N_("ffmpeg") +N_("ladspa") +N_("lv2") N_("audio_tools") N_("audio_transitions") N_("blending")