From 3b20535b5a41c8cfa3c6a40a10f0c60efb06a0cf Mon Sep 17 00:00:00 2001 From: Hannes Kuchelmeister Date: Sat, 2 Mar 2024 19:34:02 +0100 Subject: [PATCH] move factory to use listbox --- src/app.rs | 14 +++++++++----- src/factories/container_list.rs | 22 +++++++++------------- src/main.rs | 1 - 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/app.rs b/src/app.rs index de65a92..d4fff48 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,4 +1,6 @@ +use crate::gtk::Align; use relm4::factory::FactoryVecDeque; +use relm4::RelmWidgetExt; use relm4::{ actions::{RelmAction, RelmActionGroup}, adw, gtk, main_application, Component, ComponentController, ComponentParts, ComponentSender, @@ -89,10 +91,13 @@ impl Component for App { }, + #[local_ref] - container_box -> gtk::Box { - set_orientation: gtk::Orientation::Vertical, - } + container_box -> gtk::ListBox { + set_valign: Align::Start, + set_margin_all: 30, + set_css_classes: &["boxed-list"], + }, } } @@ -115,7 +120,7 @@ impl Component for App { UnsupportedDialogOutput::CloseApplication => AppMsg::Quit, }); - let mut containers = FactoryVecDeque::new(gtk::Box::default(), sender.input_sender()); + let mut containers = FactoryVecDeque::new(gtk::ListBox::default(), sender.input_sender()); containers.guard().push_back(3); let model = Self { @@ -211,4 +216,3 @@ impl AppWidgets { } } } - diff --git a/src/factories/container_list.rs b/src/factories/container_list.rs index 02f9fe2..2abbae4 100644 --- a/src/factories/container_list.rs +++ b/src/factories/container_list.rs @@ -1,5 +1,8 @@ use crate::app::AppMsg; use gtk::prelude::{BoxExt, ButtonExt, GtkWindowExt, OrientableExt}; +use relm4::adw; +use relm4::adw::prelude::ActionRowExt; +use relm4::adw::prelude::PreferencesRowExt; use relm4::factory::{DynamicIndex, FactoryComponent, FactorySender, FactoryVecDeque}; use relm4::{gtk, ComponentParts, ComponentSender, RelmApp, RelmWidgetExt, SimpleComponent}; @@ -21,28 +24,22 @@ impl FactoryComponent for Container { type CommandOutput = (); type Widgets = ContainerWidgets; type ParentInput = AppMsg; - type ParentWidget = gtk::Box; + type ParentWidget = gtk::ListBox; view! { - root = gtk::Box { - set_orientation: gtk::Orientation::Horizontal, - set_spacing: 10, + root = adw::ActionRow { + #[watch] + set_title: &self.value.to_string(), - #[name(label)] - gtk::Label { - #[watch] - set_label: &self.value.to_string(), - set_width_chars: 3, - }, #[name(add_button)] - gtk::Button { + add_prefix = >k::Button { set_label: "+", connect_clicked => ContainerMsg::Start, }, #[name(remove_button)] - gtk::Button { + add_suffix = >k::Button { set_label: "-", connect_clicked => ContainerMsg::Start, }, @@ -61,4 +58,3 @@ impl FactoryComponent for Container { } } } - diff --git a/src/main.rs b/src/main.rs index a190548..c660f2d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -47,4 +47,3 @@ fn main() { app.run::(()); } -