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;