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