1 /* a text button in a workspace
2  */
3 
4 /*
5 
6     Copyright (C) 1991-2003 The National Gallery
7 
8     This program is free software; you can redistribute it and/or modify
9     it under the terms of the GNU General Public License as published by
10     the Free Software Foundation; either version 2 of the License, or
11     (at your option) any later version.
12 
13     This program is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU General Public License for more details.
17 
18     You should have received a copy of the GNU General Public License along
19     with this program; if not, write to the Free Software Foundation, Inc.,
20     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
21 
22  */
23 
24 /*
25 
26     These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
27 
28  */
29 
30 #define TYPE_ITEXT (itext_get_type())
31 #define ITEXT( obj ) \
32 	(G_TYPE_CHECK_INSTANCE_CAST( (obj), TYPE_ITEXT, iText ))
33 #define ITEXT_CLASS( klass ) \
34 	(G_TYPE_CHECK_CLASS_CAST( (klass), TYPE_ITEXT, iTextClass))
35 #define IS_ITEXT( obj ) \
36 	(G_TYPE_CHECK_INSTANCE_TYPE( (obj), TYPE_ITEXT ))
37 #define IS_ITEXT_CLASS( klass ) \
38 	(G_TYPE_CHECK_CLASS_TYPE( (klass), TYPE_ITEXT ))
39 #define ITEXT_GET_CLASS( obj ) \
40 	(G_TYPE_INSTANCE_GET_CLASS( (obj), TYPE_ITEXT, iTextClass ))
41 
42 struct _iText {
43 	Heapmodel parent_class;
44 
45 	VipsBuf value;			/* The value displayed as a [char] */
46 	char *formula;			/* The formula we edit */
47 	char *formula_default;		/* Formula we inherit */
48 	VipsBuf decompile;		/* The value decompiled to a [char] */
49 
50 	/* TRUE if the formula has been entered by the user and should be
51 	 * saved.
52 	 *
53 	 * Can't use classmodel edited, as text must inherit from heapmodel.
54 	 * Some duplication of code ... see itext_clear_edited()
55 	 */
56 	gboolean edited;
57 };
58 
59 typedef struct _iTextClass {
60 	HeapmodelClass parent_class;
61 
62 	/* My methods.
63 	 */
64 } iTextClass;
65 
66 GType itext_get_type( void );
67 iText *itext_new( Rhs *rhs );
68 
69 gboolean itext_value( Reduce *rc, VipsBuf *buf, PElement *root );
70 void itext_value_ev( Reduce *rc, VipsBuf *buf, PElement *root );
71 gboolean itext_make_value_string( Expr *expr, VipsBuf *buf );
72 
73 void itext_set_edited( iText *text, gboolean edited );
74 gboolean itext_set_formula( iText *text, const char *formula );
75