Feature Files/VRPreferences.h

//////////
//
//  File:       VRPreferences.h
//
//  Contains:   Header file for VRScript preferences management.
//
//  Written by: Tim Monroe
//
//  Copyright:  © 1999 by Apple Computer, Inc., all rights reserved.
//
//  Change History (most recent first):
//
//     <1>      06/02/99        rtm     first file
//     
//////////
 
#pragma once
 
//////////
//
// header files
//     
//////////
 
#include "ComApplication.h"
#include "VRScript.h"
 
#if TARGET_OS_WIN32
#include <winreg.h>
#endif
 
#if TARGET_OS_MAC
#include <Folders.h>
#endif
 
 
//////////
//
// constants
//
//////////
 
// preferences dialog item IDs
#define kPreferencesDialogID            2000
 
#define kPrefsButtonDone                1
#define kPrefsButtonCancel              2
#define kPrefsRadioPromptUser           3
#define kPrefsRadioDirOfMovieFile       4
#define kPrefsRadioDirOfApplication     5
#define kPrefsRadioUserSpecifiedPath    6
#define kPrefsTextEditFilePath          7
 
#define kPrefsRadioFileNamePlusVRS      8
#define kPrefsRadioUserSpecifiedName    9
#define kPrefsTextEditFileName          10
 
#define kPrefsFilePathUserItem          13
#define kPrefsFileNameUserItem          14
 
 
// values for fScriptLocType field of a preferences record
enum {
    kVRPrefs_PromptUser         = (UInt32)0,        // prompt the user for the location and name
    kVRPrefs_DirOfMovieFile     = (UInt32)1,        // script file is in same directory as the movie file
    kVRPrefs_DirOfApplication   = (UInt32)2,        // script file is in same directory as the application file
    kVRPrefs_UserSpecifiedPath  = (UInt32)3         // script file is in a directory specified by an absolute pathname
};
 
// values for fScriptNameType field of a preferences record
enum {
    kVRPrefs_FileNamePlusTXT    = (UInt32)0,        // script file name is the movie file basename with .txt suffix
    kVRPrefs_UserSpecifiedName  = (UInt32)1         // script file name is specified by a relative pathname
};
 
#if TARGET_OS_WIN32
// registry database labels
#define kVRPrefs_PrefsKeyName           "Software\\VRScript"
#define kVRPrefs_ScriptLocTypeLabel     "Script directory selector"
#define kVRPrefs_ScriptPathNameLabel    "Script directory pathname"
#define kVRPrefs_ScriptNameTypeLabel    "Script file name selector"
#define kVRPrefs_ScriptBaseNameLabel    "Script file basename"
#endif
 
#if TARGET_OS_MAC
#define kVRPrefs_PrefsFileName          "VRScript Preferences"
#endif
 
 
//////////
//
// data types
//
//////////
 
typedef struct VRScriptPrefsRec {
    // the desired location of the script file
    UInt16                      fScriptLocType;     // the desired location of the script file
    Str255                      fScriptPathName;    // the user specified pathname of the script file directory
    
    // the desired name of the script file
    UInt32                      fScriptNameType;    // the desired name of the script file
    Str63                       fScriptBaseName;    // the user specified basename of the script file
    
    // application execution options (NOT YET IMPLEMENTED)
    Boolean                     fTurboMode;         // use turbo execution mode?
    Boolean                     fVerboseMode;       // use verbose mode?
    
    // preferences-management info
    Boolean                     fPrefsFileExists;   // does a preferences file exist?
    Boolean                     fPrefsDataDirty;    // have the stored preferences changed?
    
} VRScriptPrefsRec, *VRScriptPrefsPtr, **VRScriptPrefsHdl;
 
 
//////////
//
// function prototypes
//
//////////
 
void                                VRPrefs_Init (void);
void                                VRPrefs_Stop (void);
 
void                                VRPrefs_ShowPrefsDialog (void);
static void                         VRPrefs_FillPrefsDialogFromPrefs (DialogPtr theDialog);
PASCAL_RTN void                     VRPrefs_DrawPrefsDialogUserItem (DialogPtr theDialog, DialogItemIndex theItem);
 
static Boolean                      VRPrefs_PrefsFileExists (void);
//static OSErr                      VRPrefs_GetPrefsFileFSSpec (OSType theCreator, OSType theFileType, FSSpec *theFSSpec);
static OSErr                        VRPrefs_GetPrefsFileFSSpec (char *theFileName, FSSpecPtr theFSSpec);
 
static void                         VRPrefs_ReadPrefsFile (void);
static void                         VRPrefs_UpdatePrefsFile (void);