Mercurial > pidgin.yaz
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 |