4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #include "confirmsave.h"
26 #include "mwindowgui.h"
31 ConfirmSave::ConfirmSave()
35 ConfirmSave::~ConfirmSave()
39 int ConfirmSave::test_file(MWindow *mwindow, char *path)
41 ArrayList<char*> paths;
43 int result = test_files(mwindow, &paths);
48 int ConfirmSave::test_files(MWindow *mwindow,
49 ArrayList<char*> *paths)
52 ArrayList<BC_ListBoxItem*> list;
55 for(int i = 0; i < paths->total; i++)
57 char *path = paths->values[i];
58 if( (file=fopen(path, "r")) != 0 )
61 list.append(new BC_ListBoxItem(path));
69 ConfirmSaveWindow window(mwindow, &list);
70 window.create_objects();
71 window.raise_window();
72 result = window.run_window();
76 printf(_("The following files exist:\n"));
77 for(int i = 0; i < list.total; i++)
79 printf(" %s\n", list.values[i]->get_text());
81 printf(_("Won't overwrite existing files.\n"));
84 list.remove_all_objects();
89 list.remove_all_objects();
104 ConfirmSaveWindow::ConfirmSaveWindow(MWindow *mwindow,
105 ArrayList<BC_ListBoxItem*> *list)
106 : BC_Window(_(PROGRAM_NAME ": File Exists"),
107 mwindow->gui->get_abs_cursor_x(1) - 160,
108 mwindow->gui->get_abs_cursor_y(1) - 120,
115 ConfirmSaveWindow::~ConfirmSaveWindow()
120 void ConfirmSaveWindow::create_objects()
123 lock_window("ConfirmSaveWindow::create_objects");
124 add_subwindow(new BC_OKButton(this));
125 add_subwindow(new BC_CancelButton(this));
127 add_subwindow(title = new BC_Title(x,
129 _("The following files exist. Overwrite them?")));
131 add_subwindow(listbox = new BC_ListBox(x,
134 get_h() - y - BC_OKButton::calculate_h() - 10,
138 add_subwindow(new BC_OKButton(this));
140 add_subwindow(new BC_CancelButton(this));
145 int ConfirmSaveWindow::resize_event(int w, int h)
148 title->reposition_window(x, y);
150 listbox->reposition_window(x,