gtranslator r3482 - in branches/GOBJECT_WORK: . plugins/open-tran
- From: icq svn gnome org
- To: svn-commits-list gnome org
- Subject: gtranslator r3482 - in branches/GOBJECT_WORK: . plugins/open-tran
- Date: Mon, 4 Feb 2008 22:52:53 +0000 (GMT)
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"><b>Add the lang code where you want to search:</b></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"><b>Add the lang code of your language:</b></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]