add binfolder path relative filters, fix gbrp color model, vwdw timebar tweaks, title...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mwindowgui.C
index f27896434edf87f15a9e511f2d98937690bb1093..66f118714a3636111bcbb06e651c85ab2d7a2bf6 100644 (file)
@@ -251,6 +251,7 @@ void MWindowGUI::get_scrollbars(int flush)
 
 void MWindowGUI::create_objects()
 {
+       lock_window("MWindowGUI::create_objects");
        const int debug = 0;
 
        resource_thread = new ResourceThread(mwindow, this);
@@ -373,6 +374,7 @@ void MWindowGUI::create_objects()
        pane[TOP_LEFT_PANE]->canvas->activate();
 
        if(debug) printf("MWindowGUI::create_objects %d\n", __LINE__);
+       unlock_window();
 }
 
 void MWindowGUI::redraw_time_dependancies()
@@ -662,6 +664,29 @@ void MWindowGUI::update_patchbay()
        }
 }
 
+void MWindowGUI::update_proxy_toggle()
+{
+       int value = mwindow->edl->session->proxy_scale == 1 ? 1 : 0;
+       proxy_toggle->set_value(value);
+       if( mwindow->edl->session->proxy_scale == 1 &&
+           mwindow->edl->session->proxy_disabled_scale == 1 )
+               proxy_toggle->hide();
+       else
+               proxy_toggle->show();
+}
+
+void MWindowGUI::update_plugintoggles()
+{
+       for(int i = 0; i < TOTAL_PANES; i++)
+       {
+               if(pane[i])
+               {
+                       pane[i]->canvas->refresh_plugintoggles();
+               }
+       }
+
+}
+
 void MWindowGUI::draw_indexes(Indexable *indexable)
 {
        for(int i = 0; i < TOTAL_PANES; i++)
@@ -711,11 +736,7 @@ 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();
+       update_proxy_toggle();
        return ret;
 }
 
@@ -774,18 +795,6 @@ void MWindowGUI::set_playing_back(int value)
        }
 }
 
-void MWindowGUI::update_plugintoggles()
-{
-       for(int i = 0; i < TOTAL_PANES; i++)
-       {
-               if(pane[i])
-               {
-                       pane[i]->canvas->refresh_plugintoggles();
-               }
-       }
-
-}
-
 void MWindowGUI::update_scrollbars(int flush)
 {
        for(int i = 0; i < TOTAL_PANES; i++)
@@ -1402,14 +1411,6 @@ 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)
@@ -2391,15 +2392,36 @@ int FFMpegToggle::handle_event()
 
 
 ProxyToggle::ProxyToggle(MWindow *mwindow, MButtons *mbuttons, int x, int y)
- : BC_Toggle(x, y, mwindow->theme->proxy_toggle,
+ : BC_Toggle(x, y, ( !mwindow->edl->session->proxy_use_scaler ?
+                       mwindow->theme->proxy_p_toggle :
+                       mwindow->theme->proxy_s_toggle ),
                mwindow->edl->session->proxy_disabled_scale != 1)
 {
        this->mwindow = mwindow;
        this->mbuttons = mbuttons;
+       scaler_images = mwindow->edl->session->proxy_use_scaler;
        set_tooltip(mwindow->edl->session->proxy_disabled_scale==1 ?
                _("Disable proxy") : _("Enable proxy"));
 }
 
+void ProxyToggle::show()
+{
+       int use_scaler = mwindow->edl->session->proxy_use_scaler;
+       if( scaler_images != use_scaler )
+               set_images(!(scaler_images=use_scaler) ?
+                       mwindow->theme->proxy_p_toggle :
+                       mwindow->theme->proxy_s_toggle );
+       draw_face(1, 0);
+       if( is_hidden() )
+               show_window();
+}
+
+void ProxyToggle::hide()
+{
+       if( !is_hidden() )
+               hide_window();
+}
+
 ProxyToggle::~ProxyToggle()
 {
 }