home *** CD-ROM | disk | FTP | other *** search
- /********************************************************************
- µCinema Converter 1.0
- module: events.c
- April 1994
- by John A. Schlack
- ********************************************************************/
-
-
- #include "constants.h"
- #include "events.h"
- #include "menu bar.h"
- #include "PICS to QuickTime.h"
- #include "preferences.h"
- #include "µCinema.h"
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- #define ABOUT_ITEM 1
-
- #define CONVERT_ITEM 1
- #define PREFS_ITEM 2
- #define QUIT_ITEM 3
-
- #define ABOUT_DIALOG 128
- #define ABOUT_PICT_ITEM 1
- #define ABOUT_FAKE_ITEM 2 /* not part of about, but value is set when hit escape key */
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- static void eventMouseDown( EventRecord * event );
- static void eventMenuChoice( long menuChoice );
- static void eventAppleMenu( short theItem );
- static void eventFileMenu( short theItem );
- static void aboutCinema( void );
- static pascal Boolean aboutDialogFilter( DialogPtr whichDialog, EventRecord * event,
- short * itemHit );
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- void doEvents( void )
- {
- EventRecord event;
- Boolean lastNull;
- char theChar;
-
- lastNull = !WaitNextEvent( everyEvent, &event, 20L, nil );
- alterProgramStatus( PS_LAST_EVENT_NULL, lastNull );
-
- switch( event.what )
- {
- case kHighLevelEvent:
- AEProcessAppleEvent( &event );
- break;
-
- case keyDown:
- case autoKey:
- if (event.modifiers & cmdKey)
- {
- theChar = event.message & charCodeMask;
- eventMenuChoice( MenuKey( theChar ) );
- }
- break;
-
- case mouseDown:
- eventMouseDown( &event );
- break;
- }
- }
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- static void eventMouseDown( EventRecord * event )
- {
- WindowPtr whichWindow;
- long menuChoice;
- short thePart;
-
- thePart = FindWindow( event->where, &whichWindow );
-
- switch ( thePart )
- {
- case inMenuBar:
- menuChoice = MenuSelect( event->where );
- eventMenuChoice( menuChoice );
- break;
-
- case inSysWindow :
- SystemClick( event, whichWindow );
- break;
- }
- }
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- static void eventMenuChoice( long menuChoice )
- {
- short theMenu, theItem;
-
- if ( menuChoice )
- {
- theMenu = HiWord( menuChoice );
- theItem = LoWord( menuChoice );
-
- switch ( theMenu )
- {
- case APPLE_MENU_ID :
- eventAppleMenu( theItem );
- break;
- case FILE_MENU_ID :
- eventFileMenu( theItem );
- break;
- }
- HiliteMenu( 0 );
- }
- }
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- static void eventAppleMenu( short theItem )
- {
- Str255 accName;
- short accNumber;
-
- switch ( theItem )
- {
- case ABOUT_ITEM :
- aboutCinema();
- break;
-
- default :
- GetItem( cinemaMenu( APPLE_MENU_ID - BASE_MENU_ID ), theItem, accName );
- accNumber = OpenDeskAcc( accName );
- break;
- }
- }
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- static void eventFileMenu( short theItem )
- {
- switch ( theItem )
- {
- case CONVERT_ITEM :
- picsToMovieInteractive();
- break;
- case PREFS_ITEM :
- preferencesDialog( nil );
- break;
- case QUIT_ITEM :
- installProgramStatus( PS_APP_DONE );
- break;
- }
- }
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- static void aboutCinema( void )
- {
- DialogPtr theDialog;
- GrafPtr old;
- short itemHit;
- Boolean dialogDone = false;
-
- theDialog = GetNewDialog( ABOUT_DIALOG, NULL, (WindowPtr) -1 );
- if (theDialog == NULL)
- return;
-
- GetPort( &old );
- SetPort( theDialog );
- ShowWindow( theDialog );
-
- while (!dialogDone)
- {
- ModalDialog( aboutDialogFilter, &itemHit );
- switch( itemHit )
- {
- case ABOUT_PICT_ITEM:
- case ABOUT_FAKE_ITEM:
- dialogDone = true;
- break;
- }
- }
- SetPort( old );
- DisposDialog( theDialog );
- }
-
-
- /* --------------------------------------------------------------------------------- */
-
-
- static pascal Boolean aboutDialogFilter( DialogPtr whichDialog, EventRecord * event,
- short * itemHit )
- {
- #define returnKey 13
- #define enter 3
- #define esc 27
- #define pushButton (ctrlItem + btnCtrl)
-
- Handle itemHandle;
- Rect itemRect;
- long finalTicks;
- short itemType;
- Boolean filtered;
- char key;
-
- filtered = false;
- switch ((*event).what)
- {
- case keyDown:
- case autoKey:
- key = (*event).message & charCodeMask;
- if ((key == returnKey) || (key == enter) || (key == esc))
- {
- if ((key == returnKey) || (key == enter))
- *itemHit = ok;
- else
- *itemHit = cancel;
- GetDItem (whichDialog, *itemHit, &itemType, &itemHandle, &itemRect);
- if ((itemType & itemDisable) == 0)
- {
- if ((itemType & (255 - itemDisable)) == pushButton)
- {
- HiliteControl ((ControlHandle) itemHandle, inButton);
- Delay (8, &finalTicks);
- HiliteControl ((ControlHandle) itemHandle, 0);
- }
- filtered = true;
- }
- }
- break;
- }
- return filtered;
- }
-