1 #include "confirmsave.h"
7 #include "fileformat.h"
12 #include "mwindowgui.h"
13 #include "playback3d.h"
15 #include "mainsession.h"
27 SaveBackup::SaveBackup(MWindow *mwindow)
28 : BC_MenuItem(_("Save backup"))
30 this->mwindow = mwindow;
32 int SaveBackup::handle_event()
34 mwindow->save_backup();
35 mwindow->gui->show_message(_("Saved backup."));
49 Save::Save(MWindow *mwindow) : BC_MenuItem(_("Save"), "s", 's')
51 this->mwindow = mwindow;
55 int Save::create_objects(SaveAs *saveas)
57 this->saveas = saveas;
61 int Save::handle_event()
63 if(mwindow->session->filename[0] == 0)
70 // TODO: Move this into mwindow.
72 mwindow->edl->save_xml(mwindow->plugindb,
74 mwindow->session->filename,
77 file.terminate_string();
79 if(file.write_to_file(mwindow->session->filename))
82 sprintf(string2, _("Couldn't open %s"), mwindow->session->filename);
83 ErrorBox error(PROGRAM_NAME ": Error",
84 mwindow->gui->get_abs_cursor_x(1),
85 mwindow->gui->get_abs_cursor_y(1));
86 error.create_objects(string2);
93 char string[BCTEXTLEN];
94 sprintf(string, _("\"%s\" %dC written"), mwindow->session->filename, strlen(file.string));
95 mwindow->gui->show_message(string);
97 mwindow->session->changes_made = 0;
98 // Last command in program
99 // if(saveas->quit_now) mwindow->gui->set_done(0);
100 if(saveas->quit_now) mwindow->playback_3d->quit();
105 int Save::save_before_quit()
107 saveas->quit_now = 1;
112 SaveAs::SaveAs(MWindow *mwindow)
113 : BC_MenuItem(_("Save as..."), ""), Thread()
115 this->mwindow = mwindow;
119 int SaveAs::set_mainmenu(MainMenu *mmenu)
125 int SaveAs::handle_event()
134 // ======================================= get path from user
136 //printf("SaveAs::run 1\n");
137 char directory[1024], filename[1024];
138 sprintf(directory, "~");
139 mwindow->defaults->get("DIRECTORY", directory);
141 // Loop if file exists
143 SaveFileWindow *window;
145 window = new SaveFileWindow(mwindow, directory);
146 window->create_objects();
147 result = window->run_window();
148 mwindow->defaults->update("DIRECTORY", window->get_submitted_path());
149 strcpy(filename, window->get_submitted_path());
152 // Extend the filename with .xml
153 if(strlen(filename) < 4 ||
154 strcasecmp(&filename[strlen(filename) - 4], ".xml"))
156 strcat(filename, ".xml");
159 // ======================================= try to save it
160 if(filename[0] == 0) return; // no filename given
161 if(result == 1) return; // user cancelled
162 result = ConfirmSave::test_file(mwindow, filename);
163 }while(result); // file exists so repeat
165 //printf("SaveAs::run 6 %s\n", filename);
172 mwindow->set_filename(filename); // update the project name
173 mwindow->edl->save_xml(mwindow->plugindb,
178 file.terminate_string();
180 if(file.write_to_file(filename))
183 mwindow->set_filename(""); // update the project name
184 sprintf(string2, _("Couldn't open %s."), filename);
185 ErrorBox error(PROGRAM_NAME ": Error",
186 mwindow->gui->get_abs_cursor_x(1),
187 mwindow->gui->get_abs_cursor_y(1));
188 error.create_objects(string2);
189 error.raise_window();
195 char string[BCTEXTLEN];
196 sprintf(string, _("\"%s\" %dC written"), filename, strlen(file.string));
197 mwindow->gui->lock_window();
198 mwindow->gui->show_message(string);
199 mwindow->gui->unlock_window();
203 mwindow->session->changes_made = 0;
204 mmenu->add_load(filename);
205 // Last command in program
206 // if(quit_now) mwindow->gui->set_done(0);
207 if(quit_now) mwindow->playback_3d->quit();
218 SaveFileWindow::SaveFileWindow(MWindow *mwindow, char *init_directory)
219 : BC_FileBox(mwindow->gui->get_abs_cursor_x(1),
220 mwindow->gui->get_abs_cursor_y(1) - BC_WindowBase::get_resources()->filebox_h / 2,
222 PROGRAM_NAME ": Save",
223 _("Enter a filename to save as"))
225 this->mwindow = mwindow;
228 SaveFileWindow::~SaveFileWindow() {}