1/*
2 * Copyright 2001-2010, Haiku, Inc.
3 * Copyright 2003-2004 Kian Duffy, myob@users.sourceforge.net
4 * Parts Copyright 1998-1999 Kazuho Okui and Takashi Murai.
5 * All rights reserved. Distributed under the terms of the MIT license.
6 */
7#ifndef APPEARANCE_PREF_VIEW_H
8#define APPEARANCE_PREF_VIEW_H
9
10
11#include <GroupView.h>
12#include <Messenger.h>
13#include <String.h>
14
15
16static const uint32 MSG_HALF_FONT_CHANGED				= 'mchf';
17static const uint32 MSG_HALF_SIZE_CHANGED				= 'mchs';
18static const uint32 MSG_FULL_FONT_CHANGED				= 'mcff';
19static const uint32 MSG_FULL_SIZE_CHANGED				= 'mcfs';
20static const uint32 MSG_COLOR_FIELD_CHANGED				= 'mccf';
21static const uint32 MSG_COLOR_CHANGED					= 'mcbc';
22static const uint32 MSG_COLOR_SCHEME_CHANGED			= 'mccs';
23
24static const uint32 MSG_TAB_TITLE_SETTING_CHANGED		= 'mtts';
25static const uint32 MSG_WINDOW_TITLE_SETTING_CHANGED	= 'mwts';
26static const uint32 MSG_BLINK_CURSOR_CHANGED			= 'mbcc';
27static const uint32 MSG_WARN_ON_EXIT_CHANGED			= 'mwec';
28static const uint32 MSG_COLS_CHANGED					= 'mccl';
29static const uint32 MSG_ROWS_CHANGED					= 'mcrw';
30static const uint32 MSG_HISTORY_CHANGED					= 'mhst';
31
32static const uint32 MSG_PREF_MODIFIED					= 'mpmo';
33
34
35struct color_scheme;
36class BCheckBox;
37class BColorControl;
38class BMenu;
39class BMenuField;
40class BPopUpMenu;
41class BTextControl;
42
43
44class AppearancePrefView : public BGroupView {
45public:
46								AppearancePrefView(const char* name,
47									const BMessenger &messenger);
48
49	virtual	void				Revert();
50	virtual void				MessageReceived(BMessage* message);
51	virtual void				AttachedToWindow();
52
53	virtual	void				GetPreferredSize(float* _width,
54									float* _height);
55
56private:
57			void				_EnableCustomColors(bool enable);
58
59			void				_ChangeColorScheme(color_scheme* scheme);
60			void				_SetCurrentColorScheme(BMenuField* field);
61
62	static	BMenu*				_MakeFontMenu(uint32 command,
63									const char* defaultFamily,
64									const char* defaultStyle);
65	static	BMenu*				_MakeFontSizeMenu(const char* label,
66									uint32 command,
67									const char* family,
68									const char* style,
69									const char* size);
70
71	static	BPopUpMenu*			_MakeMenu(uint32 msg, const char** items,
72										const char* defaultItem);
73
74	static	BPopUpMenu*			_MakeColorSchemeMenu(uint32 msg,
75									const color_scheme** schemes,
76									const color_scheme* defaultItemName);
77
78			void				_MarkSelectedFont(const char* family,
79									const char* style, const char* size);
80
81			BCheckBox*			fBlinkCursor;
82			BCheckBox*			fWarnOnExit;
83			BMenuField*			fFontField;
84
85			BMenuField*			fColorSchemeField;
86			BMenuField*			fColorField;
87			BColorControl*		fColorControl;
88
89			BTextControl*		fTabTitle;
90			BTextControl*		fWindowTitle;
91
92			BMessenger			fTerminalMessenger;
93};
94
95
96#endif	// APPEARANCE_PREF_VIEW_H
97