12 static void warning_dialog_close(GtkWidget *w, gpointer data);
13 static void warning_dialog_destroy(GtkWidget *w, GdkEvent *event, gpointer data);
15 static void confirm_dialog_click_cb(GtkWidget *w, gpointer data);
16 static void confirm_dialog_delete_cb(GtkWidget *w, GdkEvent *event, gpointer data);
18 static void generic_dialog_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data);
22 *-----------------------------------------------------------------------------
23 * warning dialog routines
24 *-----------------------------------------------------------------------------
27 static void warning_dialog_close(GtkWidget *w, gpointer data)
29 GtkWidget *warning_window = data;
30 gtk_widget_destroy(warning_window);
33 static void warning_dialog_destroy(GtkWidget *w, GdkEvent *event, gpointer data)
35 warning_dialog_close(NULL, data);
38 void warning_dialog(gchar *title, gchar *message)
40 GtkWidget *warning_window;
46 warning_window = gtk_window_new(GTK_WINDOW_DIALOG);
47 gtk_signal_connect (GTK_OBJECT (warning_window), "delete_event",(GtkSignalFunc) warning_dialog_destroy, warning_window);
48 gtk_window_set_policy (GTK_WINDOW(warning_window), FALSE, FALSE, TRUE);
49 gtk_window_set_title (GTK_WINDOW (warning_window), title);
50 gtk_container_border_width (GTK_CONTAINER (warning_window), 10);
52 vbox = gtk_vbox_new(FALSE, 5);
53 gtk_container_add(GTK_CONTAINER(warning_window),vbox);
54 gtk_widget_show(vbox);
56 label = gtk_label_new(message);
57 gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);
58 gtk_widget_show(label);
60 label = gtk_hseparator_new();
61 gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);
62 gtk_widget_show(label);
64 hbox = gtk_hbox_new(TRUE, 5);
65 gtk_container_add(GTK_CONTAINER(vbox),hbox);
66 gtk_widget_show(hbox);
68 button = gtk_button_new_with_label(_(" Ok "));
69 gtk_signal_connect (GTK_OBJECT (button), "clicked",(GtkSignalFunc) warning_dialog_close, warning_window);
70 gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0);
71 gtk_widget_show(button);
73 gtk_widget_show(warning_window);
77 *-----------------------------------------------------------------------------
79 *-----------------------------------------------------------------------------
82 static void confirm_dialog_click_cb(GtkWidget *w, gpointer data)
84 ConfirmDialog *cd = data;
85 gtk_widget_destroy(cd->dialog);
89 static void confirm_dialog_delete_cb(GtkWidget *w, GdkEvent *event, gpointer data)
91 ConfirmDialog *cd = data;
92 cd->cancel_cb(NULL, cd->data);
93 confirm_dialog_click_cb(w, data);
96 void confirm_dialog_add(ConfirmDialog *cd, gchar *text, void (*func_cb)(GtkWidget *, gpointer))
99 button = gtk_button_new_with_label(text);
100 gtk_signal_connect(GTK_OBJECT(button), "clicked", func_cb, cd->data);
101 gtk_signal_connect(GTK_OBJECT(button), "clicked", confirm_dialog_click_cb, cd);
102 gtk_box_pack_end(GTK_BOX(cd->hbox), button, TRUE, TRUE, 0);
103 gtk_widget_grab_focus(button);
104 gtk_widget_show(button);
107 ConfirmDialog *confirm_dialog_new(gchar *title, gchar *message, void (*cancel_cb)(GtkWidget *, gpointer), gpointer data)
113 cd = g_new0(ConfirmDialog, 1);
115 cd->cancel_cb = cancel_cb;
117 cd->dialog = gtk_window_new(GTK_WINDOW_DIALOG);
118 gtk_signal_connect (GTK_OBJECT (cd->dialog), "delete_event", confirm_dialog_delete_cb, cd);
119 gtk_window_set_policy (GTK_WINDOW(cd->dialog), FALSE, FALSE, TRUE);
120 gtk_window_set_title (GTK_WINDOW (cd->dialog), title);
121 gtk_container_border_width (GTK_CONTAINER (cd->dialog), 10);
123 vbox = gtk_vbox_new(FALSE, 15);
124 gtk_container_add(GTK_CONTAINER(cd->dialog),vbox);
125 gtk_widget_show(vbox);
127 label = gtk_label_new(message);
128 gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);
129 gtk_widget_show(label);
131 cd->util_hbox = gtk_hbox_new(FALSE, 0);
132 gtk_box_pack_start(GTK_BOX(vbox), cd->util_hbox, TRUE, TRUE, 0);
133 gtk_widget_show(cd->util_hbox);
135 label = gtk_hseparator_new();
136 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
137 gtk_widget_show(label);
139 cd->hbox = gtk_hbox_new(TRUE, 15);
140 gtk_box_pack_start(GTK_BOX(vbox), cd->hbox, FALSE, FALSE, 0);
141 gtk_widget_show(cd->hbox);
143 gtk_widget_show(cd->dialog);
145 confirm_dialog_add(cd, _("Cancel"), cd->cancel_cb);
150 ConfirmDialog *confirm_dialog_new_with_image(gchar *title, gchar *message,
151 gchar *img_path1, gchar *img_path2,
152 void (*cancel_cb)(GtkWidget *, gpointer), gpointer data)
160 cd = confirm_dialog_new(title, message, cancel_cb, data);
162 gtk_widget_set_usize (cd->dialog, 600, 450);
163 gtk_window_set_policy (GTK_WINDOW(cd->dialog), FALSE, TRUE, FALSE);
165 gtk_box_set_homogeneous(GTK_BOX(cd->util_hbox), TRUE);
169 vbox = gtk_vbox_new(FALSE, 5);
170 gtk_box_pack_start(GTK_BOX(cd->util_hbox), vbox, TRUE, TRUE, 0);
171 gtk_widget_show(vbox);
173 image1 = image_area_new(NULL);
174 gtk_box_pack_start(GTK_BOX(vbox), image1->eventbox, TRUE, TRUE, 0);
175 image_area_set_image (image1, img_path1, ZOOM_RESET_ORIGINAL);
176 gtk_widget_show_all(image1->eventbox);
177 gtk_object_set_data_full(GTK_OBJECT(image1->eventbox), "image1", image1,
178 (GtkDestroyNotify)image_area_free);
180 label = gtk_label_new(img_path1);
181 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
182 gtk_widget_show(label);
187 vbox = gtk_vbox_new(FALSE, 5);
188 gtk_box_pack_start(GTK_BOX(cd->util_hbox), vbox, TRUE, TRUE, 0);
189 gtk_widget_show(vbox);
191 image2 = image_area_new(NULL);
192 gtk_box_pack_start(GTK_BOX(vbox), image2->eventbox, TRUE, TRUE, 0);
193 image_area_set_image (image2, img_path2, ZOOM_RESET_ORIGINAL);
194 gtk_widget_show_all(image2->eventbox);
195 gtk_object_set_data_full(GTK_OBJECT(image2->eventbox), "image2", image2,
196 (GtkDestroyNotify)image_area_free);
198 label = gtk_label_new(img_path2);
199 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
200 gtk_widget_show(label);
207 *-----------------------------------------------------------------------------
208 * generic file ops dialog routines
209 *-----------------------------------------------------------------------------
212 void generic_dialog_close(GtkWidget *widget, gpointer data)
214 FileDialog *fd = data;
215 if(fd->dialog) gtk_widget_destroy(fd->dialog);
216 g_free(fd->source_path);
217 g_free(fd->dest_path);
218 if (fd->source_list) free_selected_list(fd->source_list);
222 static void generic_dialog_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
224 generic_dialog_close(NULL, data);
227 FileDialog *generic_dialog_new(gchar *title, gchar *text, gchar *btn1, gchar *btn2,
228 void (*btn1_cb)(GtkWidget *, gpointer),
229 void (*btn2_cb)(GtkWidget *, gpointer))
231 FileDialog *fd = NULL;
236 fd = g_new0(FileDialog, 1);
238 fd->dialog = gtk_window_new(GTK_WINDOW_DIALOG);
239 gtk_signal_connect (GTK_OBJECT (fd->dialog), "delete_event", (GtkSignalFunc)generic_dialog_delete_cb, fd);
240 gtk_window_set_policy (GTK_WINDOW(fd->dialog), FALSE, TRUE, FALSE);
241 gtk_window_set_title (GTK_WINDOW (fd->dialog), title);
242 gtk_container_border_width (GTK_CONTAINER (fd->dialog), 10);
244 fd->vbox = gtk_vbox_new(FALSE,5);
245 gtk_container_add (GTK_CONTAINER(fd->dialog), fd->vbox);
246 gtk_widget_show(fd->vbox);
250 label = gtk_label_new(text);
251 gtk_box_pack_start(GTK_BOX(fd->vbox), label, FALSE, FALSE, 0);
252 gtk_widget_show(label);
255 if (btn1_cb || btn2_cb)
258 hbox = gtk_hbox_new(TRUE, 15);
259 gtk_box_pack_end(GTK_BOX(fd->vbox), hbox, FALSE, FALSE, 5);
260 gtk_widget_show(hbox);
262 sep = gtk_hseparator_new();
263 gtk_box_pack_end(GTK_BOX(fd->vbox), sep, FALSE, FALSE, 0);
264 gtk_widget_show(sep);
269 button = gtk_button_new_with_label(btn1);
270 gtk_signal_connect (GTK_OBJECT (button), "clicked",(GtkSignalFunc) btn1_cb, fd);
271 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
272 gtk_widget_grab_focus(button);
273 gtk_widget_show(button);
278 button = gtk_button_new_with_label(btn2);
279 gtk_signal_connect (GTK_OBJECT (button), "clicked",(GtkSignalFunc) btn2_cb, fd);
280 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
281 gtk_widget_show(button);
284 gtk_widget_show(fd->dialog);