2
$Id: gtktext.pp,v 1.3 2003/08/06 07:28:21 michael Exp $
5
{****************************************************************************
7
****************************************************************************}
9
{$ifdef read_interface}
12
PGtkTextFont = pointer;
14
PGtkPropertyMark = ^TGtkPropertyMark;
15
TGtkPropertyMark = record
23
editable : TGtkEditable;
24
text_area : PGdkWindow;
25
hadj : PGtkAdjustment;
26
vadj : PGtkAdjustment;
28
line_wrap_bitmap : PGdkPixmap;
29
line_arrow_bitmap : PGdkPixmap;
32
0 : ( wc : PGdkWChar );
39
line_start_cache : PGList;
40
first_line_start_index : guint;
41
first_cut_pixels : guint;
42
first_onscreen_hor_pixel : guint;
43
first_onscreen_ver_pixel : guint;
44
flag0 : {$ifdef win32}longint{$else}word{$endif};
46
text_properties : PGList;
47
text_properties_end : PGList;
48
point : TGtkPropertyMark;
49
scratch_buffer : record
51
0 : ( wc : PGdkWChar );
54
scratch_buffer_len : guint;
55
last_ver_value : gint;
58
cursor_mark : TGtkPropertyMark;
59
cursor_char : TGdkWChar;
60
cursor_char_offset : gchar;
61
cursor_virtual_x : gint;
62
cursor_drawn_level : gint;
63
current_line : PGList;
65
default_tab_width : gint;
66
current_font : PGtkTextFont;
73
bm_TGtkText_line_wrap = $1;
74
bp_TGtkText_line_wrap = 0;
75
bm_TGtkText_word_wrap = $2;
76
bp_TGtkText_word_wrap = 1;
77
bm_TGtkText_use_wchar = $4;
78
bp_TGtkText_use_wchar = 2;
79
function line_wrap(var a : TGtkText) : guint;
80
procedure set_line_wrap(var a : TGtkText; __line_wrap : guint);
81
function word_wrap(var a : TGtkText) : guint;
82
procedure set_word_wrap(var a : TGtkText; __word_wrap : guint);
83
function use_wchar(var a : TGtkText) : guint;
84
procedure set_use_wchar(var a : TGtkText; __use_wchar : guint);
87
PGtkTextClass = ^TGtkTextClass;
88
TGtkTextClass = record
89
parent_class : TGtkEditableClass;
90
set_scroll_adjustments : procedure (text:PGtkText; hadjustment:PGtkAdjustment; vadjustment:PGtkAdjustment);cdecl;
95
GTK_TEXT_CLASS=PGtkTextClass;
97
function GTK_TEXT_INDEX(t:PGtkText; index:longint):char;
99
function GTK_TEXT_TYPE:TGtkType;cdecl;external gtkdll name 'gtk_text_get_type';
100
function GTK_IS_TEXT(obj:pointer):boolean;
101
function GTK_IS_TEXT_CLASS(klass:pointer):boolean;
103
function gtk_text_get_type:TGtkType;cdecl;external gtkdll name 'gtk_text_get_type';
104
function gtk_text_new(hadj:PGtkAdjustment; vadj:PGtkAdjustment):PGtkWidget;cdecl;external gtkdll name 'gtk_text_new';
105
procedure gtk_text_set_editable(text:PGtkText; editable:gboolean);cdecl;external gtkdll name 'gtk_text_set_editable';
106
procedure gtk_text_set_word_wrap(text:PGtkText; word_wrap:gint);cdecl;external gtkdll name 'gtk_text_set_word_wrap';
107
procedure gtk_text_set_line_wrap(text:PGtkText; line_wrap:gint);cdecl;external gtkdll name 'gtk_text_set_line_wrap';
108
procedure gtk_text_set_adjustments(text:PGtkText; hadj:PGtkAdjustment; vadj:PGtkAdjustment);cdecl;external gtkdll name 'gtk_text_set_adjustments';
109
procedure gtk_text_set_point(text:PGtkText; index:guint);cdecl;external gtkdll name 'gtk_text_set_point';
110
function gtk_text_get_point(text:PGtkText):guint;cdecl;external gtkdll name 'gtk_text_get_point';
111
function gtk_text_get_length(text:PGtkText):guint;cdecl;external gtkdll name 'gtk_text_get_length';
112
procedure gtk_text_freeze(text:PGtkText);cdecl;external gtkdll name 'gtk_text_freeze';
113
procedure gtk_text_thaw(text:PGtkText);cdecl;external gtkdll name 'gtk_text_thaw';
114
procedure gtk_text_insert(text:PGtkText; font:PGdkFont; fore:PGdkColor; back:PGdkColor; chars:pchar; length:gint);cdecl;external gtkdll name 'gtk_text_insert';
115
function gtk_text_backward_delete(text:PGtkText; nchars:guint):gint;cdecl;external gtkdll name 'gtk_text_backward_delete';
116
function gtk_text_forward_delete(text:PGtkText; nchars:guint):gint;cdecl;external gtkdll name 'gtk_text_forward_delete';
118
{$endif read_interface}
121
{****************************************************************************
123
****************************************************************************}
125
{$ifdef read_implementation}
127
function line_wrap(var a : TGtkText) : guint;
129
line_wrap:=(a.flag0 and bm_TGtkText_line_wrap) shr bp_TGtkText_line_wrap;
132
procedure set_line_wrap(var a : TGtkText; __line_wrap : guint);
134
a.flag0:=a.flag0 or ((__line_wrap shl bp_TGtkText_line_wrap) and bm_TGtkText_line_wrap);
137
function word_wrap(var a : TGtkText) : guint;
139
word_wrap:=(a.flag0 and bm_TGtkText_word_wrap) shr bp_TGtkText_word_wrap;
142
procedure set_word_wrap(var a : TGtkText; __word_wrap : guint);
144
a.flag0:=a.flag0 or ((__word_wrap shl bp_TGtkText_word_wrap) and bm_TGtkText_word_wrap);
147
function use_wchar(var a : TGtkText) : guint;
149
use_wchar:=(a.flag0 and bm_TGtkText_use_wchar) shr bp_TGtkText_use_wchar;
152
procedure set_use_wchar(var a : TGtkText; __use_wchar : guint);
154
a.flag0:=a.flag0 or ((__use_wchar shl bp_TGtkText_use_wchar) and bm_TGtkText_use_wchar);
157
function GTK_TEXT_INDEX(t:PGtkText; index:longint):char;
159
if use_wchar(t^)<>0 then
161
if index<t^.gap_position then
162
GTK_TEXT_INDEX:=char(TGdkWchar(t^.text.wc[index]))
164
GTK_TEXT_INDEX:=char(TGdkWchar(t^.text.wc[index+t^.gap_position]));
168
if index<t^.gap_position then
169
GTK_TEXT_INDEX:=t^.text.ch[index]
171
GTK_TEXT_INDEX:=t^.text.ch[index+t^.gap_position];
175
function GTK_IS_TEXT(obj:pointer):boolean;
177
GTK_IS_TEXT:=(obj<>nil) and GTK_IS_TEXT_CLASS(PGtkTypeObject(obj)^.klass);
180
function GTK_IS_TEXT_CLASS(klass:pointer):boolean;
182
GTK_IS_TEXT_CLASS:=(klass<>nil) and (PGtkTypeClass(klass)^.thetype=GTK_TEXT_TYPE);
185
{$endif read_implementation}
190
Revision 1.3 2003/08/06 07:28:21 michael
191
+ Patch from Marc Weustinck to fix Win32 version
193
Revision 1.2 2002/09/07 15:43:00 peter
194
* old logs removed and tabs fixed
196
Revision 1.1 2002/01/29 17:55:13 peter
197
* splitted to base and extra