Commit a406830a authored by Bilal Elmoussaoui's avatar Bilal Elmoussaoui

Merge branch 'wip/exalm/ui-cleanups' into 'master'

Some UI cleanups See merge request GNOME/gnome-tour!9
parents 8cad6e3a aca427aa
...@@ -80,6 +80,7 @@ impl Application { ...@@ -80,6 +80,7 @@ impl Application {
fn setup_signals(&self, app: Rc<Self>) { fn setup_signals(&self, app: Rc<Self>) {
self.app.connect_startup(clone!(@weak app => move |_| { self.app.connect_startup(clone!(@weak app => move |_| {
libhandy::init();
app.setup_css(); app.setup_css();
app.setup_gactions(app.clone()); app.setup_gactions(app.clone());
})); }));
......
...@@ -48,17 +48,17 @@ impl WelcomePageWidget { ...@@ -48,17 +48,17 @@ impl WelcomePageWidget {
actions_container.set_halign(gtk::Align::Center); actions_container.set_halign(gtk::Align::Center);
actions_container.set_margin_top(36); actions_container.set_margin_top(36);
let start_tour_btn = gtk::Button::new(); let start_tour_btn = gtk::Button::with_label(&gettext("_Take the Tour"));
start_tour_btn.add(&gtk::Label::new(Some(&gettext("Take the Tour"))));
start_tour_btn.get_style_context().add_class("suggested-action"); start_tour_btn.get_style_context().add_class("suggested-action");
start_tour_btn.set_property_height_request(40); start_tour_btn.set_property_height_request(40);
start_tour_btn.set_property_width_request(180); start_tour_btn.set_property_width_request(180);
start_tour_btn.set_use_underline(true);
start_tour_btn.set_action_name(Some("app.start-tour")); start_tour_btn.set_action_name(Some("app.start-tour"));
let skip_tour_btn = gtk::Button::new(); let skip_tour_btn = gtk::Button::with_label(&gettext("_No Thanks"));
skip_tour_btn.add(&gtk::Label::new(Some(&gettext("No Thanks"))));
skip_tour_btn.set_property_height_request(40); skip_tour_btn.set_property_height_request(40);
skip_tour_btn.set_property_width_request(180); skip_tour_btn.set_property_width_request(180);
skip_tour_btn.set_use_underline(true);
skip_tour_btn.set_action_name(Some("app.skip-tour")); skip_tour_btn.set_action_name(Some("app.skip-tour"));
actions_container.add(&skip_tour_btn); actions_container.add(&skip_tour_btn);
......
...@@ -14,6 +14,7 @@ pub struct PaginatorWidget { ...@@ -14,6 +14,7 @@ pub struct PaginatorWidget {
pages: RefCell<Vec<Box<dyn Pageable>>>, pages: RefCell<Vec<Box<dyn Pageable>>>,
current_page: RefCell<u32>, current_page: RefCell<u32>,
next_btn: gtk::Button, next_btn: gtk::Button,
close_btn: gtk::Button,
} }
impl PaginatorWidget { impl PaginatorWidget {
...@@ -24,7 +25,8 @@ impl PaginatorWidget { ...@@ -24,7 +25,8 @@ impl PaginatorWidget {
widget, widget,
carousel: libhandy::Carousel::new(), carousel: libhandy::Carousel::new(),
headerbar: libhandy::HeaderBar::new(), headerbar: libhandy::HeaderBar::new(),
next_btn: gtk::Button::new(), next_btn: gtk::Button::with_label(&gettext("_Next")),
close_btn: gtk::Button::with_label(&gettext("_Close")),
pages: RefCell::new(Vec::new()), pages: RefCell::new(Vec::new()),
current_page: RefCell::new(0), current_page: RefCell::new(0),
}); });
...@@ -60,35 +62,45 @@ impl PaginatorWidget { ...@@ -60,35 +62,45 @@ impl PaginatorWidget {
self.carousel.set_property_expand(true); self.carousel.set_property_expand(true);
self.carousel.set_animation_duration(300); self.carousel.set_animation_duration(300);
self.carousel.connect_page_changed(clone!(@weak p => move |carousel, page_nr| { self.carousel.connect_property_position_notify(clone!(@weak p => move |carousel| {
let n_pages = carousel.get_n_pages() as f64;
let position = carousel.get_position();
let opacity = (position - n_pages + 2_f64).max(0_f64);
p.close_btn.set_opacity(opacity);
p.close_btn.set_visible(opacity > 0_f64);
let page_nr = position.round() as u32;
let pages = &p.pages.borrow(); let pages = &p.pages.borrow();
let page = pages.get(page_nr as usize).unwrap(); let page = pages.get(page_nr as usize).unwrap();
p.headerbar.set_title(Some(&page.get_title()));
if page_nr == carousel.get_n_pages() - 1 { p.headerbar.set_title(Some(&page.get_title()));
p.next_btn.set_label(&gettext("Close"));
} else {
p.next_btn.set_label(&gettext("Next"));
}
p.current_page.replace(page_nr); p.current_page.replace(page_nr);
})); }));
let previous_btn = gtk::Button::new(); let previous_btn = gtk::Button::with_label(&gettext("_Previous"));
previous_btn.add(&gtk::Label::new(Some("Previous"))); previous_btn.set_use_underline(true);
previous_btn.set_halign(gtk::Align::Start);
previous_btn.set_action_name(Some("app.previous-page")); previous_btn.set_action_name(Some("app.previous-page"));
previous_btn.set_hexpand(true);
previous_btn.set_property_width_request(60);
self.next_btn.add(&gtk::Label::new(Some(&gettext("Next")))); let btn_size_group = gtk::SizeGroup::new(gtk::SizeGroupMode::Horizontal);
btn_size_group.add_widget(&previous_btn);
btn_size_group.add_widget(&self.next_btn);
btn_size_group.add_widget(&self.close_btn);
self.next_btn.get_style_context().add_class("suggested-action"); self.next_btn.get_style_context().add_class("suggested-action");
self.next_btn.set_use_underline(true);
self.next_btn.set_action_name(Some("app.next-page")); self.next_btn.set_action_name(Some("app.next-page"));
self.next_btn.set_halign(gtk::Align::End);
self.next_btn.set_hexpand(true); self.close_btn.get_style_context().add_class("suggested-action");
self.next_btn.set_property_width_request(60); self.close_btn.set_use_underline(true);
self.close_btn.set_action_name(Some("app.next-page"));
let next_overlay = gtk::Overlay::new();
next_overlay.add(&self.next_btn);
next_overlay.add_overlay(&self.close_btn);
self.headerbar.pack_start(&previous_btn); self.headerbar.pack_start(&previous_btn);
self.headerbar.pack_end(&self.next_btn); self.headerbar.pack_end(&next_overlay);
self.headerbar.set_show_close_button(false); self.headerbar.set_show_close_button(false);
self.widget.add(&self.headerbar); self.widget.add(&self.headerbar);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment