[gnome-applets] [charpick] Port to new libpanel-applet API



commit a7c53c1b700a3ea3c18f44ad069d746c8b3351a8
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Tue Feb 23 12:32:15 2010 +0100

    [charpick] Port to new libpanel-applet API

 charpick/GNOME_CharpickerApplet.server.in.in       |   35 ----------
 charpick/GNOME_CharpickerApplet.xml                |   12 ----
 charpick/Makefile.am                               |   48 +++++++++-----
 charpick/charpick-applet-menu.xml                  |    4 +
 charpick/charpick.c                                |   68 ++++++++++---------
 charpick/charpick.h                                |    6 +-
 ...ome.applets.CharpickerApplet.panel-applet.in.in |   16 +++++
 ...panel.applet.CharpickerAppletFactory.service.in |    3 +
 charpick/properties.c                              |    5 +-
 9 files changed, 94 insertions(+), 103 deletions(-)
---
diff --git a/charpick/Makefile.am b/charpick/Makefile.am
index d71a6df..f305714 100644
--- a/charpick/Makefile.am
+++ b/charpick/Makefile.am
@@ -1,10 +1,10 @@
 SUBDIRS = help
 
-INCLUDES =			\
-	-I.			\
-	-I$(srcdir)		\
-	$(GNOME_APPLETS_CFLAGS)	\
-	$(GNOME_LIBS2_CFLAGS)	\
+INCLUDES =					\
+	-I.					\
+	-I$(srcdir)				\
+	-DCHARPICK_MENU_UI_DIR=\""$(uidir)"\"	\
+	$(GNOME_APPLETS3_CFLAGS)		\
 	$(GUCHARMAP_CFLAGS)
 
 libexec_PROGRAMS = charpick_applet2
@@ -14,20 +14,31 @@ charpick_applet2_SOURCES = charpick.c \
                           properties.c
 
 charpick_applet2_LDADD = \
-		       $(GNOME_APPLETS_LIBS)	\
-		       $(GNOME_LIBS2_LIBS)	\
+		       $(GNOME_APPLETS3_LIBS)	\
 		       $(GUCHARMAP_LIBS)
 
-serverdir       = $(libdir)/bonobo/servers
-server_in_files = GNOME_CharpickerApplet.server.in
-server_DATA     = $(server_in_files:.server.in=.server)
+appletdir       = $(datadir)/gnome-panel/applets
+applet_in_files = org.gnome.applets.CharpickerApplet.panel-applet.in
+applet_DATA     = $(applet_in_files:.panel-applet.in=.panel-applet)
 
-$(server_in_files): $(server_in_files:.server.in=.server.in.in)
-	sed -e "s|\ LIBEXECDIR\@|$(libexecdir)|" $< > $@
+$(applet_in_files): $(applet_in_files).in Makefile
+	$(AM_V_GEN)sed \
+            -e "s|\ LIBEXECDIR\@|$(libexecdir)|" \
+            -e "s|\ VERSION\@|$(PACKAGE_VERSION)|" \
+            $< > $@
 
-CLEANFILES = $(server_in_files) $(server_DATA) $(schemas_DATA)
+%.panel-applet: %.panel-applet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*po) ; $(INTLTOOL_MERGE) $(top_srcdir)/po $< $@ -d -u -c $(top_builddir)/po/.intltool-merge-cache
 
- INTLTOOL_SERVER_RULE@
+servicedir       = $(datadir)/dbus-1/services
+service_in_files = org.gnome.panel.applet.CharpickerAppletFactory.service.in
+service_DATA     = $(service_in_files:.service.in=.service)
+
+org.gnome.panel.applet.CharpickerAppletFactory.service: $(service_in_files)
+	$(AM_V_GEN)sed \
+            -e "s|\ LIBEXECDIR\@|$(libexecdir)|" \
+            $< > $@
+
+CLEANFILES = $(applet_DATA) $(applet_DATA).in $(service_DATA) $(schemas_DATA)
 
 schemasdir   = @GCONF_SCHEMA_FILE_DIR@
 schemas_in_files = charpick.schemas.in
@@ -35,11 +46,12 @@ schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
 
 @INTLTOOL_SCHEMAS_RULE@
 uidir = $(datadir)/gnome-2.0/ui
-ui_DATA = GNOME_CharpickerApplet.xml
+ui_DATA = charpick-applet-menu.xml
 
-EXTRA_DIST =					\
-	GNOME_CharpickerApplet.server.in.in	\
-	$(ui_DATA)				\
+EXTRA_DIST =							\
+	org.gnome.applets.CharpickerApplet.panel-applet.in.in	\
+	$(service_in_files)					\
+	$(ui_DATA)						\
 	$(schemas_in_files)
 
 if GCONF_SCHEMAS_INSTALL
diff --git a/charpick/charpick-applet-menu.xml b/charpick/charpick-applet-menu.xml
new file mode 100644
index 0000000..b1af96a
--- /dev/null
+++ b/charpick/charpick-applet-menu.xml
@@ -0,0 +1,4 @@
+<menuitem name="Item 1" action="Preferences" />
+<menuitem name="Item 2" action="Help" />
+<menuitem name="Item 3" action="About" />
+
diff --git a/charpick/charpick.c b/charpick/charpick.c
index e78eabc..164a457 100644
--- a/charpick/charpick.c
+++ b/charpick/charpick.c
@@ -583,9 +583,8 @@ static void applet_change_orient(PanelApplet *applet, PanelAppletOrient o, gpoin
 
 
 static void
-about (BonoboUIComponent *uic,
-       charpick_data     *curr_data,
-       const char        *verb)
+about (GtkAction     *action,
+       charpick_data *curr_data)
 {
   static const char * const authors[] = {
 	  "Alexandre Muñiz <munizao xprt net>",
@@ -615,9 +614,8 @@ about (BonoboUIComponent *uic,
 
 
 static void
-help_cb (BonoboUIComponent *uic,
-	 charpick_data     *curr_data,
-	 const char        *verb)
+help_cb (GtkAction     *action,
+	 charpick_data *curr_data)
 {
   GError *error = NULL;
 
@@ -712,12 +710,16 @@ get_chartable (charpick_data *curr_data)
 
 }
 
-static const BonoboUIVerb charpick_applet_menu_verbs [] = {
-        BONOBO_UI_UNSAFE_VERB ("Preferences", show_preferences_dialog),
-        BONOBO_UI_UNSAFE_VERB ("Help",        help_cb),
-        BONOBO_UI_UNSAFE_VERB ("About",       about),
-
-        BONOBO_UI_VERB_END
+static const GtkActionEntry charpick_applet_menu_actions [] = {
+	{ "Preferences", GTK_STOCK_PROPERTIES, N_("_Preferences"),
+	  NULL, NULL,
+	  G_CALLBACK (show_preferences_dialog) },
+	{ "Help", GTK_STOCK_HELP, N_("_Help"),
+	  NULL, NULL,
+	  G_CALLBACK (help_cb) },
+	{ "About", GTK_STOCK_ABOUT, N_("_About"),
+	  NULL, NULL,
+	  G_CALLBACK (about) }
 };
 
 void
@@ -749,6 +751,8 @@ charpicker_applet_fill (PanelApplet *applet)
   GdkAtom utf8_atom;
   GList *list;
   gchar *string;
+  GtkActionGroup *action_group;
+  gchar *ui_path;
 
   g_set_application_name (_("Character Palette"));
   
@@ -825,24 +829,25 @@ charpicker_applet_fill (PanelApplet *applet)
   		    G_CALLBACK (applet_destroy), curr_data);
   
   gtk_widget_show_all (GTK_WIDGET (applet));
-  
+
+  action_group = gtk_action_group_new ("Charpicker Applet Actions");
+  gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
+  gtk_action_group_add_actions (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 (PANEL_APPLET (applet),
-                                     DATADIR,
-			             "GNOME_CharpickerApplet.xml",
-                                     NULL,
-			             charpick_applet_menu_verbs,
-			             curr_data);
+                                     ui_path, action_group);
+  g_free (ui_path);
 
   if (panel_applet_get_locked_down (PANEL_APPLET (applet))) {
-	  BonoboUIComponent *popup_component;
-
-	  popup_component = panel_applet_get_popup_component (PANEL_APPLET (applet));
+	  GtkAction *action;
 
-	  bonobo_ui_component_set_prop (popup_component,
-					"/commands/Preferences",
-					"hidden", "1",
-					NULL);
+	  action = gtk_action_group_get_action (action_group, "Preferences");
+	  gtk_action_set_visible (action, FALSE);
   }
+  g_object_unref (action_group);
 
   register_stock_for_edit ();			             
   populate_menu (curr_data);
@@ -857,16 +862,15 @@ charpicker_applet_factory (PanelApplet *applet,
 {
 	gboolean retval = FALSE;
     
-	if (!strcmp (iid, "OAFIID:GNOME_CharpickerApplet"))
+	if (!strcmp (iid, "CharpickerApplet"))
 		retval = charpicker_applet_fill (applet); 
     
 	return retval;
 }
 
-PANEL_APPLET_BONOBO_FACTORY ("OAFIID:GNOME_CharpickerApplet_Factory",
-			     PANEL_TYPE_APPLET,
-			     "char-palette",
-			     "0",
-			     charpicker_applet_factory,
-			     NULL)
+PANEL_APPLET_OUT_PROCESS_FACTORY ("CharpickerAppletFactory",
+				  PANEL_TYPE_APPLET,
+				  "char-palette",
+				  charpicker_applet_factory,
+				  NULL)
 
diff --git a/charpick/charpick.h b/charpick/charpick.h
index 8de9912..1ce2a72 100644
--- a/charpick/charpick.h
+++ b/charpick/charpick.h
@@ -1,6 +1,7 @@
 /* charpick.h -- header file for character picker applet */
 
 #include <glib.h>
+#include <glib/gi18n.h>
 #include <gtk/gtk.h>
 #include <gconf/gconf-client.h>
 #include <panel-applet.h>
@@ -46,9 +47,8 @@ void build_table              (charpick_data     *curr_data);
 void add_to_popup_menu (charpick_data *curr_data);
 void populate_menu (charpick_data *curr_data);
 void save_chartable (charpick_data *curr_data);
-void show_preferences_dialog  (BonoboUIComponent *uic,
-			       charpick_data     *curr_data,
-			       const char        *verbname);
+void show_preferences_dialog  (GtkAction         *action,
+			       charpick_data     *curr_data);
 
 void add_edit_dialog_create (charpick_data	 *curr_data,
 			     gchar		 *string,
diff --git a/charpick/org.gnome.applets.CharpickerApplet.panel-applet.in.in b/charpick/org.gnome.applets.CharpickerApplet.panel-applet.in.in
new file mode 100644
index 0000000..0972e05
--- /dev/null
+++ b/charpick/org.gnome.applets.CharpickerApplet.panel-applet.in.in
@@ -0,0 +1,16 @@
+[Applet Factory]
+Id=CharpickerAppletFactory
+Location= LIBEXECDIR@/charpick_applet2
+_Name=Charpicker Applet Factory
+_Description=Charpicker Applet Factory
+
+[CharpickerApplet]
+_Name=Character Palette
+_Description=Insert characters
+Icon=accessories-character-map
+BonoboId=OAFIID:GNOME_CharpickerApplet
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gnome-applets
+X-GNOME-Bugzilla-Component=charpick
+X-GNOME-Bugzilla-Version= VERSION@
+X-GNOME-Bugzilla-OtherBinaries=charpick_applet2
diff --git a/charpick/org.gnome.panel.applet.CharpickerAppletFactory.service.in b/charpick/org.gnome.panel.applet.CharpickerAppletFactory.service.in
new file mode 100644
index 0000000..ad1e609
--- /dev/null
+++ b/charpick/org.gnome.panel.applet.CharpickerAppletFactory.service.in
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.gnome.panel.applet.CharpickerAppletFactory
+Exec= LIBEXECDIR@/charpick_applet2
diff --git a/charpick/properties.c b/charpick/properties.c
index 6538e28..c3bd475 100644
--- a/charpick/properties.c
+++ b/charpick/properties.c
@@ -528,9 +528,8 @@ response_cb (GtkDialog *dialog, gint id, gpointer data)
 }
 
 void
-show_preferences_dialog (BonoboUIComponent *uic,
-			 charpick_data     *curr_data,
-			 const gchar       *verbname)
+show_preferences_dialog (GtkAction     *action,
+			 charpick_data *curr_data)
 {
   if (curr_data->propwindow) {
     gtk_window_set_screen (GTK_WINDOW (curr_data->propwindow),



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