define struct, implement action

This commit is contained in:
yggverse 2024-09-22 02:32:57 +03:00
parent c0ebe95eb8
commit ecd686976c
2 changed files with 31 additions and 10 deletions

View File

@ -5,14 +5,18 @@ use gtk::prelude::BoxExt;
use gtk::Box; use gtk::Box;
pub fn new() -> Box { pub fn new() -> Box {
// Init components
let tab = tab::new();
// Init widget
let tray = Box::builder() let tray = Box::builder()
.orientation(gtk::Orientation::Horizontal) .orientation(gtk::Orientation::Horizontal)
.spacing(8) .spacing(8)
.build(); .build();
// Compose childs // Compose childs
tray.append(&menu::new()); tray.append(&menu::new()); // @TODO
tray.append(&tab::new()); tray.append(tab.widget.as_ref());
tray tray // @TODO struct
} }

View File

@ -1,10 +1,27 @@
use std::sync::Arc;
use gtk::prelude::{ButtonExt, WidgetExt};
use gtk::Button; use gtk::Button;
pub fn new() -> Button { pub struct Tab {
let tab = Button::builder() pub widget: Arc<gtk::Button>,
.icon_name("tab-new-symbolic") }
.tooltip_text("New tab")
.build(); pub fn new() -> Tab {
// Init widget
return tab; let widget = Arc::new(
Button::builder()
.icon_name("tab-new-symbolic")
.tooltip_text("New tab")
.build(),
);
// Init events
widget.connect_clicked(|this| {
this.activate_action("win.tab_append", None)
.expect("The action does not exist");
});
// Result
Tab { widget }
} }