40 lines
1.0 KiB
Rust
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(>k::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);
|
|
}
|
|
}
|