Represent settings associate to the application.
- Header
#include <xtd/configuration/settings>
- Namespace
- xtd
- Library
- xtd.core
- Examples
- The following code example demonstrates the use of xtd::configuration::settings class with CMake setting commands.
• application_Settings.cpp :
#include "../properties/settings.hpp"
#include <xtd/forms/application>
#include <xtd/forms/button>
#include <xtd/forms/color_picker>
#include <xtd/forms/form>
using namespace application_settings::properties;
auto main() -> int {
auto back_color_picker =
color_picker::create(main_form, main_form.back_color(), {10, 10}, {75, 25});
back_color_picker.color_picker_changed += [&] {
main_form.back_color(back_color_picker.color());
};
save_button.click += [&] {
settings::default_settings().size(main_form.client_size());
settings::default_settings().location(main_form.location());
settings::default_settings().back_color(main_form.back_color());
settings::default_settings().save();
};
reload_button.click += [&] {
main_form.client_size(settings::default_settings().
size());
main_form.location(settings::default_settings().
location());
main_form.back_color(settings::default_settings().back_color());
back_color_picker.color(settings::default_settings().back_color());
};
reset_button.click += [&] {
settings::default_settings().reset();
reload_button.perform_click();
};
reload_button.perform_click();
}
• properties/settings.cmake :
setting_include(xtd/drawing/point)
setting_include(xtd/drawing/size)
setting_include(xtd/drawing/system_colors)
setting(back_color xtd::drawing::color USER "xtd::drawing::system_colors::control()")
setting(location xtd::drawing::point USER "{100, 50}")
setting(size xtd::drawing::size USER "{335, 45}")
setting(text xtd::string APPLICATION "\"Settings example\"")
• The generated properties/settings.h :
#pragma region xtd generated code
#pragma once
#include <xtd/drawing/point>
#include <xtd/drawing/size>
#include <xtd/drawing/system_colors>
#include <xtd/configuration/settings>
namespace application_settings::properties {
public:
explicit settings(bool load) noexcept {
if (load) reload();
}
settings(settings&&) noexcept = default;
settings(const settings&) noexcept = default;
settings& operator =(const settings&) noexcept = default;
xtd::
drawing::color back_color() const noexcept {
return back_color_;}
settings& back_color(xtd::drawing::color value) noexcept {
back_color_ = value;
return *this;
}
location_ = value;
return *this;
}
xtd::drawing::size
size() const noexcept {
return size_;}
settings&
size(xtd::drawing::size value)
noexcept {
size_ = value;
return *this;
}
void reload() noexcept {
back_color_ = settings_.read("back_color", back_color_);
location_ = settings_.read("location", location_);
size_ = settings_.read("size", size_);
}
void reset() noexcept {
settings_.reset();
*this = settings {false};
}
void save() noexcept {
settings_.write("back_color", back_color_);
settings_.write("location", location_);
settings_.write("size", size_);
settings_.save();
}
static settings& default_settings() noexcept {
static auto default_settings = settings {};
return default_settings;
}
private:
xtd::configuration::settings settings_;
xtd::drawing::size size_ {{335, 45}};
};
}
#pragma endregion
static xtd::drawing::color control()
Gets a xtd::drawing::color structure that is the face color of a 3-D element.
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:44
xtd::basic_string< char > string
Represents text as a sequence of UTF-8 code units.
Definition __string_definitions.hpp:43
size_t size
Represents a size of any object in bytes.
Definition size.hpp:23
@ point
Specifies a printer's point (1/72 inch) as the unit of measure.
Definition graphics_unit.hpp:25
The xtd::drawing namespace provides access to GDI+ basic graphics functionality. More advanced functi...
Definition actions_system_images.hpp:10
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
The following code example demonstrates the use of xtd::configuration::settings class without CMake setting commands.
#include <xtd/configuration/settings>
#include <xtd/forms/application>
#include <xtd/forms/button>
#include <xtd/forms/color_picker>
#include <xtd/forms/form>
auto main() -> int {
auto back_color_picker =
color_picker::create(main_form, main_form.back_color(), {10, 10}, {75, 25});
back_color_picker.color_picker_changed += [&] {
main_form.back_color(back_color_picker.color());
};
save_button.click += [&] {
settings.write("size", main_form.client_size());
settings.write("location", main_form.location());
settings.write("back_color", main_form.back_color());
settings.save();
};
reload_button.click += [&] {
main_form.client_size(settings.read(
"size",
drawing::size {335, 45}));
main_form.location(settings.read(
"location",
point {100, 50}));
main_form.back_color(settings.read("back_color", main_form.back_color()));
back_color_picker.color(main_form.back_color());
};
reset_button.click += [&] {
settings.reset();
reload_button.perform_click();
};
reload_button.perform_click();
}
Represent settings associate to the application.
Definition settings.hpp:174
Represents an ordered pair of integer x- and y-coordinates that defines a point in a two-dimensional ...
Definition point.hpp:54
Stores an ordered pair of integers, which specify a height and width.
Definition size.hpp:31