devhelp r1176 - in trunk: . src
- From: herzi svn gnome org
- To: svn-commits-list gnome org
- Subject: devhelp r1176 - in trunk: . src
- Date: Thu, 9 Oct 2008 17:43:08 +0000 (UTC)
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]