[gedit] spell-checker-dialog: create the construct-only spell-check property



commit 6d5f7350abfc11daa3048803ff3d08c8f04b16b1
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Fri Jul 24 19:02:02 2015 +0200

    spell-checker-dialog: create the construct-only spell-check property
    
    And have only one constructor, the other one was anyway not used.

 plugins/spell/gedit-spell-checker-dialog.c |  123 ++++++++++++++++++----------
 plugins/spell/gedit-spell-checker-dialog.h |    4 +-
 plugins/spell/gedit-spell-plugin.c         |    2 +-
 3 files changed, 82 insertions(+), 47 deletions(-)
---
diff --git a/plugins/spell/gedit-spell-checker-dialog.c b/plugins/spell/gedit-spell-checker-dialog.c
index 5d4b659..a556472 100644
--- a/plugins/spell/gedit-spell-checker-dialog.c
+++ b/plugins/spell/gedit-spell-checker-dialog.c
@@ -45,6 +45,12 @@ struct _GeditSpellCheckerDialog
 
 enum
 {
+       PROP_0,
+       PROP_SPELL_CHECKER,
+};
+
+enum
+{
        IGNORE,
        IGNORE_ALL,
        CHANGE,
@@ -89,6 +95,63 @@ static guint signals [LAST_SIGNAL] = { 0 };
 G_DEFINE_TYPE (GeditSpellCheckerDialog, gedit_spell_checker_dialog, GTK_TYPE_WINDOW)
 
 static void
+set_spell_checker (GeditSpellCheckerDialog *dialog,
+                  GeditSpellChecker       *checker)
+{
+       const GeditSpellCheckerLanguage *lang;
+
+       g_return_if_fail (dialog->spell_checker == NULL);
+       dialog->spell_checker = g_object_ref (checker);
+
+       lang = gedit_spell_checker_get_language (dialog->spell_checker);
+
+       gtk_header_bar_set_subtitle (GTK_HEADER_BAR (dialog->header_bar),
+                                    gedit_spell_checker_language_to_string (lang));
+
+       g_object_notify (G_OBJECT (dialog), "spell-checker");
+}
+
+static void
+gedit_spell_checker_dialog_get_property (GObject    *object,
+                                        guint       prop_id,
+                                        GValue     *value,
+                                        GParamSpec *pspec)
+{
+       GeditSpellCheckerDialog *dialog = GEDIT_SPELL_CHECKER_DIALOG (object);
+
+       switch (prop_id)
+       {
+               case PROP_SPELL_CHECKER:
+                       g_value_set_object (value, dialog->spell_checker);
+                       break;
+
+               default:
+                       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                       break;
+       }
+}
+
+static void
+gedit_spell_checker_dialog_set_property (GObject      *object,
+                                        guint         prop_id,
+                                        const GValue *value,
+                                        GParamSpec   *pspec)
+{
+       GeditSpellCheckerDialog *dialog = GEDIT_SPELL_CHECKER_DIALOG (object);
+
+       switch (prop_id)
+       {
+               case PROP_SPELL_CHECKER:
+                       set_spell_checker (dialog, g_value_get_object (value));
+                       break;
+
+               default:
+                       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                       break;
+       }
+}
+
+static void
 gedit_spell_checker_dialog_dispose (GObject *object)
 {
        GeditSpellCheckerDialog *dialog = GEDIT_SPELL_CHECKER_DIALOG (object);
@@ -120,6 +183,8 @@ gedit_spell_checker_dialog_class_init (GeditSpellCheckerDialogClass *klass)
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
        GtkBindingSet *binding_set;
 
+       object_class->get_property = gedit_spell_checker_dialog_get_property;
+       object_class->set_property = gedit_spell_checker_dialog_set_property;
        object_class->dispose = gedit_spell_checker_dialog_dispose;
        object_class->finalize = gedit_spell_checker_dialog_finalize;
 
@@ -128,6 +193,16 @@ gedit_spell_checker_dialog_class_init (GeditSpellCheckerDialogClass *klass)
        binding_set = gtk_binding_set_by_class (klass);
        gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0, "close", 0);
 
+       g_object_class_install_property (object_class,
+                                        PROP_SPELL_CHECKER,
+                                        g_param_spec_object ("spell-checker",
+                                                             "Spell Checker",
+                                                             "",
+                                                             GEDIT_TYPE_SPELL_CHECKER,
+                                                             G_PARAM_READWRITE |
+                                                             G_PARAM_CONSTRUCT_ONLY |
+                                                             G_PARAM_STATIC_STRINGS));
+
        signals[IGNORE] =
                g_signal_new ("ignore",
                              G_OBJECT_CLASS_TYPE (object_class),
@@ -317,51 +392,13 @@ gedit_spell_checker_dialog_init (GeditSpellCheckerDialog *dialog)
 }
 
 GtkWidget *
-gedit_spell_checker_dialog_new (void)
-{
-       return g_object_new (GEDIT_TYPE_SPELL_CHECKER_DIALOG, NULL);
-}
-
-GtkWidget *
-gedit_spell_checker_dialog_new_from_spell_checker (GeditSpellChecker *spell)
-{
-       GeditSpellCheckerDialog *dialog;
-
-       g_return_val_if_fail (GEDIT_IS_SPELL_CHECKER (spell), NULL);
-
-       dialog = g_object_new (GEDIT_TYPE_SPELL_CHECKER_DIALOG, NULL);
-
-       gedit_spell_checker_dialog_set_spell_checker (dialog, spell);
-
-       return GTK_WIDGET (dialog);
-}
-
-void
-gedit_spell_checker_dialog_set_spell_checker (GeditSpellCheckerDialog *dialog,
-                                             GeditSpellChecker       *checker)
+gedit_spell_checker_dialog_new (GeditSpellChecker *checker)
 {
-       const GeditSpellCheckerLanguage *language;
-
-       g_return_if_fail (GEDIT_IS_SPELL_CHECKER_DIALOG (dialog));
-       g_return_if_fail (GEDIT_IS_SPELL_CHECKER (checker));
-
-       g_set_object (&dialog->spell_checker, checker);
-
-       language = gedit_spell_checker_get_language (dialog->spell_checker);
-
-       gtk_header_bar_set_subtitle (GTK_HEADER_BAR (dialog->header_bar),
-                                    gedit_spell_checker_language_to_string (language));
-
-       if (dialog->misspelled_word != NULL)
-       {
-               gedit_spell_checker_dialog_set_misspelled_word (dialog, dialog->misspelled_word);
-       }
-       else
-       {
-               gtk_list_store_clear (GTK_LIST_STORE (dialog->suggestions_list_model));
-       }
+       g_return_val_if_fail (GEDIT_IS_SPELL_CHECKER (checker), NULL);
 
-       /* TODO: reset all widgets */
+       return g_object_new (GEDIT_TYPE_SPELL_CHECKER_DIALOG,
+                            "spell-checker", checker,
+                            NULL);
 }
 
 void
diff --git a/plugins/spell/gedit-spell-checker-dialog.h b/plugins/spell/gedit-spell-checker-dialog.h
index 6be6487..81b7449 100644
--- a/plugins/spell/gedit-spell-checker-dialog.h
+++ b/plugins/spell/gedit-spell-checker-dialog.h
@@ -64,9 +64,7 @@ struct _GeditSpellCheckerDialogClass
 
 GType          gedit_spell_checker_dialog_get_type                     (void) G_GNUC_CONST;
 
-GtkWidget *    gedit_spell_checker_dialog_new                          (void);
-
-GtkWidget *    gedit_spell_checker_dialog_new_from_spell_checker       (GeditSpellChecker *spell);
+GtkWidget *    gedit_spell_checker_dialog_new                          (GeditSpellChecker *spell);
 
 void           gedit_spell_checker_dialog_set_spell_checker            (GeditSpellCheckerDialog *dialog,
                                                                         GeditSpellChecker       *spell);
diff --git a/plugins/spell/gedit-spell-plugin.c b/plugins/spell/gedit-spell-plugin.c
index cf11651..bddb6d9 100644
--- a/plugins/spell/gedit-spell-plugin.c
+++ b/plugins/spell/gedit-spell-plugin.c
@@ -944,7 +944,7 @@ spell_cb (GSimpleAction *action,
                return;
        }
 
-       dlg = gedit_spell_checker_dialog_new_from_spell_checker (checker);
+       dlg = gedit_spell_checker_dialog_new (checker);
        gtk_window_set_modal (GTK_WINDOW (dlg), TRUE);
        gtk_window_set_transient_for (GTK_WINDOW (dlg),
                                      GTK_WINDOW (priv->window));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]