home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / mar94 / os20 / util / mcalc.lha / MCalc / Source / MCalc.c < prev    next >
C/C++ Source or Header  |  1993-12-31  |  64KB  |  2,490 lines

  1. /*
  2. Auto:        smake MCalc
  3. */
  4.  
  5.  
  6. /* $Revision Header built automatically *************** (do not edit) ************
  7. **
  8. ** © Copyright by GuntherSoft
  9. **
  10. ** File             : SnakeSYS:CPrgs/MUICalc/MCalc.c
  11. ** Created on       : Saturday, 02.10.93 02:12:50
  12. ** Created by       : Kai Iske
  13. ** Current revision : V1.0
  14. **
  15. **
  16. ** Purpose
  17. ** -------
  18. **   - This is a quite flexible, powerful Calculator made for all
  19. **     those of you, who like to calc around ;) Even for
  20. **     programmers...
  21. **
  22. ** Revision V1.0
  23. ** --------------
  24. ** created on Saturday, 02.10.93 02:12:50  by  Kai Iske.   LogMessage :
  25. **     --- Initial release ---
  26. **
  27. *********************************************************************************/
  28.  
  29.  
  30.  
  31. /**********************************************************************/
  32. /*                    Externals to Scanner/Parser                     */
  33. /**********************************************************************/
  34. extern    UWORD        PCharRead;
  35. extern    UWORD        PColumn;
  36. extern    UWORD        PError;
  37. extern    UWORD        NonDouble;
  38. extern    int        yynerrs;
  39. extern    int        yychar;
  40. extern    int        yy_init;
  41. extern    int        yy_start;
  42. extern    FILE        *yyin, *yyout;
  43. extern    void        *yy_current_buffer;
  44.  
  45.  
  46. extern UWORD        RXIntType;
  47. extern UWORD        RXIntBase;
  48. extern UWORD        RXIntSign;
  49. extern UWORD        RXIntAngle;
  50.  
  51.  
  52. /**********************************************************************/
  53. /*    Aehm, SAS 6.50 seams to open up a window just as it likes ;)    */
  54. /**********************************************************************/
  55. char __stdiowin[] = "NIL:";
  56.  
  57.  
  58.  
  59. /**********************************************************************/
  60. /*                 External variables of ARexx module                 */
  61. /**********************************************************************/
  62. extern struct MUI_Command    RXCommands[];
  63.  
  64.  
  65.  
  66.  
  67. /**********************************************************************/
  68. /*                      Routines for that module                      */
  69. /**********************************************************************/
  70. static BOOL OpenLibs(void);
  71. static void CloseLibs(void);
  72. static void SetMainWinCycle(void);
  73. static BOOL OpenMainWin(void);
  74. static void CloseMainWin(void);
  75. static ULONG    __saveds __asm InsertFunc(register __a0 struct Hook *MyHook, register __a2 APTR Obj, register __a1 APTR *Data);
  76. static ULONG    __saveds __asm DispConstructFunc(register __a0 struct Hook *MyHook, register __a2 APTR MemPool, register __a1 struct ListStruct *Data);
  77. static ULONG    __saveds __asm DispDestructFunc(register __a0 struct Hook *MyHook, register __a2 APTR MemPool, register __a1 struct ListStruct *Data);
  78. static ULONG    __saveds __asm DispViewFunc(register __a0 struct Hook *MyHook, register __a2 char **array, register __a1 struct ListStruct *Data);
  79. static void InsertText(char *NewText);
  80. static void WriteClip(char *Entry);
  81. static void HandleInputs(void);
  82.  
  83.  
  84.  
  85.  
  86. /**********************************************************************/
  87. /*                           Library-Bases                            */
  88. /**********************************************************************/
  89. extern    struct ExecBase    *SysBase;
  90.  
  91. struct    IntuitionBase    *IntuitionBase        = NULL;
  92. struct    GfxBase        *GfxBase        = NULL;
  93. struct    Library        *UtilityBase        = NULL;
  94. struct    Library        *IconBase        = NULL;
  95. struct    Library        *MUIMasterBase        = NULL;
  96. struct    Library        *MathIeeeDoubBasBase    = NULL;
  97. struct    Library        *MathIeeeDoubTransBase    = NULL;
  98. struct    Library        *IFFParseBase        = NULL;
  99.  
  100.  
  101.  
  102.  
  103. /**********************************************************************/
  104. /*                            The Objects                             */
  105. /**********************************************************************/
  106. static    struct    DiskObject    *DObject    = NULL;
  107. APTR        AppObject            = NULL;        // Is referenced through ARexx module
  108. static    APTR    MainWindow;
  109. static    APTR    InOutGroup;
  110. static    APTR    InputGroup;
  111. APTR        InputString;                    // Is referenced through ARexx module
  112. static    APTR    OutputGroup;
  113. APTR        OutputBox;                    // Is referenced through ARexx module
  114. static    APTR    FunctionCycle;
  115. static    APTR    PageObject;
  116. static    APTR    InGads[61];
  117. static    APTR    ExeObj;
  118. static    APTR    ClrObj;
  119. static    APTR    AllClrObj;
  120.  
  121. static    APTR    MainGroup;
  122. static    APTR    FuncGroup;
  123. static    APTR    InGroup;
  124.  
  125. static    APTR    PrefsWindow;
  126. static    APTR    InOutObj;
  127. static    APTR    DFuncObj;
  128. static    APTR    DInObj;
  129. static    APTR    TypeObj;
  130. static    APTR    SizeObj;
  131. static    APTR    SignObj;
  132. static    APTR    AngleObj;
  133. static    APTR    LinesObj;
  134. static    APTR    LookObj;
  135. static    APTR    ClearInObj;
  136. static    APTR    FlushObj;
  137. static    APTR    ClipObj;
  138. static    APTR    OkObj;
  139. static    APTR    SaveObj;
  140. static    APTR    CancelObj;
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147. /**********************************************************************/
  148. /*                 Strings for Functions Cycle-Gadget                 */
  149. /**********************************************************************/
  150. static const char *FunctionEntries[] =
  151. {
  152.     "Mathematical set",
  153.     "Programmer`s set",
  154.     NULL
  155. };
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162. /**********************************************************************/
  163. /*                      Strings for Prefs-Cycles                      */
  164. /**********************************************************************/
  165. static const char *InOutLookEntries[] =
  166. {
  167.     "Input then Output",
  168.     "Output then Input",
  169.     NULL
  170. };
  171.  
  172. static const char *TypeEntries[] =
  173. {
  174.     "Decimal",
  175.     "HexDecimal",
  176.     "Octal",
  177.     "Binary",
  178.     NULL
  179. };
  180.  
  181. static const char *SizeEntries[] =
  182. {
  183.     "8-Bit",
  184.     "16-Bit",
  185.     "32-Bit",
  186.     NULL
  187. };
  188.  
  189. static const char *SignEntries[] =
  190. {
  191.     "Signed",
  192.     "Unsigned",
  193.     NULL
  194. };
  195.  
  196. static const char *AngleEntries[] =
  197. {
  198.     "Radiant",
  199.     "Degree",
  200.     NULL
  201. };
  202.  
  203. static const char *LookEntries[] =
  204. {
  205.     "Input & Output",
  206.     "Output & Input",
  207.     "Input",
  208.     "Output",
  209.     NULL
  210. };
  211.  
  212.  
  213. static const char *LookTemplates[] =
  214. {
  215.     "COL=0 DELTA=12 P=\033r MAW=100 MIW=0, COL=1 DELTA=12 P=\033r MAW=-1 MIW=-1",
  216.     "COL=1 DELTA=12 P=\033r MAW=-1 MIW=-1, COL=0 DELTA=12 P=\033r MAW=100 MIW=0",
  217.     "COL=0 DELTA=12 P=\033r MIW=100",
  218.     "COL=1 DELTA=12 P=\033r MIW=100"
  219. };
  220.  
  221.  
  222.  
  223. /**********************************************************************/
  224. /*                   Chars/String for window title                    */
  225. /**********************************************************************/
  226. static const char TypeChar[] =
  227. {
  228.     'D',
  229.     'H',
  230.     'O',
  231.     'B'
  232. };
  233.  
  234. static const char *BaseStr[] =
  235. {
  236.     "8",
  237.     "16",
  238.     "32"
  239. };
  240.  
  241.  
  242. static const char SignChar[] =
  243. {
  244.     'S',
  245.     'U',
  246. };
  247.  
  248.  
  249. static const char *AngleStr[] =
  250. {
  251.     "RAD",
  252.     "DEG",
  253. };
  254.  
  255.  
  256.  
  257.  
  258. /**********************************************************************/
  259. /*                          Menu-Definition                           */
  260. /**********************************************************************/
  261. static struct    NewMenu MainMenuDef[] =
  262. {
  263.     NM_TITLE, "Project", NULL, 0, NULL, NULL,
  264.     NM_ITEM, "Preferences...", "P", 0, NULL, (APTR)ID_PREFS,
  265.     NM_ITEM, NM_BARLABEL, NULL, 0, NULL, NULL,
  266.     NM_ITEM, "About...", "?", 0, NULL, (APTR)ID_ABOUT,
  267.     NM_ITEM, NM_BARLABEL, NULL, 0, NULL, NULL,
  268.     NM_ITEM, "Quit", "Q", 0, NULL, (APTR)ID_QUIT,
  269.  
  270.     NM_TITLE, "Edit", NULL, 0, NULL, NULL,
  271.     NM_ITEM, "Clear", "X", 0, NULL, (APTR)ID_CLEAR,
  272.     NM_ITEM, "All Clear", "Y", 0, NULL, (APTR)ID_ALLCLEAR,
  273.  
  274.     NM_TITLE, "History", NULL, 0, NULL, NULL,
  275.     NM_ITEM, "Pick left entry", "L", 0, NULL, (APTR)ID_PICKLEFT,
  276.     NM_ITEM, "Pick right entry", "R", 0, NULL, (APTR)ID_PICKRIGHT,
  277.     NM_ITEM, NM_BARLABEL, NULL, 0, NULL, NULL,
  278.     NM_ITEM, "Copy left entry", "F", 0, NULL, (APTR)ID_CLIPCUTLEFT,
  279.     NM_ITEM, "Copy right entry", "G", 0, NULL, (APTR)ID_CLIPCUTRIGHT,
  280.  
  281.     NM_TITLE, "Display Bases", NULL, 0, NULL, NULL,
  282.     NM_ITEM, "Decimal", "D", CHECKIT|MENUTOGGLE, 14, (APTR)ID_DECIMAL,
  283.     NM_ITEM, "Hexadecimal", "H", CHECKIT|MENUTOGGLE, 13, (APTR)ID_HEXDECIMAL,
  284.     NM_ITEM, "Octal", "O", CHECKIT|MENUTOGGLE, 11, (APTR)ID_OCTAL,
  285.     NM_ITEM, "Binary", "B", CHECKIT|MENUTOGGLE, 7, (APTR)ID_BINARY,
  286.  
  287.     NM_TITLE, "Size", NULL, 0, NULL, NULL,
  288.     NM_ITEM, "8 Bit", "8", CHECKIT|MENUTOGGLE, 6, (APTR)ID_8BIT,
  289.     NM_ITEM, "16 Bit", "16", CHECKIT|MENUTOGGLE, 5, (APTR)ID_16BIT,
  290.     NM_ITEM, "32 Bit", "32", CHECKIT|MENUTOGGLE, 3, (APTR)ID_32BIT,
  291.  
  292.     NM_TITLE, "Sign", NULL, 0, NULL, NULL,
  293.     NM_ITEM, "Signed", "S", CHECKIT|MENUTOGGLE, 2, (APTR)ID_SIGNED,
  294.     NM_ITEM, "Unsigned", "U", CHECKIT|MENUTOGGLE, 1, (APTR)ID_UNSIGNED,
  295.  
  296.     NM_TITLE, "Angle", NULL, 0, NULL, NULL,
  297.     NM_ITEM, "Radiant", "A", CHECKIT|MENUTOGGLE, 2, (APTR)ID_RAD,
  298.     NM_ITEM, "Degree", "E", CH