[gnome-tour/bilelmoussaoui/fixes] Drop the custom WelcomePage



commit 9f3dc65338dbe9be058ee5fd47238d74d403d4e3
Author: Bilal Elmoussaoui <belmouss redhat com>
Date:   Wed Jan 26 20:23:29 2022 +0100

    Drop the custom WelcomePage
    
    It is nowadays similar to the ImagePageWidget, so let us just use that

 data/resources/ui/window.ui                   |  3 -
 src/widgets/{pages/image.rs => image_page.rs} |  0
 src/widgets/mod.rs                            |  5 +-
 src/widgets/pages/mod.rs                      |  5 --
 src/widgets/pages/welcome.rs                  | 85 ---------------------------
 src/widgets/paginator.rs                      | 19 +++++-
 src/widgets/window.rs                         |  3 +-
 7 files changed, 20 insertions(+), 100 deletions(-)
---
diff --git a/data/resources/ui/window.ui b/data/resources/ui/window.ui
index 3359a23..5834e80 100644
--- a/data/resources/ui/window.ui
+++ b/data/resources/ui/window.ui
@@ -5,9 +5,6 @@
     <property name="default-height">720</property>
     <property name="content">
       <object class="PaginatorWidget" id="paginator">
-        <child>
-          <object class="WelcomePageWidget" />
-        </child>
         <child>
           <object class="ImagePageWidget">
             <property name="resource-uri">/org/gnome/Tour/overview.svg</property>
diff --git a/src/widgets/pages/image.rs b/src/widgets/image_page.rs
similarity index 100%
rename from src/widgets/pages/image.rs
rename to src/widgets/image_page.rs
diff --git a/src/widgets/mod.rs b/src/widgets/mod.rs
index c58dca4..887e134 100644
--- a/src/widgets/mod.rs
+++ b/src/widgets/mod.rs
@@ -1,5 +1,6 @@
-mod pages;
+mod image_page;
 mod paginator;
-mod window;
 
+mod window;
+pub use image_page::ImagePageWidget;
 pub use window::Window;
diff --git a/src/widgets/paginator.rs b/src/widgets/paginator.rs
index 5b86bc2..9b2f293 100644
--- a/src/widgets/paginator.rs
+++ b/src/widgets/paginator.rs
@@ -1,3 +1,5 @@
+use crate::{utils::i18n_f, widgets::ImagePageWidget};
+use gettextrs::gettext;
 use gtk::prelude::*;
 use gtk::{
     gdk,
@@ -70,6 +72,17 @@ mod imp {
                     obj.update_position();
                 }));
 
+            let name = glib::os_info("NAME").unwrap_or_else(|| "GNOME".into());
+            let version = glib::os_info("VERSION").unwrap_or_else(|| "".into());
+            // Translators: The following string is formated as "Learn about new and essential features in 
GNOME 3.36" for example
+            let body = i18n_f("Learn about the key features in {} {}.", &[&name, &version]);
+            let welcome_page = ImagePageWidget::new(
+                "/org/gnome/Tour/welcome.svg",
+                gettext("Start the Tour"),
+                body,
+            );
+            obj.add_page(Some(-1), welcome_page);
+
             let controller = gtk::EventControllerKey::new();
             controller.connect_key_pressed(clone!(@weak obj => @default-return gtk::Inhibit(true), move 
|_controller, keyval, _keycode, _state| {
                 if keyval == gdk::Key::Right {
@@ -98,7 +111,7 @@ mod imp {
             if !self.carousel.is_bound() {
                 self.parent_add_child(buildable, builder, child, type_);
             } else {
-                buildable.add_page(child.clone().downcast::<gtk::Widget>().unwrap());
+                buildable.add_page(None, child.clone().downcast::<gtk::Widget>().unwrap());
             }
         }
     }
@@ -134,10 +147,10 @@ impl PaginatorWidget {
         Some(())
     }
 
-    pub fn add_page(&self, page: impl IsA<gtk::Widget>) {
+    pub fn add_page(&self, at: Option<i32>, page: impl IsA<gtk::Widget>) {
         let imp = self.imp();
         let page_nr = imp.pages.borrow().len();
-        imp.carousel.insert(&page, page_nr as i32);
+        imp.carousel.insert(&page, at.unwrap_or(page_nr as i32));
         imp.pages.borrow_mut().push(page.upcast());
 
         self.update_position();
diff --git a/src/widgets/window.rs b/src/widgets/window.rs
index fec600c..dabc690 100644
--- a/src/widgets/window.rs
+++ b/src/widgets/window.rs
@@ -8,7 +8,7 @@ use crate::Application;
 mod imp {
     use super::*;
     use crate::config;
-    use crate::widgets::pages::{ImagePageWidget, WelcomePageWidget};
+    use crate::widgets::ImagePageWidget;
     use adw::subclass::prelude::*;
 
     #[derive(Debug, Default, gtk::CompositeTemplate)]
@@ -25,7 +25,6 @@ mod imp {
         type ParentType = adw::ApplicationWindow;
 
         fn class_init(klass: &mut Self::Class) {
-            WelcomePageWidget::static_type();
             ImagePageWidget::static_type();
             Self::bind_template(klass);
         }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]