Example #1
0
static pascal DialogItemIndex MyAlert (UInt8 whichAlert, ConstStr255Param str1, ConstStr255Param str2)
{
	DialogItemIndex result = kDialogItemIndexNone;

	if (!AEInteractWithUser (kNoTimeOut,NULL,NULL))
	{
		ParamText (LMGetCurApName ( ), str1 ? str1 : "\p", str2 ? str2 : "\p", "\p");

		InitCursor ( );

		switch (whichAlert)
		{
			case kAlertIndex_ShortField :

				result = CautionAlert (kResID_Base + whichAlert, gStandardModalFilterUPP);
				break;

			default :

				result = StopAlert (kResID_Base + whichAlert, gStandardModalFilterUPP);
				break;
		}

		if (MoreAssertPCG (result != kDialogItemIndexNone))
		{
			EventRecord modifiers;
			OSEventAvail (0,&modifiers);
			if (modifiers.modifiers & optionKey)
				Debugger ( );
		}
	}
static Boolean IsSystemStartup(void)
	// Returns true if we're still at system startup time.
	// We do this in the traditional way, by testing the first
	// byte of CurApName.  We only use this for debugging.
{
	return LMGetCurApName()[0] == 0xFF;
}
OSStatus OpenFileDialog(
    OSType applicationSignature,
    short numTypes,
    OSType typeList[],
    NavDialogRef *outDialog )
{
    OSStatus theErr = noErr;
    if ( gOpenFileDialog == NULL )
    {
        NavDialogCreationOptions	dialogOptions;
        NavTypeListHandle			openList	= NULL;

        NavGetDefaultDialogCreationOptions( &dialogOptions );

        dialogOptions.modality = kWindowModalityNone;
        dialogOptions.clientName = CFStringCreateWithPascalString( NULL, LMGetCurApName(), GetApplicationTextEncoding());

        openList = (NavTypeListHandle)NewOpenHandle( applicationSignature, numTypes, typeList );

        theErr = NavCreateGetFileDialog( &dialogOptions, openList, GetPrivateEventUPP(), NULL, NULL, NULL, &gOpenFileDialog );

        if ( theErr == noErr )
        {
            theErr = NavDialogRun( gOpenFileDialog );
            if ( theErr != noErr )
            {
                NavDialogDispose( gOpenFileDialog );
                gOpenFileDialog = NULL;
            }
        }

        if (openList != NULL)
        {
            DisposeHandle((Handle)openList);
        }

        if ( dialogOptions.clientName != NULL )
        {
            CFRelease( dialogOptions.clientName );
        }
    }
    else
    {
        if ( NavDialogGetWindow( gOpenFileDialog ) != NULL )
        {
            SelectWindow( NavDialogGetWindow( gOpenFileDialog ));
        }
    }

    if ( outDialog != NULL )
    {
        *outDialog = gOpenFileDialog;
    }

    return NULL;
}
static void set_about_item(void){
	Str255 aboutitem;
	StringHandle abouthandle;

	GetMenuItemText( GetMenuHandle(mApple), iAbout, aboutitem);
	abouthandle = NewString( aboutitem);
	if( abouthandle){
		StringPtr curApName = LMGetCurApName();
		long len = Munger( (Handle)abouthandle, 1, "MathLink\252", 9, curApName + 1, *curApName); 
		if( len > 0){
			**abouthandle = (unsigned char)len; 
			HLock( (Handle)abouthandle);
			SetMenuItemText( GetMenuHandle(mApple), iAbout, *abouthandle);
		}
		DisposeHandle( (Handle)abouthandle);
	}
}
OSStatus SaveFileDialog(
    WindowRef parentWindow,
    CFStringRef documentName,
    OSType filetype,
    OSType fileCreator,
    void *inContextData,
    NavDialogRef *outDialog )
{
    NavDialogCreationOptions	dialogOptions;
    OSStatus					theErr = noErr;

    NavGetDefaultDialogCreationOptions( &dialogOptions );

    dialogOptions.clientName = CFStringCreateWithPascalString( NULL, LMGetCurApName(), GetApplicationTextEncoding());
    dialogOptions.saveFileName = documentName;
    dialogOptions.modality = ( parentWindow != NULL ) ? kWindowModalityWindowModal : kWindowModalityAppModal;
    dialogOptions.parentWindow = parentWindow;

    theErr = NavCreatePutFileDialog( &dialogOptions, filetype, fileCreator, GetEventUPP(), inContextData, outDialog );

    if ( theErr == noErr )
    {
        theErr = NavDialogRun( *outDialog );
        if ( theErr != noErr )
        {
            NavDialogDispose( *outDialog );
        }
        if ( theErr != noErr || dialogOptions.modality == kWindowModalityAppModal )
        {
            *outDialog = NULL;	// The dialog has already been disposed.
        }
    }

    if ( dialogOptions.clientName != NULL )
    {
        CFRelease( dialogOptions.clientName );
    }

    return theErr;
}
static OSStatus UniversalConfirmSaveDialog(
    WindowRef parentWindow,
    CFStringRef documentName,
    Boolean quitting,
    void* inContextData,
    NavDialogRef *outDialog,
    NavUserAction *outUserAction )
{
    OSStatus 			theErr 			= noErr;
    NavAskSaveChangesAction		action 			= 0;
    NavDialogRef			dialog 			= NULL;
    NavUserAction			userAction 		= kNavUserActionNone;
    NavDialogCreationOptions	dialogOptions;
    NavEventUPP			eventUPP;
    Boolean				disposeAfterRun;

    NavGetDefaultDialogCreationOptions( &dialogOptions );

    action = quitting ? kNavSaveChangesQuittingApplication : kNavSaveChangesClosingDocument;
    dialogOptions.modality = ( parentWindow != NULL ) ? kWindowModalityWindowModal : kWindowModalityAppModal;
    dialogOptions.parentWindow = parentWindow;

    dialogOptions.clientName = CFStringCreateWithPascalString( NULL, LMGetCurApName(), GetApplicationTextEncoding());
    if ( documentName != NULL )
    {
        dialogOptions.saveFileName = documentName;
    }

    eventUPP = ( inContextData == NULL ) ? GetPrivateEventUPP() : GetEventUPP();
    disposeAfterRun = ( dialogOptions.modality == kWindowModalityAppModal && inContextData == NULL );

    theErr = NavCreateAskSaveChangesDialog(
                 &dialogOptions,
                 action,
                 eventUPP,
                 inContextData,
                 &dialog );

    if ( theErr == noErr )
    {
        theErr = NavDialogRun( dialog );
        if ( theErr != noErr || disposeAfterRun )
        {
            userAction = NavDialogGetUserAction( dialog );
            NavDialogDispose( dialog );
            dialog = NULL;
        }
    }

    if ( dialogOptions.clientName != NULL )
    {
        CFRelease( dialogOptions.clientName );
    }
    if ( outDialog != NULL )
    {
        *outDialog = dialog;
    }
    if ( outUserAction != NULL )
    {
        *outUserAction = userAction;
    }
    return theErr;
}