diff --git a/.rustfmt.toml b/.rustfmt.toml index ad0a8a0dbec944aa996285df7ddf98d84e7b443c..022fb0168d91f1f9dd585babc6f75d6731498ff7 100644 --- a/.rustfmt.toml +++ b/.rustfmt.toml @@ -1,3 +1,4 @@ format_code_in_doc_comments = true +group_imports = "StdExternalCrate" imports_granularity = "Module" wrap_comments = true diff --git a/src/application.rs b/src/application.rs index 586f167a110e469376d91004b5f4bf208f433e36..ec0ab5226558349ceb8fccbd4d15bfe8127db12e 100644 --- a/src/application.rs +++ b/src/application.rs @@ -1,6 +1,7 @@ // Copyright (c) 2020-2023 Christopher Davis // Copyright (c) 2022-2023 Sophie Herold // Copyright (c) 2022-2023 Sabri Ünal +// Copyright (c) 2023 Matteo Nardi // Copyright (c) 2023 Julian Hofer // Copyright (c) 2023 Huan Nguyen // @@ -19,14 +20,12 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -use crate::about; -use crate::deps::*; - use adw::prelude::*; use adw::subclass::prelude::*; -use crate::config; +use crate::deps::*; use crate::window::LpWindow; +use crate::{about, config}; mod imp { use super::*; diff --git a/src/decoder/formats/glycin_proxy.rs b/src/decoder/formats/glycin_proxy.rs index b48ffb137d8cc6ca08136da57c681307196522d7..5411afb87af075354f72c17cfb72cbab9a90110f 100644 --- a/src/decoder/formats/glycin_proxy.rs +++ b/src/decoder/formats/glycin_proxy.rs @@ -16,15 +16,15 @@ // SPDX-License-Identifier: GPL-3.0-or-later //! Decode using glycin -use super::*; -use crate::decoder::tiling::{self, FrameBufferExt}; -use crate::deps::*; -use crate::metadata::{ImageFormat, Metadata}; +use std::sync::Arc; use arc_swap::ArcSwap; use gtk::prelude::*; -use std::sync::Arc; +use super::*; +use crate::decoder::tiling::{self, FrameBufferExt}; +use crate::deps::*; +use crate::metadata::{ImageFormat, Metadata}; pub const FRAME_BUFFER: usize = 3; diff --git a/src/decoder/formats/svg.rs b/src/decoder/formats/svg.rs index f861bc421955337bf7509d2ef3371eb9b4bcf993..373d43fd64180fb38c5b72eb9c20649157d57122 100644 --- a/src/decoder/formats/svg.rs +++ b/src/decoder/formats/svg.rs @@ -16,18 +16,18 @@ // SPDX-License-Identifier: GPL-3.0-or-later //! Decode using librsvg -use super::*; -use crate::decoder::tiling::{self, FrameBufferExt}; -use crate::decoder::TileRequest; -use crate::deps::*; -use crate::metadata::ImageFormat; +use std::sync::Arc; use anyhow::Context; use arc_swap::ArcSwap; use async_channel as mpsc; use gtk::prelude::*; -use std::sync::Arc; +use super::*; +use crate::decoder::tiling::{self, FrameBufferExt}; +use crate::decoder::TileRequest; +use crate::deps::*; +use crate::metadata::ImageFormat; /// Current librsvg limit on maximum dimensions. See /// diff --git a/src/decoder/mod.rs b/src/decoder/mod.rs index 52fabde60b112257130d4651138ccb1b29921761..5d7065037a16184547cfbbc71eb57f4a84bd7981 100644 --- a/src/decoder/mod.rs +++ b/src/decoder/mod.rs @@ -20,20 +20,17 @@ pub mod formats; pub mod tiling; -pub use formats::ImageDimensionDetails; - -use crate::deps::*; -use crate::metadata::{ImageFormat, Metadata}; -use formats::*; -use tiling::FrameBufferExt; +use std::sync::Arc; use anyhow::Result; use arc_swap::ArcSwap; +use formats::*; +pub use formats::{ImageDimensionDetails, RSVG_MAX_SIZE}; use futures::channel::mpsc; +use tiling::FrameBufferExt; -use std::sync::Arc; - -pub use formats::RSVG_MAX_SIZE; +use crate::deps::*; +use crate::metadata::{ImageFormat, Metadata}; #[derive(Clone, Copy, Debug)] /// Renderer requests new tiles diff --git a/src/decoder/tiling.rs b/src/decoder/tiling.rs index d19dc1bab08a800452ec76f4cd5f11096d011b8d..489d2d300ae65d2f77a75b69793c3bf91ab7a4a2 100644 --- a/src/decoder/tiling.rs +++ b/src/decoder/tiling.rs @@ -26,15 +26,15 @@ //! be re-genearted for each zoom level. It can also be used to allow //! showing large JPEGs etc where the complete decoded image would not //! even fit in the VRAM. -use super::{DecoderUpdate, ImageDimensionDetails, UpdateSender}; -use crate::deps::*; +use std::collections::{BTreeMap, VecDeque}; +use std::sync::Arc; +use std::time::Duration; use arc_swap::ArcSwap; use gtk::prelude::*; -use std::collections::{BTreeMap, VecDeque}; -use std::sync::Arc; -use std::time::Duration; +use super::{DecoderUpdate, ImageDimensionDetails, UpdateSender}; +use crate::deps::*; const ZOOM_SIGNIFICANT_DIGITS: i32 = 6; pub const MIN_TILE_SIZE: u16 = 500; diff --git a/src/file_model.rs b/src/file_model.rs index 553c9631a7d071bd0ca1398a936a0c65eee29ff6..c5180fc8b92be811694a834d5de96568fd31e417 100644 --- a/src/file_model.rs +++ b/src/file_model.rs @@ -18,9 +18,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -use crate::deps::*; -use crate::util; -use crate::util::gettext::*; +use std::cell::{OnceCell, RefCell}; use anyhow::Context; use gio::prelude::*; @@ -29,7 +27,10 @@ use glib::subclass::Signal; use glib::GString; use indexmap::IndexMap; use once_cell::sync::Lazy; -use std::cell::{OnceCell, RefCell}; + +use crate::deps::*; +use crate::util; +use crate::util::gettext::*; mod imp { use super::*; diff --git a/src/metadata/mod.rs b/src/metadata/mod.rs index 30a3d6162a76aa8437609919baf009c87bc480b1..6eb323b213088384a248c49a6bd56f793e5cc513 100644 --- a/src/metadata/mod.rs +++ b/src/metadata/mod.rs @@ -29,11 +29,10 @@ pub use file::FileInfo; pub use format::ImageFormat; pub use gps::GPSLocation; +use crate::deps::*; use crate::util; use crate::util::gettext::*; -use crate::deps::*; - #[derive(Default)] pub struct Metadata { exif: Option, diff --git a/src/util/mod.rs b/src/util/mod.rs index c254b4196841be3dddff1e7c552dd95fc8619829..67f52d318a7fafe26db8b7c4fb74500c1305bf39 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -18,15 +18,15 @@ pub mod gettext; -use crate::deps::*; -use crate::util::gettext::*; +use std::fmt::{Debug, Write}; +use std::path::{Path, PathBuf}; use anyhow::{anyhow, bail, Context}; use gio::prelude::*; use once_cell::sync::Lazy; -use std::fmt::{Debug, Write}; -use std::path::{Path, PathBuf}; +use crate::deps::*; +use crate::util::gettext::*; /// Returns localized date + time format pub fn datetime_fmt(datetime: &glib::DateTime) -> Option { diff --git a/src/widgets/drag_overlay.rs b/src/widgets/drag_overlay.rs index e8df24c5c8799e75eebaaa7d7cf860f1dd07e6c0..a5e10307571269f455feb072adfcb6ccda7568c7 100644 --- a/src/widgets/drag_overlay.rs +++ b/src/widgets/drag_overlay.rs @@ -20,14 +20,14 @@ //! //! This implementation is inspired by [Amberol](https://gitlab.gnome.org/World/amberol) -use crate::deps::*; use adw::prelude::*; -mod imp { - use once_cell::sync::OnceCell; +use crate::deps::*; +mod imp { use adw::subclass::prelude::*; use glib::{ParamSpec, Properties, Value}; + use once_cell::sync::OnceCell; use super::*; diff --git a/src/widgets/image.rs b/src/widgets/image.rs index 80bbe3507816c646ce12126d31408a49c49f9dfa..6c74ba5bffbb9dc61186b315b285d539e506ac84 100644 --- a/src/widgets/image.rs +++ b/src/widgets/image.rs @@ -1,4 +1,4 @@ -// Copyright (c) 2021, 2023 Christopher Davis +// Copyright (c) 2021 Christopher Davis // Copyright (c) 2022-2023 Sophie Herold // Copyright (c) 2023 Julian Hofer // Copyright (c) 2023 Lubosz Sarnecki @@ -41,12 +41,10 @@ mod rotation; mod scrollable; mod zoom; -use crate::deps::*; - -use crate::decoder::tiling::FrameBufferExt; -use crate::decoder::{self, tiling, Decoder, DecoderUpdate}; -use crate::metadata::Metadata; -use crate::util::Gesture; +use std::cell::{Cell, OnceCell, RefCell}; +use std::marker::PhantomData; +use std::ops::Deref; +use std::sync::Arc; use adw::prelude::*; use adw::subclass::prelude::*; @@ -56,10 +54,11 @@ use glib::subclass::Signal; use glib::{Properties, SignalGroup}; use once_cell::sync::Lazy; -use std::cell::{Cell, OnceCell, RefCell}; -use std::marker::PhantomData; -use std::ops::Deref; -use std::sync::Arc; +use crate::decoder::tiling::FrameBufferExt; +use crate::decoder::{self, tiling, Decoder, DecoderUpdate}; +use crate::deps::*; +use crate::metadata::Metadata; +use crate::util::Gesture; /// Default background color around images and behind transparent images /// `#242424` diff --git a/src/widgets/image_page.rs b/src/widgets/image_page.rs index b4eafadb6515eb6b6370e02b16e97fd004f01c6a..5a700ce715c93034f45170ed97aa0e0eb47a9dff 100644 --- a/src/widgets/image_page.rs +++ b/src/widgets/image_page.rs @@ -21,14 +21,14 @@ //! //! This widget also handles showing the context menu. -use crate::deps::*; -use crate::widgets::LpImage; - use adw::subclass::prelude::*; use glib::{clone, Properties}; use gtk::prelude::*; use gtk::CompositeTemplate; +use crate::deps::*; +use crate::widgets::LpImage; + mod imp { use super::*; diff --git a/src/widgets/image_view.rs b/src/widgets/image_view.rs index b53d5e5b321809d384584dbffa85bd49bf34f79c..5f90d647ca822b034d2a0064a27cedcf2c1b06fa 100644 --- a/src/widgets/image_view.rs +++ b/src/widgets/image_view.rs @@ -30,11 +30,8 @@ //! [`LpSlidingView`]: crate::widgets::LpSlidingView //! [`LpFileModel`]: crate::file_model::LpFileModel -use crate::deps::*; -use crate::file_model::LpFileModel; -use crate::util::gettext::*; -use crate::util::{Direction, Position}; -use crate::widgets::{LpImage, LpImagePage, LpPrint, LpSlidingView}; +use std::cell::{Cell, OnceCell, RefCell}; +use std::marker::PhantomData; use adw::prelude::*; use adw::subclass::prelude::*; @@ -45,8 +42,11 @@ use glib::translate::IntoGlib; use glib::{clone, Properties}; use gtk::CompositeTemplate; -use std::cell::{Cell, OnceCell, RefCell}; -use std::marker::PhantomData; +use crate::deps::*; +use crate::file_model::LpFileModel; +use crate::util::gettext::*; +use crate::util::{Direction, Position}; +use crate::widgets::{LpImage, LpImagePage, LpPrint, LpSlidingView}; // The number of pages we want to buffer // on either side of the current page. diff --git a/src/widgets/print.rs b/src/widgets/print.rs index 4458dbb9b137aeb15b428e06a845b198f61a8159..7eccae67fdec9f652b91f5324cebebcde3236f54 100644 --- a/src/widgets/print.rs +++ b/src/widgets/print.rs @@ -18,10 +18,8 @@ //! The print layout widget that also coordinates the print process -use crate::decoder; -use crate::deps::*; -use crate::util::gettext::*; -use crate::widgets::{LpImage, LpPrintPreview}; +use std::cell::{Cell, RefCell}; +use std::rc::Rc; use adw::prelude::*; use adw::subclass::prelude::*; @@ -29,8 +27,10 @@ use glib::Properties; use gtk::CompositeTemplate; use once_cell::sync::OnceCell; -use std::cell::{Cell, RefCell}; -use std::rc::Rc; +use crate::decoder; +use crate::deps::*; +use crate::util::gettext::*; +use crate::widgets::{LpImage, LpPrintPreview}; #[derive(Default, Clone, Copy)] struct PageAlignment { diff --git a/src/widgets/print_preview.rs b/src/widgets/print_preview.rs index d545d2b61f1a7b9339ae44be94496fc0f6b3944d..34d96d38369fd783d201a092eff82fec0cade022 100644 --- a/src/widgets/print_preview.rs +++ b/src/widgets/print_preview.rs @@ -17,14 +17,14 @@ //! Print preview widget that shows a fake page with the image on it -use crate::deps::*; -use crate::widgets::LpPrint; - use adw::subclass::prelude::*; use glib::Properties; use gtk::prelude::*; use once_cell::sync::OnceCell; +use crate::deps::*; +use crate::widgets::LpPrint; + mod imp_page { use super::*; diff --git a/src/widgets/properties_view.rs b/src/widgets/properties_view.rs index d7a55ca062d40a7bab10185e3934c3b8856d743d..60c0fe96059c04fbc912f725d3060f3a43e26fec 100644 --- a/src/widgets/properties_view.rs +++ b/src/widgets/properties_view.rs @@ -16,17 +16,16 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -use crate::decoder::ImageDimensionDetails; -use crate::deps::*; -use crate::util; +use std::cell::{OnceCell, RefCell}; use adw::prelude::*; use adw::subclass::prelude::*; use glib::Properties; use gtk::CompositeTemplate; -use std::cell::{OnceCell, RefCell}; - +use crate::decoder::ImageDimensionDetails; +use crate::deps::*; +use crate::util; use crate::widgets::image::LpImage; const FALLBACK: &str = "–"; diff --git a/src/widgets/sliding_view.rs b/src/widgets/sliding_view.rs index 5efed5b731169052306b2c2cb6867b4307037907..9282e9a10cab3fe7a933465192abe1d559c44ee3 100644 --- a/src/widgets/sliding_view.rs +++ b/src/widgets/sliding_view.rs @@ -22,8 +22,7 @@ //! //! This widget it similar to `AdwCarousel`. -use crate::deps::*; -use crate::widgets::LpImagePage; +use std::cell::{Cell, OnceCell, RefCell}; use adw::prelude::*; use adw::subclass::prelude::*; @@ -31,7 +30,8 @@ use glib::Properties; use indexmap::IndexMap; use once_cell::sync::Lazy; -use std::cell::{Cell, OnceCell, RefCell}; +use crate::deps::*; +use crate::widgets::LpImagePage; static SCROLL_DAMPING_RATIO: f64 = 1.; static SCROLL_MASS: f64 = 0.5; @@ -46,9 +46,10 @@ static PAGE_SPACING_FIXED: f32 = 25.; const PAGE_SPACING_PERCENT: f32 = 0.02; mod imp { - use super::*; use glib::subclass::Signal; + use super::*; + #[derive(Default, Properties)] #[properties(wrapper_type = super::LpSlidingView)] pub struct LpSlidingView { diff --git a/src/window.rs b/src/window.rs index db69af6c609f9ce64b683bd537693413c260f74b..ed4359c62b372ff553052f450ce7aba93cfbc18a 100644 --- a/src/window.rs +++ b/src/window.rs @@ -2,6 +2,7 @@ // Copyright (c) 2022-2023 Sophie Herold // Copyright (c) 2022 Elton A Rodrigues // Copyright (c) 2022 Maximiliano Sandoval R +// Copyright (c) 2023 Matteo Nardi // Copyright (c) 2023 Julian Hofer // Copyright (c) 2023 FineFindus // Copyright (c) 2023 qwel @@ -24,19 +25,18 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -use crate::deps::*; -use crate::util::gettext::*; +use std::cell::{Cell, OnceCell, RefCell}; +use std::path::{Path, PathBuf}; use adw::prelude::*; use adw::subclass::prelude::*; use glib::clone; use gtk::CompositeTemplate; -use std::cell::{Cell, OnceCell, RefCell}; -use std::path::{Path, PathBuf}; - use crate::application::LpApplication; use crate::config; +use crate::deps::*; +use crate::util::gettext::*; use crate::util::{Direction, Position}; use crate::widgets::{LpDragOverlay, LpImage, LpImageView, LpPropertiesView}; @@ -789,12 +789,12 @@ impl LpWindow { imp.properties_button.set_sensitive(has_image); } - /// When the image-properties sidebar is displayed or hidden, we should update the - /// "show-properties" setting. + /// When the image-properties sidebar is displayed or hidden, we should + /// update the "show-properties" setting. fn on_properties_button_toggled(&self) { let imp = self.imp(); - // When no image is shown, we skip this update as the sidebar should always be hidden. - // This can happen when deleting a picture. + // When no image is shown, we skip this update as the sidebar should always be + // hidden. This can happen when deleting a picture. if imp.image_view.current_page().is_none() { return; }