home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------------------- *)
- (* Module Type : *) UNIT
- (* Module Name : *) sys_gem;
- (* ------------------------------------------------------------------- *
- * Module Version : 1.22 *
- * Module Date : 30-05-94 *
- * Last Change : 30-05-94 *
- * Author : Andrea Pietsch *
- * Programming Language : Pure-Pascal *
- * Copyright : (c) 1994, Andrea Pietsch, 56727 Mayen *
- * ------------------------------------------------------------------- *)
-
- INTERFACE
-
- USES GEM;
-
- (* -------------------------------------------------------------------
- * Konstanten
- * ------------------------------------------------------------------- *)
-
- CONST SG_START = 0;
- SG_END = 1;
- SG_QUIT = 2;
- SG_DRAW = 3;
- SG_POSX = 4;
- SG_POSY = 5;
- SG_VISIBLE = 6;
- SG_INVISIBLE = 7;
- SG_TOP = 8;
- SG_UNTOP = 9;
- SG_SIZED = 10;
- SG_LCLICK1 = 11;
- SG_LCLICK2 = 12;
- SG_RCLICK1 = 13;
- SG_RCLICK2 = 14;
- SG_BUTTON = 15;
- SG_KEY = 16;
- SG_MENU = 17;
- SG_NOWIN = 18;
- SG_DRAGDROP = 19;
- SG_MOVED = 20;
- SG_SLID_UP = 21;
- SG_SLID_DN = 22;
- SG_SLID_MV = 23;
- SG_SLID_PGUP = 24;
- SG_SLID_PGDN = 25;
- SG_TIMER = 26;
-
- (* -------------------------------------------------------------------
- * Nachrichten von Auswertungs-Funktion an SysGem
- * ------------------------------------------------------------------- *)
-
- SG_CLOSE = 0;
- SG_REDRAW = 1;
- SG_TERM = 2;
- SG_CONT = 3;
- SG_ABORT = 4;
- SG_KEYUSED = 5;
- SG_KEYCONT = 6;
-
- (* -------------------------------------------------------------------
- * Spezial-Flags für die Auswertungsfunktion
- * ------------------------------------------------------------------- *)
-
- SG_RIGHTCLICK = 1;
- SG_DOUBLECLICK = 2;
-
- (* -------------------------------------------------------------------
- * Werte für agi aus Parameter
- * ------------------------------------------------------------------- *)
-
- AGI_0 = 0;
- AGI_3 = 1;
- AGI_4 = 2;
-
- (* -------------------------------------------------------------------
- * Prioritäten für die Alert-Box
- * ------------------------------------------------------------------- *)
-
- ALERT_NORM = 1;
- ALERT_STOP = 3;
-
- (* -------------------------------------------------------------------
- * Flags fuer Baeume im Fenster
- * ------------------------------------------------------------------- *)
-
- LINK_LEFT = 0;
- LINK_RIGHT = 1;
- LINK_TOP = 2;
- LINK_BOTTOM = 3;
-
- (* -------------------------------------------------------------------
- * Button-Anordnung für Alert
- * ------------------------------------------------------------------- *)
-
- ButtonCenter = 0;
- ButtonLeft = 1;
- ButtonRight = 2;
-
- (* -------------------------------------------------------------------
- * Stati für RedrawObj
- * ------------------------------------------------------------------- *)
-
- FLIP_STATE = 0;
- DEL_STATE = 1;
- SET_STATE = 2;
- UPD_STATE = 3;
-
- (* -------------------------------------------------------------------
- * Stati für Scroll-Funktionen
- * ------------------------------------------------------------------- *)
-
- SCROLL_UP = 1;
- SCROLL_DOWN = 2;
- SCROLL_RIGHT = 3;
- SCROLL_LEFT = 4;
- SCROLL_PG_LEFT = 5;
- SCROLL_PG_RIGHT = 6;
- SCROLL_PG_UP = 7;
- SCROLL_PG_DOWN = 8;
-
- (* -------------------------------------------------------------------
- * Stati für SetWindowParm
- * ------------------------------------------------------------------- *)
-
- SET_X = 1;
- SET_Y = 2;
- SET_W = 3;
- SET_H = 4;
-
- (* -------------------------------------------------------------------
- * Typen
- * ------------------------------------------------------------------- *)
-
- TYPE RECT = RECORD
- x : INTEGER;
- y : INTEGER;
- w : INTEGER;
- h : INTEGER;
- END;
-
- COOKIE = RECORD
- id : LONGINT;
- value : LONGINT;
- END;
-
- DRAG_DROP_PTR = ^DRAG_DROP;
- DRAG_DROP = RECORD
- gemini : integer;
- data_type : longint;
- data : pchar;
- data_len : longint;
- data_id : packed array [0..127] of char;
- filename : packed array [0..127] of char;
- x, y : integer;
- state : integer;
- obj : integer;
- id : longint;
- END;
-
- DIALOG_INFO_PTR = ^DIALOG_INFO;
- DIALOG_INFO = RECORD
- id : longint;
- user : pointer;
- special : word;
- dd : DRAG_DROP_PTR;
- END;
-
- WINDOW_INFO_PTR = ^WINDOW_INFO;
- WINDOW_INFO = RECORD
- id : LONGINT;
- pos_x : LONGINT;
- pos_y : LONGINT;
- doc_x : LONGINT;
- doc_y : LONGINT;
- scroll : INTEGER;
- handle : INTEGER;
- key : INTEGER;
- state : INTEGER;
- mTitle : INTEGER;
- mItem : INTEGER;
- mx, my : INTEGER;
- line : LONGINT;
- column : LONGINT;
- line_ptr : pchar;
- work_area : RECT;
- draw_area : RECT;
- clip : RECT;
- user : POINTER;
- obj_id : LONGINT;
- item : INTEGER;
- dd : DRAG_DROP_PTR;
- END;
-
- PARAMETER = RECORD
- vdi_handle : INTEGER;
- charw : INTEGER;
- charh : INTEGER;
- boxw : INTEGER;
- boxh : INTEGER;
- appl_id : INTEGER;
- xmax : INTEGER;
- ymax : INTEGER;
- desktop : RECT;
- bitplanes : INTEGER;
- max_colors : INTEGER;
- act_colors : INTEGER;
- color_avail : integer;
- acc_entry : INTEGER;
- multitask : integer;
- aes_version : INTEGER;
- tos_version : WORD;
- magx : INTEGER;
- magx_release : INTEGER;
- mint : INTEGER;
- winx : integer;
- search : integer;
- agi : INTEGER;
- draw_3d : integer;
- END;
-
- AREA = RECORD (* Bei Benutzung _nicht_ ändern *)
- init : integer;
- x, y, w, h : INTEGER;
- size : LONGINT;
- mf : MFDB;
- END;
-
- (* ------------------------------------------------------------------- *)
-
- DPROC = function ( msg, button : integer; inf : DIALOG_INFO_PTR ) : integer;
- APROC = function ( msg : integer; inf : WINDOW_INFO_PTR ) : integer;
- RPROC = procedure ( inf : WINDOW_INFO_PTR );
- MPROC = function ( msg, sub : byte; l1, l2 : longint ) : longint;
- TPROC = procedure;
- EPROC = procedure ( ed : integer; str : pchar );
- FPROC = function ( tree : AESTreePtr; ed : integer; id : longint ) : integer;
- CPROC = function ( str1, str2 : pchar ) : integer;
- WPROC = procedure ( win_id : longint; enter : integer );
-
- (* -------------------------------------------------------------------
- * Berechnet aus einem String ein Long. Wird für die (Fenster) Id's
- * benötigt.
- * ------------------------------------------------------------------- *)
-
- function MakeId ( const id : string ) : longint;
-
- (* -------------------------------------------------------------------
- * An- und Abmelden
- * ------------------------------------------------------------------- *)
-
- function Init_GEM ( par : pointer; const acc_name : string; prg_id : longint; const prg_name : string; usr_id : longint; const usr_name : string; key : longint ) : integer;
- procedure Exit_GEM;
- external;
- procedure SetAccProc ( a_open, a_close : TPROC );
- external;
-
- (* -------------------------------------------------------------------
- * Abfrageroutinen
- * ------------------------------------------------------------------- *)
-
- function appl_geti ( ap_gtype : integer; var ap_gout1, ap_gout2, ap_gout3, ap_gout4 : integer ) : integer;
- external;
- function objc_sysv ( ob_smode, ob_swhich, ob_sival1, ob_sival2 : integer; var ob_soval1, ob_soval2 : integer ) : integer;
- external;
- function magx_avail : longint;
- external;
- function mint_avail : word;
- external;
- function winx_avail : integer;
- external;
- function has_search : integer;
- external;
-
- procedure CalcArea ( tree : AESTreePtr; obj : integer; var r : rect );
- external;
- function objc_frame ( tree : AESTreePtr; entry : integer ) : integer;
- external;
-
- (* -------------------------------------------------------------------
- * Resourcen
- * ------------------------------------------------------------------- *)
-
- function LoadResource ( const rsc_name : string ) : word;
- function RscAdr ( tree_type, index : integer ) : AesTreePtr;
- external;
- procedure RscFree;
- external;
-
- (* -------------------------------------------------------------------
- * Menuezeile
- * ------------------------------------------------------------------- *)
-
- function SetDeskTopMenu( menu : AESTreePtr; action : APROC ) : integer;
- external;
- procedure RemDeskTopMenu;
- external;
- procedure SelectMenu ( item : integer; invert : integer );
- external;
- function SetDeskTop ( tree : AESTreePtr; first : integer; action : APROC ) : integer;
- external;
- procedure RemoveDeskTop;
- external;
-
- (* -------------------------------------------------------------------
- * Einstellungen
- * ------------------------------------------------------------------- *)
-
- procedure UseRightButton( use : integer );
- external;
- procedure TellKeyStrokes( tell : integer );
- external;
- procedure SetReturn ( like_sysgem : integer );
- external;
- procedure UseHighButtons( use : integer );
- external;
- procedure SetButton ( just : integer );
- external;
- procedure FrameTextColor( color : integer );
- external;
- procedure DialPosXY ( center : integer );
- external;
- procedure SetIconColor ( color : integer );
- external;
- procedure LinkImage ( win_id : longint; image : bitblkptr; const text : string );
- procedure SetFieldProc ( field : FPROC );
- external;
- procedure ShortCutColor ( color : integer );
- external;
- procedure SetAlertTitle ( const title : string );
-
- (* -------------------------------------------------------------------
- * Cookies
- * ------------------------------------------------------------------- *)
-
- function RemoveCookie ( id : longint ) : integer;
- external;
- function SetCookie ( id : longint ) : integer;
- external;
- function GetCookie ( id : longint; var value : longint ) : integer;
- external;
-
- (* -------------------------------------------------------------------
- * Texte im Fenster
- * ------------------------------------------------------------------- *)
-
- function LinkList ( win_id : longint; const text : string ) : pchar;
- function AddToList ( win_id : longint; const text : string ) : pchar;
- function ChgInList ( win_id : longint; line : word; const text : string ) : pchar;
- function DelInList ( win_id : longint; line : word ) : integer;
- external;
- function CountLines ( win_id : longint ) : word;
- external;
- function Display ( const f_name, wname, winfo : string; len : integer; win_id : longint; x, y, w, h : integer; action : APROC ) : WORD;
- function cmp_strings_up( str1, str2 : pchar ) : integer;
- external;
- function cmp_strings_dn( str1, str2 : pchar ) : integer;
- external;
- procedure do_qsort ( win_id : longint; compare : CPROC );
- external;
-
- (* -------------------------------------------------------------------
- * Popup's
- * ------------------------------------------------------------------- *)
-
- function PopUp ( tree : AESTreePtr; x, y, start, first : integer ) : integer;
- external;
- function xPopUp ( tree : AESTreePtr; obj : integer; tree2 : AESTreePtr; start : integer; var first : integer ) : integer;
- external;
- function Cycle ( tree : AESTreePtr; obj : integer; pop_tree : AESTreePtr; first, last : integer; var ret : integer ) : integer;
- external;
- function Listbox ( str : pchar; count : integer; len : integer; tree : AESTreePtr; box : integer ) : integer;
- external;
-
- (* -------------------------------------------------------------------
- * Sliderboxen
- * ------------------------------------------------------------------- *)
-
- function LinkSlider ( tree : AESTreePtr; up, dn, show, hide, max, box : integer; buffer : pointer; len, format : integer ) : integer;
- external;
- procedure RedrawSliderBox(tree : AESTreePtr; box : integer );
- external;
- procedure ScrollSlider ( tree : AESTreePtr; box, what : integer );
- external;
- function AddSliderItem ( tree : AESTreePtr; box, anz_items : integer ) : integer;
- external;
- function SetSliderPos ( tree : AESTreePtr; box, pos : integer; draw : integer ) : integer;
- external;
- function UnLinkSlider ( tree : AESTreePtr; box : integer ) : integer;
- external;
-
- (* -------------------------------------------------------------------
- * Funktionen zum schreiben ins Fenster
- * ------------------------------------------------------------------- *)
-
- function OpenLogWindow ( win_id : longint; const title, info : string; columns, rows, x, y : integer; action : aproc ) : integer;
- procedure wwrite ( win_id : longint; const text : string );
- procedure wcls ( win_id : longint );
- external;
- procedure wposxy ( win_id : longint; x, y : integer );
- external;
- procedure wgetxy ( win_id : longint; var x, y : integer );
- external;
- function wgetchar ( win_id : longint; x, y : integer; var effect : integer ) : char;
- external;
- procedure HideCursor ( win_id : longint );
- external;
- procedure ShowCursor ( win_id : longint );
- external;
-
- (* -------------------------------------------------------------------
- * Fenster- und Dialoge I
- * ------------------------------------------------------------------- *)
-
- function NewDialog ( tree : AESTreePtr ) : integer;
- external;
- procedure DelDialog ( tree : AESTreePtr );
- external;
- function BeginDialog ( win_id : longint; tree : AESTreePtr; ed : INTEGER; const title : string ) : integer;
- function HdlDialog ( win_id : longint ) : integer;
- external;
- procedure FinishDialog ( win_id : longint );
- external;
- function Alert ( priority, def : integer; const text : string ) : integer;
- function DoDialog ( tree : AESTreePtr; ed : integer; const text : string ) : integer;
- procedure RedrawObj ( tree : AESTreePtr; obj, depth, state, flag : integer );
- external;
- procedure ShowDialog ( tree : AESTreePtr );
- external;
- procedure EndDialog ( tree : AESTreePtr );
- external;
- function HandleDialog ( tree : AESTreePtr; ed : integer ) : integer;
- external;
- procedure ChangeButton ( tree : AESTreePtr; obj : integer; const text : string; draw : integer );
- procedure SetEditField ( tree : AESTreePtr; field : integer );
- external;
- procedure GetEditFields ( tree : AESTreePtr; callback : EPROC );
- external;
- procedure ClearEditFields ( tree : AESTreePtr );
- external;
- function IsMenuKey ( tree : AESTreePtr; scan, state : word ) : integer;
- external;
- procedure SetWinMinSize ( win_id : longint; w, h : integer );
- external;
- procedure SetWinMaxSize ( win_id : longint; w, h : integer );
- external;
- function IsVisible ( handle : integer ) : integer;
- external;
- procedure SetWatch ( var r : rect; enter : integer; proc : wproc );
- external;
- procedure WatchWindow ( win_id : longint; enter : integer; proc : wproc );
- external;
-
- (* -------------------------------------------------------------------
- * Fenster- und Dialoge II
- * ------------------------------------------------------------------- *)
-
- FUNCTION OpenWindow ( id : LONGINT;
- wTitle, wInfo : STRING;
- flags : INTEGER;
- menu_line : AESTreePtr;
- align : INTEGER;
- part_redraw : integer;
- scroll_x, scroll_y : INTEGER;
- doc_x, doc_y : LONGINT;
- x, y, w, h : INTEGER;
- user : POINTER;
- redraw : RProc;
- action : AProc ) : INTEGER;
-
- FUNCTION WindowDialog ( id : LONGINT;
- xpos, ypos : INTEGER;
- wtitle, winfo : STRING;
- shut, force : integer;
- tree, menu_line : AESTreePtr;
- first_edit : INTEGER;
- user : pointer;
- dfunc : DProc ) : integer;
-
- (* -------------------------------------------------------------------
- * Fensterroutinen
- * ------------------------------------------------------------------- *)
-
- procedure CloseAllWindows;
- external;
- procedure RectIntersect ( var r1, r2 : rect );
- external;
- procedure SetWindowName ( handle : integer; const wname : string );
- procedure SetWindowInfo ( handle : integer; const winfo : string );
- function GetWindowId ( handle : integer ) : longint;
- external;
- function GetTopWindow : integer;
- external;
- function GetTopWindowId : longint;
- external;
- function TopWindow ( handle : integer ) : integer;
- external;
- function GetHandle ( id : longint ) : integer;
- external;
- function CloseWindow ( handle : integer ) : integer;
- external;
- procedure WhiteArea ( var r : rect );
- external;
- function LinkTree ( win_id : longint; tree : AESTreePtr; id : longint; pos : integer ) : integer;
- external;
- function SetWindowParm ( handle, what : integer; value : longint ) : longint;
- external;
- procedure ScrollWindow ( handle, what : integer );
- external;
- procedure RedrawArea ( handle : integer; var r : rect );
- external;
- procedure RedrawWindow ( handle : integer );
- external;
- procedure RedrawDialog ( tree : AESTreePtr );
- external;
-
- (* -------------------------------------------------------------------
- * Verwaltung
- * ------------------------------------------------------------------- *)
-
- function HandleSysGem : integer;
- external;
- procedure DispatchEvents;
- external;
- procedure TerminateSysGem;
- external;
- function SearchProgram ( const name : string ) : integer;
- procedure UseMTosIconify ( use : integer );
- external;
-
- (* -------------------------------------------------------------------
- * Timer-Verwaltung
- * ------------------------------------------------------------------- *)
-
- procedure SetProcTimer ( p : TPROC );
- external;
- procedure SetTimer ( ms_low, ms_high : integer );
- external;
- procedure SetDispatchTime ( ms_low, ms_high : integer );
- external;
- procedure SetWindowTimer ( win_id : longint; ms_low, ms_high : integer );
- external;
- procedure EnableTimer;
- external;
- procedure DisableTimer;
- external;
-
- (* -------------------------------------------------------------------
- * Bildschirmroutinen
- * ------------------------------------------------------------------- *)
-
- FUNCTION NewArea ( VAR a : AREA ) : integer;
- external;
- PROCEDURE FreeArea ( VAR a : AREA );
- external;
- PROCEDURE ClearArea ( VAR a : AREA );
- external;
- FUNCTION SaveArea ( handle : INTEGER; VAR a : AREA; VAR r : RECT ) : integer;
- external;
- PROCEDURE RestoreArea ( handle : INTEGER; VAR a : AREA );
- external;
- PROCEDURE CopyArea ( handle : INTEGER; VAR a : AREA; xx, yy : INTEGER );
- external;
- PROCEDURE MoveScreen ( handle : INTEGER; VAR r : RECT; x, y : INTEGER );
- external;
-
- (* -------------------------------------------------------------------
- * Textfunktionen
- * ------------------------------------------------------------------- *)
-
- function GetText ( tree : AESTreePtr; index : integer; VAR s : String ) : pchar;
- procedure SetText ( tree : AESTreePtr; index : integer; const s : String );
- procedure UseBlanks ( use : integer );
- external;
-
- (* ------------------------------------------------------------------- *)
-
- PROCEDURE ShowArrow;
- PROCEDURE ShowBee;
- PROCEDURE ShowHour;
- PROCEDURE ShowFinger;
- PROCEDURE ShowHand;
- PROCEDURE ShowThinCross;
- PROCEDURE ShowThickCross;
- PROCEDURE ShowOutlineCross;
- PROCEDURE ShowMouse;
- PROCEDURE HideMouse;
-
- (* ------------------------------------------------------------------- *)
-
- PROCEDURE SetState ( tree : AESTreePtr; obj, state : INTEGER );
- PROCEDURE DelState ( tree : AESTreePtr; obj, state : INTEGER );
- FUNCTION GetState ( tree : AESTreePtr; obj, state : INTEGER ) : boolean;
- PROCEDURE SetGlobalState ( tree : AESTreePtr; obj, state : INTEGER );
-
- PROCEDURE SetFlags ( tree : AESTreePtr; obj, flag : INTEGER );
- PROCEDURE DelFlags ( tree : AESTreePtr; obj, flag : INTEGER );
- FUNCTION GetFlags ( tree : AESTreePtr; obj, flag : INTEGER ) : boolean;
- PROCEDURE SetGlobalFlags ( tree : AESTreePtr; obj, flag : INTEGER );
-
- (* ------------------------------------------------------------------- *)
-
- IMPLEMENTATION
-
- {$I-}
- {$Q-}
- {$T-}
- {$X+}
- {$Z+}
-
- (* -------------------------------------------------------------------
- * Ab hier befinden sich die spezifischen Anpassungen für die C-Lib.
- *
- * AUF GAR KEINEN FALL IRGENDWAS AENDERN!!!!
- *
- * Bei einer neuen Pascal-Version können Sie einfach durch neukompilieren
- * dieser Unit eine neue Lib erstellen. Bei neuen Versionen einfach die
- * SYS_PAS.LIB austauschen und neu übersetzen. Und schon haben Sie eine
- * neue Lib. NIE wieder Abhängigkeiten von der Pascal-Version/Release!
- * ------------------------------------------------------------------- *)
-
- var errno : integer; (* interne Error-Variable *)
- _app : integer; (* App oder ACC? *)
- _atexitv : longint; (* Adresse *)
- _filsysv : longint; (* Adresse *)
-
- (* -------------------------------------------------------------------
- * Berechnet aus einem String ein Long. Wird für die (Fenster) Id's
- * benötigt.
- * ------------------------------------------------------------------- *)
-
- function MakeId ( const id : string ) : longint;
-
- var conv : record
- case integer of
- 0 : ( x1 : packed array [0..3] of char );
- 1 : ( x2 : longint );
- end;
-
- begin
- conv.x1 [0] := id [1];
- conv.x1 [1] := id [2];
- conv.x1 [2] := id [3];
- conv.x1 [3] := id [4];
- MakeId := conv.x2;
- end;
-
- (* -------------------------------------------------------------------
- * Die Maus-Funktionen. Müssen hier als Proceduren sein, da sie in C
- * als #define deklariert sind.
- * ------------------------------------------------------------------- *)
-
- function graf_mouse ( number : integer; form : pointer ) : integer;
- external;
-
- (* ------------------------------------------------------------------- *)
-
- PROCEDURE ShowArrow; BEGIN Graf_Mouse ( 0, NIL ); END;
- PROCEDURE ShowBee; BEGIN Graf_Mouse ( 2, NIL ); END;
- PROCEDURE ShowHour; BEGIN Graf_Mouse ( 2, NIL ); END;
- PROCEDURE ShowFinger; BEGIN Graf_Mouse ( 3, NIL ); END;
- PROCEDURE ShowHand; BEGIN Graf_Mouse ( 4, NIL ); END;
- PROCEDURE ShowThinCross; BEGIN Graf_Mouse ( 5, NIL ); END;
- PROCEDURE ShowThickCross; BEGIN Graf_Mouse ( 6, NIL ); END;
- PROCEDURE ShowOutlineCross; BEGIN Graf_Mouse ( 7, NIL ); END;
- PROCEDURE ShowMouse; BEGIN Graf_Mouse ( 257, NIL ); END;
- PROCEDURE HideMouse; BEGIN Graf_Mouse ( 256, NIL ); END;
-
- (* -------------------------------------------------------------------
- * Die Flag-Funktionen. Müssen hier als Proceduren sein, da sie in C
- * als #define deklariert sind.
- * ------------------------------------------------------------------- *)
-
- PROCEDURE SetState ( tree : AESTreePtr; obj, state : INTEGER );
-
- begin
- tree^[obj].ob_state := ( tree^[obj].ob_state OR state );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- PROCEDURE SetGlobalState ( tree : AESTreePtr; obj, state : INTEGER );
-
- begin
- tree^[obj].ob_state := state;
- end;
-
- (* ------------------------------------------------------------------- *)
-
- PROCEDURE DelState ( tree : AESTreePtr; obj, state : INTEGER );
-
- begin
- tree^[obj].ob_state := ( tree^[obj].ob_state AND ( NOT state ));
- end;
-
- (* ------------------------------------------------------------------- *)
-
- PROCEDURE SetFlags ( tree : AESTreePtr; obj, flag : INTEGER );
-
- begin
- tree^[obj].ob_flags := ( tree^[obj].ob_flags OR flag );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- PROCEDURE SetGlobalFlags ( tree : AESTreePtr; obj, flag : INTEGER );
-
- begin
- tree^[obj].ob_flags := flag;
- end;
-
- (* ------------------------------------------------------------------- *)
-
- PROCEDURE DelFlags ( tree : AESTreePtr; obj, flag : INTEGER );
-
- begin
- tree^[obj].ob_flags := ( tree^[obj].ob_flags AND ( NOT flag ));
- end;
-
- (* ------------------------------------------------------------------- *)
-
- FUNCTION GetState ( tree : AESTreePtr; obj, state : INTEGER ) : boolean;
-
- begin
- GetState := (( tree^[obj].ob_state AND state ) <> 0 );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- FUNCTION GetFlags ( tree : AESTreePtr; obj, flag : INTEGER ) : boolean;
-
- begin
- GetFlags := (( tree^[obj].ob_flags AND flag ) <> 0 );
- end;
-
- (* -------------------------------------------------------------------
- * Prototypen
- * ------------------------------------------------------------------- *)
-
- function sgem_Init_GEM ( p : pointer; acc : pchar; prg_id : Longint; prg_name : pchar; usr_id : longint; usr_name : pchar; key : longint ) : integer;
- external;
- function sgem_Alert ( priority : integer; def : integer; txt : pchar ) : integer;
- external;
- function sgem_DoDialog ( tree : pointer; obj : integer; txt : pchar ) : integer;
- external;
- function sgem_LinkList ( win_id : longint; text : pchar ) : pchar;
- external;
- function sgem_AddToList ( win_id : longint; text : pchar ) : pchar;
- external;
- function sgem_ChgInList ( win_id : longint; line : word; text : pchar ) : pchar;
- external;
- procedure sgem_SetAlertTitle ( title : pchar );
- external;
- procedure sgem_LinkImage ( win_id : longint; image : pointer; text : pchar );
- external;
- function sgem_LoadResource ( rsc_name : pchar ) : word;
- external;
- function sgem_OpenLogWindow ( win_id : longint; title, info : pchar; columns, rows, x, y : integer; action : aproc ) : integer;
- external;
- procedure sgem_ChangeButton ( tree : AESTreePtr; obj : integer; text : pchar; draw : integer );
- external;
- procedure xwwrite ( win_id : longint; text : pchar );
- external;
- procedure sgem_SetText ( tree : AESTreePtr; index : integer; s : pchar );
- external;
- function sgem_GetText ( tree : AESTreePtr; index : integer; s : pchar ) : pchar;
- external;
- procedure sgem_SetWindowInfo ( handle : integer; winfo : pchar );
- external;
- procedure sgem_SetWindowName ( handle : integer; wname : pchar );
- external;
- function sgem_WindowDialog ( id : LONGINT; xpos, ypos : INTEGER; wtitle, winfo : pchar; shut, force : integer; tree, menu_line : AESTreePtr; first_edit: INTEGER; user:pointer;dfunc : DProc ) : integer;
- external;
- function OpenTxtWin ( win_id : longint; wname, winfo : pchar; x, y, w, h : integer; action : aproc ) : integer;
- external;
- function sgem_BeginDialog ( win_id : longint; tree : AESTreePtr; ed : integer; title : pchar ) : integer;
- external;
- function sgem_OpenWindow ( id : LONGINT; wTitle, wInfo: pchar; flags: INTEGER;menu_line: AESTreePtr;align: INTEGER;part_redraw: integer;scroll_x, scroll_y: INTEGER;
- doc_x, doc_y: LONGINT; x, y, w, h : INTEGER; user: POINTER; redraw: RProc; action: AProc ) : INTEGER;
- external;
- function sgem_searchprogram ( pname : pchar ) : integer;
- external;
-
- (* ------------------------------------------------------------------- *)
-
- function Init_GEM ( par : pointer; const acc_name : string; prg_id : longint; const prg_name : string; usr_id : longint; const usr_name : string; key : longint ) : integer;
-
- var s1 : string;
- s2 : string;
- s3 : string;
-
- begin
- s1 := acc_name + #0;
- s2 := prg_name + #0;
- s3 := usr_name + #0;
- Init_GEM := sgem_Init_GEM ( par, @s1[1], prg_id, @s2[1], usr_id, @s3 [1], key );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function Alert ( priority, def : integer; const text : string ) : integer;
-
- var s1 : string;
-
- begin
- s1 := text + #0;
- Alert := sgem_Alert ( priority, def, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function DoDialog ( tree : AESTreePtr; ed : integer; const text : string ) : integer;
-
- var s1 : string;
-
- begin
- s1 := text + #0;
- DoDialog := sgem_DoDialog ( tree, ed, @s1 [1] );
- end;
-
- (* -------------------------------------------------------------------
- * Da PP die File-Funktionen aus C nicht frisst, hier das Äquivalent.
- * Ist (leider) etwas langsamer als in C... :-(((
- * ------------------------------------------------------------------- *)
-
- function Display ( const f_name, wname, winfo : string; len : integer; win_id : longint; x, y, w, h : integer; action : APROC ) : WORD;
-
- var s1, s2, s3, s4 : string;
- f : TEXT;
- i : WORD;
- z : INTEGER;
-
- begin
- s1 := f_name + #0;
- s2 := wname + #0;
- s3 := winfo + #0;
-
- assign ( f, f_name );
- Reset ( f );
- if ( IOResult <> 0 ) then
- begin
- Display := 0;
- exit;
- end;
- z := OpenTxtWin ( win_id, @s2 [1], @s3 [1], x, y, w, h, action );
- if ( z <= 0 ) then
- begin
- close ( f );
- Display := 0;
- exit;
- end;
- i := 0;
- while ( not ( eof ( f ))) do
- begin
- fillchar ( s4, sizeof ( s4 ), 0 );
- readln ( f, s4 );
- if ( i = 0 ) then
- begin
- LinkList ( win_id, s4 );
- end
- else
- begin
- AddToList ( win_id, s4 );
- end;
- inc ( i );
- end;
- close ( f );
- display := i;
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function LinkList ( win_id : longint; const text : string ) : pchar;
-
- var s1 : string;
-
- begin
- s1 := text + #0;
- LinkList := sgem_LinkList ( win_id, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function AddToList ( win_id : longint; const text : string ) : pchar;
-
- var s1 : string;
-
- begin
- s1 := text + #0;
- AddToList := sgem_AddToList ( win_id, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function ChgInList ( win_id : longint; line : word; const text : string ) : pchar;
-
- var s1 : string;
-
- begin
- s1 := text + #0;
- ChgInList := sgem_ChgInList ( win_id, line, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- procedure SetAlertTitle ( const title : string );
-
- var s1 : string;
-
- begin
- s1 := title + #0;
- sgem_SetAlertTitle ( @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- procedure LinkImage ( win_id : longint; image : bitblkptr; const text : string );
-
- var s1 : string;
-
- begin
- s1 := text + #0;
- sgem_LinkImage ( win_id, image, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function LoadResource ( const rsc_name : string ) : word;
-
- var s1 : string;
-
- begin
- s1 := rsc_name + #0;
- LoadResource := sgem_LoadResource ( @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function OpenLogWindow ( win_id : longint; const title, info : string; columns, rows, x, y : integer; action : aproc ) : integer;
-
- var s1, s2 : string;
-
- begin
- s1 := title + #0;
- s2 := info + #0;
- OpenLogWindow := sgem_OpenLogWindow ( win_id, @s1 [1], @s2 [1], columns, rows, x, y, action );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- procedure ChangeButton ( tree : AESTreePtr; obj : integer; const text : string; draw : integer );
-
- var s1 : string;
-
- begin
- s1 := text + #0;
- sgem_ChangeButton ( tree, obj, @s1 [1], draw );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- procedure wwrite ( win_id : longint; const text : string );
-
- var s1 : string;
-
- begin
- s1 := text + #0;
- xwwrite ( win_id, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- procedure SetText ( tree : AESTreePtr; index : integer; const s : String );
-
- var s1 : string;
-
- begin
- s1 := s + #0;
- sgem_SetText ( tree, index, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function GetText ( tree : AESTreePtr; index : integer; VAR s : String ) : pchar;
-
- var s1 : string;
-
- begin
- GetText := sgem_GetText ( tree, index, @s1 );
- ctopascalstring ( s, @s1 );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- procedure SetWindowInfo ( handle : integer; const winfo : string );
-
- var s1 : string;
-
- begin
- s1 := winfo + #0;
- sgem_SetWindowInfo ( handle, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- procedure SetWindowName ( handle : integer; const wname : string );
-
- var s1 : string;
-
- begin
- s1 := wname + #0;
- sgem_SetWindowName ( handle, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function BeginDialog ( win_id : longint; tree : AESTreePtr; ed : INTEGER; const title : string ) : integer;
-
- var s1 : string;
-
- begin
- s1 := title + #0;
- BeginDialog := sgem_BeginDialog ( win_id, tree, ed, @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function SearchProgram ( const name : string ) : integer;
-
- var s1 : string;
-
- begin
- s1 := name + #0;
- SearchProgram := sgem_SearchProgram ( @s1 [1] );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function WindowDialog ( id : LONGINT;
- xpos, ypos : INTEGER;
- wtitle, winfo : STRING;
- shut, force : integer;
- tree, menu_line : AESTreePtr;
- first_edit : INTEGER;
- user : pointer;
- dfunc : DProc ) : integer;
-
- var s1, s2 : string;
-
- begin
- s1 := wtitle + #0;
- s2 := winfo + #0;
- WindowDialog := sgem_WindowDialog ( id, xpos, ypos, @s1 [1], @s2 [1], shut, force, tree, menu_line, first_edit, user, dfunc );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- function OpenWindow ( id : LONGINT;
- wTitle, wInfo : STRING;
- flags : INTEGER;
- menu_line : AESTreePtr;
- align : INTEGER;
- part_redraw : integer;
- scroll_x, scroll_y : INTEGER;
- doc_x, doc_y : LONGINT;
- x, y, w, h : INTEGER;
- user : POINTER;
- redraw : RProc;
- action : AProc ) : INTEGER;
-
- var s1, s2 : string;
-
- begin
- s1 := wtitle + #0;
- s2 := winfo + #0;
- OpenWindow := sgem_OpenWindow ( id,@s1[1],@s2[1],flags,menu_line,align, part_redraw,scroll_x,scroll_y,doc_x, doc_y,x,y,w,h,user,redraw,action );
- end;
-
- (* -------------------------------------------------------------------
- * Funktionen für die Speicherverwaltung. PurePascal schmeisst Bomben
- * und scheint auszurasten, wenn die über C läuft...
- * ------------------------------------------------------------------- *)
-
- procedure getmemx ( var x : pointer; s : longint );
-
- begin
- getmem ( x, s );
- end;
-
- (* ------------------------------------------------------------------- *)
-
- procedure frememx ( var x : pointer; s : longint );
-
- begin
- freemem ( x, s );
- end;
-
- (* -------------------------------------------------------------------
- * Die Lib. Ohne die läuft nix...
- * ------------------------------------------------------------------- *)
-
- (*$L sys_pas.lib *) (* Die Lib. Pfad einfach anpassen *)
-
- (* -------------------------------------------------------------------
- * Startup-Code, damit die Lib richtig hochkommt...
- * ------------------------------------------------------------------- *)
-
- begin
- _filsysv := longint ( 0 );
- _atexitv := longint ( 0 );
- errno := 0;
- if (( AppFlag = TRUE ) and ( _filsysv = 0 ) and ( _atexitv = 0 )) then
- begin
- _app := 1;
- end
- else
- begin
- _app := 0;
- end;
- end.
-