monorepo/hex-grid/src/labeled_field.rs

40 lines
1.0 KiB
Rust

use glib::Object;
use gtk::{prelude::*, subclass::prelude::*};
#[derive(Default)]
pub struct LabeledFieldPrivate {
value: gtk::Label,
}
#[glib::object_subclass]
impl ObjectSubclass for LabeledFieldPrivate {
const NAME: &'static str = "LabeledField";
type Type = LabeledField;
type ParentType = gtk::Box;
}
impl ObjectImpl for LabeledFieldPrivate {}
impl WidgetImpl for LabeledFieldPrivate {}
impl BoxImpl for LabeledFieldPrivate {}
glib::wrapper! {
pub struct LabeledField(ObjectSubclass<LabeledFieldPrivate>) @extends gtk::Box, gtk::Widget;
}
impl LabeledField {
pub fn new(label: &str, default_value: &str) -> Self {
let field: Self = Object::builder().build();
field.set_hexpand(true);
field.set_spacing(8);
field.set_homogeneous(true);
field.append(&gtk::Label::new(Some(label)));
field.append(&field.imp().value);
field.imp().value.set_label(default_value);
field
}
pub fn set_value(&self, value: &str) {
self.imp().value.set_label(value);
}
}