2
This file is part of the Free Pascal run time library.
4
A file in Amiga system run time library.
5
Copyright (c) 1998-2003 by Nils Sjoholm
6
member of the Amiga RTL development team.
8
See the file COPYING.FPC, included in this distribution,
9
for details about the copyright.
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
**********************************************************************}
20
Updated to triton 2.0. Added function with array of const.
23
Added the defines use_amiga_smartlink and
27
Changed integer > smallint.
28
Changed cardinal > longword.
29
Changed startcode for unit.
32
nils.sjoholm@mailbox.swipnet.se Nils Sjoholm
37
{$I useamigasmartlink.inc}
38
{$ifdef use_amiga_smartlink}
40
{$endif use_amiga_smartlink}
46
uses exec, intuition, graphics, utility;
49
{* ------------------------------------------------------------------------------ *}
50
{* library name and version *}
51
{* ------------------------------------------------------------------------------ *}
53
CONST TRITONNAME : PChar = 'triton.library';
60
TRITONVERSION = TRITON20VERSION;
62
{* ------------------------------------------------------------------------------ *}
64
{* ------------------------------------------------------------------------------ *}
67
pTR_Project = ^tTR_Project;
70
pTR_Message = ^tTR_Message;
72
trm_Project : pTR_Project; {* the message *}
73
trm_Id : ULONG; {* The object's ID *}
74
trm_Class : ULONG; {* The Triton message class *}
75
trm_Data : ULONG; {* The class-specific data *}
76
trm_Code : ULONG; {* Currently only used BY *}
78
trm_Pad0 : ULONG; {* qualifier is only 16 Bit *}
79
trm_Qualifier : ULONG; {* Qualifiers *}
80
trm_Seconds : ULONG; {* \ Copy of system clock time *}
81
trm_Micros : ULONG; {* / (Only where available! IF *}
82
{* not set, seconds is NULL) *}
84
END; {* End of TR_Message *}
86
{* Data for TROM_NEW *}
87
pTROM_NewDataPtr = ^tTROM_NewData;
88
tTROM_NewData = record
89
{* The following elements are set up for the object (read only) *}
90
project : pTR_Project; {* TR_ProjectPtr; *}
96
{* The following elements have to be set by the object and read by
97
class_DisplayObject *}
102
{* Data for TROM_INSTALL *}
103
pTROM_InstallData = ^tTROM_InstallData;
104
tTROM_InstallData = record
112
{* Data for TROM_SETATTRIBUTE *}
113
pTROM_SetAttributeData = ^tTROM_SetAttributeData;
114
tTROM_SetAttributeData = record
120
{* Data for TROM_EVENT *}
121
pTROM_EventData = ^tTROM_EventData;
122
tTROM_EventData = record
123
imsg : pIntuiMessage;
126
{* ------------------------------------------------------------------------------ *}
127
{* The Application Structure *}
128
{* ------------------------------------------------------------------------------ *}
130
tTR_App = RECORD {* This structure is PRIVATE! *}
131
tra_MemPool : Pointer; {* The memory pool *}
132
tra_BitMask : ULONG; {* Bits to Wait() for *}
133
tra_Name : STRPTR; {* Unique name *}
136
pTR_Class = ^tTR_Class;
138
trc_Node : tMinNode; {* PRIVATE! *}
139
trc_SuperClass : pTR_Class;
145
{* ------------------------------------------------------------------------------ *}
146
{* The Dimension Structure *}
147
{* ------------------------------------------------------------------------------ *}
149
pTR_Dimensions = ^tTR_Dimensions;
150
tTR_Dimensions = RECORD
160
reserved : ARRAY [0..2] OF Word;
161
END; {* TR_Dimensions *}
164
{* ////////////////////////////////////////////////////////////////////// *}
165
{* ///////////////////////////// Default classes, attributes and flags // *}
166
{* ////////////////////////////////////////////////////////////////////// *}
169
pTROD_Object = ^tTROD_Object;
170
tTROD_Object = record
171
Node : tMinNode; {* The node for linking all objects *}
172
tr_Class : pTR_Class; {* The object's class *}
173
Project : pTR_Project; {* The object's project *}
174
Reserved : array [0..5] of ULONG;
179
pTROD_DisplayObject = ^tTROD_DisplayObject;
180
tTROD_DisplayObject = record
181
O : tTROD_Object; {* Superclass object data *}
182
ID : ULONG; {* The object's ID *}
183
MinWidth : ULONG; {* The precalculated minimum width *}
184
MinHeight : ULONG; {* The precalculated minimum height *}
185
Left : ULONG; {* The X coordinate of the object *}
186
Top : ULONG; {* The Y coordinate of the object *}
187
Width : ULONG; {* The width of the object *}
188
Height : ULONG; {* The height of the object *}
189
Flags : ULONG; {* See below for flags *}
190
XResize : BOOL; {* Horizontally resizable? *}
191
YResize : BOOL; {* Vertically resizable? *}
192
QuickHelpString : STRPTR; {* QuickHelp string *}
193
Shortcut : smallint; {* The object's shortcut *}
194
Backfilltype : ULONG; {* The object's backfill type *}
195
Installed : BOOL; {* Does the object have an on-screen
197
Reserved : array [0..3] of ULONG; {* Private! *}
201
{* Data for TROM_HIT *}
202
pTROM_HitData = ^tTROM_HitData;
203
tTROM_HitData = record
206
tr_object : pTROD_DisplayObject;
210
{* ------------------------------------------------------------------------------ *}
211
{* The Projects Structure *}
212
{* ------------------------------------------------------------------------------ *}
215
tro_SC_Object : tTROD_Object; {* PRIVATE *}
216
trp_App : pTR_App; {* Our application
218
trp_MemPool : Pointer; {* The memory pool *}
219
trp_ID : ULONG; {* The project's ID *}
220
trp_IDCMPFlags : ULONG; {* The IDCMP flags *}
221
trp_Window : pWindow; {* The default window *}
222
trp_AspectFixing : Word; {* Pixel aspect
224
END; {* End of TR_Projects
227
{* Message classes *}
228
CONST TRMS_CLOSEWINDOW = 1; {* The window should be closed *}
229
TRMS_ERROR = 2; {* An error occured. Error code in trm_Data *}
230
TRMS_NEWVALUE = 3; {* Object's VALUE has changed. New VALUE in
232
TRMS_ACTION = 4; {* Object has triggered an action *}
233
TRMS_ICONDROPPED = 5; {* Icon dropped over window (ID=0) or DropBox.
234
AppMessage* in trm_Data *}
235
TRMS_KEYPRESSED = 6; {* Key pressed. trm_Data contains ASCII code,
236
trm_Code raw code and *}
237
{* trm_Qualifier contains qualifiers *}
238
TRMS_HELP = 7; {* The user requested help for the specified ID
240
TRMS_DISKINSERTED = 8; {* A disk has been inserted into a drive *}
241
TRMS_DISKREMOVED = 9; {* A disk has been removed from a drive *}
244
{* ////////////////////////////////////////////////////////////////////// *}
245
{* //////////////////////////////////////////////// Triton error codes // *}
246
{* ////////////////////////////////////////////////////////////////////// *}
248
TRER_OK = 0; {* No error *}
250
TRER_ALLOCMEM = 1; {* Not enough memory *}
251
TRER_OPENWINDOW = 2; {* Can't open window *}
252
TRER_WINDOWTOOBIG = 3; {* Window would be too big for screen *}
253
TRER_DRAWINFO = 4; {* Can't get screen's DrawInfo *}
254
TRER_OPENFONT = 5; {* Can't open font *}
255
TRER_CREATEMSGPORT = 6; {* Can't create message port *}
256
TRER_INSTALLOBJECT = 7; {* Can't create an object *}
257
TRER_CREATECLASS = 8; {* Can't create a class *}
258
TRER_NOLOCKPUBSCREEN = 9; {* Can't lock public screen *}
259
TRER_CREATEMENUS = 12; {* Error while creating the menus *}
260
TRER_GT_CREATECONTEXT = 14; {* Can't create gadget context *}
262
TRER_MAXERRORNUM = 15; {* PRIVATE! *}
265
{* ////////////////////////////////////////////////////////////////////// *}
266
{* /////////////////////////////////////////////////// Object messages // *}
267
{* ////////////////////////////////////////////////////////////////////// *}
269
TROM_NEW = 1; {* Create object *}
270
TROM_INSTALL = 2; {* Tell object to install itself in the
272
TROM_REFRESH = 4; {* Refresh object *}
273
TROM_REMOVE = 6; {* Remove object from window *}
274
TROM_DISPOSE = 7; {* Dispose an object's private data *}
275
TROM_GETATTRIBUTE = 8; {* Get an object's attribute *}
276
TROM_SETATTRIBUTE = 9; {* Set an object's attribute *}
277
TROM_EVENT = 10; {* IDCMP event *}
278
TROM_DISABLED = 11; {* Disabled object *}
279
TROM_ENABLED = 12; {* Enabled object *}
280
TROM_KEYDOWN = 13; {* Key pressed *}
281
TROM_REPEATEDKEYDOWN = 14; {* Key pressed repeatedly *}
282
TROM_KEYUP = 15; {* Key released *}
283
TROM_KEYCANCELLED = 16; {* Key cancelled *}
284
TROM_CREATECLASS = 17; {* Create class-specific data *}
285
TROM_DISPOSECLASS = 18; {* Dispose class-specific data *}
286
TROM_HIT = 22; {* Find an object for a coordinate pair
288
TROM_ACTIVATE = 23; {* Activate an object *}
291
TROM_EVENT_SWALLOWED = 1;
292
TROM_EVENT_CONTINUE = 0;
295
{* ////////////////////////////////////////////////////////////////////// *}
296
{* ///////////////////////////////////////// Tags for TR_OpenProject() // *}
297
{* ////////////////////////////////////////////////////////////////////// *}
300
TRTG_OAT = (TAG_USER+$400); {* Object attribute *}
301
TRTG_CLS = (TAG_USER+$100); {* Class ID $1 to $2FF *}
302
TRTG_OAT2 = (TAG_USER+$80); {* PRIVATE! *}
303
TRTG_PAT = (TAG_USER); {* Project attribute *}
307
TRWI_Title = (TRTG_PAT+$01); {* STRPTR: The window title *}
308
TRWI_Flags = (TRTG_PAT+$02); {* See below for window flags *}
309
TRWI_Underscore = (TRTG_PAT+$03); {* BYTE *: The underscore for menu
310
and gadget shortcuts *}
311
TRWI_Position = (TRTG_PAT+$04); {* Window position, see below *}
312
TRWI_CustomScreen = (TRTG_PAT+$05); {* STRUCT Screen * *}
313
TRWI_PubScreen = (TRTG_PAT+$06); {* STRUCT Screen *, must have been
315
TRWI_PubScreenName = (TRTG_PAT+$07); {* ADDRESS, Triton is doing the
317
TRWI_PropFontAttr = (TRTG_PAT+$08); {* STRUCT TextAttr *: The
319
TRWI_FixedWidthFontAttr = (TRTG_PAT+$09); {* STRUCT TextAttr *: The fixed-
321
TRWI_Backfill = (TRTG_PAT+$0A); {* The backfill type, see below *}
322
TRWI_ID = (TRTG_PAT+$0B); {* ULONG: The window ID *}
323
TRWI_Dimensions = (TRTG_PAT+$0C); {* STRUCT TR_Dimensions * *}
324
TRWI_ScreenTitle = (TRTG_PAT+$0D); {* STRPTR: The screen title *}
325
TRWI_QuickHelp = (TRTG_PAT+$0E); {* BOOL: Quick help active? *}
328
TRMN_Title = (TRTG_PAT+$65); {* STRPTR: Menu *}
329
TRMN_Item = (TRTG_PAT+$66); {* STRPTR: Menu item *}
330
TRMN_Sub = (TRTG_PAT+$67); {* STRPTR: Menu subitem *}
331
TRMN_Flags = (TRTG_PAT+$68); {* See below for flags *}
333
{* General object attributes *}
334
TRAT_ID = (TRTG_OAT2+$16); {* The object's/menu's ID *}
335
TRAT_Flags = (TRTG_OAT2+$17); {* The object's flags *}
336
TRAT_Value = (TRTG_OAT2+$18); {* The object's value *}
337
TRAT_Text = (TRTG_OAT2+$19); {* The object's text *}
338
TRAT_Disabled = (TRTG_OAT2+$1A); {* Disabled object? *}
339
TRAT_Backfill = (TRTG_OAT2+$1B); {* Backfill pattern *}
340
TRAT_MinWidth = (TRTG_OAT2+$1C); {* Minimum width *}
341
TRAT_MinHeight = (TRTG_OAT2+$1D); {* Minimum height *}
344
{* ////////////////////////////////////////////////////////////////////// *}
345
{* ////////////////////////////////////////////////////// Window flags // *}
346
{* ////////////////////////////////////////////////////////////////////// *}
348
TRWF_BACKDROP = $00000001; {* Create a backdrop borderless
350
TRWF_NODRAGBAR = $00000002; {* Don't use a dragbar *}
351
TRWF_NODEPTHGADGET = $00000004; {* Don't use a depth-gadget *}
352
TRWF_NOCLOSEGADGET = $00000008; {* Don't use a close-gadget *}
353
TRWF_NOACTIVATE = $00000010; {* Don't activate window *}
354
TRWF_NOESCCLOSE = $00000020; {* Don't send TRMS_CLOSEWINDOW when
356
TRWF_NOPSCRFALLBACK = $00000040; {* Don't fall back onto default
358
TRWF_NOZIPGADGET = $00000080; {* Don't use a zip-gadget *}
359
TRWF_ZIPCENTERTOP = $00000100; {* Center the zipped window on the
361
TRWF_NOMINTEXTWIDTH = $00000200; {* Minimum window width not according
363
TRWF_NOSIZEGADGET = $00000400; {* Don't use a sizing-gadget *}
364
TRWF_NOFONTFALLBACK = $00000800; {* Don't fall back to topaz.8 *}
365
TRWF_NODELZIP = $00001000; {* Don't zip the window when Del is
367
TRWF_SIMPLEREFRESH = $00002000; {* *** OBSOLETE *** (V3+) *}
368
TRWF_ZIPTOCURRENTPOS = $00004000; {* Will zip the window at the current
370
TRWF_APPWINDOW = $00008000; {* Create an AppWindow without using
372
TRWF_ACTIVATESTRGAD = $00010000; {* Activate the first string gadget
373
after opening the window *}
374
TRWF_HELP = $00020000; {* Pressing <Help> will create a
375
TRMS_HELP message (V4) *}
376
TRWF_SYSTEMACTION = $00040000; {* System status messages will be
380
{* ////////////////////////////////////////////////////////////////////// *}
381
{* //////////////////////////////////////////////////////// Menu flags // *}
382
{* ////////////////////////////////////////////////////////////////////// *}
384
TRMF_CHECKIT = $00000001; {* Leave space for a checkmark *}
385
TRMF_CHECKED = $00000002; {* Check the item (includes
387
TRMF_DISABLED = $00000004; {* Ghost the menu/item *}
390
{* ////////////////////////////////////////////////////////////////////// *}
391
{* ////////////////////////////////////////////////// Window positions // *}
392
{* ////////////////////////////////////////////////////////////////////// *}
394
TRWP_DEFAULT = 0; {* Let Triton choose a good position
396
TRWP_BELOWTITLEBAR = 1; {* Left side of screen, below title
398
TRWP_CENTERTOP = 1025; {* Top of screen, centered on the
400
TRWP_TOPLEFTSCREEN = 1026; {* Top left corner of screen *}
401
TRWP_CENTERSCREEN = 1027; {* Centered on the screen *}
402
TRWP_CENTERDISPLAY = 1028; {* Centered on the currently
404
TRWP_MOUSEPOINTER = 1029; {* Under the mouse pointer *}
405
TRWP_ABOVECOORDS = 2049; {* Above coordinates from the
407
TRWP_BELOWCOORDS = 2050; {* Below coordinates from the
411
{* ////////////////////////////////////////////////////////////////////// *}
412
{* //////////////////////////////////// Backfill types / System images // *}
413
{* ////////////////////////////////////////////////////////////////////// *}
415
TRBF_WINDOWBACK = $00000000; {* Window backfill *}
416
TRBF_REQUESTERBACK = $00000001; {* Requester backfill *}
418
TRBF_NONE = $00000002; {* No backfill (= Fill with
420
TRBF_SHINE = $00000003; {* Fill with SHINEPEN *}
421
TRBF_SHINE_SHADOW = $00000004; {* Fill with SHINEPEN + SHADOWPEN *}
422
TRBF_SHINE_FILL = $00000005; {* Fill with SHINEPEN + FILLPEN *}
423
TRBF_SHINE_BACKGROUND = $00000006; {* Fill with SHINEPEN + BACKGROUNDPEN
425
TRBF_SHADOW = $00000007; {* Fill with SHADOWPEN *}
426
TRBF_SHADOW_FILL = $00000008; {* Fill with SHADOWPEN + FILLPEN *}
427
TRBF_SHADOW_BACKGROUND = $00000009; {* Fill with SHADOWPEN +
429
TRBF_FILL = $0000000A; {* Fill with FILLPEN *}
430
TRBF_FILL_BACKGROUND = $0000000B; {* Fill with FILLPEN + BACKGROUNDPEN
433
TRSI_USBUTTONBACK = $00010002; {* Unselected button backfill *}
434
TRSI_SBUTTONBACK = $00010003; {* Selected button backfill *}
438
{* ////////////////////////////////////////////////////////////////////// *}
439
{* /////////////////////////////////////////////////////// Frame types // *}
440
{* ////////////////////////////////////////////////////////////////////// *}
442
{ * Copies of the GadTools BBFT_#? types *}
445
TRFT_ICONDROPBOX = 3;
446
{ * Triton's low-level frame types *}
447
TRFT_XENBUTTON1 = 33;
448
TRFT_XENBUTTON2 = 34;
449
TRFT_NEXTBUTTON = 35;
450
{ * Triton's abstract frame types *}
451
TRFT_ABSTRACT_BUTTON = 65;
452
TRFT_ABSTRACT_ICONDROPBOX = 66;
453
TRFT_ABSTRACT_FRAMEBOX = 67;
454
TRFT_ABSTRACT_PROGRESS = 68;
455
TRFT_ABSTRACT_GROUPBOX = 69;
458
{* ////////////////////////////////////////////////////////////////////// *}
459
{* ///////////////////////////////////////////////////////// Pen types // *}
460
{* ////////////////////////////////////////////////////////////////////// *}
463
TRPT_GRAPHICSPEN = 1;
464
TRPT_TRITONPEN = 128;
470
TRTP_USSTRINGGADBACK = 4;
471
TRTP_SSTRINGGADBACK = 5;
472
TRTP_USSTRINGGADFRONT = 6;
473
TRTP_SSTRINGGADFRONT = 7;
475
{* ////////////////////////////////////////////////////////////////////// *}
476
{* ////////////////////////////////////////////// Display Object flags // *}
477
{* ////////////////////////////////////////////////////////////////////// *}
480
TROF_RAISED = $00000001; {* Raised object *}
481
TROF_HORIZ = $00000002; {* Horizontal object \ Works
483
TROF_VERT = $00000004; {* Vertical object / in groups *}
484
TROF_RIGHTALIGN = $00000008; {* Align object to the right border
486
TROF_GENERAL_MASK = $000000FF; {* PRIVATE *}
488
{* Text flags for different kinds of text-related objects *}
489
TRTX_NOUNDERSCORE = $00000100; {* Don't interpret underscores *}
490
TRTX_HIGHLIGHT = $00000200; {* Highlight text *}
491
TRTX_3D = $00000400; {* 3D design *}
492
TRTX_BOLD = $00000800; {* Softstyle 'bold' *}
493
TRTX_TITLE = $00001000; {* A title (e.g. of a group) *}
494
TRTX_MULTILINE = $00002000; {* A multi-line text. See
495
TR_PrintText() autodoc clip *}
496
TRTX_RIGHTALIGN = TROF_RIGHTALIGN;
497
TRTX_CENTER = $00004000; {* Center text *}
498
TRTX_SELECTED = $00002000; {* PRIVATE! *}
500
{* ////////////////////////////////////////////////////////////////////// *}
501
{* ////////////////////////////////////////////////////// Menu entries // *}
502
{* ////////////////////////////////////////////////////////////////////// *}
504
TRMN_BARLABEL = (-1); {* A barlabel instead of text *}
507
{* ////////////////////////////////////////////////////////////////////// *}
508
{* /////////////////////////////////////////// Tags for TR_CreateApp() // *}
509
{* ////////////////////////////////////////////////////////////////////// *}
511
TRCA_Name = (TAG_USER+1);
512
TRCA_LongName = (TAG_USER+2);
513
TRCA_Info = (TAG_USER+3);
514
TRCA_Version = (TAG_USER+4);
515
TRCA_Release = (TAG_USER+5);
516
TRCA_Date = (TAG_USER+6);
519
{* ////////////////////////////////////////////////////////////////////// *}
520
{* ///////////////////////////////////////// Tags for TR_EasyRequest() // *}
521
{* ////////////////////////////////////////////////////////////////////// *}
523
TREZ_ReqPos = (TAG_USER+1);
524
TREZ_LockProject = (TAG_USER+2);
525
TREZ_Return = (TAG_USER+3);
526
TREZ_Title = (TAG_USER+4);
527
TREZ_Activate = (TAG_USER+5);
529
{* class_DisplayObject *}
531
TROB_DisplayObject = (TRTG_CLS+$3C); {* A basic display object *}
533
TRDO_QuickHelpString = (TRTG_OAT+$1E3);
536
TROB_DISPLAYOBJECT_DISABLED = $00100000; {* Disabled? *}
537
TROB_DISPLAYOBJECT_RETURNOK = $00200000; {* Activate with <Return> *}
538
TROB_DISPLAYOBJECT_ESCOK = $00400000; {* Activate with <Esc> *}
539
TROB_DISPLAYOBJECT_TABOK = $00800000; {* Activate with <Tab> *}
540
TROB_DISPLAYOBJECT_SPACE = $01000000; {* A spacing object? *}
544
TROB_DragItem = (TRTG_CLS+$3E); {* A draggable item *}
548
TROB_Image = (TRTG_CLS+$3B); {* An image *}
550
TRIM_BOOPSI = $00010000; {* Use a BOOPSI IClass image *}
554
TROB_String = (TRTG_CLS+$37); {* A string gadget *}
555
TRST_Filter = (TRTG_OAT+$1E4);
557
TRST_INVISIBLE = $00010000; {* A password gadget -> invisible
559
TRST_NORETURNBROADCAST = $00020000; {* <Return> keys will not be
560
broadcast to the window *}
561
TRST_FLOAT = $00040000; {* Separators "." and "," will be
562
accepted only once *}
566
TROB_Cycle = (TRTG_CLS+$36); {* A cycle gadget *}
568
TRCY_MX = $00010000; {* Unfold the cycle gadget to a MX
570
TRCY_RIGHTLABELS = $00020000; {* Put the labels to the right of a
575
TROB_Palette = (TRTG_CLS+$33); {* A palette gadget *}
579
TROB_DropBox = (TRTG_CLS+$38); {* An icon drop box *}
583
TRGR_Horiz = (TAG_USER+201); {* Horizontal group *}
584
TRGR_Vert = (TAG_USER+202); {* Vertical group *}
585
TRGR_End = (TRTG_OAT2+$4B); {* End of a group *}
587
TRGR_PROPSHARE = $00000000; {* Default: Divide objects
589
TRGR_EQUALSHARE = $00000001; {* Divide objects equally *}
590
TRGR_PROPSPACES = $00000002; {* Divide spaces proportionally *}
591
TRGR_ARRAY = $00000004; {* Top-level array group *}
593
TRGR_ALIGN = $00000008; {* Align resizeable objects in
594
secondary dimension *}
595
TRGR_CENTER = $00000010; {* Center unresizeable objects in
596
secondary dimension *}
598
TRGR_FIXHORIZ = $00000020; {* Don't allow horizontal resizing *}
599
TRGR_FIXVERT = $00000040; {* Don't allow vertical resizing *}
600
TRGR_INDEP = $00000080; {* Group is independant of
605
TROB_Line = (TRTG_CLS+$2D); {* A simple line *}
609
TROB_Slider = (TRTG_CLS+$34); {* A slider gadget *}
611
TRSL_Min = (TRTG_OAT+$1DE);
612
TRSL_Max = (TRTG_OAT+$1DF);
616
TROB_Listview = (TRTG_CLS+$39); {* A listview gadget *}
618
TRLV_Top = (TRTG_OAT+$1E2);
619
TRLV_VisibleLines = (TRTG_OAT+$1E4);
621
TRLV_READONLY = $00010000; {* A read-only list *}
622
TRLV_SELECT = $00020000; {* You may select an entry *}
623
TRLV_SHOWSELECTED = $00040000; {* Selected entry will be shown *}
624
TRLV_NOCURSORKEYS = $00080000; {* Don't use arrow keys *}
625
TRLV_NONUMPADKEYS = $00100000; {* Don't use numeric keypad keys *}
626
TRLV_FWFONT = $00200000; {* Use the fixed-width font *}
627
TRLV_NOGAP = $00400000; {* Don't leave a gap below the list
632
TROB_Progress = (TRTG_CLS+$3A); {* A progress indicator *}
636
TROB_Space = (TRTG_CLS+$285); {* The spaces class *}
638
TRST_NONE = 1; {* No space *}
639
TRST_SMALL = 2; {* Small space *}
640
TRST_NORMAL = 3; {* Normal space (default) *}
641
TRST_BIG = 4; {* Big space *}
645
TROB_Text = (TRTG_CLS+$30); {* A line of text *}
647
TRTX_CLIPPED = $00010000; {* Text is clipped *}
651
TROB_Button = (TRTG_CLS+$31); {* A BOOPSI button gadget *}
653
TRBU_RETURNOK = $00010000; {* <Return> answers the button *}
654
TRBU_ESCOK = $00020000; {* <Esc> answers the button *}
655
TRBU_SHIFTED = $00040000; {* Shifted shortcut only *}
656
TRBU_UNSHIFTED = $00080000; {* Unshifted shortcut only *}
657
TRBU_YRESIZE = $00100000; {* Button resizeable in Y direction
659
TRBT_TEXT = 0; {* Text button *}
660
TRBT_GETFILE = 1; {* GetFile button *}
661
TRBT_GETDRAWER = 2; {* GetDrawer button *}
662
TRBT_GETENTRY = 3; {* GetEntry button *}
666
TROB_CheckBox = (TRTG_CLS+$2F); {* A checkbox gadget *}
670
TROB_Object = (TRTG_CLS+$3D); {* A rootclass object *}
674
TROB_Scroller = (TRTG_CLS+$35); {* A scroller gadget *}
676
TRSC_Total = (TRTG_OAT+$1E0);
677
TRSC_Visible = (TRTG_OAT+$1E1);
681
TROB_FrameBox = (TRTG_CLS+$32); {* A framing box *}
683
TRFB_GROUPING = $00000001; {* A grouping box *}
684
TRFB_FRAMING = $00000002; {* A framing box *}
685
TRFB_TEXT = $00000004; {* A text container *}
688
VAR TritonBase : pLibrary;
690
FUNCTION TR_AddClass(app : pTR_App; d0arg : longword; supertag : longword; defaultmethod : LONGINT;
691
datasize : longword; tags : pTagItem) : BOOLEAN;
692
PROCEDURE TR_AreaFill(project : pTR_Project; rp : pRastPort; left : ULONG; top :
693
ULONG; right : ULONG; bottom : ULONG; typ : ULONG; dummy : POINTER);
694
FUNCTION TR_AutoRequest(app : pTR_App; lockproject : pTR_Project; wintags : pTagItem)
696
PROCEDURE TR_CloseProject(project : pTR_Project);
697
PROCEDURE TR_CloseWindowSafely(window : pWindow);
698
FUNCTION TR_CreateApp(apptags : pTagItem) : pTR_App;
699
FUNCTION TR_CreateMsg(app : pTR_App) : pTR_Message;
700
PROCEDURE TR_DeleteApp(app : pTR_App);
701
FUNCTION TR_DoMethod(obj : pTROD_Object; messageid : ULONG; data : POINTER) : ULONG;
702
FUNCTION TR_DoMethodClass(obj : pTROD_Object; messageid : ULONG; data : POINTER;
703
trclass : pTR_Class) : ULONG;
704
PROCEDURE TR_DrawFrame(project : pTR_Project; rp : pRastPort; left : WORD; top : WORD;
705
width : WORD; height : WORD; typ : WORD; inverted : BOOLEAN);
706
FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; taglist :
708
FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : pCHAR; gadfmt : String; taglist :
710
FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : pCHAR; taglist :
712
FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : String; taglist :
714
FUNCTION TR_FirstOccurance(ch : BYTE; str : pCHAR) : LONGINT;
715
FUNCTION TR_FirstOccurance(ch : BYTE; str : String) : LONGINT;
716
FUNCTION TR_FrameBorderHeight(project : pTR_Project; typ : WORD) : ULONG;
717
FUNCTION TR_FrameBorderWidth(project : pTR_Project; typ : WORD) : ULONG;
718
FUNCTION TR_GetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG) :
720
FUNCTION TR_GetErrorString(num : WORD) : pCHAR;
721
FUNCTION TR_GetLastError(app : pTR_App) : WORD;
722
FUNCTION TR_GetMsg(app : pTR_App) : pTR_Message;
723
FUNCTION TR_GetPen(project : pTR_Project; pentype : ULONG; pendata : ULONG) : ULONG;
724
PROCEDURE TR_LockProject(project : pTR_Project);
725
FUNCTION TR_LockScreen(project : pTR_Project) : pScreen;
726
FUNCTION TR_NumOccurances(ch : BYTE; str : pCHAR) : LONGINT;
727
FUNCTION TR_NumOccurances(ch : BYTE; str : String) : LONGINT;
728
FUNCTION TR_ObtainWindow(project : pTR_Project) : pWindow;
729
FUNCTION TR_OpenProject(app : pTR_App; taglist : pTagItem) : pTR_Project;
730
PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : pCHAR; x : ULONG;
731
y : ULONG; width : ULONG; flags : ULONG);
732
PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : String; x : ULONG;
733
y : ULONG; width : ULONG; flags : ULONG);
734
PROCEDURE TR_ReleaseWindow(window : pWindow);
735
PROCEDURE TR_ReplyMsg(message : pTR_Message);
736
FUNCTION TR_SendMessage(project : pTR_Project; objectid : ULONG; messageid : ULONG;
737
messagedata : POINTER) : ULONG;
738
PROCEDURE TR_SetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG; value
740
FUNCTION TR_TextHeight(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
741
FUNCTION TR_TextHeight(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
742
FUNCTION TR_TextWidth(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
743
FUNCTION TR_TextWidth(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
744
PROCEDURE TR_UnlockProject(project : pTR_Project);
745
PROCEDURE TR_UnlockScreen(screen : pScreen);
746
FUNCTION TR_Wait(app : pTR_App; otherbits : ULONG) : ULONG;
749
Functions with array of const
751
FUNCTION TR_AddClassTags(app : pTR_App; d0arg : longword; supertag : longword;
752
defaultmethod : LONGINT; datasize : longword; const tags : Array Of Const) : BOOLEAN;
753
FUNCTION TR_OpenProjectTags(app : pTR_App; const taglist : Array Of Const) : pTR_Project;
754
FUNCTION TR_AutoRequestTags(app : pTR_App; lockproject : pTR_Project; const wintags : Array Of Const): ULONG;
755
FUNCTION TR_CreateAppTags(const apptags : Array of Const) : pTR_App;
756
FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; const taglist : Array Of Const) : ULONG;
757
FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : pCHAR; gadfmt : String; Const taglist : Array Of Const) : ULONG;
758
FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : String; gadfmt : pCHAR; Const taglist : Array Of Const) : ULONG;
759
FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : String; gadfmt : String; Const taglist : Array Of Const) : ULONG;
761
{ This are a few support functions for triton.
765
procedure TR_Disable(p : pTR_Project; id : Longint);
766
procedure TR_Enable(p : pTR_Project; id : Longint);
767
function TR_GetCheckBox(p : pTR_Project; id : Longint): boolean;
768
function TR_GetSTRPTR(p : pTR_Project; id : Longint): PChar;
769
function TR_GetString(p : pTR_Project; id : Longint): String;
770
function TR_GetValue(p : pTR_Project; gadid : Longint): Longint;
771
procedure TR_SetCheckBox(p : pTR_Project; id : Longint; onoff : boolean);
772
procedure TR_SetString(p : pTR_Project; id : Longint; txt : String);
773
procedure TR_SetString(p : pTR_Project; id : Longint; txt : PChar);
774
procedure TR_SetText(p : pTR_Project; id : Longint; txt : string);
775
procedure TR_SetText(p : pTR_Project; id : Longint; txt : PChar);
776
procedure TR_SetValue(p : pTR_Project; id : Longint; value : Longint);
777
procedure TR_SetWindowTitle(p : pTR_Project; thetitle : string);
778
procedure TR_SetWindowTitle(p : pTR_Project; thetitle : PChar);
779
procedure TR_UpdateListView(p : pTR_Project; gadid : Longint; thelist: pList);
781
{You can remove this include and use a define instead}
782
{$I useautoopenlib.inc}
783
{$ifdef use_init_openlib}
784
procedure InitTRITONLibrary;
785
{$endif use_init_openlib}
787
{This is a variable that knows how the unit is compiled}
789
TRITONIsCompiledHow : longint;
794
{$ifndef dont_use_openlib}
796
{$endif dont_use_openlib}
799
procedure TR_Disable(p : pTR_Project; id : Longint);
801
TR_SetAttribute(p,id, TRAT_Disabled,0);
804
procedure TR_Enable(p : pTR_Project; id : Longint);
806
TR_SetAttribute(p,id,TRAT_Disabled,1);
809
function TR_GetCheckBox(p : pTR_Project; id : Longint): boolean;
813
temp := TR_GetAttribute(p,id,TRAT_Value);
814
if temp = 0 then TR_GetCheckBox := false
815
else TR_GetCheckBox := true;
818
function TR_GetSTRPTR(p : pTR_Project; id : Longint): PChar;
822
temp := TR_GetAttribute(p,id,0);
823
TR_GetSTRPTR := PChar(Pointer(temp));
826
function TR_GetString(p : pTR_Project; id : Longint): String;
830
temp := TR_GetAttribute(p,id,0);
831
TR_GetString := strpas(PChar(Pointer(temp)));
834
function TR_GetValue(p : pTR_Project; gadid : Longint): Longint;
836
TR_GetValue := TR_GetAttribute(p,gadid,TRAT_Value);
839
procedure TR_SetCheckBox(p : pTR_Project; id : Longint; onoff : boolean);
841
TR_SetAttribute(p,id,TRAT_Value,Longint(byte(onoff)));
844
procedure TR_SetString(p : pTR_Project; id : Longint; txt : String);
846
TR_SetAttribute(p,id,0,Longint(pas2c(txt)));
849
procedure TR_SetString(p : pTR_Project; id : Longint; txt : PChar);
851
TR_SetAttribute(p,id,0,Longint(txt));
854
procedure TR_SetText(p : pTR_Project; id : Longint; txt : string);
856
TR_SetAttribute(p,id,TRAT_Text,Longint(pas2c(txt)));
859
procedure TR_SetText(p : pTR_Project; id : Longint; txt : PChar);
861
TR_SetAttribute(p,id,TRAT_Text,Longint(txt));
864
procedure TR_SetValue(p : pTR_Project; id : Longint; value : Longint);
866
TR_SetAttribute(p,id,TRAT_Value,value);
869
procedure TR_SetWindowTitle(p : pTR_Project; thetitle : string);
871
TR_SetAttribute(p,0,TRWI_Title,Longint(pas2c(thetitle)));
874
procedure TR_SetWindowTitle(p : pTR_Project; thetitle : PChar);
876
TR_SetAttribute(p,0,TRWI_Title,Longint(thetitle));
879
procedure TR_UpdateListView(p : pTR_Project; gadid : Longint; thelist: pList);
881
TR_SetAttribute(p,gadid,0,Longint(thelist));
884
FUNCTION TR_AddClass(app : pTR_App; d0arg : longword; supertag : longword; defaultmethod : LONGINT; datasize : longword; tags : pTagItem) : BOOLEAN;
891
MOVEA.L defaultmethod,A2
894
MOVEA.L TritonBase,A6
900
@end: MOVE.B D0,@RESULT
905
PROCEDURE TR_AreaFill(project : pTR_Project; rp : pRastPort; left : ULONG; top :
906
ULONG; right : ULONG; bottom : ULONG; typ : ULONG; dummy : POINTER);
918
MOVEA.L TritonBase,A6
924
FUNCTION TR_AutoRequest(app : pTR_App; lockproject : pTR_Project; wintags : pTagItem)
930
MOVEA.L lockproject,A0
932
MOVEA.L TritonBase,A6
939
PROCEDURE TR_CloseProject(project : pTR_Project);
944
MOVEA.L TritonBase,A6
950
PROCEDURE TR_CloseWindowSafely(window : pWindow);
955
MOVEA.L TritonBase,A6
961
FUNCTION TR_CreateApp(apptags : pTagItem) : pTR_App;
966
MOVEA.L TritonBase,A6
973
FUNCTION TR_CreateMsg(app : pTR_App) : pTR_Message;
978
MOVEA.L TritonBase,A6
985
PROCEDURE TR_DeleteApp(app : pTR_App);
990
MOVEA.L TritonBase,A6
996
FUNCTION TR_DoMethod(obj : pTROD_Object; messageid : ULONG; data : POINTER) : ULONG;
1003
MOVEA.L TritonBase,A6
1010
FUNCTION TR_DoMethodClass(obj : pTROD_Object; messageid : ULONG; data : POINTER;
1011
trclass : pTR_Class) : ULONG;
1019
MOVEA.L TritonBase,A6
1026
PROCEDURE TR_DrawFrame(project : pTR_Project; rp : pRastPort; left : WORD; top : WORD;
1027
width : WORD; height : WORD; typ : WORD; inverted : BOOLEAN);
1039
MOVEA.L TritonBase,A6
1045
FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; taglist :
1054
MOVEA.L TritonBase,A6
1061
FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : PChar; gadfmt : String; taglist :
1064
TR_EasyRequest := TR_EasyRequest(app,bodyfmt,pas2c(gadfmt),taglist);
1067
FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : PChar; taglist :
1070
TR_EasyRequest := TR_EasyRequest(app,pas2c(bodyfmt),gadfmt,taglist);
1073
FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : String; taglist :
1076
TR_EasyRequest := TR_EasyRequest(app,pas2c(bodyfmt),pas2c(gadfmt),taglist);
1079
FUNCTION TR_FirstOccurance(ch : BYTE; str : pCHAR) : LONGINT;
1085
MOVEA.L TritonBase,A6
1092
FUNCTION TR_FirstOccurance(ch : BYTE; str : String) : LONGINT;
1094
TR_FirstOccurance := TR_FirstOccurance(ch, pas2c(str));
1097
FUNCTION TR_FrameBorderHeight(project : pTR_Project; typ : WORD) : ULONG;
1103
MOVEA.L TritonBase,A6
1110
FUNCTION TR_FrameBorderWidth(project : pTR_Project; typ : WORD) : ULONG;
1116
MOVEA.L TritonBase,A6
1123
FUNCTION TR_GetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG) :
1131
MOVEA.L TritonBase,A6
1138
FUNCTION TR_GetErrorString(num : WORD) : pCHAR;
1143
MOVEA.L TritonBase,A6
1150
FUNCTION TR_GetLastError(app : pTR_App) : WORD;
1155
MOVEA.L TritonBase,A6
1162
FUNCTION TR_GetMsg(app : pTR_App) : pTR_Message;
1167
MOVEA.L TritonBase,A6
1174
FUNCTION TR_GetPen(project : pTR_Project; pentype : ULONG; pendata : ULONG) : ULONG;
1181
MOVEA.L TritonBase,A6
1188
PROCEDURE TR_LockProject(project : pTR_Project);
1193
MOVEA.L TritonBase,A6
1199
FUNCTION TR_LockScreen(project : pTR_Project) : pScreen;
1204
MOVEA.L TritonBase,A6
1211
FUNCTION TR_NumOccurances(ch : BYTE; str : pCHAR) : LONGINT;
1217
MOVEA.L TritonBase,A6
1224
FUNCTION TR_NumOccurances(ch : BYTE; str : String) : LONGINT;
1226
TR_NumOccurances := TR_NumOccurances(ch, pas2c(str));
1229
FUNCTION TR_ObtainWindow(project : pTR_Project) : pWindow;
1234
MOVEA.L TritonBase,A6
1241
FUNCTION TR_OpenProject(app : pTR_App; taglist : pTagItem) : pTR_Project;
1247
MOVEA.L TritonBase,A6
1254
PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : pCHAR; x : ULONG;
1255
y : ULONG; width : ULONG; flags : ULONG);
1266
MOVEA.L TritonBase,A6
1272
PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : String; x : ULONG;
1273
y : ULONG; width : ULONG; flags : ULONG);
1275
TR_PrintText(project,rp,pas2c(txt),x,y,width,flags);
1278
PROCEDURE TR_ReleaseWindow(window : pWindow);
1283
MOVEA.L TritonBase,A6
1289
PROCEDURE TR_ReplyMsg(message : pTR_Message);
1294
MOVEA.L TritonBase,A6
1300
FUNCTION TR_SendMessage(project : pTR_Project; objectid : ULONG; messageid : ULONG;
1301
messagedata : POINTER) : ULONG;
1308
MOVEA.L messagedata,A1
1309
MOVEA.L TritonBase,A6
1316
PROCEDURE TR_SetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG; value
1325
MOVEA.L TritonBase,A6
1331
FUNCTION TR_TextHeight(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
1338
MOVEA.L TritonBase,A6
1345
FUNCTION TR_TextHeight(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
1347
TR_TextHeight := TR_TextHeight(project,pas2c(txt),flags);
1350
FUNCTION TR_TextWidth(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
1357
MOVEA.L TritonBase,A6
1364
FUNCTION TR_TextWidth(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
1366
TR_TextWidth := TR_TextWidth(project,pas2c(txt),flags);
1369
PROCEDURE TR_UnlockProject(project : pTR_Project);
1374
MOVEA.L TritonBase,A6
1380
PROCEDURE TR_UnlockScreen(screen : pScreen);
1385
MOVEA.L TritonBase,A6
1391
FUNCTION TR_Wait(app : pTR_App; otherbits : ULONG) : ULONG;
1397
MOVEA.L TritonBase,A6
1405
Functions with array of const
1408
Functions and procedures with array of const go here
1410
FUNCTION TR_AddClassTags(app : pTR_App; d0arg : longword; supertag : longword; defaultmethod : LONGINT; datasize : longword; const tags : Array Of Const) : BOOLEAN;
1412
TR_AddClassTags := TR_AddClass(app , d0arg , supertag , defaultmethod , datasize , readintags(tags));
1415
FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; const taglist : Array Of Const) : Ulong;
1417
TR_EasyRequestTags := TR_EasyRequest(app , bodyfmt , gadfmt , readintags(taglist));
1420
FUNCTION TR_OpenProjectTags(app : pTR_App; const taglist : Array Of Const) : pTR_Project;
1422
TR_OpenProjectTags := TR_OpenProject(app , readintags(taglist));
1425
FUNCTION TR_AutoRequestTags(app : pTR_App; lockproject : pTR_Project; const wintags : Array Of Const): ULONG;
1427
TR_AutoRequestTags := TR_AutoRequest(app,lockproject,readintags(wintags));
1430
FUNCTION TR_CreateAppTags(const apptags : Array of Const) : pTR_App;
1432
TR_CreateAppTags := TR_CreateApp(readintags(apptags));
1435
FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : pCHAR; gadfmt : String; Const taglist : Array Of Const) : ULONG;
1437
TR_EasyRequestTags := TR_EasyRequest(app,bodyfmt,pas2c(gadfmt),readintags(taglist));
1440
FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : String; gadfmt : pCHAR; Const taglist : Array Of Const) : ULONG;
1442
TR_EasyRequestTags := TR_EasyRequest(app,pas2c(bodyfmt),gadfmt,readintags(taglist));
1445
FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : String; gadfmt : String; Const taglist : Array Of Const) : ULONG;
1447
TR_EasyRequestTags := TR_EasyRequest(app,pas2c(bodyfmt),pas2c(gadfmt),readintags(taglist));
1451
{ Change VERSION and LIBVERSION to proper values }
1453
VERSION : string[2] = '0';
1454
LIBVERSION : longword = 0;
1456
{$ifdef use_init_openlib}
1457
{$Info Compiling initopening of triton.library}
1458
{$Info don't forget to use InitTRITONLibrary in the beginning of your program}
1461
triton_exit : Pointer;
1463
procedure ClosetritonLibrary;
1465
ExitProc := triton_exit;
1466
if TritonBase <> nil then begin
1467
CloseLibrary(TritonBase);
1472
procedure InitTRITONLibrary;
1475
TritonBase := OpenLibrary(TRITONNAME,LIBVERSION);
1476
if TritonBase <> nil then begin
1477
triton_exit := ExitProc;
1478
ExitProc := @ClosetritonLibrary;
1480
MessageBox('FPC Pascal Error',
1481
'Can''t open triton.library version ' + VERSION + #10 +
1482
'Deallocating resources and closing down',
1489
TRITONIsCompiledHow := 2;
1490
{$endif use_init_openlib}
1492
{$ifdef use_auto_openlib}
1493
{$Info Compiling autoopening of triton.library}
1496
triton_exit : Pointer;
1498
procedure ClosetritonLibrary;
1500
ExitProc := triton_exit;
1501
if TritonBase <> nil then begin
1502
CloseLibrary(TritonBase);
1509
TritonBase := OpenLibrary(TRITONNAME,LIBVERSION);
1510
if TritonBase <> nil then begin
1511
triton_exit := ExitProc;
1512
ExitProc := @ClosetritonLibrary;
1513
TRITONIsCompiledHow := 1;
1515
MessageBox('FPC Pascal Error',
1516
'Can''t open triton.library version ' + VERSION + #10 +
1517
'Deallocating resources and closing down',
1522
{$endif use_auto_openlib}
1524
{$ifdef dont_use_openlib}
1526
TRITONIsCompiledHow := 3;
1527
{$Warning No autoopening of triton.library compiled}
1528
{$Warning Make sure you open triton.library yourself}
1529
{$endif dont_use_openlib}
1532
END. (* UNIT TRITON *)