1 #include "confirmsave.h"
7 #include "fileformat.h"
11 #include "mwindowgui.h"
13 #include "mainsession.h"
18 #define _(String) gettext(String)
19 #define gettext_noop(String) String
20 #define N_(String) gettext_noop (String)
30 SaveBackup::SaveBackup(MWindow *mwindow)
31 : BC_MenuItem(_("Save backup"))
33 this->mwindow = mwindow;
35 int SaveBackup::handle_event()
37 mwindow->save_backup();
38 mwindow->gui->show_message(_("Saved backup."));
52 Save::Save(MWindow *mwindow) : BC_MenuItem(_("Save"), "s", 's')
54 this->mwindow = mwindow;
58 int Save::create_objects(SaveAs *saveas)
60 this->saveas = saveas;
64 int Save::handle_event()
66 if(mwindow->session->filename[0] == 0)
73 // TODO: Move this into mwindow.
75 mwindow->edl->save_xml(mwindow->plugindb,
77 mwindow->session->filename,
80 file.terminate_string();
82 if(file.write_to_file(mwindow->session->filename))
85 sprintf(string2, _("Couldn't open %s"), mwindow->session->filename);
86 ErrorBox error(PROGRAM_NAME ": Error",
87 mwindow->gui->get_abs_cursor_x(),
88 mwindow->gui->get_abs_cursor_y());
89 error.create_objects(string2);
95 char string[BCTEXTLEN];
96 sprintf(string, _("\"%s\" %dC written"), mwindow->session->filename, strlen(file.string));
97 mwindow->gui->show_message(string, BLACK);
99 mwindow->session->changes_made = 0;
100 if(saveas->quit_now) mwindow->gui->set_done(0);
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_path());
149 strcpy(filename, window->get_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
163 if(in = fopen(filename, "rb"))
166 ConfirmSaveWindow cwindow(mwindow, filename);
167 cwindow.create_objects();
168 int result2 = cwindow.run_window();
169 if(result2) result = 1;
171 }while(result); // file exists so repeat
173 //printf("SaveAs::run 6 %s\n", filename);
180 mwindow->set_filename(filename); // update the project name
181 mwindow->edl->save_xml(mwindow->plugindb,
186 file.terminate_string();
188 if(file.write_to_file(filename))
191 mwindow->set_filename(""); // update the project name
192 sprintf(string2, _("Couldn't open %s."), filename);
193 ErrorBox error(PROGRAM_NAME ": Error",
194 mwindow->gui->get_abs_cursor_x(),
195 mwindow->gui->get_abs_cursor_y());
196 error.create_objects(string2);
202 char string[BCTEXTLEN];
203 sprintf(string, _("\"%s\" %dC written"), filename, strlen(file.string));
204 mwindow->gui->lock_window();
205 mwindow->gui->show_message(string, BLACK);
206 mwindow->gui->unlock_window();
210 mwindow->session->changes_made = 0;
211 mmenu->add_load(filename);
212 if(quit_now) mwindow->gui->set_done(0);
223 SaveFileWindow::SaveFileWindow(MWindow *mwindow, char *init_directory)
224 : BC_FileBox(mwindow->gui->get_abs_cursor_x(),
225 mwindow->gui->get_abs_cursor_y() - BC_WindowBase::get_resources()->filebox_h / 2,
227 PROGRAM_NAME ": Save",
228 _("Enter a filename to save as"))
230 this->mwindow = mwindow;
233 SaveFileWindow::~SaveFileWindow() {}