aboutsummaryrefslogtreecommitdiffstats
path: root/embed/find-dialog.c
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2003-11-30 22:08:32 +0800
committerChristian Persch <chpe@src.gnome.org>2003-11-30 22:08:32 +0800
commit1aa5a63dad335d4f05b65915bb553fb28192ab02 (patch)
treef2572a0a3c6395b029ebb94a1c0797d4a14e858e /embed/find-dialog.c
parent2a4417e4222ce7ce938c5848d43fdbe27089141b (diff)
downloadgsoc2013-epiphany-1aa5a63dad335d4f05b65915bb553fb28192ab02.tar
gsoc2013-epiphany-1aa5a63dad335d4f05b65915bb553fb28192ab02.tar.gz
gsoc2013-epiphany-1aa5a63dad335d4f05b65915bb553fb28192ab02.tar.bz2
gsoc2013-epiphany-1aa5a63dad335d4f05b65915bb553fb28192ab02.tar.lz
gsoc2013-epiphany-1aa5a63dad335d4f05b65915bb553fb28192ab02.tar.xz
gsoc2013-epiphany-1aa5a63dad335d4f05b65915bb553fb28192ab02.tar.zst
gsoc2013-epiphany-1aa5a63dad335d4f05b65915bb553fb28192ab02.zip
Improved API and implementation of EphyDialog. Add support for new combo
2003-11-30 Christian Persch <chpe@cvs.gnome.org> * 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.
Diffstat (limited to 'embed/find-dialog.c')
-rwxr-xr-xembed/find-dialog.c96
1 files changed, 54 insertions, 42 deletions
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);
@@ -185,6 +162,39 @@ set_properties (FindDialog *find_dialog)
}
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)
{
g_return_if_fail (EPHY_IS_EMBED (embed));
@@ -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);