From 10759bb88331141b1586c9e6fa6cf6ce1683b964 Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Sun, 22 Dec 2024 19:30:35 +0000 Subject: Histogram --- schist_gtk4_gui/resources/resources.gresource.xml | 1 + schist_gtk4_gui/resources/ui/balances_histogram.ui | 28 ++++++++++ schist_gtk4_gui/resources/ui/balances_view.ui | 6 +-- schist_gtk4_gui/src/balances_histogram.rs | 59 ++++++++++++++++++++++ schist_gtk4_gui/src/balances_view.rs | 12 ++++- schist_gtk4_gui/src/lib.rs | 1 + 6 files changed, 100 insertions(+), 7 deletions(-) create mode 100644 schist_gtk4_gui/resources/ui/balances_histogram.ui create mode 100644 schist_gtk4_gui/src/balances_histogram.rs diff --git a/schist_gtk4_gui/resources/resources.gresource.xml b/schist_gtk4_gui/resources/resources.gresource.xml index 350a77d..c4b9e10 100644 --- a/schist_gtk4_gui/resources/resources.gresource.xml +++ b/schist_gtk4_gui/resources/resources.gresource.xml @@ -1,6 +1,7 @@ + ui/balances_histogram.ui ui/balances_view.ui ui/categories_view.ui ui/category_transfers_view.ui diff --git a/schist_gtk4_gui/resources/ui/balances_histogram.ui b/schist_gtk4_gui/resources/ui/balances_histogram.ui new file mode 100644 index 0000000..b6306b9 --- /dev/null +++ b/schist_gtk4_gui/resources/ui/balances_histogram.ui @@ -0,0 +1,28 @@ + + + + diff --git a/schist_gtk4_gui/resources/ui/balances_view.ui b/schist_gtk4_gui/resources/ui/balances_view.ui index 7c329f7..a8f7d7e 100644 --- a/schist_gtk4_gui/resources/ui/balances_view.ui +++ b/schist_gtk4_gui/resources/ui/balances_view.ui @@ -18,11 +18,7 @@ overview Overview - - - Hello, balances overview! - - + diff --git a/schist_gtk4_gui/src/balances_histogram.rs b/schist_gtk4_gui/src/balances_histogram.rs new file mode 100644 index 0000000..d258ae4 --- /dev/null +++ b/schist_gtk4_gui/src/balances_histogram.rs @@ -0,0 +1,59 @@ +use gtk::{ + glib::{ + self, + subclass::{ + object::{ObjectImpl, ObjectImplExt}, + types::ObjectSubclass, + InitializingObject, + }, + Object, + }, + subclass::{box_::BoxImpl, widget::{ + CompositeTemplateClass, CompositeTemplateInitializingExt, WidgetClassExt, WidgetImpl, + }}, + TemplateChild, +}; + +glib::wrapper! { + pub struct SchistBalancesHistogram(ObjectSubclass) + @extends gtk::Box, gtk::Widget, + @implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget; +} + +impl SchistBalancesHistogram { + pub fn new() -> Self { + Object::builder().build() + } +} + +#[derive(gtk::CompositeTemplate, Default)] +#[template(resource = "/net/joeac/schist/ui/balances_histogram.ui")] +pub struct SchistBalancesHistogramImpl { + #[template_child] + balances_list: TemplateChild, +} + +#[glib::object_subclass] +impl ObjectSubclass for SchistBalancesHistogramImpl { + const NAME: &'static str = "SchistBalancesHistogram"; + type Type = SchistBalancesHistogram; + type ParentType = gtk::Box; + + fn class_init(klass: &mut Self::Class) { + klass.bind_template(); + } + + fn instance_init(obj: &InitializingObject) { + obj.init_template(); + } +} + +impl ObjectImpl for SchistBalancesHistogramImpl { + fn constructed(&self) { + self.parent_constructed(); + } +} + +impl WidgetImpl for SchistBalancesHistogramImpl {} + +impl BoxImpl for SchistBalancesHistogramImpl {} diff --git a/schist_gtk4_gui/src/balances_view.rs b/schist_gtk4_gui/src/balances_view.rs index 5afb192..28dfba1 100644 --- a/schist_gtk4_gui/src/balances_view.rs +++ b/schist_gtk4_gui/src/balances_view.rs @@ -10,10 +10,15 @@ use gtk::{ }, subclass::{ box_::BoxImpl, - widget::{CompositeTemplateClass, CompositeTemplateInitializingExt, WidgetImpl}, + widget::{ + CompositeTemplateClass, CompositeTemplateInitializingExt, WidgetClassExt, WidgetImpl, + }, }, + TemplateChild, }; +use crate::balances_histogram::SchistBalancesHistogram; + glib::wrapper! { pub struct SchistBalancesView(ObjectSubclass) @extends gtk::Box, gtk::Widget, @@ -28,7 +33,10 @@ impl SchistBalancesView { #[derive(gtk::CompositeTemplate, Default)] #[template(resource = "/net/joeac/schist/ui/balances_view.ui")] -pub struct SchistBalancesViewImpl {} +pub struct SchistBalancesViewImpl { + #[template_child] + balances_histogram: TemplateChild, +} #[glib::object_subclass] impl ObjectSubclass for SchistBalancesViewImpl { diff --git a/schist_gtk4_gui/src/lib.rs b/schist_gtk4_gui/src/lib.rs index 10240b0..d418ba0 100644 --- a/schist_gtk4_gui/src/lib.rs +++ b/schist_gtk4_gui/src/lib.rs @@ -1,3 +1,4 @@ +mod balances_histogram; mod balances_view; mod categories_view; mod category_transfers_view; -- cgit v1.2.3