home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1998 / MacHack 1998.toast / The Hacks! / COSEmulator / COSEmulator- SRC / src / BogusFinder.cpp < prev    next >
Encoding:
Text File  |  1998-06-21  |  10.3 KB  |  411 lines  |  [TEXT/CWIE]

  1. //===================================================================
  2. //=======================  Headers        =============================
  3.  
  4. #include "BogusFinder.h"
  5. #include "WindowManager.h"
  6. #include "Screen.h"
  7. #include "ApplicationEvents.h"
  8. #include "MenuBar.h"
  9. #include "ApplicationHandler.h"
  10. #include "GameUtilities.h"
  11.  
  12. //===================================================================
  13. //=======================  Globals        =============================
  14.  
  15. //===================================================================
  16. //=======================  #define        =============================
  17.  
  18.  
  19. //===================================================================
  20. //=======================  Function Prototypes    =====================
  21.  
  22.  
  23. /*----------------------------------------------------------------------------\
  24.  
  25.     BogusFinder :: Constructor
  26.  
  27. \----------------------------------------------------------------------------*/
  28.     BogusFinder :: BogusFinder( void )
  29. {
  30.     whichApp = 0;
  31.     
  32.     selectedIcon = 0xff;
  33.     movingIcon = false;
  34.     
  35.     MySetRectWH( &icons[ kIconPhotoShop ] , 0 , 0 , 188 , 47 );
  36.     MySetRectWH( &icons[ kIconMacAmp ] , 0 , 47 , 124 , 47 );
  37.     MySetRectWH( &icons[ kIconQT ] , 0 , 94 , 70 , 46 );
  38.     
  39.     MySetRectWH( &screenIcon[ kIconPhotoShop ] , 100 , 200 , 188 , 47 );
  40.     MySetRectWH( &screenIcon[ kIconMacAmp ] , 300 , 200 , 124 , 47 );
  41.     MySetRectWH( &screenIcon[ kIconQT ] , 500 , 200 , 70 , 46 );
  42. }
  43.  
  44. /*----------------------------------------------------------------------------\
  45.  
  46.     BogusFinder :: Init
  47.  
  48. \----------------------------------------------------------------------------*/
  49. Boolean    BogusFinder :: Init( void )
  50. {
  51.  
  52.     if( iconBuff.LoadPicBuff( 144 ) )
  53.     {
  54.         
  55.         SetUpMenuItems();
  56.         
  57.         return backGround.LoadPicBuff( 129 );
  58.     }
  59.     
  60.     return false;
  61. }
  62.  
  63. /*----------------------------------------------------------------------------\
  64.  
  65.     BogusFinder :: HandleEvent
  66.  
  67. \----------------------------------------------------------------------------*/
  68. void    BogusFinder :: HandleEvent( ushort event , void *data )
  69. {
  70.     switch( event )
  71.     {
  72.     case kAEMakeFrontAppEvent:
  73.         ChangeActive( true );
  74.     break;
  75.     
  76.     case kAEGoBackGroundEvent:
  77.         ChangeActive( false );
  78.     break;
  79.     
  80.     case kAEActivateEvent:
  81.         
  82.     break;
  83.     
  84.     case kAEDeactivateEvent:
  85.         
  86.     break;
  87.     
  88.     case kAEHideEvent:
  89.         
  90.     break;
  91.     
  92.     case kAEMenuSelect:
  93.         HandleMenuSelect( ((AEMenuWhere *)data)->which , ((AEMenuWhere *)data)->num );
  94.     break;
  95.     }
  96. }
  97.  
  98. /*----------------------------------------------------------------------------\
  99.  
  100.     BogusFinder :: HandleMouseClick
  101.  
  102. \----------------------------------------------------------------------------*/
  103. Boolean    BogusFinder :: HandleMouseClick( Boolean down, point where )
  104. {
  105.     IconHandleMouseClick( down , where );
  106.     return WMHandleMouseClick( down , where );
  107. }
  108.  
  109. /*----------------------------------------------------------------------------\
  110.  
  111.     BogusFinder :: HandleMouseMove
  112.  
  113. \----------------------------------------------------------------------------*/
  114. void    BogusFinder :: HandleMouseMove( point where )
  115. {
  116.     IconHandleMouseMove( where );
  117.     WMHandleMouseMove( where );
  118. }
  119.  
  120. /*----------------------------------------------------------------------------\
  121.  
  122.     BogusFinder :: CleanUp
  123.  
  124. \----------------------------------------------------------------------------*/
  125. void    BogusFinder :: CleanUp( rect *where )
  126. {
  127. // clean up the back ground
  128.     if( where == NULL )
  129.         screen.DrawGeneric( &backGround , &backGround.GetBoundsSize() , 
  130.                             &backGround.GetBoundsSize() , NULL ,
  131.                             0 , 0 , 0 );
  132.     else
  133.         screen.DrawGeneric( &backGround , where , 
  134.                             where , NULL ,
  135.                             0 , 0 , 0 );
  136.  
  137. // icons
  138.     IconCleanUp( where);
  139.     
  140. // now clean up the windows
  141.     DrawWindows( where );
  142. }
  143.  
  144. /*----------------------------------------------------------------------------\
  145.  
  146.     BogusFinder :: Maintance
  147.  
  148. \----------------------------------------------------------------------------*/
  149. void    BogusFinder :: Maintance( void )
  150. {
  151.     WMMaintance();
  152. }
  153.  
  154. /*----------------------------------------------------------------------------\
  155.  
  156.     BogusFinder :: ChangeActive
  157.  
  158. \----------------------------------------------------------------------------*/
  159. void    BogusFinder :: ChangeActive( Boolean act )
  160. {
  161.     if( act != active )
  162.     {
  163.         active = act;
  164.         
  165.         if( active )
  166.         {
  167.             InitSpecialMenus();
  168.             menuBar.AddMenuToList( &FileMenu );
  169.             menuBar.AddMenuToList( &EditMenu );
  170.             menuBar.AddMenuToList( &ViewMenu );
  171.             menuBar.AddMenuToList( &SpecialMenu ); 
  172.             
  173.             WMGoBackGround( false );
  174.         }
  175.         else
  176.         {
  177.             WMGoBackGround( true );
  178.         }
  179.     }
  180. }
  181.  
  182. /*----------------------------------------------------------------------------\
  183.  
  184.     BogusFinder :: SetUpMenuItems
  185.  
  186. \----------------------------------------------------------------------------*/
  187. void    BogusFinder :: SetUpMenuItems( void )
  188. {
  189.     AddMenuWindow( &appleMenu );
  190.     AddMenuWindow( &AppSwitchMenu );
  191.     
  192.     FileMenu.SetWhichMenu( kFileMenuTitle );
  193.     FileMenu.SetMaxItems( 18 );
  194.     FileMenu.AddItem( 0 , "New Folder" , true );
  195.     FileMenu.AddItem( 1 , "Open" , false );
  196.     FileMenu.AddItem( 2 , "Print" , false );
  197.     FileMenu.AddItem( 3 , "Move To Trash" , false );
  198.     FileMenu.AddItem( 4 , "Close Window" , false );
  199.     FileMenu.AddItem( 5 , NULL , false );
  200.     FileMenu.AddItem( 6 , "Get Info" , false );
  201.     FileMenu.AddItem( 7 , "Label" , false );
  202.     FileMenu.AddItem( 8 , "Sharing..." , false );
  203.     FileMenu.AddItem( 9 , "Duplicate" , false );
  204.     FileMenu.AddItem( 10 , "Make Alias" , false );
  205.     FileMenu.AddItem( 11 , "Put Away" , false );
  206.     FileMenu.AddItem( 12 , NULL , false );
  207.     FileMenu.AddItem( 13 , "Find..." , false );
  208.     FileMenu.AddItem( 14 , "Show Original" , true );
  209.     FileMenu.AddItem( 15 , NULL , false );
  210.     FileMenu.AddItem( 16 , "Print Setup.." , true );
  211.     FileMenu.AddItem( 17 , "Print Desktop" , true );
  212.     FileMenu.Init();
  213.     AddMenuWindow( &FileMenu );
  214.     
  215.     EditMenu.SetWhichMenu( kEditMenuTitle );
  216.     EditMenu.SetMaxItems( 10 );
  217.     EditMenu.AddItem( 0 , "Undo" , false );
  218.     EditMenu.AddItem( 1 , NULL , false );
  219.     EditMenu.AddItem( 2 , "Cut" , false );
  220.     EditMenu.AddItem( 3 , "Copy" , false );
  221.     EditMenu.AddItem( 4 , "Paste" , true );
  222.     EditMenu.AddItem( 5 , "Clear" , false );
  223.     EditMenu.AddItem( 6 , "Select All" , true );
  224.     EditMenu.AddItem( 7 , "Show Keyboard" , true );
  225.     EditMenu.AddItem( 8 , NULL , false );
  226.     EditMenu.AddItem( 9 , "Preferences..." , true );
  227.     EditMenu.Init();
  228.     AddMenuWindow( &EditMenu );
  229.     
  230.     ViewMenu.SetWhichMenu( kViewMenuTitle );
  231.     ViewMenu.SetMaxItems( 8 );
  232.     ViewMenu.AddItem( 0 , "as Icon" , true );
  233.     ViewMenu.AddItem( 1 , "as Button" , true );
  234.     ViewMenu.AddItem( 2 , "as list" , false );
  235.     ViewMenu.AddItem( 3 , NULL , false );
  236.     ViewMenu.AddItem( 4 , "as Window" , false );
  237.     ViewMenu.AddItem( 5 , "as Pop-up Window" , true );
  238.     ViewMenu.AddItem( 6 , "Arrange" , true );
  239.     ViewMenu.AddItem( 7 , "view Options" , true );
  240.     ViewMenu.Init();
  241.     AddMenuWindow( &ViewMenu );
  242.     
  243.     SpecialMenu.SetWhichMenu( kSpecialMenuTitle );
  244.     SpecialMenu.SetMaxItems( 8 );
  245.     SpecialMenu.AddItem( 0 , "Empty Trash..." , false );
  246.     SpecialMenu.AddItem( 1 , NULL , false );
  247.     SpecialMenu.AddItem( 2 , "Eject" , false );
  248.     SpecialMenu.AddItem( 3 , "Erase Disk..." , false );
  249.     SpecialMenu.AddItem( 4 , NULL , false );
  250.     SpecialMenu.AddItem( 5 , "Sleep" , true );
  251.     SpecialMenu.AddItem( 6 , "Restart" , true );
  252.     SpecialMenu.AddItem( 7 , "Shut Down" , true );
  253.     SpecialMenu.Init();
  254.     AddMenuWindow( &SpecialMenu );
  255.     
  256. }
  257.  
  258. /*----------------------------------------------------------------------------\
  259.  
  260.     BogusFinder :: HandleMenuSelect
  261.  
  262. \----------------------------------------------------------------------------*/
  263. void    BogusFinder :: HandleMenuSelect( uchar    which , uchar num )
  264. {
  265.     switch( which )
  266.     {
  267.     case kFileMenuTitle:
  268.         
  269.     break;
  270.     
  271.     case kEditMenuTitle:
  272.         
  273.     break;
  274.     
  275.     case kViewMenuTitle:
  276.         
  277.     break;
  278.     
  279.     case kSpecialMenuTitle:
  280.         ExitToShell();
  281.     break;
  282.     }
  283. }
  284.  
  285. /*----------------------------------------------------------------------------\
  286.  
  287.     BogusFinder :: IconHandleMouseClick
  288.  
  289. \----------------------------------------------------------------------------*/
  290. void    BogusFinder :: IconHandleMouseClick( Boolean down, point where )
  291. {
  292.     short    i;
  293.     
  294.     if( down )
  295.     {
  296.         for( i = 0; i < kNumFinderIcons; i++ )
  297.         {
  298.             if( SectPtRect( where , screenIcon[ i ] ) )
  299.             {
  300.                 if( i != selectedIcon )
  301.                 {
  302.                         if( selectedIcon != 0xff )
  303.                         screen.AddRectToUpdate( screenIcon[ selectedIcon ] );
  304.                     selectedIcon = i;
  305.                     screen.AddRectToUpdate( screenIcon[ selectedIcon ] );
  306.                     start = where;
  307.                     movingIcon = true;
  308.                     didMove = false;
  309.                     return;
  310.                 }
  311.             }
  312.         }
  313.     
  314.         if( selectedIcon != 0xff )
  315.         {
  316.             screen.AddRectToUpdate( screenIcon[ selectedIcon ] );
  317.             selectedIcon = 0xff;
  318.         }
  319.     }
  320.     else
  321.     {
  322.         if( movingIcon )
  323.         {
  324.             movingIcon = false;
  325.  
  326.             if( SectPtRect( where , screenIcon[ selectedIcon ] ) && !didMove )
  327.             {
  328.                 HandleIconClick( selectedIcon );
  329.             }
  330.         }
  331.     }
  332. }
  333.  
  334. /*----------------------------------------------------------------------------\
  335.  
  336.     BogusFinder :: IconHandleMouseMove
  337.  
  338. \----------------------------------------------------------------------------*/
  339. void    BogusFinder :: IconHandleMouseMove( point where )
  340. {
  341.     if( movingIcon )
  342.     {
  343.         didMove = true;
  344.         
  345.         screen.AddRectToUpdate( screenIcon[ selectedIcon ] );
  346.         
  347.         MyOffSetRect( &screenIcon[ selectedIcon ] , where.x - start.x , where.y - start.y );
  348.         start = where;
  349.         
  350.         screen.AddRectToUpdate( screenIcon[ selectedIcon ] );
  351.     }
  352. }
  353.  
  354. /*----------------------------------------------------------------------------\
  355.  
  356.     BogusFinder :: IconCleanUp
  357.  
  358. \----------------------------------------------------------------------------*/
  359. void    BogusFinder :: IconCleanUp( rect *where )
  360. {
  361.     short    i;
  362.     
  363.     for( i = 0; i < kNumFinderIcons; i++ )
  364.     {
  365.         if( i != selectedIcon )
  366.         {
  367.             if( where == NULL )
  368.                 screen.DrawGeneric( &iconBuff , &icons[ i ] , 
  369.                                 &screenIcon[ i ] , NULL ,
  370.                                 kDrawTransparent , 0 , 0 );
  371.             else
  372.                 screen.DrawGeneric( &iconBuff , &icons[ i ] , 
  373.                                 &screenIcon[ i ] , where ,
  374.                                 kDrawTransparent , 0 , 0 );
  375.         }
  376.         else
  377.         {
  378.             if( where == NULL )
  379.                 screen.DrawGeneric( &iconBuff , &icons[ i ] , 
  380.                                 &screenIcon[ i ] , NULL ,
  381.                                 kDrawTransparent | kDrawTint, 16 , 0x0000 );
  382.             else
  383.                 screen.DrawGeneric( &iconBuff , &icons[ i ] , 
  384.                                 &screenIcon[ i ] , where ,
  385.                                 kDrawTransparent | kDrawTint, 16 , 0x0000 );
  386.         }
  387.     }
  388. }
  389.  
  390. /*----------------------------------------------------------------------------\
  391.  
  392.     BogusFinder :: HandleIconClick
  393.  
  394. \----------------------------------------------------------------------------*/
  395. void    BogusFinder :: HandleIconClick( short which )
  396. {
  397.     switch( which )
  398.     {
  399.     case kIconPhotoShop:
  400.         AH.LoadApplication( kPhotoshopApp );
  401.     break;
  402.     
  403.     case kIconMacAmp:
  404.         AH.LoadApplication( kMacAmp );
  405.     break;
  406.  
  407.     case kIconQT:
  408.         AH.LoadApplication( kQuickTime );
  409.     break;
  410.     }
  411. }