[Oberon] FPGA - OberonV4 Dialogs

Tomas Kral thomas.kral at email.cz
Fri Nov 23 19:57:19 CET 2018


> So, while loading you have to properly allocate your pointer data
> structure again with NEW.

Hi,

I have recoded in revised Oberon so far,
Dialogs.Mod, Dialog.Mod, DialogFrames.Mod, Display1.Mod, In.Mod, ...

I am testing on `Test.Dlg', trying to understand `Dlg' file structure,
just by opening it.

Dialog.Open Test.Dlg ~

which fails on `h' TRAP 1 in `Dialogs.Mod', index out of range I guess.

  PROCEDURE LoadP (p: Panel; VAR r: Files.Rider);
  (** reads the panel from rider r *)
    VAR cnt, end1, end2, h: INTEGER; o, prev: Object; module: Modules.ModuleName; name: ARRAY 32 OF CHAR;
      tab1: ARRAY maxItems OF Modules.ModuleName; tab2: ARRAY maxItems OF ARRAY 32 OF CHAR;
      pos: LONGINT;
  BEGIN 
    p.contents := NIL; prev := NIL; Files.ReadInt(r, cnt); (*COPY ("", p.cmd)*) p.cmd[0] := 0X; end1 := 0; end2 := 0;
    WHILE cnt # 0 DO DEC (cnt);
      pos := Files.Pos (r); Files.ReadInt (r, h); 
      IF h < end1 THEN module := tab1[h]
      ELSE Files.Set (r, Files.Base (r), pos); Files.ReadString (r, module); tab1[end1] := module; INC (end1) 
      END;
      pos := Files.Pos (r); Files.ReadInt (r, h);
      IF h < end2 THEN (*COPY (tab2[h], name)*) name := tab2[h];
      ELSE Files.Set (r, Files.Base (r), pos); Files.ReadString (r, name);
        (*COPY (name, tab2[end2]);*) tab2[end2] := name; INC (end2)
      END; 
      (** TODO load module and let it init itself instead using Types.Mod *)
      (*Types.NewObj (o, Types.This (Modules.ThisMod (module), name)); ASSERT (o # NIL);*)
      NEW(o); ASSERT (o # NIL); Init(o);
      o.do.Load (o, r); o.panel := p;
      IF prev # NIL THEN prev.next := o ELSE p.contents := o END;
      prev := o
    END; 
    Files.ReadString (r, p.cmd);
    p.do.Restore (p)
  END LoadP;


Dumping `Test.Dlg'...

00000000  05 00 44 69 61 6c 6f 67  42 75 74 74 6f 6e 73 00  |..DialogButtons.|
00000010  49 74 65 6d 44 65 73 63  00 50 72 69 6e 74 00 4d  |ItemDesc.Print.M|
00000020  79 45 64 69 74 2e 50 72  69 6e 74 00 00 00 81 29  |yEdit.Print....)|
00000030  00 e0 5e f8 ff 80 1a 06  00 40 0d 03 00 00 53 79  |..^...... at ....Sy|
00000040  6e 74 61 78 31 30 2e 53  63 6e 2e 46 6e 74 00 44  |ntax10.Scn.Fnt.D|
00000050  69 61 6c 6f 67 53 74 61  74 69 63 54 65 78 74 73  |ialogStaticTexts|
00000060  00 49 74 65 6d 44 65 73  63 00 44 72 61 66 74 00  |.ItemDesc.Draft.|
00000070  00 00 30 df 18 00 00 ad  f8 ff 80 1a 06 00 40 0d  |..0........... at .|
00000080  03 00 00 01 01 00 53 79  6e 74 61 78 31 30 2e 53  |......Syntax10.S|
00000090  63 6e 2e 46 6e 74 00 64  72 61 66 74 00 44 69 61  |cn.Fnt.draft.Dia|
000000a0  6c 6f 67 43 68 65 63 6b  42 6f 78 65 73 00 49 74  |logCheckBoxes.It|
000000b0  65 6d 44 65 73 63 00 64  72 61 66 74 00 00 00 20  |emDesc.draft... |
000000c0  0b 20 00 f0 85 f8 ff 40  0d 03 00 40 0d 03 00 00  |. ..... at ...@....|
000000d0  01 00 49 74 65 6d 44 65  73 63 00 46 69 6c 65 00  |..ItemDesc.File.|
000000e0  00 00 a0 86 01 00 10 d4  f8 ff 80 1a 06 00 40 0d  |.............. at .|
000000f0  03 00 00 01 01 00 53 79  6e 74 61 78 31 30 2e 53  |......Syntax10.S|
00000100  63 6e 2e 46 6e 74 00 66  69 6c 65 00 44 69 61 6c  |cn.Fnt.file.Dial|
00000110  6f 67 54 65 78 74 73 00  49 74 65 6d 44 65 73 63  |ogTexts.ItemDesc|
00000120  00 66 69 6c 65 00 00 00  40 ef 07 00 00 ad f8 ff  |.file... at .......|
00000130  60 ae 0a 00 60 5b 03 00  00 00                    |`...`[....|
0000013a


-- 
Tomas Kral <thomas.kral at email.cz>


More information about the Oberon mailing list