Should now play much nicer with broken settings files. Fixes bug #165.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16768 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
58d9acf59e
commit
ae99c86041
@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright (c) 2003-2006, Haiku, Inc. All Rights Reserved.
|
||||||
* Copyright (c) 2004 Daniel Furrer <assimil8or@users.sourceforge.net>
|
* Copyright (c) 2004 Daniel Furrer <assimil8or@users.sourceforge.net>
|
||||||
* Copyright (c) 2003-4 Kian Duffy <myob@users.sourceforge.net>
|
* Copyright (c) 2003-4 Kian Duffy <myob@users.sourceforge.net>
|
||||||
* Copyright (c) 1998,99 Kazuho Okui and Takashi Murai.
|
* Copyright (c) 1998,99 Kazuho Okui and Takashi Murai.
|
||||||
@ -29,7 +30,7 @@
|
|||||||
/*
|
/*
|
||||||
* Startup preference settings.
|
* Startup preference settings.
|
||||||
*/
|
*/
|
||||||
static const prefDefaults kTermDefaults[] = {
|
static const pref_defaults kTermDefaults[] = {
|
||||||
{ PREF_COLS, "80" },
|
{ PREF_COLS, "80" },
|
||||||
{ PREF_ROWS, "25" },
|
{ PREF_ROWS, "25" },
|
||||||
|
|
||||||
@ -70,9 +71,11 @@ PrefHandler::PrefHandler()
|
|||||||
:
|
:
|
||||||
fContainer('Pref')
|
fContainer('Pref')
|
||||||
{
|
{
|
||||||
|
_LoadFromDefault(kTermDefaults);
|
||||||
|
|
||||||
BPath path;
|
BPath path;
|
||||||
GetDefaultPath(path);
|
GetDefaultPath(path);
|
||||||
OpenText(path.Path(), kTermDefaults);
|
OpenText(path.Path());
|
||||||
|
|
||||||
_ConfirmFont(PREF_HALF_FONT_FAMILY, be_fixed_font);
|
_ConfirmFont(PREF_HALF_FONT_FAMILY, be_fixed_font);
|
||||||
_ConfirmFont(PREF_FULL_FONT_FAMILY, be_fixed_font);
|
_ConfirmFont(PREF_FULL_FONT_FAMILY, be_fixed_font);
|
||||||
@ -108,24 +111,16 @@ PrefHandler::GetDefaultPath(BPath& path)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
PrefHandler::Open(const char *path, const prefDefaults *defaults)
|
PrefHandler::Open(const char *path)
|
||||||
{
|
{
|
||||||
BEntry entry(path);
|
return _LoadFromFile(path);
|
||||||
if (entry.Exists())
|
|
||||||
return _LoadFromFile(&entry);
|
|
||||||
|
|
||||||
return _LoadFromDefault(defaults);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
PrefHandler::OpenText(const char *path, const prefDefaults *defaults)
|
PrefHandler::OpenText(const char *path)
|
||||||
{
|
{
|
||||||
BEntry entry(path);
|
|
||||||
if (entry.Exists())
|
|
||||||
return _LoadFromTextFile(path);
|
return _LoadFromTextFile(path);
|
||||||
|
|
||||||
return _LoadFromDefault(defaults);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -341,12 +336,16 @@ PrefHandler::_ConfirmFont(const char *key, const BFont *fallback)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
PrefHandler::_LoadFromFile(BEntry *entry)
|
PrefHandler::_LoadFromFile(const char* path)
|
||||||
{
|
{
|
||||||
// Future: It would be nice if we could simply use a flatened BMessage to
|
// Future: It would be nice if we could simply use a flatened BMessage to
|
||||||
// save the settings. (Who cares about compatibility in this case anyway?)
|
// save the settings. (Who cares about compatibility in this case anyway?)
|
||||||
|
|
||||||
BFile file(entry, B_READ_ONLY);
|
BFile file(path, B_READ_ONLY);
|
||||||
|
status_t status = file.InitCheck();
|
||||||
|
if (status != B_OK)
|
||||||
|
return status;
|
||||||
|
|
||||||
//fContainer.MakeEmpty();
|
//fContainer.MakeEmpty();
|
||||||
//fContainer.Unflatten(&file);
|
//fContainer.Unflatten(&file);
|
||||||
|
|
||||||
@ -384,7 +383,7 @@ PrefHandler::_LoadFromFile(BEntry *entry)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
PrefHandler::_LoadFromDefault(const prefDefaults* defaults)
|
PrefHandler::_LoadFromDefault(const pref_defaults* defaults)
|
||||||
{
|
{
|
||||||
if (defaults == NULL)
|
if (defaults == NULL)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright (c) 2003-2006, Haiku, Inc. All Rights Reserved.
|
||||||
* Copyright (c) 2004 Daniel Furrer <assimil8or@users.sourceforge.net>
|
* Copyright (c) 2004 Daniel Furrer <assimil8or@users.sourceforge.net>
|
||||||
* Copyright (c) 2003-4 Kian Duffy <myob@users.sourceforge.net>
|
* Copyright (c) 2003-4 Kian Duffy <myob@users.sourceforge.net>
|
||||||
* Copyright (c) 1998,99 Kazuho Okui and Takashi Murai.
|
* Copyright (c) 1998,99 Kazuho Okui and Takashi Murai.
|
||||||
@ -43,7 +44,7 @@ struct termprefs {
|
|||||||
char unknown[3];
|
char unknown[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct prefDefaults {
|
struct pref_defaults {
|
||||||
const char *key;
|
const char *key;
|
||||||
char *item;
|
char *item;
|
||||||
};
|
};
|
||||||
@ -60,8 +61,8 @@ class PrefHandler {
|
|||||||
PrefHandler();
|
PrefHandler();
|
||||||
~PrefHandler();
|
~PrefHandler();
|
||||||
|
|
||||||
status_t Open(const char *name, const prefDefaults *defaults = NULL);
|
status_t Open(const char *name);
|
||||||
status_t OpenText(const char *path, const prefDefaults *defaults = NULL);
|
status_t OpenText(const char *path);
|
||||||
status_t Save(const char *name);
|
status_t Save(const char *name);
|
||||||
void SaveAsText(const char *path, const char *minmtype = NULL,
|
void SaveAsText(const char *path, const char *minmtype = NULL,
|
||||||
const char *signature = NULL);
|
const char *signature = NULL);
|
||||||
@ -84,8 +85,8 @@ class PrefHandler {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void _ConfirmFont(const char *key, const BFont *fallback);
|
void _ConfirmFont(const char *key, const BFont *fallback);
|
||||||
status_t _LoadFromFile(BEntry *ent);
|
status_t _LoadFromFile(const char* path);
|
||||||
status_t _LoadFromDefault(const prefDefaults* defaluts = NULL);
|
status_t _LoadFromDefault(const pref_defaults* defaults = NULL);
|
||||||
status_t _LoadFromTextFile(const char * path);
|
status_t _LoadFromTextFile(const char * path);
|
||||||
|
|
||||||
BMessage fContainer;
|
BMessage fContainer;
|
||||||
|
Loading…
Reference in New Issue
Block a user