/*  $Header: /cvs/gnome/gcalctool/ChangeLog-1990,v 1.4 2006/01/09 16:30:20 richb Exp $
 *
 *  Copyright (c) 1987-2007 Sun Microsystems, Inc.
 *  All Rights Reserved.
 */

gcalctool change history - 1990.
================================

v3.1 - patchlevel 13 - 19th December 1990.
 
* Added in X color resource support for all of the colors that calctool
  uses. These can now be setup in all the standard X places or the
  ~/.desksetdefaults file. If there aren't any, then the "standard"
  colors are used. The manual pages have been updated to describe these
  new resources.

----

v3.1 - patchlevel 12 - 27th November 1990 [mjb]

* Fixed Makefile to compile with the XView Makefile.master

----

v3.1 - patchlevel 11 - 27th November 1990.

* Generated a version of calctool which should have support for other
  languages. The text generation has been separated out into another
  source file (text.c). Needs to be tested in the sundae environment

* Modified the text handling for calctool to use four new definitions,
  DGET(), EGET(), LGET() and MGET() definied in calctool.h, and set the
  text initialisation appropriately. Note that DGET() is just a dummy
  call, but makes it easier to change from one type of conversion to
  another. Certain strings (command line arguments, help strings, parts
  of the usage message, calctool resources), don't appear to have to be
  converted, and are just initialised into the correct arrays using
  DGET().

* Added in Xrm resource handling. Resources are looked for in the
  following ways:

  Classname file in the app-defaults directory. In this case, Classname
  is Deskset.

  Classname file in the directory specified by the XUSERFILESEARCHPATH
  or XAPPLRESDIR environment variable.
 
  Property set using xrdb, accessible through the XResourceManagerString
  macro or, if that is empty, the ~/.Xdefaults file.
 
  XENVIRONMENT environment variable or, if not set, .Xdefaults-hostname
  file.
 
  DESKSETDEFAULTS environment variable or, if not set, the
  ~/.desksetdefaults file
 
  *NOTE* When you write an Xrm database to a file, it overwrites the
         file. What I've done is read in the ~/.desksetdefaults file
         just before I write out the new values. This seems like a
         window for error if two or more clients are doing this at
         the same time.

  The calctool resources are (with example values shown):

  deskset.calctool.accuracy:      6
  deskset.calctool.base:          hex
  deskset.calctool.display:       scientific
  deskset.calctool.mode:          scientific
  deskset.calctool.mono:          false
  deskset.calctool.showRegisters: false
  deskset.calctool.trigType:      rad
  deskset.calctool.rightHanded:   false
  deskset.calctool.3dLook:        true
  deskset.calctool.hasTitle:      true

* Calctool now has a property sheet. There are four settings:

                       Appearance:   2D-look | 3D-llok
                          Display:   color | monochrome
         Save calculator settings:   no | yes
                            Style:   left-handed | right-handed

  The third choice determine whether five extra calculator settings
  are written out to the ~/.desksetdefaults file. These are (for
  example):

  deskset.calctool.accuracy:      6
  deskset.calctool.base:          hex
  deskset.calctool.display:       scientific
  deskset.calctool.mode:          scientific
  deskset.calctool.trigType:      rad

* Calctool now recognises the Props key being pressed, and displays
  the property sheet.

* The manual pages have been modified to include all this new
  information on resources and the property sheet.

----

v3.1 - patchlevel 10 - 22nd November 1990.

* If you backspace over a number which contained a decimal point,
  calctool would not allow you to enter a new decimal point.
  Bugid 1047077 can be closed.

----

v3.1 - patchlevel 9 - 1st November 1990.

* If the total colormap couldn't be allocated in load_colors(), then
  calctool is starting in monochrome instead of exiting.

----

v3.1 - patchlevel 8 - 18th October 1990.

* The Delete, Back Space and Ins (numeric keypad) keys were no
  longer working. In the latest OW V3 build, these have been
  remapped to ACTION_ERASE_CHAR_FORWARD, ACTION_ERASE_CHAR_BACKWARD
  and ACTION_INSERT events. Tidied up the event reading routine too.

----

v3.1 - patchlevel 7 - 2nd October 1990.

* "Fixing" the minimal shrinking problem in patch #6, broke the
  sizing of the memory and mode windows. This patch fixes that.

----

v3.1 - patchlevel 6 - 2nd October 1990.

* Shrinking calctool below it's minimum size now correctly works.

----

v3.1 - patchlevel 5 - 27th September 1990.

* After the user has done a valid parentheses calculation, the last
  input is set to the displayed value. If the user enters an '=',
  nothing changes.

* During parentheses processing, if the user uses the mouse to
  select an item from a function menu or the default menu item, then
  the correct values are entered in the display (and on the parentheses
  stack).

* The default menu item for the function menu is now "Enter Function".
  The default menu item for the constant menu is now "Enter Constant".
  The text is now correctly displayed on the calctool button when the
  left mouse button is held down. The popup correctly appears when the
  left mouse button is released.

* If you executed a user defined function that ended in a ')', then a
  '(' was left in the operand field.

* All calctool button labels are now only drawn with the "normal" font.

* If calctool is resized, the memory register window is now correctly
  resized also.

----

v3.1 - patchlevel 4 - 27th September 1990.

* Define a user defined function and dismiss the window. If you bring
  the define constant window the info from the previously defined
  function is still in the window. The user should not have to erase
  this info before entering the new info.

* Only certain "pending" operations should redisplay the numeric
  calctool buttons half way through the operation. Con, Exch, Fun,
  Sto, Rcl and Acc should redisplay the buttons 0-9. < and > should
  redisplay the buttons 0-f.

* During parentheses processing if a numerical error occured, the
  display is now set to "Error", and the operand field is set to "CLR".

* The contents of v->disp_val are now zeroised when the first left
  parenthesis is found. This is to allow for correct calculations when
  invalid numbers and operands are found inside the parentheses.

----

v3.1 - patchlevel 3 - 26th September 1990.

* When you type '*' (synonymous with multiplication 'x'), the op field
  was not being set.

* Displaying the Memory register window shouldn't clear the operand
  field.

* Use of a pending operation within a current calculation, will result
  in the erasing of the display of the type of the current operation.

* The 10 constant values were accidentally being zeroised in
  init_vars().

* The ASC, Enter Con/Fun windows and the mode window are all pinned
  when initially displayed.

* The command line option extraction routine now understands -Wx as
  being synonymous with -scale.

* Added two new command line options, -2 and -3 which start up the
  color version of calctool with a 2D and a 3D look respectively.
  The manual pages have been updated.

  NOTE: The color -2 version renders a lot faster then the default
        color option.

* If you had typed a left parenthesis, then hitting certain
  calctool keys that generate control characters (such as Tan),
  didn't get displayed properly. They are now displayed as ^c,
  where c is the character in question.

* Hitting the Delete and Back Space keys after entering a left
  parenthesis now does the appropriate action.

----

v3.1 - patchlevel 2 - 21st September 1990.

* If a left parenthesis had been entered, and a selection then
  made from the Mode window, calctool would core dump.

* The memory register and constant values were not getting initialised
  to zero.

----

v3.1 - patchlevel 1 - 17th September 1990.

* Ran calctool through xsaber, and cleaned up any errors/warning
  generated.

* Made as many functions as possible in xview.c, static.

* calctool can now automatically resize itself using the frame resize
  corners. The fonts are reinitialised depending upon the new scale,
  and the calctool button images regenerated depending upon the new
  size.

* The calctool.info file has been fixed up to mention the logical mode
  under the mode information.

* If the user holds the left mouse button down over a calctool button
  that has a menu associated with it, and the length of the default
  menu item is zero, then the menu button glyph is now placed on the
  right side of the calctool button.

----

v3.1 - patchlevel 0 - 12th September 1990.

* Started work on the OpenWindows v3.0 calctool.

* Created a minimal Makefile. Reversed the order of patch descriptions
  in the CHANGES file, so that the latest is at the beginning.

* Added standard Sun Microsystems headers to each .c and .h file.

* Added in code to determine whether there is a Sun3 or a Sun4 type
  keyboard attached, and adjusts the right function keypad accordingly.
  Bugid 1039460 can be closed.

* For the Sun4 keyboard, changed the R6 (*) definition to x from *.
  This now allows multiplication to work correctly.

* For the Sun3 keyboard, changed the R14 '1' definition to '.'.

* The key labled CHS has been changed to +/-.

* Removed the three spare entries from the colormap table. As this
  is now XView and not SunView, the colormap size doesn't have to be
  a power of 2.

* calctool now looks for KBD_USE and KBD_DONE events to determine if
  calctool has the keyboard focus, and sets the mapping of the Del/.
  function key to '.' or Del acordingly.

* Added the '*' case to the switch table in do_calc() to allow '*' to
  be synonymous for multiplication.

* All the "variable" variables are now defined in structures and
  malloced. This should make it fairly trivial to turn calctool
  into a library routine if so required.

* Made as many functions as possible void.

* Fixed up the usage() message.

* Removed references to the -i (inverse video) command line option,
  which is not supported under XView/Xlib.

* If there is a mode window displayed and it is pinned, then trying 
  to change to Basic mode will have no effect. The user has to unpin
  the frame to achieve this. 

* Now recognises the -Wn and +Wn command line options to disable or
  enable a frame titleline. The actual contents of the titleline
  still needs to be set with the -Wl option.

* The manual page has been updated to describe the -Wn and +Wn
  command line options, and the change of CHS to +/-.

* The calctool.info file has been updated to reflect the change of
  Chs to +/-.

* Calctool now understands the -scale and -Ws (-size) command line
  options, and adjusts the button sizes and the fonts it uses
  accordingly.

* A check is now made in the get_menu_def routine for a valid default
  menu item. Initialy it is possible for the Function menu to not have
  a default item. If there isn't one, then get_menu_def() now returns
  -1. This is checked for in handle_menu_selection() and prevents an:
  "XView warning: invalid object (not a pointer), xv_get" message.
  Bugid 1039912 can be closed.

* With the greying in/out of the calctool buttons, the button is only
  redrawn if it's changing color/state.

----

v3.0 - patchlevel 24 - 22nd May 1990.
 
* Columns 1 and 2 have been reversed for the -r "right-handed" option.
  This means that the Quit buton will be in the bottom left hand
  corner.

----

v3.0 - patchlevel 23 - 22st May 1990.
 
* Fixed up repaint problem on monochrome screen when no selection was
  made from the displayed popup menu.
 
* Added -r command line option to display a "right-handed" calculator.
 
* Removed unwanted -W? command line options.
 
* Updated the calctool manual page. The -r option was added and the
  -Wi, -WP and -Wp options were removed because these are generic tool
  arguments.

----

v3.0 - patchlevel 22 - 19th May 1990.
 
* Added menu_showing kludge to xview.c, to prevent multiple repaints
  on mono screens.

----

v3.0 - patchlevel 21 - 12th May 1990.
 
* Entering numbers with more then 10 numeric places were being
  converted incorrectly.

----

v3.0 - patchlevel 20 - 9th May 1990.
          
* XView calctool has been run through XSaber-C, and several changes
  made because of the error messages produced.
 
* There was an uninitialised variable exp_sign in convert_display()
         
* The variable label, used to store the calctool labels was two
  characters too small.
 
* In write_cf_value, the variable result was being written to. This
  was clobbering the global variable called result, which was the
  calculators current result. A local variable with the same name
  has been introduced.
 
* If the calculation  2+(3*(4+5)-6)  was entered, the display should
  not be adjusted until the last parenthisis is matched. This was not
  the case, and has now been fixed.

----

v3.0 - patchlevel 19 - 7th May 1990.
                 
* Calctool didn't correctly grey out buttons when run on a mono
  screen.
          
* A -m option has been introduced to allow you to run in just black
  and white on a color screen.
          
* Made sure that after a menu has been displayed, the grey area
  repaint of the canvas occurs on an even pixel boundary.

----

v3.0 - patchlevel 18 - 2nd May 1990.
          
* The XView driver has been fixed so that the additional popup
  frames don't "jiggle" about.

----

v3.0 - patchlevel 17 - 27th April 1990.
          
* The XView driver has been adjusted so that auxiliary frames are
  only created if they are used.

----

v3.0 - patchlevel 16 - 20th April 1990.
 
* Added in the changes to include ds_position_popup, to successfully
  position the popup windows.
 
* Buttons are now correctly stenciled.

----

v3.0 - patchlevel 15. - 17th April 1990.
 
* If the user presses left over a calctool button which has a menu
  associated with it, then as much as possible of the default menu
  item is now shown on the button label.
 
* References to DRAGING have been changed to DRAGGING.
 
* The mouse event code in process_event in graphics.c, has been
  divided up into separate routines.
 
* If the left mouse button was pressed initially, when it wasn't
  over a calctool button, then the OPEN LOOK mouse dragging effect
  didn't work.
 
* If the right mouse button was pressed initially when it wasn't
  over a calctool button which had a menu associated with it, then
  the correct OPEN LOOK actions were not performed.

----

v3.0 - patchlevel 14. - 15th April 1990.
 
* A few things have been done to make calctool more OPEN LOOK.
  These include only being able to SELECT with the left button.
  The middle button has no effect. The right button is only
  useful on buttons which have a menu associated with them.
  If you click on the SELECT mouse button and drag the mouse
  around, the calctool buttons invert and return to normal when
  the mouse moves over them. Exiting the calctool window when
  the mouse is being dragged, deselects the last button.
 
* If the users Clicks over a calctool button with the left mouse
  button, and this calctool button has a menu associated with it,
  then the default menu item value is selected. This has introduced
  an extra field to the cmenus menu structure, which is the initial
  default value.
 
* In scientific mode, 6 was being displayed as 6.00e+ instead of
  6.00e+0.

----

v3.0 - patchlevel 13. - 26th March 1990.
 
* The ability to store values via the popup menu was broken by a
  change in patch #11. This is now fixed.

----

v3.0 - patchlevel 12. - 22st March 1990.
 
* Clicking SELECT on the pane of the Memory Registers
  window still displayed keys from the Calculator base window.
 
* If a number was being displayed in scientific notation in
  hexidecimal, then the exponent'e' was being incorrectly converted
  to uppercase.
 
* The destroy_proc routine has been removed from both the XView and
  the SunView drivers. This means that the X/NeWS command "Save
  Workspace" now correctly works. The do_frame routine has been
  moved to functions.c
 
* The incorrect result was being produced with the parenthesis code.
  This was because the push_op and push_num routines were being
  passed a negative index.

----

v3.0 - patchlevel 11. - 20th March 1990.
 
* If one of the following operators (+, -, x or /) was used in
  between the sto operator and the register, then calctool would hang.
 
* Calctool was only allowing a certain maximum number of digits to
  be entered in each base; 40 for binary, 15 for octal and 12 for
  decimal and hexidecimal. This has been changed to allow upto
  MAX_DIGITS (40) to be entered, irrespective of what base you are
  in. Note that internal accuracy is lost above the number of digits
  (40/bin, 15/oct, 12/dec, 12/hex).
 
* The exponent portion of scientific numbers displayed in binary was
  incorrect.

----

v3.0 - patchlevel 10. - 16th March 1990.
 
* Both the XView and the SunView version now use a canvas repaint
  handler which tries to repaint the smallest amount possible for the
  main calctool canvas plus the canvas for the special mode.
 
* The titleline for the mode popup frame now has the initial letter
  of each word capitalised.

* The "4" button was displaying as 4.. at certain times when the
  main calctool frame was completely redrawn. This is now fixed.

* Redundant code has been removed, plus the comments in functions.c
  have been corrected.

----

v3.0 - patchlevel 9. - 15th March 1990.
 
* The title line now says "Calculator" and not "Calctool".
 
* All main calctool canvas and the mode popup canvas are now retained.
  This should prevent the repaint events when a menu is poped up.
  Note that calctool is still capable of correctly repainting itself,
  should that retained canvas go away.
 
* The calctool buttons have been remade. The height is now 28 pixels
  instead of 48 pixels. The XView version now uses the Lucida font
  in various sizes. The menu glyph has been made slightly smaller to
  be in proportion to the new sized buttons.
 
* The button labels can now contain upto four characters, plus
  allowing room for the menu glyph. The labels now just have the
  initially character in uppercase. Labels are now much more readable.
 
* The mode popup has changed shape. It's now two rows of eight columns
  and fits in nicely below the main calctool window. The buttons have
  been rearranged on this popup (in the various modes).
 
* The Mem and Asc keys now have the ... menu mark, to show that they
  display popup frames.
 
* The title line of the memory register window now is "Memory
  Registers" and not "Memory registers". This frame now comes up with
  the push pin in.
 
* Clicking SELECT on the register window no longer displays calctool
  buttons on this window.
 
* Clicking on the Mem key when the memory register window is shown,
  no longer removes it.
 
* The calctool.info file has been modified. All key names have been
  changed from capital letters to just the initial letter in uppercase
  with the rest in lowercase. Examples for all the financial functions
  have been added.
 
* The calctool display now shows characters typed in during parenthesis
  processing.

----

v3.0 - patchlevel 8. - 1st March 1990.
 
* Parentheses have been fully implemented.

----

v3.0 - patchlevel 7. - 27th February 1990.
 
* The < and > shift operators have been moved to the logical popup.
  The 1/x and x^2 keys have been moved to the main calctool frame.
 
* Keyboard handling has been fixed up so that all possible valid
  keys are available from either the main calctool frame or the
  current mode popup (if there is one).
 
* The calctool.info file has been updated for the new layout.
 
* The code for adding/altering constant/function popup menu values
  has been simplified to solve a problem with the new value being
  in the wrong place.
 
* The "business" mode has been renamed "financial" mode with a
  corresponding letter 'f'. The "basic" mode letter has been changed
  from 'n' to 'b'.
 
* Nine financial keys and their associated routines have been
  included. The calctool.info file has been updated with descriptions
  of these definitions.
 
* Just before the buttons table in calctool.c, a table of currently
  used keyboard equivalents has been defined. This should make it
  easier to show what ones are available for new functions.
 
* The variable array mem_vals has been renamed to mvals.
 
* More work has been done on the parentheses handling, but this is
  not complete yet.

----

v3.0 - patchlevel 6. - 23rd February 1990.
 
* The code for the "Enter Function/Constant" has been tested,
  and is hopefully now bug free.
 
* Hooks for the parentheses code has been written.
 
* The calculator has had the logical functions moved into a
  separate mode on the popup mode frame. One column has been
  removed, and the keys rearranged. The SQRT key has been put
  back on the main frame, and is now GREY0. So is the ASC key.
  There are no buttons showing where there are no functions in
  this position on the mode frames.

----

v3.0 - patchlevel 5. - 22nd February 1990.
 
* The CHANGES file has been updated for all patches.
 
* When there is no calculator mode, the "panel item" is set to
  BASIC, not NONE. The keyboard equivalent is still 'n'.
 
* The auxiliary popup frames now come up correctly with the XView version.
 
* The display no longer truncates to 30 digits when in binary
  mode. To achieve this, I've had to change the numeric display
  font to cour.r.18 from cour.r.24.
 
* The code for the "Enter Function/Constant" has been written,
  compiled and partially tested. It is not bug free yet though,
  so shouldn't yet be used.

----

v3.0 - patchlevel 4. - 21st February 1990.
 
* Fixes up the calctool.info file.
 
* Fixes up the validkeys array (keys that can be validly pressed
  after an error has occured).
 
* I've changes several calctool button keyboard equivalents, to
  make the result more consistent. Buttons with menus, now tend
  to have a capital letter equivalent, unless it's a special key
  like <, > or #.
 
  Changed values are:
 
  Button display    Keyboard equivalent.
       MO                   M
       RT                   R
       ST                   S
       FN                   F
       INT               Control-i
       FRAC              Control-f
       ABS               Control-u
       1/x                  r
       SQRT                 s
       y^x                  y
       KEYS                 k
       MEM                  m
 
* Pressing the KEYS button now successfully changes the values on
  the mode popup frame if it is displayed.
 
* Setting the calculator mode to NONE now correctly shows NONE in
  the display area.
 
* I have fixed up the .calctoolrc file for the key changes listed above.
 
* Do_help now has correct values when selecting help for items in
  the popup calculator mode window.
 
* The last remaining pixwin call has been removed from the XView
  driver and the handling of server images has been improved.
 
* The control character sequences in the function popup menu are
  now correctly displayed.
 
* Repaint handlers have been added to the SunView and XView drivers,
  and the hooks are in place to do minimal repaint.

----

v3.0 - patchlevel 3. - 20th February 1990.

* The ASC frame is now the correct size.

* The do_function routine now works correctly.

* The memory register window now displays correctly.

* The mode popup frame now correctly displays the new mode buttons
  if the mode window was already being displayed.

* The SunView driver had an incorrect XV_SHOW; should have been a WIN_SHOW.

* Greying out of the redundant numeric keys is now handled differently.

* The shift keys will now shift upto 15 places.
 
* I've removed all the pixwin calls (except one) in the XView
  driver. The colormap handling is now also done at the Xlib level.
 
* All the hooks are in place for the "New Constant" and "New
  Function" entries in the constant and function menus.

----

v3.0 - patchlevel 2. - 19th February 1990.

* The mode keys are on a separate popup frame.

* The base values (BIN, OCT, DEC, HEX) are under one key with popup menu.

* The display values (ENG, FIX, SCI) are under one key with popup menu.

* The size of the calculators main frames is now 9 columns x 6 rows.

* RAND, TMv, HYP and INV have been moved to the scientific mode
  frame which is now 4 columns x 4 rows. The TM is a button with
  popup menu for the trig type values (DEG, GRAD and RAD).

* The frames no longer have resize corners. This will prevent the
  user from resizing the calctool.

----

v3.0 - patchlevel 1. - 15th February 1990.

* Popup menus now use the default font.

* The SunView and the XView routines returned that the fonts were
  of different widths, so I've rewritten the part of set_item that
  shows the calculator display to use a get_strwidth, and then set
  the string x position based on this.

* I've implemented context sensitive help.

* I've implemented the ASC key. I have a philosophical problem with
  the current implementation. It should be possible to do every
  calctool operation solely by using the keyboard. I've implemented
  ASC this way in this new version.

* Updated calctool.info,rearranging the order to tie in with the
  new button layout, and adding in help messages for all the new
  functions.

* Removed all redundant code. This includes unwanted command line
  option parsing, variables and routines associated with the help
  file, plus others.

* Started to tidy up the XView driver.

----

v3.0 - patchlevel 0. - 14th February 1990.

* New version passed over to the desktop group for comments.

* Started 8th February 1990.

====
