aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/text/e-text-model.h
diff options
context:
space:
mode:
authorJon Trowbridge <trow@gnu.org>2001-01-27 06:10:51 +0800
committerJon Trowbridge <trow@src.gnome.org>2001-01-27 06:10:51 +0800
commit8c1c8274963543c45ba3717d1156d9edaa78cdc2 (patch)
treeb9e8c027f4a578657f240bcb09fd132b36cfc7ee /widgets/text/e-text-model.h
parent19791220710c9d632ac5836a3a1163bc00675a9d (diff)
downloadgsoc2013-evolution-8c1c8274963543c45ba3717d1156d9edaa78cdc2.tar
gsoc2013-evolution-8c1c8274963543c45ba3717d1156d9edaa78cdc2.tar.gz
gsoc2013-evolution-8c1c8274963543c45ba3717d1156d9edaa78cdc2.tar.bz2
gsoc2013-evolution-8c1c8274963543c45ba3717d1156d9edaa78cdc2.tar.lz
gsoc2013-evolution-8c1c8274963543c45ba3717d1156d9edaa78cdc2.tar.xz
gsoc2013-evolution-8c1c8274963543c45ba3717d1156d9edaa78cdc2.tar.zst
gsoc2013-evolution-8c1c8274963543c45ba3717d1156d9edaa78cdc2.zip
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
Diffstat (limited to 'widgets/text/e-text-model.h')
-rw-r--r--widgets/text/e-text-model.h19
1 files changed, 13 insertions, 6 deletions
diff --git a/widgets/text/e-text-model.h b/widgets/text/e-text-model.h
index 5b15ccb117..7006b24eca 100644
--- a/widgets/text/e-text-model.h
+++ b/widgets/text/e-text-model.h
@@ -37,7 +37,6 @@ struct _ETextModel {
GtkObject item;
char *text; /* Text to display */
- int length;
};
struct _ETextModelClass {
@@ -47,11 +46,14 @@ struct _ETextModelClass {
void (* changed) (ETextModel *model);
/* Virtual methods */
- char *(* get_text) (ETextModel *model);
- void (* set_text) (ETextModel *model, gchar *text);
- void (* insert) (ETextModel *model, gint position, gchar *text);
- void (* insert_length) (ETextModel *model, gint position, gchar *text, gint length);
- void (* delete) (ETextModel *model, gint position, gint length);
+ char *(* get_text) (ETextModel *model);
+ void (* set_text) (ETextModel *model, gchar *text);
+ void (* insert) (ETextModel *model, gint position, gchar *text);
+ void (* insert_length) (ETextModel *model, gint position, gchar *text, gint length);
+ void (* delete) (ETextModel *model, gint position, gint length);
+ gint (* obj_count) (ETextModel *model);
+ const gchar *(* get_nth_obj) (ETextModel *model, gint n);
+ void (* activate_nth_obj) (ETextModel *model, gint n);
};
@@ -66,6 +68,11 @@ void e_text_model_insert(ETextModel *model, gint position, gchar *text);
void e_text_model_insert_length(ETextModel *model, gint position, gchar *text, gint length);
void e_text_model_delete(ETextModel *model, gint position, gint length);
+gint e_text_model_object_count(ETextModel *model);
+const gchar *e_text_model_get_nth_object(ETextModel *model, gint n);
+void e_text_model_activate_nth_object(ETextModel *model, gint n);
+
+gchar *e_text_model_strdup_expanded_text(ETextModel *model);
END_GNOME_DECLS