switch move/swap tracks, add mv trk shortcut, update msg
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / main.C
index 42207c557b05bad7ef99ee0fa27aa7c16079adf2..0def64b724aab1bc01c416d0bafc0aad3a04b3a9 100644 (file)
@@ -22,6 +22,7 @@
 #include "arraylist.h"
 #include "batchrender.h"
 #include "bcsignals.h"
+#include "cstrdup.h"
 #include "edl.h"
 #include "file.h"
 #include "filexml.h"
@@ -167,7 +168,8 @@ int main(int argc, char *argv[])
        batch_path[0] = 0;
        deamon_path[0] = 0;
        Units::init();
-
+       const char *lang = getenv("LANGUAGE");
+       if( lang ) lang = cstrdup(lang);
        File::init_cin_path();
        const char *locale_path = File::get_locale_path();
        const char *cin = File::get_cin();
@@ -363,7 +365,7 @@ int main(int argc, char *argv[])
                                MWindow mwindow;
                                mwindow.create_objects(1, !filenames.total, config_path);
                                CommandLineThread *thread  = 0;
-                               if( mwindow.preferences->perpetual_session && load_perpetual )
+                               if( load_perpetual )
                                        mwindow.load_undo_data();
 //SET_TRACE
 // load the initial files on seperate tracks
@@ -397,16 +399,18 @@ int main(int argc, char *argv[])
                                }
                                if( restart <= 0 )
                                        done = 1;
-
                                mwindow.save_defaults();
-                               if( mwindow.preferences->perpetual_session )
-                                       mwindow.save_undo_data();
+                               mwindow.save_undo_data();
 //PRINT_TRACE
                                filenames.remove_all_objects();
                                delete thread;
                        }
 
                        if( restart < 0 ) {
+                               if( lang ) // reset to cmdline state
+                                       setenv("LANGUAGE", lang, 1);
+                               else
+                                       unsetenv("LANGUAGE");
                                char exe_path[BCTEXTLEN];
                                int len = readlink("/proc/self/exe", exe_path, sizeof(exe_path)-1);
                                if( len < 0 ) break;
@@ -424,6 +428,7 @@ DISABLE_BUFFER
        }
 
        filenames.remove_all_objects();
+       delete [] lang;
        Units::finit();
        BC_WindowBase::finit_resources();