[libgda] Added gdaui_bar_add_search_entry()
- From: Vivien Malerba <vivien src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] Added gdaui_bar_add_search_entry()
- Date: Wed, 22 Aug 2012 19:53:03 +0000 (UTC)
commit edad12658e37515693cad7b82add7c153c6b342b
Author: Vivien Malerba <malerba gnome-db org>
Date: Wed Aug 22 16:21:29 2012 +0200
Added gdaui_bar_add_search_entry()
control-center/gdaui-bar.c | 58 ++++++++++++++++++++++++++
control-center/gdaui-bar.h | 1 +
tools/browser/schema-browser/objects-index.c | 26 +++++-------
3 files changed, 70 insertions(+), 15 deletions(-)
---
diff --git a/control-center/gdaui-bar.c b/control-center/gdaui-bar.c
index 6008c29..2166e64 100644
--- a/control-center/gdaui-bar.c
+++ b/control-center/gdaui-bar.c
@@ -488,3 +488,61 @@ gdaui_bar_add_button_from_stock (GdauiBar *bar, const gchar *stock_id)
gtk_widget_show_all (vb);
return button;
}
+
+static void
+find_icon_pressed_cb (GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_pos,
+ G_GNUC_UNUSED GdkEvent *event, G_GNUC_UNUSED gpointer data)
+{
+ if (icon_pos == GTK_ENTRY_ICON_SECONDARY)
+ gtk_entry_set_text (entry, "");
+}
+
+/**
+ * gdaui_bar_add_search_entry:
+ * @bar: a #GdauiBar
+ *
+ * Returns: (transfer none): the created #GtkEntry
+ */
+GtkWidget *
+gdaui_bar_add_search_entry (GdauiBar *bar)
+{
+ g_return_val_if_fail (GDAUI_IS_BAR (bar), NULL);
+
+ GtkWidget *vb, *entry;
+
+ vb = gtk_button_box_new (GTK_ORIENTATION_VERTICAL);
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (vb), GTK_BUTTONBOX_CENTER);
+ gtk_box_pack_start (GTK_BOX (bar->priv->action_area), vb, FALSE, FALSE, 0);
+
+ entry = gtk_entry_new ();
+ gtk_box_pack_start (GTK_BOX (vb), entry, FALSE, FALSE, 0);
+
+ /* CSS theming */
+ GtkStyleContext *context;
+ GtkStyleProvider *provider;
+#define ENTRY_CSS "* {\n" \
+ "-GtkWidget-focus-line-width : 0px;\n" \
+ "-GtkWidget-focus-padding : 0px;\n" \
+ "padding: 1px;\n" \
+ "-GtkButtonBox-child-internal-pad-x : 1px;\n" \
+ "-GtkButtonBox-child-min-width : 0px;\n" \
+ "border-style: solid;\n" \
+ "border-radius: 5px;\n" \
+ "}"
+ provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ());
+ gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), ENTRY_CSS, -1, NULL);
+ context = gtk_widget_get_style_context (vb);
+ gtk_style_context_add_provider (context, provider, G_MAXUINT);
+ context = gtk_widget_get_style_context (entry);
+ gtk_style_context_add_provider (context, provider, G_MAXUINT);
+ g_object_unref (provider);
+
+ gtk_entry_set_icon_from_stock (GTK_ENTRY (entry),
+ GTK_ENTRY_ICON_SECONDARY,
+ GTK_STOCK_CLEAR);
+ g_signal_connect (entry, "icon-press",
+ G_CALLBACK (find_icon_pressed_cb), NULL);
+
+ gtk_widget_show_all (vb);
+ return entry;
+}
diff --git a/control-center/gdaui-bar.h b/control-center/gdaui-bar.h
index becb4cb..0c5db93 100644
--- a/control-center/gdaui-bar.h
+++ b/control-center/gdaui-bar.h
@@ -62,6 +62,7 @@ void gdaui_bar_set_icon_from_stock (GdauiBar *bar, const gchar *stock_
void gdaui_bar_set_show_icon (GdauiBar *bar, gboolean show);
gboolean gdaui_bar_get_show_icon (GdauiBar *bar);
GtkWidget *gdaui_bar_add_button_from_stock (GdauiBar *bar, const gchar *stock_id);
+GtkWidget *gdaui_bar_add_search_entry (GdauiBar *bar);
G_END_DECLS
diff --git a/tools/browser/schema-browser/objects-index.c b/tools/browser/schema-browser/objects-index.c
index 921fcca..8afb2fc 100644
--- a/tools/browser/schema-browser/objects-index.c
+++ b/tools/browser/schema-browser/objects-index.c
@@ -35,7 +35,6 @@
struct _ObjectsIndexPrivate {
BrowserConnection *bcnc;
ObjectsCloud *cloud;
- GtkWidget *popup_container;
};
static void objects_index_class_init (ObjectsIndexClass *klass);
@@ -95,7 +94,6 @@ objects_index_dispose (GObject *object)
/* free memory */
if (index->priv) {
- gtk_widget_destroy (index->priv->popup_container);
if (index->priv->bcnc) {
g_signal_handlers_disconnect_by_func (index->priv->bcnc,
G_CALLBACK (meta_changed_cb), index);
@@ -141,8 +139,14 @@ cloud_object_selected_cb (G_GNUC_UNUSED ObjectsCloud *sel, G_GNUC_UNUSED Objects
TOOLS_FAVORITES_TABLES, sel_contents);
}
+static void
+find_changed_cb (GtkEntry *entry, ObjectsIndex *index)
+{
+ objects_cloud_filter (index->priv->cloud, gtk_entry_get_text (entry));
+}
+
/**
- * objects_index_new
+ * objects_index_new:
*
*
*
@@ -185,19 +189,11 @@ objects_index_new (BrowserConnection *bcnc)
g_signal_connect (cloud, "selected",
G_CALLBACK (cloud_object_selected_cb), index);
- /* find button */
- wid = gdaui_bar_add_button_from_stock (GDAUI_BAR (label), GTK_STOCK_FIND);
+ /* search entry */
+ wid = gdaui_bar_add_search_entry (GDAUI_BAR (label));
- GtkWidget *popup;
- popup = popup_container_new (wid);
- index->priv->popup_container = popup;
- g_signal_connect_swapped (wid, "clicked",
- G_CALLBACK (gtk_widget_show), popup);
- g_object_set_data (G_OBJECT (popup), "button", wid);
-
- wid = objects_cloud_create_filter (OBJECTS_CLOUD (cloud));
- gtk_container_add (GTK_CONTAINER (popup), wid);
- gtk_widget_show (wid);
+ g_signal_connect (wid, "changed",
+ G_CALLBACK (find_changed_cb), index);
return (GtkWidget*) index;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]