comparison pidgin/gtkutils.c @ 17209:5e89c6d85d6e

Coding style changes
author Gabriel Schulhof <nix@go-nix.ca>
date Sun, 20 May 2007 21:53:10 +0000
parents 662552c912b4
children 45fcb1611bef
comparison
equal deleted inserted replaced
17208:c6c9f8a6dd9c 17209:5e89c6d85d6e
62 #include "gtkutils.h" 62 #include "gtkutils.h"
63 63
64 typedef struct { 64 typedef struct {
65 GtkWidget *menu; 65 GtkWidget *menu;
66 gint default_item; 66 gint default_item;
67 } AOP_MENU; 67 } AopMenu;
68 68
69 static guint accels_save_timer = 0; 69 static guint accels_save_timer = 0;
70 70
71 static gboolean 71 static gboolean
72 url_clicked_idle_cb(gpointer data) 72 url_clicked_idle_cb(gpointer data)
451 GtkWidget *item; 451 GtkWidget *item;
452 gpointer per_item_data; 452 gpointer per_item_data;
453 453
454 per_item_data = aop_option_menu_get_selected(optmenu, &item); 454 per_item_data = aop_option_menu_get_selected(optmenu, &item);
455 455
456 if (cb != NULL) 456 if (cb != NULL) {
457 { 457 ((void (*)(GtkWidget *, gpointer, gpointer))cb)(item, per_item_data, g_object_get_data(G_OBJECT(optmenu), "user_data"));
458 ((void (*)(GtkWidget *, gpointer, gpointer))cb)(item, per_item_data,
459 g_object_get_data(G_OBJECT(optmenu), "user_data"));
460 } 458 }
461 } 459 }
462 460
463 static GtkWidget * 461 static GtkWidget *
464 aop_menu_item_new(GtkSizeGroup *sg, GdkPixbuf *pixbuf, const char *lbl, gpointer per_item_data) 462 aop_menu_item_new(GtkSizeGroup *sg, GdkPixbuf *pixbuf, const char *lbl, gpointer per_item_data)
466 GtkWidget *item; 464 GtkWidget *item;
467 GtkWidget *hbox; 465 GtkWidget *hbox;
468 GtkWidget *image; 466 GtkWidget *image;
469 GtkWidget *label; 467 GtkWidget *label;
470 468
471 item = g_object_new(GTK_TYPE_MENU_ITEM, "visible", TRUE, NULL); 469 item = gtk_menu_item_new();
472 hbox = g_object_new(GTK_TYPE_HBOX, "visible", TRUE, "homogeneous", FALSE, "spacing", 4, NULL); 470 gtk_widget_show(item);
471
472 hbox = gtk_hbox_new(FALSE, 4);
473 gtk_widget_show(hbox);
473 474
474 /* Create the image */ 475 /* Create the image */
475 if (pixbuf == NULL) 476 if (pixbuf == NULL)
476 image = g_object_new(GTK_TYPE_IMAGE, "visible", TRUE, NULL); 477 image = gtk_image_new();
477 else 478 else
478 image = g_object_new(GTK_TYPE_IMAGE, "visible", TRUE, "pixbuf", pixbuf, NULL); 479 image = gtk_image_new_from_pixbuf(pixbuf);
480 gtk_widget_show(image);
479 481
480 if (sg) 482 if (sg)
481 gtk_size_group_add_widget(sg, image); 483 gtk_size_group_add_widget(sg, image);
482 484
483 /* Create the label */ 485 /* Create the label */
484 label = g_object_new(GTK_TYPE_LABEL, "visible", TRUE, "justify", GTK_JUSTIFY_LEFT, "xalign", (gdouble)0.0, "yalign", (gdouble)0.5, "label", lbl, NULL); 486 label = gtk_label_new (lbl);
487 gtk_widget_show (lbl);
488 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
489 gtk_misc_set_alignment(GTK_MISC(label, 0.0, 0.5));
485 490
486 gtk_container_add(GTK_CONTAINER(item), hbox); 491 gtk_container_add(GTK_CONTAINER(item), hbox);
487 gtk_container_add_with_properties(GTK_CONTAINER (hbox), image, "expand", FALSE, "fill", FALSE, "padding", 0, NULL); 492 gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
488 gtk_container_add_with_properties(GTK_CONTAINER (hbox), label, "expand", TRUE, "fill", TRUE, "padding", 0, NULL); 493 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
489 494
490 g_object_set_data(G_OBJECT (item), "aop_per_item_data", per_item_data); 495 g_object_set_data(G_OBJECT (item), "aop_per_item_data", per_item_data);
491 496
492 pidgin_set_accessible_label(item, label); 497 pidgin_set_accessible_label(item, label);
493 498
494 return item; 499 return item;
495 } 500 }
496 501
497 static GtkWidget * 502 static GtkWidget *
498 aop_option_menu_new(AOP_MENU *aop_menu, GCallback cb, gpointer user_data) 503 aop_option_menu_new(AopMenu *aop_menu, GCallback cb, gpointer user_data)
499 { 504 {
500 GtkWidget *optmenu; 505 GtkWidget *optmenu;
501 506
502 optmenu = g_object_new(GTK_TYPE_OPTION_MENU, "visible", TRUE, NULL); 507 optmenu = gtk_option_menu_new();
503 gtk_option_menu_set_menu(GTK_OPTION_MENU (optmenu), aop_menu->menu); 508 gtk_widget_show(optmenu);
509 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), aop_menu->menu);
510
504 if (aop_menu->default_item != -1) 511 if (aop_menu->default_item != -1)
505 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), aop_menu->default_item); 512 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), aop_menu->default_item);
506 513
507 g_object_set_data_full(G_OBJECT(optmenu), "aop_menu", aop_menu, (GDestroyNotify)g_free); 514 g_object_set_data_full(G_OBJECT(optmenu), "aop_menu", aop_menu, (GDestroyNotify)g_free);
508 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data); 515 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data);
511 518
512 return optmenu; 519 return optmenu;
513 } 520 }
514 521
515 static void 522 static void
516 aop_option_menu_replace_menu(GtkWidget *optmenu, AOP_MENU *new_aop_menu) 523 aop_option_menu_replace_menu(GtkWidget *optmenu, AopMenu *new_aop_menu)
517 { 524 {
518 if (gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu))) 525 if (gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu)))
519 gtk_option_menu_remove_menu(GTK_OPTION_MENU(optmenu)); 526 gtk_option_menu_remove_menu(GTK_OPTION_MENU(optmenu));
527
520 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), new_aop_menu->menu); 528 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), new_aop_menu->menu);
529
521 if (new_aop_menu->default_item != -1) 530 if (new_aop_menu->default_item != -1)
522 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), new_aop_menu->default_item); 531 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), new_aop_menu->default_item);
532
523 g_object_set_data_full(G_OBJECT(optmenu), "aop_menu", new_aop_menu, (GDestroyNotify)g_free); 533 g_object_set_data_full(G_OBJECT(optmenu), "aop_menu", new_aop_menu, (GDestroyNotify)g_free);
524 } 534 }
525 535
526 static void 536 static void
527 aop_option_menu_select_by_data(GtkWidget *optmenu, gpointer data) 537 aop_option_menu_select_by_data(GtkWidget *optmenu, gpointer data)
528 { 538 {
529 guint idx; 539 guint idx;
530 GList *llItr = NULL; 540 GList *llItr = NULL;
531 541
532 for (idx = 0, llItr = GTK_MENU_SHELL(gtk_option_menu_get_menu(GTK_OPTION_MENU (optmenu)))->children; 542 for (idx = 0, llItr = GTK_MENU_SHELL(gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu)))->children;
533 llItr != NULL; 543 llItr != NULL;
534 llItr = llItr->next, idx++) 544 llItr = llItr->next, idx++) {
535 { 545 if (data == g_object_get_data(G_OBJECT(llItr->data), "aop_per_item_data")) {
536 if (data == g_object_get_data(G_OBJECT(llItr->data), "aop_per_item_data"))
537 {
538 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), idx); 546 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), idx);
539 break; 547 break;
540 } 548 }
541 } 549 }
542 } 550 }
558 g_free(filename); 566 g_free(filename);
559 567
560 return pixbuf; 568 return pixbuf;
561 } 569 }
562 570
563 static AOP_MENU *create_protocols_menu(const char *default_proto_id) 571 static AopMenu *
564 { 572 create_protocols_menu(const char *default_proto_id)
565 AOP_MENU *aop_menu = NULL; 573 {
574 AopMenu *aop_menu = NULL;
566 PurplePluginProtocolInfo *prpl_info; 575 PurplePluginProtocolInfo *prpl_info;
567 PurplePlugin *plugin; 576 PurplePlugin *plugin;
568 GdkPixbuf *pixbuf = NULL; 577 GdkPixbuf *pixbuf = NULL;
569 GtkSizeGroup *sg; 578 GtkSizeGroup *sg;
570 GList *p; 579 GList *p;
571 const char *gtalk_name = NULL; 580 const char *gtalk_name = NULL;
572 int i; 581 int i;
573 582
574 aop_menu = g_malloc0(sizeof(AOP_MENU)); 583 aop_menu = g_malloc0(sizeof(AopMenu));
575 aop_menu->default_item = -1; 584 aop_menu->default_item = -1;
576 aop_menu->menu = g_object_new(GTK_TYPE_MENU, "visible", TRUE, NULL); 585 aop_menu->menu = gtk_menu_new();
577 sg = g_object_new(GTK_TYPE_SIZE_GROUP, "mode", GTK_SIZE_GROUP_HORIZONTAL, NULL); 586 gtk_widget_show(aop_menu->menu);
587 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
578 588
579 if (purple_find_prpl("prpl-jabber")) 589 if (purple_find_prpl("prpl-jabber"))
580 gtalk_name = _("Google Talk"); 590 gtalk_name = _("Google Talk");
581 591
582 for (p = purple_plugins_get_protocols(), i = 0; 592 for (p = purple_plugins_get_protocols(), i = 0;
583 p != NULL; 593 p != NULL;
584 p = p->next, i++) 594 p = p->next, i++) {
585 {
586 595
587 plugin = (PurplePlugin *)p->data; 596 plugin = (PurplePlugin *)p->data;
588 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); 597 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
589 598
590 if (gtalk_name && strcmp(gtalk_name, plugin->info->name) < 0) 599 if (gtalk_name && strcmp(gtalk_name, plugin->info->name) < 0) {
591 {
592 char *filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", 600 char *filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols",
593 "16", "google-talk.png", NULL); 601 "16", "google-talk.png", NULL);
594 pixbuf = gdk_pixbuf_new_from_file(filename, NULL); 602 pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
595 g_free(filename); 603 g_free(filename);
596 604
605 613
606 pixbuf = get_prpl_pixbuf(prpl_info); 614 pixbuf = get_prpl_pixbuf(prpl_info);
607 615
608 gtk_menu_shell_append(GTK_MENU_SHELL(aop_menu->menu), 616 gtk_menu_shell_append(GTK_MENU_SHELL(aop_menu->menu),
609 aop_menu_item_new(sg, pixbuf, plugin->info->name, plugin->info->id)); 617 aop_menu_item_new(sg, pixbuf, plugin->info->name, plugin->info->id));
618
610 if (pixbuf) 619 if (pixbuf)
611 g_object_unref(pixbuf); 620 g_object_unref(pixbuf);
612 621
613 if (default_proto_id != NULL && !strcmp(plugin->info->id, default_proto_id)) 622 if (default_proto_id != NULL && !strcmp(plugin->info->id, default_proto_id))
614 aop_menu->default_item = i; 623 aop_menu->default_item = i;
630 pidgin_account_option_menu_get_selected(GtkWidget *optmenu) 639 pidgin_account_option_menu_get_selected(GtkWidget *optmenu)
631 { 640 {
632 return (PurpleAccount *)aop_option_menu_get_selected(optmenu, NULL); 641 return (PurpleAccount *)aop_option_menu_get_selected(optmenu, NULL);
633 } 642 }
634 643
635 static AOP_MENU * 644 static AopMenu *
636 create_account_menu(PurpleAccount *default_account, 645 create_account_menu(PurpleAccount *default_account,
637 PurpleFilterAccountFunc filter_func, gboolean show_all) 646 PurpleFilterAccountFunc filter_func, gboolean show_all)
638 { 647 {
639 AOP_MENU *aop_menu = NULL; 648 AopMenu *aop_menu = NULL;
640 PurpleAccount *account; 649 PurpleAccount *account;
641 GdkPixbuf *pixbuf = NULL; 650 GdkPixbuf *pixbuf = NULL;
642 GList *list; 651 GList *list;
643 GList *p; 652 GList *p;
644 GtkSizeGroup *sg; 653 GtkSizeGroup *sg;
648 if (show_all) 657 if (show_all)
649 list = purple_accounts_get_all(); 658 list = purple_accounts_get_all();
650 else 659 else
651 list = purple_connections_get_all(); 660 list = purple_connections_get_all();
652 661
653 aop_menu = g_malloc0(sizeof(AOP_MENU)); 662 aop_menu = g_malloc0(sizeof(AopMenu));
654 aop_menu->default_item = -1; 663 aop_menu->default_item = -1;
655 aop_menu->menu = g_object_new(GTK_TYPE_MENU, "visible", TRUE, NULL); 664 aop_menu->menu = g_object_new(GTK_TYPE_MENU, "visible", TRUE, NULL);
656 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); 665 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
657 666
658 for (p = list, i = 0; p != NULL; p = p->next, i++) { 667 for (p = list, i = 0; p != NULL; p = p->next, i++) {
672 continue; 681 continue;
673 } 682 }
674 683
675 plugin = purple_find_prpl(purple_account_get_protocol_id(account)); 684 plugin = purple_find_prpl(purple_account_get_protocol_id(account));
676 685
677 if (plugin != NULL) 686 if (plugin)
678 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); 687 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
679 688
680 /* Load the image. */ 689 /* Load the image. */
681 if (prpl_info != NULL) { 690 if (prpl_info) {
682 pixbuf = get_prpl_pixbuf(prpl_info); 691 pixbuf = get_prpl_pixbuf(prpl_info);
683 692
684 if (pixbuf != NULL) { 693 if (pixbuf) {
685 if (purple_account_is_disconnected(account) && show_all && 694 if (purple_account_is_disconnected(account) && show_all &&
686 purple_connections_get_all()) 695 purple_connections_get_all())
687 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE); 696 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
688 } 697 }
689 } 698 }
703 aop_menu_item_new(sg, pixbuf, buf, account)); 712 aop_menu_item_new(sg, pixbuf, buf, account));
704 713
705 if (pixbuf) 714 if (pixbuf)
706 g_object_unref(pixbuf); 715 g_object_unref(pixbuf);
707 716
708 if (default_account != NULL && account == default_account) 717 if (default_account && account == default_account)
709 aop_menu->default_item = i; 718 aop_menu->default_item = i;
710 } 719 }
711 720
712 g_object_unref(sg); 721 g_object_unref(sg);
713 722
784 optmenu); 793 optmenu);
785 794
786 /* Set some data. */ 795 /* Set some data. */
787 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data); 796 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data);
788 g_object_set_data(G_OBJECT(optmenu), "show_all", GINT_TO_POINTER(show_all)); 797 g_object_set_data(G_OBJECT(optmenu), "show_all", GINT_TO_POINTER(show_all));
789 g_object_set_data(G_OBJECT(optmenu), "filter_func", 798 g_object_set_data(G_OBJECT(optmenu), "filter_func", filter_func);
790 filter_func);
791 799
792 return optmenu; 800 return optmenu;
793 } 801 }
794 802
795 gboolean 803 gboolean