home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / oberon / system / cmd.mod < prev    next >
Text File  |  1977-12-31  |  2KB  |  77 lines

  1. MODULE Cmd;    (** ww 9 Aug 91 **)
  2.  
  3.     IMPORT Texts, TextFrames, Viewers, Oberon, Display;
  4.  
  5.     VAR
  6.         STrack-, UTrack-, Bottom-, Top-: INTEGER;
  7.         w: Texts.Writer; Par: Oberon.ParList;
  8.  
  9.     PROCEDURE Call*(name, par: ARRAY OF CHAR; VAR res: INTEGER);
  10.         VAR t: Texts.Text; i: INTEGER;
  11.     BEGIN i := 0;
  12.         WHILE (i < LEN(par)) & (par[i] # 0X) DO
  13.             IF par[i] # "'" THEN Texts.Write(w, par[i]); INC(i)
  14.             ELSE INC(i);
  15.                 IF (i < LEN(par)) & (par[i] = "'") THEN INC(i); Texts.Write(w, "'") ELSE Texts.Write(w, 22X) END
  16.             END
  17.         END;
  18.         t := TextFrames.Text(""); Texts.WriteLn(w); Texts.Append(t, w.buf);
  19.         Par.text := t; Par.pos := 0;
  20.         Oberon.Call(name, Par, FALSE, res)
  21.     END Call;
  22.  
  23.     PROCEDURE OpenSTrack*;
  24.     BEGIN Oberon.OpenTrack(Oberon.SystemTrack(Oberon.Par.vwr.X), 0)
  25.     END OpenSTrack;
  26.  
  27.     PROCEDURE OpenUTrack*;
  28.     BEGIN Oberon.OpenTrack(Oberon.UserTrack(Oberon.Par.vwr.X), 0)
  29.     END OpenUTrack;
  30.  
  31.     PROCEDURE OpenWTrack*;
  32.     BEGIN Oberon.OpenTrack(Oberon.UserTrack(Oberon.Par.vwr.X), Display.Width)
  33.     END OpenWTrack;
  34.  
  35.     PROCEDURE CloseSTrack*;
  36.     BEGIN Viewers.CloseTrack(Oberon.SystemTrack(Oberon.Par.vwr.X))
  37.     END CloseSTrack;
  38.  
  39.     PROCEDURE CloseUTrack*;
  40.     BEGIN Viewers.CloseTrack(Oberon.UserTrack(Oberon.Par.vwr.X))
  41.     END CloseUTrack;
  42.  
  43.     PROCEDURE Pick*;
  44.         VAR v: Viewers.Viewer;
  45.     BEGIN v := Oberon.MarkedViewer();
  46.         Texts.WriteInt(w, v.X, 9); Texts.WriteInt(w, v.Y + v.H, 9); Texts.WriteLn(w); Texts.Append(Oberon.Log, w.buf)
  47.     END Pick;
  48.  
  49.     PROCEDURE PickFrames*;
  50.         VAR v: Viewers.Viewer; f: Display.Frame;
  51.  
  52.         PROCEDURE Print;
  53.         BEGIN
  54.             Texts.WriteInt(w, f.X, 5); Texts.WriteInt(w, f.Y, 5);
  55.             Texts.WriteInt(w, f.W, 5); Texts.WriteInt(w, f.H, 5); Texts.WriteLn(w)
  56.         END Print;
  57.  
  58.     BEGIN
  59.         v := Oberon.MarkedViewer(); f := v; Texts.WriteString(w, "MenuViewer: "); Print;
  60.         f := v.dsc; Texts.WriteString(w, "MenuFrame: "); Print;
  61.         f := v.dsc.next; Texts.WriteString(w, "MainFrame: "); Print;
  62.         Texts.Append(Oberon.Log, w.buf)
  63.     END PickFrames;
  64.  
  65.     PROCEDURE Mark*(x, y: INTEGER);
  66.     BEGIN Oberon.DrawCursor(Oberon.Pointer, Oberon.Star, x, y)
  67.     END Mark;
  68.  
  69. BEGIN
  70.     Texts.OpenWriter(w);
  71.     STrack := Oberon.SystemTrack(Display.Left); UTrack := Oberon.UserTrack(Display.Left);
  72.     Bottom := Display.Bottom; Top := Bottom + Display.Height;
  73.     NEW(Par); Par.frame := Viewers.This(STrack, Bottom)
  74. END Cmd.
  75.  
  76. Cmd.PickFrames
  77.