[fractal] media_viewer: Remove zoom controls



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: &gtk::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: &gtk::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: &gtk::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]