xref: /haiku/src/apps/terminal/PrefHandler.h (revision a127b88ecbfab58f64944c98aa47722a18e363b2)
1 /*
2  * Copyright (c) 2003-2013, Haiku, Inc. All Rights Reserved.
3  * Copyright (c) 2004 Daniel Furrer <assimil8or@users.sourceforge.net>
4  * Copyright (c) 2003-4 Kian Duffy <myob@users.sourceforge.net>
5  * Copyright (c) 1998,99 Kazuho Okui and Takashi Murai.
6  *
7  * Distributed unter the terms of the MIT License.
8  *
9  * Authors:
10  *		Kian Duffy, myob@users.sourceforge.net
11  *		Daniel Furrer, assimil8or@users.sourceforge.net
12  *		Siarzhuk Zharski, zharik@gmx.li
13  */
14 #ifndef PREF_HANDLER_H
15 #define PREF_HANDLER_H
16 
17 
18 #include <SupportDefs.h>
19 #include <GraphicsDefs.h>
20 #include <Message.h>
21 #include <String.h>
22 
23 class BFont;
24 class BPath;
25 
26 
27 struct color_scheme;
28 
29 struct pref_defaults {
30 	const char *key;
31 	const char *item;
32 };
33 
34 #define PREF_TRUE "true"
35 #define PREF_FALSE "false"
36 
37 #define PREF_BLOCK_CURSOR "block"
38 #define PREF_IBEAM_CURSOR "ibeam"
39 #define PREF_UNDERLINE_CURSOR "underline"
40 
41 
42 class BMessage;
43 class BEntry;
44 
45 class PrefHandler {
46 	public:
47 		PrefHandler(const PrefHandler* p);
48 		PrefHandler(bool loadSettings = true);
49 		~PrefHandler();
50 
51 	static	PrefHandler *Default();
52 	static	void DeleteDefault();
53 	static	void SetDefault(PrefHandler *handler);
54 
55 		status_t    OpenText(const char *path);
56 		void		SaveDefaultAsText();
57 		void        SaveAsText(const char *path, const char *minmtype = NULL,
58 						const char *signature = NULL);
59 
60 		int32       getInt32(const char *key);
61 		float       getFloat(const char *key);
62 		const char* getString(const char *key);
63 		bool        getBool(const char *key);
64 		rgb_color   getRGB(const char *key);
65 		int			getCursor(const char *key);
66 
67 		void        setInt32(const char *key, int32 data);
68 		void        setFloat(const char *key, float data);
69 		void        setString(const char *key, const char *data);
70 		void        setBool(const char *key, bool data);
71 		void        setRGB(const char *key, const rgb_color data);
72 
73 		bool        IsEmpty() const;
74 
75 		static status_t GetDefaultPath(BPath& path);
76 
77 		void LoadThemes();
78 		void LoadColorScheme(color_scheme* scheme);
79 
80 	private:
81 		void		_ConfirmFont(const BFont *fallbackFont);
82 		status_t    _LoadFromDefault(const pref_defaults* defaults = NULL);
83 		status_t    _LoadFromTextFile(const char * path);
84 	static bool _LoadThemesFromDirectory(const BString &directory);
85 
86 		BMessage    fContainer;
87 
88 	static	PrefHandler *sPrefHandler;
89 };
90 
91 #endif	// PREF_HANDLER_H
92