11 static void warning_dialog_close(GtkWidget *w, gpointer data);
12 static void warning_dialog_destroy(GtkWidget *w, GdkEvent *event, gpointer data);
14 static void confirm_dialog_click_cb(GtkWidget *w, gpointer data);
15 static void confirm_dialog_delete_cb(GtkWidget *w, GdkEvent *event, gpointer data);
17 static void generic_dialog_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data);
21 *-----------------------------------------------------------------------------
22 * warning dialog routines
23 *-----------------------------------------------------------------------------
26 static void warning_dialog_close(GtkWidget *w, gpointer data)
28 GtkWidget *warning_window = data;
29 gtk_widget_destroy(warning_window);
32 static void warning_dialog_destroy(GtkWidget *w, GdkEvent *event, gpointer data)
34 warning_dialog_close(NULL, data);
37 void warning_dialog(gchar *title, gchar *message)
39 GtkWidget *warning_window;
45 warning_window = gtk_window_new(GTK_WINDOW_DIALOG);
46 gtk_signal_connect (GTK_OBJECT (warning_window), "delete_event",(GtkSignalFunc) warning_dialog_destroy, warning_window);
47 gtk_window_set_policy (GTK_WINDOW(warning_window), FALSE, FALSE, TRUE);
48 gtk_window_set_title (GTK_WINDOW (warning_window), title);
49 gtk_container_border_width (GTK_CONTAINER (warning_window), 10);
51 vbox = gtk_vbox_new(FALSE, 5);
52 gtk_container_add(GTK_CONTAINER(warning_window),vbox);
53 gtk_widget_show(vbox);
55 label = gtk_label_new(message);
56 gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);
57 gtk_widget_show(label);
59 label = gtk_hseparator_new();
60 gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);
61 gtk_widget_show(label);
63 hbox = gtk_hbox_new(TRUE, 5);
64 gtk_container_add(GTK_CONTAINER(vbox),hbox);
65 gtk_widget_show(hbox);
67 button = gtk_button_new_with_label(_(" Ok "));
68 gtk_signal_connect (GTK_OBJECT (button), "clicked",(GtkSignalFunc) warning_dialog_close, warning_window);
69 gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0);
70 gtk_widget_show(button);
72 gtk_widget_show(warning_window);
76 *-----------------------------------------------------------------------------
78 *-----------------------------------------------------------------------------
81 static void confirm_dialog_click_cb(GtkWidget *w, gpointer data)
83 ConfirmDialog *cd = data;
84 gtk_widget_destroy(cd->dialog);
88 static void confirm_dialog_delete_cb(GtkWidget *w, GdkEvent *event, gpointer data)
90 ConfirmDialog *cd = data;
91 cd->cancel_cb(NULL, cd->data);
92 confirm_dialog_click_cb(w, data);
95 void confirm_dialog_add(ConfirmDialog *cd, gchar *text, void (*func_cb)(GtkWidget *, gpointer))
98 button = gtk_button_new_with_label(text);
99 gtk_signal_connect(GTK_OBJECT(button), "clicked", func_cb, cd->data);
100 gtk_signal_connect(GTK_OBJECT(button), "clicked", confirm_dialog_click_cb, cd);
101 gtk_box_pack_end(GTK_BOX(cd->hbox), button, TRUE, TRUE, 0);
102 gtk_widget_grab_focus(button);
103 gtk_widget_show(button);
106 ConfirmDialog *confirm_dialog_new(gchar *title, gchar *message, void (*cancel_cb)(GtkWidget *, gpointer), gpointer data)
112 cd = g_new0(ConfirmDialog, 1);
114 cd->cancel_cb = cancel_cb;
116 cd->dialog = gtk_window_new(GTK_WINDOW_DIALOG);
117 gtk_signal_connect (GTK_OBJECT (cd->dialog), "delete_event", confirm_dialog_delete_cb, cd);
118 gtk_window_set_policy (GTK_WINDOW(cd->dialog), FALSE, FALSE, TRUE);
119 gtk_window_set_title (GTK_WINDOW (cd->dialog), title);
120 gtk_container_border_width (GTK_CONTAINER (cd->dialog), 10);
122 vbox = gtk_vbox_new(FALSE, 15);
123 gtk_container_add(GTK_CONTAINER(cd->dialog),vbox);
124 gtk_widget_show(vbox);
126 label = gtk_label_new(message);
127 gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);
128 gtk_widget_show(label);
130 label = gtk_hseparator_new();
131 gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);
132 gtk_widget_show(label);
134 cd->hbox = gtk_hbox_new(TRUE, 15);
135 gtk_container_add(GTK_CONTAINER(vbox),cd->hbox);
136 gtk_widget_show(cd->hbox);
138 gtk_widget_show(cd->dialog);
140 confirm_dialog_add(cd, _("Cancel"), cd->cancel_cb);
146 *-----------------------------------------------------------------------------
147 * generic file ops dialog routines
148 *-----------------------------------------------------------------------------
151 void generic_dialog_close(GtkWidget *widget, gpointer data)
153 FileDialog *fd = data;
154 if(fd->dialog) gtk_widget_destroy(fd->dialog);
155 g_free(fd->source_path);
156 g_free(fd->dest_path);
157 if (fd->source_list) free_selected_list(fd->source_list);
161 static void generic_dialog_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
163 generic_dialog_close(NULL, data);
166 FileDialog *generic_dialog_new(gchar *title, gchar *text, gchar *btn1, gchar *btn2,
167 void (*btn1_cb)(GtkWidget *, gpointer),
168 void (*btn2_cb)(GtkWidget *, gpointer))
170 FileDialog *fd = NULL;
175 fd = g_new0(FileDialog, 1);
177 fd->dialog = gtk_window_new(GTK_WINDOW_DIALOG);
178 gtk_signal_connect (GTK_OBJECT (fd->dialog), "delete_event", (GtkSignalFunc)generic_dialog_delete_cb, fd);
179 gtk_window_set_policy (GTK_WINDOW(fd->dialog), FALSE, TRUE, FALSE);
180 gtk_window_set_title (GTK_WINDOW (fd->dialog), title);
181 gtk_container_border_width (GTK_CONTAINER (fd->dialog), 10);
183 fd->vbox = gtk_vbox_new(FALSE,5);
184 gtk_container_add (GTK_CONTAINER(fd->dialog), fd->vbox);
185 gtk_widget_show(fd->vbox);
189 label = gtk_label_new(text);
190 gtk_box_pack_start(GTK_BOX(fd->vbox), label, FALSE, FALSE, 0);
191 gtk_widget_show(label);
194 if (btn1_cb || btn2_cb)
197 hbox = gtk_hbox_new(TRUE, 15);
198 gtk_box_pack_end(GTK_BOX(fd->vbox), hbox, FALSE, FALSE, 5);
199 gtk_widget_show(hbox);
201 sep = gtk_hseparator_new();
202 gtk_box_pack_end(GTK_BOX(fd->vbox), sep, FALSE, FALSE, 0);
203 gtk_widget_show(sep);
208 button = gtk_button_new_with_label(btn1);
209 gtk_signal_connect (GTK_OBJECT (button), "clicked",(GtkSignalFunc) btn1_cb, fd);
210 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
211 gtk_widget_grab_focus(button);
212 gtk_widget_show(button);
217 button = gtk_button_new_with_label(btn2);
218 gtk_signal_connect (GTK_OBJECT (button), "clicked",(GtkSignalFunc) btn2_cb, fd);
219 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
220 gtk_widget_show(button);
223 gtk_widget_show(fd->dialog);