home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 200-299 / ff214.lzh / MandelVroom / src / help.c < prev    next >
C/C++ Source or Header  |  1989-05-30  |  9KB  |  483 lines

  1. /*
  2.  * MandelVroom 2.0
  3.  *
  4.  * (c) Copyright 1987,1989  Kevin L. Clague, San Jose, CA
  5.  *
  6.  * All rights reserved.
  7.  *
  8.  * Permission is hereby granted to distribute this program's source
  9.  * executable, and documentation for non-comercial purposes, so long as the
  10.  * copyright notices are not removed from the sources, executable or
  11.  * documentation.  This program may not be distributed for a profit without
  12.  * the express written consent of the author Kevin L. Clague.
  13.  *
  14.  * This program is not in the public domain.
  15.  *
  16.  * Fred Fish is expressly granted permission to distribute this program's
  17.  * source and executable as part of the "Fred Fish freely redistributable
  18.  * Amiga software library."
  19.  *
  20.  * Permission is expressly granted for this program and it's source to be
  21.  * distributed as part of the Amicus Amiga software disks, and the
  22.  * First Amiga User Group's Hot Mix disks.
  23.  *
  24.  * contents: this file decodes gadget or menu types to determine what help
  25.  * file should be displayed in the help window.
  26.  */
  27.  
  28. #include "mandp.h"
  29.  
  30. static char *HelpFile;
  31.  
  32. ScrollHelpCmd(Msg)
  33.   struct IntuiMessage *Msg;
  34. {
  35.   struct Window *window;
  36.   struct Gadget *gadget;
  37.  
  38.   window = Msg->IDCMPWindow;
  39.   gadget = (struct Gadget *) Msg->IAddress;
  40.  
  41.   switch (Msg->Class) {
  42.  
  43.     case GADGETDOWN:
  44.          ModifyIDCMP(window, window->IDCMPFlags | MOUSEMOVE);
  45.          State = SCROLLHELPSTATE;
  46.          break;
  47.  
  48.     case MOUSEMOVE:
  49.          Page_File(HELPSCROLL);
  50.          break;
  51.  
  52.     case GADGETUP:
  53.          if (gadget->GadgetID == HELPSCROLL) {
  54.            ModifyIDCMP(window, window->IDCMPFlags & ~MOUSEMOVE);
  55.          }
  56.          Page_File(HELPSCROLL);
  57.          break;
  58.   }
  59. }
  60.  
  61. HelpMenuCmd( Msg )
  62.   struct IntuiMessage *Msg;
  63. {
  64.   register USHORT code;
  65.  
  66.   code = Msg->Code;
  67.  
  68.   HelpFile = NULL;
  69.  
  70.   if (code == MENUNULL)
  71.     return;
  72.  
  73.   switch ( MENUNUM( code ) ) {
  74.  
  75.     case PROJECTMENU:
  76.          HelpProjectMenu(code);
  77.          break;
  78.  
  79.     case DISPLAYMENU:
  80.          HelpDisplayMenu(code);
  81.          break;
  82.  
  83.     case CALCULATEMENU:
  84.          HelpCalculateMenu(code);
  85.          break;
  86.  
  87.     case SPECIALMENU:
  88.          HelpSpecialMenu(code);
  89.          break;
  90.   }
  91.  
  92.   if (HelpFile == NULL)
  93.     DispErrMsg("No Help for that object",0);
  94.   else
  95.     ShowHelp("Mandelbrot:Help/",HelpFile);
  96.  
  97. }
  98.  
  99. /*
  100.  * Decide what to do for Project menu's Items
  101.  */
  102. HelpProjectMenu(code)
  103.   USHORT code;
  104. {
  105.   switch (ITEMNUM(code)) {
  106.  
  107.     case NEWITEM:
  108.  
  109.          switch( SUBNUM(code) ) {
  110.            case 0:
  111.                 HelpFile = "NewMand";
  112.                 break;
  113.  
  114.            case 1:
  115.                 HelpFile = "NewJulia";
  116.                 break;
  117.          }
  118.          break;
  119.  
  120.     case HELPITEM:
  121.          HelpFile = "Help";
  122.          break;
  123.  
  124.     case CURITEM:
  125.          HelpFile = "Current";
  126.          break;
  127.  
  128.     case CLOSEPROJ:
  129.          HelpFile = "CloseProj";
  130.          break;
  131.  
  132.     case SAVEPROJ:
  133.     case LOADITEM:
  134.          HelpFile = "Load.Save";
  135.          break;
  136.  
  137.     case SAVEILBM:
  138.          HelpFile = "SaveILBM";
  139.          break;
  140.  
  141.     case CANCELITEM:
  142.          HelpFile = "CancelCmd";
  143.          break;
  144.  
  145.     case QUITITEM:
  146.          HelpFile = "Quit";
  147.          break;
  148.     }
  149. } /* HelpProjectMenu */
  150.  
  151. /*
  152.  * Decide what to do for Edit menu's Items
  153.  */
  154. HelpDisplayMenu(code)
  155.   USHORT code;
  156. {
  157.   switch (ITEMNUM(code)) {
  158.  
  159.     case COLORITEM:
  160.          HelpFile = "ColorPalette";
  161.          break;
  162.  
  163.     case CYCLEITEM:
  164.          HelpFile = "CycleControl";
  165.          break;
  166.  
  167.     case CONTOURITEM:
  168.          HelpFile = "ContourGen";
  169.          break;
  170.  
  171.     case AUTOCNTRITEM:
  172.          HelpFile = "AutoContour";
  173.          break;
  174.  
  175.     case HISTOGRAMITEM:
  176.          HelpFile = "Histogram";
  177.          break;
  178.  
  179.     case DEPTHITEM:
  180.          InitDepthSubs();
  181.          HelpFile = "NumColors";
  182.          break;
  183.  
  184.     case VIEWMODEITEM:
  185.          InitViewModesSubs();
  186.          HelpFile = "ScreenType";
  187.          break;
  188.  
  189.     case SCREENITEM:
  190.          InitSizeSubs();
  191.          HelpFile = "ScreenSize";
  192.          break;
  193.  
  194.     case BORDERITEM:
  195.          InitBorderSubs();
  196.          HelpFile = "Border";
  197.          break;
  198.     }
  199. } /* HelpDisplayMenu */
  200.  
  201. /*
  202.  * Decide what to do for Special Menu's Items
  203.  */
  204. HelpCalculateMenu(code)
  205.   USHORT code;
  206. {
  207.   switch (ITEMNUM(code)) {
  208.  
  209.     case ZOOMITEM:
  210.  
  211.          switch(SUBNUM(code)) {
  212.            case ZOOMIN:
  213.                 HelpFile = "ZoomIn";
  214.                 break;
  215.            case ZOOMOUT:
  216.                 HelpFile = "ZoomOut";
  217.                 break;
  218.            case ZOOMOFF:
  219.                 HelpFile = "ZoomClose";
  220.                 break;
  221.            case ZOOMJULIA:
  222.                 HelpFile = "ZoomJulia";
  223.                 break;
  224.          }
  225.          break;
  226.  
  227.     case SCROLLITEM:
  228.          HelpFile = "Pan";
  229.          break;
  230.  
  231.     case LENSITEM:
  232.          InitLensSubs();
  233.          HelpFile = "Lens";
  234.          break;
  235.  
  236.     case GENERATEITEM:
  237.          HelpFile = "Generate";
  238.          break;
  239.  
  240.     case GENERATORITEM:   /* generator type */
  241.          InitGenSubs();
  242.          HelpFile = "Generator";
  243.          break;
  244.  
  245.     case STATSITEM:
  246.          HelpFile = "Statistics";
  247.          break;
  248.  
  249.     case COUNTITEM:
  250.          HelpFile = "MaxIteration";
  251.          break;
  252.   }
  253. } /* HelpCalcualteMenu */
  254.  
  255. /*
  256.  * Decide what to do for Special Menu's Items
  257.  */
  258. HelpSpecialMenu(code)
  259.   USHORT code;
  260. {
  261.   switch (ITEMNUM(code)) {
  262.  
  263.     case PRESETITEM:
  264.          HelpFile = "Presets";
  265.          break;
  266.  
  267.     case ORBITITEM:
  268.          HelpFile = "Orbit";
  269.          break;
  270.  
  271.     case ORBITMATHITEM:
  272.          HelpFile = "MathOrbit";
  273.          break;
  274.  
  275.     case MAXORBITEM:
  276.          HelpFile = "MaxOrbit";
  277.          break;
  278.   }
  279. } /* HelpCalculateMenu */
  280.  
  281. /*
  282.  * Perform functions for Gadget down messages
  283.  */
  284. HelpGadgetCmd(Msg)
  285.   struct IntuiMessage *Msg;
  286. {
  287.   struct Gadget *gadget;
  288.  
  289.   gadget = (struct Gadget *) Msg->IAddress;
  290.  
  291.   HelpFile = NULL;
  292.  
  293.   switch (gadget->GadgetID >> WINDTYPEBITS & WINDMASK) {
  294.  
  295.   case PALTYPE:
  296.        HelpPalGadget(gadget);
  297.        break;
  298.  
  299.   case CONTYPE:
  300.        HelpContGadget(gadget);
  301.        break;
  302.  
  303.   case PICTTYPE:
  304.        HelpPictGadget(gadget);
  305.        break;
  306.  
  307.   case CYCTYPE:
  308.        HelpCycGadget(gadget);
  309.        break;
  310.  
  311.   case ORBTTYPE:
  312.        HelpFile = "Orbit";
  313.        break;
  314.   }
  315.  
  316.   if (HelpFile != NULL)
  317.     ShowHelp("Mandelbrot:Help/",HelpFile);
  318.   else
  319.     DispErrMsg("No Help for that object",0);
  320. }
  321.  
  322. /*
  323.  * Interpret the gadgets and do the right thing
  324.  */
  325. HelpPalGadget(gadget)
  326.   register struct Gadget *gadget;
  327. {
  328.   switch (gadget->GadgetID >> TYPEBITS & TYPEMASK) {
  329.  
  330.   case PALPENS:
  331.        HelpFile = "PalPens";
  332.        break;
  333.  
  334.   case PALCNTLS:
  335.        HelpPalCntl(gadget);
  336.        break;
  337.  
  338.   case PALPOTS:
  339.        HelpFile = "PalPots";
  340.        break;
  341.   }
  342. } /* HelpPalGadget */
  343.  
  344. /*
  345.  * We got a color palette command gadget
  346.  */
  347. HelpPalCntl(gadget)
  348.   register struct Gadget *gadget;
  349. {
  350.   switch (gadget->GadgetID) {
  351.  
  352.   case PALCOPY:
  353.        HelpFile = "PalCopy";
  354.        break;
  355.  
  356.   case PALRANGE:
  357.        HelpFile = "PalRange";
  358.        break;
  359.  
  360.   case PALEXCG:
  361.        HelpFile = "PalExchg";
  362.        break;
  363.   }
  364. } /* HelpPalCntl */
  365.  
  366. HelpPictGadget(gadget)
  367.   register struct Gadget *gadget;
  368. {
  369.   switch (gadget->GadgetID) {
  370.  
  371.     case PICTCUR:
  372.          HelpFile = "PictCur";
  373.          break;
  374.  
  375.     case PICTGEN:
  376.          HelpFile = "Generate";
  377.          break;
  378.  
  379.     case PICTIN:
  380.          HelpFile = "ZoomIn";
  381.          break;
  382.  
  383.     case PICTOUT:
  384.          HelpFile = "ZoomOut";
  385.          break;
  386.  
  387.     case PICTJULIA:
  388.          HelpFile = "ZoomJulia";
  389.          break;
  390.   }
  391. }
  392.  
  393. /*
  394.  * Figure out what to do for this contour gadget
  395.  */
  396. HelpContGadget(gadget)
  397.   struct Gadget *gadget;
  398. {
  399.   switch (gadget->GadgetID >> TYPEBITS & TYPEMASK) {
  400.  
  401.     case CONTCNTLS:
  402.          switch (gadget->GadgetID) {
  403.            case CONTRECOL:
  404.                 HelpFile = "Paint";
  405.                 break;
  406.  
  407.            case CONTSET:
  408.                 HelpFile = "ContSet";
  409.                 break;
  410.  
  411.            case CONTSMTH:
  412.                 HelpFile = "ContSmooth";
  413.                 break;
  414.  
  415.            case CONTCUT:
  416.                 HelpFile = "ContCut";
  417.                 break;
  418.  
  419.            case CONTCOPY:
  420.                 HelpFile = "ContCopy";
  421.                 break;
  422.  
  423.            case CONTPASTE:
  424.                 HelpFile = "ContPaste";
  425.                 break;
  426.  
  427.            case CONTLAST:
  428.                 HelpFile = "ContLast";
  429.                 break;
  430.  
  431.            case CONTCEIL:
  432.                 HelpFile = "ContCeil";
  433.                 break;
  434.          }
  435.          break;
  436.  
  437.     case CONTSELS:
  438.          HelpFile = "ContPens";
  439.          break;
  440.  
  441.     case CONTPOTS:
  442.          HelpFile = "ContPots";
  443.          break;
  444.   }
  445. }
  446.  
  447. /*
  448.  * Figure out what to do for this color cycle gadget
  449.  */
  450. HelpCycGadget(gadget)
  451.   struct Gadget *gadget;
  452. {
  453.   switch (gadget->GadgetID >> TYPEBITS & TYPEMASK) {
  454.  
  455.     case CYCCNTLS:
  456.          switch (gadget->GadgetID) {
  457.            case CYCRANGE:
  458.                 HelpFile = "CycRange";
  459.                 break;
  460.  
  461.            case CYCDIR:
  462.                 HelpFile = "CycDir";
  463.                 break;
  464.  
  465.            case CYCSPEED:
  466.                 HelpFile = "CycSpeed";
  467.                 break;
  468.  
  469.            case CYCON:
  470.                 HelpFile = "CycOn";
  471.                 break;
  472.          }
  473.          break;
  474.  
  475.     case CYCRNUMS:
  476.          HelpFile = "CycRNums";
  477.          break;
  478.   }
  479. }
  480.  
  481.  
  482.  
  483.