[Goodies-commits] r5791 - in xfce4-dict/trunk: . lib panel-plugin

Enrico Troeger enrico at xfce.org
Fri Oct 24 19:30:19 CEST 2008


Author: enrico
Date: 2008-10-24 17:30:19 +0000 (Fri, 24 Oct 2008)
New Revision: 5791

Modified:
   xfce4-dict/trunk/ChangeLog
   xfce4-dict/trunk/lib/common.c
   xfce4-dict/trunk/lib/gui.c
   xfce4-dict/trunk/lib/sexy-icon-entry.c
   xfce4-dict/trunk/lib/sexy-icon-entry.h
   xfce4-dict/trunk/panel-plugin/xfce4-dict-plugin.c
Log:
Bring the 'Search Term' string back, this time in the search entry to get auto cleared on click.
Use for the panel text entry also a SexyIconEntry.

Modified: xfce4-dict/trunk/ChangeLog
===================================================================
--- xfce4-dict/trunk/ChangeLog	2008-10-24 16:49:55 UTC (rev 5790)
+++ xfce4-dict/trunk/ChangeLog	2008-10-24 17:30:19 UTC (rev 5791)
@@ -1,6 +1,13 @@
+2008-10-23  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * Bring the 'Search Term' string back, this time in the search
+   entry to get auto cleared on click.
+ * Use for the panel text entry also a SexyIconEntry.
+
+
 2008-10-19  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
- * Fix a segfault in link parsing caused by malformed dictionary texts.
+ * Fix a crash in link parsing caused by malformed dictionary texts.
 
 
 2008-10-18  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: xfce4-dict/trunk/lib/common.c
===================================================================
--- xfce4-dict/trunk/lib/common.c	2008-10-24 16:49:55 UTC (rev 5790)
+++ xfce4-dict/trunk/lib/common.c	2008-10-24 17:30:19 UTC (rev 5791)
@@ -287,7 +287,7 @@
 	gint mode_in_use = DICTMODE_DICT;
 	gint mode_default = DICTMODE_LAST_USED;
 	gint port = 2628;
-	gint panel_entry_size = 120;
+	gint panel_entry_size = 150;
 	gboolean show_panel_entry = FALSE;
 	const gchar *server = "dict.org";
 	const gchar *dict = "*";

Modified: xfce4-dict/trunk/lib/gui.c
===================================================================
--- xfce4-dict/trunk/lib/gui.c	2008-10-24 16:49:55 UTC (rev 5790)
+++ xfce4-dict/trunk/lib/gui.c	2008-10-24 17:30:19 UTC (rev 5791)
@@ -259,6 +259,21 @@
 }
 
 
+static gboolean entry_button_press_cb(GtkWidget *widget, GdkEventButton *event, DictData *dd)
+{
+	static gboolean ran = FALSE;
+
+	if (! ran)
+	{
+		ran = TRUE;
+		if (event->button == 1)
+			gtk_entry_set_text(GTK_ENTRY(widget), "");
+	}
+
+	return FALSE;
+}
+
+
 static const gchar *get_icon_name(const gchar *req1, const gchar *req2, const gchar *fallback)
 {
 	GtkIconTheme *theme = gtk_icon_theme_get_default();
@@ -412,8 +427,7 @@
 
 void dict_gui_create_main_window(DictData *dd)
 {
-	GtkWidget *main_box;
-	GtkWidget *entry_box, *label_box, *image;
+	GtkWidget *main_box, *entry_box, *label_box;
 	GtkWidget *sep, *align, *scrolledwindow_results;
 	GdkPixbuf *icon;
 	GtkWidget *method_chooser, *radio, *label;
@@ -443,19 +457,11 @@
 	gtk_widget_show(label_box);
 	gtk_box_pack_start(GTK_BOX(entry_box), label_box, TRUE, TRUE, 0);
 
-	dd->main_entry = sexy_icon_entry_new();
-	image = gtk_image_new_from_stock("gtk-find", GTK_ICON_SIZE_MENU);
-	sexy_icon_entry_set_icon(SEXY_ICON_ENTRY(dd->main_entry),
-		SEXY_ICON_ENTRY_PRIMARY, GTK_IMAGE(image));
-	sexy_icon_entry_set_icon_highlight(
-		SEXY_ICON_ENTRY(dd->main_entry), SEXY_ICON_ENTRY_PRIMARY, TRUE);
-	image = gtk_image_new_from_stock("gtk-clear", GTK_ICON_SIZE_MENU);
-	sexy_icon_entry_set_icon(SEXY_ICON_ENTRY(dd->main_entry),
-		SEXY_ICON_ENTRY_SECONDARY, GTK_IMAGE(image));
-	sexy_icon_entry_set_icon_highlight(
-		SEXY_ICON_ENTRY(dd->main_entry), SEXY_ICON_ENTRY_SECONDARY, TRUE);
+	dd->main_entry = sexy_icon_entry_new_full("gtk-find", "gtk-clear");
+	gtk_entry_set_text(GTK_ENTRY(dd->main_entry), _("Search term"));
 	gtk_widget_show(dd->main_entry);
 	gtk_box_pack_start(GTK_BOX(label_box), dd->main_entry, TRUE, TRUE, 0);
+	g_signal_connect(dd->main_entry, "button-press-event", G_CALLBACK(entry_button_press_cb), dd);
 	g_signal_connect(dd->main_entry, "activate", G_CALLBACK(entry_activate_cb), dd);
 	g_signal_connect(dd->main_entry, "icon_released", G_CALLBACK(entry_icon_pressed_cb), dd);
 

Modified: xfce4-dict/trunk/lib/sexy-icon-entry.c
===================================================================
--- xfce4-dict/trunk/lib/sexy-icon-entry.c	2008-10-24 16:49:55 UTC (rev 5790)
+++ xfce4-dict/trunk/lib/sexy-icon-entry.c	2008-10-24 17:30:19 UTC (rev 5791)
@@ -794,6 +794,32 @@
 	return GTK_WIDGET(g_object_new(SEXY_TYPE_ICON_ENTRY, NULL));
 }
 
+GtkWidget *sexy_icon_entry_new_full(const gchar *stock_id_pri, const gchar *stock_id_sec)
+{
+	GtkWidget *icon;
+	SexyIconEntry *entry;
+
+	entry = g_object_new(SEXY_TYPE_ICON_ENTRY, NULL);
+
+	if (stock_id_pri != NULL)
+	{
+		icon = gtk_image_new_from_stock(stock_id_pri, GTK_ICON_SIZE_MENU);
+		gtk_widget_show(icon);
+		sexy_icon_entry_set_icon(SEXY_ICON_ENTRY(entry), SEXY_ICON_ENTRY_PRIMARY, GTK_IMAGE(icon));
+		sexy_icon_entry_set_icon_highlight(SEXY_ICON_ENTRY(entry), SEXY_ICON_ENTRY_PRIMARY, TRUE);
+	}
+
+	if (stock_id_sec != NULL)
+	{
+		icon = gtk_image_new_from_stock(stock_id_sec, GTK_ICON_SIZE_MENU);
+		gtk_widget_show(icon);
+		sexy_icon_entry_set_icon(SEXY_ICON_ENTRY(entry), SEXY_ICON_ENTRY_SECONDARY, GTK_IMAGE(icon));
+		sexy_icon_entry_set_icon_highlight(SEXY_ICON_ENTRY(entry), SEXY_ICON_ENTRY_SECONDARY, TRUE);
+	}
+
+	return GTK_WIDGET(entry);
+}
+
 /**
  * sexy_icon_entry_set_icon
  * @entry: A #SexyIconEntry.
@@ -921,3 +947,4 @@
 
 	return entry->priv->icons[icon_pos].highlight;
 }
+

Modified: xfce4-dict/trunk/lib/sexy-icon-entry.h
===================================================================
--- xfce4-dict/trunk/lib/sexy-icon-entry.h	2008-10-24 16:49:55 UTC (rev 5790)
+++ xfce4-dict/trunk/lib/sexy-icon-entry.h	2008-10-24 17:30:19 UTC (rev 5791)
@@ -80,6 +80,7 @@
 GType sexy_icon_entry_get_type(void);
 
 GtkWidget *sexy_icon_entry_new(void);
+GtkWidget *sexy_icon_entry_new_full(const gchar *stock_id_pri, const gchar *stock_id_sec);
 
 void sexy_icon_entry_set_icon(SexyIconEntry *entry,
 							  SexyIconEntryPosition position,

Modified: xfce4-dict/trunk/panel-plugin/xfce4-dict-plugin.c
===================================================================
--- xfce4-dict/trunk/panel-plugin/xfce4-dict-plugin.c	2008-10-24 16:49:55 UTC (rev 5790)
+++ xfce4-dict/trunk/panel-plugin/xfce4-dict-plugin.c	2008-10-24 17:30:19 UTC (rev 5791)
@@ -39,6 +39,7 @@
 #include <string.h>
 
 #include "libdict.h"
+#include "sexy-icon-entry.h"
 
 
 typedef struct
@@ -264,7 +265,15 @@
 static gboolean dict_plugin_panel_entry_buttonpress_cb(GtkWidget *entry, GdkEventButton *event, DictPanelData *dpd)
 {
 	GtkWidget *toplevel;
+	static gboolean ran = FALSE;
 
+	if (! ran)
+	{
+		ran = TRUE;
+		if (event->button == 1)
+			gtk_entry_set_text(GTK_ENTRY(entry), "");
+	}
+
 	/* Determine toplevel parent widget */
 	toplevel = gtk_widget_get_toplevel(entry);
 
@@ -334,6 +343,26 @@
 }
 
 
+static void entry_icon_pressed_cb(SexyIconEntry *entry, gint pos, gint button, DictPanelData *dpd)
+{
+	if (button != 1)
+		return;
+
+	if (pos == SEXY_ICON_ENTRY_PRIMARY)
+	{
+		dict_plugin_panel_entry_activate_cb(NULL, dpd);
+		gtk_widget_grab_focus(dpd->dd->main_entry);
+	}
+	else if (pos == SEXY_ICON_ENTRY_SECONDARY)
+	{
+		dict_gui_clear_text_buffer(dpd->dd);
+		gtk_entry_set_text(GTK_ENTRY(dpd->dd->main_entry), "");
+		dict_gui_set_panel_entry_text(dpd->dd, "");
+		dict_gui_status_add(dpd->dd, _("Ready."));
+	}
+}
+
+
 static void dict_plugin_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context,
 		gint x, gint y, GtkSelectionData *data, guint info, guint ltime, DictPanelData *dpd)
 {
@@ -396,8 +425,11 @@
 	g_signal_connect(dpd->dd->pref_menu_item, "activate", G_CALLBACK(dict_plugin_properties_dialog), dpd);
 
 	/* panel entry */
-	dpd->dd->panel_entry = gtk_entry_new();
-	gtk_entry_set_width_chars(GTK_ENTRY(dpd->dd->panel_entry), 15);
+	dpd->dd->panel_entry = sexy_icon_entry_new_full(NULL, "gtk-clear");
+	gtk_entry_set_width_chars(GTK_ENTRY(dpd->dd->panel_entry), 25);
+	gtk_entry_set_text(GTK_ENTRY(dpd->dd->panel_entry), _("Search term"));
+	g_signal_connect(dpd->dd->panel_entry, "icon_released",
+		G_CALLBACK(entry_icon_pressed_cb), dpd);
 	g_signal_connect(dpd->dd->panel_entry, "activate",
 		G_CALLBACK(dict_plugin_panel_entry_activate_cb), dpd);
 	g_signal_connect(dpd->dd->panel_entry, "button-press-event",
@@ -409,7 +441,7 @@
 		gtk_widget_show(dpd->dd->panel_entry);
 	}
 
-	hbox = gtk_hbox_new(FALSE, 0);
+	hbox = gtk_hbox_new(FALSE, 3);
 	gtk_widget_show(hbox);
 
 	gtk_box_pack_start(GTK_BOX(hbox), dpd->panel_button, FALSE, FALSE, 0);




More information about the Goodies-commits mailing list