home *** CD-ROM | disk | FTP | other *** search
/ Amiga Times / AmigaTimes.iso / internet / stricq / textinput.readme < prev   
Encoding:
Text File  |  1998-10-06  |  13.7 KB  |  451 lines

  1. Textinput MUI Custom Class
  2. ==========================
  3.  
  4. This is a combined single/multi line editor gadget. Key features:
  5.  
  6. · only one compact class for single line/multi line mode,
  7.   efficient due to code sharing
  8. · same prefs for single line/multi line mode
  9. · optional external editing in sync/async mode for multi line
  10.   mode
  11. · fully configurable key bindings
  12. · supports cut & paste
  13. · supports many style configuration options including
  14.   blinking und bar cursor
  15. · includes numeric mode with upper/lower bounds check
  16. · support old stringclass tags/methods for easy "drop in"
  17.   replacement in existing code
  18. · works nicely in virtgroups (unlike the gadgetclass based
  19.   stringclass)
  20.  
  21. The class is still somewhat in "beta" and doesn't have a
  22. proper documentation. Include file and demo program source
  23. are included, though.
  24.  
  25. Please copy Textinput.mcc, Textinput.mcp and Textinputscroll.mcc
  26. into the MUI:Libs/MUI/ directory.
  27.  
  28. History
  29. -------
  30.  
  31. 11.10
  32. -----
  33. (first public release included in MD-2 0.182beta)
  34.  
  35. 11.11
  36. -----
  37. - paste from clipboard now works
  38. - fixed all kind of problems with internal
  39.   status loss during certain operations
  40. - SHIFT-DEL and SHIFT_BS now delete to beginning/to
  41.   end of line
  42.  
  43. 11.12
  44. -----
  45. - fixed problems with marking/cursor pointer
  46.   pointing to freed mem on a buffer expand
  47. - major speedup in text output
  48. - cut & copy into clipboard now works
  49.  
  50. 11.13
  51. -----
  52. - setting MUIA_(Textinput|String)_Contents with NULL
  53.   caused enforcer orgy
  54.  
  55. 11.14
  56. -----
  57. - prefs now have a "Samples" page of their own to
  58.   make the group fit on 640x200 screen
  59. - gadget didn't go inactive upon a cleanup
  60. - DoCopy will now copy the whole contents to clipboard
  61.   if no block is marked
  62.  
  63. 12.0
  64. ----
  65. - totally changed key control settings; keys are now
  66.   a list of key/action pairs (up to 32). It's now
  67.   possible to specify more than one key for an action.
  68. - added a key action for calling external editor
  69.   (defaults to "ramiga e")
  70. - added MUIA_Textinput_MinVersion attribute; object
  71.   refuses to create itself if the required version is
  72.   less than current version
  73.  
  74. 12.1
  75. ----
  76. - fixed another problem with buffer expanding
  77. - fixed another problem with active state loss
  78.  
  79. 12.2
  80. ----
  81. - added asynchronous external editor mode. If set, editor
  82.   is called asynchronously, object remains enabled and
  83.   a notification is made on the temp file. If changes to
  84.   the file are made, it is reread.
  85. - added default popup menu (defaults to on for multi,
  86.   off for single line objects)
  87. - speed up pasting of text from clipboard
  88. - text input is generally faster now
  89. - no longer craps out when trying to past multi line strings
  90.   into a single line gadget
  91.  
  92. 12.3
  93. ----
  94. - "Mark all" would place the cursor pointer past the end of
  95.   the buffer, thus creating all kind of not so neat side effects
  96. - copying all text to clipboard caused to add a 0 byte at the
  97.   end of the data
  98. - Added optional wordwrap.
  99.  
  100. 12.4
  101. ----
  102. - pressing lamiga/ramiga command keys no longer activates any
  103.   window menu shortcuts
  104.  
  105. 12.5
  106. ----
  107. - shortended popup menu title size
  108. - wordwrap now defaults to "ON" for multi line gadgets
  109.   (70 chars)
  110. - "Cut line" now works as advertized
  111. - fixed problem with cutting text loosing cursor pointer focus
  112.  
  113. 12.6
  114. ----
  115. - wordwrap defaults can now be specified in the prefs
  116. - external editor can now be started multiple times in
  117.   async mode
  118.  
  119. 12.7
  120. ----
  121. - fixed resetting of drawmode to JAM1 (fixes artefacts)
  122. - setting/getting of MUIA_Textinput_Integer (and
  123.   _String_Integer/_Numeric_Value) now works
  124. - added MUIA_Textinput_Changed attribute
  125.  
  126. 12.8
  127. ----
  128. - fixed problems with D&D (Mousebutton events weren't eaten
  129.   up, thus triggering D&D during mark)
  130. - now handles attached popup and attached lists correctly
  131. - pressing return in a single line gadget while text is marked
  132.   no longer replaces that text
  133.  
  134. 12.9
  135. ----
  136. - fixed a problem with blinking cursor trashing the rastport
  137.   drawmode
  138.  
  139. 13.0
  140. ----
  141. - now all keys are configurable independant of MUI navigation
  142.   prefs
  143. - added MUIA_Textinput_RemainActive attribute. Object will
  144.   remain active even after pressing RETURN in a single line
  145.   gadget.
  146. - added MUIM_Textinput_Acknowledge method which is sent on
  147.   pressing RETURN. Default handling is set() of MUIA_Textinput_Acknowledge
  148.   and MUIA_String_Acknowledge to rootclass for backward
  149.   compatibility.
  150. - AcceptChars/RejectChars now work
  151. - IsNumeric now works, including range checking
  152. - notification on MUIA_Textinput_Changed is now possible
  153. - added MUIM_Textinput_TranslateEvent hook method which allows
  154.   to hook into textinput's inputevent->string translation.
  155.   MapRawKey() has already been called at this place so the
  156.   subclass can directly modify the translated buffer.
  157. - MUIM_HandleEvent is now called on the real class, instead of
  158.   being coerced on the textinput class directly, to allow to
  159.   totally hook the input handling
  160. - added MUIM_Textinput_InsertText method to insert text at
  161.   the current cursor position
  162. - pasting of multi line text into single line gadget is now
  163.   possible; the application must be careful to process all
  164.   text during the MUIM_Textinput_Acknowledge method (or
  165.   notification triggered on MUIA_Textinput_Acknowledge),
  166.   because the method is called for every line in the
  167.   clipboard data
  168. - added support for MUIA_Textinput_Secret/MUIA_String_Secret.
  169.   Will not allow cutting/copying from such strings to avoid
  170.   easy revelation of the password in question
  171. - setting MUIA_Textinput_Contents now causes the cursor to
  172.   be at the end of the text, not at the beginning
  173. - multi line textinputs with scroller no longer send a 
  174.   scroller inform when the scroller positions haven't changed.
  175.   Speeds up general option esspecially during text input.
  176. - added word left/right functionality
  177.  
  178. 13.1
  179. ----
  180. - moved DEL/BS and TAB functionality to configurable keys, too
  181. - changed key config ID to avoid clashes with previous
  182.   (incomplete) key bindings
  183. - fixed duplicate IDs for wordwrap on and wordwrap column
  184. - HELP key no longer causes CSI trash to be inserted into strings
  185.  
  186. 13.2
  187. ----
  188. - various operations which modified contents didn't actually
  189.   trigger notification on MUIA_Textinput_Contents/Changed.
  190. - RemainActive now disables the automatic deactivation of
  191.   the gadget when clicking outside of the container bounds
  192. - fixed the "Last line" bug
  193. - fixed bogus xoffset not resetting to 0 on set() of
  194.   string contents
  195.  
  196. 13.3
  197. ----
  198. - fixed popup menu "Word wrap" toggling
  199. - fixed string insertion to not always trigger a string
  200.   acknowledge when inserting strings without \n
  201. - fixed excess scrollbar refreshes
  202.  
  203. 13.4
  204. ----
  205. - added MUIA_Textinput_Lines attribute (notificable)
  206. - fixed problems with cursor not being made properly 
  207.   visible when a left scroll is required
  208. - fixed TAB to not do a double jump
  209. - now holds a class global cache of translated input
  210.   expressions; reduces object setup time drastically
  211.   and reduces per-object memory requirements
  212. - fixed a few more potential problems with the scroll bars
  213.   not being updated correctly
  214. - textinputscroll.mcc now properly forwards MUIM_Notify to
  215.   the textinput object only
  216.  
  217. 13.5
  218. ----
  219. - no longer disables menu shortcuts when active
  220.  
  221. 13.6
  222. ----
  223. - added MUIA_Textinput_Editable
  224. - works around a nasty problem with IEQUALIFIER_MIDBUTTON
  225.   being set on every and all input events on some systems,
  226.   thus making the input handling not match anything.
  227.   Now strips down matched Qualifiers to keyboard only
  228.   (without CAPSLOCK)
  229.  
  230. 13.7
  231. ----
  232. - unmapped special keys no longer cause bogus CSI sequences
  233.   to be inserted
  234. - now handles menu shortcuts again (textinput key defs
  235.   take precedence, though)
  236. - external edit button is now properly disabled in noedit
  237.   mode
  238. - "external edit" popup entry is now properly disabled in noedit
  239.   mode
  240. - secret mode no longer shows a bogus char at the end of line
  241. - "cut line" no longer copies to clipboard (and therefore now
  242.   works in secret mode, too)
  243. - "cut line" didn't check whether the cursor was still visible
  244. - revert changes now works
  245. - pasting of multi line text into single line gadgets was
  246.   hosed
  247.  
  248. 13.8
  249. ----
  250. - now raises task priority for more smooth input handling when
  251.   active
  252. - changed default key binding for "cut line" to "ramiga y"
  253.   and for "cut marked" to "ramiga x"
  254. - "Cut marked" now behaves differently in single line mode;
  255.   if nothing is marked, the gadget is erased completely (to
  256.   match standard amiga string gadget behavior)
  257. - added double click mark handling; double click selects word,
  258.   triple click line, quad click everything and more clicks
  259.   deselects again
  260. - added "backspace to start of word" and "delete till end of word"
  261.   functionality, default mappings to control-bs/del
  262. - menu shortcuts no longer trigger gadget shortcuts
  263.  
  264. 13.9
  265. ----
  266. - no longer inserts a bogus blank when tabbing out of the gadget
  267. - added MUIM_Textinput_InsertFromFile functionality
  268. - added "Insert file" UI functionality; default key binding "ramiga shift o"
  269.  
  270. 13.10
  271. -----
  272. - added MUIA_Textinputscroll_UseWinBorder
  273. - priority will now be set to normal if the window containing the
  274.   gadget is deactivated
  275.  
  276. 13.11
  277. -----
  278. - now using highly optimized TextFit/TextLength replacement for
  279.   better output speed
  280.  
  281. 13.12
  282. -----
  283. - improved overall speed with various internal optimizations
  284. - fixed cursor size to be calculated from the font's blank width,
  285.   not tf_XSize, which could cause problems with some font sets
  286.  
  287. 13.13
  288. -----
  289. - Prefs: Label for cursor colors accidentally read "marked", too
  290. - fixed a problem with characters not part of the current font
  291.   messing up the size calculations
  292. - now compiled with SAS/C 6.58
  293.  
  294. 13.14
  295. -----
  296. - notify events are now directly CoerceMethod()ed on the notify class
  297.   to avoid going through the areaclass dispatcher/OM_SET method
  298.  
  299. 13.15
  300. -----
  301. - now sets writemask/maxpen on planar display for much better rendering
  302.   speed on AGA systems
  303.  
  304. 13.16
  305. -----
  306. - fixed a problem with the font not being set on initial redraws
  307. - fixed a problem with planemasks not being reset when rendering
  308.   the cursor, thus causing all kinds of artifacts
  309.  
  310. 13.17
  311. -----
  312. - fixed a problem with the gadget not setting up properly when text
  313.   was set()ed before receiving a MUIM_Setup
  314.  
  315. 13.18
  316. -----
  317. - fixed enforcer flood when a object was MUIM_Setup'ed when containing
  318.   text
  319. - no longer does wordwrap in single line gadgets
  320. - no longer wordwraps lines starting with ">" (to avoid messup of
  321.   quoted text)
  322. - reenabled double click functionality
  323.  
  324. 13.19
  325. -----
  326. - modified default color scheme to use the BOOPSI stringclass
  327.   alike color inversions for rendering the cursor
  328. - fixed problems with the gadget remaining visually "active"
  329.   even when the window containing the gadget was deactivated
  330. - fixed task priority screwing
  331.  
  332. 13.20
  333. -----
  334. - fixed disabling of Wordwrap/Insert file popup menu items
  335.   for "NoEdit" mode gadgets
  336. - fixed screwup with non-proportional fonts
  337.  
  338. 13.21
  339. -----
  340. - default cursor color is now the complement of the active
  341.   string color, not the standard string color (this matches
  342.   stringclass behavior)
  343.  
  344. 13.22
  345. -----
  346. - now recognizes some language specific chars as parts of
  347.   words when jumping
  348. - fixed a longstanding bug in the font width calculation
  349.   which went berzerk upon hitting a non-printable character
  350.   (control codes, for example)
  351.  
  352. 13.23
  353. -----
  354. - fixed a bug with textinput going mad if the char kerning
  355.   table had a negative value (xhelvetica, for example)
  356. - "cut" didn't update some internal cursor state variables
  357.   thus causing some messup
  358.  
  359. 13.24
  360. -----
  361. - fixed another bug related to characters below tf_LoChar
  362.   being in the font set
  363. - fixed a race condition with MUIM_GoActive ariving before
  364.   MUIM_Show/MUIM_Setup
  365. - fixed a problem with wordwrap not stopping on a line
  366.   which had other whitespaces before the trailing \n
  367. - fixed a race condition in mccheader.c which could
  368.   cause a big nuke during libopen
  369. - fixed word jump not working with upper case letters
  370.  
  371. 13.25
  372. -----
  373. - fixed another wordwrap related problem
  374. - external editor is now called with 16k stack size
  375. - fixed a long standing bug with asynchronous external
  376.   editor calls only working once
  377. - added MUIA_Textinput_MarkStart | _MarkEnd attributes
  378.   which return the byte offset of the marked area
  379.   start/end or MUIV_Textinput_NoMark
  380.  
  381. 13.26
  382. -----
  383. - fixed another problem with the activation state
  384.   being lost under certain circumstances
  385.  
  386. 13.27
  387. -----
  388. - fixed serious bug with DoubleClick moving the
  389.   internal mark start pointer before the actual buffer,
  390.   causing all kinds of neat side effects including
  391.   Major Crash®
  392. - fixed cursor refresh problem when cursor was
  393.   on a char with negative kerning values
  394.  
  395. 13.28/29 (internal only)
  396. ------------------------
  397.  
  398. 13.30
  399. -----
  400. - added hyper textfit/textlen code from V/MUI 4.0,
  401.   improving output speed and esspecially input response 
  402.   times
  403.  
  404. 13.31
  405. -----
  406. - fixed the just reimplemented "unknown char" offset bug
  407.   again
  408.  
  409. 13.32
  410. -----
  411. - MUIA_Textinput_MarkStart/End are now both settable.
  412. - MUIA_Textinput_CursorPos is now settable.
  413. - added new overridable method MUIM_Textinput_HandleChar
  414.   which encapsulates the "single printable char"
  415.   handler.
  416.  
  417. 13.33
  418. -----
  419. - modified the activate/inactivate handling a bit
  420.  
  421. 13.34
  422. -----
  423. - fixed handling of menu shortcut selection while TI
  424.   is active
  425. - fixed window activation sometimes not causing a proper
  426.   redraw of the currently active TI object
  427. - fixed some longword boundary alignments in TI's
  428.   data structure which could cause uneccessary slowdowns
  429.   on 68020+
  430. - fixed button up events to no longer trigger a whining
  431.   "Hey, this is a readonly-gadget!" beep in readonly
  432.   mode
  433. - did some general optimizations speeding up normal
  434.   input
  435.  
  436. 13.35
  437. -----
  438. - now strips \r when OM_SETting the complete buffer
  439. - fixed another instance of the bogus "Hey, I'm readonly"
  440.   DisplayBeep()-whining
  441. - fixed broken cursor offset calculation in secret mode
  442. - optimized calculation of current line length
  443.  
  444. 13.36
  445. -----
  446. - fixed a serious bug in the drawline code which could cause
  447.   a RectFill() call with min/max exchanged, thus causing a nuke
  448.   on AGA
  449. - removed all calls to OldOpenLibrary() to make Richard
  450.   Körber happy
  451.