Mercurial > pidgin
comparison src/gtkconv.c @ 7906:d3f2aa8de5bf
[gaim-migrate @ 8566]
finish translation from Arto Alakulju and find dialog tweaks from javabsp
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Sun, 21 Dec 2003 19:52:25 +0000 |
parents | d12b234959d5 |
children | 1441648fe974 |
comparison
equal
deleted
inserted
replaced
7905:1d0bc32f8038 | 7906:d3f2aa8de5bf |
---|---|
737 struct _search { | 737 struct _search { |
738 GaimGtkConversation *gtkconv; | 738 GaimGtkConversation *gtkconv; |
739 GtkWidget *entry; | 739 GtkWidget *entry; |
740 }; | 740 }; |
741 | 741 |
742 static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s) | 742 static void do_search_cb(GtkWidget *widget, struct _search *s) |
743 { | 743 { |
744 switch (resp) { | 744 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), gtk_entry_get_text(GTK_ENTRY(s->entry))); |
745 case GTK_RESPONSE_OK: | 745 } |
746 gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), gtk_entry_get_text(GTK_ENTRY(s->entry))); | 746 |
747 break; | 747 static void find_dlg_set_sensitive(GtkWidget *entry, GtkWidget *button) |
748 case GTK_RESPONSE_DELETE_EVENT: | 748 { |
749 case GTK_RESPONSE_CLOSE: | 749 if(*gtk_entry_get_text(GTK_ENTRY(entry))) |
750 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml)); | 750 gtk_widget_set_sensitive(button, TRUE); |
751 gtk_widget_destroy(s->gtkconv->dialogs.search); | 751 else |
752 s->gtkconv->dialogs.search = NULL; | 752 gtk_widget_set_sensitive(button, FALSE); |
753 g_free(s); | 753 } |
754 break; | 754 |
755 } | 755 static gboolean find_dlg_close_cb(GtkWidget *w, struct _search *s) |
756 { | |
757 gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml)); | |
758 s->gtkconv->dialogs.search = NULL; | |
759 g_free(s); | |
760 return TRUE; | |
756 } | 761 } |
757 | 762 |
758 static void | 763 static void |
759 menu_find_cb(gpointer data, guint action, GtkWidget *widget) | 764 menu_find_cb(gpointer data, guint action, GtkWidget *widget) |
760 { | 765 { |
761 GaimConvWindow *win = (GaimConvWindow *)data; | 766 GaimConvWindow *win = (GaimConvWindow *)data; |
762 GaimConversation *conv = gaim_conv_window_get_active_conversation(win); | 767 GaimConversation *conv = gaim_conv_window_get_active_conversation(win); |
763 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); | 768 GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); |
764 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); | 769 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); |
765 GtkWidget *hbox; | 770 GtkWidget *table; |
771 GtkWidget *labelbox, *bbox; | |
772 GtkWidget *button, *align; | |
766 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); | 773 GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); |
767 GtkWidget *label, *entry; | 774 GtkWidget *label, *entry; |
768 struct _search *s; | 775 struct _search *s; |
776 gint signal_id; | |
777 GClosure *closure; | |
769 | 778 |
770 if (gtkconv->dialogs.search) { | 779 if (gtkconv->dialogs.search) { |
771 gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search)); | 780 gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search)); |
772 return; | 781 return; |
773 } | 782 } |
774 | 783 |
775 gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"), GTK_WINDOW(gtkwin->window), | 784 gtkconv->dialogs.search = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
776 GTK_DIALOG_DESTROY_WITH_PARENT, | 785 gtk_window_set_title(GTK_WINDOW(gtkconv->dialogs.search), _("Find")); |
777 GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, | 786 gtk_window_set_transient_for(GTK_WINDOW(gtkconv->dialogs.search), |
778 GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); | 787 GTK_WINDOW(gtkwin->window)); |
779 gtk_dialog_set_default_response (GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK); | 788 gtk_window_set_destroy_with_parent(GTK_WINDOW(gtkconv->dialogs.search), TRUE); |
780 gtk_container_set_border_width (GTK_CONTAINER(gtkconv->dialogs.search), 6); | 789 gtk_window_set_position(GTK_WINDOW(gtkconv->dialogs.search), GTK_WIN_POS_CENTER_ON_PARENT); |
790 gtk_container_set_border_width (GTK_CONTAINER(gtkconv->dialogs.search), 12); | |
781 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE); | 791 gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE); |
782 gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE); | 792 |
783 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12); | 793 table = gtk_table_new(2, 2, FALSE); |
784 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6); | 794 gtk_container_add(GTK_CONTAINER(gtkconv->dialogs.search), table); |
785 | 795 gtk_table_set_row_spacings(GTK_TABLE(table), 12); |
786 hbox = gtk_hbox_new(FALSE, 12); | 796 gtk_table_set_col_spacings(GTK_TABLE(table), 12); |
787 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), hbox); | 797 |
788 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | 798 labelbox = gtk_hbox_new(FALSE, 12); |
799 gtk_box_pack_start(GTK_BOX(labelbox), img, FALSE, FALSE, 0); | |
789 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | 800 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
790 gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK, FALSE); | 801 gtk_table_attach_defaults(GTK_TABLE(table), labelbox, 0, 1, 0, 1); |
791 | 802 |
792 label = gtk_label_new(NULL); | 803 label = gtk_label_new(NULL); |
793 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); | 804 gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); |
805 gtk_box_pack_start(GTK_BOX(labelbox), label, FALSE, FALSE, 0); | |
806 | |
794 entry = gtk_entry_new(); | 807 entry = gtk_entry_new(); |
795 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); | 808 gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); |
796 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(entry)); | 809 gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(entry)); |
797 g_signal_connect(G_OBJECT(entry), "changed", | 810 gtk_table_attach_defaults(GTK_TABLE(table), entry, 1, 2, 0, 1); |
798 G_CALLBACK(gaim_gtk_set_sensitive_if_input), | |
799 gtkconv->dialogs.search); | |
800 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
801 gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | |
802 | 811 |
803 s = g_malloc(sizeof(struct _search)); | 812 s = g_malloc(sizeof(struct _search)); |
804 s->gtkconv = gtkconv; | 813 s->gtkconv = gtkconv; |
805 s->entry = entry; | 814 s->entry = entry; |
806 | 815 |
807 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", G_CALLBACK(do_search_cb), s); | 816 bbox = gtk_hbutton_box_new(); |
817 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_EDGE); | |
818 gtk_box_set_spacing(GTK_BOX(bbox), 12); | |
819 gtk_table_attach_defaults(GTK_TABLE(table), bbox, 1, 2, 1, 2); | |
820 | |
821 button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); | |
822 gtk_container_add(GTK_CONTAINER(bbox), button); | |
823 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); | |
824 g_signal_connect_swapped(G_OBJECT(button), "clicked", | |
825 G_CALLBACK(gtk_widget_destroy), gtkconv->dialogs.search); | |
826 | |
827 button = gtk_button_new_from_stock(GTK_STOCK_FIND); | |
828 gtk_container_add(GTK_CONTAINER(bbox), button); | |
829 gtk_widget_set_sensitive(button, FALSE); | |
830 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); | |
831 /* | |
832 signal_id = g_signal_lookup ("clicked", GTK_TYPE_BUTTON); | |
833 closure = g_cclosure_new_object (G_CALLBACK (action_widget_activated), | |
834 G_OBJECT (dialog)); | |
835 g_signal_connect_closure_by_id (child, signal_id, 0, closure, FALSE); | |
836 */ | |
837 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(do_search_cb), s); | |
838 | |
839 gtk_window_set_default(GTK_WINDOW(gtkconv->dialogs.search), button); | |
840 g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "destroy", | |
841 G_CALLBACK(find_dlg_close_cb), s); | |
842 g_signal_connect(G_OBJECT(entry), "changed", | |
843 G_CALLBACK(find_dlg_set_sensitive), button); | |
808 | 844 |
809 gtk_widget_show_all(gtkconv->dialogs.search); | 845 gtk_widget_show_all(gtkconv->dialogs.search); |
810 } | 846 } |
811 | 847 |
812 static void | 848 static void |