home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
system
/
filerexx
/
txt
/
moreintuition.mod
< prev
next >
Wrap
Text File
|
1995-02-27
|
2KB
|
96 lines
(*=============================================================================
:Program. MoreIntuition
:Contents.
:Contents.
:Author. Michael `Mick' Hohmann
:Address. Carl-Schilling-Str. 10; 8701 Kirchheim
:Address. UUCP: mickh@imart.franken.de
:Phone. 09 31 / 54 1 55
:Copyright. Copyrighted Software by ImageArts
:Language. Oberon
:Translator. AmigaOberon 2.39d
:History. v1.0 Added LockFrontPubScr()
:History. v1.21 totally rewritten
:History. v1.3 translated to Oberon
:Thanx. an Bernd Möllemann, Jürgen Weinelt und Steffen Reith
:Thanx. für ihre Hilfe bei der Erstellung der Algorithmen
=============================================================================*)
MODULE MoreIntuition;
IMPORT
E:=Exec,
I:=Intuition,
SYSTEM,
Strings;
CONST
versionString = "$VER: MoreIntuition 1.21 (Thursday 23 Jul 1992)";
TYPE
String = ARRAY I.maxPubScreenName+1 OF CHAR;
StringPtr = POINTER TO String;
(* ************************************************************************** *)
PROCEDURE LockFrontPubScr*(VAR pubName:ARRAY OF CHAR):I.ScreenPtr;
VAR pubScr,frontScr : I.ScreenPtr;
pubScrList : E.ListPtr;
pubNamePtr : StringPtr;
rootScr : I.ScreenPtr;
intuiLock : LONGINT;
dummy : BOOLEAN;
BEGIN
(** Initialisierungen **)
pubScr:=NIL;
rootScr:=NIL;
dummy:=TRUE;
IF pubName="" THEN
(** Pointer des vordersten Screens holen **)
intuiLock:=I.LockIBase(0);
frontScr:=I.int^.firstScreen;
I.UnlockIBase(intuiLock);
(** PubScreenListe locken **)
pubScrList:=I.LockPubScreenList();
(** Sucht nach dem vordersten Screen in der PubScreenListe **)
LOOP
pubNamePtr:=SYSTEM.VAL(StringPtr,I.NextPubScreen(pubScr,pubName));
pubScr:=I.LockPubScreen(pubNamePtr^);
IF (pubScr=NIL) OR (pubScr=rootScr) THEN pubScr:=I.LockPubScreen(NIL); EXIT END;
IF (pubScr=frontScr) THEN EXIT END;
I.UnlockPubScreen(NIL,pubScr);
IF dummy THEN
rootScr:=pubScr;
dummy:=FALSE
END
END;
(** PubScreenList unlocken **)
I.UnlockPubScreenList()
ELSE
pubScr:=I.LockPubScreen(pubName)
END;
(** Und nun den Pointer auf den gelockten Screen zurückgeben **)
RETURN pubScr
END LockFrontPubScr;
(* ************************************************************************** *)
BEGIN
END MoreIntuition.