X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fsavefile.C;fp=cinelerra-5.1%2Fcinelerra%2Fsavefile.C;h=a40fcac2aa7d53cb7a7b5b076fe4b637f0bb99b9;hp=552f2d353e9cf3b43745c1e9c1970c1715b92542;hb=9b18af02dc4ccbf052ef9d70180a3d16c0f9848b;hpb=21af3206552d78919dad02f83c08439bedb05c89 diff --git a/cinelerra-5.1/cinelerra/savefile.C b/cinelerra-5.1/cinelerra/savefile.C index 552f2d35..a40fcac2 100644 --- a/cinelerra-5.1/cinelerra/savefile.C +++ b/cinelerra-5.1/cinelerra/savefile.C @@ -65,37 +65,10 @@ void Save::create_objects(SaveAs *saveas) int Save::handle_event() { - if(mwindow->session->filename[0] == 0) - { - saveas->start(); - } - else - { -// save it -// TODO: Move this into mwindow. - FileXML file; - mwindow->edl->save_xml(&file, mwindow->session->filename); - file.terminate_string(); - - if(file.write_to_file(mwindow->session->filename)) - { - char string2[256]; - sprintf(string2, _("Couldn't open %s"), mwindow->session->filename); - ErrorBox error(_(PROGRAM_NAME ": Error"), - mwindow->gui->get_abs_cursor_x(1), - mwindow->gui->get_abs_cursor_y(1)); - error.create_objects(string2); - error.raise_window(); - error.run_window(); - return 1; - } - else - { - char string[BCTEXTLEN]; - sprintf(string, _("\"%s\" %dC written"), - mwindow->session->filename, (int)strlen(file.string())); - mwindow->gui->show_message(string); - } + mwindow->gui->unlock_window(); + int ret = mwindow->save(0); + mwindow->gui->lock_window("Save::handle_event"); + if( !ret ) { mwindow->session->changes_made = 0; // Last command in program if( saveas->quit_now ) @@ -136,99 +109,15 @@ int SaveAs::handle_event() void SaveAs::run() { -// ======================================= get path from user - int result; -//printf("SaveAs::run 1\n"); - char directory[1024], filename[1024]; - sprintf(directory, "~"); - mwindow->defaults->get("DIRECTORY", directory); - -// Loop if file exists - do{ - SaveFileWindow *window; - - window = new SaveFileWindow(mwindow, directory); - window->lock_window("SaveAs::run"); - window->create_objects(); - window->unlock_window(); - result = window->run_window(); - mwindow->defaults->update("DIRECTORY", window->get_submitted_path()); - strcpy(filename, window->get_submitted_path()); - delete window; - -// Extend the filename with .xml - if(strlen(filename) < 4 || - strcasecmp(&filename[strlen(filename) - 4], ".xml")) - { - strcat(filename, ".xml"); - } - -// ======================================= try to save it - if(filename[0] == 0) return; // no filename given - if(result == 1) return; // user cancelled - result = ConfirmSave::test_file(mwindow, filename); - }while(result); // file exists so repeat - -//printf("SaveAs::run 6 %s\n", filename); - - - - -// save it - FileXML file; - mwindow->gui->lock_window("SaveAs::run 1"); -// update the project name - mwindow->set_filename(filename); - mwindow->edl->save_xml(&file, filename); - mwindow->gui->unlock_window(); - file.terminate_string(); - - if(file.write_to_file(filename)) - { - char string2[256]; - mwindow->set_filename(""); // update the project name - sprintf(string2, _("Couldn't open %s."), filename); - ErrorBox error(_(PROGRAM_NAME ": Error"), - mwindow->gui->get_abs_cursor_x(1), - mwindow->gui->get_abs_cursor_y(1)); - error.create_objects(string2); - error.raise_window(); - error.run_window(); + if( mwindow->save(1) ) return; - } - else - { - char string[BCTEXTLEN]; - sprintf(string, _("\"%s\" %dC written"), filename, (int)strlen(file.string())); - mwindow->gui->lock_window("SaveAs::run 2"); - mwindow->gui->show_message(string); - mwindow->gui->unlock_window(); - } - - mwindow->session->changes_made = 0; - mmenu->add_load(filename); -// Last command in program if( quit_now ) mwindow->quit(); return; } -SaveFileWindow::SaveFileWindow(MWindow *mwindow, char *init_directory) - : BC_FileBox(mwindow->gui->get_abs_cursor_x(1), - mwindow->gui->get_abs_cursor_y(1) - BC_WindowBase::get_resources()->filebox_h / 2, - init_directory, - _(PROGRAM_NAME ": Save"), - _("Enter a filename to save as")) -{ - this->mwindow = mwindow; -} - -SaveFileWindow::~SaveFileWindow() {} - - - int SaveProjectModeItem::handle_event() { ((SaveProjectMode *)get_popup_menu())->update(id);