mirror of https://github.com/YGGverse/Yoda.git
yggverse
2 months ago
13 changed files with 163 additions and 67 deletions
@ -1,17 +1,19 @@ |
|||||||
use gtk::{gio, MenuButton}; |
mod model; |
||||||
|
mod widget; |
||||||
|
|
||||||
pub fn new() -> MenuButton { |
pub struct Menu { |
||||||
let menu = MenuButton::builder().tooltip_text("Menu").build(); |
widget: widget::Menu, |
||||||
|
} |
||||||
let model = gio::Menu::new(); |
|
||||||
let model_tab = gio::Menu::new(); |
|
||||||
|
|
||||||
model_tab.append(Some("Append"), Some("win.tab_append")); |
|
||||||
model.append_submenu(Some("Tab"), &model_tab); |
|
||||||
model.append(Some("Debug"), Some("win.debug")); |
|
||||||
model.append(Some("Quit"), Some("win.quit")); |
|
||||||
|
|
||||||
menu.set_menu_model(Some(&model)); |
impl Menu { |
||||||
|
pub fn new() -> Menu { |
||||||
|
Self { |
||||||
|
widget: widget::Menu::new(model::Menu::new().model()), |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
menu |
// Getters
|
||||||
|
pub fn widget(&self) -> &widget::Menu { |
||||||
|
&self.widget |
||||||
|
} |
||||||
} |
} |
||||||
|
@ -0,0 +1,25 @@ |
|||||||
|
use gtk::gio; |
||||||
|
|
||||||
|
pub struct Menu { |
||||||
|
model: gio::Menu, |
||||||
|
} |
||||||
|
|
||||||
|
impl Menu { |
||||||
|
// Construct
|
||||||
|
pub fn new() -> Menu { |
||||||
|
let model = gio::Menu::new(); |
||||||
|
let model_tab = gio::Menu::new(); |
||||||
|
|
||||||
|
model_tab.append(Some("Append"), Some("win.tab_append")); |
||||||
|
model.append_submenu(Some("Tab"), &model_tab); |
||||||
|
model.append(Some("Debug"), Some("win.debug")); |
||||||
|
model.append(Some("Quit"), Some("win.quit")); |
||||||
|
|
||||||
|
Self { model } |
||||||
|
} |
||||||
|
|
||||||
|
// Getters
|
||||||
|
pub fn model(&self) -> &gio::Menu { |
||||||
|
&self.model |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
use gtk::gio; |
||||||
|
|
||||||
|
pub struct Menu { |
||||||
|
gtk: gtk::MenuButton, |
||||||
|
} |
||||||
|
|
||||||
|
impl Menu { |
||||||
|
// Construct
|
||||||
|
pub fn new(model: &gio::Menu) -> Menu { |
||||||
|
let gtk = gtk::MenuButton::builder().tooltip_text("Menu").build(); |
||||||
|
|
||||||
|
gtk.set_menu_model(Some(model)); |
||||||
|
|
||||||
|
Self { gtk } |
||||||
|
} |
||||||
|
|
||||||
|
// Getters
|
||||||
|
pub fn gtk(&self) -> >k::MenuButton { |
||||||
|
&self.gtk |
||||||
|
} |
||||||
|
} |
@ -1,22 +1,23 @@ |
|||||||
mod menu; |
mod menu; |
||||||
mod tab; |
mod tab; |
||||||
|
mod widget; |
||||||
|
|
||||||
use gtk::prelude::BoxExt; |
pub struct Tray { |
||||||
use gtk::Box; |
widget: widget::Tray, |
||||||
|
} |
||||||
pub fn new() -> Box { |
|
||||||
// Init components
|
|
||||||
let tab = tab::new(); |
|
||||||
|
|
||||||
// Init widget
|
|
||||||
let tray = Box::builder() |
|
||||||
.orientation(gtk::Orientation::Horizontal) |
|
||||||
.spacing(8) |
|
||||||
.build(); |
|
||||||
|
|
||||||
// Compose childs
|
impl Tray { |
||||||
tray.append(&menu::new()); // @TODO
|
pub fn new() -> Tray { |
||||||
tray.append(tab.widget.as_ref()); |
Self { |
||||||
|
widget: widget::Tray::new( |
||||||
|
menu::Menu::new().widget().gtk(), |
||||||
|
tab::Tab::new().widget().gtk(), |
||||||
|
), |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
tray // @TODO struct
|
// Getters
|
||||||
|
pub fn widget(&self) -> &widget::Tray { |
||||||
|
&self.widget |
||||||
|
} |
||||||
} |
} |
||||||
|
@ -1,27 +1,27 @@ |
|||||||
use std::sync::Arc; |
mod widget; |
||||||
|
|
||||||
use gtk::prelude::{ButtonExt, WidgetExt}; |
|
||||||
use gtk::Button; |
|
||||||
|
|
||||||
pub struct Tab { |
pub struct Tab { |
||||||
pub widget: Arc<gtk::Button>, |
pub widget: widget::Tab, |
||||||
} |
} |
||||||
|
|
||||||
pub fn new() -> Tab { |
impl Tab { |
||||||
// Init widget
|
pub fn new() -> Tab { |
||||||
let widget = Arc::new( |
// Init widget
|
||||||
Button::builder() |
let widget = widget::Tab::new(); |
||||||
.icon_name("tab-new-symbolic") |
|
||||||
.tooltip_text("New tab") |
// Init events
|
||||||
.build(), |
/* @TODO
|
||||||
); |
widget.connect_clicked(|this| { |
||||||
|
this.activate_action("win.tab_append", None) |
||||||
|
.expect("The action does not exist"); |
||||||
|
}); */ |
||||||
|
|
||||||
// Init events
|
// Result
|
||||||
widget.connect_clicked(|this| { |
Self { widget } |
||||||
this.activate_action("win.tab_append", None) |
} |
||||||
.expect("The action does not exist"); |
|
||||||
}); |
|
||||||
|
|
||||||
// Result
|
// Getters
|
||||||
Tab { widget } |
pub fn widget(&self) -> &widget::Tab { |
||||||
|
&self.widget |
||||||
|
} |
||||||
} |
} |
||||||
|
@ -0,0 +1,20 @@ |
|||||||
|
pub struct Tab { |
||||||
|
gtk: gtk::Button, |
||||||
|
} |
||||||
|
|
||||||
|
impl Tab { |
||||||
|
// Construct
|
||||||
|
pub fn new() -> Tab { |
||||||
|
let gtk = gtk::Button::builder() |
||||||
|
.icon_name("tab-new-symbolic") |
||||||
|
.tooltip_text("New tab") |
||||||
|
.build(); |
||||||
|
|
||||||
|
Self { gtk } |
||||||
|
} |
||||||
|
|
||||||
|
// Getters
|
||||||
|
pub fn gtk(&self) -> >k::Button { |
||||||
|
&self.gtk |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
use gtk::prelude::BoxExt; |
||||||
|
|
||||||
|
pub struct Tray { |
||||||
|
gtk: gtk::Box, |
||||||
|
} |
||||||
|
|
||||||
|
impl Tray { |
||||||
|
// Construct
|
||||||
|
pub fn new(menu: >k::MenuButton, tab: >k::Button) -> Tray { |
||||||
|
let gtk = gtk::Box::builder() |
||||||
|
.orientation(gtk::Orientation::Horizontal) |
||||||
|
.spacing(8) |
||||||
|
.build(); |
||||||
|
|
||||||
|
gtk.append(menu); |
||||||
|
gtk.append(tab); |
||||||
|
|
||||||
|
Self { gtk } |
||||||
|
} |
||||||
|
|
||||||
|
// Getters
|
||||||
|
pub fn gtk(&self) -> >k::Box { |
||||||
|
&self.gtk |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue