home *** CD-ROM | disk | FTP | other *** search
- UNIT LSKExtras;
-
- INTERFACE
-
- USES Intuition, Graphics, Exec, Gadtools, Utility;
-
- Procedure ErrorExit(InitMsg, Errortxt : string);
-
- Function RetrieveStr(p : pointer) : string;
-
- Procedure DisableGadget(g : pGadget; w : pWindow; Disable : byte);
-
- function CStrConstPtr(s : string) : pointer;
-
- Function LockFrontPubScr(VAR Screen : pScreen) : String;
-
- Procedure UnlockFrontPubScr(pubname : string; Screendef : pScreen);
-
- Procedure DisableWindow(w : pWindow; req : pRequester; waitpointer : pointer);
-
- Procedure EnableWindow(w : pWindow; req : pRequester; IDCMP : LONG);
-
- IMPLEMENTATION
-
- Procedure ErrorExit;
-
- VAR
- ReqIT : array [1..2] of tIntuiText;
- ReqOk : tIntuiText;
- ReqStrs : array[1..3] of string;
- z : integer;
- OKRes : boolean;
-
- begin
- ReqStrs[1] := InitMsg;
- ReqStrs[2] := Errortxt;
- ReqStrs[3] := 'Exit'#0;
- for z := 1 to 2 do begin
- with ReqIT[z] do begin
- FrontPen := 0;
- BackPen := 1;
- DrawMode := JAM1;
- LeftEdge := 1;
- TopEdge := (10 * z);
- ITextFont := NIL;
- IText := @ReqStrs[z,1];
- if z < 2 then NextText := @ReqIT[z+1] else NextText := NIL;
- end;
- end;
- with ReqOk do begin
- FrontPen := 0;
- BackPen := 1;
- DrawMode := JAM1;
- LeftEdge := 2;
- TopEdge := 2;
- ITextFont := NIL;
- IText := @ReqStrs[3,1];
- NextText := NIL
- end;
- OKRes := AutoRequest(NIL, @ReqIT[1], NIL, @ReqOk, 0, 0, IntuiTextLength(@ReqIT[2]) + 40, 80);
- { sizes needed by v34 }
- end;
-
- Function RetrieveStr;
- Type
- a = Packed Array [0..255] Of Char; { fills a string with the }
- Var { contents of the string }
- i : Integer; { pointed at }
- sptr : ^a; { (from HSPC init.unit) }
- s : string;
- Begin
- sptr := p;
- s := '';
- i := 0;
- While sptr^[i] <> #0 Do Begin
- s := s + sptr^[i];
- inc(i)
- End;
- RetrieveStr := s
- End;
-
- Procedure DisableGadget;
-
- VAR Dis_Tags : array[0..1] of tTagItem;
-
- begin
- Dis_Tags[0].ti_Tag := GA_Disabled;
- Dis_Tags[0].ti_Data := Disable;
- Dis_Tags[1].ti_Tag := TAG_END;
- GT_SetGadgetAttrsA(g,w,NIL,@Dis_Tags);
- end;
-
- function CStrConstPtr;
- type a = packed array [0..255] of char;
- var p : ^a;
- begin
- s := s + #0; { Make "C" string }
- getmem(p, length(s)); { Get some mem for it }
- move(s[1], p^, length(s)); { Move s into newly alloc'd mem }
- CStrConstPtr := p { Return the pointer }
- end;
-
-
-
-
- Function LockFrontPubScr;
- VAR
- LockKey : Longint;
- My_Node : pPubScreenNode;
- PS_List : pList;
-
- CONST
- name : string = 'error';
-
- begin
- LockKey := LockIBase(0);
- screen := IntuitionBase^.ActiveScreen;
- PS_List := LockPubScreenList;
- My_Node := pPubScreenNode(PS_List^.lh_Head);
- While My_Node^.psn_Node.ln_Succ <> NIL Do Begin
- If my_Node^.psn_Screen = screen Then
- Name := retrievestr(My_Node^.psn_Node.ln_Name);
- My_Node := pPubScreenNode(My_Node^.psn_Node.ln_Succ);
- End;
- UnLockPubScreenList;
- UnlockIBase(LockKey);
- If name = 'error' Then Begin
- screen := lockPubScreen(NIL);
- LockFrontPubScr := '***LSK FPS ERROR';
- If screen = NIL Then begin
- ErrorExit('** LSK Pub Screen broker Failure **','Failed to lock public screen'#0);
- halt(0);
- end;
- End Else Begin
- name := name + #0;
- screen := lockPubScreen(@Name[1]);
- LockFrontPubScr := name;
- If screen = NIL Then begin
- ErrorExit('** LSK Pub Screen broker Failure **','Failed to lock public screen'#0);
- halt(0);
- end;
- End;
-
- end;
-
-
-
- Procedure UnlockFrontPubScr;
-
- begin
- If pubname = '***LSK FPS ERROR' Then begin
- UnlockPubScreen(NIL, screendef);
- end Else begin
- UnlockPubScreen(@PubName[1], screendef);
- end;
- end;
-
- Procedure DisableWindow;
-
- VAR result : boolean;
-
- begin
- result := ModifyIDCMP(w,IDCMP_REFRESHWINDOW);
- (* Block window input *)
- result := Request(req,w);
- (* Set wait pointer *)
- (*if (OSV39)
- * SetWindowPointer(w,WA_BusyPointer,TRUE,TAG_DONE);
- * else
- * not yet, only got v37 defines *)
- SetPointer(w,WaitPointer,16,16,-6,0);
- end;
-
-
- Procedure EnableWindow;
-
- VAR result : boolean;
-
- begin
- (* if (OSV39)
- * SetWindowPointer(w,TAG_DONE);
- * else
- * not yet, only got v37 defines *)
- ClearPointer(w);
- (* Enable window input *)
- EndRequest(req,w);
- (* Enable IDCMP *)
- result := ModifyIDCMP(w,idcmp);
- end;
-
- end.