Wrapper over Gtk-rs for(maybe) more ergonomic use
Example: ```rust use gtk::*; use supergtk::{RefGtk, SUPERGTK};
fn main() { let sk = SUPERGTK::new();
create_gui(&sk);
connect_signals(&sk);
SUPERGTK::run();
}
fn creategui(sk: &RefGtk) { let mut sk = sk.borrowmut();
let win = sk.create_win("MainWin");
let big_box = sk.create_box("BigBox", Orientation::Vertical, 10);
let header_bar = sk.create_headerbar("HeaderBar");
header_bar.add(&sk.create_button("AddBtn"));
header_bar.add(&sk.create_button("RmBtn"));
let main_table = sk.create_grid("MainTable");
big_box.add(&header_bar);
big_box.add(&main_table);
win.add(&big_box);
win.show_all();
}
fn connectsignals(sk: &RefGtk) { connectmainwin(sk); connectheader_bar(sk); }
fn connectmainwin(sk: &RefGtk) { let sk = sk.borrow();
let win = sk.get_win("MainWin");
win.connect_delete_event(|_, _| {
gtk::main_quit();
Inhibit(false)
});
}
fn connectheaderbar(sk: &RefGtk) { let sk_c = sk.clone(); let sk = sk.borrow();
let add_button = sk.get_button("AddBtn");
let _rm_button = sk.get_button("RmBtn");
add_button.connect_clicked(move |_| {
create_entry_win(&sk_c);
});
}
fn createentrywin(sk: &RefGtk) { let skc = sk.clone(); let mut sk = sk.borrowmut();
let win = sk.create_win("EntryWin");
let entry = sk.create_entry("EntryEntry");
win.add(&entry);
win.show_all();
entry.connect_activate(move |entry| {
let name = entry.get_text().unwrap().to_string();
let table = sk_c.borrow().get_grid("MainTable");
let label = sk_c.borrow_mut().create_label(string_to_static_str(&name));
label.set_text(&name);
table.attach_next_to(
&label,
table.get_children().iter().next(),
PositionType::Bottom,
10,
10,
);
table.show_all();
win.destroy();
});
}
fn stringtostaticstr(s: &str) -> &'static str { std::boxed::Box::leak(s.tostring().intoboxedstr()) } ```