use gtk::prelude::*;
use nrelm::prelude::*;
use gtk::gdk_pixbuf::Pixbuf;
struct App {}
fn embedded_logo() -> Pixbuf {
let bytes = include_bytes!(".././assets/Relm_logo.png");
let loader = gtk::gdk_pixbuf::PixbufLoader::new();
loader
.write(&bytes[..])
.expect("Failed to write embedded logo bytes to PixbufLoader");
loader
.close()
.expect("Failed to close PixbufLoader of embedded logo");
loader
.pixbuf()
.expect("Failed to get Pixbuf from PixbufLoader of embedded logo")
}
#[derive(Debug)]
enum Msg {}
#[nrelm::component]
impl SimpleComponent for App {
type Init = u8;
type Input = Msg;
type Output = ();
view! {
gtk::Window {
set_title: "Embedded Logo app ",
set_default_size: (200, 200),
gtk::Box {
set_orientation: gtk::Orientation::Vertical,
set_spacing: 5,
set_margin_all: 5,
gtk::Image {
set_vexpand: true,
set_hexpand: true,
set_pixbuf: Some(&embedded_logo()),
},
}
}
}
fn init(
_: Self::Init,
_root: Self::Root,
_sender: ComponentSender<Self>,
) -> ComponentParts<Self> {
let model = App {};
let widgets = view_output!();
ComponentParts { model, widgets }
}
fn update(&mut self, _msg: Self::Input, _sender: ComponentSender<Self>) {}
}
fn main() {
let app = RelmApp::new("nrelm.example.embedded_logo");
app.run::<App>(0);
}