home *** CD-ROM | disk | FTP | other *** search
/ pc.louisiana.edu/pub/unix/ / Louisiana_UNIX.tar / Louisiana_UNIX / xspread3.0.zoo / doc / prog_rpt < prev    next >
Text File  |  1994-05-01  |  8KB  |  128 lines

  1.  
  2.     The project I am working on is xspread.  I am working on the
  3. project by myself, that is, with no one else.  The program has already
  4. been wirtten.  My task is to correct some of the bugs which continue to
  5. dwell within the program.
  6.     xspread is a spreadsheet program suitable to be run on X Window
  7. terminals.  It is in the public domain, so anyone may obtain a copy of
  8. it free of charge without violating copyright laws so long as the
  9. copyright information is passed along with the rest of the code.
  10.     Anyone familiar with standard spreadsheets such as Lotus 1-2-3,
  11. Quattro Pro, or Excel will find xspread to be similar but not exactly
  12. the same.  A Postscript manuel is found in the
  13. /usr/proj/se/xspread/fall92 directory under the name xspread.dvi. 
  14. People wishing to use this program should first print out this document
  15. for reference.  It is 37 pages long.
  16.     The goal of my project, as outlined in my contract, is to enhance
  17. and modify this program.  At the present moment, xspread is already
  18. useable and has no major defects.  but it does  have some minor
  19. bugs/deficiencies.  I have indentified 8 specific improvements that I
  20. plan to add to xspread.  These were taken from the suggestions found in
  21. the xspread/fall92/TODO file.  The 8 improvements are:
  22.  
  23.     Ability to save graph definitions upon terminating a session
  24.     Improved user interface of graphic option selection
  25.     Improved user friendliness of graph error function
  26.     Remember whole path name
  27.     Coordination between docs and toggle key functions
  28.     Correct text appearance after inserting ' " ' into a cell
  29.     Correct cursor movement when editing a cell
  30.     Select ranges with mouse
  31.     
  32.     The following is my progress in achieving the above enhancements
  33. as of 3/21/94.  Keep in mind that the entire program contains over
  34. 20,000 lines of source code.  The program is written in what appears to
  35. be a combination of C, C++, tcl and tk.  The modules are sometimes very
  36. large, up to 2,600 lines in some cases, making it difficult to locate
  37. those functions that need modification.  And the object oriented
  38. principles of encapsulation do not appear to have been adhered to with
  39. any consistency, making even the simplest of modifications a task of
  40. major undertaking.
  41.     The improvement that I have done the most planning on is that of
  42. implimenting the ability to save graph definitions upon terminating a
  43. session.  Presently, when a user reads in a preexisting file, they must
  44. define all graphics parameters before viewing the graph.  This is often
  45. a bothersome hassel, becasue a user usually will want to view the same
  46. graph again and again, yet each time they load in a file the graph
  47. options must be redefined.
  48.     My enhancement will allow a user to define their graphic
  49. parameters for a certain set of data.  Upon saving the file, they will
  50. be asked if they want to save the graph parameters.
  51.     There are 3 ways (functions) to save a file:  put, write, and
  52. table.  Each function saves the data in a different way.  It is my
  53. proposal, however, to have all 3 storage methods use the same method of
  54. storing graphic settings.  Thus, all storage functions will first make a
  55. call to the same graph storage function.
  56.     This function will require that all current graph definitions be
  57. stored in a global data structure.  While global variables are often
  58. looked down upon in software engineering, their use in this situation
  59. seems very justified. Attempting to save graph definitions without use
  60. of a global variable would necessitate a massive revision of the program
  61. structure.  The program flow would become extreamly complicated.  I will
  62. store the definitions in a structure variable called graphdef of type
  63. Graphdef.
  64.     If the user does not choose to save the graph definitions when
  65. saving a file, the file contents will be written exactly as they have
  66. been in the old version.  When the user does choose to save their
  67. current graph definitions, the first line of the file written to will
  68. contain a marker indicating that the next several lines are for graph
  69. definition data.  When ever a file is read in, the first line must be
  70. checked to see if it contains such a marker.  If it does, then a call is
  71. made to a function which will read in the definitions.  If no graph
  72. indication marker is present on the first line, then the spreadsheet
  73. file is read in as usual.  It is important here to remember the first
  74. character that was consumed in the checking for graph definitions, as
  75. this may have been a necessary part of the file data.
  76.     Another improvement that I have made some progress on is for user
  77. interface of the graphic option section.  At present, the user interface
  78. presents the same messages during different function selections, which
  79. is both misleading and confusing.
  80.     For example, when in the main menu, if the user selects
  81. graph/optons/format, the following submenu appears:
  82.     Lines    Symbols       Both        Neither
  83. If the cursor is on Lines, a descriptive message appears underneath: 
  84. "To connect each range data point with a straight line".  When the Line
  85. command is selected, a message appears for appproximately 1 second
  86. saying "The graph format is lines".  To me, this sounds as if it applies
  87. to the entire graph.  Had I choosen the graph option, there would be no
  88. problem.  But when a user, especially a new user, chooses the A - F
  89. options, they will be left wondering what changes are going to actually
  90. be made.  A check will reveal that a format change for the A range only
  91. affects the A range, but it would be more user friendly if the messages
  92. indicate for which range the changes are being made.
  93.     Another needed improvement in the catagory of user friendliness is
  94. the graph error function.  Graphs of type XY are viewed with little
  95. difficulty.  However, if I have a graph of type Line, Bar, Stack Bar or
  96. Pie, a similar attempt to view this graph results in an error message
  97. claiming "not enough valid x values".  Beliving this to actually be the
  98. problem, I then went on to add more x values.  However, the same error
  99. message reoccured upon trying to view the graph no matter how many x
  100. values I added.  A new user would become completely lost from such an
  101. error message.  The problem and specific sloution must be clearly stated
  102. by the error function.  If there aren't enough valid x values, then the
  103. user should be informed of how many more x values need to be added.  And
  104. if the amount of valid x values isn't the problem, an entirely different
  105. error message should appear.
  106.     The problem of remembering the whole pathname shouldn't be too
  107. hard to fix.  When a file is initially read in, it's name and path will
  108. be stored in a static variable.  When saving or reading in the next
  109. file, the static variable will be printed out as default.  This will
  110. save the user the effort of having to type out either the pathname or
  111. filename, unless they want to specify a change.
  112.     Coordination between toggle key functions and their documented
  113. actions will require furthure investigation.  As of this moment, I have
  114. not found what is wrong with the toggle keys - they seem to be working
  115. fine.  It is mentioned in the TODO file that some of them do not match
  116. the docs as close as they should.
  117.     The next two improvements, which are to achieve correct text
  118. appearance after inserting ' " ' into a cell and correct cursor position
  119. when editing a cell, are presently without a strategy.  It is mentioned
  120. in the documentation that these bugs were looked into, but the source of
  121. the error could not be found.  I too have not found the source of the
  122. error but will keep looking.
  123.     The last improvement I hope to make is to allow the user to select
  124. ranges with the mouse.  I have not yet gotten this far and have no idea
  125. of how I will get this done.  I intend on making the range selection by
  126. mouse work similar to the other spreadsheet programs such as Lotus 1-2-
  127. 3, Quattro Pro, etc.
  128.