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