home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-06-21 | 7.9 KB | 353 lines | [TEXT/CWIE] |
- //===================================================================
- //======================= Headers =============================
-
- #include "MenuBar.h"
- #include "GameUtilities.h"
- #include "Screen.h"
- #include "ApplicationHandler.h"
-
- //===================================================================
- //======================= Globals =============================
-
- MenuBar menuBar;
-
- //===================================================================
- //======================= #define =============================
-
-
- //===================================================================
- //======================= Function Prototypes =====================
-
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: Constructor
-
- \----------------------------------------------------------------------------*/
- MenuBar :: MenuBar( void )
- {
- MySetRect( &menuBarLoc , 0 , 0 , 1024 , 20 );
-
- menuDown = false;
- activeSelect = false;
- which = 0;
-
- numMenu = 2;
-
- short i;
-
- for( i = 0; i < kMaxMenuBarItems; i++ )
- menus[ i ] = NULL;
-
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: Init
-
- \----------------------------------------------------------------------------*/
- Boolean MenuBar :: Init( void )
- {
- Boolean allGood;
-
- allGood = backGround.LoadPicBuff( 130 );
-
- if( allGood )
- allGood = menuBar.NewBuff( 1024 , 20 );
-
- if( allGood )
- {
- DrawPicture( &backGround , &backGround.GetBoundsSize() ,
- &menuBar , &menuBar.GetBoundsSize() );
- }
- return allGood;
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: HandleMouseClick
-
- \----------------------------------------------------------------------------*/
- Boolean MenuBar :: HandleMouseClick( Boolean down , point where )
- {
-
- if( !menuDown )
- {
- if( down )
- {
- short i;
-
- for( i = 0; i < numMenu - 1 ; i++ )
- {
- if( menus[ i ]->PointInTitle( where ) )
- {
- menus[ i ]->SetActive( true );
- which = i;
- menuDown = true;
- activeSelect = true;
- return true;
- }
- }
-
- if( menus[ kProgramList ]->PointInTitle( where ) )
- {
- menus[ kProgramList ]->SetActive( true );
- which = kProgramList;
- menuDown = true;
- activeSelect = true;
- return true;
- }
-
- }
- else if( activeSelect )
- activeSelect = false;
-
- }
- else
- {
- menus[ which ]->SetActive( false );
- menuDown = false;
- activeSelect = false;
- }
-
- return SectPtRect( where , menuBarLoc );
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: HandleMouseMove
-
- \----------------------------------------------------------------------------*/
- void MenuBar :: HandleMouseMove( point where )
- {
- if( menuDown )
- {
- if( !menus[ which ]->PointInTitle( where ) )
- {
- if( !SectPtRect( where , menuBarLoc ) )
- return;
-
- menus[ which ]->SetActive( false );
- menuDown = false;
-
- HandleMouseClick( true , where );
- }
- }
- else if( activeSelect )
- {
- HandleMouseClick( true , where );
- }
- }
- /*----------------------------------------------------------------------------\
-
- MenuBar :: UpdateMenuBar
-
- \----------------------------------------------------------------------------*/
- void MenuBar :: UpdateMenuBar( rect *where )
- {
- where = NULL;
-
- DrawAllList( where );
-
- if( where == NULL )
- {
- screen.DrawGeneric( &menuBar , &menuBar.GetBoundsSize() ,
- &menuBarLoc , NULL ,
- 0 , 0 , 0 , true);
- }
- else
- {
- rect loc;
- MyCropRect( where , &menuBarLoc , &loc );
-
- screen.DrawGeneric( &menuBar , &loc ,
- &loc , NULL ,
- 0 , 0 , 0 , true);
- }
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: ClearMenuList
-
- \----------------------------------------------------------------------------*/
- void MenuBar :: ClearMenuList( void )
- {
- short i;
-
- if( menuDown )
- menus[ which ]->SetActive( false );
-
-
- for( i = 1; i < numMenu - 1; i++ )
- {
- if( menus[ i ] != NULL )
- menus[ i ]->AddRectToUpdate();
-
- menus[ i ] = NULL;
- }
-
- screen.AddRectToUpdate( menuBarLoc );
-
- activeSelect = false;
- menuDown = false;
- numMenu = 0;
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: AddMenuToList
-
- \----------------------------------------------------------------------------*/
- void MenuBar :: AddMenuToList( MenuItem *blarg )
- {
- if( numMenu < kMaxMenuBarItems )
- {
- menus[ numMenu - 1 ] = blarg;
- menus[ numMenu - 1 ]->SetLocation( menus[ numMenu - 2 ]->GetLoc().right );
- blarg->AddRectToUpdate();
-
- numMenu++;
- }
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: AddAppToList
-
- \----------------------------------------------------------------------------*/
- void MenuBar :: AddAppToList( uchar app )
- {
-
- switch( app )
- {
- case kFinderApp:
- menus[ kProgramList ]->AddItem( menus[ kProgramList ]->GetNumItems() ,
- "Finder" , true );
- break;
-
- case kPhotoshopApp:
- menus[ kProgramList ]->AddItem( menus[ kProgramList ]->GetNumItems() ,
- "Photoshop" , true );
- break;
-
- case kMacAmp:
- menus[ kProgramList ]->AddItem( menus[ kProgramList ]->GetNumItems() ,
- "MacAmp" , true );
- break;
-
- case kQuickTime:
- menus[ kProgramList ]->AddItem( menus[ kProgramList ]->GetNumItems() ,
- "MoviePlayer" , true );
- break;
-
- default:
- menus[ kProgramList ]->AddItem( menus[ kProgramList ]->GetNumItems() ,
- "Unknown" , true );
- break;
- }
- }
- /*----------------------------------------------------------------------------\
-
- MenuBar :: DrawGeneric
-
- \----------------------------------------------------------------------------*/
- void MenuBar :: DrawGeneric( OffScreenBuff *srcBuff , rect *srcRect ,
- rect *destRect , rect *crop , ushort options ,
- uchar more , ushort color )
- {
- if( crop == NULL )
- {
- ::DrawGeneric( srcBuff , srcRect , &menuBar , destRect ,
- &menuBarLoc , kDrawCrop1 | options, more , color );
-
- }
- else
- {
- rect where;
-
- MyCropRect( crop , &menuBarLoc , &where );
-
- ::DrawGeneric( srcBuff , srcRect , &menuBar , destRect ,
- &where , kDrawCrop1 | options , more , color );
- }
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: DrawAllList
-
- \----------------------------------------------------------------------------*/
- void MenuBar :: DrawAllList( rect *where )
- {
- short i;
-
- if( where != NULL )
- {
- ::DrawGeneric( &backGround , &backGround.GetBoundsSize() ,
- &menuBar , &menuBarLoc , where ,
- kDrawCrop1 , 0 , 0 );
- }
- else
- {
- DrawPicture( &backGround , &backGround.GetBoundsSize() , &menuBar , &menuBarLoc );
- }
-
- for( i = 0; i < numMenu - 1 ; i++ )
- {
- menus[ i ]->DrawMenu( where );
- }
-
- menus[ kProgramList ]->DrawMenu( where );
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: HandleSpecialMenuSelect
-
- \----------------------------------------------------------------------------*/
- void MenuBar :: HandleSpecialMenuSelect( uchar which , uchar select )
- {
- switch( which )
- {
- case kAppleMenuTitle:
-
- break;
-
- case kAppListMenuTitle:
- if( select > 3 )
- AH.SwitchToAppByNum( select - 4 );
- break;
- }
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuBar :: SetUpSpecialMenu
-
- \----------------------------------------------------------------------------*/
- void MenuBar :: SetUpSpecialMenu( MenuItem *appleMenu , MenuItem *appSwitchMenu )
- {
- appleMenu->SetWhichMenu( kAppleMenuTitle );
- appleMenu->SetMaxItems( 30 );
- appleMenu->SetLocation( 10 );
- appleMenu->Init();
-
- appSwitchMenu->SetWhichMenu( kAppListMenuTitle );
- appSwitchMenu->SetMaxItems( 4 );
- appSwitchMenu->SetLocation( 1024 - 40 );
-
- appSwitchMenu->AddItem( 0 , "Hide Current App" , true );
- appSwitchMenu->AddItem( 1 , "Hide Others" , true );
- appSwitchMenu->AddItem( 2 , "Show All" , true );
- appSwitchMenu->AddItem( 3 , "\0" , true );
-
- appSwitchMenu->Init();
-
- menus[ kAppleMenu ] = appleMenu;
- menus[ kProgramList ] = appSwitchMenu;
-
- numMenu = 2;
-
- }
-