Mercurial > pidgin.yaz
comparison src/gtkconn.c @ 7496:39185ff57842
[gaim-migrate @ 8109]
I lick this better. Do you?
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Thu, 13 Nov 2003 08:30:37 +0000 |
parents | 6b9f452e84e1 |
children | 240aca6344b6 |
comparison
equal
deleted
inserted
replaced
7495:d620bfb81384 | 7496:39185ff57842 |
---|---|
352 GtkTreeViewColumn *col; | 352 GtkTreeViewColumn *col; |
353 GtkListStore *list_store; | 353 GtkListStore *list_store; |
354 GtkTreeIter iter; | 354 GtkTreeIter iter; |
355 GValue val = { 0, }; | 355 GValue val = { 0, }; |
356 GaimAccount *account = NULL; | 356 GaimAccount *account = NULL; |
357 | 357 gboolean multiple_disconnected = FALSE; |
358 icon = create_prpl_icon(gaim_connection_get_account(gc)); | 358 |
359 scale = gdk_pixbuf_scale_simple(icon, 16, 16, GDK_INTERP_BILINEAR); | 359 /* Make sure we have a list_store */ |
360 if (!disconnect_window || !disconnect_window->treeview) | |
361 list_store = gtk_list_store_new (5, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); | |
362 else | |
363 list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview))); | |
364 | |
365 /* If this account is already in our list then remove it */ | |
366 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter)) { | |
367 do { | |
368 gtk_tree_model_get_value(GTK_TREE_MODEL(list_store), &iter, 4, &val); | |
369 account = g_value_get_pointer(&val); | |
370 g_value_unset(&val); | |
371 if (account == gaim_connection_get_account(gc)) { | |
372 gtk_list_store_remove(list_store, &iter); | |
373 break; | |
374 } | |
375 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(list_store), &iter)); | |
376 } | |
360 | 377 |
361 label_text = g_strdup_printf("<span weight=\"bold\" size=\"larger\">%s has been disconnected.</span>\n\n%s\n%s", | 378 label_text = g_strdup_printf("<span weight=\"bold\" size=\"larger\">%s has been disconnected.</span>\n\n%s\n%s", |
362 gaim_account_get_username(gaim_connection_get_account(gc)), gaim_date_full(), | 379 gaim_account_get_username(gaim_connection_get_account(gc)), gaim_date_full(), |
363 text ? text : _("Reason Unknown.")); | 380 text ? text : _("Reason Unknown.")); |
364 | 381 |
365 if (!disconnect_window) { | 382 /* Add this account to our list of disconnected accounts */ |
383 icon = create_prpl_icon(gaim_connection_get_account(gc)); | |
384 scale = gdk_pixbuf_scale_simple(icon, 16, 16, GDK_INTERP_BILINEAR); | |
385 gtk_list_store_append(list_store, &iter); | |
386 gtk_list_store_set(list_store, &iter, | |
387 0, scale, | |
388 1, gaim_account_get_username(gaim_connection_get_account(gc)), | |
389 2, gaim_date_full(), | |
390 3, label_text, | |
391 4, gaim_connection_get_account(gc), -1); | |
392 g_object_unref(G_OBJECT(icon)); | |
393 g_object_unref(G_OBJECT(scale)); | |
394 | |
395 /* Check how many disconnected accounts we have */ | |
396 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter)) | |
397 if (gtk_tree_model_iter_next(GTK_TREE_MODEL(list_store), &iter)) | |
398 multiple_disconnected = TRUE; | |
399 | |
400 if (!disconnect_window || !multiple_disconnected) { | |
366 GtkWidget *hbox, *vbox, *img; | 401 GtkWidget *hbox, *vbox, *img; |
367 GtkCellRenderer *rend, *rend2; | 402 GtkCellRenderer *rend, *rend2; |
368 GtkTreeSelection *sel; | 403 GtkTreeSelection *sel; |
369 | 404 |
370 disconnect_window = g_new0(struct disconnect_window, 1); | 405 disconnect_window = g_new0(struct disconnect_window, 1); |
371 disconnect_window->window = gtk_dialog_new_with_buttons("", NULL, GTK_DIALOG_NO_SEPARATOR, | 406 disconnect_window->window = gtk_dialog_new_with_buttons("", NULL, GTK_DIALOG_NO_SEPARATOR, |
372 _("Reconnect"), GTK_RESPONSE_ACCEPT, | 407 _("Reconnect"), GTK_RESPONSE_ACCEPT, |
373 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); | 408 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); |
374 g_signal_connect(G_OBJECT(disconnect_window->window), "response", G_CALLBACK(disconnect_response_cb), disconnect_window); | 409 g_signal_connect(G_OBJECT(disconnect_window->window), "response", G_CALLBACK(disconnect_response_cb), disconnect_window); |
382 hbox = gtk_hbox_new(FALSE, 12); | 417 hbox = gtk_hbox_new(FALSE, 12); |
383 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(disconnect_window->window)->vbox), hbox); | 418 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(disconnect_window->window)->vbox), hbox); |
384 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG); | 419 img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_DIALOG); |
385 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | 420 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
386 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | 421 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
387 | 422 |
388 vbox = gtk_vbox_new(FALSE, 12); | 423 vbox = gtk_vbox_new(FALSE, 12); |
389 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); | 424 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); |
390 | 425 |
391 disconnect_window->label = gtk_label_new(NULL); | 426 disconnect_window->label = gtk_label_new(NULL); |
392 | 427 |
393 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); | 428 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); |
394 gtk_label_set_line_wrap(GTK_LABEL(disconnect_window->label), TRUE); | 429 gtk_label_set_line_wrap(GTK_LABEL(disconnect_window->label), TRUE); |
395 gtk_misc_set_alignment(GTK_MISC(disconnect_window->label), 0, 0); | 430 gtk_misc_set_alignment(GTK_MISC(disconnect_window->label), 0, 0); |
396 gtk_box_pack_start(GTK_BOX(vbox), disconnect_window->label, FALSE, FALSE, 0); | 431 gtk_box_pack_start(GTK_BOX(vbox), disconnect_window->label, FALSE, FALSE, 0); |
397 | 432 |
400 /* Tree View */ | 435 /* Tree View */ |
401 disconnect_window->sw = gtk_scrolled_window_new(NULL,NULL); | 436 disconnect_window->sw = gtk_scrolled_window_new(NULL,NULL); |
402 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(disconnect_window->sw), GTK_SHADOW_IN); | 437 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(disconnect_window->sw), GTK_SHADOW_IN); |
403 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(disconnect_window->sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | 438 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(disconnect_window->sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
404 gtk_box_pack_start(GTK_BOX(vbox), disconnect_window->sw, TRUE, TRUE, 0); | 439 gtk_box_pack_start(GTK_BOX(vbox), disconnect_window->sw, TRUE, TRUE, 0); |
405 | 440 |
406 list_store = gtk_list_store_new (5, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); | |
407 gtk_list_store_append (list_store, &iter); | |
408 gtk_list_store_set(list_store, &iter, | |
409 0, scale, | |
410 1, gaim_account_get_username(gaim_connection_get_account(gc)), | |
411 2, gaim_date_full(), | |
412 3, label_text, | |
413 4, gaim_connection_get_account(gc), -1); | |
414 | |
415 disconnect_window->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL(list_store)); | 441 disconnect_window->treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL(list_store)); |
416 | 442 |
417 rend = gtk_cell_renderer_pixbuf_new(); | 443 rend = gtk_cell_renderer_pixbuf_new(); |
418 rend2 = gtk_cell_renderer_text_new(); | 444 rend2 = gtk_cell_renderer_text_new(); |
419 col = gtk_tree_view_column_new(); | 445 col = gtk_tree_view_column_new(); |
420 gtk_tree_view_column_set_title(col, _("Account")); | 446 gtk_tree_view_column_set_title(col, _("Account")); |
421 gtk_tree_view_column_pack_start(col, rend, FALSE); | 447 gtk_tree_view_column_pack_start(col, rend, FALSE); |
422 gtk_tree_view_column_pack_start(col, rend2, FALSE); | 448 gtk_tree_view_column_pack_start(col, rend2, FALSE); |
423 gtk_tree_view_column_set_attributes(col, rend, "pixbuf", 0, NULL); | 449 gtk_tree_view_column_set_attributes(col, rend, "pixbuf", 0, NULL); |
424 gtk_tree_view_column_set_attributes(col, rend2, "text", 1, NULL); | 450 gtk_tree_view_column_set_attributes(col, rend2, "text", 1, NULL); |
425 gtk_tree_view_append_column (GTK_TREE_VIEW(disconnect_window->treeview), col); | 451 gtk_tree_view_append_column (GTK_TREE_VIEW(disconnect_window->treeview), col); |
426 | 452 |
427 rend = gtk_cell_renderer_text_new(); | 453 rend = gtk_cell_renderer_text_new(); |
428 col = gtk_tree_view_column_new_with_attributes (_("Time"), | 454 col = gtk_tree_view_column_new_with_attributes (_("Time"), |
429 rend, "text", 2, NULL); | 455 rend, "text", 2, NULL); |
430 gtk_tree_view_append_column (GTK_TREE_VIEW(disconnect_window->treeview), col); | 456 gtk_tree_view_append_column (GTK_TREE_VIEW(disconnect_window->treeview), col); |
431 | 457 |
432 g_object_unref(G_OBJECT(list_store)); | 458 g_object_unref(G_OBJECT(list_store)); |
433 gtk_container_add(GTK_CONTAINER(disconnect_window->sw), disconnect_window->treeview); | 459 gtk_container_add(GTK_CONTAINER(disconnect_window->sw), disconnect_window->treeview); |
434 | 460 |
435 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (disconnect_window->treeview)); | 461 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (disconnect_window->treeview)); |
436 gtk_widget_set_size_request(disconnect_window->treeview, -1, 96); | 462 gtk_widget_set_size_request(disconnect_window->treeview, -1, 96); |
437 g_signal_connect (G_OBJECT (sel), "changed", | 463 g_signal_connect (G_OBJECT (sel), "changed", |
438 G_CALLBACK (disconnect_tree_cb), list_store); | 464 G_CALLBACK (disconnect_tree_cb), list_store); |
439 } else { | 465 } else { |
440 list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(disconnect_window->treeview))); | |
441 gboolean removedPreviousAccountDisconnection = FALSE; | |
442 | |
443 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &iter)) { | |
444 do { | |
445 gtk_tree_model_get_value(GTK_TREE_MODEL(list_store), &iter, 4, &val); | |
446 account = g_value_get_pointer(&val); | |
447 g_value_unset(&val); | |
448 if (account == gaim_connection_get_account(gc)) { | |
449 gtk_list_store_remove(list_store, &iter); | |
450 removedPreviousAccountDisconnection = TRUE; | |
451 break; | |
452 } | |
453 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(list_store), &iter)); | |
454 } | |
455 | |
456 gtk_list_store_append (list_store, &iter); | |
457 gtk_list_store_set(list_store, &iter, | |
458 0, scale, | |
459 1, gaim_account_get_username(gaim_connection_get_account(gc)), | |
460 2, gaim_date_full(), | |
461 3, label_text, | |
462 4, gaim_connection_get_account(gc), -1); | |
463 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); | 466 gtk_label_set_markup(GTK_LABEL(disconnect_window->label), label_text); |
464 /* | |
465 * Only cause the tree view to show up if there will be | |
466 * more than one disconnection event listed in it. | |
467 */ | |
468 if (!removedPreviousAccountDisconnection || GTK_WIDGET_VISIBLE(disconnect_window->sw)) | |
469 gtk_widget_show_all(disconnect_window->sw); | 467 gtk_widget_show_all(disconnect_window->sw); |
470 } | 468 } |
469 | |
471 g_free(label_text); | 470 g_free(label_text); |
472 g_object_unref(G_OBJECT(icon)); | |
473 g_object_unref(G_OBJECT(scale)); | |
474 gtk_window_present(GTK_WINDOW(disconnect_window->window)); | 471 gtk_window_present(GTK_WINDOW(disconnect_window->window)); |
475 } | 472 } |
476 | 473 |
477 static GaimConnectionUiOps conn_ui_ops = | 474 static GaimConnectionUiOps conn_ui_ops = |
478 { | 475 { |