home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / new / misc / math / cp / source / idcmp.c < prev    next >
C/C++ Source or Header  |  1994-05-01  |  8KB  |  446 lines

  1. #include "cp.h"
  2.  
  3. LONG listcode = -1;
  4.  
  5. BOOL sel = FALSE;
  6.  
  7. int addClicked( void )
  8. {
  9.      /* routine when gadget "_Add" is clicked. */
  10.      if (AddNewSet())
  11.        {
  12.           DrawView ( TRUE );
  13.        }
  14.      return ( 1 );
  15. }
  16.  
  17. int newfile( void )
  18. {
  19.      /* routine when "Open File" is selected from menu. */
  20.      FreeAllSets();
  21.      AddNewSet();
  22.      DrawView ( TRUE );
  23.      return ( 1 );
  24. }
  25.  
  26. int PlotDump( void )
  27. {
  28.      /* routine when "Print" is selected from menu. */
  29.      Dump ();
  30.      return ( 1 );
  31. }
  32.  
  33. int deleteClicked( void )
  34. {
  35.      /* routine when gadget "_Kill" is clicked. */
  36.  
  37.      if ( OpenGTXWindow( OpendelwinWindow ))
  38.        {
  39.           Death(20);
  40.        }
  41.  
  42.  
  43.      sel = FALSE;
  44.      GT_SetGadgetAttrs(delwinGadgets[0],delwinWnd,NULL,GTLV_Labels,SetList,TAG_DONE);
  45.  
  46.         do {
  47.                Wait ( 1L << delwinWnd-> UserPort-> mp_SigBit );
  48.              }
  49.           while ( HandledelwinIDCMP() );
  50.  
  51.      ClosedelwinWindow();
  52.      return (1);
  53. }
  54.  
  55.  
  56. int fullClicked( void )
  57. {
  58.      /* routine when gadget "_Full" is clicked. */
  59.      DrawView( TRUE );
  60.      return(1);
  61. }
  62.  
  63. int zoomClicked( void )
  64. {
  65.      /* routine when gadget "_Zoom" is clicked. */
  66.  
  67.      SetPointer( PlotWindowWnd, XPPointer, XPHEIGHT, XPWIDTH, XPXOFF , XPYOFF);    /* Set pointer cross for zoom */
  68.  
  69.      Zoom();
  70.  
  71.      return (1);
  72. }
  73.  
  74. int gridClicked( void )
  75. {
  76.      /* routine when gadget "_Grid" is clicked. */
  77.      Grid();
  78.      if ( grid == TRUE ) grid = FALSE;
  79.      else grid = TRUE;
  80.      return (1);
  81. }
  82.  
  83. int quitClicked( void )
  84. {
  85.      /* routine when gadget "_Quit" is clicked. */
  86.      return (0);
  87. }
  88.  
  89. int PreOpenRequest( void )
  90. {
  91. /* menu selection to set precision */
  92.  
  93.      if ( OpenGTXWindow( OpenPreSlideWindow ))
  94.        {
  95.           Death(20);
  96.        }
  97.  
  98.         do {
  99.                Wait ( 1L << PreSlideWnd-> UserPort-> mp_SigBit );
  100.              }
  101.           while ( HandlePreSlideIDCMP() );
  102.  
  103.     ClosePreSlideWindow();
  104.     return (1);
  105. }
  106.  
  107. int PlotWindowItem0( void )
  108. {
  109.  
  110. struct EasyStruct ES =
  111.    {
  112.      sizeof(struct EasyStruct),
  113.      0,
  114.      "SAIC",
  115.      "%s",
  116.      "oh ok"
  117.     };
  118.      EasyRequest (PlotWindowWnd,&ES,NULL,"cP\nby\nChris Conger\n\nScience Applications International Corp.\n1993-94");
  119.      return (1);
  120. }
  121.  
  122. int PlotWindowItem1( void )
  123. {
  124.      return (0);
  125. }
  126.  
  127. int PlotWindowItem2( void )
  128. {
  129.      LOGX = FALSE;
  130.      DrawView( TRUE );
  131.      return (1);
  132. }
  133.  
  134. int PlotWindowItem3( void )
  135. {
  136.      LOGX = TRUE;
  137.      DrawView( TRUE );
  138.      return (1);
  139. }
  140.  
  141. int PlotWindowItem4( void )
  142. {
  143.      LOGY = FALSE;
  144.      DrawView( TRUE );
  145.      return (1);
  146. }
  147.  
  148. int PlotWindowItem5( void )
  149. {
  150.      LOGY = TRUE;
  151.      DrawView( TRUE );
  152.      return (1);
  153. }
  154.  
  155. int PlotWindowItem6( void )
  156. {
  157.      if( sym == TRUE ) 
  158.        {
  159.         sym = FALSE;
  160.          DrawView ( FALSE );
  161.        }
  162.      else
  163.        {
  164.           sym = TRUE;
  165.         SymAllSets();
  166.       }
  167.      return ( 1 );
  168. }
  169.  
  170. int PlotWindowItem7( void )
  171. {
  172.  
  173.      if( CPANEL == TRUE )
  174.        {
  175.           CPANEL = FALSE;
  176.           RemoveGList( PlotWindowWnd, PlotWindowGList, PlotWindow_CNT+1 );
  177.        }
  178.      else
  179.        {
  180.           AddGList( PlotWindowWnd,PlotWindowGList, NULL, PlotWindow_CNT+1, NULL );
  181.           CPANEL = TRUE;
  182.        }
  183.      DrawView ( FALSE );
  184.      return ( 1 );
  185. }
  186.  
  187. int NewDepth(WORD d)
  188. {
  189.     if ( delwinWnd )     ClosedelwinWindow();
  190.     if ( PlotWindowWnd ) ClosePlotWindowWindow();
  191.     if ( Scr )           CloseDownScreen();
  192.  
  193.      depth = d;
  194.  
  195.      if (d==1) { MONO = TRUE; lastcolor=1;}
  196.      if (d==2) { MONO = FALSE; lastcolor=3;}
  197.      if (d==3) { MONO = FALSE; lastcolor=7;}
  198.      if (d==4) { MONO = FALSE; lastcolor=15;}
  199.      
  200.      if ( OpenGTXScreen()) Death(10);
  201.  
  202.      if ( OpenGTXWindow( OpenPlotWindowWindow )) Death(10);
  203.  
  204.     DrawView (FALSE);
  205.      
  206.   return ( 1 );    
  207. }
  208.  
  209. int NewDepth1()
  210. {
  211.     return (10);
  212. }
  213. int NewDepth2()
  214. {
  215.     return (20);
  216. }
  217. int NewDepth3()
  218. {
  219.     return (30);
  220. }
  221. int NewDepth4()
  222. {
  223.     return (40);
  224. }
  225.  
  226.  
  227. int PlotWindowVanillaKey( void )
  228. {
  229.      switch (PlotWindowMsg.Code)
  230.        {
  231.           case 'a':
  232.           case 'A':
  233.                return( addClicked() );
  234.           case 'k':
  235.           case 'K':
  236.                return( deleteClicked() );
  237.           case 'z':
  238.           case 'Z':
  239.                return( zoomClicked() );
  240.           case 'f':
  241.           case 'F':
  242.                return( fullClicked() );
  243.           case 'g':
  244.           case 'G':
  245.                return( gridClicked() );
  246.           case 'h':
  247.           case 'H':
  248.                return( CrossHair() );
  249.           case 'r':
  250.           case 'R':
  251.              DrawView( FALSE );
  252.                return( 1 );
  253.           case 'q':
  254.           case 'Q':
  255.                return ( quitClicked() );
  256.           case 'x':
  257.           case 'X':
  258.              if(LOGX) LOGX = FALSE;
  259.              else LOGX = TRUE;
  260.              DrawView( TRUE );
  261.              return (1);
  262.           case 'y':
  263.           case 'Y':
  264.              if(LOGY) LOGY = FALSE;
  265.              else LOGY = TRUE;
  266.              DrawView( TRUE );
  267.              return (1);
  268.           default:
  269.                return (1);
  270.        }
  271. }
  272.  
  273. int PlotWindowRawKey( void )
  274. {
  275. struct Rectangle rect;
  276.  
  277.     if (QueryOverscan(Disp, &rect, OSCAN_TEXT))
  278.       {
  279.  
  280.          switch (PlotWindowMsg.Code)
  281.            {
  282.               case 76:
  283.                 MoveScreen(Scr,0,min((rect.MaxY-rect.MinY), -(Scr->ViewPort.DyOffset)));
  284.                 return(1);
  285.               case 77:
  286.                 MoveScreen(Scr,0,rect.MinY-rect.MaxY);
  287.                 return(1);
  288.               case 78:
  289.                 MoveScreen(Scr,(rect.MinX-rect.MaxX), 0);
  290.                 return(1);
  291.               case 79:
  292.                 MoveScreen(Scr,(rect.MaxX-rect.MinX), 0);
  293.                 return(1);
  294.               default:
  295.                    return (1);
  296.              }
  297.        }
  298.      return(1);
  299. }
  300.  
  301.  
  302. int delwinVanillaKey(void)
  303. {
  304.      switch (delwinMsg.Code)
  305.        {
  306.           case 'r':
  307.           case 'R':
  308.                return( canlistClicked() );
  309.  
  310.           case 'd':
  311.           case 'D':
  312.                return ( delsetClicked());
  313.  
  314.         case 13 : /* hit enter */
  315.             delsetClicked();
  316.             return ( 0 );
  317.  
  318.         case 27 : /* hit escape */
  319.             return ( 0 );
  320.  
  321.           default:
  322.                   return (1);
  323.        }
  324. }
  325.  
  326. int delwinRawKey(void)
  327. {
  328. struct Set *node;
  329. WORD k=0;
  330.  
  331.     node = (struct Set *)SetList-> lh_Head;
  332.  
  333.      while ( node-> snode.ln_Succ ) { node = (struct Set*)node-> snode.ln_Succ; k++; }
  334.  
  335.      switch (delwinMsg.Code)
  336.        {
  337.  
  338.           case 76:     /* up arrow key */
  339.               
  340.               listcode = max(listcode-1,0);
  341.             sel = TRUE;
  342.             GT_SetGadgetAttrs(delwinGadgets[0],delwinWnd,NULL,GTLV_Selected,(UWORD)listcode,TAG_DONE);
  343.             return (1);
  344.  
  345.           case 77:    /* down arrow key */
  346.               
  347.               listcode = min(listcode+1,k-1);
  348.                  sel = TRUE;
  349.              GT_SetGadgetAttrs(delwinGadgets[0],delwinWnd,NULL,GTLV_Selected,(UWORD)listcode,TAG_DONE);
  350.             return(1);
  351.        }
  352.      return (1);
  353. }
  354.  
  355. int dellistClicked( void )
  356. {
  357. static ULONG osec=0, omsec=0;
  358. ULONG csec, cmsec;
  359. static LONG olcode=100;
  360.  
  361.     CurrentTime( &csec, &cmsec );
  362.  
  363.      sel = TRUE;
  364.      listcode = delwinMsg.Code;
  365.  
  366.     if ( DoubleClick ( osec, omsec, csec, cmsec ))
  367.       {
  368.         if ( olcode == listcode )
  369.           {
  370.               delsetClicked ();
  371.               return( 0 );
  372.           }
  373.       }
  374.  
  375.     else
  376.       {
  377.           osec   = csec;
  378.           omsec  = cmsec;
  379.           olcode = listcode;
  380.       }
  381.  
  382.      return ( 1 );
  383. }
  384.  
  385. int delsetClicked( void )
  386. {
  387. struct Set *node;
  388. WORD k;
  389. UBYTE str[132];
  390.     
  391.      if ( sel )
  392.        {
  393.           node = (struct Set *)SetList-> lh_Head;
  394.           k = 0;
  395.  
  396.           while ( node && k < listcode )
  397.             {
  398.                node = (struct Set *)node-> snode.ln_Succ;
  399.                k++;
  400.             }
  401.  
  402.           GT_SetGadgetAttrs(delwinGadgets[0],delwinWnd,NULL,GTLV_Labels,~0,TAG_DONE);
  403.  
  404.  
  405.           if ( ! IsListEmpty(SetList))
  406.             {
  407.             strcpy(str,"Freeing -> ");
  408.             strcat(str,node-> snode.ln_Name);
  409.               SetWindowTitles( delwinWnd, str, str );
  410.             strcpy(str,"I'm Gone -> ");
  411.             strcat(str,node-> snode.ln_Name);
  412.               FreePoints( node -> FirstPoint);
  413.               Remove( (struct Node *)node );
  414.               FreeMem( node, sizeof(struct Set));
  415.            }
  416.  
  417.           SetWindowTitles( delwinWnd, str , MyName );
  418.  
  419.           GT_SetGadgetAttrs(delwinGadgets[0],delwinWnd,NULL,GTLV_Labels,SetList,TAG_DONE);
  420.         --listcode;
  421.           GT_SetGadgetAttrs(delwinGadgets[0],delwinWnd,NULL,GTLV_Selected,(UWORD)max(listcode,0),TAG_DONE);
  422.        }
  423.      return ( 1 );
  424. }
  425.  
  426. int canlistClicked( void )
  427. {
  428.      DrawView( FALSE );
  429.      return ( 0 );
  430. }
  431.  
  432. int delwinCloseWi