Files
evolution/widgets/text/e-text-model-uri.h
Jon Trowbridge 8c1c827496 Added; a new test program that demonstrates objects in ETexts.
2001-01-26  Jon Trowbridge  <trow@gnu.org>

        * gal/e-text/e-text-model-test.c: Added; a new test program that
        demonstrates objects in ETexts.

        * gal/e-text/e-text-model-uri.c: Added; a text model that converts
        URIs in the text into objects that are passed off to the GNOME URI
        handler when activated.  This is actually still extremely broken;
        I got it just working enough to test out my EText changes.

        * gal/e-text/e-text.c: A whole lot of changes, designed to make
        ETextModel objects render properly.  The basic idea of the changes
        is pretty simple, though.
        (text_width_with_objects): First of all, this function is an
        alternative to e_font_utf8_text_width that takes into the account
        the embedded \1s in the text string and properly accounts for the
        width of the object strings.
        (unicode_strlen_with_objects): Next, this function finds the
        proper strlen of a string, expanding the \1s.
        (text_draw_with_objects): Finally, this is just a replacement for
        e_font_draw_utf8_text that does the right thing for objects.  I've
        gone through all of e-text.c and replace calls by those original
        functions with my new object-enabled alternatives.
        (split_into_lines): Some tweaking to get line breaking to work
        properly.  Made \1 into a "break character", so that we can break
        lines between multiple adjacent objects.  (Which seemed like the
        right thing to do, but there may be cases where that is
        undesireable.)
        (_get_position_from_xy): Fixed to properly handle embedded
        objects, and to get the right selection semantics for objects.
        (Or at least semantics that feel right to me.)  Also fixed a bug
        that caused selection, etc. to not work properly if the text was
        anchored anywhere other than with GTK_ANCHOR_NORTH*.
        (_get_position): Hacked to cause objects to activate when they are
        double-clicked.  There is probably a better way to do this.

        * gal/e-text/e-text-model.c (e_text_model_real_object_count):
        Provide a default implementation of an object counter.  Derived
        classes might want to override this for efficiency reasons.
        (e_text_model_strdup_expanded_text): Added.  Allocates and returns
        a string contains the model's text with the objects "expanded"
        within.

        * gal/e-text/e-text-model.h: Added obj_count, get_nth_obj, and
        activate_nth_obj virtual methods to ETextModelClass.

svn path=/trunk/; revision=7842
2001-01-26 22:10:51 +00:00

42 lines
1.1 KiB
C

/* -*- 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>
*
*/
#ifndef E_TEXT_MODEL_URI_H
#define E_TEXT_MODEL_URI_H
#include <gnome.h>
#include <gal/e-text/e-text-model.h>
BEGIN_GNOME_DECLS
#define E_TYPE_TEXT_MODEL_URI (e_text_model_get_type ())
#define E_TEXT_MODEL_URI(obj) (GTK_CHECK_CAST ((obj), E_TYPE_TEXT_MODEL_URI, ETextModelURI))
#define E_TEXT_MODEL_URI_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), E_TYPE_TEXT_MODEL_URI, ETextModelURIClass))
#define E_IS_TEXT_MODEL_URI(obj) (GTK_CHECK_TYPE ((obj), E_TYPE_TEXT_MODEL_URI))
#define E_IS_TEXT_MODEL_URI_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), E_TYPE_TEXT_MODEL_URI))
typedef struct _ETextModelURI ETextModelURI;
typedef struct _ETextModelURIClass ETextModelURIClass;
struct _ETextModelURI {
ETextModel item;
GList *uris;
};
struct _ETextModelURIClass {
ETextModelClass parent_class;
};
GtkType e_text_model_uri_get_type (void);
ETextModel *e_text_model_uri_new (void);
END_GNOME_DECLS
#endif