summaryrefslogtreecommitdiff
path: root/schist_gtk4_gui/src
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2024-12-22 19:30:35 +0000
committerJoe Carstairs <me@joeac.net>2024-12-22 19:30:35 +0000
commit10759bb88331141b1586c9e6fa6cf6ce1683b964 (patch)
tree06aaa25a3d1b154d08bb49ed2771ff969271a138 /schist_gtk4_gui/src
parentf3d73f9d88e65a3729086dc4de433bed2f03a396 (diff)
Histogram
Diffstat (limited to 'schist_gtk4_gui/src')
-rw-r--r--schist_gtk4_gui/src/balances_histogram.rs59
-rw-r--r--schist_gtk4_gui/src/balances_view.rs12
-rw-r--r--schist_gtk4_gui/src/lib.rs1
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;