home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / oberon / system1 / dialoginsert.mod (.txt) < prev    next >
Oberon Text  |  1977-12-31  |  7KB  |  154 lines

  1. Syntax10.Scn.Fnt
  2. Syntax10i.Scn.Fnt
  3. StampElems
  4. Alloc
  5. 8 May 95
  6. Syntax10b.Scn.Fnt
  7. MODULE DialogInsert;
  8.     (* Markus Knasm
  9. ller 3 Aug 94 - 
  10.     IMPORT DialogFrames, DialogListBoxes, Dialogs, DialogTexts, Oberon, TextFrames, Texts, Viewers;
  11.     VAR wr: Texts.Writer;
  12.     PROCEDURE Open*; 
  13.         VAR x, y: INTEGER; panel: Dialogs.Panel; w: Texts.Writer; t: Texts.Text; o: Dialogs.Object;
  14.     BEGIN
  15.         panel := Dialogs.cmdPanel;
  16.         o := panel.NamedObject ("l");
  17.         WITH o: DialogListBoxes.Item DO
  18.             Texts.OpenWriter (w);
  19.             Texts.WriteString (w, "CheckBox"); Texts.WriteLn (w);
  20.             Texts.WriteString (w, "Button"); Texts.WriteLn (w);
  21.             Texts.WriteString (w, "StaticText"); Texts.WriteLn (w);
  22.             Texts.WriteString (w, "RadioButton"); Texts.WriteLn (w);
  23.             Texts.WriteString (w, "GroupBox"); Texts.WriteLn (w);
  24.             Texts.WriteString (w, "Text"); Texts.WriteLn (w);
  25.             Texts.WriteString (w, "Line"); Texts.WriteLn (w);
  26.             Texts.WriteString (w, "Circle"); Texts.WriteLn (w);
  27.             Texts.WriteString (w, "Rectangle"); Texts.WriteLn (w);
  28.             Texts.WriteString (w, "Slider"); Texts.WriteLn (w);
  29.             Texts.WriteString (w, "IntegerSlider"); Texts.WriteLn (w);
  30.             Texts.WriteString (w, "Clock"); Texts.WriteLn (w);
  31.             Texts.WriteString (w, "AnalogClock"); Texts.WriteLn (w);
  32.             Texts.WriteString (w, "Date"); Texts.WriteLn (w);
  33.             Texts.WriteString (w, "ColorPicker"); Texts.WriteLn (w);
  34.             Texts.WriteString (w, "ListBox"); Texts.WriteLn (w);
  35.             Texts.WriteString (w, "ComboBox"); Texts.WriteLn (w);
  36.             Texts.WriteString (w, "Graphic"); Texts.WriteLn (w);
  37.             Texts.WriteString (w, "KeplerGraph");
  38.             t := TextFrames.Text (""); Texts.Append (t, w.buf);
  39.             o.SetMenu (t)
  40.         ELSE HALT (99)
  41.         END
  42.     END Open;
  43.     PROCEDURE ReadInt (o: Dialogs.Object; VAR res: INTEGER);
  44.     (* reads an integer from a dialogtext element *)
  45.         VAR t: Texts.Text; s: Texts.Scanner; 
  46.     BEGIN
  47.         WITH o: DialogTexts.Item DO 
  48.             t := o.GetText (); Texts.OpenScanner (s, t, 0); Texts.Scan (s); res := Dialogs.ok;
  49.             IF s.class = Texts.Int THEN Texts.WriteInt (wr, s.i,  0); Texts.Append (Oberon.Par.text, wr.buf)
  50.             ELSE res := Dialogs.wrongInput END
  51.         ELSE
  52.             res := Dialogs.wrongInput
  53.         END;
  54.     END ReadInt;
  55.     PROCEDURE ReadName (o: Dialogs.Object);
  56.         VAR t: Texts.Text; r: Texts.Reader; string: ARRAY 32 OF CHAR; i: INTEGER; ch: CHAR;
  57.     BEGIN
  58.         WITH o: DialogTexts.Item DO 
  59.             t := o.GetText (); Texts.OpenReader (r, t, 0); Texts.Read (r, ch); i := 0;
  60.             WHILE ~r.eot DO
  61.                 string[i] := ch; INC (i); Texts.Read (r, ch)
  62.             END;
  63.             string[i] := 0X
  64.         ELSE
  65.         END;
  66.         Texts.WriteString (wr, string); Texts.Delete (Oberon.Par.text, 0, Oberon.Par.text.len);
  67.         Texts.Append (Oberon.Par.text, wr.buf) 
  68.     END ReadName;
  69.     PROCEDURE ReadCmd (o: Dialogs.Object; VAR string: ARRAY OF CHAR);
  70.         VAR t: Texts.Text; s: Texts.Scanner;
  71.     BEGIN
  72.         WITH o: DialogTexts.Item DO
  73.             t := o.GetText (); Texts.OpenScanner (s, t, 0); Texts.Scan (s);
  74.             IF s.class = Texts.Name THEN COPY (s.s, string) ELSE COPY ("", string) END
  75.         ELSE
  76.         END
  77.     END ReadCmd;
  78.     PROCEDURE ReadPar (o: Dialogs.Object; VAR string: ARRAY OF CHAR);
  79.         VAR t: Texts.Text; r: Texts.Reader; ch: CHAR; i: INTEGER;
  80.     BEGIN
  81.         WITH o: DialogTexts.Item DO 
  82.             t := o.GetText (); Texts.OpenReader (r, t, 0); Texts.Read (r, ch); i := 0;
  83.             WHILE ~r.eot DO
  84.                 string[i] := ch; INC (i); Texts.Read (r, ch)
  85.             END;
  86.             string[i] := 0X
  87.         ELSE
  88.         END
  89.     END ReadPar;
  90.     PROCEDURE ReadXYWH;
  91.     (* reads the lower left corner coordinates, wide and height from the Demo-Panel *)
  92.         VAR ox, oy, ow, oh: Dialogs.Object; i, res, x, y: INTEGER; panel, p: Dialogs.Panel;
  93.     BEGIN
  94.         panel := Dialogs.cmdPanel;
  95.         ox := panel.NamedObject ("x"); oy := panel.NamedObject ("y");
  96.         ow := panel.NamedObject ("w"); oh := panel.NamedObject ("h");
  97.         DialogFrames.GetCaretPosition (p, x, y);
  98.         ReadInt (ox, res); IF res # 0 THEN Texts.WriteInt (wr, x, 0); Texts.Append (Oberon.Par.text, wr.buf) END;
  99.         Texts.WriteString (wr, " "); Texts.Append (Oberon.Par.text, wr.buf);
  100.         ReadInt (oy, res); IF res # 0 THEN Texts.WriteInt (wr, y, 0); Texts.Append (Oberon.Par.text, wr.buf) END;
  101.         Texts.WriteString (wr, " "); Texts.Append (Oberon.Par.text, wr.buf);
  102.         ReadInt (ow, res); IF res # 0THEN Texts.WriteInt (wr, -1, 0); Texts.Append (Oberon.Par.text, wr.buf) END;
  103.         Texts.WriteString (wr, " "); Texts.Append (Oberon.Par.text, wr.buf);
  104.         ReadInt (oh, res); IF res # 0THEN Texts.WriteInt (wr, -1, 0); Texts.Append (Oberon.Par.text, wr.buf) END;
  105.     END ReadXYWH;
  106.     PROCEDURE ReadNameCmdPar (VAR cmd, par: ARRAY OF CHAR);
  107.         VAR on, op, oc: Dialogs.Object;
  108.     BEGIN
  109.         on := Dialogs.cmdPanel.NamedObject ("name"); oc := Dialogs.cmdPanel.NamedObject ("cmd");
  110.         op := Dialogs.cmdPanel.NamedObject ("par");
  111.         ReadName (on); ReadCmd (oc, cmd); ReadPar (op, par)
  112.     END ReadNameCmdPar;
  113.     PROCEDURE Do*;
  114.         VAR 
  115.             o, last: Dialogs.Object; p: Dialogs.Panel; name: Texts.Buffer; cmd, par, insert: ARRAY 64 OF CHAR;
  116.             t: Texts.Text; x, y, w, h, res: INTEGER; r: Texts.Reader; ch: CHAR; v: Viewers.Viewer;
  117.     BEGIN
  118.         last:= Dialogs.lastin; v := Oberon.Par.vwr; 
  119.         Oberon.Par.text := TextFrames.Text (""); Texts.OpenWriter (wr);
  120.         ReadNameCmdPar (cmd, par); Texts.WriteString (wr, " "); Texts.Append (Oberon.Par.text, wr.buf);
  121.         ReadXYWH;
  122.         o := Dialogs.cmdPanel.NamedObject ("l");
  123.         WITH o: DialogListBoxes.Item DO
  124.             IF o.selline = 0 THEN insert := "DialogCheckBoxes.Insert"
  125.             ELSIF o.selline = 1 THEN insert := "DialogButtons.Insert"
  126.             ELSIF o.selline  = 2 THEN insert := "DialogStaticTexts.Insert"
  127.             ELSIF o.selline = 3 THEN insert := "DialogRadioButtons.Insert"
  128.             ELSIF o.selline = 4 THEN insert := "DialogGroupBoxes.Insert"
  129.             ELSIF o.selline = 5 THEN insert := "DialogTexts.Insert"
  130.             ELSIF o.selline = 6 THEN insert := "DialogLines.Insert"
  131.             ELSIF o.selline = 7 THEN insert := "DialogCircles.Insert"
  132.             ELSIF o.selline = 8 THEN insert := "DialogRectangles.Insert"
  133.             ELSIF o.selline = 9 THEN insert := "DialogSliders.Insert"
  134.             ELSIF o.selline = 10 THEN insert := "DialogIntSliders.Insert"
  135.             ELSIF o.selline = 11 THEN insert := "DialogClocks.Insert"
  136.             ELSIF o.selline = 12 THEN insert := "DialogAnalogClocks.Insert"
  137.             ELSIF o.selline = 13 THEN insert := "DialogDates.Insert"
  138.             ELSIF o.selline = 14 THEN insert := "DialogColorPickers.Insert"
  139.             ELSIF o.selline = 15 THEN insert := "DialogListBoxes.Insert"
  140.             ELSIF o.selline = 16 THEN insert := "DialogComboBoxes.Insert"
  141.             ELSIF o.selline = 17 THEN insert := "DialogGraphics.Insert"
  142.             ELSIF o.selline = 18 THEN insert := "DialogKeplers.Insert"
  143.             END
  144.         ELSE
  145.         END;
  146.         Oberon.Call (insert, Oberon.Par, FALSE, res);
  147.         IF (Dialogs.lastin # last) & (par[0] # 0X) THEN Dialogs.lastin.SetPar (par) END;
  148.         IF (Dialogs.lastin # last) & (cmd[0] # 0X) THEN Dialogs.lastin.SetCmd (cmd) END;
  149.         t := v.dsc (TextFrames.Frame).text;
  150.         Texts.OpenReader (r, t, t.len - 1); Texts.Read (r, ch);
  151.         IF ch = "!" THEN Texts.Delete (t, t.len - 1, t.len) END
  152.     END Do;
  153. END DialogInsert.
  154.