[Goodies-commits] r4628 - in xfce4-dict/trunk: . lib
Enrico Troeger
enrico at xfce.org
Fri Apr 18 18:07:26 CEST 2008
Author: enrico
Date: 2008-04-18 16:07:26 +0000 (Fri, 18 Apr 2008)
New Revision: 4628
Modified:
xfce4-dict/trunk/ChangeLog
xfce4-dict/trunk/lib/common.c
xfce4-dict/trunk/lib/common.h
xfce4-dict/trunk/lib/prefs.c
Log:
Rewrite of the web search code to be more flexible to use and to simplify the code.
Add two other dictionary services: Dictionary.com and TheFreeDictionary.com.
Modified: xfce4-dict/trunk/ChangeLog
===================================================================
--- xfce4-dict/trunk/ChangeLog 2008-04-18 16:07:22 UTC (rev 4627)
+++ xfce4-dict/trunk/ChangeLog 2008-04-18 16:07:26 UTC (rev 4628)
@@ -1,3 +1,28 @@
+2008-04-18 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * Add command line option "--ignore-plugin" to start the stand-alone
+ application even if the panel plugin is loaded.
+ * Add new languages Chinese and Italian which are newly supported
+ by dict.leo.org.
+ * Rewrite of the web search code to be more flexible to use and to
+ simplify the code.
+ Add two other dictionary services:
+ Dictionary.com and TheFreeDictionary.com.
+
+
+2008-04-17 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * Unify application name to "Xfce4 Dictionary".
+ * Remove Help button from preferences dialog as there is no help
+ available at all.
+ * Disable conversion into ISO-8859-15 of search text when using
+ dict.leo.org, seems not necessary anymore.
+ * Fix problems with preferences dialog callback if panel plugin is
+ loaded.
+ * Fix minor panel button sizing issues (make it a little wider on
+ horizontal panel, a little flatter on vertical panels).
+
+
2008-04-15 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* Update Readme.
Modified: xfce4-dict/trunk/lib/common.c
===================================================================
--- xfce4-dict/trunk/lib/common.c 2008-04-18 16:07:22 UTC (rev 4627)
+++ xfce4-dict/trunk/lib/common.c 2008-04-18 16:07:26 UTC (rev 4628)
@@ -43,7 +43,6 @@
-
/* TODO make me UTF-8 safe */
static gint str_pos(const gchar *haystack, const gchar *needle)
{
@@ -163,58 +162,10 @@
static gboolean start_web_query(DictData *dd, const gchar *word)
{
- gboolean use_leo = FALSE;
gboolean success = TRUE;
- gchar *uri, *base;
+ gchar *uri;
- switch (dd->web_mode)
- {
- case WEBMODE_LEO_GERENG:
- {
- base = "http://dict.leo.org/ende?search={word}";
- use_leo = TRUE;
- break;
- }
- case WEBMODE_LEO_GERFRE:
- {
- base = "http://dict.leo.org/frde?search={word}";
- use_leo = TRUE;
- break;
- }
- case WEBMODE_LEO_GERSPA:
- {
- base = "http://dict.leo.org/esde?search={word}";
- use_leo = TRUE;
- break;
- }
- case WEBMODE_LEO_GERITA:
- {
- base = "http://dict.leo.org/itde?search={word}";
- use_leo = TRUE;
- break;
- }
- case WEBMODE_LEO_GERCHI:
- {
- base = "http://dict.leo.org/chde?search={word}";
- use_leo = TRUE;
- break;
- }
- default: base = dd->web_url;
- }
-#if 0 /* for some reason this isn't necessary anymore */
- if (use_leo)
- {
- /* convert the text into ISO-8869-15 because dict.leo.org expects it ;-( */
- gchar *tmp = g_convert(dd->searched_word, -1,
- "ISO-8859-15", "UTF-8", NULL, NULL, NULL);
- if (tmp != NULL)
- {
- g_free(dd->searched_word);
- dd->searched_word = tmp;
- }
- }
-#endif
- uri = str_replace(g_strdup(base), "{word}", dd->searched_word);
+ uri = str_replace(g_strdup(dd->web_url), "{word}", dd->searched_word);
if (! dict_open_browser(dd, uri))
{
xfce_err(_("Browser could not be opened. Please check your preferences."));
@@ -309,7 +260,6 @@
XfceRc *rc;
gint mode_in_use = DICTMODE_DICT;
gint mode_default = DICTMODE_LAST_USED;
- gint webmode = WEBMODE_LEO_GERENG;
gint port = 2628;
gint panel_entry_size = 120;
gboolean show_panel_entry = FALSE;
@@ -323,7 +273,6 @@
{
mode_in_use = xfce_rc_read_int_entry(rc, "mode_in_use", mode_in_use);
mode_default = xfce_rc_read_int_entry(rc, "mode_default", mode_default);
- webmode = xfce_rc_read_int_entry(rc, "web_mode", webmode);
weburl = xfce_rc_read_entry(rc, "web_url", weburl);
show_panel_entry = xfce_rc_read_bool_entry(rc, "show_panel_entry", show_panel_entry);
panel_entry_size = xfce_rc_read_int_entry(rc, "panel_entry_size", panel_entry_size);
@@ -342,7 +291,6 @@
else
dd->mode_in_use = dd->mode_default;
- dd->web_mode = webmode;
dd->web_url = g_strdup(weburl);
dd->show_panel_entry = show_panel_entry;
dd->panel_entry_size = panel_entry_size;
@@ -362,7 +310,6 @@
{
xfce_rc_write_int_entry(rc, "mode_in_use", dd->mode_in_use);
xfce_rc_write_int_entry(rc, "mode_default", dd->mode_default);
- xfce_rc_write_int_entry(rc, "web_mode", dd->web_mode);
if (dd->web_url != NULL)
xfce_rc_write_entry(rc, "web_url", dd->web_url);
xfce_rc_write_bool_entry(rc, "show_panel_entry", dd->show_panel_entry);
@@ -435,4 +382,3 @@
return dd;
}
-
Modified: xfce4-dict/trunk/lib/common.h
===================================================================
--- xfce4-dict/trunk/lib/common.h 2008-04-18 16:07:22 UTC (rev 4627)
+++ xfce4-dict/trunk/lib/common.h 2008-04-18 16:07:26 UTC (rev 4628)
@@ -43,30 +43,17 @@
DICTMODE_LAST_USED
} dict_mode_t;
-typedef enum
-{
- WEBMODE_OTHER = 0,
- WEBMODE_LEO_GERENG,
- WEBMODE_LEO_GERFRE,
- WEBMODE_LEO_GERSPA,
- WEBMODE_LEO_GERITA,
- WEBMODE_LEO_GERCHI
-} web_mode_t;
-
-
enum
{
NO_CONNECTION,
NO_ERROR
};
-
typedef struct
{
/* settings */
dict_mode_t mode_in_use;
dict_mode_t mode_default;
- web_mode_t web_mode;
gboolean show_panel_entry;
gint panel_entry_size;
@@ -100,8 +87,6 @@
GtkTextBuffer *main_textbuffer;
GtkTextTag *main_boldtag;
GdkPixbuf *icon;
-
- GtkWidget *web_entry_box;
} DictData;
Modified: xfce4-dict/trunk/lib/prefs.c
===================================================================
--- xfce4-dict/trunk/lib/prefs.c 2008-04-18 16:07:22 UTC (rev 4627)
+++ xfce4-dict/trunk/lib/prefs.c 2008-04-18 16:07:26 UTC (rev 4628)
@@ -30,7 +30,13 @@
#include "dictd.h"
+typedef struct
+{
+ gchar *label;
+ gchar *url;
+} web_dict_t;
+
static void show_panel_entry_toggled(GtkToggleButton *tb, DictData *dd)
{
if (dd->is_plugin)
@@ -43,20 +49,6 @@
}
-static void web_search_type_changed(GtkRadioButton *radiobutton, DictData *dd)
-{
- if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radiobutton)))
- return; /* ignore the toggled event when a button is deselected */
-
- dd->web_mode = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(radiobutton), "type"));
-
- gtk_widget_set_sensitive(g_object_get_data(G_OBJECT(dd->web_entry_box), "web_entry"),
- (dd->web_mode == WEBMODE_OTHER));
- gtk_widget_set_sensitive(g_object_get_data(G_OBJECT(dd->web_entry_box), "web_entry_label"),
- (dd->web_mode == WEBMODE_OTHER));
-}
-
-
static void search_method_changed(GtkRadioButton *radiobutton, DictData *dd)
{
if (! gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radiobutton)))
@@ -124,12 +116,9 @@
dd->dictionary = tmp;
/* MODE WEB */
- if (dd->web_mode == WEBMODE_OTHER)
- {
- g_free(dd->web_url);
- dd->web_url = g_strdup(gtk_entry_get_text(
+ g_free(dd->web_url);
+ dd->web_url = g_strdup(gtk_entry_get_text(
GTK_ENTRY(g_object_get_data(G_OBJECT(dlg), "web_entry"))));
- }
/* MODE SPELL */
tmp = gtk_combo_box_get_active_text(
@@ -159,13 +148,63 @@
}
+static void web_dict_button_clicked(GtkButton *button, gpointer user_data)
+{
+ const gchar *url = user_data;
+ GtkEntry *entry = g_object_get_data(G_OBJECT(button), "web_entry");
+
+ if (entry != NULL && url != NULL)
+ gtk_entry_set_text(entry, url);
+}
+
+
+static GtkWidget *create_web_dicts_table(GtkWidget *entry)
+{
+ gint i;
+ gint offset;
+ GtkWidget *table, *button;
+ static web_dict_t web_dicts[] =
+ {
+ { N_("dict.leo.org - German <-> English"), "http://dict.leo.org/ende?search={word}" },
+ { N_("dict.leo.org - German <-> French"), "http://dict.leo.org/frde?search={word}" },
+ { N_("dict.leo.org - German <-> Spanish"), "http://dict.leo.org/esde?search={word}" },
+ { N_("dict.leo.org - German <-> Italian"), "http://dict.leo.org/itde?search={word}" },
+ { N_("dict.leo.org - German <-> Chinese"), "http://dict.leo.org/chde?search={word}" },
+ { N_("Dictionary.com"), "http://dictionary.reference.com/search?db=dictionary&q={word}" },
+ { N_("TheFreeDictionary.com"), "http://www.thefreedictionary.com/_/partner.aspx?Word={word}&Set=www&mode=w" },
+ { N_("Clear"), "" },
+ { NULL, NULL }
+ };
+
+ table = gtk_table_new(4, 2, FALSE);
+ gtk_table_set_row_spacings(GTK_TABLE(table), 2);
+ gtk_table_set_col_spacings(GTK_TABLE(table), 2);
+
+ for (i = 0; web_dicts[i].label != NULL; i++)
+ {
+ offset = i % 2;
+ button = gtk_button_new_with_label(web_dicts[i].label);
+ g_signal_connect(button, "clicked", G_CALLBACK(web_dict_button_clicked), web_dicts[i].url);
+ g_object_set_data(G_OBJECT(button), "web_entry", entry);
+ gtk_widget_show(button);
+
+ gtk_table_attach(GTK_TABLE(table),
+ button, offset, 1 + offset, i - offset, i + 1 - offset,
+ (GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
+ (GtkAttachOptions) (0), 5, 5);
+ }
+
+ return table;
+}
+
+
GtkWidget *dict_prefs_dialog_show(GtkWidget *parent, DictData *dd)
{
GtkWidget *dialog, *inner_vbox, *notebook, *notebook_vbox;
GtkWidget *label1, *label2, *label3;
dialog = xfce_titled_dialog_new_with_buttons(
- _("Xfce Dictionary"), GTK_WINDOW(parent),
+ _("Xfce4 Dictionary"), GTK_WINDOW(parent),
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR,
GTK_STOCK_CLOSE, GTK_RESPONSE_OK,
NULL);
@@ -183,7 +222,7 @@
/*
* Page: general
*/
-#define PAGE_GENERAL /* only navigation in Geany's symbol list ;-) */
+#define PAGE_GENERAL /* only for navigation in Geany's symbol list ;-) */
{
GtkWidget *radio_button, *label;
GSList *search_method;
@@ -286,7 +325,7 @@
/*
* Page: DICTD
*/
-#define PAGE_DICTD /* only navigation in Geany's symbol list ;-) */
+#define PAGE_DICTD /* only for navigation in Geany's symbol list ;-) */
{
GtkWidget *table, *button_get_list, *server_entry, *port_spinner, *dict_combo;
@@ -393,10 +432,9 @@
/*
* Page: WEB
*/
-#define PAGE_WEB /* only navigation in Geany's symbol list ;-) */
+#define PAGE_WEB /* only for navigation in Geany's symbol list ;-) */
{
- GtkWidget *radio_button, *label, *web_entry_label, *web_entry;
- GSList *web_type;
+ GtkWidget *label, *web_entry_label, *web_entry, *web_entry_box, *web_dicts_table;
notebook_vbox = gtk_vbox_new(FALSE, 5);
gtk_widget_show(notebook_vbox);
@@ -410,65 +448,6 @@
gtk_widget_show(label);
gtk_box_pack_start(GTK_BOX(inner_vbox), label, FALSE, FALSE, 0);
- radio_button = gtk_radio_button_new_with_label(NULL,
- _("dict.leo.org - German <-> English"));
- web_type = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_button));
- if (dd->web_mode == WEBMODE_LEO_GERENG)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button), TRUE);
- gtk_widget_show(radio_button);
- gtk_box_pack_start(GTK_BOX(inner_vbox), radio_button, FALSE, FALSE, 0);
- g_object_set_data(G_OBJECT(radio_button), "type", GINT_TO_POINTER(WEBMODE_LEO_GERENG));
- g_signal_connect(G_OBJECT(radio_button), "toggled", G_CALLBACK(web_search_type_changed), dd);
-
- radio_button = gtk_radio_button_new_with_label(web_type,
- _("dict.leo.org - German <-> French"));
- web_type = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_button));
- if (dd->web_mode == WEBMODE_LEO_GERFRE)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button), TRUE);
- gtk_widget_show(radio_button);
- gtk_box_pack_start(GTK_BOX(inner_vbox), radio_button, FALSE, FALSE, 0);
- g_object_set_data(G_OBJECT(radio_button), "type", GINT_TO_POINTER(WEBMODE_LEO_GERFRE));
- g_signal_connect(G_OBJECT(radio_button), "toggled", G_CALLBACK(web_search_type_changed), dd);
-
- radio_button = gtk_radio_button_new_with_label(web_type,
- _("dict.leo.org - German <-> Spanish"));
- web_type = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_button));
- if (dd->web_mode == WEBMODE_LEO_GERSPA)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button), TRUE);
- gtk_widget_show(radio_button);
- gtk_box_pack_start(GTK_BOX(inner_vbox), radio_button, FALSE, FALSE, 0);
- g_object_set_data(G_OBJECT(radio_button), "type", GINT_TO_POINTER(WEBMODE_LEO_GERSPA));
- g_signal_connect(G_OBJECT(radio_button), "toggled", G_CALLBACK(web_search_type_changed), dd);
-
- radio_button = gtk_radio_button_new_with_label(web_type,
- _("dict.leo.org - German <-> Italian"));
- web_type = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_button));
- if (dd->web_mode == WEBMODE_LEO_GERITA)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button), TRUE);
- gtk_widget_show(radio_button);
- gtk_box_pack_start(GTK_BOX(inner_vbox), radio_button, FALSE, FALSE, 0);
- g_object_set_data(G_OBJECT(radio_button), "type", GINT_TO_POINTER(WEBMODE_LEO_GERITA));
- g_signal_connect(G_OBJECT(radio_button), "toggled", G_CALLBACK(web_search_type_changed), dd);
-
- radio_button = gtk_radio_button_new_with_label(web_type,
- _("dict.leo.org - German <-> Chinese"));
- web_type = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_button));
- if (dd->web_mode == WEBMODE_LEO_GERCHI)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button), TRUE);
- gtk_widget_show(radio_button);
- gtk_box_pack_start(GTK_BOX(inner_vbox), radio_button, FALSE, FALSE, 0);
- g_object_set_data(G_OBJECT(radio_button), "type", GINT_TO_POINTER(WEBMODE_LEO_GERCHI));
- g_signal_connect(G_OBJECT(radio_button), "toggled", G_CALLBACK(web_search_type_changed), dd);
-
- radio_button = gtk_radio_button_new_with_label(web_type, _("Use another website"));
- web_type = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio_button));
- if (dd->web_mode == WEBMODE_OTHER)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_button), TRUE);
- gtk_widget_show(radio_button);
- gtk_box_pack_start(GTK_BOX(inner_vbox), radio_button, FALSE, FALSE, 0);
- g_object_set_data(G_OBJECT(radio_button), "type", GINT_TO_POINTER(WEBMODE_OTHER));
- g_signal_connect(G_OBJECT(radio_button), "toggled", G_CALLBACK(web_search_type_changed), dd);
-
web_entry_label = gtk_label_new_with_mnemonic(_("URL:"));
gtk_widget_show(web_entry_label);
web_entry = gtk_entry_new();
@@ -476,31 +455,31 @@
gtk_entry_set_text(GTK_ENTRY(web_entry), dd->web_url);
gtk_widget_show(web_entry);
- dd->web_entry_box = gtk_hbox_new(FALSE, 0);
- gtk_widget_show(dd->web_entry_box);
- gtk_box_pack_start(GTK_BOX(dd->web_entry_box), web_entry_label, FALSE, TRUE, 5);
- gtk_box_pack_start(GTK_BOX(dd->web_entry_box), web_entry, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(inner_vbox), dd->web_entry_box, FALSE, FALSE, 0);
+ web_entry_box = gtk_hbox_new(FALSE, 0);
+ gtk_widget_show(web_entry_box);
+ web_dicts_table = create_web_dicts_table(web_entry);
+ gtk_widget_show(web_dicts_table);
+ gtk_box_pack_start(GTK_BOX(inner_vbox), web_dicts_table, FALSE, FALSE, 0);
+
+ gtk_box_pack_start(GTK_BOX(web_entry_box), web_entry_label, FALSE, TRUE, 5);
+ gtk_box_pack_start(GTK_BOX(web_entry_box), web_entry, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(inner_vbox), web_entry_box, FALSE, FALSE, 0);
+
g_object_set_data(G_OBJECT(dialog), "web_entry", web_entry);
- g_object_set_data(G_OBJECT(dd->web_entry_box), "web_entry", web_entry);
- g_object_set_data(G_OBJECT(dd->web_entry_box), "web_entry_label", web_entry_label);
- label1 = gtk_label_new(_("Enter an URL to a web site which offer translation services.\nUse {word} as placeholder for the searched word."));
+ label1 = gtk_label_new(_("Enter an URL to a web site which offer translation or dictionary services.\nUse {word} as placeholder for the searched word."));
gtk_label_set_line_wrap(GTK_LABEL(label1), TRUE);
gtk_misc_set_alignment(GTK_MISC(label1), 0, 0);
gtk_widget_show(label1);
gtk_box_pack_start(GTK_BOX(inner_vbox), label1, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(notebook_vbox), inner_vbox, TRUE, TRUE, 5);
-
- /* init the sensitive widgets */
- web_search_type_changed(GTK_RADIO_BUTTON(radio_button), dd);
}
/*
* Page: ASPELL
*/
-#define PAGE_ASPELL /* only navigation in Geany's symbol list ;-) */
+#define PAGE_ASPELL /* only for navigation in Geany's symbol list ;-) */
{
GtkWidget *table, *spell_entry, *spell_combo;
More information about the Goodies-commits
mailing list