devhelp r1176 - in trunk: . src



Author: herzi
Date: Thu Oct  9 17:43:08 2008
New Revision: 1176
URL: http://svn.gnome.org/viewvc/devhelp?rev=1176&view=rev

Log:
2008-10-07  Sven Herzberg  <sven imendio com>

	Moved the search code into the DhAssistantView

	* src/dh-assistant-view.c,
	* src/dh-assistant-view.h: added the search code
	* src/dh-assistant.c: forward search to DhAssistantView


Modified:
   trunk/ChangeLog
   trunk/src/dh-assistant-view.c
   trunk/src/dh-assistant-view.h
   trunk/src/dh-assistant.c

Modified: trunk/src/dh-assistant-view.c
==============================================================================
--- trunk/src/dh-assistant-view.c	(original)
+++ trunk/src/dh-assistant-view.c	Thu Oct  9 17:43:08 2008
@@ -37,6 +37,7 @@
         /* private - move to a private structure before publishing this struct */
         DhBase            *base;
         DhLink            *link;
+        gchar             *current_search;
 };
 
 struct _DhAssistantViewClass {
@@ -62,6 +63,8 @@
                 g_object_unref (self->base);
         }
 
+        g_free (self->current_search);
+
         G_OBJECT_CLASS (dh_assistant_view_parent_class)->finalize (object);
 }
 
@@ -139,6 +142,81 @@
         return g_object_new (DH_TYPE_ASSISTANT_VIEW, NULL);
 }
 
+gboolean
+dh_assistant_view_search (DhAssistantView *self,
+                          const gchar     *str)
+{
+        GList           *keywords, *l;
+        const gchar     *name;
+        DhLink          *link;
+        DhLink          *exact_link;
+        DhLink          *prefix_link;
+
+        g_return_val_if_fail (DH_IS_ASSISTANT_VIEW (self), FALSE);
+        g_return_val_if_fail (str, FALSE);
+
+        /* Filter out very short strings. */
+        if (strlen (str) < 4) {
+                return FALSE;
+        }
+
+        if (self->current_search && strcmp (self->current_search, str) == 0) {
+                return FALSE;
+        }
+        g_free (self->current_search);
+        self->current_search = g_strdup (str);
+
+        keywords = dh_base_get_keywords (dh_assistant_view_get_base (self));
+
+        prefix_link = NULL;
+        exact_link = NULL;
+        for (l = keywords; l && exact_link == NULL; l = l->next) {
+                DhLinkType type;
+
+                link = l->data;
+
+                type = dh_link_get_link_type (link);
+
+                if (type == DH_LINK_TYPE_BOOK ||
+                    type == DH_LINK_TYPE_PAGE ||
+                    type == DH_LINK_TYPE_KEYWORD) {
+                        continue;
+                }
+
+                name = dh_link_get_name (link);
+                if (strcmp (name, str) == 0) {
+                        exact_link = link;
+                }
+                else if (g_str_has_prefix (name, str)) {
+                        /* Prefer shorter prefix matches. */
+                        if (!prefix_link) {
+                                prefix_link = link;
+                        }
+                        else if (strlen (dh_link_get_name (prefix_link)) > strlen (name)) {
+                                prefix_link = link;
+                        }
+                }
+        }
+
+        if (exact_link) {
+                /*g_print ("exact hit: '%s' '%s'\n", exact_link->name, str);*/
+                dh_assistant_view_set_link (self,
+                                            exact_link);
+        }
+        else if (prefix_link) {
+                /*g_print ("prefix hit: '%s' '%s'\n", prefix_link->name, str);*/
+                dh_assistant_view_set_link (self,
+                                            prefix_link);
+        } else {
+                /*g_print ("no hit\n");*/
+                /*dh_assistant_view_set_link (self,
+                                            NULL);*/
+                return FALSE;
+        }
+
+        return TRUE;
+}
+
 void
 dh_assistant_view_set_base (DhAssistantView *view,
                             DhBase          *base)

Modified: trunk/src/dh-assistant-view.h
==============================================================================
--- trunk/src/dh-assistant-view.h	(original)
+++ trunk/src/dh-assistant-view.h	Thu Oct  9 17:43:08 2008
@@ -45,6 +45,8 @@
 
 GType      dh_assistant_view_get_type (void) G_GNUC_CONST;
 GtkWidget* dh_assistant_view_new      (void);
+gboolean   dh_assistant_view_search   (DhAssistantView *self,
+                                       const gchar     *str);
 DhBase*    dh_assistant_view_get_base (DhAssistantView *self);
 void       dh_assistant_view_set_base (DhAssistantView *self,
                                        DhBase          *base);

Modified: trunk/src/dh-assistant.c
==============================================================================
--- trunk/src/dh-assistant.c	(original)
+++ trunk/src/dh-assistant.c	Thu Oct  9 17:43:08 2008
@@ -32,8 +32,6 @@
 typedef struct {
         GtkWidget *main_box;
         GtkWidget *web_view;
-
-        gchar     *current_search;
 } DhAssistantPriv;
 
 static void dh_assistant_class_init (DhAssistantClass *klass);
@@ -58,22 +56,8 @@
 }
 
 static void
-assistant_finalize (GObject *object)
-{
-        DhAssistantPriv *priv = GET_PRIVATE (object);
-
-        g_free (priv->current_search);
-
-        G_OBJECT_CLASS (dh_assistant_parent_class)->finalize (object);
-}
-
-static void
 dh_assistant_class_init (DhAssistantClass *klass)
 {
-        GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-        object_class->finalize = assistant_finalize;
-
         g_type_class_add_private (klass, sizeof (DhAssistantPriv));
 }
 
@@ -132,77 +116,16 @@
                      const gchar *str)
 {
         DhAssistantPriv *priv;
-        GList           *keywords, *l;
-        const gchar     *name;
-        DhLink          *link;
-        DhLink          *exact_link;
-        DhLink          *prefix_link;
 
         g_return_val_if_fail (DH_IS_ASSISTANT (assistant), FALSE);
         g_return_val_if_fail (str != NULL, FALSE);
 
         priv = GET_PRIVATE (assistant);
 
-        /* Filter out very short strings. */
-        if (strlen (str) < 4) {
-                return FALSE;
-        }
-
-        if (priv->current_search && strcmp (priv->current_search, str) == 0) {
-                return FALSE;
-        }
-        g_free (priv->current_search);
-        priv->current_search = g_strdup (str);
-
-        keywords = dh_base_get_keywords (dh_assistant_view_get_base (DH_ASSISTANT_VIEW (priv->web_view)));
-
-        prefix_link = NULL;
-        exact_link = NULL;
-        for (l = keywords; l && exact_link == NULL; l = l->next) {
-                DhLinkType type;
-
-                link = l->data;
-
-                type = dh_link_get_link_type (link);
-
-                if (type == DH_LINK_TYPE_BOOK ||
-                    type == DH_LINK_TYPE_PAGE ||
-                    type == DH_LINK_TYPE_KEYWORD) {
-                        continue;
-                }
-
-                name = dh_link_get_name (link);
-                if (strcmp (name, str) == 0) {
-                        exact_link = link;
-                }
-                else if (g_str_has_prefix (name, str)) {
-                        /* Prefer shorter prefix matches. */
-                        if (!prefix_link) {
-                                prefix_link = link;
-                        }
-                        else if (strlen (dh_link_get_name (prefix_link)) > strlen (name)) {
-                                prefix_link = link;
-                        }
-                }
-        }
-
-        if (exact_link) {
-                /*g_print ("exact hit: '%s' '%s'\n", exact_link->name, str);*/
-                dh_assistant_view_set_link (DH_ASSISTANT_VIEW (GET_PRIVATE (assistant)->web_view),
-                                            exact_link);
-        }
-        else if (prefix_link) {
-                /*g_print ("prefix hit: '%s' '%s'\n", prefix_link->name, str);*/
-                dh_assistant_view_set_link (DH_ASSISTANT_VIEW (GET_PRIVATE (assistant)->web_view),
-                                            prefix_link);
+        if (dh_assistant_view_search (DH_ASSISTANT_VIEW (priv->web_view), str)) {
+                gtk_widget_show (GTK_WIDGET (assistant));
+                return TRUE;
         } else {
-                /*g_print ("no hit\n");*/
-                /*dh_assistant_view_set_link (DH_ASSISTANT_VIEW (GET_PRIVATE (assistant)->web_view),
-                                            NULL);*/
                 return FALSE;
         }
-
-        gtk_widget_show (GTK_WIDGET (assistant));
-
-        return TRUE;
 }



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