mirror of
https://github.com/YGGverse/Yoda.git
synced 2025-03-13 06:01:21 +00:00
use shared current widget id getter
This commit is contained in:
parent
572d5af387
commit
77e3c8aec3
@ -137,104 +137,65 @@ impl Tab {
|
|||||||
|
|
||||||
// Close active tab
|
// Close active tab
|
||||||
pub fn close(&self) {
|
pub fn close(&self) {
|
||||||
self.widget
|
self.widget.close();
|
||||||
.gobject()
|
|
||||||
.remove_page(self.widget.gobject().current_page());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close all tabs
|
// Close all tabs
|
||||||
pub fn close_all(&self) {
|
pub fn close_all(&self) {
|
||||||
// @TODO skip pinned or make confirmation alert (GTK>=4.10)
|
self.widget.close_all();
|
||||||
while let Some(page_number) = self.widget.gobject().current_page() {
|
|
||||||
self.widget.gobject().remove_page(Some(page_number));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Toggle pin status for active tab
|
// Toggle pin status for active tab
|
||||||
pub fn pin(&self) {
|
pub fn pin(&self) {
|
||||||
// Get current page
|
if let Some(id) = self.widget.current_name() {
|
||||||
if let Some(page_number) = self.widget.gobject().current_page() {
|
if let Some(label) = self.labels.borrow().get(&id) {
|
||||||
// Get default widget to extract it name as the ID for childs
|
label.pin(!label.is_pinned()); // toggle
|
||||||
if let Some(widget) = self.widget.gobject().nth_page(Some(page_number)) {
|
|
||||||
// Get label by ID
|
|
||||||
if let Some(label) = self.labels.borrow().get(&widget.widget_name()) {
|
|
||||||
label.pin(!label.is_pinned()); // toggle
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn page_navigation_base(&self) {
|
pub fn page_navigation_base(&self) {
|
||||||
// Get current page
|
if let Some(id) = self.widget.current_name() {
|
||||||
if let Some(page_number) = self.widget.gobject().current_page() {
|
if let Some(page) = self.pages.borrow().get(&id) {
|
||||||
// Get default widget to extract it name as the ID for childs
|
page.navigation_base();
|
||||||
if let Some(widget) = self.widget.gobject().nth_page(Some(page_number)) {
|
|
||||||
// Get page by widget ID
|
|
||||||
if let Some(page) = self.pages.borrow().get(&widget.widget_name()) {
|
|
||||||
page.navigation_base();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn page_navigation_history_back(&self) {
|
pub fn page_navigation_history_back(&self) {
|
||||||
// Get current page
|
if let Some(id) = self.widget.current_name() {
|
||||||
if let Some(page_number) = self.widget.gobject().current_page() {
|
if let Some(page) = self.pages.borrow().get(&id) {
|
||||||
// Get default widget to extract it name as the ID for childs
|
page.navigation_history_back();
|
||||||
if let Some(widget) = self.widget.gobject().nth_page(Some(page_number)) {
|
|
||||||
// Get page by widget ID
|
|
||||||
if let Some(page) = self.pages.borrow().get(&widget.widget_name()) {
|
|
||||||
page.navigation_history_back();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn page_navigation_history_forward(&self) {
|
pub fn page_navigation_history_forward(&self) {
|
||||||
// Get current page
|
if let Some(id) = self.widget.current_name() {
|
||||||
if let Some(page_number) = self.widget.gobject().current_page() {
|
if let Some(page) = self.pages.borrow().get(&id) {
|
||||||
// Get default widget to extract it name as the ID for childs
|
page.navigation_history_forward();
|
||||||
if let Some(widget) = self.widget.gobject().nth_page(Some(page_number)) {
|
|
||||||
// Get page by widget ID
|
|
||||||
if let Some(page) = self.pages.borrow().get(&widget.widget_name()) {
|
|
||||||
page.navigation_history_forward();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn page_navigation_reload(&self) {
|
pub fn page_navigation_reload(&self) {
|
||||||
// Get current page
|
if let Some(id) = self.widget.current_name() {
|
||||||
if let Some(page_number) = self.widget.gobject().current_page() {
|
if let Some(page) = self.pages.borrow().get(&id) {
|
||||||
// Get default widget to extract it name as the ID for childs
|
page.navigation_reload();
|
||||||
if let Some(widget) = self.widget.gobject().nth_page(Some(page_number)) {
|
|
||||||
// Get page by widget ID
|
|
||||||
if let Some(page) = self.pages.borrow().get(&widget.widget_name()) {
|
|
||||||
page.navigation_reload();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update(&self) {
|
pub fn update(&self) {
|
||||||
// Get current page
|
if let Some(id) = self.widget.current_name() {
|
||||||
if let Some(page_number) = self.widget.gobject().current_page() {
|
if let Some(page) = self.pages.borrow().get(&id) {
|
||||||
// Get default widget to extract it name as the ID for childs
|
page.update();
|
||||||
if let Some(widget) = self.widget.gobject().nth_page(Some(page_number)) {
|
|
||||||
// Get widget ID
|
|
||||||
let id = &widget.widget_name();
|
|
||||||
|
|
||||||
// Get page by widget ID
|
if let Some(label) = self.labels.borrow().get(&id) {
|
||||||
if let Some(page) = self.pages.borrow().get(id) {
|
if let Some(title) = page.title() {
|
||||||
page.update();
|
label.update(Some(&title));
|
||||||
|
} else {
|
||||||
// Get label by widget ID
|
label.update(None);
|
||||||
if let Some(label) = self.labels.borrow().get(id) {
|
|
||||||
if let Some(title) = page.title() {
|
|
||||||
label.update(Some(&title));
|
|
||||||
} else {
|
|
||||||
label.update(None);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -243,16 +204,9 @@ impl Tab {
|
|||||||
|
|
||||||
// Getters
|
// Getters
|
||||||
pub fn page_title(&self) -> Option<GString> {
|
pub fn page_title(&self) -> Option<GString> {
|
||||||
// Get current page
|
if let Some(id) = self.widget.current_name() {
|
||||||
if let Some(page_number) = self.widget.gobject().current_page() {
|
if let Some(page) = self.pages.borrow().get(&id) {
|
||||||
// Get default widget to extract it name as the ID for childs
|
return page.title();
|
||||||
if let Some(widget) = self.widget.gobject().nth_page(Some(page_number)) {
|
|
||||||
// Get widget ID
|
|
||||||
let id = &widget.widget_name();
|
|
||||||
// Get page by widget ID
|
|
||||||
if let Some(page) = self.pages.borrow().get(id) {
|
|
||||||
return page.title();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -260,16 +214,10 @@ impl Tab {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn page_description(&self) -> Option<GString> {
|
pub fn page_description(&self) -> Option<GString> {
|
||||||
// Get current page
|
if let Some(id) = self.widget.current_name() {
|
||||||
if let Some(page_number) = self.widget.gobject().current_page() {
|
// Get page by widget ID
|
||||||
// Get default widget to extract it name as the ID for childs
|
if let Some(page) = self.pages.borrow().get(&id) {
|
||||||
if let Some(widget) = self.widget.gobject().nth_page(Some(page_number)) {
|
return page.description();
|
||||||
// Get widget ID
|
|
||||||
let id = &widget.widget_name();
|
|
||||||
// Get page by widget ID
|
|
||||||
if let Some(page) = self.pages.borrow().get(id) {
|
|
||||||
return page.description();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use gtk::Notebook;
|
use gtk::{glib::GString, prelude::WidgetExt, Notebook};
|
||||||
|
|
||||||
pub struct Widget {
|
pub struct Widget {
|
||||||
gobject: Notebook,
|
gobject: Notebook,
|
||||||
@ -12,7 +12,31 @@ impl Widget {
|
|||||||
Self { gobject }
|
Self { gobject }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Actions
|
||||||
|
pub fn close(&self) {
|
||||||
|
self.gobject.remove_page(self.gobject().current_page());
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn close_all(&self) {
|
||||||
|
// @TODO skip pinned or make confirmation alert (GTK>=4.10)
|
||||||
|
while let Some(page_number) = self.gobject.current_page() {
|
||||||
|
self.gobject.remove_page(Some(page_number));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Getters
|
// Getters
|
||||||
|
pub fn current_name(&self) -> Option<GString> {
|
||||||
|
let page_number = self.gobject.current_page()?;
|
||||||
|
let nth_page = self.gobject.nth_page(Some(page_number))?;
|
||||||
|
|
||||||
|
let widget_name = nth_page.widget_name();
|
||||||
|
if !widget_name.is_empty() {
|
||||||
|
Some(widget_name)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn gobject(&self) -> &Notebook {
|
pub fn gobject(&self) -> &Notebook {
|
||||||
&self.gobject
|
&self.gobject
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user