#include "confirmsave.h"
#include "bchash.h"
+#include "bcrecentlist.h"
#include "edl.h"
-#include "errorbox.h"
#include "file.h"
#include "filexml.h"
#include "fileformat.h"
#include "indexfile.h"
#include "language.h"
+#include "mainerror.h"
#include "mainmenu.h"
#include "mwindow.h"
#include "mwindowgui.h"
SaveBackup::SaveBackup(MWindow *mwindow)
- : BC_MenuItem(_("Save backup"))
+ : BC_MenuItem(_("Save backup"), "b", 'b')
{
this->mwindow = mwindow;
}
// save it
// TODO: Move this into mwindow.
FileXML file;
- mwindow->edl->save_xml(&file,
- mwindow->session->filename,
- 0,
- 0);
+ mwindow->edl->save_xml(&file, mwindow->session->filename);
file.terminate_string();
if(file.write_to_file(mwindow->session->filename))
mwindow->gui->lock_window("SaveAs::run 1");
// update the project name
mwindow->set_filename(filename);
- mwindow->edl->save_xml(&file,
- filename,
- 0,
- 0);
+ mwindow->edl->save_xml(&file, filename);
mwindow->gui->unlock_window();
file.terminate_string();
}
+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);
+ return 1;
+}
+SaveProjectMode::SaveProjectMode(SaveProjectWindow *gui, int x, int y)
+ : BC_PopupMenu(x, y, 100, "")
+{
+ this->gui = gui;
+ save_modes[SAVE_PROJECT_COPY] = _("Copy");
+ save_modes[SAVE_PROJECT_SYMLINK] = _("SymLink");
+ save_modes[SAVE_PROJECT_RELLINK] = _("RelLink");
+}
+SaveProjectMode::~SaveProjectMode()
+{
+}
+void SaveProjectMode::create_objects()
+{
+ add_item(new SaveProjectModeItem(save_modes[SAVE_PROJECT_COPY], SAVE_PROJECT_COPY));
+ add_item(new SaveProjectModeItem(save_modes[SAVE_PROJECT_SYMLINK], SAVE_PROJECT_SYMLINK));
+ add_item(new SaveProjectModeItem(save_modes[SAVE_PROJECT_RELLINK], SAVE_PROJECT_RELLINK));
+ set_text(save_modes[gui->save_mode]);
+}
+void SaveProjectMode::update(int mode)
+{
+ if( gui->save_mode == mode ) return;
+ set_text(save_modes[gui->save_mode = mode]);
+}
-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"))
+SaveProjectTextBox::SaveProjectTextBox(SaveProjectWindow *gui, int x, int y, int w)
+ : BC_TextBox(x, y, w, 1, gui->dir_path)
+{
+ this->gui = gui;
+}
+SaveProjectTextBox::~SaveProjectTextBox()
+{
+}
+
+int SaveProjectTextBox::handle_event()
+{
+ return 1;
+}
+
+SaveProjectWindow::SaveProjectWindow(MWindow *mwindow, const char *dir_path,
+ int save_mode, int overwrite, int reload)
+ : BC_Window(_(PROGRAM_NAME ": Export Project"),
+ mwindow->gui->get_abs_cursor_x(1),
+ mwindow->gui->get_abs_cursor_y(1) -
+ BC_WindowBase::get_resources()->filebox_h / 2,
+ 540, 220, 540, 220, 0)
{
this->mwindow = mwindow;
+ strcpy(this->dir_path, dir_path);
+ this->overwrite = overwrite;
+ this->save_mode = save_mode;
+ this->reload = reload;
+}
+SaveProjectWindow::~SaveProjectWindow()
+{
}
-SaveFileWindow::~SaveFileWindow() {}
+void SaveProjectWindow::create_objects()
+{
+ int x = 20, y = 20, x1 = get_w()-80;
+ BC_Title *title;
+ add_subwindow(title = new BC_Title(x, y, _("Project Directory:")));
+ y += title->get_h() + 10;
+ add_subwindow(textbox = new SaveProjectTextBox(this, x, y, x1-x));
+ x1 += 10;
+ add_subwindow(recent_project = new BC_RecentList("RECENT_PROJECT",
+ mwindow->defaults, textbox, 10, x1, y, 300, 100));
+ recent_project->load_items("RECENT_PROJECT");
+ x1 += recent_project->get_w() + 10;
+ add_subwindow(browse_button = new BrowseButton(mwindow->theme, this,
+ textbox, x1, y-5, "", "", "", 1));
+ y += textbox->get_h() + 20;
+ add_subwindow(mode_popup = new SaveProjectMode(this, x, y));
+ mode_popup->create_objects();
+ y += mode_popup->get_h() + 10;
+ x1 = x;
+ BC_CheckBox *overwrite_files, *reload_project;
+ add_subwindow(overwrite_files = new BC_CheckBox(x1, y, &overwrite, _("Overwrite files")));
+ x1 += overwrite_files->get_w() + 20;
+ add_subwindow(reload_project = new BC_CheckBox(x1, y, &reload, _("Reload project")));
+ add_subwindow(new BC_OKButton(this));
+ add_subwindow(new BC_CancelButton(this));
+ show_window(1);
+}
+
+SaveProject::SaveProject(MWindow *mwindow)
+ : BC_MenuItem(_("Export Project..."), "Alt-s", 's'), Thread()
+{
+ set_alt(1);
+ this->mwindow = mwindow;
+}
+
+int SaveProject::handle_event()
+{
+ start();
+ return 1;
+}
+
+void SaveProject::run()
+{
+ char dir_path[1024]; sprintf(dir_path, "~");
+ mwindow->defaults->get("PROJECT_DIRECTORY", dir_path);
+ int reload = mwindow->defaults->get("PROJECT_RELOAD", 0);
+ int overwrite = mwindow->defaults->get("PROJECT_OVERWRITE", 0);
+ int save_mode = mwindow->defaults->get("PROJECT_SAVE_MODE", 0);
+
+ SaveProjectWindow window(mwindow, dir_path, save_mode, overwrite, reload);
+ window.lock_window("SaveProject::run");
+ window.create_objects();
+ window.unlock_window();
+ int result = window.run_window();
+ if( result ) return;
+
+ strcpy(dir_path, window.textbox->get_text());
+ window.recent_project->add_item("RECENT_PROJECT", dir_path);
+ reload = window.get_reload();
+ overwrite = window.get_overwrite();
+ save_mode = window.get_save_mode();
+ mwindow->defaults->update("PROJECT_DIRECTORY", dir_path);
+ mwindow->defaults->update("PROJECT_RELOAD", reload);
+ mwindow->defaults->update("PROJECT_OVERWRITE", overwrite);
+ mwindow->defaults->update("PROJECT_SAVE_MODE", save_mode);
+ mwindow->save_project(dir_path, save_mode, overwrite, reload);
+}