home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Utilities / MUIbase / todo < prev    next >
Text File  |  1999-11-20  |  7KB  |  183 lines

  1. Here are some ideas I collected from some emails by my alpha/beta testers.
  2. The testers names are:
  3.  
  4.         magr2112@hem2.passagen.se (Mats Granstrom)
  5.         raresoft@rz.fh-augsburg.de (Ralph Reuchlein)
  6.         shining@braunschweig.netsurf.de (Thomas Fricke)
  7.         andre@melior.s.bawue.de (André Schenk)
  8.         klaus@melior.s.bawue.de (Klaus Gessner)
  9.         00060099@southnet.de (Markus Göttler)
  10.         oliver.roberts@iname.com (Oliver Roberts)
  11.  
  12.         and of course me: gutmann@informatik.uni-freiburg.de (Steffen Gutmann)
  13.  
  14. * fix searchfor with reference filters.
  15.  
  16. * more sophisticated reference filters.
  17.  
  18. * search for in memo fields.
  19.  
  20. * search & replace.
  21.  
  22. * Allow Ordering on reference attributes.
  23.  
  24. * specification of a comparison function for records.
  25.  
  26. * individual viewer button for a string with it's own action.
  27.  
  28. * different font attributes (bold, italic, ...) for the text editor.
  29.  
  30. * (LASTPOS substr string) which returns the position of the string
  31.   where the last substr appears in it.
  32.  
  33. * (COPIES string number) for returning a string of 'number' times
  34.   the contents of 'string'.
  35.  
  36. * new flag in the New/Change attribute requester that disables
  37.   changing the project's number-of-changes value.
  38.  
  39. * Display record trigger function
  40.  
  41. * Larger max number of characters for string attributes.
  42.  
  43. * Direct expressions for virtual attributes instead of function entries.
  44.  
  45. * (EVAL <str-expr>) for programming MUIbase.
  46.  
  47. * Image kind for virtual attributes.
  48.  
  49. * Memo kind for virtual attributes.
  50.  
  51. * Jump-to-key feature for virtual attributes of list kind.
  52.  
  53. * Improve display listview by adding arrows to each entry like ListTree does.
  54.  
  55. * Use keypad keys for special purposes.
  56.  
  57. * Progress indicator when ordering records.
  58.  
  59. * Load window button images at program start.
  60.  
  61. * Some kind of load/save of filters. Maybe in a "MUI-pulldown-menu".
  62.  
  63. *Prevent users from changing the structure of a database.
  64. [Planned are Password protection for project and structure].
  65.  
  66. * Select-from-where query optimization
  67.  
  68. The select-from-where query is currently not optimized. E.g. imagine the
  69. following situation: a relation called Person has about 1000 records and
  70. you want to run the following query:
  71.  
  72. SELECT a.Name, b.Name FROM Person a, Person b
  73. WHERE (AND (= a.Name "Steffen") (= b.Name "Mats"))
  74.  
  75. Don't try to find any sense in this query :-)
  76.  
  77. Now the query command builds the cross product of 1000 x 1000 records
  78. = 1 000 000 tuples to examine! This will take many hours.
  79. But if you examine the WHERE expression you see that
  80. (= a.Name "Steffen") only depends on records from Person a and
  81. (= b.Name "Mats") only depend on records from Person b, so
  82. you could first check the expression (= a.Name "Steffen")
  83. for all records of Person a and (= b.Name "Mats") for
  84. all records of Person b and then build the cross product.
  85. This way you only need to check 1000 + 1000 = 2000 tuples.
  86. Thus the running time has been improved from n² to 2n
  87. where n is the number of records of relation Person.
  88. I already have an idea how to optimize the select-from-where query
  89. for arbitrary WHERE expressions that consists of AND, OR and NOT expressions.
  90.  
  91. * Apply changes made to choice labels to all existing records.
  92.  
  93. * Mask/Display editor with Drag 'n Drop.
  94.  
  95. * New data type: Selection for selecting n items out of m items.
  96.  
  97. * Context menu item "Search for" for editor fields.
  98.  
  99. * Optional log file where all changes are written in ASCII to.
  100.  
  101. * Copy & Paste of several attributes.
  102.  
  103. * Hotlist for program output and query print requester.
  104.  
  105. * Indices.
  106.  
  107. * More features for preprocessor (Macros, conditional compilation)
  108.  
  109.  
  110. --- Ideas & suggestions which will have to wait ---
  111.  
  112. * Foreground colors for text objects.
  113.  
  114. Problem: MUI's current approach for setting the foreground color
  115. in Text objects is limited to only 8 pen numbers, and these pen
  116. numbers may refer to only a subset of 8 colors, e.g. on my system
  117. they refer to only 4 real colors.
  118.  
  119. * Special functions support
  120.   I  know that you would not build in special functions e.g. for
  121.   mathematical  functions  like arsinh() and so on. But for some
  122.   special databases this would be nice. Is there any possibility
  123.   to implement an interface for self written function libraries?
  124.   AREXX demonstrates this ability: with addlib() you can load in
  125.   an  AREXX  library  and  you  can  use  its  functions  like a
  126.   implemented function. What do you think about that?
  127.  
  128. I don't know how to implement this for now.  Maybe a C interface and
  129. a linkable object module would solve it.  However I would really prefer
  130. the ARexx solution (of course an improved one compared to AmigaBase).
  131. I am thinking about an (RX pattern ...) function that returns a string
  132. containing the result of the ARexx command.
  133.  
  134. An idea that could work is to use a shared library with a well
  135. defined interface.  The user provides the library, registers it
  136. by calling a MUIbase function, MUIbase calls an init function to
  137. know about all available functions of the library, and then the user
  138. can call functions from the library.
  139.  
  140. * How  about  this: Add a menu point to the context specific textfield
  141.   menu  which  pops  up a window with two lists of relations and their
  142.   attributes.  The  left list contains the relations and the right one
  143.   the  depending  attributes like the relations and attribute lists in
  144.   the  structure  editor. Selecting one attribute will insert the full
  145.   relation  path  into  the  textfield.  At  the  moment I must have a
  146.   photographic mind to remember the relations with their attributes.
  147.  
  148. I don't know how I can implement this with MUI 3.8. The editor menu
  149. is a context menu and in 3.8 context menus are limited to only
  150. one toplevel menu. I don't want to put all relation names in the
  151. toplevel menu. I could add a menu item "Insert attribute/relation name"
  152. to the toplevel menu and pop up a window with all relations and attributes.
  153. But this solution is not user friendly because context menus can't have
  154. shortcuts and you would have to use the mouse the whole time.
  155. I will wait how MUI will handle context menus in the future.
  156.  
  157. * Context menu for relations?
  158.  
  159. I will wait how context menus are implemented in MUI > 3.8.
  160.  
  161. * Use ListTree for the display list.
  162.  
  163. Currently ListTree does not support multi-selection. So adding
  164. a group object to the display list by multi-selecting some objects
  165. for being the childs of the new group and pressing the "Group"
  166. button will not be possible. I will wait until ListTree supports
  167. multi-selection.
  168.  
  169. --- Ideas I am not going to implement:
  170.  
  171. * Autosave
  172.  
  173. Reasons:
  174.  
  175.     o Saving from time to time is a very simple task.
  176.     o You can't remember the last time your computer autosaved your projects.
  177.     o The computer may save in an inconsistent state, e.g. imagine
  178.       you manage two bank accounts and would like to transfer
  179.       money from one account to the other.  If the autosave feature
  180.       saves your project after you made the transaction for one account
  181.       but not for the other one then you have saved an inconsistent
  182.       database project.
  183.