2
$Id: libzvt.pp,v 1.1 2002/10/17 14:15:50 peter Exp $
4
libzvt - Zed's Virtual Terminal
5
Copyright (C) 1998 Michael Zucchi
7
This library is free software; you can redistribute it and/or
8
modify it under the terms of the GNU Library General Public
9
License as published by the Free Software Foundation; either
10
version 2 of the License, or (at your option) any later version.
12
This library is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
Library General Public License for more details.
17
You should have received a copy of the GNU Library General Public
18
License along with this library; if not, write to the
19
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20
Boston, MA 02111-1307, USA.
22
**********************************************************************}
32
Uses glib, gdk, gtk, gdk_imlib;
39
PSmallInt = ^SmallInt;
48
{$define read_interface}
49
{$undef read_implementation}
56
ZVT_TERM_PIXMAP_SUPPORT = $01;
57
ZVT_TERM_EMBOLDEN_SUPPORT = $02;
58
ZVT_TERM_TRANSPARENCY_SUPPORT = $04;
59
ZVT_TERM_PIXMAPSCROLL_SUPPORT = $08;
60
ZVT_TERM_MATCH_SUPPORT = $10;
66
adjustment : PGtkAdjustment;
67
shadow_type : TGtkShadowType;
68
term_window : PGdkWindow;
75
set_grid_size_pending : gboolean;
78
cursor_bar : PGdkCursor;
79
cursor_dot : PGdkCursor;
80
cursor_current : PGdkCursor;
88
color_ctx : PGdkColorContext;
89
colors : array[0..17] of gulong;
91
pixmap_filename : Pchar;
104
bm_TZvtTerm_cursor_on = $1;
105
bp_TZvtTerm_cursor_on = 0;
106
bm_TZvtTerm_cursor_filled = $2;
107
bp_TZvtTerm_cursor_filled = 1;
108
bm_TZvtTerm_cursor_blink_state = $4;
109
bp_TZvtTerm_cursor_blink_state = 2;
110
bm_TZvtTerm_blink_enabled = $8;
111
bp_TZvtTerm_blink_enabled = 3;
112
bm_TZvtTerm_in_expose = $10;
113
bp_TZvtTerm_in_expose = 4;
114
bm_TZvtTerm_scroll_on_keystroke = $20;
115
bp_TZvtTerm_scroll_on_keystroke = 5;
116
bm_TZvtTerm_scroll_on_output = $40;
117
bp_TZvtTerm_scroll_on_output = 6;
118
bm_TZvtTerm_transparent = $80;
119
bp_TZvtTerm_transparent = 7;
120
bm_TZvtTerm_shaded = $100;
121
bp_TZvtTerm_shaded = 8;
122
bm_TZvtTerm_swap_del_key = $200;
123
bp_TZvtTerm_swap_del_key = 9;
124
bm_TZvtTerm_del_is_del = $400;
125
bp_TZvtTerm_del_is_del = 10;
127
function cursor_on(var a : TZvtTerm) : dword;
128
procedure set_cursor_on(var a : TZvtTerm; __cursor_on : dword);
129
function cursor_filled(var a : TZvtTerm) : dword;
130
procedure set_cursor_filled(var a : TZvtTerm; __cursor_filled : dword);
131
function cursor_blink_state(var a : TZvtTerm) : dword;
132
procedure set_cursor_blink_state(var a : TZvtTerm; __cursor_blink_state : dword);
133
function blink_enabled(var a : TZvtTerm) : dword;
134
procedure set_blink_enabled(var a : TZvtTerm; __blink_enabled : dword);
135
function in_expose(var a : TZvtTerm) : dword;
136
procedure set_in_expose(var a : TZvtTerm; __in_expose : dword);
137
function scroll_on_keystroke(var a : TZvtTerm) : dword;
138
procedure set_scroll_on_keystroke(var a : TZvtTerm; __scroll_on_keystroke : dword);
139
function scroll_on_output(var a : TZvtTerm) : dword;
140
procedure set_scroll_on_output(var a : TZvtTerm; __scroll_on_output : dword);
141
function transparent(var a : TZvtTerm) : dword;
142
procedure set_transparent(var a : TZvtTerm; __transparent : dword);
143
function shaded(var a : TZvtTerm) : dword;
144
procedure set_shaded(var a : TZvtTerm; __shaded : dword);
145
function swap_del_key(var a : TZvtTerm) : dword;
146
procedure set_swap_del_key(var a : TZvtTerm; __swap_del_key : dword);
147
function del_is_del(var a : TZvtTerm) : dword;
148
procedure set_del_is_del(var a : TZvtTerm; __del_is_del : dword);
151
PZvtTermClass = ^TZvtTermClass;
152
TZvtTermClass = record
153
parent_class : TGtkWidgetClass;
154
child_died : procedure (term:PZvtTerm);cdecl;
155
title_changed : procedure (term:PZvtTerm; thetype:TVTTITLE_TYPE; newtitle:Pchar);
156
match_clicked : procedure (term:PZvtTerm; event:PGdkEventButton; match:Pchar; data:pointer);
158
ZVT_TERM_CLASS = PZvtTermClass;
160
Pzvtfont_t = ^Tzvtfont_t;
161
Tzvtfont_t = (ZVT_FONT_1BYTE := 0,ZVT_FONT_2BYTE,ZVT_FONT_FONTSET);
164
ZVT_TERM_DO_UTMP_LOG = 1;
165
ZVT_TERM_DO_WTMP_LOG = 2;
166
ZVT_TERM_DO_LASTLOG = 4;
167
ZVT_BACKGROUND_SHADED = $01;
168
ZVT_BACKGROUND_SCROLL = $02;
170
function ZVT_TYPE_TERM : TGTKType;
171
function ZVT_IS_TERM(obj : Pointer) : Boolean;
172
function ZVT_IS_TERM_CLASS(klass : Pointer) : Boolean;
175
function ZVT_GTK_TOPWGT(t : PGTKWidget) : PGTKWidget;
176
function ZVT_GTK_WINDOW(t : PGTKWidget) : PGTKWindow;
177
function ZVT_GDK_WINDOW(t : PGTKWidget) : PGDKWindow;
178
function ZVT_GDK_TOPWIN(t : PGTKWidget) : PGDKWindow;
180
function zvt_term_new:PGtkWidget;cdecl;external libzvtdll name 'zvt_term_new';
181
function zvt_term_new_with_size(cols:longint; rows:longint):PGtkWidget;cdecl;external libzvtdll name 'zvt_term_new_with_size';
182
procedure zvt_term_reset(term:PZvtTerm; hard:longint);cdecl;external libzvtdll name 'zvt_term_reset';
183
procedure zvt_term_feed(term:PZvtTerm; thetext:Pchar; len:longint);cdecl;external libzvtdll name 'zvt_term_feed';
184
function zvt_term_writechild(term:PZvtTerm; data:Pchar; len:longint):longint;cdecl;external libzvtdll name 'zvt_term_writechild';
185
function zvt_term_forkpty(term:PZvtTerm; do_uwtmp_log:longint):longint;cdecl;external libzvtdll name 'zvt_term_forkpty';
186
function zvt_term_closepty(term:PZvtTerm):longint;cdecl;external libzvtdll name 'zvt_term_closepty';
187
function zvt_term_killchild(term:PZvtTerm; signal:longint):longint;cdecl;external libzvtdll name 'zvt_term_killchild';
188
procedure zvt_term_bell(zvt_term:pointer);cdecl;external libzvtdll name 'zvt_term_bell';
189
function zvt_term_get_type:guint;cdecl;external libzvtdll name 'zvt_term_get_type';
190
procedure zvt_term_set_scrollback(term:PZvtTerm; lines:longint);cdecl;external libzvtdll name 'zvt_term_set_scrollback';
191
function zvt_term_get_buffer(term:PZvtTerm; len:Plongint; thetype:longint; sx:longint; sy:longint;
192
ex:longint; ey:longint):Pchar;cdecl;external libzvtdll name 'zvt_term_get_buffer';
193
procedure zvt_term_set_font_name(term:PZvtTerm; thename:Pchar);cdecl;external libzvtdll name 'zvt_term_set_font_name';
194
procedure zvt_term_set_fonts(term:PZvtTerm; font:PGdkFont; font_bold:PGdkFont);cdecl;external libzvtdll name 'zvt_term_set_fonts';
195
procedure zvt_term_hide_pointer(term:PZvtTerm);cdecl;external libzvtdll name 'zvt_term_hide_pointer';
196
procedure zvt_term_show_pointer(term:PZvtTerm);cdecl;external libzvtdll name 'zvt_term_show_pointer';
197
procedure zvt_term_set_bell(term:PZvtTerm; state:gboolean);cdecl;external libzvtdll name 'zvt_term_set_bell';
198
function zvt_term_get_bell(term:PZvtTerm):gboolean;cdecl;external libzvtdll name 'zvt_term_get_bell';
199
procedure zvt_term_set_blink(term:PZvtTerm; state:gboolean);cdecl;external libzvtdll name 'zvt_term_set_blink';
200
procedure zvt_term_set_scroll_on_keystroke(term:PZvtTerm; state:gboolean);cdecl;external libzvtdll name 'zvt_term_set_scroll_on_keystroke';
201
procedure zvt_term_set_scroll_on_output(term:PZvtTerm; state:gboolean);cdecl;external libzvtdll name 'zvt_term_set_scroll_on_output';
202
procedure zvt_term_set_color_scheme(term:PZvtTerm; red:Pgushort; grn:Pgushort; blu:Pgushort);cdecl;external libzvtdll name 'zvt_term_set_color_scheme';
203
procedure zvt_term_set_default_color_scheme(term:PZvtTerm);cdecl;external libzvtdll name 'zvt_term_set_default_color_scheme';
204
procedure zvt_term_set_del_key_swap(term:PZvtTerm; state:longint);cdecl;external libzvtdll name 'zvt_term_set_del_key_swap';
205
procedure zvt_term_set_del_is_del(term:PZvtTerm; state:longint);cdecl;external libzvtdll name 'zvt_term_set_del_is_del';
206
procedure zvt_term_set_wordclass(term:PZvtTerm; klass:Pbyte);cdecl;external libzvtdll name 'zvt_term_set_wordclass';
207
function zvt_term_match_add(term:PZvtTerm; regex:Pchar; highlight_mask:uint32; data:pointer):longint;cdecl;external libzvtdll name 'zvt_term_match_add';
208
procedure zvt_term_match_clear(term:PZvtTerm; regex:Pchar);cdecl;external libzvtdll name 'zvt_term_match_clear';
209
function zvt_term_match_check(term:PZvtTerm; x:longint; y:longint; user_data_ptr:Ppointer):Pchar;cdecl;external libzvtdll name 'zvt_term_match_check';
210
procedure zvt_term_set_background(terminal:PZvtTerm; pixmap_file:Pchar; transparent:gboolean; flags:longint);cdecl;external libzvtdll name 'zvt_term_set_background';
211
procedure zvt_term_set_shadow_type(term:PZvtTerm; thetype:TGtkShadowType);cdecl;external libzvtdll name 'zvt_term_set_shadow_type';
212
procedure zvt_term_set_size(term:PZvtTerm; width:guint; height:guint);cdecl;external libzvtdll name 'zvt_term_set_size';
213
procedure zvt_term_set_open_im(term:PZvtTerm; state:gboolean);cdecl;external libzvtdll name 'zvt_term_set_open_im';
214
function zvt_term_get_capabilities(term:PZvtTerm):guint32;cdecl;external libzvtdll name 'zvt_term_get_capabilities';
218
{$define read_implementation}
219
{$undef read_interface}
225
function ZVT_TYPE_TERM : TGTKType;
227
ZVT_TYPE_TERM:=zvt_term_get_type;
230
function ZVT_IS_TERM(obj : Pointer) : Boolean;
232
ZVT_IS_TERM:=(obj<>nil) and ZVT_IS_TERM_CLASS(PGtkTypeObject(obj)^.klass);
235
function ZVT_IS_TERM_CLASS(klass : Pointer) : Boolean;
237
ZVT_IS_TERM_CLASS:=(klass<>nil) and (PGtkTypeClass(klass)^.thetype=ZVT_TYPE_TERM);
240
function ZVT_GTK_TOPWGT(t : PGTKWidget) : PGTKWidget;
242
ZVT_GTK_TOPWGT := gtk_widget_get_toplevel(t);
245
function ZVT_GTK_WINDOW(t : PGTKWidget) : PGTKWindow;
247
ZVT_GTK_WINDOW := GTK_WINDOW(ZVT_GTK_TOPWGT(t));
250
function ZVT_GDK_WINDOW(t : PGTKWidget) : PGDKWindow;
252
ZVT_GDK_WINDOW := t^.window;
255
function ZVT_GDK_TOPWIN(t : PGTKWidget) : PGDKWindow;
257
ZVT_GDK_TOPWIN := ZVT_GTK_TOPWGT(t)^.window;
260
function cursor_on(var a : TZvtTerm) : dword;
262
cursor_on:=(a.flag0 and bm_TZvtTerm_cursor_on) shr bp_TZvtTerm_cursor_on;
265
procedure set_cursor_on(var a : TZvtTerm; __cursor_on : dword);
267
a.flag0:=a.flag0 or ((__cursor_on shl bp_TZvtTerm_cursor_on) and bm_TZvtTerm_cursor_on);
270
function cursor_filled(var a : TZvtTerm) : dword;
272
cursor_filled:=(a.flag0 and bm_TZvtTerm_cursor_filled) shr bp_TZvtTerm_cursor_filled;
275
procedure set_cursor_filled(var a : TZvtTerm; __cursor_filled : dword);
277
a.flag0:=a.flag0 or ((__cursor_filled shl bp_TZvtTerm_cursor_filled) and bm_TZvtTerm_cursor_filled);
280
function cursor_blink_state(var a : TZvtTerm) : dword;
282
cursor_blink_state:=(a.flag0 and bm_TZvtTerm_cursor_blink_state) shr bp_TZvtTerm_cursor_blink_state;
285
procedure set_cursor_blink_state(var a : TZvtTerm; __cursor_blink_state : dword);
287
a.flag0:=a.flag0 or ((__cursor_blink_state shl bp_TZvtTerm_cursor_blink_state) and bm_TZvtTerm_cursor_blink_state);
290
function blink_enabled(var a : TZvtTerm) : dword;
292
blink_enabled:=(a.flag0 and bm_TZvtTerm_blink_enabled) shr bp_TZvtTerm_blink_enabled;
295
procedure set_blink_enabled(var a : TZvtTerm; __blink_enabled : dword);
297
a.flag0:=a.flag0 or ((__blink_enabled shl bp_TZvtTerm_blink_enabled) and bm_TZvtTerm_blink_enabled);
300
function in_expose(var a : TZvtTerm) : dword;
302
in_expose:=(a.flag0 and bm_TZvtTerm_in_expose) shr bp_TZvtTerm_in_expose;
305
procedure set_in_expose(var a : TZvtTerm; __in_expose : dword);
307
a.flag0:=a.flag0 or ((__in_expose shl bp_TZvtTerm_in_expose) and bm_TZvtTerm_in_expose);
310
function scroll_on_keystroke(var a : TZvtTerm) : dword;
312
scroll_on_keystroke:=(a.flag0 and bm_TZvtTerm_scroll_on_keystroke) shr bp_TZvtTerm_scroll_on_keystroke;
315
procedure set_scroll_on_keystroke(var a : TZvtTerm; __scroll_on_keystroke : dword);
317
a.flag0:=a.flag0 or ((__scroll_on_keystroke shl bp_TZvtTerm_scroll_on_keystroke) and bm_TZvtTerm_scroll_on_keystroke);
320
function scroll_on_output(var a : TZvtTerm) : dword;
322
scroll_on_output:=(a.flag0 and bm_TZvtTerm_scroll_on_output) shr bp_TZvtTerm_scroll_on_output;
325
procedure set_scroll_on_output(var a : TZvtTerm; __scroll_on_output : dword);
327
a.flag0:=a.flag0 or ((__scroll_on_output shl bp_TZvtTerm_scroll_on_output) and bm_TZvtTerm_scroll_on_output);
330
function transparent(var a : TZvtTerm) : dword;
332
transparent:=(a.flag0 and bm_TZvtTerm_transparent) shr bp_TZvtTerm_transparent;
335
procedure set_transparent(var a : TZvtTerm; __transparent : dword);
337
a.flag0:=a.flag0 or ((__transparent shl bp_TZvtTerm_transparent) and bm_TZvtTerm_transparent);
340
function shaded(var a : TZvtTerm) : dword;
342
shaded:=(a.flag0 and bm_TZvtTerm_shaded) shr bp_TZvtTerm_shaded;
345
procedure set_shaded(var a : TZvtTerm; __shaded : dword);
347
a.flag0:=a.flag0 or ((__shaded shl bp_TZvtTerm_shaded) and bm_TZvtTerm_shaded);
350
function swap_del_key(var a : TZvtTerm) : dword;
352
swap_del_key:=(a.flag0 and bm_TZvtTerm_swap_del_key) shr bp_TZvtTerm_swap_del_key;
355
procedure set_swap_del_key(var a : TZvtTerm; __swap_del_key : dword);
357
a.flag0:=a.flag0 or ((__swap_del_key shl bp_TZvtTerm_swap_del_key) and bm_TZvtTerm_swap_del_key);
360
function del_is_del(var a : TZvtTerm) : dword;
362
del_is_del:=(a.flag0 and bm_TZvtTerm_del_is_del) shr bp_TZvtTerm_del_is_del;
365
procedure set_del_is_del(var a : TZvtTerm; __del_is_del : dword);
367
a.flag0:=a.flag0 or ((__del_is_del shl bp_TZvtTerm_del_is_del) and bm_TZvtTerm_del_is_del);