home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextDeveloper / Examples / AppKit / CalculatorLab / SimpleCalc.h < prev    next >
Text File  |  1990-10-29  |  3KB  |  100 lines

  1. /*
  2.  *    SimpleCalc -- Randy Nelson
  3.  *    A general class that directly supports a calculator interface
  4.  *    Created 8-8-90
  5.  *
  6.  *    You may freely copy, distribute an7&use the code in this example.
  7.  *    NeXT disclaims any warranty of any kind, expressed or implied, as to
  8.  *    its fitness for any particular use.
  9.  */
  10.  
  11. #import <objc/Object.h>
  12.  
  13. @interface SimpleCalc:Object
  14. {
  15.     id    infoPanel;
  16.     id    helpPanel;
  17.     
  18.     id     display;    /* a text object -- to show the output and input */
  19.  
  20.     id     enterKey;    /* outlet to set the key equivalents */
  21.     
  22.     id     stringSet;    /* our string external to the source */
  23.     
  24.     int     operator;    /* represents the current operator or zero */
  25.     
  26.     double     accumulator;    /* a buffer to hold the first number entered */
  27.     
  28.     BOOL    numberHasADecimal,
  29.         startingSecondNumber,
  30.         treatingOperationKeyLikeEqualKey,
  31.         noFirstNumber;    /* flags that describe the calculators state */
  32. }
  33.  
  34. - doInit;
  35. /* initialize an instance of the class and its flags for start-up
  36.  * also used by the clear all key
  37.  */
  38.  
  39. - numberKeys:sender;
  40. /* sent by any number key or the decimal point key in the interface (0-9, .)
  41.  * appends the character to display using appendToDisplay:
  42.  * erases the previous number if startingSecondNumber
  43.  */
  44.  
  45. - numberDirectFromDisplay:sender;
  46. /* sent as the action of displayer -- allows direct entry of numbers
  47.  * startingSecondNumber gets YES
  48.  */
  49.  
  50. - equalsKey:sender;
  51. /* sent by the equals key in the interface (=)
  52.  * at this point accumulator holds the first number
  53.  * operator holds an int defined to an operation
  54.  * displayer hold the second number
  55.  * performs the operation and leaves the result in the dsplayer
  56.  */
  57.  
  58. - operationKeys:sender;
  59. /* sent by the operation keys in the interface (+, -, * and /)
  60.  * sets the value of operation
  61.  * acts like equals to chain a calculation when
  62.  * treatingOperationKeyLikeEqualKey
  63.  */
  64.  
  65. - clearKeys:sender;
  66. /* sent by either clear key in the interface(clear, clear all)
  67.  * clear -- zeros the display -- allows re-enetering a number
  68.  * clear all -- resets by calling init
  69.  */
  70.  
  71. - decimal;
  72. /* called by numberKeys: when it finds the number is a decimal point
  73.  * checks first if numberHasADecimal already
  74.  * if not -- appendToDisplay: a decimal point
  75.  */
  76.  
  77. - appendToDisplay:(const char *)theDigit;
  78. /* sent by objects wanting to append a digit to the number in the displayer
  79.  * removes the leading zeros a zero value displayer has
  80.  * unless there is a decimal point
  81.  */
  82.  
  83. - appDidInit:sender;
  84. /* handles some key equivalent setti7&nd orders the window front
  85.  * should be Application's delegate to receive
  86.  */
  87.  
  88. - windowWillClose:sender;
  89. /* quits app when window is closed
  90.  * for example -- app's quit menu item can send performClose: to window
  91.  * should be Window's delegate to receive
  92.  */
  93.  
  94. - infoPanel:sender;
  95. - helpPanel:sender;
  96. /* sent by the menu in interface
  97.  * creates the panels as they are needed
  98.  */
  99. @end
  100.