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 @@
@@ -1,17 +1,19 @@
|
||||
use gtk::{gio, MenuButton}; |
||||
mod model; |
||||
mod widget; |
||||
|
||||
pub fn new() -> MenuButton { |
||||
let menu = MenuButton::builder().tooltip_text("Menu").build(); |
||||
|
||||
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")); |
||||
pub struct Menu { |
||||
widget: widget::Menu, |
||||
} |
||||
|
||||
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 @@
@@ -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 @@
@@ -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 @@
@@ -1,22 +1,23 @@
|
||||
mod menu; |
||||
mod tab; |
||||
mod widget; |
||||
|
||||
use gtk::prelude::BoxExt; |
||||
use gtk::Box; |
||||
|
||||
pub fn new() -> Box { |
||||
// Init components
|
||||
let tab = tab::new(); |
||||
|
||||
// Init widget
|
||||
let tray = Box::builder() |
||||
.orientation(gtk::Orientation::Horizontal) |
||||
.spacing(8) |
||||
.build(); |
||||
pub struct Tray { |
||||
widget: widget::Tray, |
||||
} |
||||
|
||||
// Compose childs
|
||||
tray.append(&menu::new()); // @TODO
|
||||
tray.append(tab.widget.as_ref()); |
||||
impl Tray { |
||||
pub fn new() -> Tray { |
||||
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 @@
@@ -1,27 +1,27 @@
|
||||
use std::sync::Arc; |
||||
|
||||
use gtk::prelude::{ButtonExt, WidgetExt}; |
||||
use gtk::Button; |
||||
mod widget; |
||||
|
||||
pub struct Tab { |
||||
pub widget: Arc<gtk::Button>, |
||||
pub widget: widget::Tab, |
||||
} |
||||
|
||||
pub fn new() -> Tab { |
||||
// Init widget
|
||||
let widget = Arc::new( |
||||
Button::builder() |
||||
.icon_name("tab-new-symbolic") |
||||
.tooltip_text("New tab") |
||||
.build(), |
||||
); |
||||
impl Tab { |
||||
pub fn new() -> Tab { |
||||
// Init widget
|
||||
let widget = widget::Tab::new(); |
||||
|
||||
// Init events
|
||||
/* @TODO
|
||||
widget.connect_clicked(|this| { |
||||
this.activate_action("win.tab_append", None) |
||||
.expect("The action does not exist"); |
||||
}); */ |
||||
|
||||
// Init events
|
||||
widget.connect_clicked(|this| { |
||||
this.activate_action("win.tab_append", None) |
||||
.expect("The action does not exist"); |
||||
}); |
||||
// Result
|
||||
Self { widget } |
||||
} |
||||
|
||||
// Result
|
||||
Tab { widget } |
||||
// Getters
|
||||
pub fn widget(&self) -> &widget::Tab { |
||||
&self.widget |
||||
} |
||||
} |
||||
|
@ -0,0 +1,20 @@
@@ -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 @@
@@ -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