[gnome-applets/wip/muktupavels/charpick] charpick: port to libgnome-panel



commit 241bbeb8ade88041e20f7c44e05a9ff1b4bb89b1
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Mon Mar 30 13:52:22 2020 +0300

    charpick: port to libgnome-panel

 Makefile.am                                        |   2 -
 charpick/Makefile.am                               |  28 ---
 charpick/charpick-applet-menu.xml                  |  14 --
 ...ome.applets.CharpickerApplet.panel-applet.in.in |  15 --
 configure.ac                                       |   4 +-
 gnome-applets/Makefile.am                          |   3 +
 .../src => gnome-applets/charpick}/Makefile.am     |  17 +-
 gnome-applets/charpick/charpick-applet-menu.xml    |  18 ++
 .../charpick/charpick-applet.c                     | 237 ++++++++++-----------
 gnome-applets/charpick/charpick-applet.h           |  31 +++
 .../src => gnome-applets/charpick}/charpick.h      |  16 +-
 .../src => gnome-applets/charpick}/properties.c    |   9 +-
 gnome-applets/ga-module.c                          |  11 +
 po/POTFILES.in                                     |   7 +-
 po/POTFILES.skip                                   |   1 -
 15 files changed, 196 insertions(+), 217 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 71d448372..c8add9eb4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,7 +9,6 @@ tracker_search_bar_SUBDIR = tracker-search-bar
 endif
 
 always_built_SUBDIRS =  \
-       charpick        \
        drivemount      \
        inhibit         \
        geyes           \
@@ -37,7 +36,6 @@ DIST_SUBDIRS = \
        help \
        po              \
        drivemount      \
-       charpick        \
        geyes           \
        mini-commander  \
        multiload       \
diff --git a/configure.ac b/configure.ac
index fd0ee1812..7c36204dc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -350,6 +350,7 @@ AC_CONFIG_FILES([
   gnome-applets/Makefile
   gnome-applets/battstat/Makefile
   gnome-applets/brightness/Makefile
+  gnome-applets/charpick/Makefile
   gnome-applets/command/Makefile
   gnome-applets/cpufreq/Makefile
   gnome-applets/cpufreq/cpufreq-selector/Makefile
@@ -379,9 +380,6 @@ AC_CONFIG_FILES([
   accessx-status/pixmaps/Makefile
   accessx-status/src/Makefile
 
-  charpick/Makefile
-  charpick/src/Makefile
-
   drivemount/Makefile
   drivemount/src/Makefile
 
diff --git a/gnome-applets/Makefile.am b/gnome-applets/Makefile.am
index 02fa6e10a..ba38db074 100644
--- a/gnome-applets/Makefile.am
+++ b/gnome-applets/Makefile.am
@@ -3,6 +3,7 @@ NULL =
 SUBDIRS = \
        battstat \
        brightness \
+       charpick \
        command \
        cpufreq \
        gweather \
@@ -36,6 +37,7 @@ org_gnome_gnome_applets_la_SOURCES = \
 org_gnome_gnome_applets_la_LIBADD = \
        $(top_builddir)/gnome-applets/battstat/libbattery-status-applet.la \
        $(top_builddir)/gnome-applets/brightness/libbrightness-applet.la \
+       $(top_builddir)/gnome-applets/charpick/libcharacter-picker-applet.la \
        $(top_builddir)/gnome-applets/command/libcommand-applet.la \
        $(top_builddir)/gnome-applets/gweather/libgweather-applet.la \
        $(top_builddir)/gnome-applets/netspeed/libnet-speed-applet.la \
@@ -77,6 +79,7 @@ ui_files = \
        battstat/battstat-applet.ui \
        battstat/battstat-applet-menu.xml \
        brightness/brightness-applet-menu.xml \
+       charpick/charpick-applet-menu.xml \
        command/command-applet-menu.xml \
        gweather/gweather-applet-menu.xml \
        netspeed/netspeed-menu.xml \
diff --git a/charpick/src/Makefile.am b/gnome-applets/charpick/Makefile.am
similarity index 62%
rename from charpick/src/Makefile.am
rename to gnome-applets/charpick/Makefile.am
index 25de5bd40..f438a9c18 100644
--- a/charpick/src/Makefile.am
+++ b/gnome-applets/charpick/Makefile.am
@@ -1,40 +1,33 @@
 NULL =
 
-uidir = $(pkgdatadir)/ui
-
-charpick_applet_libdir = $(pkglibdir)
-charpick_applet_lib_LTLIBRARIES = libcharacter-picker-applet.la
+noinst_LTLIBRARIES = libcharacter-picker-applet.la
 
 libcharacter_picker_applet_la_CPPFLAGS = \
-       -I. \
-       -I$(srcdir) \
-       -DCHARPICK_MENU_UI_DIR=\""$(uidir)"\" \
-       -DGNOMELOCALEDIR=\""$(localedir)"\" \
        -DG_LOG_DOMAIN=\"org.gnome.gnome-applets.character-picker\" \
        -DG_LOG_USE_STRUCTURED=1 \
        $(NULL)
 
 libcharacter_picker_applet_la_CFLAGS = \
-       $(GNOME_APPLETS_CFLAGS) \
+       $(GNOME_PANEL_CFLAGS) \
        $(GUCHARMAP_CFLAGS) \
        $(WARN_CFLAGS) \
        $(AM_CFLAGS) \
        $(NULL)
 
 libcharacter_picker_applet_la_SOURCES = \
-       charpick.c \
+       charpick-applet.c \
+       charpick-applet.h \
        charpick.h \
        properties.c \
        $(NULL)
 
 libcharacter_picker_applet_la_LDFLAGS = \
-       -avoid-version \
        $(WARN_LDFLAGS) \
        $(AM_LDFLAGS) \
        $(NULL)
 
 libcharacter_picker_applet_la_LIBADD = \
-       $(GNOME_APPLETS_LIBS) \
+       $(GNOME_PANEL_LIBS) \
        $(GUCHARMAP_LIBS) \
        $(NULL)
 
diff --git a/gnome-applets/charpick/charpick-applet-menu.xml b/gnome-applets/charpick/charpick-applet-menu.xml
new file mode 100644
index 000000000..d21d33b4e
--- /dev/null
+++ b/gnome-applets/charpick/charpick-applet-menu.xml
@@ -0,0 +1,18 @@
+<interface>
+  <menu id="charpick-menu">
+    <section>
+      <item>
+        <attribute name="label" translatable="yes">_Preferences</attribute>
+        <attribute name="action">charpick.preferences</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">_Help</attribute>
+        <attribute name="action">charpick.help</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">_About</attribute>
+        <attribute name="action">charpick.about</attribute>
+      </item>
+    </section>
+  </menu>
+</interface>
diff --git a/charpick/src/charpick.c b/gnome-applets/charpick/charpick-applet.c
similarity index 82%
rename from charpick/src/charpick.c
rename to gnome-applets/charpick/charpick-applet.c
index 8dd8ac6cf..781730228 100644
--- a/charpick/src/charpick.c
+++ b/gnome-applets/charpick/charpick-applet.c
@@ -2,18 +2,22 @@
  * accented (and other) characters to be pasted into other apps.
  */
 
-#include <config.h>
+#include "config.h"
+#include "charpick-applet.h"
+
+#include <glib/gi18n-lib.h>
 #include <string.h>
-#include <panel-applet.h>
 #ifdef HAVE_GUCHARMAP
 #      include <gucharmap/gucharmap.h>
 #endif
+
 #include "charpick.h"
 
+G_DEFINE_TYPE (CharpickApplet, charpick_applet, GP_TYPE_APPLET)
+
 /* The comment for each char list has the html entity names of the chars */
 /* All gunicar codes should end in 0 */
 
-
 /* This is the default list used when starting charpick the first time */
 /* aacute, agrave, eacute, iacute, oacute, frac12, copy*/
 /* static const gchar *def_list = "áàéíñóœ©"; */
@@ -85,7 +89,6 @@ static const gunichar ZA_code[] = {7699, 7741, 7755, 7793, 7698, 7740, 7754, 779
 /* static const gchar *af_ZA_list = "áéíóúýêîôûèäëïöüÁÉÍÓÚÝÊÎÔÛÈÄËÏÖÜ"; */
 static const gunichar af_ZA_code[] = {225, 233, 237, 243, 250, 253, 234, 238, 244, 251, 232, 228, 235, 239, 
246, 252, 193, 201, 205, 211, 218, 221, 202, 206, 212, 219, 200, 196, 203, 207, 214, 220, 0};
 
-
 static const gunichar * const chartable[] = {
        def_code,
        a_code,
@@ -162,7 +165,7 @@ toggle_button_toggled_cb(GtkToggleButton *button, gpointer data)
                                      FALSE);
                                      
     curr_data->last_toggle_button = button; 
-    gtk_widget_grab_focus(curr_data->applet);
+    gtk_widget_grab_focus (GTK_WIDGET (curr_data));
     unichar = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "unichar"));
     curr_data->selected_unichar = unichar;
     /* set this? widget as the selection owner */
@@ -302,22 +305,22 @@ get_menu_pos (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data)
        gint screen_width, screen_height;
 
        gtk_widget_get_preferred_size (GTK_WIDGET (menu), NULL, &reqmenu);
-       window = gtk_widget_get_window (curr_data->applet);
+       window = gtk_widget_get_window (GTK_WIDGET (curr_data));
        gdk_window_get_origin (window, &tempx, &tempy);
        width = gdk_window_get_width (window);
        height = gdk_window_get_height (window);
 
-       switch (panel_applet_get_orient (PANEL_APPLET (curr_data->applet))) {
-       case PANEL_APPLET_ORIENT_DOWN:
+       switch (gp_applet_get_position (GP_APPLET (curr_data))) {
+       case GTK_POS_TOP:
                tempy += height;
                break;
-       case PANEL_APPLET_ORIENT_UP:
+       case GTK_POS_BOTTOM:
                tempy -= reqmenu.height;
                break;
-       case PANEL_APPLET_ORIENT_LEFT:
+       case GTK_POS_RIGHT:
                tempx -= reqmenu.width;
                break;
-       case PANEL_APPLET_ORIENT_RIGHT:
+       case GTK_POS_LEFT:
                tempx += width;
                break;
        }
@@ -334,7 +337,7 @@ chooser_button_clicked (GtkButton *button, charpick_data *curr_data)
                gtk_menu_popdown (GTK_MENU (curr_data->menu));
        else {
                gtk_menu_set_screen (GTK_MENU (curr_data->menu),
-                               gtk_widget_get_screen (GTK_WIDGET (curr_data->applet)));
+                               gtk_widget_get_screen (GTK_WIDGET (curr_data)));
                
                gtk_menu_popup (GTK_MENU (curr_data->menu), NULL, NULL, get_menu_pos, curr_data,
                                0, gtk_get_current_event_time());
@@ -381,17 +384,17 @@ build_table(charpick_data *p_curr_data)
   {
     gtk_widget_set_tooltip_text (button, _("Available palettes"));
   
-    switch (panel_applet_get_orient (PANEL_APPLET (p_curr_data->applet))) {
-        case PANEL_APPLET_ORIENT_DOWN:
+    switch (gp_applet_get_position (GP_APPLET (p_curr_data))) {
+        case GTK_POS_TOP:
             arrow = gtk_image_new_from_icon_name ("pan-down-symbolic", GTK_ICON_SIZE_MENU);
             break;
-        case PANEL_APPLET_ORIENT_UP:
+        case GTK_POS_BOTTOM:
             arrow = gtk_image_new_from_icon_name ("pan-up-symbolic", GTK_ICON_SIZE_MENU);
             break;
-        case PANEL_APPLET_ORIENT_LEFT:
+        case GTK_POS_RIGHT:
             arrow = gtk_image_new_from_icon_name ("pan-start-symbolic", GTK_ICON_SIZE_MENU);
             break;
-        case PANEL_APPLET_ORIENT_RIGHT:
+        case GTK_POS_LEFT:
             arrow = gtk_image_new_from_icon_name ("pan-end-symbolic", GTK_ICON_SIZE_MENU);
             break;
         default:
@@ -485,7 +488,7 @@ build_table(charpick_data *p_curr_data)
  
   g_free (toggle_button);
   
-  gtk_container_add (GTK_CONTAINER(p_curr_data->applet), box);
+  gtk_container_add (GTK_CONTAINER(p_curr_data), box);
   gtk_widget_show_all (p_curr_data->box);
 
   p_curr_data->last_toggle_button = NULL;
@@ -514,9 +517,11 @@ queue_rebuild (charpick_data *curr_data)
   g_source_set_name_by_id (curr_data->rebuild_id, "[charpick] rebuild_cb");
 }
 
-static void applet_size_allocate(PanelApplet *applet, GtkAllocation *allocation, gpointer data)
+static void
+applet_size_allocate (GtkWidget     *widget,
+                      GtkAllocation *allocation,
+                      charpick_data *curr_data)
 {
-  charpick_data *curr_data = data;
   if (curr_data->panel_vertical) {
     if (curr_data->panel_size == allocation->width)
       return;
@@ -528,21 +533,21 @@ static void applet_size_allocate(PanelApplet *applet, GtkAllocation *allocation,
   }
 
   queue_rebuild (curr_data);
-  return;
 }
 
-static void applet_change_orient(PanelApplet *applet, PanelAppletOrient o, gpointer data)
+static void
+placement_changed_cb (GpApplet        *applet,
+                      GtkOrientation   orientation,
+                      GtkPositionType  position,
+                      CharpickApplet  *self)
 {
-  charpick_data *curr_data = data;
-  if (o == PANEL_APPLET_ORIENT_UP ||
-      o == PANEL_APPLET_ORIENT_DOWN)
-    curr_data->panel_vertical = FALSE;
+  if (orientation == GTK_ORIENTATION_HORIZONTAL)
+    self->panel_vertical = FALSE;
   else
-    curr_data->panel_vertical = TRUE;
-  build_table (curr_data);
-  return;
-}
+    self->panel_vertical = TRUE;
 
+  queue_rebuild (self);
+}
 
 static void
 about (GSimpleAction *action,
@@ -584,7 +589,7 @@ help_cb (GSimpleAction *action,
   charpick_data *curr_data = (charpick_data *) user_data;
   GError *error = NULL;
 
-  gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (curr_data->applet)),
+  gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (curr_data)),
                 "help:char-palette",
                 gtk_get_current_event_time (),
                 &error);
@@ -596,34 +601,6 @@ help_cb (GSimpleAction *action,
   }
 }
 
-static void
-applet_destroy (GtkWidget *widget, gpointer data)
-{
-  charpick_data *curr_data = data;
-
-  g_return_if_fail (curr_data);
-
-  if (curr_data->rebuild_id != 0)
-    {
-      g_source_remove (curr_data->rebuild_id);
-      curr_data->rebuild_id = 0;
-    }
-
-  if (curr_data->about_dialog)
-    gtk_widget_destroy (curr_data->about_dialog);   
-  if (curr_data->propwindow)
-    gtk_widget_destroy (curr_data->propwindow);
-  if (curr_data->box)
-    gtk_widget_destroy (curr_data->box);
-  if (curr_data->menu)
-    gtk_widget_destroy (curr_data->menu);
-  if (curr_data->settings)
-    g_object_unref (curr_data->settings);
-  if (curr_data->invisible)
-    gtk_widget_destroy (curr_data->invisible);
-  g_free (curr_data);
-}
-
 void 
 save_chartable (charpick_data *curr_data)
 {
@@ -668,7 +645,8 @@ get_chartable (charpick_data *curr_data)
 static const GActionEntry charpick_applet_menu_actions [] = {
        { "preferences", show_preferences_dialog, NULL, NULL, NULL },
        { "help",        help_cb,                 NULL, NULL, NULL },
-       { "about",       about,                   NULL, NULL, NULL }
+       { "about",       about,                   NULL, NULL, NULL },
+       { NULL }
 };
 
 void
@@ -692,30 +670,26 @@ make_applet_accessible (GtkWidget *applet)
   set_atk_name_description (applet, _("Character Palette"), _("Insert characters"));
 }
 
-static gboolean
-charpicker_applet_fill (PanelApplet *applet)
+static void
+charpicker_applet_fill (charpick_data *curr_data)
 {
-  PanelAppletOrient orientation;
-  charpick_data *curr_data;
+  GtkOrientation orientation;
   GdkScreen *screen;
   GdkAtom utf8_atom;
   GList *list;
   gchar *string;
-  GSimpleActionGroup *action_group;
+  const char *menu_resource;
   GAction *action;
-  gchar *ui_path;
 
-  panel_applet_set_flags (applet, PANEL_APPLET_EXPAND_MINOR);
-   
-  curr_data = g_new0 (charpick_data, 1);
-  curr_data->applet = GTK_WIDGET (applet);
+  gp_applet_set_flags (GP_APPLET (curr_data), GP_APPLET_FLAGS_EXPAND_MINOR);
+
   curr_data->about_dialog = NULL;
   curr_data->add_edit_dialog = NULL;
-  curr_data->settings = panel_applet_settings_new (applet, CHARPICK_SCHEMA);
+  curr_data->settings = gp_applet_settings_new (GP_APPLET (curr_data), CHARPICK_SCHEMA);
   curr_data->rebuild_id = 0;
 
   get_chartable (curr_data);
-  
+
   string = g_settings_get_string (curr_data->settings, KEY_CURRENT_LIST);
   if (string[0] != '\0') {
        list = curr_data->chartable;
@@ -735,15 +709,14 @@ charpicker_applet_fill (PanelApplet *applet)
        curr_data->charlist = curr_data->chartable->data;  
   }
 
-  orientation = panel_applet_get_orient (applet);
-  curr_data->panel_vertical = (orientation == PANEL_APPLET_ORIENT_LEFT) 
-                              || (orientation == PANEL_APPLET_ORIENT_RIGHT);
+  orientation = gp_applet_get_orientation (GP_APPLET (curr_data));
+  curr_data->panel_vertical = (orientation == GTK_ORIENTATION_VERTICAL);
   build_table (curr_data);
-    
-  g_signal_connect (G_OBJECT (curr_data->applet), "key_press_event",
+
+  g_signal_connect (G_OBJECT (curr_data), "key_press_event",
                             G_CALLBACK (key_press_event), curr_data);
 
-  screen = gtk_widget_get_screen (GTK_WIDGET (applet));
+  screen = gtk_widget_get_screen (GTK_WIDGET (curr_data));
   curr_data->invisible = gtk_invisible_new_for_screen (screen);
 
   utf8_atom = gdk_atom_intern ("UTF8_STRING", FALSE);
@@ -764,59 +737,75 @@ charpicker_applet_fill (PanelApplet *applet)
                     G_CALLBACK (selection_clear_cb),
                     curr_data);
 
-  make_applet_accessible (GTK_WIDGET (applet));
+  make_applet_accessible (GTK_WIDGET (curr_data));
 
-  /* session save signal */ 
-  g_signal_connect (G_OBJECT (applet), "change_orient",
-                   G_CALLBACK (applet_change_orient), curr_data);
+  g_signal_connect (curr_data,
+                    "placement-changed",
+                    G_CALLBACK (placement_changed_cb),
+                    curr_data);
 
-  g_signal_connect (G_OBJECT (applet), "size_allocate",
-                   G_CALLBACK (applet_size_allocate), curr_data);
-                   
-  g_signal_connect (G_OBJECT (applet), "destroy",
-                   G_CALLBACK (applet_destroy), curr_data);
-  
-  gtk_widget_show_all (GTK_WIDGET (applet));
-
-  action_group = g_simple_action_group_new ();
-  g_action_map_add_action_entries (G_ACTION_MAP (action_group),
-                                   charpick_applet_menu_actions,
-                                   G_N_ELEMENTS (charpick_applet_menu_actions),
-                                   curr_data);
-  ui_path = g_build_filename (CHARPICK_MENU_UI_DIR, "charpick-applet-menu.xml", NULL);
-  panel_applet_setup_menu_from_file (applet,
-                                     ui_path, action_group,
-                                     GETTEXT_PACKAGE);
-  g_free (ui_path);
-
-  gtk_widget_insert_action_group (GTK_WIDGET (applet), "charpick",
-                                     G_ACTION_GROUP (action_group));
-
-  action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "preferences");
-  g_object_bind_property (applet, "locked-down", action, "enabled",
-                          G_BINDING_DEFAULT|G_BINDING_INVERT_BOOLEAN|G_BINDING_SYNC_CREATE);
+  g_signal_connect (curr_data,
+                    "size-allocate",
+                    G_CALLBACK (applet_size_allocate),
+                    curr_data);
+
+  gtk_widget_show_all (GTK_WIDGET (curr_data));
 
-  g_object_unref (action_group);
+  menu_resource = GRESOURCE_PREFIX "/ui/charpick-applet-menu.xml";
+  gp_applet_setup_menu_from_resource (GP_APPLET (curr_data),
+                                      menu_resource,
+                                      charpick_applet_menu_actions);
+
+  action = gp_applet_menu_lookup_action (GP_APPLET (curr_data), "preferences");
+  g_object_bind_property (curr_data, "locked-down", action, "enabled",
+                          G_BINDING_DEFAULT|G_BINDING_INVERT_BOOLEAN|G_BINDING_SYNC_CREATE);
 
   populate_menu (curr_data);
-  
-  return TRUE;
 }
 
-static gboolean
-charpicker_applet_factory (PanelApplet *applet,
-                          const gchar          *iid,
-                          gpointer              data)
+static void
+charpick_applet_constructed (GObject *object)
 {
-       gboolean retval = FALSE;
-    
-       if (!strcmp (iid, "CharpickerApplet"))
-               retval = charpicker_applet_fill (applet); 
-    
-       return retval;
+  G_OBJECT_CLASS (charpick_applet_parent_class)->constructed (object);
+  charpicker_applet_fill (CHARPICK_APPLET (object));
 }
 
-PANEL_APPLET_IN_PROCESS_FACTORY ("CharpickerAppletFactory",
-                                 PANEL_TYPE_APPLET,
-                                 charpicker_applet_factory,
-                                 NULL)
+static void
+charpick_applet_dispose (GObject *object)
+{
+  CharpickApplet *self;
+
+  self = CHARPICK_APPLET (object);
+
+  if (self->rebuild_id != 0)
+    {
+      g_source_remove (self->rebuild_id);
+      self->rebuild_id = 0;
+    }
+
+  g_clear_pointer (&self->about_dialog, gtk_widget_destroy);
+  g_clear_pointer (&self->propwindow, gtk_widget_destroy);
+  g_clear_pointer (&self->box, gtk_widget_destroy);
+  g_clear_pointer (&self->menu, gtk_widget_destroy);
+  g_clear_pointer (&self->invisible, gtk_widget_destroy);
+
+  g_clear_object (&self->settings);
+
+  G_OBJECT_CLASS (charpick_applet_parent_class)->dispose (object);
+}
+
+static void
+charpick_applet_class_init (CharpickAppletClass *self_class)
+{
+  GObjectClass *object_class;
+
+  object_class = G_OBJECT_CLASS (self_class);
+
+  object_class->constructed = charpick_applet_constructed;
+  object_class->dispose = charpick_applet_dispose;
+}
+
+static void
+charpick_applet_init (CharpickApplet *self)
+{
+}
diff --git a/gnome-applets/charpick/charpick-applet.h b/gnome-applets/charpick/charpick-applet.h
new file mode 100644
index 000000000..80f414b3f
--- /dev/null
+++ b/gnome-applets/charpick/charpick-applet.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2020 Alberts Muktupāvels
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CHARPICK_APPLET_H
+#define CHARPICK_APPLET_H
+
+#include <libgnome-panel/gp-applet.h>
+
+G_BEGIN_DECLS
+
+#define CHARPICK_TYPE_APPLET (charpick_applet_get_type ())
+G_DECLARE_FINAL_TYPE (CharpickApplet, charpick_applet,
+                      CHARPICK, APPLET, GpApplet)
+
+G_END_DECLS
+
+#endif
diff --git a/charpick/src/charpick.h b/gnome-applets/charpick/charpick.h
similarity index 87%
rename from charpick/src/charpick.h
rename to gnome-applets/charpick/charpick.h
index 1a0ed11c2..5f592bb46 100644
--- a/charpick/src/charpick.h
+++ b/gnome-applets/charpick/charpick.h
@@ -1,17 +1,15 @@
 /* charpick.h -- header file for character picker applet */
 
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include <panel-applet.h>
+#include "charpick-applet.h"
 
 #define CHARPICK_SCHEMA  "org.gnome.gnome-applets.charpick"
 #define KEY_CURRENT_LIST "current-list"
 #define KEY_CHARTABLE    "chartable"
 
-typedef struct _charpick_data charpick_data;
-/* this type has basically all data for this program */
-struct _charpick_data {
+typedef struct _CharpickApplet
+{
+  GpApplet parent;
+
   GList *chartable;
   gchar * charlist;  
   gunichar selected_unichar;
@@ -30,8 +28,7 @@ struct _charpick_data {
   GSettings *settings;
   guint rebuild_id;
   GtkWidget *invisible;
-};
-
+} charpick_data;
 
 typedef struct _charpick_button_cb_data charpick_button_cb_data;
 /* This is the data type for the button callback function. */
@@ -41,7 +38,6 @@ struct _charpick_button_cb_data {
   charpick_data * p_curr_data;
 };
 
-
 void start_callback_update(void);
 
 void build_table              (charpick_data     *curr_data);
diff --git a/charpick/src/properties.c b/gnome-applets/charpick/properties.c
similarity index 98%
rename from charpick/src/properties.c
rename to gnome-applets/charpick/properties.c
index e8629a7ac..a16d02dd8 100644
--- a/charpick/src/properties.c
+++ b/gnome-applets/charpick/properties.c
@@ -11,6 +11,7 @@
 #include <string.h>
 
 #include <atk/atkrelation.h>
+#include <glib/gi18n-lib.h>
 #include <gtk/gtk.h>
 
 #if 0
@@ -226,7 +227,7 @@ add_palette (GtkButton *buttonk, charpick_data *curr_data)
                gtk_widget_show_all (curr_data->add_edit_dialog);
        } else {
                gtk_window_set_screen (GTK_WINDOW (curr_data->add_edit_dialog),
-                                      gtk_widget_get_screen (GTK_WIDGET (curr_data->applet)));
+                                      gtk_widget_get_screen (GTK_WIDGET (curr_data)));
 
                gtk_window_present (GTK_WINDOW (curr_data->add_edit_dialog));
        }
@@ -263,7 +264,7 @@ edit_palette (GtkButton *button, charpick_data *curr_data)
                gtk_widget_show_all (curr_data->add_edit_dialog);
        } else {
                gtk_window_set_screen (GTK_WINDOW (curr_data->add_edit_dialog),
-                                      gtk_widget_get_screen (GTK_WIDGET (curr_data->applet)));
+                                      gtk_widget_get_screen (GTK_WIDGET (curr_data)));
 
                gtk_window_present (GTK_WINDOW (curr_data->add_edit_dialog));
        }
@@ -510,7 +511,7 @@ show_preferences_dialog (GSimpleAction *action,
 
   if (curr_data->propwindow) {
     gtk_window_set_screen (GTK_WINDOW (curr_data->propwindow),
-                          gtk_widget_get_screen (curr_data->applet));
+                          gtk_widget_get_screen (GTK_WIDGET (curr_data)));
     gtk_window_present (GTK_WINDOW (curr_data->propwindow));
     return;
   }
@@ -522,7 +523,7 @@ show_preferences_dialog (GSimpleAction *action,
                                            _("_Help"), GTK_RESPONSE_HELP,
                                            NULL);
   gtk_window_set_screen (GTK_WINDOW (curr_data->propwindow),
-                        gtk_widget_get_screen (curr_data->applet));
+                        gtk_widget_get_screen (GTK_WIDGET (curr_data)));
   gtk_window_set_default_size (GTK_WINDOW (curr_data->propwindow), 350, 350);
   gtk_container_set_border_width (GTK_CONTAINER (curr_data->propwindow), 5);
   gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area(GTK_DIALOG (curr_data->propwindow))), 2);
diff --git a/gnome-applets/ga-module.c b/gnome-applets/ga-module.c
index 019cfb05c..defa204ad 100644
--- a/gnome-applets/ga-module.c
+++ b/gnome-applets/ga-module.c
@@ -23,6 +23,7 @@
 
 #include "battstat/battstat-applet.h"
 #include "brightness/brightness-applet.h"
+#include "charpick/charpick-applet.h"
 #include "command/command-applet.h"
 #ifdef BUILD_CPUFREQ_APPLET
 #include "cpufreq/cpufreq-applet.h"
@@ -56,6 +57,13 @@ ga_get_applet_info (const char *id)
       description = _("Adjusts Laptop panel brightness");
       icon_name = "gnome-brightness-applet";
     }
+  else if (g_strcmp0 (id, "charpick") == 0)
+    {
+      type_func = charpick_applet_get_type;
+      name = _("Character Palette");
+      description = _("Insert characters");
+      icon_name = "accessories-character-map";
+    }
   else if (g_strcmp0 (id, "command") == 0)
     {
       type_func = command_applet_get_type;
@@ -125,6 +133,8 @@ ga_get_applet_id_from_iid (const char *iid)
     return "battstat";
   else if (g_strcmp0 (iid, "BrightnessAppletFactory::BrightnessApplet") == 0)
     return "brightness";
+  else if (g_strcmp0 (iid, "CharpickerAppletFactory::CharpickerApplet") == 0)
+    return "charpick";
   else if (g_strcmp0 (iid, "CommandAppletFactory::CommandApplet") == 0)
     return "command";
 #ifdef BUILD_CPUFREQ_APPLET
@@ -161,6 +171,7 @@ gp_module_load (GpModule *module)
   gp_module_set_applet_ids (module,
                             "battstat",
                             "brightness",
+                            "charpick",
                             "command",
 #ifdef BUILD_CPUFREQ_APPLET
                             "cpufreq",
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 52a2304c6..dbf69e6fc 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -5,10 +5,6 @@
 [type: gettext/glade]accessx-status/accessx-status-applet-menu.xml
 [type: gettext/ini]accessx-status/org.gnome.applets.AccessxStatusApplet.panel-applet.in.in
 accessx-status/src/applet.c
-[type: gettext/glade]charpick/charpick-applet-menu.xml
-[type: gettext/ini]charpick/org.gnome.applets.CharpickerApplet.panel-applet.in.in
-charpick/src/charpick.c
-charpick/src/properties.c
 data/schemas/org.gnome.gnome-applets.battstat.gschema.xml.in.in
 data/schemas/org.gnome.gnome-applets.charpick.gschema.xml.in.in
 data/schemas/org.gnome.gnome-applets.command.gschema.xml.in.in
@@ -37,6 +33,9 @@ gnome-applets/battstat/battstat-applet.c
 gnome-applets/battstat/properties.c
 [type: gettext/glade]gnome-applets/brightness/brightness-applet-menu.xml
 gnome-applets/brightness/brightness-applet.c
+[type: gettext/glade]gnome-applets/charpick/charpick-applet-menu.xml
+gnome-applets/charpick/charpick-applet.c
+gnome-applets/charpick/properties.c
 [type: gettext/glade]gnome-applets/command/command-applet-menu.xml
 gnome-applets/command/command-applet.c
 [type: gettext/glade]gnome-applets/cpufreq/cpufreq-applet-menu.xml
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 97405e45a..c83fb7f5a 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -4,7 +4,6 @@
 # upper-case before lower-case).
 #
 accessx-status/org.gnome.applets.AccessxStatusApplet.panel-applet.in
-charpick/org.gnome.applets.CharpickerApplet.panel-applet.in
 data/schemas/org.gnome.gnome-applets.battstat.gschema.xml.in
 data/schemas/org.gnome.gnome-applets.charpick.gschema.xml.in
 data/schemas/org.gnome.gnome-applets.command.gschema.xml.in


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