Mercurial > pidgin
comparison gtk/gtknotify.c @ 14803:967c39d78bc4
[gaim-migrate @ 17568]
I'm an idiot.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Mon, 23 Oct 2006 19:43:45 +0000 |
parents | 4138063d89c9 |
children | 94adee1cba70 |
comparison
equal
deleted
inserted
replaced
14802:4138063d89c9 | 14803:967c39d78bc4 |
---|---|
194 button->callback(gaim_account_get_connection(data->account), row, data->user_data); | 194 button->callback(gaim_account_get_connection(data->account), row, data->user_data); |
195 g_list_foreach(row, (GFunc)g_free, NULL); | 195 g_list_foreach(row, (GFunc)g_free, NULL); |
196 g_list_free(row); | 196 g_list_free(row); |
197 } | 197 } |
198 | 198 |
199 | |
200 static void * | 199 static void * |
201 gaim_gtk_notify_message(GaimNotifyMsgType type, const char *title, | 200 gaim_gtk_notify_message(GaimNotifyMsgType type, const char *title, |
202 const char *primary, const char *secondary) | 201 const char *primary, const char *secondary) |
203 { | 202 { |
204 GtkStyle *style; | 203 GtkWidget *dialog; |
205 GdkColor color; | 204 GtkWidget *hbox; |
206 GtkWidget *ebox; | 205 GtkWidget *label; |
207 GtkWidget *vbox; | 206 GtkWidget *img = NULL; |
208 GtkWidget *hbox; | 207 char label_text[2048]; |
209 GtkWidget *bbox; | 208 const char *icon_name = NULL; |
210 GtkWidget *label; | 209 char *primary_esc, *secondary_esc; |
211 GtkWidget *button; | 210 |
212 GtkWidget *alignment; | 211 switch (type) |
213 GtkWidget *img = NULL; | 212 { |
214 GtkStockItem close_item; | 213 case GAIM_NOTIFY_MSG_ERROR: |
215 char label_text[2048]; | 214 icon_name = GAIM_STOCK_DIALOG_ERROR; |
216 const char *icon_name = NULL; | 215 break; |
217 char *primary_esc, *secondary_esc; | 216 |
218 | 217 case GAIM_NOTIFY_MSG_WARNING: |
219 switch (type) | 218 icon_name = GAIM_STOCK_DIALOG_WARNING; |
220 { | 219 break; |
221 case GAIM_NOTIFY_MSG_ERROR: | 220 |
222 icon_name = GAIM_STOCK_DIALOG_ERROR; | 221 case GAIM_NOTIFY_MSG_INFO: |
223 break; | 222 icon_name = GAIM_STOCK_DIALOG_INFO; |
224 | 223 break; |
225 case GAIM_NOTIFY_MSG_WARNING: | 224 |
226 icon_name = GAIM_STOCK_DIALOG_WARNING; | 225 default: |
227 break; | 226 icon_name = NULL; |
228 | 227 break; |
229 case GAIM_NOTIFY_MSG_INFO: | 228 } |
230 icon_name = GAIM_STOCK_DIALOG_INFO; | 229 |
231 break; | 230 if (icon_name != NULL) |
232 | 231 { |
233 default: | 232 img = gtk_image_new_from_stock(icon_name, GTK_ICON_SIZE_DIALOG); |
234 icon_name = NULL; | 233 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
235 break; | 234 } |
236 } | 235 |
237 | 236 dialog = gtk_dialog_new_with_buttons(title ? title : GAIM_ALERT_TITLE, |
238 if (icon_name != NULL) | 237 NULL, 0, GTK_STOCK_CLOSE, |
239 { | 238 GTK_RESPONSE_CLOSE, NULL); |
240 img = gtk_image_new_from_stock(icon_name, GTK_ICON_SIZE_BUTTON); | 239 |
241 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | 240 gtk_window_set_role(GTK_WINDOW(dialog), "notify_dialog"); |
242 } | 241 |
243 | 242 g_signal_connect(G_OBJECT(dialog), "response", |
244 ebox = gtk_event_box_new(); | 243 G_CALLBACK(message_response_cb), dialog); |
245 vbox = gtk_vbox_new(FALSE,0); | 244 |
246 gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); | 245 gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BORDER); |
247 color.red = 65535; | 246 gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); |
248 // gtk_widget_modify_bg(ebox, GTK_STATE_NORMAL, &(vbox->style->base[GTK_STATE_SELECTED])); | 247 gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); |
249 gtk_container_add(GTK_CONTAINER(ebox),vbox); | 248 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER); |
250 | 249 gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BOX_SPACE); |
251 hbox = gtk_hbox_new(FALSE, 0); | 250 |
252 gtk_container_add(GTK_CONTAINER(vbox), hbox); | 251 hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER); |
253 | 252 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); |
254 if (img != NULL) | 253 |
255 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | 254 if (img != NULL) |
256 primary_esc = g_markup_escape_text(primary, -1); | 255 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
257 if (secondary) | 256 |
258 secondary_esc = g_markup_escape_text(secondary, -1); | 257 primary_esc = g_markup_escape_text(primary, -1); |
259 g_snprintf(label_text, sizeof(label_text), | 258 secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; |
260 "<span weight=\"bold\" size=\"smaller\">%s</span>%s<span size=\"smaller\">%s</span>", | 259 g_snprintf(label_text, sizeof(label_text), |
261 primary_esc, | 260 "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", |
262 secondary ? "\n" : "", | 261 primary_esc, (secondary ? secondary_esc : "")); |
263 secondary ? secondary_esc : ""); | 262 g_free(primary_esc); |
264 g_free(primary_esc); | 263 g_free(secondary_esc); |
265 label = gtk_label_new(NULL); | 264 |
266 gtk_widget_modify_text(vbox, GTK_STATE_NORMAL, &(label->style->white)); | 265 label = gtk_label_new(NULL); |
267 gtk_label_set_markup(GTK_LABEL(label), label_text); | 266 |
268 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | 267 gtk_label_set_markup(GTK_LABEL(label), label_text); |
269 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | 268 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
270 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); | 269 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
271 #if GTK_CHECK_VERSION(2,6,0) | 270 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
272 g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL); | 271 |
273 #endif | 272 gtk_widget_show_all(dialog); |
274 #if 0 | 273 |
275 if (secondary) { | 274 return dialog; |
276 secondary_esc = g_markup_escape_text(secondary, -1); | 275 } |
277 g_snprintf(label_text, sizeof(label_text), | |
278 "<span size=\"smaller\">%s</span>", | |
279 secondary_esc); | |
280 g_free(secondary_esc); | |
281 label = gtk_label_new(NULL); | |
282 gtk_label_set_markup(GTK_LABEL(label), label_text); | |
283 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
284 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
285 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); | |
286 #if GTK_CHECK_VERSION(2,6,0) | |
287 g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL); | |
288 #endif | |
289 } | |
290 #endif | |
291 bbox = gtk_hbutton_box_new(); | |
292 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); | |
293 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); | |
294 | |
295 button = gtk_button_new(); | |
296 g_signal_connect_swapped(G_OBJECT(button), "activate", gtk_widget_destroy, ebox); | |
297 alignment = gtk_alignment_new(0.5, 0.5, 0, 0); | |
298 gtk_container_add(GTK_CONTAINER(button), alignment); | |
299 | |
300 hbox = gtk_hbox_new(FALSE, 0); | |
301 gtk_container_add(GTK_CONTAINER(alignment), hbox); | |
302 | |
303 img = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); | |
304 gtk_misc_set_alignment(GTK_MISC(img), 0.5, 0.5); | |
305 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
306 | |
307 gtk_stock_lookup(GTK_STOCK_CLOSE, &close_item); | |
308 g_snprintf(label_text, sizeof(label_text), | |
309 "<span size=\"smaller\">%s</span>", close_item.label); | |
310 label = gtk_label_new(NULL); | |
311 gtk_misc_set_alignment(GTK_MISC(img), 0.5, 0.5); | |
312 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
313 | |
314 gtk_stock_lookup(GTK_STOCK_CLOSE, &close_item); | |
315 g_snprintf(label_text, sizeof(label_text), | |
316 "<span size=\"smaller\">%s</span>", close_item.label); | |
317 label = gtk_label_new(NULL); | |
318 gtk_misc_set_alignment(GTK_MISC(img), 0.5, 0.5); | |
319 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), label_text); | |
320 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
321 | |
322 gtk_container_add(GTK_CONTAINER(bbox), button); | |
323 | |
324 gtk_widget_show_all(ebox); | |
325 gaim_gtk_blist_add_alert(ebox); | |
326 | |
327 return ebox; | |
328 } | |
329 | |
330 | 276 |
331 static void | 277 static void |
332 selection_changed_cb(GtkTreeSelection *sel, GaimMailDialog *dialog) | 278 selection_changed_cb(GtkTreeSelection *sel, GaimMailDialog *dialog) |
333 { | 279 { |
334 GtkTreeIter iter; | 280 GtkTreeIter iter; |