diff options
| author | Joe Carstairs <me@joeac.net> | 2024-12-22 19:30:35 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2024-12-22 19:30:35 +0000 |
| commit | 10759bb88331141b1586c9e6fa6cf6ce1683b964 (patch) | |
| tree | 06aaa25a3d1b154d08bb49ed2771ff969271a138 /schist_gtk4_gui/src | |
| parent | f3d73f9d88e65a3729086dc4de433bed2f03a396 (diff) | |
Histogram
Diffstat (limited to 'schist_gtk4_gui/src')
| -rw-r--r-- | schist_gtk4_gui/src/balances_histogram.rs | 59 | ||||
| -rw-r--r-- | schist_gtk4_gui/src/balances_view.rs | 12 | ||||
| -rw-r--r-- | schist_gtk4_gui/src/lib.rs | 1 |
3 files changed, 70 insertions, 2 deletions
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<SchistBalancesHistogramImpl>) + @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<gtk::ListBox>, +} + +#[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<Self>) { + 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<SchistBalancesViewImpl>) @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<SchistBalancesHistogram>, +} #[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; |
