#include "../include/SettingsPage.hpp" #include "../include/Theme.hpp" #include "../include/gui/Button.hpp" #include "../include/gui/RadioButton.hpp" #include "../include/gui/List.hpp" #include "../include/gui/ComboBox.hpp" #include "../include/gui/Label.hpp" #include "../include/gui/Entry.hpp" #include "../include/gui/CheckBox.hpp" #include "../include/gui/ScrollablePage.hpp" #include "../include/gui/CustomRendererWidget.hpp" #include "../include/GsrInfo.hpp" #include #include #include #include namespace gsr { SettingsPage::SettingsPage(Type type, const GsrInfo &gsr_info, const std::vector &audio_devices, std::function back_button_callback) : page(mgl::vec2f(get_theme().window_width, get_theme().window_height).floor()), type(type) { const mgl::vec2f window_size = mgl::vec2f(get_theme().window_width, get_theme().window_height).floor(); const mgl::vec2f content_page_size = (window_size * mgl::vec2f(0.3333f, 0.7f)).floor(); const mgl::vec2f content_page_position = mgl::vec2f(window_size * 0.5f - content_page_size * 0.5f).floor(); const float settings_body_margin = 0.02f; auto content_page = std::make_unique(content_page_size); content_page->set_position(content_page_position); content_page->set_margins(settings_body_margin, settings_body_margin, settings_body_margin, settings_body_margin); content_page_ptr = content_page.get(); page.add_widget(std::move(content_page)); add_widgets(gsr_info, audio_devices, back_button_callback); add_page_specific_widgets(); } Page& SettingsPage::get_page() { return page; } void SettingsPage::add_widgets(const GsrInfo &gsr_info, const std::vector &audio_devices, std::function back_button_callback) { RadioButton *view_radio_button_ptr = nullptr; ComboBox *record_area_box_ptr = nullptr; List *select_window_list_ptr = nullptr; List *area_size_list_ptr = nullptr; Widget *color_range_list_ptr = nullptr; Widget *codec_list_ptr = nullptr; Widget *framerate_mode_list_ptr = nullptr; const mgl::vec2i window_size(get_theme().window_width, get_theme().window_height); auto back_button = std::make_unique