home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / ed32ger1.zip / source / CHANGES.TXT next >
Text File  |  1994-09-22  |  8KB  |  151 lines

  1. Sorry for this: The CHANGES.TXT are written in German. I haven't any time to 
  2. translate. See the comments inside the source files, they are written in 
  3. English.
  4.  
  5. 20. Februar 1994 / 8. April 1994 / 18. August 1994
  6.  
  7. Änderungen am E_EDIT.                                           Thomas K. Götz
  8.  
  9. 1. Grundsätzliche Schwächen
  10.  
  11. Der Editor E_EDIT hat einige kleine Schwächen, die einen behindern, wenn
  12. man mit ihm arbeitet:
  13.  
  14.  - Keine Anzeige, ob die geladene Datei seit dem letzten Speichern geändert
  15.    wurde. Ein kleiner Stern links neben "Line" könnte für eine solche 
  16.    Anzeige gebraucht werden.
  17.  - Keine langen Dateinamen. (Problem der Dialogboxen "Open" und "SaveAs")
  18.  - Maximal 64K große Dateien können gelesen werden.
  19.  - 16bittiger Code.
  20.  
  21.  
  22. 2. Die Portierung
  23.  
  24. Um dies auszubessern habe ich den E_EDIT auf den EMX-GCC Compiler (Version 0.8h) 
  25. portiert. Dabei ist zwangsläufig 32-bittiger Code enstanden. Für die Portierung
  26. waren folgende Änderungen nötig, ohne, daß sich grundlegend etwas geändert hat:
  27. - Die Dialogboxen, die benötigt wurden, um Dateien zu laden (Öffnen)
  28.   und um sie unter einem anderen Namen zu speichern (Speichern als) 
  29.   brachten in der 32-bittigen Version den PM zu Absturz. Es war keine
  30.   Benutzereingabe mehr möglich. Deshalb wurden die Dialogboxen durch den
  31.   Standard-File-Dialog ersetzt. In der Datei EDIT.C gab es dafür in der
  32.   Funktion "ClientWndProc" einige Änderungen (WM_COMMAND.IDM_OPEN und
  33.   WM_COMMAND.IDM_SAVEAS). In EDLG.C wurden eine Reihe von Funktionen
  34.   (z.B. OpenDlgProc und SaveasDlgProc) schlicht gestrichen.
  35. - Eine Menge von Variablen und Parameter mußten von USHORT auf ULONG
  36.   umdefiniert werden. Die entsprechenden Stellen habe ich mit meinen
  37.   Initialen "tkg" gekennzeichnet.
  38. - Eine Reihe weiterer kleiner Änderungen, die ich ebenfalls mit
  39.   "tkg" gekennzeichnet habe
  40. - Die Such-Operationen funktionierten nicht.
  41.   Egal was gesucht wurde, nichts war aufzufinden. Nachdem anstelle des
  42.   OS2EMX.H-Headers die Header des IBM-Toolkits benutzt wurden, war dieses
  43.   Problem beseitigt. (Offensichtlich ein Fehler in dem Header OS2EMX.H)
  44.   Dafür mußte die Datei OS2.H aus dem EMX-INCLUDE-Verzeichnis geändert werden 
  45.   und die Environment-Variable C_INCLUDE_PATH entsprechend gesetzt werden.
  46. - Probleme mit den Hot-Keys (s.u)
  47.  
  48. 3. Die Dialogboxen bzw. lange Dateinamen
  49.  
  50. Die Dialogboxen "Open" und "SaveAs" wurden entfernt (s. 2., erster
  51. Spiegelstrich). Damit hat sich auch das Problem mit den langen Dateinamen 
  52. erledigt, denn dies war ein Problem dieser beiden Dialog-Boxen. Auch Dateien 
  53. mit langen Namen sind lad- und speicherbar.
  54. Damit die OS/2-Dialogboxen "Open" und "SaveAs" arbeiten, muß ihnen ein 
  55. Laufwerksbuchstabe übergeben werden. Dieser wird in der globalen Variable
  56. "drive" gespeichert. Nach einem erfolgreichen Open bzw. SaveAs wird
  57. der Laufwerksbuchstabe aus dem Dateinamen in diese Variable übernommen.
  58. Dies ist nötig, wenn der Benutzer einen Laufwerkwechsel vorgenommen hat,
  59. damit im nächsten Dialog mit diesen Boxen das geänderte Laufwerk
  60. angezeigt wird. All dies geschieht in der ClientWndProc unter 
  61. WM_COMMAND.IDM_OPEN bzw. .IDM_SAVEAS und WM_ARGS. (Unter WM_ARGS wird die
  62. Datei geöffnet, die als Parameter übergeben wurde).
  63. Initialisiert wird die Variable  "drive" in der Funktion "main" mit dem 
  64. aktuellen Laufwerk. Leider stehen die Dialogboxen dann nicht immer im 
  65. erwarteten Pfad. 
  66. Ein Experiment:
  67.   - In einem Befehlszeilenfenster werden folgende Kommandos eingegeben:
  68.     (Ich unterstelle, daß die genannten Laufwerke und Verzeichnisse existieren.
  69.      Es funktioniert auch mit anderen.)
  70.     - e:
  71.     - cd c:\texfonts
  72.     - cd \user
  73.     - start edit32
  74.   - In dem gestarteten Editor wird die Open-Box benutzt: (File--Open)
  75.     (File--Open: Kommando aus der Menüleiste des Editors. Restliche Kommandos 
  76.      sind in der Box zu finden.)
  77.     lfd. Nr. Kommando                 angezeigtes Laufwerk    angezeigter Pfad
  78.     --------------------------------------------------------------------------
  79.      1.      File--Open               E:                      \user
  80.      2.      lw-Wechsel nach C:       C:                      \
  81.      3.      Selektiere AUTOEXEC.BAT  C:                      \
  82.      4.      Öffne mit OK             -                       -
  83.      5.      File-Open                C:                      \texfonts
  84.  
  85. Das Ergebnis dieses Experiments ist unerwartet, deshalb muß der Pfad nach "Open" bzw.
  86. "SaveAs" mit DosSetCurrentDir gesetzt werden. Jetzt ergibt das obige Experiment das
  87. erwartete Ergebnis:
  88.     lfd. Nr. Kommando                 angezeigtes Laufwerk    angezeigter Pfad
  89.     --------------------------------------------------------------------------
  90.      5.      File-Open                C:                      \
  91.  
  92. 4. Das Sternchen bzw. "Schon gespeichert?"
  93.  
  94. Um das Sternchen zu erzeugen, welches anzeigt, ob die Datei nach dem 
  95. Laden bzw. letzten Speichern geändert wurde, waren in "ClientWndProc"
  96. eine Reihe von Änderungen nötig. Es wurde eine Variable "needToSaveOld"
  97. eingeführt, die bei der Message "WM_TIME" abgefragt und ggf. neu gesetzt
  98. wird. Das Sternchen selbst wird wie die Angabe der Zeilen und Spaltennummer
  99. bei WM_PAINT entweder gezeigt oder gelöscht. Unter WM_TIME wird ggf.
  100. ein WM_PAINT erzwungen.
  101.  
  102. 6. Hot-Keys
  103.  
  104. Die Hot-Keys mit Control-Taste mit Buchstaben funktionieren nicht 
  105. (CTRL-G, CTRL-F, CTRL-R), wohl aber die Funktionstasten (F3) und andere
  106. Kombinationen (Shift-Ins,  Shift-Entf, CTRL-Ins, ALT-BS).
  107. Lösung: In der AccelTable in der Datei "edit.rc", ab Zeile 44, waren die Tasten
  108. "^F", "^R" und "^G" als Kommandos angegeben. Es muß heißen: "^f", "^r" und "^g".
  109. Wer hätte das gedacht.
  110.  
  111. Weitere Hot-Keys für New "^n", Open "^o", Save "^s" und Save As "^a" eingeführt.
  112.  
  113. 7. Übersetzung mit dem IBM-Compiler
  114. Da ich jetzt auch den IBM C/C++ First Step besitze, habe ich den Editor
  115. auch mit diesem Compiler übersetzt und den Editor getestet. Es funktioniert
  116. gut. Da mit dieser Variante das Source-Code-Debuggen mit dem IBM-IPDM 
  117. funktioniert, wird in Zukunft auf diesem Compiler entwickelt und die
  118. Übersetzbarkeit mit dem EMX-GCC nur gelengentlich überprüft.
  119.  
  120. 8. Dateien über 64 KByte
  121. Unter OS/2 2.x sollte es kein Problem bereiten, Dateien über 64 KByte
  122. zu laden. Leider kann MLM_IMPORT offensichtlich keine Datenmengen
  123. über 64 KByte bewältigen, so daß MLM_IMPORT mehrmals mit 64 KByte-Happen 
  124. aufgerufen werden muß. Zuvor muß allerdings mit MLM_SETTEXTLIMIT das 
  125. MLE-Maximum entsprechend erhöht worden sein. Leider überträgt MLM_IMPORT 
  126. immer nur ganze Zeichen bzw. vollständige Zeichenkombinationen. Wird 
  127. nur das "CR" von "CR LF" als letztes Zeichen übertragen muß entsprechend
  128. reagiert werden. Wegen dieses Problems und ähnlicher Problem bei
  129. MLM_EXPORT und MLM_QUERYTEXTLENGTH bzw. MLM_DELETE (PM hing) habe
  130. ich dieses Vorhaben aufgegeben.
  131.  
  132. 9. Zusammenfassen von Quellcode:
  133. Der Editor enthält Funktionalität doppelt, z.B. "OPEN" bei WM_ARGS und 
  134. WM_COMMAND.IDM_OPEN. Dieses wurde zusammengefaßt und in Prozeduren
  135. gesteckt.
  136.  
  137. 10. Verschiedene Sprachen
  138. Meldungen an die Benutzenden waren über die gesamte Datei "edit.c" 
  139. verteilt. Sie wurden in einer Reihe von Konstanten zusammengefaßt.
  140. Per Sprachselektor "English" bzw. "Deutsch" kann die Sprache
  141. ausgewählt werden. Möchte jemand die Meldungen in einer anderen 
  142. Sprache haben, so ist er aufgefordert in gleicher Art die Meldungen
  143. zu übersetzen, einen weiteren Selektor hinzuzufügen und "edit32.exe" 
  144. neu zu erzeugen. Dabei sollten die Meldungen in den vorhanden Sprachen
  145. nicht gelöscht werden.
  146.  
  147. 11. Öffnen einer neuen Datei
  148. Der Editor-Inhalt wird nicht mehr vor dem Öffnen-Dialog gelöscht, sondern
  149. danach. Im Fall des Abbruchs im Öffnen-Dialog bleibt der alte Inhalt.
  150. Die Möglichkeit des Sicherns ist damit auch nach dem Öffnen-Dialog.
  151.