From 2b2e63d809b9315d0763b94e066ef2b7e74d5d15 Mon Sep 17 00:00:00 2001 From: Nefomemes Date: Sat, 6 Nov 2021 17:01:39 +0700 Subject: [PATCH] feat: ClosableTabImplNotebook::append_closable_tab() --- src/lib/closeable_tab.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/lib/closeable_tab.rs b/src/lib/closeable_tab.rs index 98b2535..10099bd 100644 --- a/src/lib/closeable_tab.rs +++ b/src/lib/closeable_tab.rs @@ -10,6 +10,15 @@ pub trait ClosableTabImplementedNotebook { child: &T, tab_label: Option<&U>, ) -> u32; + fn append_closable_page< + T: IsA, + U: IsA + >( + &self, + child: &T, + tab_label: Option<&U>, + ) -> u32; + fn create_closable_tab< U: IsA, @@ -52,4 +61,23 @@ impl ClosableTabImplementedNotebook for gtk::Notebook { page } + + fn append_closable_page< + T: IsA, + U: IsA + >( + &self, + child: &T, + tab_label: Option<&U>, + ) -> u32 { + let (tab, button) = &Self::create_closable_tab(tab_label); + let page = self.append_page(child, Some(tab)); + + button.connect_clicked(glib::clone!(@weak self as notebook => + move |_| { + notebook.remove_page(Some(page)); + })); + + page + } }