(* -----------------------------------------------------------------------
:Program.       ZipWin
:Contents.      Führt Intuition.ZipWindow() vom CLI aus
:Author.        Frank Schummertz (fs)
:Copyright.     PD
:Language.      Oberon
:Translator.    Amiga Oberon 2.13d
:History.       v1.0 : läuft eigentlich ...
:Address.       Emmastrasse 20, 5600 Wuppertal 2
:Phone.         0202 / 594130
:EMail          FRANK_SCHUMMERTZ@TTB.ZER
:Remark.        Es findet keine Unterscheidung zwischen Groß- und Klein-
:Remark.        schreibung beim Namen des Windows statt. Der angegebene
:Remark.        Fenstername wird linksbündig in den Windowtiteln gesucht.
:Remark.        ZipWin benötigt OS2.0
:Usage.         ZipWin <WindowName>
--------------------------------------------------------------------------*)
MODULE ZipWin;

IMPORT
  i  : Intuition,
  e  : Exec,
  d  : Dos,
  a  : Arguments,
  str: Strings;

VAR
  winname : e.STRING;
  winadr  : i.WindowPtr;

(*
 *
 * FindWindowName
 *
 *)

PROCEDURE FindWindowName (wn : e.STRING): i.WindowPtr;

VAR
  s   : i.ScreenPtr;
  w   : i.WindowPtr;
  wt  : e.STRING;

BEGIN
  (* alle Screens ab IntuitionBase.firstScreen werden nach dem Windownamen
     durchsuchen *)
  s := i.int.firstScreen;
  WHILE s # NIL DO
    w := s.firstWindow;
    WHILE w # NIL DO
      IF w.title # NIL THEN
        COPY (w.title^,wt);
        str.Upper (wt);
        IF str.Occurs (wt, wn) = 0 THEN
          RETURN w;
        END;
      END;
      w := w.nextWindow;
    END;
    s := s.nextScreen;
  END;
  RETURN NIL;

END FindWindowName;

(*
 *
 * Hauptroutine
 *
 *)

BEGIN
  IF a.NumArgs () = 1 THEN
    a.GetArg (1, winname);
    str.Upper (winname);
    winadr := FindWindowName (winname);
    IF winadr # NIL THEN
      i.ZipWindow (winadr);
    ELSE
      d.PrintF ("unbekanntes Fenster...\n");
    END;
  ELSE
    d.PrintF ("ZipWin v1.0 © Frank Schummertz 1992\n");
    d.PrintF ("Syntax : ZipWin <windowname>\n");
    HALT (5);
  END;
END ZipWin.
