From 6951ec6eea8227ae0fe1eeeb65c3a38e71841d10 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 10 Aug 2024 09:38:38 +0200 Subject: Save all settings to file, hide more settings behind advanced view --- src/gui/Entry.cpp | 1 - src/gui/List.cpp | 17 +++-- src/gui/SettingsPage.cpp | 177 ++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 153 insertions(+), 42 deletions(-) (limited to 'src/gui') diff --git a/src/gui/Entry.cpp b/src/gui/Entry.cpp index 7978b38..0bea60e 100644 --- a/src/gui/Entry.cpp +++ b/src/gui/Entry.cpp @@ -84,7 +84,6 @@ namespace gsr { if(!validate_handler || validate_handler(str)) { text.set_string(std::move(str)); caret_offset_x = text.find_character_pos(99999).x - this->text.get_position().x; - fprintf(stderr, "caret offset: %f\n", caret_offset_x); } } diff --git a/src/gui/List.cpp b/src/gui/List.cpp index 883a797..acdb695 100644 --- a/src/gui/List.cpp +++ b/src/gui/List.cpp @@ -7,7 +7,6 @@ static float floor(float f) { namespace gsr { // TODO: Add homogeneous option, using a specified max size of this list. - static const mgl::vec2f spacing_scale(0.009f, 0.009f); List::List(Orientation orientation, Alignment content_alignment) : orientation(orientation), content_alignment(content_alignment) {} @@ -75,7 +74,7 @@ namespace gsr { const mgl::vec2f size = get_size(); const mgl::vec2f parent_inner_size = parent_widget ? parent_widget->get_inner_size() : mgl::vec2f(0.0f, 0.0f); - const mgl::vec2f spacing = (spacing_scale * get_theme().window_height).floor(); + const float spacing = floor(spacing_scale * get_theme().window_height); switch(orientation) { case Orientation::VERTICAL: { for(size_t i = 0; i < widgets.size(); ++i) { @@ -99,7 +98,7 @@ namespace gsr { widget->draw(window, mgl::vec2f(0.0f, 0.0f)); draw_pos.y += widget_size.y; if(widget_size.y > 0.001f && i + 1 < widgets.size()) - draw_pos.y += spacing.y; + draw_pos.y += spacing; } break; } @@ -120,7 +119,7 @@ namespace gsr { widget->draw(window, mgl::vec2f(0.0f, 0.0f)); draw_pos.x += widget_size.x; if(widget_size.x > 0.001f && i + 1 < widgets.size()) - draw_pos.x += spacing.x; + draw_pos.x += spacing; } break; } @@ -172,13 +171,17 @@ namespace gsr { return nullptr; } + void List::set_spacing(float spacing) { + spacing_scale = spacing; + } + // TODO: Cache result mgl::vec2f List::get_size() { if(!visible) return {0.0f, 0.0f}; mgl::vec2f size; - const mgl::vec2f spacing = (spacing_scale * get_theme().window_height).floor(); + const float spacing = floor(spacing_scale * get_theme().window_height); switch(orientation) { case Orientation::VERTICAL: { for(size_t i = 0; i < widgets.size(); ++i) { @@ -190,7 +193,7 @@ namespace gsr { size.x = std::max(size.x, widget_size.x); size.y += widget_size.y; if(widget_size.y > 0.001f && i + 1 < widgets.size()) - size.y += spacing.y; + size.y += spacing; } break; } @@ -203,7 +206,7 @@ namespace gsr { const auto widget_size = widget->get_size(); size.x += widget_size.x; if(widget_size.x > 0.001f && i + 1 < widgets.size()) - size.x += spacing.x; + size.x += spacing; size.y = std::max(size.y, widget_size.y); } break; diff --git a/src/gui/SettingsPage.cpp b/src/gui/SettingsPage.cpp index 277bc3b..c113820 100644 --- a/src/gui/SettingsPage.cpp +++ b/src/gui/SettingsPage.cpp @@ -110,14 +110,14 @@ namespace gsr { } std::unique_ptr SettingsPage::create_area_width_entry() { - auto area_width_entry = std::make_unique(&get_theme().body_font, "1920", get_theme().body_font.get_character_size() * 5); + auto area_width_entry = std::make_unique(&get_theme().body_font, "1920", get_theme().body_font.get_character_size() * 3); area_width_entry->validate_handler = create_entry_validator_integer_in_range(1, 1 << 15); area_width_entry_ptr = area_width_entry.get(); return area_width_entry; } std::unique_ptr SettingsPage::create_area_height_entry() { - auto area_height_entry = std::make_unique(&get_theme().body_font, "1080", get_theme().body_font.get_character_size() * 5); + auto area_height_entry = std::make_unique(&get_theme().body_font, "1080", get_theme().body_font.get_character_size() * 3); area_height_entry->validate_handler = create_entry_validator_integer_in_range(1, 1 << 15); area_height_entry_ptr = area_height_entry.get(); return area_height_entry; @@ -313,7 +313,7 @@ namespace gsr { } std::unique_ptr SettingsPage::create_framerate_entry() { - auto framerate_entry = std::make_unique(&get_theme().body_font, "60", get_theme().body_font.get_character_size() * 3); + auto framerate_entry = std::make_unique(&get_theme().body_font, "60", (int)(get_theme().body_font.get_character_size() * 2.5f)); framerate_entry->validate_handler = create_entry_validator_integer_in_range(1, 500); framerate_entry_ptr = framerate_entry.get(); return framerate_entry; @@ -352,6 +352,7 @@ namespace gsr { std::unique_ptr SettingsPage::create_settings(const GsrInfo &gsr_info, const std::vector &audio_devices) { auto settings_list = std::make_unique(List::Orientation::VERTICAL); + settings_list->set_spacing(0.018f); settings_list->add_widget(create_view_radio_button()); settings_list->add_widget(create_capture_target(gsr_info)); settings_list->add_widget(create_audio_device_section(audio_devices)); @@ -367,7 +368,7 @@ namespace gsr { add_widget(create_settings_icon()); content_page_ptr->add_widget(create_settings(gsr_info, audio_devices)); - record_area_box_ptr->on_selection_changed = [=](const std::string &text, const std::string &id) { + record_area_box_ptr->on_selection_changed = [this](const std::string &text, const std::string &id) { (void)text; const bool window_selected = id == "window"; const bool focused_selected = id == "focused"; @@ -377,15 +378,6 @@ namespace gsr { restore_portal_session_list_ptr->set_visible(portal_selected); }; - view_radio_button_ptr->on_selection_changed = [=](const std::string &text, const std::string &id) { - (void)text; - const bool advanced_view = id == "advanced"; - color_range_list_ptr->set_visible(advanced_view); - codec_list_ptr->set_visible(advanced_view); - framerate_mode_list_ptr->set_visible(advanced_view); - }; - view_radio_button_ptr->on_selection_changed("Simple", "simple"); - if(!gsr_info.supported_capture_options.monitors.empty()) record_area_box_ptr->set_selected_item(gsr_info.supported_capture_options.monitors.front().name); else if(gsr_info.supported_capture_options.portal) @@ -409,7 +401,9 @@ namespace gsr { std::unique_ptr SettingsPage::create_save_directory(const char *label) { auto save_directory_list = std::make_unique(List::Orientation::VERTICAL); save_directory_list->add_widget(std::make_unique