delete mwindow before restarting for new theme
[goodguy/history.git] / cinelerra-5.0 / cinelerra / preferencesthread.C
index e8d96bbcf5ebabf7163a83f53a2e0cccd34443cd..e59a099d7ad1e5d0576f4c9617e428e7b4f1558c 100644 (file)
@@ -49,6 +49,7 @@
 #include "playbackprefs.h"
 #include "preferences.h"
 #include "recordprefs.h"
+#include "shbtnprefs.h"
 #include "theme.h"
 #include "trackcanvas.h"
 #include "transportque.h"
@@ -64,7 +65,7 @@
 
 
 PreferencesMenuitem::PreferencesMenuitem(MWindow *mwindow)
- : BC_MenuItem(_("Preferences..."), "Shift+P", 'P')
+ : BC_MenuItem(_("Preferences..."), _("Shift+P"), 'P')
 {
        this->mwindow = mwindow; 
 
@@ -99,6 +100,7 @@ PreferencesThread::PreferencesThread(MWindow *mwindow)
 
 PreferencesThread::~PreferencesThread()
 {
+       close_window();
 }
 
 BC_Window* PreferencesThread::new_gui()
@@ -151,6 +153,8 @@ void PreferencesThread::handle_close_event(int result)
        edl = 0;
 
        mwindow->defaults->update("DEFAULTPREF", current_dialog);
+       if( mwindow->restart() )
+               mwindow->gui->set_done(0);
 }
 
 
@@ -197,10 +201,9 @@ int PreferencesThread::apply_settings()
                (*this_aconfig != *aconfig) || (*this_vconfig != *vconfig) ||
                !preferences->brender_asset->equivalent(*mwindow->preferences->brender_asset, 0, 1);
 
-       if( preferences->file_forking != mwindow->preferences->file_forking ) {
-               MainError::show_error(
-                       _("Reseting file forking requires restarting cinelerra"));
-       }
+       if( strcmp(preferences->theme, mwindow->preferences->theme) != 0 )
+               mwindow->restart_status = -1; // reload, need new bcresources
+
        mwindow->edl->copy_session(edl, 1);
        mwindow->preferences->copy_from(preferences);
        mwindow->init_brender();
@@ -209,7 +212,8 @@ int PreferencesThread::apply_settings()
        BC_Signals::set_catch_intr(mwindow->preferences->trap_sigintr);
 
        mwindow->reset_android_remote();
-       mwindow->gui->mbuttons->ffmpeg_toggle->update(mwindow->preferences->ffmpeg_early_probe);
+       mwindow->gui->ffmpeg_toggle->update(mwindow->preferences->ffmpeg_early_probe);
+       mwindow->gui->mainshbtns->load(mwindow->preferences);
 
 //edl->session->recording_format->dump();
 //mwindow->edl->session->recording_format->dump();
@@ -349,7 +353,7 @@ PreferencesWindow::PreferencesWindow(MWindow *mwindow,
        PreferencesThread *thread,
        int x,
        int y)
- : BC_Window(PROGRAM_NAME ": Preferences"
+ : BC_Window(_(PROGRAM_NAME ": Preferences")
        x,
        y,
        WIDTH,