From 1aa5a63dad335d4f05b65915bb553fb28192ab02 Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Sun, 30 Nov 2003 14:08:32 +0000 Subject: Improved API and implementation of EphyDialog. Add support for new combo 2003-11-30 Christian Persch * configure.in: * data/glade/epiphany.glade: * data/glade/prefs-dialog.glade: * embed/downloader-view.c: (downloader_view_build_ui): * embed/ephy-embed-dialog.c: (ephy_embed_dialog_new_with_parent): * embed/ephy-encodings.c: (ephy_encodings_get_detectors): * embed/ephy-encodings.h: * embed/find-dialog.c: (update_navigation_controls), (set_properties), (impl_show), (find_dialog_class_init), (find_dialog_init), (find_dialog_new_with_parent): * embed/print-dialog.c: (impl_show), (print_dialog_init), (print_dialog_new_with_parent), (print_get_info): * lib/ephy-dialog.c: (ephy_dialog_get_type), (lookup_info), (set_sensitivity), (set_value_from_pref), (set_pref_from_value), (set_value_from_editable), (set_value_from_optionmenu), (set_value_from_combobox), (get_radio_button_active_index), (set_value_from_radiobuttongroup), (set_value_from_spin_button), (set_value_from_togglebutton), (set_value_from_info), (set_editable_from_value), (get_index_from_value), (set_optionmenu_from_value), (compare_values), (set_combo_box_from_value), (set_radiobuttongroup_from_value), (set_spin_button_from_value), (set_togglebutton_from_value), (set_info_from_value), (set_pref_from_info), (togglebutton_clicked_cb), (radiobutton_clicked_cb), (spinbutton_timeout_cb), (spinbutton_changed_cb), (changed_cb), (set_info_from_pref), (connect_signals), (disconnect_signals), (init_props), (load_info), (save_info), (setup_default_size), (dialog_destroy_cb), (impl_construct), (impl_show), (ephy_dialog_set_modal), (ephy_dialog_add_enum), (ephy_dialog_set_data_column), (ephy_dialog_set_pref), (ephy_dialog_set_size_group), (ephy_dialog_construct), (ephy_dialog_show), (ephy_dialog_run), (ephy_dialog_get_control), (ephy_dialog_get_value), (ephy_dialog_set_value), (free_prop_info), (ephy_dialog_init), (ephy_dialog_dispose), (ephy_dialog_finalize), (ephy_dialog_set_parent), (ephy_dialog_set_property), (ephy_dialog_get_property), (ephy_dialog_class_init), (ephy_dialog_new), (ephy_dialog_new_with_parent): * lib/ephy-dialog.h: * lib/ephy-file-chooser.c: (ephy_file_chooser_new): * src/ephy-encoding-dialog.c: (sync_embed_cb), (sync_parent_window_cb), (activate_choice), (view_node_selected_cb), (view_node_activated_cb), (ephy_encoding_dialog_init), (ephy_encoding_dialog_new): * src/ephy-shell.c: (ephy_shell_finalize), (ephy_shell_get_pdm_dialog), (ephy_shell_get_prefs_dialog): * src/ephy-shell.h: * src/language-editor.c: (language_editor_get_type), (language_editor_class_init), (language_editor_update_pref), (language_editor_add_button_clicked_cb), (language_editor_set_view), (language_editor_init), (language_editor_new), (language_editor_set_model), (language_editor_add): * src/language-editor.h: * src/pdm-dialog.c: (pdm_dialog_show_help), (action_treeview_selection_changed_cb), (setup_action), (cookies_treeview_selection_changed_cb), (pdm_dialog_cookies_construct), (pdm_dialog_passwords_construct), (pdm_dialog_init), (show_cookies_properties): * src/prefs-dialog.c: (prefs_dialog_get_type), (prefs_dialog_class_init), (prefs_dialog_show_help), (setup_font_combo), (fonts_language_combo_changed_cb), (create_fonts_language_menu), (create_node_combo), (language_combo_changed_cb), (create_language_menu), (get_download_button_label), (create_download_path_label), (prefs_dialog_init), (prefs_dialog_response_cb), (set_homepage_entry), (prefs_homepage_current_button_clicked_cb), (prefs_homepage_blank_button_clicked_cb), (language_dialog_changed_cb), (prefs_language_more_button_clicked_cb), (download_path_response_cb), (prefs_download_path_button_clicked_cb): * src/prefs-dialog.h: * src/window-commands.c: (window_cmd_edit_prefs): Improved API and implementation of EphyDialog. Add support for new combo box, and removed optionmenu. Port all dialogues to new API and use combobox instead of optionmenus. --- embed/find-dialog.c | 96 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 42 deletions(-) (limited to 'embed/find-dialog.c') diff --git a/embed/find-dialog.c b/embed/find-dialog.c index ace630cda..932511cec 100755 --- a/embed/find-dialog.c +++ b/embed/find-dialog.c @@ -47,6 +47,7 @@ static GObjectClass *parent_class = NULL; struct FindDialogPrivate { EphyEmbed *old_embed; + gboolean initialised; }; enum @@ -62,13 +63,13 @@ enum static const EphyDialogProperty properties [] = { - { WINDOW_PROP, "find_dialog", NULL, PT_NORMAL, NULL }, - { MATCH_CASE_PROP, "case_check", CONF_FIND_MATCH_CASE, PT_NORMAL, NULL }, - { AUTOWRAP_PROP, "wrap_check", CONF_FIND_AUTOWRAP, PT_NORMAL, NULL }, - { WORD_PROP, "find_entry", CONF_FIND_WORD, PT_NORMAL, NULL }, - { BACK_BUTTON, "back_button", NULL, PT_NORMAL, NULL }, - { FORWARD_BUTTON, "forward_button", NULL, PT_NORMAL, NULL }, - { -1, NULL, NULL } + { "find_dialog", NULL, PT_NORMAL, 0 }, + { "case_check", CONF_FIND_MATCH_CASE, PT_NORMAL, 0 }, + { "wrap_check", CONF_FIND_AUTOWRAP, PT_NORMAL, 0 }, + { "find_entry", CONF_FIND_WORD, PT_NORMAL, 0 }, + { "back_button", NULL, PT_NORMAL, 0 }, + { "forward_button", NULL, PT_NORMAL, 0 }, + { NULL } }; GType @@ -105,41 +106,15 @@ update_navigation_controls (FindDialog *dialog, gboolean prev, gboolean next) { GtkWidget *button; - button = ephy_dialog_get_control (EPHY_DIALOG (dialog), BACK_BUTTON); + button = ephy_dialog_get_control (EPHY_DIALOG (dialog), + properties[BACK_BUTTON].id); gtk_widget_set_sensitive (button, prev); - button = ephy_dialog_get_control (EPHY_DIALOG (dialog), FORWARD_BUTTON); + button = ephy_dialog_get_control (EPHY_DIALOG (dialog), + properties[FORWARD_BUTTON].id); gtk_widget_set_sensitive (button, next); } -static void -impl_show (EphyDialog *dialog) -{ - - EPHY_DIALOG_CLASS (parent_class)->show (dialog); - - /* Focus the text entry. This will correctly select or leave - * unselected the existing text in the entry depending on the - * 'gtk-entry-select-on-focus = 0 / 1' setting in user's gtkrc. - */ - gtk_widget_grab_focus (ephy_dialog_get_control (dialog, WORD_PROP)); -} - -static void -find_dialog_class_init (FindDialogClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - EphyDialogClass *ephy_dialog_class; - - parent_class = g_type_class_peek_parent (klass); - ephy_dialog_class = EPHY_DIALOG_CLASS (klass); - - object_class->finalize = find_dialog_finalize; - - ephy_dialog_class->show = impl_show; - - g_type_class_add_private (object_class, sizeof (FindDialogPrivate)); -} static void set_properties (FindDialog *find_dialog) @@ -153,8 +128,10 @@ set_properties (FindDialog *find_dialog) EphyDialog *dialog = EPHY_DIALOG (find_dialog); EphyEmbed *embed; + if (!find_dialog->priv->initialised) return; + /* get the search string from the entry field */ - ephy_dialog_get_value (dialog, WORD_PROP, &word); + ephy_dialog_get_value (dialog, properties[WORD_PROP].id, &word); search_string = g_strdup (g_value_get_string (&word)); g_value_unset (&word); @@ -167,11 +144,11 @@ set_properties (FindDialog *find_dialog) return; } - ephy_dialog_get_value (dialog, MATCH_CASE_PROP, &match_case); + ephy_dialog_get_value (dialog, properties[MATCH_CASE_PROP].id, &match_case); b_match_case = g_value_get_boolean (&match_case); g_value_unset (&match_case); - ephy_dialog_get_value (dialog, AUTOWRAP_PROP, &wrap); + ephy_dialog_get_value (dialog, properties[AUTOWRAP_PROP].id, &wrap); b_wrap = g_value_get_boolean (&wrap); g_value_unset (&wrap); @@ -184,6 +161,39 @@ set_properties (FindDialog *find_dialog) g_free (search_string); } +static void +impl_show (EphyDialog *dialog) +{ + EPHY_DIALOG_CLASS (parent_class)->show (dialog); + + EPHY_FIND_DIALOG (dialog)->priv->initialised = TRUE; + + set_properties (EPHY_FIND_DIALOG (dialog)); + + /* Focus the text entry. This will correctly select or leave + * unselected the existing text in the entry depending on the + * 'gtk-entry-select-on-focus = 0 / 1' setting in user's gtkrc. + */ + gtk_widget_grab_focus (ephy_dialog_get_control + (dialog, properties[WORD_PROP].id)); +} + +static void +find_dialog_class_init (FindDialogClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + EphyDialogClass *ephy_dialog_class; + + parent_class = g_type_class_peek_parent (klass); + ephy_dialog_class = EPHY_DIALOG_CLASS (klass); + + object_class->finalize = find_dialog_finalize; + + ephy_dialog_class->show = impl_show; + + g_type_class_add_private (object_class, sizeof (FindDialogPrivate)); +} + static void sync_page_change (EphyEmbed *embed, const char *address, FindDialog *dialog) { @@ -238,6 +248,7 @@ find_dialog_init (FindDialog *dialog) dialog->priv = EPHY_FIND_DIALOG_GET_PRIVATE (dialog); dialog->priv->old_embed = NULL; + dialog->priv->initialised = FALSE; ephy_dialog_construct (EPHY_DIALOG(dialog), properties, @@ -245,7 +256,8 @@ find_dialog_init (FindDialog *dialog) "find_dialog"); update_navigation_controls (dialog, TRUE, TRUE); - window = ephy_dialog_get_control (EPHY_DIALOG (dialog), WINDOW_PROP); + window = ephy_dialog_get_control (EPHY_DIALOG (dialog), + properties[WINDOW_PROP].id); icon = gtk_widget_render_icon (window, GTK_STOCK_FIND, GTK_ICON_SIZE_MENU, @@ -293,7 +305,7 @@ find_dialog_new_with_parent (GtkWidget *window, dialog = EPHY_FIND_DIALOG (g_object_new (EPHY_TYPE_FIND_DIALOG, "embed", embed, - "ParentWindow", window, + "parent-window", window, NULL)); return EPHY_DIALOG(dialog); -- cgit