[fractal] media_viewer: Remove zoom controls
- From: Daniel Garcia Moreno <danigm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal] media_viewer: Remove zoom controls
- Date: Tue, 2 Apr 2019 08:02:50 +0000 (UTC)
commit d0887529faee6c36eb146b2a041023faa5a19019
Author: Christopher Davis <brainblasted disroot org>
Date: Wed Mar 6 19:18:33 2019 -0500
media_viewer: Remove zoom controls
Until we get a proper image viewer widget, we've
decided that it's best to remove the zoom controls
instead of having broken ones.
fractal-gtk/res/ui/media_viewer.ui | 70 ----------------
fractal-gtk/src/widgets/image.rs | 1 +
fractal-gtk/src/widgets/media_viewer.rs | 140 +-------------------------------
3 files changed, 2 insertions(+), 209 deletions(-)
---
diff --git a/fractal-gtk/res/ui/media_viewer.ui b/fractal-gtk/res/ui/media_viewer.ui
index e1aaa48b..c8e5be2f 100644
--- a/fractal-gtk/res/ui/media_viewer.ui
+++ b/fractal-gtk/res/ui/media_viewer.ui
@@ -220,9 +220,6 @@
</packing>
</child>
</object>
- <object class="GtkEntryBuffer" id="zoom_level">
- <property name="max_length">4</property>
- </object>
<object class="GtkBox" id="media_viewer_headerbar_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -252,73 +249,6 @@
</child>
</object>
</child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkButton" id="zoom_out_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">zoom-out-symbolic</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="zoom_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="buffer">zoom_level</property>
- <property name="width_chars">5</property>
- <property name="max_width_chars">4</property>
- <property name="primary_icon_activatable">False</property>
- <property name="primary_icon_sensitive">False</property>
- <property name="input_purpose">digits</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="zoom_in_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">zoom-in-symbolic</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <style>
- <class name="linked"/>
- </style>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
<child>
<object class="GtkMenuButton" id="media_viewer_menu_button">
<property name="visible">True</property>
diff --git a/fractal-gtk/src/widgets/image.rs b/fractal-gtk/src/widgets/image.rs
index b0d18fbd..2bd70f40 100644
--- a/fractal-gtk/src/widgets/image.rs
+++ b/fractal-gtk/src/widgets/image.rs
@@ -97,6 +97,7 @@ impl Image {
self
}
+ #[allow(dead_code)]
pub fn fixed(mut self, f: bool) -> Image {
self.fixed_size = f;
self
diff --git a/fractal-gtk/src/widgets/media_viewer.rs b/fractal-gtk/src/widgets/media_viewer.rs
index c40ec828..52748a14 100644
--- a/fractal-gtk/src/widgets/media_viewer.rs
+++ b/fractal-gtk/src/widgets/media_viewer.rs
@@ -27,9 +27,6 @@ use std::sync::mpsc::{Receiver, Sender};
use std::sync::Arc;
use std::sync::Mutex;
-const FLOATING_POINT_ERROR: f64 = 0.01;
-const ZOOM_LEVELS: [f64; 7] = [0.025, 0.05, 0.1, 0.25, 0.5, 0.75, 1.0];
-
#[derive(Debug, Clone)]
pub struct MediaViewer {
data: Rc<RefCell<Data>>,
@@ -44,7 +41,7 @@ struct Data {
main_window: gtk::Window,
backend: Sender<BKCommand>,
- image: Option<image::Image>,
+ pub image: Option<image::Image>,
media_list: Vec<Message>,
current_media_index: usize,
@@ -169,36 +166,6 @@ impl Data {
self.redraw_image_in_viewport();
}
- pub fn change_zoom_level(&self) {
- let zoom_entry = self
- .builder
- .get_object::<gtk::EntryBuffer>("zoom_level")
- .expect("Cant find zoom_level in ui file.");
-
- if let Some(ref image) = self.image {
- match zoom_entry
- .get_text()
- .trim()
- .trim_right_matches('%')
- .parse::<f64>()
- {
- Ok(zlvl) => self.set_zoom_level(zlvl / 100.0),
- Err(_) => {
- if let Some(zlvl) = *image.zoom_level.lock().unwrap() {
- update_zoom_entry(&self.builder, zlvl)
- }
- }
- }
- }
- }
-
- pub fn set_zoom_level(&self, zlvl: f64) {
- if let Some(ref image) = self.image {
- *image.zoom_level.lock().unwrap() = Some(zlvl);
- image.widget.queue_draw();
- }
- }
-
pub fn set_nav_btn_visibility(&self) {
let previous_media_button = self
.builder
@@ -223,39 +190,6 @@ impl Data {
}
}
- pub fn zoom_out(&self) {
- if let Some(ref image) = self.image {
- let zoom_level = *image.zoom_level.lock().unwrap();
- if zoom_level.is_none() || zoom_level.unwrap() <= ZOOM_LEVELS[0] {
- return;
- }
- if let Some(new_zlvl) = ZOOM_LEVELS
- .iter()
- .filter(|zlvl| **zlvl < zoom_level.unwrap())
- .last()
- {
- self.set_zoom_level(*new_zlvl);
- }
- }
- }
-
- pub fn zoom_in(&self) {
- if let Some(ref image) = self.image {
- let zoom_level = *image.zoom_level.lock().unwrap();
- if zoom_level.is_none() || zoom_level.unwrap() >= ZOOM_LEVELS[ZOOM_LEVELS.len() - 1] {
- return;
- }
-
- if let Some(new_zlvl) = ZOOM_LEVELS
- .iter()
- .filter(|zlvl| **zlvl > zoom_level.unwrap())
- .nth(0)
- {
- self.set_zoom_level(*new_zlvl);
- }
- }
- }
-
pub fn previous_media(&mut self) -> bool {
if self.no_more_media {
return true;
@@ -311,16 +245,6 @@ impl Data {
media_viewport.add(&image.widget);
image.widget.show();
- let ui = self.builder.clone();
- let zoom_level = image.zoom_level.clone();
- image.widget.connect_draw(move |_, _| {
- if let Some(zlvl) = *zoom_level.lock().unwrap() {
- update_zoom_entry(&ui, zlvl);
- }
-
- Inhibit(false)
- });
-
self.set_nav_btn_visibility();
self.image = Some(image);
@@ -404,56 +328,18 @@ impl MediaViewer {
let image = image::Image::new(&self.backend, &media_msg.url.clone().unwrap_or_default())
.fit_to_width(true)
- .fixed(true)
.center(true)
.build();
media_viewport.add(&image.widget);
media_viewport.show_all();
- let ui = self.builder.clone();
- let zoom_level = image.zoom_level.clone();
- image.widget.connect_draw(move |_, _| {
- if let Some(zlvl) = *zoom_level.lock().unwrap() {
- update_zoom_entry(&ui, zlvl);
- }
-
- Inhibit(false)
- });
-
self.data.borrow_mut().image = Some(image);
self.data.borrow_mut().set_nav_btn_visibility();
}
/* connect media viewer headerbar */
pub fn connect_media_viewer_headerbar(&self) {
- let zoom_entry = self
- .builder
- .get_object::<gtk::Entry>("zoom_entry")
- .expect("Cant find zoom_entry in ui file.");
- let own = self.data.clone();
- zoom_entry.connect_activate(move |_| {
- own.borrow().change_zoom_level();
- });
-
- let own = self.data.clone();
- let zoom_out_button = self
- .builder
- .get_object::<gtk::Button>("zoom_out_button")
- .expect("Cant find zoom_out_button in ui file.");
- zoom_out_button.connect_clicked(move |_| {
- own.borrow().zoom_out();
- });
-
- let own = self.data.clone();
- let zoom_in_button = self
- .builder
- .get_object::<gtk::Button>("zoom_in_button")
- .expect("Cant find zoom_in_button in ui file.");
- zoom_in_button.connect_clicked(move |_| {
- own.borrow().zoom_in();
- });
-
let own = self.data.clone();
let full_screen_button = self
.builder
@@ -666,30 +552,6 @@ impl MediaViewer {
}
}
-fn update_zoom_entry(ui: >k::Builder, zoom_level: f64) {
- let zoom_entry = ui
- .get_object::<gtk::EntryBuffer>("zoom_level")
- .expect("Cant find zoom_level in ui file.");
- zoom_entry.set_text(&format!("{:.0}%", zoom_level * 100.0));
- set_zoom_btn_sensitivity(ui, zoom_level);
-}
-
-fn set_zoom_btn_sensitivity(builder: >k::Builder, zlvl: f64) -> Option<()> {
- let zoom_out_button = builder
- .get_object::<gtk::Button>("zoom_out_button")
- .expect("Cant find zoom_out_button in ui file.");
-
- let zoom_in_button = builder
- .get_object::<gtk::Button>("zoom_in_button")
- .expect("Cant find zoom_in_button in ui file.");
-
- let min_lvl = ZOOM_LEVELS.first()?.clone();
- let max_lvl = ZOOM_LEVELS.last()?.clone();
- zoom_out_button.set_sensitive(!(zlvl <= min_lvl + FLOATING_POINT_ERROR));
- zoom_in_button.set_sensitive(!(zlvl >= max_lvl - FLOATING_POINT_ERROR));
- None
-}
-
fn set_header_title(ui: >k::Builder, title: &str) {
let media_viewer_headerbar = ui
.get_object::<gtk::HeaderBar>("media_viewer_headerbar")
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]