1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
#include <precomp.h>
#include "options.h"
//#include <api/wac/main.h>//CUT!!
#include <api/wnd/wndtrack.h>
#include <bfc/util/inifile.h>
#include <api/config/items/attribs.h>
#include <api/config/items/attrcb.h>
#include <bfc/wasabi_std_wnd.h>
#include <api/locales/localesmgr.h>
#include <api/font/font.h>
#define ININAME "wasabi.ini"
// {280876CF-48C0-40bc-8E86-73CE6BB462E5}
const GUID options_guid =
{ 0x280876cf, 0x48c0, 0x40bc, { 0x8e, 0x86, 0x73, 0xce, 0x6b, 0xb4, 0x62, 0xe5 } };
#ifndef GEN_FF
static void setMultipleInstance(int val)
{
StringPrintf fn("%s%s%s", WASABI_API_APP->path_getAppPath(), DIRCHARSTR, ININAME);
IniFile(fn).setBool("Wasabi", "MultipleInstance", val);
}
_int forward_skip_time("Forward skip time", 5000);
_int reverse_skip_time("Reverse skip time", 5000);
#endif
_bool cfg_options_altfonts(L"Alternate Fonts", FALSE);
_bool cfg_options_allowbitmapfonts(L"Use bitmap fonts (no international support)", FALSE);
_string cfg_options_defaultfont(L"Default font", WASABI_DEFAULT_FONTNAMEW L".ttf");
_int cfg_options_defaultfontscale(L"Default font scale", 100);
_string cfg_options_ttfoverridefont(L"TTF font override", WASABI_DEFAULT_FONTNAMEW L".ttf");
_int cfg_options_ttfoverridescale(L"TTF Override Scale", 100);
_bool cfg_options_no7bitsttfoverride(L"No 7-bit TTF override", TRUE);
_bool cfg_options_noalt7bitsttfoverride(L"No 7-bit TTF AltFonts", TRUE);
_bool cfg_options_usefontmapper(L"Enable Font Mapper", FALSE);
#ifdef USEAPPBAR
_bool cfg_options_appbarondrag(L"Dock Appbars on Window Drag", FALSE);
_int cfg_options_appbardockingdistance(L"Appbars Docking Distance", 5);
#endif
void invalidateAll(int b) {
#ifdef WASABI_COMPILE_WNDMGR
WASABI_API_WNDMGR->wndTrackInvalidateAll();
#endif
}
void onDefaultFontChanged(const wchar_t *attribute) {
Font::uninstallAll(1);
Wasabi::Std::setDefaultFont(cfg_options_defaultfont.getValue());
invalidateAll(1);
}
void onOverrideFontChanged(const wchar_t *attribute) {
Font::uninstallAll(1);
invalidateAll(1);
}
void onDefaultFontScaleChanged(int scale) {
Wasabi::Std::setDefaultFontScale(scale);
invalidateAll(1);
}
void onOverrideFontScaleChanged(int scale) {
invalidateAll(1);
}
void onFontRendererChanged(const wchar_t *s) {
Font::uninstallAll(1);
invalidateAll(1);
}
void onFontMapperChanged(int b) {
Font::uninstallAll(1);
invalidateAll(1);
}
_bool cfg_audiooptions_crossfader(L"Enable crossfading", DEFAULT_CROSSFADE_ENABLED);
_bool cfg_options_alwaysontop(L"Always on top", FALSE);
_bool cfg_options_docking(L"Enable docking", TRUE);
_int cfg_options_dockingdistance(L"Docking distance", DEFAULT_DOCK_DIST);
_string cfg_options_fontrenderer(L"Font Renderer", WASABI_FONT_RENDERER);
_int cfg_options_freetypecharmap(L"Character mapping", -1);
Options::Options() : CfgItemI(L"Options", options_guid)
{
#ifdef _WASABIRUNTIME
registerAttribute(&cfg_options_alwaysontop, new int_attrCB(Main::setOnTop));
#else
extern void setOnTop(int ontop);
registerAttribute(&cfg_options_alwaysontop, new int_attrCB(setOnTop));
#endif
/* TODO: benski> move to wndmgr.w5s (or wherever it's final home is */
registerAttribute(&cfg_options_dockingdistance, new int_attrCB(WindowTracker::setDockDistance));
registerAttribute(&cfg_options_docking, new int_attrCB(WindowTracker::setEnableDocking));
/* --- END TO MOVE --- */
registerAttribute(new _bool(L"Find open rect", FALSE));
registerAttribute(new _bool(L"Animated rects", TRUE));
registerAttribute(&cfg_options_fontrenderer, new string_attrCB(onFontRendererChanged));
registerAttribute(&cfg_options_allowbitmapfonts, new int_attrCB(invalidateAll));
registerAttribute(&cfg_options_altfonts, new int_attrCB(invalidateAll));
registerAttribute(&cfg_options_defaultfont, new string_attrCB(onDefaultFontChanged));
registerAttribute(&cfg_options_ttfoverridefont, new string_attrCB(onOverrideFontChanged));
registerAttribute(&cfg_options_ttfoverridescale, new int_attrCB(onOverrideFontScaleChanged));
registerAttribute(&cfg_options_defaultfontscale, new int_attrCB(onDefaultFontScaleChanged));
registerAttribute(&cfg_options_freetypecharmap, new int_attrCB(invalidateAll));
registerAttribute(&cfg_options_no7bitsttfoverride, new int_attrCB(invalidateAll));
registerAttribute(&cfg_options_noalt7bitsttfoverride, new int_attrCB(invalidateAll));
registerAttribute(&cfg_options_usefontmapper, new int_attrCB(onFontMapperChanged));
#ifdef USEAPPBAR
registerAttribute(&cfg_options_appbarondrag);
registerAttribute(&cfg_options_appbardockingdistance);
#endif
#ifdef _WASABIRUNTIME
registerAttribute(new _bool(L"Allow multiple instances", FALSE), new int_attrCB(setMultipleInstance));
registerAttribute(new _int(L"Icon mode", 1), new int_attrCB(Main::setIconMode));
registerAttribute(new _bool(L"Auto-play at startup", FALSE));
registerAttribute(new _string(L"Language", "English"), new LanguageCB(this));
#ifdef WIN32
registerAttribute(new _bool("Associate with audio CDs", TRUE), new int_attrCB(Filetypes::registerCdPlayer));
#endif
registerAttribute(new _string("Monitor aspect ratio", "4:3"));
registerAttribute(new _int("Internet connection",3)); //3==autodetect
registerAttribute(&forward_skip_time);
registerAttribute(&reverse_skip_time);
#endif
//registerAttribute(new _bool("Use Mozilla instead of IE for minibrowser", FALSE)); // TODO:move into minibrowser component
/* registerAttribute(new _bool("Force antialias on all TTF", FALSE));*/
addChildItem(&audio_options);
addChildItem(&ui_options);
}
void Options::checkCd() {
#ifdef _WASABIRUNTIME
#ifdef WIN32
if(getDataAsInt("Associate with audio CDs") && !Filetypes::isCdPlayer()) setDataAsInt("Associate with audio CDs",false);
#endif
#endif
}
// {FC3EAF78-C66E-4ed2-A0AA-1494DFCC13FF}
static const GUID audio_options_guid =
{ 0xfc3eaf78, 0xc66e, 0x4ed2, { 0xa0, 0xaa, 0x14, 0x94, 0xdf, 0xcc, 0x13, 0xff } };
AudioOptions::AudioOptions() : CfgItemI(L"Audio options", audio_options_guid)
{
#ifdef GEN_FF
#ifdef WASABI_COMPILE_MEDIACORE
extern void setCrossfader(int crossfade);
registerAttribute(&cfg_audiooptions_crossfader, new int_attrCB(setCrossfader));
#endif
#endif
#ifdef _WASABIRUNTIME
registerAttribute(&cfg_audiooptions_crossfader);
int use_dsound=0;
#ifdef WIN32
//check for Windows version for whether we make DSOUND default
DWORD dwVersion = GetVersion();
DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
if (dwVersion < 0x80000000) {
if(dwWindowsMajorVersion<=4) use_dsound=0; // no dsound on NT4/3.51
else use_dsound=1; // dsound yes on 2000/XP
} else
use_dsound=0; // no dsound by default on win9x (per PP)
#endif
registerAttribute(new _bool("DirectSound output", use_dsound));
#endif
}
#ifdef _WASABIRUNTIME
// {C1BD5354-5EC4-406c-B5C0-549718D3AF45}
static const GUID setup_guid =
{ 0xc1bd5354, 0x5ec4, 0x406c, { 0xb5, 0xc0, 0x54, 0x97, 0x18, 0xd3, 0xaf, 0x45 } };
SetupOptions::SetupOptions() : CfgItemI("Setup", setup_guid) {
#ifdef WIN32
addChildItem(&filetypes);
#endif
}
// {99CFD75C-1CA7-49e5-B8C0-7D78AA443C10}
static const GUID installed_guid =
{ 0x99cfd75c, 0x1ca7, 0x49e5, { 0xb8, 0xc0, 0x7d, 0x78, 0xaa, 0x44, 0x3c, 0x10 } };
InstalledComponents::InstalledComponents() : CfgItemI("Installed components", installed_guid) {
//CUT setCfgXml("config.components");
}
void LanguageCB::onValueChange(Attribute *attr) {
char bufero[WA_MAX_PATH]="";
attr->getData(bufero, WA_MAX_PATH-1);
const char *locname;
for(int i=0;locname=LocalesManager::enumLoadableLocales(i);i++) {
if (STRCASEEQLSAFE(bufero, locname)) {
LocalesManager::setNewLocaleNum(i);
return;
}
}
WASABI_API_WNDMGR->messageBox(StringPrintf("Internal problem switching to language %s, the language name couldn't be found in the list of loaded resources", bufero), "Error", 0, NULL, NULL);
}
#endif
|