Ver Fonte

Version 1.0.1; Seek error position fixed; Error message display fixed; Menu keyboard crash fixed; Graph mode is toggled automatically

Artur Efimov há 7 anos atrás
pai
commit
55ce74e0f0
3 ficheiros alterados com 18 adições e 45 exclusões
  1. 5 26
      src/EditorText.Mod
  2. 4 9
      src/FreeOberon.Mod
  3. 9 10
      src/OV.Mod

+ 5 - 26
src/EditorText.Mod

@@ -382,44 +382,23 @@ BEGIN
   RETURN success
 END LoadFromFile; 
 
-(*PROCEDURE (t: Text) MoveToPos*(pos: INTEGER);
-CONST centerY = 6;
-VAR i: INTEGER; L: Line;
-BEGIN
-  L := t.first; i := pos; t.y := 0;
-  WHILE (L # NIL) & (L.len + L.lineEndLen <= i) DO
-    Out.String('i = '); Out.Int(i, 0);
-    Out.String('  L.len = '); Out.Int(L.len, 0);
-    Out.String('  L.lineEndLen = '); Out.Int(L.lineEndLen, 0); Out.Ln;
-    DEC(i, L.len + L.lineEndLen);
-    INC(t.y); L := L.next
-  END;
-  IF L = NIL THEN L := t.last; DEC(t.y); i := L.len
-  ELSIF i > L.len THEN i := L.len
-  END;
-  t.cur := L; t.x := i; i := centerY;
-  WHILE (L.prev # NIL) & (i > 0) DO L := L.prev; DEC(i) END;
-  t.scrY := t.y - centerY + i;
-  t.scrFirst := L
-END MoveToPos;*)
-
 PROCEDURE (t: Text) MoveToPos*(pos: INTEGER);
 CONST centerY = 6;
 VAR i: INTEGER; L: Line;
 BEGIN
-  L := t.first; t.y := 0;
+  L := t.first; t.x := 0; t.y := 0;
   REPEAT
-    t.x := 0;
     WHILE (L.s[t.x] # 0X) & (pos > 0) DO
-      IF (ORD(L.s[t.x]) > 127) & (pos > 2) THEN DEC(pos, 2)
+      IF (ORD(L.s[t.x]) > 127) & (pos >= 2) THEN DEC(pos, 2)
       ELSE DEC(pos)
       END;
       INC(t.x)
     END;
-    IF (pos > L.lineEndLen) & (L.next # NIL) THEN
-      DEC(pos, L.lineEndLen); L := L.next; INC(t.y)
+    IF (pos >= L.lineEndLen) & (L.next # NIL) THEN
+      DEC(pos, L.lineEndLen); L := L.next; INC(t.y); t.x := 0
     END
   UNTIL (L.next = NIL) OR (pos = 0);
+  IF t.x < L.len THEN INC(t.x) END;
   t.cur := L;
 
   i := centerY;

+ 4 - 9
src/FreeOberon.Mod

@@ -20,7 +20,7 @@ IMPORT G := Graph, T := Terminal, Text := EditorText, Files,
        OV, Editor, Term, Config, Strings, Out;
 CONST
   needFullscreen = TRUE;
-  version* = '1.0.0';
+  version* = '1.0.1';
 
   (* Direction of Selection *)
   dirLeft  = 0;
@@ -183,13 +183,13 @@ BEGIN
         s[0] := ' '; j := 1;
         WHILE s[i] >= ' ' DO s[j] := s[i]; INC(i); INC(j) END;
         (* Remove trailing spaces *)
-        WHILE (j > 0) & (s[j] = ' ') DO DEC(j) END;
+        WHILE (j > 0) & (s[j - 1] = ' ') DO DEC(j) END;
         s[j] := '.'; INC(j); s[j] := 0X;
         (* Capitalize first letter (0th is a space). *)
         IF (s[1] >= 'a') & (s[1] <= 'z') THEN s[1] := CAP(s[1]) END;
         app.windows(Editor.Editor).text.MoveToPos(pos);
         Editor.PrintText(app.windows(Editor.Editor));
-        T.ResetCursorBlink; (* !FIXME *)
+        T.ResetCursorBlink (* !FIXME *)
       END
     END
   END
@@ -598,6 +598,7 @@ BEGIN w := c.app.windows;
       COPY(w(Editor.Editor).filename, primaryFile);
       p := GetAllImportedModules(primaryFile);
       graph := ImportsGraph(p);
+      needWindowed := graph;
       IF Compile(w(Editor.Editor).filename, graph) THEN
         tempWindowed := needWindowed & T.isFullscreen;
         IF tempWindowed THEN G.SwitchToWindowed END;
@@ -607,11 +608,6 @@ BEGIN w := c.app.windows;
   END
 END OnBuild;
 
-PROCEDURE ToggleGraphMode(c: OV.Control);
-BEGIN
-  needWindowed := ~needWindowed
-END ToggleGraphMode;
-
 PROCEDURE InitIDE;
 VAR w: OV.Window;
     m, m2: OV.Menu;
@@ -736,7 +732,6 @@ BEGIN
   OV.Add(m, OV.NewMenu('&List...', 'Alt+0', OV.hAlt0, NIL));
   (*!TODO*) m.children.prev.status := OV.disabled;
   OV.Add(m, OV.NewMenu('&Refresh display', '', 0, OV.RefreshDisplay));
-  OV.Add(m, OV.NewMenu('&Toogle Graph Mode', '', 0, ToggleGraphMode));
   OV.AddMenu(app, m);
   m := OV.NewMenu('&Help', '', 0, NIL);
   OV.Add(m, OV.NewMenu('&Contents', '', 0, NIL));

+ 9 - 10
src/OV.Mod

@@ -707,8 +707,6 @@ VAR p, common: Control;
 BEGIN
   p := app.cur;
   IF c = NIL THEN c := app.windows END;
-  (*Out.String('FOCUS '); IF p = NIL THEN Out.String('NIL') ELSE Out.String(p.caption) END; Out.String(' -> ');
-  IF c = NIL THEN Out.String('NIL') ELSE Out.String(c.caption) END; Out.Ln; (*!FIXME remove*)*)
   IF p # c THEN
     IF p # NIL THEN
       REPEAT
@@ -1040,13 +1038,15 @@ VAR p, p2, br: Control; found: BOOLEAN;
 BEGIN
   CASE key.code OF
     G.kUp, G.kDown:
-    p := c;
-    REPEAT
-      IF key.code = G.kUp THEN p := p.prev ELSE p := p.next END
-    UNTIL (p = c) OR (p.caption # '-') & (p.status # disabled);
-    c.status := normal; p.status := selected; SetFocus(c.app, p);
-    NeedRedraw(c.app)
-  | G.kLeft, G.kRight: p := c.parent;
+    IF c.parent # c.app.menu THEN
+      p := c;
+      REPEAT
+        IF key.code = G.kUp THEN p := p.prev ELSE p := p.next END
+      UNTIL (p = c) OR (p.caption # '-') & (p.status # disabled);
+      c.status := normal; p.status := selected; SetFocus(c.app, p);
+      NeedRedraw(c.app)
+    END
+  | G.kLeft, G.kRight: p := c;
     WHILE p.parent # p.app.menu DO p := p.parent END;
     IF key.code = G.kLeft THEN p := p.prev ELSE p := p.next END;
     p.status := open;
@@ -1878,7 +1878,6 @@ END OnKeyDown;
 
 PROCEDURE OnTextInput(app: App; s: ARRAY OF CHAR; sym: INTEGER);
 BEGIN
-  (*Out.String('TEXT "');Out.String(s); Out.String('"; sym = ');Out.Int(sym, 0);Out.Ln;*) (*!FIXME*)
   IF (app.cur # NIL) & (app.cur.do.textInput # NIL) THEN
     app.cur.do.textInput(app.cur, s, sym)
   END