From: Good Guy Date: Tue, 10 Jul 2018 00:48:52 +0000 (-0600) Subject: add proxy quick switch, folder lock, shortcuts update, bsd GL tweak X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=commitdiff_plain;h=540f653df26e5e2d1249de1f7a1a3d888dddf341 add proxy quick switch, folder lock, shortcuts update, bsd GL tweak --- diff --git a/cinelerra-5.1/blds/bsd.bld b/cinelerra-5.1/blds/bsd.bld index 3707579c..6795b230 100755 --- a/cinelerra-5.1/blds/bsd.bld +++ b/cinelerra-5.1/blds/bsd.bld @@ -9,7 +9,7 @@ alias make=gmake ./autogen.sh CC=clang CXX=clang++ CFLAGS="-g -O2 -DFFMPEG3" ./configure --with-single-user \ --disable-static-build --without-lv2 --disable-lame --disable-twolame \ - --with-oss --without-alsa --without-gl --without-firewire --without-dv \ - --without-dvb --without-video4linux2 --without-xxf86vm --without-ladspa-build \ + --with-oss --without-alsa --without-firewire --without-dv --without-dvb \ + --without-video4linux2 --without-xxf86vm --without-ladspa-build \ --without-libzmpeg --without-commercial --without-thirdparty gmake 2>&1 | tee log diff --git a/cinelerra-5.1/cinelerra/awindowgui.C b/cinelerra-5.1/cinelerra/awindowgui.C index 186dcc5b..bffaa2d1 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.C +++ b/cinelerra-5.1/cinelerra/awindowgui.C @@ -847,6 +847,7 @@ AWindowGUI::AWindowGUI(MWindow *mwindow, AWindow *awindow) vicon_audio = 0; vicon_drawing = 1; displayed_folder = AW_NO_FOLDER; + folder_lock = new Mutex("AWindowGUI::folder_lock"); } AWindowGUI::~AWindowGUI() @@ -889,6 +890,7 @@ AWindowGUI::~AWindowGUI() delete vtransition_vframe; delete vtransition_icon; delete aeffect_vframe; delete aeffect_icon; delete veffect_vframe; delete veffect_icon; + delete folder_lock; } bool AWindowGUI::protected_pixmap(BC_Pixmap *icon) @@ -998,7 +1000,7 @@ void AWindowGUI::create_objects() plugin_icon(ladspa_vframe, ladspa_icon, "lad_picon", lad_picon_png); plugin_icon(ff_aud_vframe, ff_aud_icon, "ff_audio", ff_audio_png); plugin_icon(ff_vid_vframe, ff_vid_icon, "ff_video", ff_video_png); - + folder_lock->lock("AWindowGUI::create_objects"); // Mandatory folders folders.append(new AssetPicon(mwindow, this, AW_AEFFECT_FOLDER, 1)); folders.append(new AssetPicon(mwindow, this, AW_VEFFECT_FOLDER, 1)); @@ -1010,6 +1012,7 @@ void AWindowGUI::create_objects() folders.append(new AssetPicon(mwindow, this, AW_MEDIA_FOLDER, 1)); create_label_folder(); + folder_lock->unlock(); mwindow->theme->get_awindow_sizes(this); load_defaults(mwindow->defaults); @@ -1553,6 +1556,7 @@ void AWindowGUI::update_picon(Indexable *indexable) void AWindowGUI::sort_assets(int use_mtime) { + folder_lock->lock("AWindowGUI::sort_assets"); switch( mwindow->edl->session->awindow_folder ) { case AW_AEFFECT_FOLDER: sort_picons(&aeffects); @@ -1571,16 +1575,20 @@ void AWindowGUI::sort_assets(int use_mtime) break; default: sort_picons(&assets, use_mtime); + break; } // reset xyposition asset_list->update_format(asset_list->get_format(), 0); + folder_lock->unlock(); update_assets(); } void AWindowGUI::sort_folders() { + folder_lock->lock("AWindowGUI::update_assets"); sort_picons(&folders); folder_list->update_format(folder_list->get_format(), 0); + folder_lock->unlock(); update_assets(); } @@ -1753,6 +1761,7 @@ void AWindowGUI::filter_displayed_assets() void AWindowGUI::update_assets() { stop_vicon_drawing(); + folder_lock->lock("AWindowGUI::update_assets"); update_folder_list(); update_asset_list(); labellist.remove_all_objects(); @@ -1761,6 +1770,7 @@ void AWindowGUI::update_assets() if( displayed_folder != mwindow->edl->session->awindow_folder ) search_text->clear(); filter_displayed_assets(); + folder_lock->unlock(); if( mwindow->edl->session->folderlist_format != folder_list->get_format() ) { folder_list->update_format(mwindow->edl->session->folderlist_format, 0); diff --git a/cinelerra-5.1/cinelerra/awindowgui.h b/cinelerra-5.1/cinelerra/awindowgui.h index 440b4019..b941e18d 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.h +++ b/cinelerra-5.1/cinelerra/awindowgui.h @@ -40,6 +40,7 @@ #include "labels.h" #include "indexable.inc" #include "mwindow.inc" +#include "mutex.inc" #include "newfolder.inc" #include "pluginserver.inc" #include "proxypopup.inc" @@ -215,6 +216,7 @@ public: AWindowFolders *folder_list; AWindowDivider *divider; AWindowSearchText *search_text; + Mutex *folder_lock; // Store data to speed up responses // Persistant data for listboxes diff --git a/cinelerra-5.1/cinelerra/edl.C b/cinelerra-5.1/cinelerra/edl.C index d3f19b23..cfed55d6 100644 --- a/cinelerra-5.1/cinelerra/edl.C +++ b/cinelerra-5.1/cinelerra/edl.C @@ -1494,16 +1494,15 @@ void EDL::rescale_proxy(int orig_scale, int new_scale) } } -void EDL::set_proxy(int use_scaler, int new_scale, int auto_scale, int beep, +void EDL::set_proxy(int new_scale, int use_scaler, ArrayList *orig_assets, ArrayList *proxy_assets) { - int orig_use_scaler = session->proxy_use_scaler; int orig_scale = session->proxy_scale; + int orig_use_scaler = session->proxy_use_scaler; + // rescale to full size asset in read_frame - session->proxy_use_scaler = use_scaler; session->proxy_scale = new_scale; - session->proxy_auto_scale = auto_scale; - session->proxy_beep = beep; + session->proxy_use_scaler = use_scaler; if( use_scaler ) { for( int i=0; isize(); ++i ) { diff --git a/cinelerra-5.1/cinelerra/edl.h b/cinelerra-5.1/cinelerra/edl.h index 44802e31..bc22b290 100644 --- a/cinelerra-5.1/cinelerra/edl.h +++ b/cinelerra-5.1/cinelerra/edl.h @@ -250,7 +250,7 @@ public: // Does nothing if EDL already exists void append_vwindow_edl(EDL *edl, int increase_counter); void rescale_proxy(int orig_scale, int new_scale); - void set_proxy(int use_scaler, int new_scale, int auto_scale, int beep, + void set_proxy(int new_scale, int use_scaler, ArrayList *orig_assets, ArrayList *proxy_assets); void add_proxy(int use_scaler, ArrayList *orig_assets, ArrayList *proxy_assets); diff --git a/cinelerra-5.1/cinelerra/edlsession.C b/cinelerra-5.1/cinelerra/edlsession.C index e0d5f701..9bdb6458 100644 --- a/cinelerra-5.1/cinelerra/edlsession.C +++ b/cinelerra-5.1/cinelerra/edlsession.C @@ -99,6 +99,7 @@ EDLSession::EDLSession(EDL *edl) playback_cursor_visible = 0; playback_preload = 0; proxy_scale = 1; + proxy_disabled_scale = 1; proxy_use_scaler = 0; proxy_auto_scale = 1; proxy_beep = 0; @@ -174,6 +175,7 @@ int EDLSession::need_rerender(EDLSession *ptr) (subtitle_number != ptr->subtitle_number) || (interpolate_raw != ptr->interpolate_raw) || (white_balance_raw != ptr->white_balance_raw) || + (proxy_disabled_scale != ptr->proxy_disabled_scale) || (proxy_scale != ptr->proxy_scale) || (proxy_use_scaler != ptr->proxy_use_scaler)); } @@ -189,6 +191,7 @@ void EDLSession::equivalent_output(EDLSession *session, double *result) session->white_balance_raw != white_balance_raw || session->decode_subtitles != decode_subtitles || session->subtitle_number != subtitle_number || + session->proxy_disabled_scale != proxy_disabled_scale || session->proxy_scale != proxy_scale || session->proxy_use_scaler != proxy_use_scaler ) *result = 0; @@ -553,6 +556,7 @@ int EDLSession::load_video_config(FileXML *file, int append_mode, uint32_t load_ aspect_w = file->tag.get_property("ASPECTW", aspect_w); aspect_h = file->tag.get_property("ASPECTH", aspect_h); proxy_scale = file->tag.get_property("PROXY_SCALE", proxy_scale); + proxy_disabled_scale = file->tag.get_property("PROXY_DISABLED_SCALE", proxy_disabled_scale); proxy_use_scaler = file->tag.get_property("PROXY_USE_SCALER", proxy_use_scaler); proxy_auto_scale = file->tag.get_property("PROXY_AUTO_SCALE", proxy_auto_scale); return 0; @@ -748,6 +752,7 @@ int EDLSession::save_video_config(FileXML *file) file->tag.set_property("ASPECTW", aspect_w); file->tag.set_property("ASPECTH", aspect_h); file->tag.set_property("PROXY_SCALE", proxy_scale); + file->tag.set_property("PROXY_DISABLED_SCALE", proxy_disabled_scale); file->tag.set_property("PROXY_USE_SCALER", proxy_use_scaler); file->tag.set_property("PROXY_AUTO_SCALE", proxy_auto_scale); file->append_tag(); @@ -890,6 +895,7 @@ int EDLSession::copy(EDLSession *session) vwindow_zoom = session->vwindow_zoom; vwindow_click2play = session->vwindow_click2play; proxy_scale = session->proxy_scale; + proxy_disabled_scale = session->proxy_disabled_scale; proxy_use_scaler = session->proxy_use_scaler; proxy_auto_scale = session->proxy_auto_scale; proxy_beep = session->proxy_beep; @@ -909,12 +915,12 @@ void EDLSession::dump() printf(" audio_tracks=%d audio_channels=%d sample_rate=%jd\n" " video_tracks=%d frame_rate=%f output_w=%d output_h=%d aspect_w=%f aspect_h=%f\n" " decode subtitles=%d subtitle_number=%d label_cells=%d program_no=%d\n" - " proxy_scale=%d\n proxy_use_scaler=%d, proxy_auto_scale=%d\n" - " proxy_beep=%d render_beep=%d\n", + " proxy scale=%d\n disabled_scale=%d, use_scaler=%d, auto_scale=%d\n" + " proxy_beep=%d render_beep=%d\n", audio_tracks, audio_channels, sample_rate, video_tracks, frame_rate, output_w, output_h, aspect_w, aspect_h, decode_subtitles, subtitle_number, label_cells, program_no, - proxy_scale, proxy_use_scaler, proxy_auto_scale, + proxy_scale, proxy_disabled_scale, proxy_use_scaler, proxy_auto_scale, proxy_beep, render_beep); } diff --git a/cinelerra-5.1/cinelerra/edlsession.h b/cinelerra-5.1/cinelerra/edlsession.h index c1da8908..44d09974 100644 --- a/cinelerra-5.1/cinelerra/edlsession.h +++ b/cinelerra-5.1/cinelerra/edlsession.h @@ -161,6 +161,8 @@ public: int playback_software_position; // current settings are scaled this much from the original settings int proxy_scale; +// original proxy_scale when proxy_enable disables/enables proxy + int proxy_disabled_scale; // upscale geom from proxy to session on read in int proxy_use_scaler; // automatically rescale assets when loaded diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index 034b1bd6..565f3328 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -41,6 +41,7 @@ #include "clipedls.h" #include "bccmodels.h" #include "commercials.h" +#include "confirmsave.h" #include "cplayback.h" #include "ctimebar.h" #include "cwindowgui.h" @@ -2135,6 +2136,7 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); load_mode == LOADMODE_REPLACE_CONCATENATE ) ) { select_asset(0, 0); edl->session->proxy_scale = 1; + edl->session->proxy_disabled_scale = 1; edl->session->proxy_use_scaler = 0; edl->session->proxy_auto_scale = 0; edl->session->proxy_beep = 0; @@ -2252,6 +2254,167 @@ int MWindow::render_proxy(ArrayList &new_idxbls) return !result ? proxy_render.needed_proxies.size() : -1; } +int MWindow::enable_proxy() +{ + if( edl->session->proxy_scale == 1 && + edl->session->proxy_disabled_scale != 1 ) { + int new_scale = edl->session->proxy_disabled_scale; + edl->session->proxy_disabled_scale = 1; + Asset *asset = new Asset; + asset->format = FILE_FFMPEG; + asset->load_defaults(defaults, "PROXY_", 1, 1, 0, 0, 0); + to_proxy(asset, new_scale); + asset->remove_user(); + } + return 1; +} + +int MWindow::disable_proxy() +{ + if( edl->session->proxy_scale != 1 && + edl->session->proxy_disabled_scale == 1 ) { + edl->session->proxy_disabled_scale = edl->session->proxy_scale; + Asset *asset = new Asset; + asset->format = FILE_FFMPEG; + asset->load_defaults(defaults, "PROXY_", 1, 1, 0, 0, 0); + to_proxy(asset, 1); + asset->remove_user(); + } + return 1; +} + +int MWindow::to_proxy(Asset *asset, int new_scale) +{ + ArrayList orig_idxbls; + ArrayList proxy_assets; + + edl->Garbage::add_user(); + save_backup(); + undo->update_undo_before(_("proxy"), this); + ProxyRender proxy_render(this, asset); + +// revert project to original size from current size +// remove all session proxy assets at the at the current proxy_scale + int proxy_scale = edl->session->proxy_scale; + int proxy_use_scaler = edl->session->proxy_use_scaler; + + if( proxy_scale > 1 ) { + Asset *orig_asset = edl->assets->first; + for( ; orig_asset; orig_asset=orig_asset->next ) { + char new_path[BCTEXTLEN]; + proxy_render.to_proxy_path(new_path, orig_asset, proxy_scale); +// test if proxy asset was already added to proxy_assets + int got_it = 0; + for( int i = 0; !got_it && ipath, new_path); + if( got_it ) continue; + Asset *proxy_asset = edl->assets->get_asset(new_path); + if( !proxy_asset ) continue; +// add pointer to existing EDL asset if it exists +// EDL won't delete it unless it's the same pointer. + proxy_assets.append(proxy_asset); + proxy_asset->add_user(); + orig_idxbls.append(orig_asset); + orig_asset->add_user(); + } + for( int i=0,n=edl->nested_edls.size(); inested_edls[i]; + char new_path[BCTEXTLEN]; + if( !ProxyRender::from_proxy_path(new_path, orig_nested, proxy_scale) ) + continue; + proxy_render.to_proxy_path(new_path, orig_nested, proxy_scale); +// test if proxy asset was already added to proxy_assets + int got_it = 0; + for( int i = 0; !got_it && ipath, new_path); + if( got_it ) continue; + Asset *proxy_nested = edl->assets->get_asset(new_path); + if( !proxy_nested ) continue; +// add pointer to existing EDL asset if it exists +// EDL won't delete it unless it's the same pointer. + proxy_assets.append(proxy_nested); + proxy_nested->add_user(); + orig_idxbls.append(orig_nested); + orig_nested->add_user(); + } + +// convert from the proxy assets to the original assets + edl->set_proxy(1, 0, &proxy_assets, &orig_idxbls); + +// remove the references + for( int i=0; iwidth = proxy->actual_width; + proxy->height = proxy->actual_height; + proxy->remove_user(); + edl->assets->remove_pointer(proxy); + proxy->remove_user(); + } + proxy_assets.remove_all(); + for( int i = 0; i < orig_idxbls.size(); i++ ) + orig_idxbls[i]->remove_user(); + orig_idxbls.remove_all(); + } + + ArrayList confirm_paths; // test for new files + confirm_paths.set_array_delete(); + +// convert to new size if not original size + if( new_scale != 1 ) { + FileSystem fs; + Asset *orig = edl->assets->first; + for( ; orig; orig=orig->next ) { + Asset *proxy = proxy_render.add_original(orig, new_scale); + if( !proxy ) continue; + int exists = fs.get_size(proxy->path) > 0 ? 1 : 0; + int got_it = exists && // if proxy exists, and is newer than orig + fs.get_date(proxy->path) > fs.get_date(orig->path) ? 1 : 0; + if( !got_it ) { + if( exists ) // prompt user to overwrite + confirm_paths.append(cstrdup(proxy->path)); + proxy_render.add_needed(orig, proxy); + } + } + for( int i=0,n=edl->nested_edls.size(); inested_edls[i]; + Asset *proxy = proxy_render.add_original(orig_nested, new_scale); + if( !proxy ) continue; + int exists = fs.get_size(proxy->path) > 0 ? 1 : 0; + int got_it = exists && // if proxy exists, and is newer than orig_nested + fs.get_date(proxy->path) > fs.get_date(orig_nested->path) ? 1 : 0; + if( !got_it ) { + if( exists ) // prompt user to overwrite + confirm_paths.append(cstrdup(proxy->path)); + proxy_render.add_needed(orig_nested, proxy); + } + } + } + + int result = 0; +// test for existing files + if( confirm_paths.size() ) { + result = ConfirmSave::test_files(this, &confirm_paths); + confirm_paths.remove_all_objects(); + } + + if( !result ) + result = proxy_render.create_needed_proxies(new_scale); + + if( !result ) // resize project + edl->set_proxy(new_scale, proxy_use_scaler, + &proxy_render.orig_idxbls, &proxy_render.orig_proxies); + + undo->update_undo_after(_("proxy"), LOAD_ALL); + edl->Garbage::remove_user(); + restart_brender(); + + gui->lock_window("MWindow::to_proxy"); + update_project(LOADMODE_REPLACE); + gui->unlock_window(); + + return !result ? proxy_render.needed_proxies.size() : -1; +} + void MWindow::test_plugins(EDL *new_edl, char *path) { char string[BCTEXTLEN]; diff --git a/cinelerra-5.1/cinelerra/mwindow.h b/cinelerra-5.1/cinelerra/mwindow.h index fb3513a2..b9744861 100644 --- a/cinelerra-5.1/cinelerra/mwindow.h +++ b/cinelerra-5.1/cinelerra/mwindow.h @@ -509,14 +509,14 @@ public: int modify_pluginhandles(); void finish_modify_handles(); void rescale_proxy(EDL *clip, int orig_scale, int new_scale); - void set_proxy(int use_scaler, int new_scale, int auto_scale, int beep, - ArrayList *orig_assets, - ArrayList *proxy_assets); void add_proxy(int use_scaler, ArrayList *orig_assets, ArrayList *proxy_assets); int render_proxy(ArrayList &new_idxbls); void beep(double freq, double secs, double gain); + int enable_proxy(); + int disable_proxy(); + int to_proxy(Asset *asset, int new_scale); ProxyBeep *proxy_beep; void dump_plugins(FILE *fp=stdout); diff --git a/cinelerra-5.1/cinelerra/mwindowedit.C b/cinelerra-5.1/cinelerra/mwindowedit.C index ced86c1a..e5d90c6b 100644 --- a/cinelerra-5.1/cinelerra/mwindowedit.C +++ b/cinelerra-5.1/cinelerra/mwindowedit.C @@ -2329,12 +2329,6 @@ void MWindow::rescale_proxy(EDL *clip, int orig_scale, int new_scale) edl->rescale_proxy(orig_scale, new_scale); } -void MWindow::set_proxy(int use_scaler, int new_scale, int auto_scale, int beep, - ArrayList *orig_assets, ArrayList *proxy_assets) -{ - edl->set_proxy(use_scaler, new_scale, auto_scale, beep, orig_assets, proxy_assets); -} - void MWindow::add_proxy(int use_scaler, ArrayList *orig_assets, ArrayList *proxy_assets) { diff --git a/cinelerra-5.1/cinelerra/mwindowgui.C b/cinelerra-5.1/cinelerra/mwindowgui.C index 9259dde1..f2789643 100644 --- a/cinelerra-5.1/cinelerra/mwindowgui.C +++ b/cinelerra-5.1/cinelerra/mwindowgui.C @@ -277,7 +277,10 @@ void MWindowGUI::create_objects() add_subwindow(mbuttons = new MButtons(mwindow, this)); mbuttons->create_objects(); - add_subwindow(ffmpeg_toggle = new FFMpegToggle(mwindow, mbuttons, menu_w(), menu_h()+2)); + int x1 = mbuttons->get_x() + mbuttons->get_w(), y1 = mbuttons->get_y()+2; + add_subwindow(proxy_toggle = new ProxyToggle(mwindow, mbuttons, x1, y1)); + x1 += proxy_toggle->get_w() + 3; + add_subwindow(ffmpeg_toggle = new FFMpegToggle(mwindow, mbuttons, x1, y1)); pane[TOP_LEFT_PANE] = new TimelinePane(mwindow, TOP_LEFT_PANE, @@ -403,10 +406,13 @@ int MWindowGUI::resize_event(int w, int h) int x = w - MainShBtns::calculate_w(0); mainmenu->resize_event(x, mainmenu->get_h()); mainshbtns->reposition_window(x, -1); - ffmpeg_toggle->reposition_window(menu_w(), menu_h()+2); mwindow->theme->get_mwindow_sizes(this, w, h); mwindow->theme->draw_mwindow_bg(this); mbuttons->resize_event(); + int x1 = mbuttons->get_x() + mbuttons->get_w(), y1 = mbuttons->get_y()+2; + proxy_toggle->reposition_window(x1, y1); + x1 += proxy_toggle->get_w() + 3; + ffmpeg_toggle->reposition_window(x1, y1); statusbar->resize_event(); zoombar->resize_event(); @@ -702,6 +708,17 @@ void MWindowGUI::flash_canvas(int flush) } } +int MWindowGUI::show_window(int flush) +{ + int ret = BC_WindowBase::show_window(flush); + if( mwindow->edl->session->proxy_scale == 1 && + mwindow->edl->session->proxy_disabled_scale == 1 ) + proxy_toggle->hide_window(); + else + proxy_toggle->show_window(); + return ret; +} + void MWindowGUI::draw_cursor(int do_plugintoggles) { for(int i = 0; i < TOTAL_PANES; i++) @@ -1385,6 +1402,14 @@ int MWindowGUI::menu_h() return mainmenu->get_h(); } +int MWindowGUI::mbuttons_w() +{ + int w = get_w(); + w -= mwindow->theme->ffmpeg_toggle[0]->get_w()+2; + w -= mwindow->theme->ffmpeg_toggle[0]->get_w()+2; + return w; +} + void MWindowGUI::start_x_pane_drag() { if(!x_pane_drag) @@ -2365,3 +2390,41 @@ int FFMpegToggle::handle_event() } +ProxyToggle::ProxyToggle(MWindow *mwindow, MButtons *mbuttons, int x, int y) + : BC_Toggle(x, y, mwindow->theme->proxy_toggle, + mwindow->edl->session->proxy_disabled_scale != 1) +{ + this->mwindow = mwindow; + this->mbuttons = mbuttons; + set_tooltip(mwindow->edl->session->proxy_disabled_scale==1 ? + _("Disable proxy") : _("Enable proxy")); +} + +ProxyToggle::~ProxyToggle() +{ +} + +int ProxyToggle::handle_event() +{ + int disabled = get_value(); + if( disabled ) + mwindow->disable_proxy(); + else + mwindow->enable_proxy(); + set_tooltip(!disabled ? _("Disable proxy") : _("Enable proxy")); + return 1; +} + +int ProxyToggle::keypress_event() +{ + if( ctrl_down() && !shift_down() && !alt_down() ) { + int key = get_keypress(); + if( key == 'r' ) { + int value = get_value() ? 0 : 1; + set_value(value); + return handle_event(); + } + } + return 0; +} + diff --git a/cinelerra-5.1/cinelerra/mwindowgui.h b/cinelerra-5.1/cinelerra/mwindowgui.h index a40e4446..5ca693e0 100644 --- a/cinelerra-5.1/cinelerra/mwindowgui.h +++ b/cinelerra-5.1/cinelerra/mwindowgui.h @@ -78,6 +78,18 @@ public: MButtons *mbuttons; }; +class ProxyToggle : public BC_Toggle +{ +public: + ProxyToggle(MWindow *mwindow, MButtons *mbuttons, int x, int y); + ~ProxyToggle(); + int handle_event(); + int keypress_event(); + + MWindow *mwindow; + MButtons *mbuttons; +}; + class MWindowGUI : public BC_Window { @@ -116,6 +128,7 @@ public: void update_scrollbars(int flush); void draw_canvas(int mode, int hide_cursor); void flash_canvas(int flush); + int show_window(int flush=1); void deactivate_timeline(); void activate_timeline(); void reset_meters(); @@ -144,6 +157,7 @@ public: int save_defaults(BC_Hash *defaults); int menu_w(); int menu_h(); + int mbuttons_w(); // Draw on the status bar only. void show_message(const char *message, int color=-1); void update_default_message(); @@ -204,6 +218,7 @@ public: MainClock *mainclock; MButtons *mbuttons; FFMpegToggle *ffmpeg_toggle; + ProxyToggle *proxy_toggle; PaneDivider *x_divider; PaneDivider *y_divider; TimelinePane *pane[TOTAL_PANES]; diff --git a/cinelerra-5.1/cinelerra/pluginlv2config.C b/cinelerra-5.1/cinelerra/pluginlv2config.C index f104be00..32721c52 100644 --- a/cinelerra-5.1/cinelerra/pluginlv2config.C +++ b/cinelerra-5.1/cinelerra/pluginlv2config.C @@ -145,6 +145,7 @@ void PluginLV2ClientConfig::reset() delete [] syms[i]; } delete [] names; names = 0; + delete [] syms; syms = 0; delete [] mins; mins = 0; delete [] maxs; maxs = 0; delete [] ctls; ctls = 0; diff --git a/cinelerra-5.1/cinelerra/proxy.C b/cinelerra-5.1/cinelerra/proxy.C index aa9c8343..3acfa422 100644 --- a/cinelerra-5.1/cinelerra/proxy.C +++ b/cinelerra-5.1/cinelerra/proxy.C @@ -24,7 +24,6 @@ #include "bcsignals.h" #include "cache.h" #include "clip.h" -#include "confirmsave.h" #include "cstrdup.h" #include "edl.h" #include "edlsession.h" @@ -49,7 +48,7 @@ #include "vrender.h" #define WIDTH 400 -#define HEIGHT 300 +#define HEIGHT 330 #define MAX_SCALE 16 ProxyMenuItem::ProxyMenuItem(MWindow *mwindow) @@ -88,12 +87,10 @@ ProxyDialog::ProxyDialog(MWindow *mwindow) size_text[0] = cstrdup(_("Original size")); size_factors[0] = 1; total_sizes = 1; - proxy_beep = 0; } ProxyDialog::~ProxyDialog() { - delete proxy_beep; close_window(); for( int i=0; iremove_user(); @@ -163,148 +160,21 @@ void ProxyDialog::calculate_sizes() void ProxyDialog::handle_close_event(int result) { + if( result ) return; + mwindow->edl->session->proxy_use_scaler = use_scaler; + mwindow->edl->session->proxy_auto_scale = auto_scale; + mwindow->edl->session->proxy_beep = beep; + mwindow->edl->session->proxy_disabled_scale = 1; asset->save_defaults(mwindow->defaults, "PROXY_", 1, 1, 0, 0, 0); - - if( !result && (result=to_proxy()) >= 0 && beep && new_scale != 1 ) - if( result > 0 ) - mwindow->beep(2000., 1.5, 0.5); - else - mwindow->beep(4000., 0.25, 0.5); -} - -int ProxyDialog::to_proxy() -{ - ArrayList orig_idxbls; - ArrayList proxy_assets; - - EDL *edl = mwindow->edl; - mwindow->edl->Garbage::add_user(); - mwindow->save_backup(); - mwindow->undo->update_undo_before(_("proxy"), this); - ProxyRender proxy_render(mwindow, asset); - -// revert project to original size from current size -// remove all session proxy assets at the at the current proxy_scale - int proxy_scale = edl->session->proxy_scale; - if( proxy_scale > 1 ) { - Asset *orig_asset = edl->assets->first; - for( ; orig_asset; orig_asset=orig_asset->next ) { - char new_path[BCTEXTLEN]; - proxy_render.to_proxy_path(new_path, orig_asset, proxy_scale); -// test if proxy asset was already added to proxy_assets - int got_it = 0; - for( int i = 0; !got_it && ipath, new_path); - if( got_it ) continue; - Asset *proxy_asset = edl->assets->get_asset(new_path); - if( !proxy_asset ) continue; -// add pointer to existing EDL asset if it exists -// EDL won't delete it unless it's the same pointer. - proxy_assets.append(proxy_asset); - proxy_asset->add_user(); - orig_idxbls.append(orig_asset); - orig_asset->add_user(); - } - for( int i=0,n=edl->nested_edls.size(); inested_edls[i]; - char new_path[BCTEXTLEN]; - if( !ProxyRender::from_proxy_path(new_path, orig_nested, proxy_scale) ) - continue; - proxy_render.to_proxy_path(new_path, orig_nested, proxy_scale); -// test if proxy asset was already added to proxy_assets - int got_it = 0; - for( int i = 0; !got_it && ipath, new_path); - if( got_it ) continue; - Asset *proxy_nested = edl->assets->get_asset(new_path); - if( !proxy_nested ) continue; -// add pointer to existing EDL asset if it exists -// EDL won't delete it unless it's the same pointer. - proxy_assets.append(proxy_nested); - proxy_nested->add_user(); - orig_idxbls.append(orig_nested); - orig_nested->add_user(); - } - -// convert from the proxy assets to the original assets - int auto_scale = edl->session->proxy_auto_scale; - int beep = edl->session->proxy_beep; - mwindow->set_proxy(0, 1, auto_scale, beep, &proxy_assets, &orig_idxbls); - -// remove the references - for( int i=0; iwidth = proxy->actual_width; - proxy->height = proxy->actual_height; - proxy->remove_user(); - mwindow->edl->assets->remove_pointer(proxy); - proxy->remove_user(); - } - proxy_assets.remove_all(); - for( int i = 0; i < orig_idxbls.size(); i++ ) - orig_idxbls[i]->remove_user(); - orig_idxbls.remove_all(); - } - - ArrayList confirm_paths; // test for new files - confirm_paths.set_array_delete(); - -// convert to new size if not original size - if( new_scale != 1 ) { - FileSystem fs; - Asset *orig = mwindow->edl->assets->first; - for( ; orig; orig=orig->next ) { - Asset *proxy = proxy_render.add_original(orig, new_scale); - if( !proxy ) continue; - int exists = fs.get_size(proxy->path) > 0 ? 1 : 0; - int got_it = exists && // if proxy exists, and is newer than orig - fs.get_date(proxy->path) > fs.get_date(orig->path) ? 1 : 0; - if( !got_it ) { - if( exists ) // prompt user to overwrite - confirm_paths.append(cstrdup(proxy->path)); - proxy_render.add_needed(orig, proxy); - } - } - for( int i=0,n=edl->nested_edls.size(); inested_edls[i]; - Asset *proxy = proxy_render.add_original(orig_nested, new_scale); - if( !proxy ) continue; - int exists = fs.get_size(proxy->path) > 0 ? 1 : 0; - int got_it = exists && // if proxy exists, and is newer than orig_nested - fs.get_date(proxy->path) > fs.get_date(orig_nested->path) ? 1 : 0; - if( !got_it ) { - if( exists ) // prompt user to overwrite - confirm_paths.append(cstrdup(proxy->path)); - proxy_render.add_needed(orig_nested, proxy); - } - } + result = mwindow->to_proxy(asset, new_scale); + if( result >= 0 && beep && new_scale != 1 ) { + static struct { double freq, secs, gain; } + tone[2] = { { 2000., 1.5, 0.5 }, { 4000., 0.25, 0.5 } }; + int i = result > 0 ? 0 : 1; + mwindow->beep(tone[i].freq, tone[i].secs, tone[i].gain); } - - int result = 0; -// test for existing files - if( confirm_paths.size() ) { - result = ConfirmSave::test_files(mwindow, &confirm_paths); - confirm_paths.remove_all_objects(); - } - - if( !result ) - result = proxy_render.create_needed_proxies(new_scale); - - if( !result ) // resize project - mwindow->set_proxy(use_scaler, new_scale, auto_scale, beep, - &proxy_render.orig_idxbls, &proxy_render.orig_proxies); - - mwindow->undo->update_undo_after(_("proxy"), LOAD_ALL); - mwindow->edl->Garbage::remove_user(); - mwindow->restart_brender(); - - mwindow->gui->lock_window("ProxyDialog::to_proxy"); - mwindow->update_project(LOADMODE_REPLACE); - mwindow->gui->unlock_window(); - return !result ? proxy_render.needed_proxies.size() : -1; } - void ProxyRender::to_proxy_path(char *new_path, Indexable *indexable, int scale) { // path is already a proxy @@ -516,6 +386,12 @@ void ProxyWindow::create_objects() add_subwindow(new_dimensions = new BC_Title(x, y, "")); y += new_dimensions->get_h() + margin; + x = margin; + add_subwindow(text = new BC_Title(x, y, _("Active Scale: "))); + x += text->get_w() + margin; + add_subwindow(active_scale = new BC_Title(x, y, "")); + y += active_scale->get_h() + margin; + x = margin; y += 25; format_tools = new ProxyFormatTools(mwindow, this, dialog->asset); format_tools->create_objects(x, y, 0, 1, 0, 0, 0, 1, 0, 1, // skip the path @@ -549,11 +425,7 @@ void ProxyFormatTools::update_format() void ProxyWindow::update() { -// preview the new size - char string[BCTEXTLEN]; -//printf("ProxyWindow::update %d %d %d %d %d\n", -// __LINE__, mwindow->edl->session->output_w, mwindow->edl->session->output_h, -// dialog->orig_scale, dialog->new_scale); + char string[BCSTRLEN]; int orig_w = mwindow->edl->session->output_w * dialog->orig_scale; int orig_h = mwindow->edl->session->output_h * dialog->orig_scale; int new_w = orig_w / dialog->new_scale; @@ -566,6 +438,10 @@ void ProxyWindow::update() scale_factor->set_text(string); use_scaler->update(); auto_scale->update(); + int scale = mwindow->edl->session->proxy_scale; + if( scale == 1 ) scale = mwindow->edl->session->proxy_disabled_scale; + sprintf(string, scale>1 ? "1/%d" : "%d", scale); + active_scale->update(string); } @@ -587,7 +463,6 @@ void ProxyUseScaler::update() int ProxyUseScaler::handle_event() { - pwindow->dialog->new_scale = 1; pwindow->dialog->use_scaler = get_value(); pwindow->scale_factor->update_sizes(); pwindow->update(); diff --git a/cinelerra-5.1/cinelerra/proxy.h b/cinelerra-5.1/cinelerra/proxy.h index b1121254..c98f2e04 100644 --- a/cinelerra-5.1/cinelerra/proxy.h +++ b/cinelerra-5.1/cinelerra/proxy.h @@ -99,7 +99,6 @@ public: void handle_close_event(int result); void from_proxy(); - int to_proxy(); // calculate possible sizes based on the original size void calculate_sizes(); void scale_to_text(char *string, int scale); @@ -108,7 +107,6 @@ public: ProxyWindow *gui; Asset *asset; ProxyRender *proxy_render; - ProxyBeep *proxy_beep; int new_scale; int orig_scale; @@ -198,6 +196,7 @@ public: ProxyDialog *dialog; FormatTools *format_tools; BC_Title *new_dimensions; + BC_Title *active_scale; ProxyMenu *scale_factor; ProxyUseScaler *use_scaler; ProxyAutoScale *auto_scale; diff --git a/cinelerra-5.1/cinelerra/theme.C b/cinelerra-5.1/cinelerra/theme.C index 9ed31959..b1deeb09 100644 --- a/cinelerra-5.1/cinelerra/theme.C +++ b/cinelerra-5.1/cinelerra/theme.C @@ -128,6 +128,7 @@ Theme::Theme() edithandleout_data = 0; extract_data = 0; ffmpeg_toggle = 0; + proxy_toggle = 0; infoasset_data = 0; in_point = 0; insert_data = 0; @@ -596,7 +597,7 @@ void Theme::get_mwindow_sizes(MWindowGUI *gui, int w, int h) { mbuttons_x = 0; mbuttons_y = gui->menu_h() + 1; - mbuttons_w = gui->menu_w(); + mbuttons_w = gui->mbuttons_w(); mbuttons_h = get_image("mbutton_bg")->get_h(); mclock_x = window_border - 5; mclock_y = mbuttons_y - 1 + mbuttons_h; diff --git a/cinelerra-5.1/cinelerra/theme.h b/cinelerra-5.1/cinelerra/theme.h index 009f396f..35dad586 100644 --- a/cinelerra-5.1/cinelerra/theme.h +++ b/cinelerra-5.1/cinelerra/theme.h @@ -325,6 +325,7 @@ public: VFrame **edithandleout_data; VFrame **extract_data; VFrame **ffmpeg_toggle; + VFrame **proxy_toggle; VFrame **infoasset_data; VFrame **in_point; VFrame **insert_data; diff --git a/cinelerra-5.1/doc/shortcuts.html b/cinelerra-5.1/doc/shortcuts.html index d360db50..59b56638 100644 --- a/cinelerra-5.1/doc/shortcuts.html +++ b/cinelerra-5.1/doc/shortcuts.html @@ -54,6 +54,18 @@ 'o' Load file(s) + +
+ - load tool + 'Alt-a' + Selects all files + + +
+ - load tool + 'Alt-z' + Deselects any selected files +
Save @@ -888,6 +900,18 @@
Lock labels from moving + +
+ Editing choice +
+ Drag and drop editing mode + + +
+ Editing choice +
+ Cut and paste editing mode +

@@ -1350,6 +1374,12 @@
Paste the last Audio transition + +
+ 'r' + 'Ctrl' + Proxy quick switch +

@@ -1446,6 +1476,24 @@ F7 Crop a layer or output + +
+ + crop tool + Click-drag + In video, starts a new rectangle + + +
+ + crop tool + Click-drag + Over rectangle corner to reposition + + +
+ + crop tool + Alt-click + In cropping rectangle to translate +
Get color @@ -1806,6 +1854,24 @@ 'g' Jump to time selected by popup + +
+
+
+
+ + + Keypresses + Key + Qualifier + Description + + +
+ Right click +
+ Brings up fullscreen/zoom/close menu +

@@ -2106,6 +2172,18 @@ Opens Load files... menu + +
+ - load tool + Ctrl-a + Selects all files + + +
+ - load tool + Ctrl-z + Deselects any selected files +

@@ -2212,7 +2290,7 @@

Double click - In Find window,centers there & turns yellow + In Find window, cursor moves to hilite program
@@ -2227,16 +2305,16 @@
- Android Remote + Remote Control MENU
- Toggle Android remote state (grabs/ungrabs keys) + Toggle remote control state (grabs/ungrabs keys)
KPTV
- Start/stop record window + Open or close the record window
diff --git a/cinelerra-5.1/plugins/theme_blond/blondtheme.C b/cinelerra-5.1/plugins/theme_blond/blondtheme.C index 93f4da0b..c6bbc6e6 100644 --- a/cinelerra-5.1/plugins/theme_blond/blondtheme.C +++ b/cinelerra-5.1/plugins/theme_blond/blondtheme.C @@ -622,6 +622,13 @@ void BlondTheme::initialize() "ff_down.png", "ff_checkedhi.png"); + proxy_toggle = new_image_set(5, + "proxy_up.png", + "proxy_hi.png", + "proxy_chkd.png", + "proxy_down.png", + "proxy_chkdhi.png"); + shbtn_data = new_image_set(3, "shbtn_up.png", "shbtn_hi.png", diff --git a/cinelerra-5.1/plugins/theme_blond/data/proxy_chkd.png b/cinelerra-5.1/plugins/theme_blond/data/proxy_chkd.png new file mode 100644 index 00000000..98430bc1 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/proxy_chkd.png differ diff --git a/cinelerra-5.1/plugins/theme_blond/data/proxy_chkdhi.png b/cinelerra-5.1/plugins/theme_blond/data/proxy_chkdhi.png new file mode 100644 index 00000000..cecf4168 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/proxy_chkdhi.png differ diff --git a/cinelerra-5.1/plugins/theme_blond/data/proxy_down.png b/cinelerra-5.1/plugins/theme_blond/data/proxy_down.png new file mode 100644 index 00000000..e9090054 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/proxy_down.png differ diff --git a/cinelerra-5.1/plugins/theme_blond/data/proxy_hi.png b/cinelerra-5.1/plugins/theme_blond/data/proxy_hi.png new file mode 100644 index 00000000..8c00e10b Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/proxy_hi.png differ diff --git a/cinelerra-5.1/plugins/theme_blond/data/proxy_up.png b/cinelerra-5.1/plugins/theme_blond/data/proxy_up.png new file mode 100644 index 00000000..042fdde9 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/proxy_up.png differ diff --git a/cinelerra-5.1/plugins/theme_blond/data/proxy_uphi.png b/cinelerra-5.1/plugins/theme_blond/data/proxy_uphi.png new file mode 100644 index 00000000..5022c257 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/proxy_uphi.png differ diff --git a/cinelerra-5.1/plugins/theme_blond_cv/blondcvtheme.C b/cinelerra-5.1/plugins/theme_blond_cv/blondcvtheme.C index fdbffc8a..cf41fdff 100644 --- a/cinelerra-5.1/plugins/theme_blond_cv/blondcvtheme.C +++ b/cinelerra-5.1/plugins/theme_blond_cv/blondcvtheme.C @@ -642,6 +642,13 @@ void BlondCVTheme::initialize() "ff_down.png", "ff_checkedhi.png"); + proxy_toggle = new_image_set(5, + "proxy_up.png", + "proxy_hi.png", + "proxy_chkd.png", + "proxy_down.png", + "proxy_chkdhi.png"); + shbtn_data = new_image_set(3, "shbtn_up.png", "shbtn_hi.png", diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_chkd.png b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_chkd.png new file mode 100644 index 00000000..98430bc1 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_chkd.png differ diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_chkdhi.png b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_chkdhi.png new file mode 100644 index 00000000..cecf4168 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_chkdhi.png differ diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_down.png b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_down.png new file mode 100644 index 00000000..e9090054 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_down.png differ diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_hi.png b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_hi.png new file mode 100644 index 00000000..8c00e10b Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_hi.png differ diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_up.png b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_up.png new file mode 100644 index 00000000..042fdde9 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_up.png differ diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_uphi.png b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_uphi.png new file mode 100644 index 00000000..5022c257 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/proxy_uphi.png differ diff --git a/cinelerra-5.1/plugins/theme_blue/bluetheme.C b/cinelerra-5.1/plugins/theme_blue/bluetheme.C index fd8d270f..6bad18b8 100644 --- a/cinelerra-5.1/plugins/theme_blue/bluetheme.C +++ b/cinelerra-5.1/plugins/theme_blue/bluetheme.C @@ -622,6 +622,13 @@ void BlueDotTheme::initialize() "ff_down.png", "ff_checkedhi.png"); + proxy_toggle = new_image_set(5, + "proxy_up.png", + "proxy_hi.png", + "proxy_chkd.png", + "proxy_down.png", + "proxy_chkdhi.png"); + shbtn_data = new_image_set(3, "shbtn_up.png", "shbtn_hi.png", diff --git a/cinelerra-5.1/plugins/theme_blue/data/proxy_chkd.png b/cinelerra-5.1/plugins/theme_blue/data/proxy_chkd.png new file mode 100644 index 00000000..98430bc1 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/proxy_chkd.png differ diff --git a/cinelerra-5.1/plugins/theme_blue/data/proxy_chkdhi.png b/cinelerra-5.1/plugins/theme_blue/data/proxy_chkdhi.png new file mode 100644 index 00000000..cecf4168 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/proxy_chkdhi.png differ diff --git a/cinelerra-5.1/plugins/theme_blue/data/proxy_down.png b/cinelerra-5.1/plugins/theme_blue/data/proxy_down.png new file mode 100644 index 00000000..e9090054 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/proxy_down.png differ diff --git a/cinelerra-5.1/plugins/theme_blue/data/proxy_hi.png b/cinelerra-5.1/plugins/theme_blue/data/proxy_hi.png new file mode 100644 index 00000000..8c00e10b Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/proxy_hi.png differ diff --git a/cinelerra-5.1/plugins/theme_blue/data/proxy_up.png b/cinelerra-5.1/plugins/theme_blue/data/proxy_up.png new file mode 100644 index 00000000..042fdde9 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/proxy_up.png differ diff --git a/cinelerra-5.1/plugins/theme_blue/data/proxy_uphi.png b/cinelerra-5.1/plugins/theme_blue/data/proxy_uphi.png new file mode 100644 index 00000000..5022c257 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/proxy_uphi.png differ diff --git a/cinelerra-5.1/plugins/theme_blue_dot/bluedottheme.C b/cinelerra-5.1/plugins/theme_blue_dot/bluedottheme.C index 64c29f78..e53f8c9c 100644 --- a/cinelerra-5.1/plugins/theme_blue_dot/bluedottheme.C +++ b/cinelerra-5.1/plugins/theme_blue_dot/bluedottheme.C @@ -667,6 +667,13 @@ void BlueDotTheme::initialize() "ff_down.png", "ff_checkedhi.png"); + proxy_toggle = new_image_set(5, + "proxy_up.png", + "proxy_hi.png", + "proxy_chkd.png", + "proxy_down.png", + "proxy_chkdhi.png"); + shbtn_data = new_image_set(3, "shbtn_up.png", "shbtn_hi.png", diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_chkd.png b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_chkd.png new file mode 100644 index 00000000..98430bc1 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_chkd.png differ diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_chkdhi.png b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_chkdhi.png new file mode 100644 index 00000000..cecf4168 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_chkdhi.png differ diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_down.png b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_down.png new file mode 100644 index 00000000..e9090054 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_down.png differ diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_hi.png b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_hi.png new file mode 100644 index 00000000..8c00e10b Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_hi.png differ diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_up.png b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_up.png new file mode 100644 index 00000000..042fdde9 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_up.png differ diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_uphi.png b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_uphi.png new file mode 100644 index 00000000..5022c257 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/proxy_uphi.png differ diff --git a/cinelerra-5.1/plugins/theme_bright/brighttheme.C b/cinelerra-5.1/plugins/theme_bright/brighttheme.C index 30a6be94..5d34edff 100644 --- a/cinelerra-5.1/plugins/theme_bright/brighttheme.C +++ b/cinelerra-5.1/plugins/theme_bright/brighttheme.C @@ -628,6 +628,13 @@ void BrightTheme::initialize() "ff_down.png", "ff_checkedhi.png"); + proxy_toggle = new_image_set(5, + "proxy_up.png", + "proxy_hi.png", + "proxy_chkd.png", + "proxy_down.png", + "proxy_chkdhi.png"); + shbtn_data = new_image_set(3, "shbtn_up.png", "shbtn_hi.png", diff --git a/cinelerra-5.1/plugins/theme_bright/data/proxy_chkd.png b/cinelerra-5.1/plugins/theme_bright/data/proxy_chkd.png new file mode 100644 index 00000000..98430bc1 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/proxy_chkd.png differ diff --git a/cinelerra-5.1/plugins/theme_bright/data/proxy_chkdhi.png b/cinelerra-5.1/plugins/theme_bright/data/proxy_chkdhi.png new file mode 100644 index 00000000..cecf4168 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/proxy_chkdhi.png differ diff --git a/cinelerra-5.1/plugins/theme_bright/data/proxy_down.png b/cinelerra-5.1/plugins/theme_bright/data/proxy_down.png new file mode 100644 index 00000000..e9090054 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/proxy_down.png differ diff --git a/cinelerra-5.1/plugins/theme_bright/data/proxy_hi.png b/cinelerra-5.1/plugins/theme_bright/data/proxy_hi.png new file mode 100644 index 00000000..8c00e10b Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/proxy_hi.png differ diff --git a/cinelerra-5.1/plugins/theme_bright/data/proxy_up.png b/cinelerra-5.1/plugins/theme_bright/data/proxy_up.png new file mode 100644 index 00000000..042fdde9 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/proxy_up.png differ diff --git a/cinelerra-5.1/plugins/theme_bright/data/proxy_uphi.png b/cinelerra-5.1/plugins/theme_bright/data/proxy_uphi.png new file mode 100644 index 00000000..5022c257 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/proxy_uphi.png differ diff --git a/cinelerra-5.1/plugins/theme_hulk/data/proxy_chkd.png b/cinelerra-5.1/plugins/theme_hulk/data/proxy_chkd.png new file mode 100644 index 00000000..98430bc1 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/proxy_chkd.png differ diff --git a/cinelerra-5.1/plugins/theme_hulk/data/proxy_chkdhi.png b/cinelerra-5.1/plugins/theme_hulk/data/proxy_chkdhi.png new file mode 100644 index 00000000..cecf4168 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/proxy_chkdhi.png differ diff --git a/cinelerra-5.1/plugins/theme_hulk/data/proxy_down.png b/cinelerra-5.1/plugins/theme_hulk/data/proxy_down.png new file mode 100644 index 00000000..e9090054 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/proxy_down.png differ diff --git a/cinelerra-5.1/plugins/theme_hulk/data/proxy_hi.png b/cinelerra-5.1/plugins/theme_hulk/data/proxy_hi.png new file mode 100644 index 00000000..8c00e10b Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/proxy_hi.png differ diff --git a/cinelerra-5.1/plugins/theme_hulk/data/proxy_up.png b/cinelerra-5.1/plugins/theme_hulk/data/proxy_up.png new file mode 100644 index 00000000..042fdde9 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/proxy_up.png differ diff --git a/cinelerra-5.1/plugins/theme_hulk/data/proxy_uphi.png b/cinelerra-5.1/plugins/theme_hulk/data/proxy_uphi.png new file mode 100644 index 00000000..5022c257 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/proxy_uphi.png differ diff --git a/cinelerra-5.1/plugins/theme_hulk/hulktheme.C b/cinelerra-5.1/plugins/theme_hulk/hulktheme.C index de88591f..fffc6b45 100644 --- a/cinelerra-5.1/plugins/theme_hulk/hulktheme.C +++ b/cinelerra-5.1/plugins/theme_hulk/hulktheme.C @@ -623,6 +623,13 @@ void HULKTHEME::initialize() "ff_down.png", "ff_checkedhi.png"); + proxy_toggle = new_image_set(5, + "proxy_up.png", + "proxy_hi.png", + "proxy_chkd.png", + "proxy_down.png", + "proxy_chkdhi.png"); + shbtn_data = new_image_set(3, "shbtn_up.png", "shbtn_hi.png", diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/proxy_chkd.png b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_chkd.png new file mode 100644 index 00000000..98430bc1 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_chkd.png differ diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/proxy_chkdhi.png b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_chkdhi.png new file mode 100644 index 00000000..cecf4168 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_chkdhi.png differ diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/proxy_down.png b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_down.png new file mode 100644 index 00000000..e9090054 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_down.png differ diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/proxy_hi.png b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_hi.png new file mode 100644 index 00000000..8c00e10b Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_hi.png differ diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/proxy_up.png b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_up.png new file mode 100644 index 00000000..042fdde9 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_up.png differ diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/proxy_uphi.png b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_uphi.png new file mode 100644 index 00000000..5022c257 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/proxy_uphi.png differ diff --git a/cinelerra-5.1/plugins/theme_pinklady/pinkladytheme.C b/cinelerra-5.1/plugins/theme_pinklady/pinkladytheme.C index f46efad7..73adc37b 100644 --- a/cinelerra-5.1/plugins/theme_pinklady/pinkladytheme.C +++ b/cinelerra-5.1/plugins/theme_pinklady/pinkladytheme.C @@ -608,6 +608,13 @@ void PINKLADY::initialize() "ff_down.png", "ff_checkedhi.png"); + proxy_toggle = new_image_set(5, + "proxy_up.png", + "proxy_hi.png", + "proxy_chkd.png", + "proxy_down.png", + "proxy_chkdhi.png"); + shbtn_data = new_image_set(3, "shbtn_up.png", "shbtn_hi.png", diff --git a/cinelerra-5.1/plugins/theme_suv/data/proxy_chkd.png b/cinelerra-5.1/plugins/theme_suv/data/proxy_chkd.png new file mode 100644 index 00000000..98430bc1 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/proxy_chkd.png differ diff --git a/cinelerra-5.1/plugins/theme_suv/data/proxy_chkdhi.png b/cinelerra-5.1/plugins/theme_suv/data/proxy_chkdhi.png new file mode 100644 index 00000000..cecf4168 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/proxy_chkdhi.png differ diff --git a/cinelerra-5.1/plugins/theme_suv/data/proxy_down.png b/cinelerra-5.1/plugins/theme_suv/data/proxy_down.png new file mode 100644 index 00000000..e9090054 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/proxy_down.png differ diff --git a/cinelerra-5.1/plugins/theme_suv/data/proxy_hi.png b/cinelerra-5.1/plugins/theme_suv/data/proxy_hi.png new file mode 100644 index 00000000..8c00e10b Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/proxy_hi.png differ diff --git a/cinelerra-5.1/plugins/theme_suv/data/proxy_up.png b/cinelerra-5.1/plugins/theme_suv/data/proxy_up.png new file mode 100644 index 00000000..042fdde9 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/proxy_up.png differ diff --git a/cinelerra-5.1/plugins/theme_suv/data/proxy_uphi.png b/cinelerra-5.1/plugins/theme_suv/data/proxy_uphi.png new file mode 100644 index 00000000..5022c257 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/proxy_uphi.png differ diff --git a/cinelerra-5.1/plugins/theme_suv/suv.C b/cinelerra-5.1/plugins/theme_suv/suv.C index 15a95b4c..876e3ab2 100644 --- a/cinelerra-5.1/plugins/theme_suv/suv.C +++ b/cinelerra-5.1/plugins/theme_suv/suv.C @@ -609,6 +609,13 @@ void SUV::initialize() "ff_down.png", "ff_checkedhi.png"); + proxy_toggle = new_image_set(5, + "proxy_up.png", + "proxy_hi.png", + "proxy_chkd.png", + "proxy_down.png", + "proxy_chkdhi.png"); + shbtn_data = new_image_set(3, "shbtn_up.png", "shbtn_hi.png", diff --git a/cinelerra-5.1/plugins/theme_unflat/data/proxy_chkd.png b/cinelerra-5.1/plugins/theme_unflat/data/proxy_chkd.png new file mode 100644 index 00000000..98430bc1 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/proxy_chkd.png differ diff --git a/cinelerra-5.1/plugins/theme_unflat/data/proxy_chkdhi.png b/cinelerra-5.1/plugins/theme_unflat/data/proxy_chkdhi.png new file mode 100644 index 00000000..cecf4168 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/proxy_chkdhi.png differ diff --git a/cinelerra-5.1/plugins/theme_unflat/data/proxy_down.png b/cinelerra-5.1/plugins/theme_unflat/data/proxy_down.png new file mode 100644 index 00000000..e9090054 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/proxy_down.png differ diff --git a/cinelerra-5.1/plugins/theme_unflat/data/proxy_hi.png b/cinelerra-5.1/plugins/theme_unflat/data/proxy_hi.png new file mode 100644 index 00000000..8c00e10b Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/proxy_hi.png differ diff --git a/cinelerra-5.1/plugins/theme_unflat/data/proxy_up.png b/cinelerra-5.1/plugins/theme_unflat/data/proxy_up.png new file mode 100644 index 00000000..042fdde9 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/proxy_up.png differ diff --git a/cinelerra-5.1/plugins/theme_unflat/data/proxy_uphi.png b/cinelerra-5.1/plugins/theme_unflat/data/proxy_uphi.png new file mode 100644 index 00000000..5022c257 Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/proxy_uphi.png differ diff --git a/cinelerra-5.1/plugins/theme_unflat/unflattheme.C b/cinelerra-5.1/plugins/theme_unflat/unflattheme.C index 81c593ae..7ef924e9 100644 --- a/cinelerra-5.1/plugins/theme_unflat/unflattheme.C +++ b/cinelerra-5.1/plugins/theme_unflat/unflattheme.C @@ -617,6 +617,13 @@ void UNFLATTHEME::initialize() "ff_down.png", "ff_checkedhi.png"); + proxy_toggle = new_image_set(5, + "proxy_up.png", + "proxy_hi.png", + "proxy_chkd.png", + "proxy_down.png", + "proxy_chkdhi.png"); + shbtn_data = new_image_set(3, "shbtn_up.png", "shbtn_hi.png",