Mercurial > pidgin
diff 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 |
line wrap: on
line diff
--- a/src/gtkconv.c Sun Dec 21 09:04:43 2003 +0000 +++ b/src/gtkconv.c Sun Dec 21 19:52:25 2003 +0000 @@ -739,20 +739,25 @@ GtkWidget *entry; }; -static void do_search_cb(GtkWidget *widget, gint resp, struct _search *s) +static void do_search_cb(GtkWidget *widget, struct _search *s) +{ + gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), gtk_entry_get_text(GTK_ENTRY(s->entry))); +} + +static void find_dlg_set_sensitive(GtkWidget *entry, GtkWidget *button) { - switch (resp) { - case GTK_RESPONSE_OK: - gtk_imhtml_search_find(GTK_IMHTML(s->gtkconv->imhtml), gtk_entry_get_text(GTK_ENTRY(s->entry))); - break; - case GTK_RESPONSE_DELETE_EVENT: - case GTK_RESPONSE_CLOSE: - gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml)); - gtk_widget_destroy(s->gtkconv->dialogs.search); - s->gtkconv->dialogs.search = NULL; - g_free(s); - break; - } + if(*gtk_entry_get_text(GTK_ENTRY(entry))) + gtk_widget_set_sensitive(button, TRUE); + else + gtk_widget_set_sensitive(button, FALSE); +} + +static gboolean find_dlg_close_cb(GtkWidget *w, struct _search *s) +{ + gtk_imhtml_search_clear(GTK_IMHTML(s->gtkconv->imhtml)); + s->gtkconv->dialogs.search = NULL; + g_free(s); + return TRUE; } static void @@ -762,49 +767,80 @@ GaimConversation *conv = gaim_conv_window_get_active_conversation(win); GaimGtkWindow *gtkwin = GAIM_GTK_WINDOW(win); GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); - GtkWidget *hbox; + GtkWidget *table; + GtkWidget *labelbox, *bbox; + GtkWidget *button, *align; GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); GtkWidget *label, *entry; struct _search *s; + gint signal_id; + GClosure *closure; if (gtkconv->dialogs.search) { gtk_window_present(GTK_WINDOW(gtkconv->dialogs.search)); return; } - gtkconv->dialogs.search = gtk_dialog_new_with_buttons(_("Find"), GTK_WINDOW(gtkwin->window), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, - GTK_STOCK_FIND, GTK_RESPONSE_OK, NULL); - gtk_dialog_set_default_response (GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK); - gtk_container_set_border_width (GTK_CONTAINER(gtkconv->dialogs.search), 6); + gtkconv->dialogs.search = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(gtkconv->dialogs.search), _("Find")); + gtk_window_set_transient_for(GTK_WINDOW(gtkconv->dialogs.search), + GTK_WINDOW(gtkwin->window)); + gtk_window_set_destroy_with_parent(GTK_WINDOW(gtkconv->dialogs.search), TRUE); + gtk_window_set_position(GTK_WINDOW(gtkconv->dialogs.search), GTK_WIN_POS_CENTER_ON_PARENT); + gtk_container_set_border_width (GTK_CONTAINER(gtkconv->dialogs.search), 12); gtk_window_set_resizable(GTK_WINDOW(gtkconv->dialogs.search), FALSE); - gtk_dialog_set_has_separator(GTK_DIALOG(gtkconv->dialogs.search), FALSE); - gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 12); - gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), 6); - - hbox = gtk_hbox_new(FALSE, 12); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(gtkconv->dialogs.search)->vbox), hbox); - gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); + + table = gtk_table_new(2, 2, FALSE); + gtk_container_add(GTK_CONTAINER(gtkconv->dialogs.search), table); + gtk_table_set_row_spacings(GTK_TABLE(table), 12); + gtk_table_set_col_spacings(GTK_TABLE(table), 12); + + labelbox = gtk_hbox_new(FALSE, 12); + gtk_box_pack_start(GTK_BOX(labelbox), img, FALSE, FALSE, 0); gtk_misc_set_alignment(GTK_MISC(img), 0, 0); - gtk_dialog_set_response_sensitive(GTK_DIALOG(gtkconv->dialogs.search), GTK_RESPONSE_OK, FALSE); + gtk_table_attach_defaults(GTK_TABLE(table), labelbox, 0, 1, 0, 1); label = gtk_label_new(NULL); gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Search for:")); + gtk_box_pack_start(GTK_BOX(labelbox), label, FALSE, FALSE, 0); + entry = gtk_entry_new(); gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(entry)); - g_signal_connect(G_OBJECT(entry), "changed", - G_CALLBACK(gaim_gtk_set_sensitive_if_input), - gtkconv->dialogs.search); - gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); + gtk_table_attach_defaults(GTK_TABLE(table), entry, 1, 2, 0, 1); s = g_malloc(sizeof(struct _search)); s->gtkconv = gtkconv; s->entry = entry; - g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "response", G_CALLBACK(do_search_cb), s); + bbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_EDGE); + gtk_box_set_spacing(GTK_BOX(bbox), 12); + gtk_table_attach_defaults(GTK_TABLE(table), bbox, 1, 2, 1, 2); + + button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); + gtk_container_add(GTK_CONTAINER(bbox), button); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + g_signal_connect_swapped(G_OBJECT(button), "clicked", + G_CALLBACK(gtk_widget_destroy), gtkconv->dialogs.search); + + button = gtk_button_new_from_stock(GTK_STOCK_FIND); + gtk_container_add(GTK_CONTAINER(bbox), button); + gtk_widget_set_sensitive(button, FALSE); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); +/* + signal_id = g_signal_lookup ("clicked", GTK_TYPE_BUTTON); + closure = g_cclosure_new_object (G_CALLBACK (action_widget_activated), + G_OBJECT (dialog)); + g_signal_connect_closure_by_id (child, signal_id, 0, closure, FALSE); +*/ + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(do_search_cb), s); + + gtk_window_set_default(GTK_WINDOW(gtkconv->dialogs.search), button); + g_signal_connect(G_OBJECT(gtkconv->dialogs.search), "destroy", + G_CALLBACK(find_dlg_close_cb), s); + g_signal_connect(G_OBJECT(entry), "changed", + G_CALLBACK(find_dlg_set_sensitive), button); gtk_widget_show_all(gtkconv->dialogs.search); }