X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindow.C;h=988e49a3cd908e8abd339ad797ac2e61a20f4007;hb=caf23b6b8e0024c33390ddaa165e11956e66f1c2;hp=cf9988903e223b44a15faf73eb77086f701cd79e;hpb=32a609a6bd1181993569399ab51f314dc7cb4fba;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index cf998890..988e49a3 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -2139,14 +2139,12 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); session->group_number += groups; switch( edl_mode ) { case LOADMODE_EDL_CLIP: { - sprintf(new_edl->local_session->clip_title, _("Clip %d"), - session->clip_number++); - char string[BCSTRLEN]; - time_t t; time(&t); - ctime_r(&t, string); - snprintf(new_edl->local_session->clip_notes, - sizeof(new_edl->local_session->clip_notes), - +("%sFrom: %s"), string, filename); + strcpy(new_edl->local_session->clip_title, + filenames->get(i)); + struct stat st; + time_t t = !stat(filenames->get(i),&st) ? + st.st_mtime : time(&t); + ctime_r(&t, new_edl->local_session->clip_notes); switch( load_mode ) { case LOADMODE_REPLACE: case LOADMODE_REPLACE_CONCATENATE: @@ -4124,6 +4122,7 @@ void MWindow::save_backup() sprintf(string2, _("Couldn't open %s for writing."), backup_path); gui->show_message(string2); } + save_undo_data(); } void MWindow::load_backup() @@ -4151,8 +4150,8 @@ void MWindow::load_backup() void MWindow::save_undo_data() { - undo_before(); - undo_after(_("perpetual session"), LOAD_ALL); + if( stack.size() > 0 ) return; + if( !preferences->perpetual_session ) return; char perpetual_path[BCTEXTLEN]; snprintf(perpetual_path, sizeof(perpetual_path), "%s/%s", File::get_config_path(), PERPETUAL_FILE); @@ -4164,15 +4163,27 @@ void MWindow::save_undo_data() void MWindow::load_undo_data() { + if( stack.size() > 0 ) return; + if( !preferences->perpetual_session ) return; char perpetual_path[BCTEXTLEN]; snprintf(perpetual_path, sizeof(perpetual_path), "%s/%s", File::get_config_path(), PERPETUAL_FILE); FILE *fp = fopen(perpetual_path,"r"); if( !fp ) return; undo->load(fp); + undo_before(); + undo_after(_("perpetual load"), LOAD_ALL); fclose(fp); } +void MWindow::remove_undo_data() +{ + if( stack.size() > 0 ) return; + char perpetual_path[BCTEXTLEN]; + snprintf(perpetual_path, sizeof(perpetual_path), "%s/%s", + File::get_config_path(), PERPETUAL_FILE); + ::remove(perpetual_path); +} int MWindow::copy_target(const char *path, const char *target) { @@ -4276,7 +4287,10 @@ void MWindow::save_project(const char *dir, int save_mode, int overwrite, int re char progress_title[BCTEXTLEN]; sprintf(progress_title, _("Saving to %s:\n"), dir); int total_assets = save_edl->assets->total(); + gui->lock_window("MWindow::save_project"); MainProgressBar *progress = mainprogress->start_progress(progress_title, total_assets); + gui->unlock_window(); + int ret = 0; Asset *current = save_edl->assets->first; for( int i=0; !ret && current; ++i, current=NEXT ) {