gtranslator r3482 - in branches/GOBJECT_WORK: . plugins/open-tran



Author: icq
Date: Mon Feb  4 22:52:53 2008
New Revision: 3482
URL: http://svn.gnome.org/viewvc/gtranslator?rev=3482&view=rev

Log:
2008-02-04  Ignacio Casal Quinteiro  <nacho resa gmail com>

        * plugins/open-tran:
        Added configuration dialog and improved.
        Now you can choose the search code too.



Added:
   branches/GOBJECT_WORK/plugins/open-tran/open-tran-dialog.glade
Modified:
   branches/GOBJECT_WORK/ChangeLog
   branches/GOBJECT_WORK/plugins/open-tran/Makefile.am
   branches/GOBJECT_WORK/plugins/open-tran/open-tran-panel.c
   branches/GOBJECT_WORK/plugins/open-tran/open-tran-panel.h
   branches/GOBJECT_WORK/plugins/open-tran/open-tran-plugin.c
   branches/GOBJECT_WORK/plugins/open-tran/open-tran-plugin.h

Modified: branches/GOBJECT_WORK/plugins/open-tran/Makefile.am
==============================================================================
--- branches/GOBJECT_WORK/plugins/open-tran/Makefile.am	(original)
+++ branches/GOBJECT_WORK/plugins/open-tran/Makefile.am	Mon Feb  4 22:52:53 2008
@@ -7,6 +7,7 @@
 	-I$(top_srcdir)/src/plugin-system		\
 	-I$(top_srcdir)/src/toolbareditor		\
 	-DPIXMAPSDIR=\""$(datadir)"/pixmaps/gtranslator\"       \
+	-DDATADIR=\""$(pkgdatadir)"\"                           \
 	$(GTRANSLATOR_CFLAGS) 				\
 	$(SOUP_CFLAGS)				\
 	$(WARN_CFLAGS)					\
@@ -26,6 +27,11 @@
 	$(GTRANSLATOR_LIBS)					\
 	$(SOUP_LIBS)
 
+gladedir = $(pkgdatadir)
+
+glade_DATA =  \
+	open-tran-dialog.glade
+
 pixmaps_dir = $(datadir)/pixmaps/gtranslator
 pixmaps__DATA = \
         gnome.png \
@@ -42,7 +48,7 @@
 
 plugin_DATA = $(plugin_in_files:.gtranslator-plugin.desktop.in=.gtranslator.plugin)
 
-EXTRA_DIST = $(pixmaps__DATA) $(plugin_in_files)
+EXTRA_DIST = $(glade_DATA) $(pixmaps__DATA) $(plugin_in_files)
 
 CLEANFILES = $(plugin_DATA)
 DISTCLEANFILES = $(plugin_DATA)

Added: branches/GOBJECT_WORK/plugins/open-tran/open-tran-dialog.glade
==============================================================================
--- (empty file)
+++ branches/GOBJECT_WORK/plugins/open-tran/open-tran-dialog.glade	Mon Feb  4 22:52:53 2008
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--Generated with glade3 3.4.1 on Mon Feb  4 23:33:01 2008 -->
+<glade-interface>
+  <widget class="GtkDialog" id="dialog">
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Open Tran Settings</property>
+    <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">2</property>
+        <child>
+          <widget class="GtkVBox" id="main_box">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="border_width">12</property>
+            <property name="spacing">6</property>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">&lt;b&gt;Add the lang code where you want to search:&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="spacing">6</property>
+                <child>
+                  <widget class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">    </property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkEntry" id="search_code">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </widget>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">&lt;b&gt;Add the lang code of your language:&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <widget class="GtkLabel" id="label4">
+                    <property name="visible">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="label" translatable="yes">     </property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkEntry" id="own_code">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                  </widget>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <widget class="GtkButton" id="cancel_button">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-6</property>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkButton" id="ok_button">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">gtk-ok</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-5</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>

Modified: branches/GOBJECT_WORK/plugins/open-tran/open-tran-panel.c
==============================================================================
--- branches/GOBJECT_WORK/plugins/open-tran/open-tran-panel.c	(original)
+++ branches/GOBJECT_WORK/plugins/open-tran/open-tran-panel.c	Mon Feb  4 22:52:53 2008
@@ -28,6 +28,7 @@
 #include <glib.h>
 #include <glib/gi18n-lib.h>
 #include <glib-object.h>
+#include <gconf/gconf-client.h>
 #include <gtk/gtk.h>
 #include <libsoup/soup.h>
 #include <libsoup/soup-xmlrpc-message.h>
@@ -47,11 +48,12 @@
 
 struct _GtranslatorOpenTranPanelPrivate
 {
+	GConfClient *gconf_client;
+	
 	GtkWidget *treeview;
 	GtkListStore *store;
 	
 	GtkWidget *entry;
-	GtkWidget *lang_code;
 	
 	SoupSession *session;
 	
@@ -67,19 +69,6 @@
 	N_COLUMNS
 };
 
-
-static void
-dialog_response_cb(GtkWidget *dialog,
-		   gint response,
-		   gpointer useless)
-{
-	switch(response)
-	{
-		case GTK_RESPONSE_CLOSE: gtk_widget_destroy(dialog);
-		break;
-	}
-}
-
 static void
 show_error_dialog (GtranslatorWindow *parent,
 		   const gchar *message_format,
@@ -101,7 +90,8 @@
 	g_free(msg);
 	
 	g_signal_connect(dialog, "response",
-			 G_CALLBACK(dialog_response_cb), NULL);
+			 G_CALLBACK(gtk_widget_destroy),
+			 &dialog);
 	gtk_widget_show(dialog);
 }
 
@@ -304,7 +294,8 @@
 static void
 open_connection(GtranslatorOpenTranPanel *panel,
 		const gchar *text,
-		const gchar *lang_code)
+		const gchar *search_code,
+		const gchar *own_code)
 {
 	SoupUri *proxy = NULL; //This can be useful in a future
 	SoupXmlrpcMessage *msg;
@@ -321,10 +312,11 @@
 		return;
 	}
 
-	soup_xmlrpc_message_start_call (msg, "suggest");
+	soup_xmlrpc_message_start_call (msg, "suggest2");
 	soup_xmlrpc_message_start_param (msg);
 	soup_xmlrpc_message_write_string (msg, text);
-	soup_xmlrpc_message_write_string (msg, lang_code);
+	soup_xmlrpc_message_write_string (msg, search_code);
+	soup_xmlrpc_message_write_string (msg, own_code);
 	soup_xmlrpc_message_end_param (msg);
 	soup_xmlrpc_message_end_call (msg);
 
@@ -338,7 +330,8 @@
 		   GtranslatorOpenTranPanel *panel)
 {
 	const gchar *entry_text = NULL;
-	const gchar *lang_code = NULL;
+	const gchar *search_code = NULL;
+	const gchar *own_code = NULL;
 	
 	gtk_list_store_clear(panel->priv->store);
 	
@@ -350,15 +343,27 @@
 		return;
 	}
 	
-	lang_code = gtk_entry_get_text(GTK_ENTRY(panel->priv->lang_code));
-	if(!lang_code)
+	search_code = gconf_client_get_string (panel->priv->gconf_client,
+					       SEARCH_CODE_KEY,
+					       NULL);
+	if(!search_code)
+	{
+		show_error_dialog(panel->priv->window,
+				  _("You have to provide a search language code"));
+		return;
+	}
+	
+	own_code = gconf_client_get_string (panel->priv->gconf_client,
+					    OWN_CODE_KEY,
+					    NULL);
+	if(!own_code)
 	{
 		show_error_dialog(panel->priv->window,
-				  _("You have to provide a language code"));
+				  _("You have to provide a language code for your language"));
 		return;
 	}
 	
-	open_connection(panel, entry_text, lang_code);
+	open_connection(panel, entry_text, search_code, own_code);
 }
 
 static void
@@ -408,7 +413,6 @@
 {
 	GtkWidget *scrolledwindow;
 	GtkWidget *button;
-	GtkWidget *label;
 	GtkWidget *hbox;
 	
 	/*
@@ -448,23 +452,6 @@
 			 G_CALLBACK(entry_activate_cb), panel);
 	
 	gtk_box_pack_start(GTK_BOX(panel), hbox, FALSE, TRUE, 0);
-	
-	/*
-	 * Language code
-	 */		 
-	hbox = gtk_hbox_new(FALSE, 6);
-	
-	label = gtk_label_new(_("Lang code:"));
-	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-
-	panel->priv->lang_code = gtk_entry_new();
-	gtk_widget_set_tooltip_text(panel->priv->lang_code,
-				    _("For example: gl"));
-	gtk_box_pack_start(GTK_BOX(hbox), panel->priv->lang_code, TRUE, TRUE, 0);	
-	g_signal_connect(panel->priv->lang_code, "activate",
-			 G_CALLBACK(entry_activate_cb), panel);
-	
-	gtk_box_pack_start(GTK_BOX(panel), hbox, FALSE, TRUE, 0);
 }
 
 static void
@@ -473,6 +460,8 @@
 	
 	panel->priv = GTR_OPEN_TRAN_PANEL_GET_PRIVATE (panel);
 
+	panel->priv->gconf_client = gconf_client_get_default ();
+	
 	gtranslator_open_tran_panel_draw(panel);
 }
 

Modified: branches/GOBJECT_WORK/plugins/open-tran/open-tran-panel.h
==============================================================================
--- branches/GOBJECT_WORK/plugins/open-tran/open-tran-panel.h	(original)
+++ branches/GOBJECT_WORK/plugins/open-tran/open-tran-panel.h	Mon Feb  4 22:52:53 2008
@@ -37,6 +37,11 @@
 #define GTR_IS_OPEN_TRAN_PANEL_CLASS(k)		(G_TYPE_CHECK_CLASS_TYPE ((k), GTR_TYPE_OPEN_TRAN_PANEL))
 #define GTR_OPEN_TRAN_PANEL_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GTR_TYPE_OPEN_TRAN_PANEL, GtranslatorOpenTranPanelClass))
 
+/* Gconf keys */
+#define OPEN_TRAN_BASE_KEY "/apps/gtranslator/plugins/open-tran"
+#define SEARCH_CODE_KEY OPEN_TRAN_BASE_KEY "/search_code"
+#define OWN_CODE_KEY OPEN_TRAN_BASE_KEY "/own_code"
+
 /* Private structure type */
 typedef struct _GtranslatorOpenTranPanelPrivate	GtranslatorOpenTranPanelPrivate;
 

Modified: branches/GOBJECT_WORK/plugins/open-tran/open-tran-plugin.c
==============================================================================
--- branches/GOBJECT_WORK/plugins/open-tran/open-tran-plugin.c	(original)
+++ branches/GOBJECT_WORK/plugins/open-tran/open-tran-plugin.c	Mon Feb  4 22:52:53 2008
@@ -25,17 +25,33 @@
 #include "open-tran-panel.h"
 
 #include <glib/gi18n-lib.h>
+#include <gconf/gconf-client.h>
+#include <gtk/gtkentry.h>
+#include <gtk/gtkdialog.h>
 #include "window.h"
+#include "utils_gui.h"
 
 #define OPEN_TRAN_PLUGIN_ICON PIXMAPSDIR"/open-tran.png"
 #define WINDOW_DATA_KEY	"GtranslatorOpenTranPluginWindowData"
-
+#define GLADE_FILE DATADIR"/open-tran-dialog.glade"
 
 #define GTR_OPEN_TRAN_PLUGIN_GET_PRIVATE(object) \
 				(G_TYPE_INSTANCE_GET_PRIVATE ((object),	\
 				GTR_TYPE_OPEN_TRAN_PLUGIN,		\
 				GtranslatorOpenTranPluginPrivate))
 
+struct _GtranslatorOpenTranPluginPrivate
+{
+	GConfClient *gconf_client;
+	
+	/* Dialog stuff */
+	GtkWidget *dialog;
+	
+	GtkWidget *main_box;
+	GtkWidget *search_code_entry;
+	GtkWidget *own_code_entry;
+};
+
 typedef struct
 {
 	GtkWidget	*panel;
@@ -48,15 +64,26 @@
 
 static void
 gtranslator_open_tran_plugin_init (GtranslatorOpenTranPlugin *plugin)
-{
-	//gtranslator_debug_message (DEBUG_PLUGINS, "GtranslatorOpenTranPlugin initializing");
+{	
+	plugin->priv = GTR_OPEN_TRAN_PLUGIN_GET_PRIVATE (plugin);
+
+	plugin->priv->gconf_client = gconf_client_get_default ();
+
+	gconf_client_add_dir (plugin->priv->gconf_client,
+			      OPEN_TRAN_BASE_KEY,
+			      GCONF_CLIENT_PRELOAD_ONELEVEL,
+			      NULL);
 }
 
 static void
 gtranslator_open_tran_plugin_finalize (GObject *object)
 {
-	//gtranslator_debug_message (DEBUG_PLUGINS, "GtranslatorOpenTranPlugin finalizing");
+	GtranslatorOpenTranPlugin *plugin = GTR_OPEN_TRAN_PLUGIN (object);
+	
+	gconf_client_suggest_sync (plugin->priv->gconf_client, NULL);
 
+	g_object_unref (G_OBJECT (plugin->priv->gconf_client));
+	
 	G_OBJECT_CLASS (gtranslator_open_tran_plugin_parent_class)->finalize (object);
 }
 
@@ -120,6 +147,134 @@
 }
 
 static void
+get_custom_code (GtranslatorOpenTranPlugin *plugin,
+		 gboolean own_code)
+{
+	gchar *type;
+	gchar *code;
+	
+	if (own_code)
+		type = g_strdup (OWN_CODE_KEY);
+	else type = g_strdup (SEARCH_CODE_KEY);
+	
+	code = gconf_client_get_string (plugin->priv->gconf_client,
+					type,
+					NULL);
+	
+	g_free (type);
+	
+	if (!code && !own_code)
+		code = g_strdup ("en");
+	else if (!code && own_code)
+		code = g_strdup ("gl"); //Why gl? Just because i want.
+	
+	if (!own_code)
+		gtk_entry_set_text (GTK_ENTRY (plugin->priv->search_code_entry), code);
+	else gtk_entry_set_text (GTK_ENTRY (plugin->priv->own_code_entry), code);
+	
+	g_free (code);
+}
+
+static GtkWidget *
+get_configuration_dialog (GtranslatorOpenTranPlugin *plugin)
+{
+
+	gboolean ret;
+	GtkWidget *error_widget;
+	
+	ret = gtranslator_utils_get_glade_widgets (GLADE_FILE,
+						  "dialog",
+						  &error_widget,
+						  "dialog", &plugin->priv->dialog,
+						  "main_box", &plugin->priv->main_box,
+						  "search_code", &plugin->priv->search_code_entry,
+						  "own_code", &plugin->priv->own_code_entry,
+						  NULL);
+
+	if(!ret)
+	{
+		//FIXME: We have to show a dialog
+	}
+
+	get_custom_code (plugin, FALSE);
+	get_custom_code (plugin, TRUE);
+	
+	return plugin->priv->dialog;
+}
+
+static void
+ok_button_pressed (GtranslatorOpenTranPlugin *plugin)
+{
+	const gchar *search_code;
+	const gchar *own_code;
+	
+	/* We have to get the text from the entries */
+	search_code = gtk_entry_get_text (GTK_ENTRY (plugin->priv->search_code_entry));
+	own_code = gtk_entry_get_text (GTK_ENTRY (plugin->priv->own_code_entry));
+	
+	/* Now we store the data in gconf */
+	if (!gconf_client_key_is_writable (plugin->priv->gconf_client,
+					   SEARCH_CODE_KEY,
+					   NULL))
+		return;
+
+	gconf_client_set_string (plugin->priv->gconf_client,
+				 SEARCH_CODE_KEY,
+		       		 search_code,
+		       		 NULL);
+	
+	if (!gconf_client_key_is_writable (plugin->priv->gconf_client,
+					   OWN_CODE_KEY,
+					   NULL))
+		return;
+
+	gconf_client_set_string (plugin->priv->gconf_client,
+				 OWN_CODE_KEY,
+		       		 own_code,
+		       		 NULL);
+}
+
+static void
+configure_dialog_response_cb (GtkWidget           *widget,
+			      gint                 response,
+			      GtranslatorOpenTranPlugin *plugin)
+{
+	switch (response)
+	{
+		case GTK_RESPONSE_OK:
+		{
+			ok_button_pressed (plugin);
+
+			gtk_widget_destroy (plugin->priv->dialog);
+			break;
+		}
+		case GTK_RESPONSE_CANCEL:
+		{
+			gtk_widget_destroy (plugin->priv->dialog);
+		}
+	}
+}
+
+static GtkWidget *
+impl_create_configure_dialog (GtranslatorPlugin *plugin)
+{
+	GtkWidget *dialog;
+	
+	dialog = get_configuration_dialog (GTR_OPEN_TRAN_PLUGIN (plugin));
+	
+	g_signal_connect (dialog,
+			  "response",
+			  G_CALLBACK (configure_dialog_response_cb),
+			  GTR_OPEN_TRAN_PLUGIN (plugin));
+	g_signal_connect (dialog,
+			  "destroy",
+			  G_CALLBACK (gtk_widget_destroy),
+			  &dialog);
+	
+	return dialog;
+}
+
+static void
 gtranslator_open_tran_plugin_class_init (GtranslatorOpenTranPluginClass *klass)
 {
 	GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -129,4 +284,7 @@
 
 	plugin_class->activate = impl_activate;
 	plugin_class->deactivate = impl_deactivate;
+	plugin_class->create_configure_dialog = impl_create_configure_dialog;
+	
+	g_type_class_add_private (object_class, sizeof (GtranslatorOpenTranPluginPrivate));
 }

Modified: branches/GOBJECT_WORK/plugins/open-tran/open-tran-plugin.h
==============================================================================
--- branches/GOBJECT_WORK/plugins/open-tran/open-tran-plugin.h	(original)
+++ branches/GOBJECT_WORK/plugins/open-tran/open-tran-plugin.h	Mon Feb  4 22:52:53 2008
@@ -47,6 +47,9 @@
 struct _GtranslatorOpenTranPlugin
 {
 	GtranslatorPlugin parent_instance;
+	
+	/* private */
+	GtranslatorOpenTranPluginPrivate *priv;
 };
 
 /*



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