wmclockmon: import version 0.8.0
[dockapps.git] / wmclockmon / wmclockmon-config / dialogs.c
blobd497ed18a900a16f0110a3a988a663b56ae89121
1 /*
2 * dialogs.
3 */
6 #include "../config.h"
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <strings.h>
11 #include <gtk/gtk.h>
12 #include "defines.h"
13 #include "dialogs.h"
16 void ync_dialog(const char *title, const char *text, void *f_yes, void *f_no) {
17 GtkWidget *dialog;
18 GtkWidget *bouton;
19 GtkWidget *label;
21 dialog = gtk_dialog_new();
22 gtk_window_set_title(GTK_WINDOW(dialog), title);
23 gtk_signal_connect(GTK_OBJECT(dialog), "delete_event",
24 GTK_SIGNAL_FUNC(gtk_widget_destroy),
25 NULL);
26 gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
27 GTK_SIGNAL_FUNC(gtk_widget_destroy),
28 NULL);
30 bouton = gtk_button_new_with_label("Yes");
31 gtk_signal_connect(GTK_OBJECT(bouton), "clicked",
32 GTK_SIGNAL_FUNC(f_yes),
33 NULL);
34 gtk_signal_connect_object(GTK_OBJECT(bouton), "clicked",
35 GTK_SIGNAL_FUNC(gtk_widget_destroy),
36 GTK_OBJECT(dialog));
37 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),
38 bouton, TRUE, TRUE, 0);
39 GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bouton), GTK_CAN_DEFAULT);
40 gtk_widget_grab_default(GTK_WIDGET(bouton));
41 gtk_widget_draw_default(GTK_WIDGET(bouton));
42 gtk_widget_show(bouton);
44 bouton = gtk_button_new_with_label("No");
45 gtk_signal_connect(GTK_OBJECT(bouton), "clicked",
46 GTK_SIGNAL_FUNC(f_no),
47 NULL);
48 gtk_signal_connect_object(GTK_OBJECT(bouton), "clicked",
49 GTK_SIGNAL_FUNC(gtk_widget_destroy),
50 GTK_OBJECT(dialog));
51 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),
52 bouton, TRUE, TRUE, 0);
53 GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bouton), GTK_CAN_DEFAULT);
54 gtk_widget_show(bouton);
56 bouton = gtk_button_new_with_label("Cancel");
57 gtk_signal_connect_object(GTK_OBJECT(bouton), "clicked",
58 GTK_SIGNAL_FUNC(gtk_widget_destroy),
59 GTK_OBJECT(dialog));
60 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),
61 bouton, TRUE, TRUE, 0);
62 GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bouton), GTK_CAN_DEFAULT);
63 gtk_widget_show(bouton);
65 gtk_container_set_border_width(GTK_CONTAINER
66 (GTK_DIALOG(dialog)->vbox), 6);
67 label = gtk_label_new(text);
68 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), label, TRUE,
69 TRUE, 6);
70 gtk_widget_show(label);
72 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
73 gtk_widget_show(dialog);
77 void ok_dialog(const char *title, const char *text) {
78 GtkWidget *dialog;
79 GtkWidget *bouton;
80 GtkWidget *label;
82 dialog = gtk_dialog_new();
83 gtk_window_set_title(GTK_WINDOW(dialog), title);
84 gtk_signal_connect(GTK_OBJECT(dialog), "delete_event",
85 GTK_SIGNAL_FUNC(gtk_widget_destroy),
86 NULL);
87 gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
88 GTK_SIGNAL_FUNC(gtk_widget_destroy),
89 NULL);
91 bouton = gtk_button_new_with_label("OK");
92 gtk_signal_connect_object(GTK_OBJECT(bouton), "clicked",
93 GTK_SIGNAL_FUNC(gtk_widget_destroy),
94 GTK_OBJECT(dialog));
95 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->action_area),
96 bouton, TRUE, TRUE, 0);
97 GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bouton), GTK_CAN_DEFAULT);
98 gtk_widget_grab_default(GTK_WIDGET(bouton));
99 gtk_widget_draw_default(GTK_WIDGET(bouton));
100 gtk_widget_show(bouton);
102 gtk_container_set_border_width(GTK_CONTAINER
103 (GTK_DIALOG(dialog)->vbox), 6);
104 label = gtk_label_new(text);
105 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), label, TRUE,
106 TRUE, 6);
107 gtk_widget_show(label);
109 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
110 gtk_widget_show(dialog);
114 void file_dialog(const char *title,
115 const char *dir, const char *filter,
116 void *ok_cb, void *cancel_cb) {
117 GtkWidget *dialog;
119 if (! title) title = "File...";
121 dialog = gtk_file_selection_new(title);
122 gtk_signal_connect(GTK_OBJECT(dialog), "delete_event",
123 GTK_SIGNAL_FUNC(gtk_widget_destroy),
124 NULL);
125 gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
126 GTK_SIGNAL_FUNC(gtk_widget_destroy),
127 NULL);
129 if (ok_cb != NULL)
130 gtk_signal_connect(
131 GTK_OBJECT(GTK_FILE_SELECTION(dialog)->ok_button),
132 "clicked",
133 GTK_SIGNAL_FUNC(ok_cb), dialog);
134 gtk_signal_connect_object(
135 GTK_OBJECT(GTK_FILE_SELECTION(dialog)->ok_button),
136 "clicked",
137 GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(dialog));
139 if (cancel_cb != NULL)
140 gtk_signal_connect(
141 GTK_OBJECT(GTK_FILE_SELECTION(dialog)->cancel_button),
142 "clicked",
143 GTK_SIGNAL_FUNC(cancel_cb), dialog);
144 gtk_signal_connect_object(
145 GTK_OBJECT(GTK_FILE_SELECTION(dialog)->cancel_button),
146 "clicked",
147 GTK_SIGNAL_FUNC(gtk_widget_destroy),
148 GTK_OBJECT(dialog));
150 if (dir) {
151 gtk_file_selection_set_filename(
152 GTK_FILE_SELECTION(dialog),
153 dir);
156 if (filter) {
157 gtk_file_selection_complete(GTK_FILE_SELECTION(dialog), filter);
160 gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
161 gtk_widget_show(dialog);