From 02fd4009124389b17e4b4403936e732f1e8419ed Mon Sep 17 00:00:00 2001 From: Lucas Schwiderski Date: Tue, 28 Feb 2023 19:24:19 +0100 Subject: [PATCH] feat(dtmm): Increase textbox size in settings view Ref: #16. --- crates/dtmm/src/ui/widget/mod.rs | 9 +--- crates/dtmm/src/ui/window/main.rs | 82 ++++++++++++++++++------------- 2 files changed, 48 insertions(+), 43 deletions(-) diff --git a/crates/dtmm/src/ui/widget/mod.rs b/crates/dtmm/src/ui/widget/mod.rs index 8561c31..84a57a2 100644 --- a/crates/dtmm/src/ui/widget/mod.rs +++ b/crates/dtmm/src/ui/widget/mod.rs @@ -1,15 +1,8 @@ use druid::{Data, Widget}; -use self::fill_container::FillContainer; - pub mod container; pub mod controller; -pub mod fill_container; -pub trait ExtraWidgetExt: Widget + Sized + 'static { - fn content_must_fill(self) -> FillContainer { - FillContainer::new(self) - } -} +pub trait ExtraWidgetExt: Widget + Sized + 'static {} impl + 'static> ExtraWidgetExt for W {} diff --git a/crates/dtmm/src/ui/window/main.rs b/crates/dtmm/src/ui/window/main.rs index 5470342..c9815a1 100644 --- a/crates/dtmm/src/ui/window/main.rs +++ b/crates/dtmm/src/ui/window/main.rs @@ -4,8 +4,8 @@ use druid::widget::{ Maybe, Scroll, SizedBox, Split, TextBox, ViewSwitcher, }; use druid::{ - lens, Color, FileDialogOptions, FileSpec, FontDescriptor, FontFamily, Insets, Key, LensExt, - SingleUse, TextAlignment, Widget, WidgetExt, WindowDesc, + lens, Color, FileDialogOptions, FileSpec, FontDescriptor, FontFamily, Key, LensExt, SingleUse, + TextAlignment, Widget, WidgetExt, WindowDesc, }; use crate::state::{ModInfo, PathBufFormatter, State, View, ACTION_START_RESET_DEPLOYMENT}; @@ -15,7 +15,6 @@ use crate::state::{ }; use crate::ui::theme; use crate::ui::widget::controller::AutoScrollController; -use crate::ui::widget::ExtraWidgetExt; const TITLE: &str = "Darktide Mod Manager"; const WINDOW_SIZE: (f64, f64) = (1080., 720.); @@ -98,24 +97,21 @@ fn build_mod_list() -> impl Widget { }) }); - let scroll = Scroll::new(list) - .vertical() - .lens(lens::Identity.map( - |state: &State| { - state - .mods - .iter() - .enumerate() - .map(|(i, val)| (i, val.clone(), Some(i) == state.selected_mod_index)) - .collect::>() - }, - |state, infos| { - infos.into_iter().for_each(|(i, info, _)| { - state.mods.set(i, info); - }); - }, - )) - .content_must_fill(); + let scroll = Scroll::new(list).vertical().lens(lens::Identity.map( + |state: &State| { + state + .mods + .iter() + .enumerate() + .map(|(i, val)| (i, val.clone(), Some(i) == state.selected_mod_index)) + .collect::>() + }, + |state, infos| { + infos.into_iter().for_each(|(i, info, _)| { + state.mods.set(i, info); + }); + }, + )); Flex::column() .must_fill_main_axis(true) @@ -242,29 +238,45 @@ fn build_view_mods() -> impl Widget { } fn build_view_settings() -> impl Widget { - let game_dir_setting = Flex::row() - .main_axis_alignment(MainAxisAlignment::Start) - .with_child(Label::new("Game Directory:")) - .with_default_spacer() - .with_child( - TextBox::new() - .with_formatter(PathBufFormatter::new()) - .lens(State::game_dir), - ); let data_dir_setting = Flex::row() + .must_fill_main_axis(true) .main_axis_alignment(MainAxisAlignment::Start) .with_child(Label::new("Data Directory:")) .with_default_spacer() - .with_child( + .with_flex_child( TextBox::new() .with_formatter(PathBufFormatter::new()) + .expand_width() .lens(State::data_dir), - ); + 1., + ) + .expand_width(); - Flex::column() + let game_dir_setting = Flex::row() + .must_fill_main_axis(true) + .main_axis_alignment(MainAxisAlignment::Start) + .with_child(Label::new("Game Directory:")) + .with_default_spacer() + .with_flex_child( + TextBox::new() + .with_formatter(PathBufFormatter::new()) + .expand_width() + .lens(State::game_dir), + 1., + ) + .expand_width(); + + let content = Flex::column() + .must_fill_main_axis(true) + .cross_axis_alignment(CrossAxisAlignment::Start) .with_child(data_dir_setting) - .with_child(game_dir_setting) - .padding(Insets::uniform(5.0)) + .with_default_spacer() + .with_child(game_dir_setting); + + SizedBox::new(content) + .width(800.) + .expand_height() + .padding(5.) } fn build_main() -> impl Widget {