diff options
author | nobody <nobody@localhost> | 2001-02-04 12:10:39 +0800 |
---|---|---|
committer | nobody <nobody@localhost> | 2001-02-04 12:10:39 +0800 |
commit | cdc0ace9247af43ff6ad2f46d54029ff1e3dbb7e (patch) | |
tree | 0a5b66655b7f9f6e527155bcabd2f7470e429a8b /widgets/text/e-text-model-uri.c | |
parent | 1b96583c0c6142969e366409bdfd371f078fc683 (diff) | |
download | gsoc2013-evolution-FEDERICO_FOCUS.tar gsoc2013-evolution-FEDERICO_FOCUS.tar.gz gsoc2013-evolution-FEDERICO_FOCUS.tar.bz2 gsoc2013-evolution-FEDERICO_FOCUS.tar.lz gsoc2013-evolution-FEDERICO_FOCUS.tar.xz gsoc2013-evolution-FEDERICO_FOCUS.tar.zst gsoc2013-evolution-FEDERICO_FOCUS.zip |
This commit was manufactured by cvs2svn to create tagFEDERICO_FOCUS
'FEDERICO_FOCUS'.
svn path=/tags/FEDERICO_FOCUS/; revision=7955
Diffstat (limited to 'widgets/text/e-text-model-uri.c')
-rw-r--r-- | widgets/text/e-text-model-uri.c | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/widgets/text/e-text-model-uri.c b/widgets/text/e-text-model-uri.c deleted file mode 100644 index bd8dbb18e8..0000000000 --- a/widgets/text/e-text-model-uri.c +++ /dev/null @@ -1,174 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - -/* ETextModelURI - A Text Model w/ clickable URIs - * Copyright (C) 2001 Ximian, Inc. - * - * Author: Jon Trowbridge <trow@gnu.org> - * - */ - -#include <config.h> -#include <ctype.h> -#include "e-text-model-uri.h" - -static void e_text_model_uri_class_init (ETextModelURIClass *class); -static void e_text_model_uri_init (ETextModelURI *model); -static void e_text_model_uri_destroy (GtkObject *object); - -static void objectify_uris (ETextModelURI *model); - -static void e_text_model_uri_set_text (ETextModel *model, gchar *text); -static const gchar *e_text_model_uri_get_nth_object (ETextModel *model, gint); -static void e_text_model_uri_activate_nth_object (ETextModel *model, gint); - -static GtkObject *parent_class; - -GtkType -e_text_model_uri_get_type (void) -{ - static GtkType model_uri_type = 0; - - if (!model_uri_type) { - GtkTypeInfo model_uri_info = { - "ETextModelURI", - sizeof (ETextModelURI), - sizeof (ETextModelURIClass), - (GtkClassInitFunc) e_text_model_uri_class_init, - (GtkObjectInitFunc) e_text_model_uri_init, - NULL, /* reserved_1 */ - NULL, /* reserved_2 */ - (GtkClassInitFunc) NULL - }; - - model_uri_type = gtk_type_unique (e_text_model_get_type (), &model_uri_info); - } - - return model_uri_type; -} - -static void -e_text_model_uri_class_init (ETextModelURIClass *klass) -{ - GtkObjectClass *object_class; - ETextModelClass *model_class; - - object_class = (GtkObjectClass *) klass; - model_class = E_TEXT_MODEL_CLASS (klass); - - parent_class = gtk_type_class (e_text_model_get_type ()); - - object_class->destroy = e_text_model_uri_destroy; - - model_class->set_text = e_text_model_uri_set_text; - model_class->get_nth_obj = e_text_model_uri_get_nth_object; - model_class->activate_nth_obj = e_text_model_uri_activate_nth_object; -} - -static void -e_text_model_uri_init (ETextModelURI *model) -{ - -} - -static void -e_text_model_uri_destroy (GtkObject *object) -{ - if (GTK_OBJECT_CLASS (parent_class)->destroy) - (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); - -} - -static gchar * -extract_uri (gchar **in_str) -{ - gchar *s = *in_str; - if (strncmp (s, "http://", 7) == 0) { - gint periods=0; - gchar *uri; - - s += 7; - - while (*s && (isalnum((gint) *s) || (*s == '.' && periods < 2))) { - if (*s == '.') - ++periods; - ++s; - } - - uri = g_strndup (*in_str, s - *in_str); - *in_str = s; - return uri; - - } else { - *in_str = s+1; - return NULL; - } -} - -static void -objectify_uris (ETextModelURI *model_uri) -{ - ETextModel *model = E_TEXT_MODEL (model_uri); - gchar *new_text; - gchar *src, *dest; - GList *uris = NULL; - - if (model->text == NULL) - return; - - new_text = g_new0 (gchar, strlen (model->text)+1); - - src = model->text; - dest = new_text; - - while (*src) { - gchar *uri_str; - gchar *next = src; - if ( (uri_str = extract_uri (&next)) ) { - uris = g_list_append (uris, uri_str); - *dest = '\1'; - } else { - *dest = *src; - } - ++dest; - src = next; - } - - g_free (model->text); - model->text = new_text; - - /* Leaking old list */ - model_uri->uris = uris; -} - -static void -e_text_model_uri_set_text (ETextModel *model, gchar *text) -{ - if (E_TEXT_MODEL_CLASS(parent_class)->set_text) - E_TEXT_MODEL_CLASS(parent_class)->set_text (model, text); - - objectify_uris (E_TEXT_MODEL_URI (model)); -} - -static const gchar * -e_text_model_uri_get_nth_object (ETextModel *model, gint i) -{ - return (const gchar *) g_list_nth_data (E_TEXT_MODEL_URI (model)->uris, i); -} - -static void -e_text_model_uri_activate_nth_object (ETextModel *model, gint i) -{ - const gchar *obj_str; - - obj_str = e_text_model_get_nth_object (model, i); - gnome_url_show (obj_str); -} - -ETextModel * -e_text_model_uri_new (void) -{ - return E_TEXT_MODEL (gtk_type_new (e_text_model_uri_get_type ())); -} - - -/* $Id$ */ |