16 static GtkWidget
*wid_status
;
17 static GtkWidget
*wid_time
;
18 static GtkWidget
*wid_date
;
19 static GtkWidget
*wid_mesg
;
21 void set_data(GtkWidget
*widget UNUSED
, GtkWidget
*data UNUSED
) {
23 const char *wstat
= gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(wid_status
));
24 const char *wtime
= gtk_entry_get_text(GTK_ENTRY(wid_time
));
25 const char *wdate
= gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(wid_date
));
26 const char *wmesg
= gtk_entry_get_text(GTK_ENTRY(wid_mesg
));
28 int has_day
= (strcmp(wdate
, "ALL") != 0);
29 int has_msg
= (strcmp(wdate
, "") != 0);
30 int len
= strlen(wstat
) + 1 + strlen(wtime
) + 1;
32 len
+= has_day
? strlen(wdate
) + 1 : 0;
33 len
+= has_msg
? strlen(wmesg
) + 1 : 0;
34 newalarm
= xmalloc(len
);
36 sprintf(newalarm
, "%s@%s%s%s%s%s",
42 has_msg
? wmesg
: "");
47 static gboolean
set_active_date(GtkTreeModel
*model
, GtkTreePath
*path
,
48 GtkTreeIter
*iter
, gpointer user_data
)
50 const char *date1
= user_data
;
55 gtk_tree_model_get(model
, iter
, 0, (gpointer
) &date2
, -1);
56 if (strcmp(date1
, date2
) == 0) {
57 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(wid_date
), iter
);
64 void edit_dialog(const char *title
,
78 dialog
= gtk_dialog_new();
79 gtk_window_set_title(GTK_WINDOW(dialog
), title
);
80 g_signal_connect(dialog
, "delete_event",
81 G_CALLBACK(gtk_widget_destroy
), NULL
);
82 g_signal_connect(dialog
, "destroy",
83 G_CALLBACK(gtk_widget_destroy
), NULL
);
85 bouton
= gtk_button_new_with_label("Ok");
86 g_signal_connect(bouton
, "clicked", G_CALLBACK(set_data
), NULL
);
87 g_signal_connect(bouton
, "clicked", G_CALLBACK(f_ok
), NULL
);
88 g_signal_connect_swapped(bouton
, "clicked",
89 G_CALLBACK(gtk_widget_destroy
), dialog
);
90 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_action_area(GTK_DIALOG(dialog
))),
91 bouton
, TRUE
, TRUE
, 0);
92 gtk_widget_set_can_default(GTK_WIDGET(bouton
), TRUE
);
93 gtk_widget_grab_default(GTK_WIDGET(bouton
));
94 gtk_widget_show(bouton
);
96 bouton
= gtk_button_new_with_label("Cancel");
97 g_signal_connect_swapped(bouton
, "clicked",
98 G_CALLBACK(gtk_widget_destroy
), dialog
);
99 gtk_box_pack_start(GTK_BOX(gtk_dialog_get_action_area(GTK_DIALOG(dialog
))),
100 bouton
, TRUE
, TRUE
, 0);
101 gtk_widget_set_can_default(GTK_WIDGET(bouton
), TRUE
);
102 gtk_widget_show(bouton
);
104 gtk_container_set_border_width(GTK_CONTAINER
105 (gtk_dialog_get_content_area(GTK_DIALOG(dialog
))), 6);
107 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, 1);
108 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog
))), hbox
);
109 gtk_widget_show(hbox
);
112 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, 1);
113 gtk_container_add(GTK_CONTAINER(hbox
), vbox
);
114 gtk_widget_show(vbox
);
116 label
= gtk_label_new("Status");
117 gtk_misc_set_alignment(GTK_MISC(label
), 0.0f
, 0.5f
);
118 gtk_box_pack_start(GTK_BOX(vbox
), label
, FALSE
, FALSE
, 6);
119 gtk_widget_show(label
);
121 wid_status
= gtk_combo_box_text_new();
122 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_status
), "On");
123 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_status
), "Off");
124 gtk_box_pack_start(GTK_BOX(vbox
), wid_status
, FALSE
, TRUE
, 6);
125 gtk_widget_show(wid_status
);
126 gtk_combo_box_set_active(GTK_COMBO_BOX(wid_status
), on
? 0 : 1);
129 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, 1);
130 gtk_container_add(GTK_CONTAINER(hbox
), vbox
);
131 gtk_widget_show(vbox
);
133 label
= gtk_label_new("Hour");
134 gtk_misc_set_alignment(GTK_MISC(label
), 0.0f
, 0.5f
);
135 gtk_box_pack_start(GTK_BOX(vbox
), label
, FALSE
, FALSE
, 6);
136 gtk_widget_show(label
);
138 wid_time
= gtk_entry_new();
139 if (atime
) gtk_entry_set_text(GTK_ENTRY(wid_time
), atime
);
140 gtk_box_pack_start(GTK_BOX(vbox
), wid_time
, FALSE
, TRUE
, 6);
141 gtk_widget_show(wid_time
);
145 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, 1);
146 gtk_container_add(GTK_CONTAINER(hbox
), vbox
);
147 gtk_widget_show(vbox
);
149 label
= gtk_label_new("Day");
150 gtk_misc_set_alignment(GTK_MISC(label
), 0.0f
, 0.5f
);
151 gtk_box_pack_start(GTK_BOX(vbox
), label
, FALSE
, FALSE
, 6);
152 gtk_widget_show(label
);
154 wid_date
= gtk_combo_box_text_new();
155 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_date
), "ALL");
156 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_date
), "1");
157 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_date
), "2");
158 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_date
), "3");
159 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_date
), "4");
160 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_date
), "5");
161 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_date
), "6");
162 gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(wid_date
), "7");
163 gtk_box_pack_start(GTK_BOX(vbox
), wid_date
, FALSE
, TRUE
, 6);
164 gtk_widget_show(wid_date
);
165 gtk_combo_box_set_active(GTK_COMBO_BOX(wid_date
), 0);
167 gtk_tree_model_foreach(gtk_combo_box_get_model(GTK_COMBO_BOX(wid_date
)),
168 set_active_date
, (void *) adate
);
171 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, 1);
172 gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog
))), vbox
);
173 gtk_widget_show(vbox
);
175 label
= gtk_label_new("Message");
176 gtk_misc_set_alignment(GTK_MISC(label
), 0.0f
, 0.5f
);
177 gtk_box_pack_start(GTK_BOX(vbox
), label
, FALSE
, FALSE
, 6);
178 gtk_widget_show(label
);
180 wid_mesg
= gtk_entry_new();
181 if (amesg
) gtk_entry_set_text(GTK_ENTRY(wid_mesg
), amesg
);
182 gtk_box_pack_start(GTK_BOX(vbox
), wid_mesg
, FALSE
, TRUE
, 6);
183 gtk_widget_show(wid_mesg
);
187 gtk_window_set_modal(GTK_WINDOW(dialog
), TRUE
);
188 gtk_widget_show(dialog
);