[tepl] LanguageChooserWidget: implement the TeplLanguageChooser interface



commit bf6a64e7e2baf08f724b63c1d91b66fdf5fec7cc
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun Nov 1 00:54:47 2020 +0100

    LanguageChooserWidget: implement the TeplLanguageChooser interface
    
    And adapt the test for the new signal name.

 tepl/tepl-language-chooser-widget.c  | 51 ++++++++++++++++++------------------
 tepl/tepl-language-chooser-widget.h  |  4 ---
 tests/test-language-chooser-widget.c | 10 +++----
 3 files changed, 31 insertions(+), 34 deletions(-)
---
diff --git a/tepl/tepl-language-chooser-widget.c b/tepl/tepl-language-chooser-widget.c
index 9804f84..ee07983 100644
--- a/tepl/tepl-language-chooser-widget.c
+++ b/tepl/tepl-language-chooser-widget.c
@@ -3,6 +3,7 @@
  */
 
 #include "tepl-language-chooser-widget.h"
+#include "tepl-language-chooser.h"
 
 /**
  * SECTION:language-chooser-widget
@@ -16,17 +17,17 @@ struct _TeplLanguageChooserWidgetPrivate
        GtkListBox *list_box;
 };
 
-enum
-{
-       SIGNAL_LANGUAGE_SELECTED,
-       N_SIGNALS
-};
-
-static guint signals[N_SIGNALS];
-
 #define LIST_BOX_ROW_LANGUAGE_KEY "language-key"
 
-G_DEFINE_TYPE_WITH_PRIVATE (TeplLanguageChooserWidget, tepl_language_chooser_widget, GTK_TYPE_GRID)
+static void tepl_language_chooser_interface_init (gpointer g_iface,
+                                                 gpointer iface_data);
+
+G_DEFINE_TYPE_WITH_CODE (TeplLanguageChooserWidget,
+                        tepl_language_chooser_widget,
+                        GTK_TYPE_GRID,
+                        G_ADD_PRIVATE (TeplLanguageChooserWidget)
+                        G_IMPLEMENT_INTERFACE (TEPL_TYPE_LANGUAGE_CHOOSER,
+                                               tepl_language_chooser_interface_init))
 
 static void
 list_box_row_set_language (GtkListBoxRow     *list_box_row,
@@ -62,22 +63,22 @@ tepl_language_chooser_widget_class_init (TeplLanguageChooserWidgetClass *klass)
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
        object_class->dispose = tepl_language_chooser_widget_dispose;
+}
 
-       /**
-        * TeplLanguageChooserWidget::language-selected:
-        * @chooser_widget: the #TeplLanguageChooserWidget emitting the signal.
-        * @language: the #GtkSourceLanguage object that has been selected,
-        *   guaranteed to be non-%NULL.
-        *
-        * Since: 5.2
-        */
-       signals[SIGNAL_LANGUAGE_SELECTED] =
-               g_signal_new ("language-selected",
-                             G_TYPE_FROM_CLASS (klass),
-                             G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (TeplLanguageChooserWidgetClass, language_selected),
-                             NULL, NULL, NULL,
-                             G_TYPE_NONE, 1, GTK_SOURCE_TYPE_LANGUAGE);
+static void
+tepl_language_chooser_widget_select_language (TeplLanguageChooser *chooser,
+                                             GtkSourceLanguage   *language)
+{
+       /* TODO */
+}
+
+static void
+tepl_language_chooser_interface_init (gpointer g_iface,
+                                     gpointer iface_data)
+{
+       TeplLanguageChooserInterface *interface = g_iface;
+
+       interface->select_language = tepl_language_chooser_widget_select_language;
 }
 
 static void
@@ -190,7 +191,7 @@ list_box_row_activated_cb (GtkListBox                *list_box,
        g_return_if_fail (language != NULL);
 
        g_object_ref (language);
-       g_signal_emit (chooser_widget, signals[SIGNAL_LANGUAGE_SELECTED], 0, language);
+       g_signal_emit_by_name (chooser_widget, "language-activated", language);
        g_object_unref (language);
 }
 
diff --git a/tepl/tepl-language-chooser-widget.h b/tepl/tepl-language-chooser-widget.h
index fa79dc2..20029a9 100644
--- a/tepl/tepl-language-chooser-widget.h
+++ b/tepl/tepl-language-chooser-widget.h
@@ -36,10 +36,6 @@ struct _TeplLanguageChooserWidgetClass
 {
        GtkGridClass parent_class;
 
-       /* Signals */
-       void (* language_selected)      (TeplLanguageChooserWidget *chooser_widget,
-                                        GtkSourceLanguage         *language);
-
        gpointer padding[12];
 };
 
diff --git a/tests/test-language-chooser-widget.c b/tests/test-language-chooser-widget.c
index 5b5a7eb..bc42aec 100644
--- a/tests/test-language-chooser-widget.c
+++ b/tests/test-language-chooser-widget.c
@@ -6,9 +6,9 @@
 #include <stdlib.h>
 
 static void
-language_selected_cb (TeplLanguageChooserWidget *chooser_widget,
-                     GtkSourceLanguage         *language,
-                     gpointer                   user_data)
+language_activated_cb (TeplLanguageChooser *chooser,
+                      GtkSourceLanguage   *language,
+                      gpointer             user_data)
 {
        g_message ("Language selected: %s", gtk_source_language_get_id (language));
 }
@@ -30,8 +30,8 @@ main (int    argc,
        gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (chooser_widget));
 
        g_signal_connect (chooser_widget,
-                         "language-selected",
-                         G_CALLBACK (language_selected_cb),
+                         "language-activated",
+                         G_CALLBACK (language_activated_cb),
                          NULL);
 
        gtk_widget_show_all (window);


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