Control panel support

This commit is contained in:
Jens Hemprich 2006-11-28 21:06:40 +00:00
parent 4dae64c0fb
commit 82ac6a39f9
6 changed files with 54 additions and 16 deletions

View File

@ -45,10 +45,21 @@ GlideSettings::IOErr GlideSettingsFSp::makeSettingsFolderFileSpec(const char* pa
return err;
}
/**
* Find/Create settings folder
* @return fnfErr means the CLassic environment wasn't found
*/
GlideSettings::IOErr GlideSettingsFSp::init(const char* applicationname)
{
// Select the domain
#ifdef OPENGLIDE_HOST_MAC // defined in system.h
short vRefNum = kOnSystemDisk;
#else // OPENGLIDE_HOST_MAC_OSX
// else is ok since this is Mac specific code anyway
short vRefNum = kClassicDomain;
#endif
// Make the settings folder
GlideSettings::IOErr err = FindFolder(kOnSystemDisk, kPreferencesFolderType, kCreateFolder, &m_vRefNumPrefsFolder, &m_dirIDPrefsFolder);
GlideSettings::IOErr err = FindFolder(vRefNum, kPreferencesFolderType, kCreateFolder, &m_vRefNumPrefsFolder, &m_dirIDPrefsFolder);
if (err == noErr)
{
FSSpec fsspec;
@ -62,13 +73,17 @@ GlideSettings::IOErr GlideSettingsFSp::init(const char* applicationname)
// Make references to various files
if (err == noErr)
{
err = makeSettingsFolderFileSpec(&s_SettingsFolderName[1], applicationname, &m_fsSettingsFile);
err = makeSettingsFolderFileSpec(&s_SettingsFolderName[1], s_LogFileName, &m_fsLogFile);
if (err == noErr)
{
err = makeSettingsFolderFileSpec(&s_SettingsFolderName[1], s_DefaultSettingsFileName, &m_fsDefaultSettingsFile);
if (err == noErr)
{
err = makeSettingsFolderFileSpec(&s_SettingsFolderName[1], s_LogFileName, &m_fsLogFile);
m_fsSettingsFile.vRefNum = 0;
if (applicationname)
{
err = makeSettingsFolderFileSpec(&s_SettingsFolderName[1], applicationname, &m_fsSettingsFile);
}
}
}
}

View File

@ -26,6 +26,7 @@ protected:
IOErr create();
IOErr read_defaults();
IOErr read();
inline bool isApplicationSpecific() {return m_fsSettingsFile.vRefNum != 0;};
IOErr put_raw(const char* string);
IOErr close();
const unsigned char* PascalString(char* string);

View File

@ -292,12 +292,12 @@ GlideSettings::IOErr GlideSettings::load()
err = create_defaults();
if (err == noErr)
{
err = save();
err = saveSettings();
}
}
if (err == noErr)
{
if (UseApplicationSpecificSettings)
if (isApplicationSpecific() && UseApplicationSpecificSettings)
{
err = read();
if (err == noErr)
@ -323,18 +323,17 @@ GlideSettings::IOErr GlideSettings::load()
err = create();
if (err == noErr)
{
err = save();
err = saveSettings();
}
}
}
}
}
// if (!success) err = fnfErr;
}
return err;
}
GlideSettings::IOErr GlideSettings::save()
GlideSettings::IOErr GlideSettings::saveSettings()
{
#ifdef OGL_DEBUG
GlideMsg("Saving...\n");
@ -614,3 +613,22 @@ GlideSettings::IOErr GlideSettings::put(const char* setting, bool value)
{
return put(setting, value ? "1" : "0");
}
GlideSettings::IOErr GlideSettings::save()
{
IOErr err = noErr;
if (isApplicationSpecific())
{
err = create();
}
else
{
err = create_defaults();
}
if (err == noErr)
{
err = saveSettings();
}
close();
return noErr;
}

View File

@ -143,7 +143,9 @@ protected:
void defaults();
virtual IOErr read_defaults()=0;
virtual IOErr read()=0;
virtual bool isApplicationSpecific()=0;
IOErr read_settings();
IOErr saveSettings();
bool get(const char* setting, const char** value);
bool get(const char* setting, unsigned long* value);
bool get(const char* setting, float* value);

View File

@ -26,6 +26,7 @@ protected:
IOErr create();
IOErr read_defaults();
IOErr read();
inline bool isApplicationSpecific();
IOErr put_raw(const char* string);
IOErr close();
};

View File

@ -12,20 +12,21 @@
#pragma once
#if defined(__MWERKS__)
#if defined(macintosh)
#if defined(macintosh)
#if defined(__MWERKS__)
#define OPENGLIDE_HOST_MAC
// Codewarrior specific
#define PP_Target_Carbon 0
#define PP_Target_Classic (!PP_Target_Carbon)
#define TARGET_API_MAC_CARBON PP_Target_Carbon
#define TARGET_API_MAC_OS8 PP_Target_Classic
// # else if /* Carbon or MachO version */
// # define OPENGLIDE_HOST_MAC
// # endif /* !macintosh */
#else /* !macintosh */
#error "Unknown MetroWerks target platform"
#endif /* !macintosh */
#else
#define OPENGLIDE_HOST_MAC_OSX
#endif /* __MWERKS__ */
#else /* !macintosh */
#error "Unsupported target platform"
// But it shouldn't be too complicated to
// be ported back to Windows ot Linux
#endif
// Mac specific stuff