mirror of https://github.com/bsnes-emu/bsnes.git
47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
namespace hiro {
|
|
|
|
Settings::Settings() {
|
|
string path = {Path::userData(), "hiro/"};
|
|
#if HIRO_GTK==2
|
|
auto document = BML::unserialize(file::read({path, "gtk2.bml"}));
|
|
#elif HIRO_GTK==3
|
|
auto document = BML::unserialize(file::read({path, "gtk3.bml"}));
|
|
#endif
|
|
|
|
auto get = [&](string_view name) {
|
|
return document[name];
|
|
};
|
|
|
|
geometry.frameX = get("Geometry/FrameX").integer();
|
|
geometry.frameY = get("Geometry/FrameY").integer();
|
|
geometry.frameWidth = get("Geometry/FrameWidth").integer();
|
|
geometry.frameHeight = get("Geometry/FrameHeight").integer();
|
|
geometry.menuHeight = get("Geometry/MenuHeight").integer();
|
|
geometry.statusHeight = get("Geometry/StatusHeight").integer();
|
|
}
|
|
|
|
Settings::~Settings() {
|
|
string path = {Path::userData(), "hiro/"};
|
|
directory::create(path, 0755);
|
|
|
|
Markup::Node document;
|
|
auto set = [&](string_view name, string_view value) {
|
|
document(name).setValue(value);
|
|
};
|
|
|
|
set("Geometry/FrameX", geometry.frameX);
|
|
set("Geometry/FrameY", geometry.frameY);
|
|
set("Geometry/FrameWidth", geometry.frameWidth);
|
|
set("Geometry/FrameHeight", geometry.frameHeight);
|
|
set("Geometry/MenuHeight", geometry.menuHeight);
|
|
set("Geometry/StatusHeight", geometry.statusHeight);
|
|
|
|
#if HIRO_GTK==2
|
|
file::write({path, "gtk2.bml"}, BML::serialize(document));
|
|
#elif HIRO_GTK==3
|
|
file::write({path, "gtk3.bml"}, BML::serialize(document));
|
|
#endif
|
|
}
|
|
|
|
}
|