home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / system / filerexx / txt / moreintuition.mod < prev    next >
Text File  |  1995-02-27  |  2KB  |  96 lines

  1.  
  2. (*=============================================================================
  3. :Program.       MoreIntuition
  4. :Contents.
  5. :Contents.
  6. :Author.        Michael `Mick' Hohmann
  7. :Address.       Carl-Schilling-Str. 10; 8701 Kirchheim
  8. :Address.       UUCP: mickh@imart.franken.de
  9. :Phone.         09 31 / 54 1 55
  10. :Copyright.     Copyrighted Software by ImageArts
  11. :Language.      Oberon
  12. :Translator.    AmigaOberon 2.39d
  13. :History.       v1.0  Added LockFrontPubScr()
  14. :History.       v1.21 totally rewritten
  15. :History.       v1.3  translated to Oberon
  16. :Thanx.         an Bernd Möllemann, Jürgen Weinelt und Steffen Reith
  17. :Thanx.          für ihre Hilfe bei der Erstellung der Algorithmen
  18. =============================================================================*)
  19.  
  20. MODULE MoreIntuition;
  21.  
  22. IMPORT
  23.   E:=Exec,
  24.   I:=Intuition,
  25.   SYSTEM,
  26.   Strings;
  27.  
  28.  
  29. CONST
  30.   versionString      = "$VER: MoreIntuition 1.21 (Thursday 23 Jul 1992)";
  31.  
  32.  
  33. TYPE
  34.   String             = ARRAY I.maxPubScreenName+1 OF CHAR;
  35.   StringPtr          = POINTER TO String;
  36.  
  37. (* ************************************************************************** *)
  38.  
  39. PROCEDURE LockFrontPubScr*(VAR pubName:ARRAY OF CHAR):I.ScreenPtr;
  40.  
  41. VAR pubScr,frontScr  : I.ScreenPtr;
  42.     pubScrList       : E.ListPtr;
  43.     pubNamePtr       : StringPtr;
  44.     rootScr          : I.ScreenPtr;
  45.     intuiLock        : LONGINT;
  46.     dummy            : BOOLEAN;
  47.  
  48. BEGIN
  49.  
  50.   (** Initialisierungen **)
  51.   pubScr:=NIL;
  52.   rootScr:=NIL;
  53.   dummy:=TRUE;
  54.  
  55.   IF pubName="" THEN
  56.     (** Pointer des vordersten Screens holen **)
  57.     intuiLock:=I.LockIBase(0);
  58.     frontScr:=I.int^.firstScreen;
  59.     I.UnlockIBase(intuiLock);
  60.  
  61.     (** PubScreenListe locken **)
  62.     pubScrList:=I.LockPubScreenList();
  63.  
  64.     (** Sucht nach dem vordersten Screen in der PubScreenListe **)
  65.     LOOP
  66.       pubNamePtr:=SYSTEM.VAL(StringPtr,I.NextPubScreen(pubScr,pubName));
  67.       pubScr:=I.LockPubScreen(pubNamePtr^);
  68.  
  69.       IF (pubScr=NIL) OR (pubScr=rootScr) THEN pubScr:=I.LockPubScreen(NIL); EXIT END;
  70.       IF (pubScr=frontScr) THEN EXIT END;
  71.  
  72.       I.UnlockPubScreen(NIL,pubScr);
  73.  
  74.       IF dummy THEN
  75.        rootScr:=pubScr;
  76.        dummy:=FALSE
  77.       END
  78.     END;
  79.  
  80.     (** PubScreenList unlocken **)
  81.     I.UnlockPubScreenList()
  82.   ELSE
  83.    pubScr:=I.LockPubScreen(pubName)
  84.   END;
  85.  
  86.  (** Und nun den Pointer auf den gelockten Screen zurückgeben **)
  87.  RETURN pubScr
  88.  
  89. END LockFrontPubScr;
  90.  
  91. (* ************************************************************************** *)
  92.  
  93. BEGIN
  94.  
  95. END MoreIntuition.
  96.