1
0
Fork 0
mirror of synced 2024-06-15 17:04:58 +12:00
This commit is contained in:
Rafał Mikrut 2022-11-25 18:42:36 +01:00
parent 0acb8674f8
commit 198ce23d59
8 changed files with 49 additions and 10 deletions

View file

@ -22,7 +22,8 @@ use serde::{Deserialize, Serialize};
#[cfg(feature = "heif")]
use crate::common::get_dynamic_image_from_heic;
use crate::common::{
create_crash_message, get_dynamic_image_from_raw_image, open_cache_folder, Common, HEIC_EXTENSIONS, IMAGE_RS_SIMILAR_IMAGES_EXTENSIONS, LOOP_DURATION, RAW_IMAGE_EXTENSIONS,
create_crash_message, get_dynamic_image_from_raw_image, get_number_of_threads, open_cache_folder, Common, HEIC_EXTENSIONS, IMAGE_RS_SIMILAR_IMAGES_EXTENSIONS, LOOP_DURATION,
RAW_IMAGE_EXTENSIONS,
};
use crate::common_directory::Directories;
use crate::common_extensions::Extensions;
@ -736,7 +737,7 @@ impl SimilarImages {
let mut files_from_referenced_folders = HashMap::new();
let mut normal_files = HashMap::new();
let number_of_processors = num_cpus::get();
let number_of_processors = get_number_of_threads();
let chunk_size;
let mut chunks: Vec<&[&Vec<u8>]>;

View file

@ -292,6 +292,11 @@ header_about_button_tooltip = Opens dialog with info about app.
# Settings
## General
settings_number_of_threads = Number of used threads
settings_number_of_threads_tooltip = Number of used threads, 0 means that all available threads will be used.
settings_label_restart = You need to restart app to apply settings!
settings_ignore_other_filesystems = Ignore other filesystems (only Linux)
settings_ignore_other_filesystems_tooltip =
ignores files that are not in the same file system as searched directories.

View file

@ -17,6 +17,16 @@ use crate::help_functions::get_dialog_box_child;
use crate::saving_loading::{load_configuration, reset_configuration, save_configuration};
pub fn connect_settings(gui_data: &GuiData) {
// Connect scale
{
gui_data.settings.label_restart_needed.hide();
let label_restart_needed = gui_data.settings.label_restart_needed.clone();
gui_data.settings.scale_settings_number_of_threads.connect_value_changed(move |_| {
if !label_restart_needed.is_visible() {
label_restart_needed.show();
}
});
}
// Connect button settings
{
let button_settings = gui_data.header.button_settings.clone();

View file

@ -1,9 +1,8 @@
use glib::signal::Inhibit;
use gtk4::prelude::*;
use gtk4::{Builder, Window};
use crate::flg;
use crate::help_functions::{get_all_direct_children, scale_step_function};
use crate::help_functions::get_all_direct_children;
#[derive(Clone)]
pub struct GuiSettings {
@ -26,6 +25,7 @@ pub struct GuiSettings {
pub check_button_settings_one_filesystem: gtk4::CheckButton,
pub label_settings_number_of_threads: gtk4::Label,
pub scale_settings_number_of_threads: gtk4::Scale,
pub label_restart_needed: gtk4::Label,
// Duplicates
pub check_button_settings_hide_hard_links: gtk4::CheckButton,
@ -83,6 +83,7 @@ impl GuiSettings {
let combo_box_settings_language: gtk4::ComboBoxText = builder.object("combo_box_settings_language").unwrap();
let label_settings_number_of_threads: gtk4::Label = builder.object("label_settings_number_of_threads").unwrap();
let scale_settings_number_of_threads: gtk4::Scale = builder.object("scale_settings_number_of_threads").unwrap();
let label_restart_needed: gtk4::Label = builder.object("label_restart_needed").unwrap();
// Duplicates
let check_button_settings_hide_hard_links: gtk4::CheckButton = builder.object("check_button_settings_hide_hard_links").unwrap();
@ -129,6 +130,7 @@ impl GuiSettings {
check_button_settings_one_filesystem,
label_settings_number_of_threads,
scale_settings_number_of_threads,
label_restart_needed,
check_button_settings_hide_hard_links,
entry_settings_cache_file_minimal_size,
entry_settings_prehash_cache_file_minimal_size,
@ -154,6 +156,7 @@ impl GuiSettings {
pub fn update_language(&self) {
self.window_settings.set_title(Some(&flg!("window_settings_title")));
self.label_restart_needed.set_label(&flg!("settings_label_restart"));
self.check_button_settings_save_at_exit.set_label(Some(&flg!("settings_save_at_exit_button")));
self.check_button_settings_load_at_start.set_label(Some(&flg!("settings_load_at_start_button")));
self.check_button_settings_confirm_deletion.set_label(Some(&flg!("settings_confirm_deletion_button")));
@ -166,6 +169,7 @@ impl GuiSettings {
self.check_button_settings_use_trash.set_label(Some(&flg!("settings_use_trash_button")));
self.label_settings_general_language.set_label(&flg!("settings_language_label"));
self.check_button_settings_one_filesystem.set_label(Some(&flg!("settings_ignore_other_filesystems")));
self.label_settings_number_of_threads.set_label(&flg!("settings_number_of_threads"));
self.check_button_settings_save_at_exit
.set_tooltip_text(Some(&flg!("settings_save_at_exit_button_tooltip")));
@ -186,6 +190,7 @@ impl GuiSettings {
self.label_settings_general_language.set_tooltip_text(Some(&flg!("settings_language_label_tooltip")));
self.check_button_settings_one_filesystem
.set_tooltip_text(Some(&flg!("settings_ignore_other_filesystems_tooltip")));
self.scale_settings_number_of_threads.set_tooltip_text(Some(&flg!("settings_number_of_threads_tooltip")));
self.check_button_settings_hide_hard_links
.set_label(Some(&flg!("settings_duplicates_hide_hard_link_button")));

View file

@ -136,7 +136,7 @@ fn build_ui(application: &Application, arguments: Vec<OsString>) {
&gui_data.scrolled_window_errors,
arguments.clone(),
);
// set_number_of_threads(gui_data.settings.sc);
set_number_of_threads(gui_data.settings.scale_settings_number_of_threads.value() as usize);
// Needs to run when entire GUI is initialized
connect_change_language(&gui_data);

View file

@ -5,7 +5,7 @@ use std::io::{Read, Write};
use std::path::{Path, PathBuf};
use std::{env, fs};
use czkawka_core::common::{get_default_number_of_threads, get_number_of_threads};
use czkawka_core::common::get_default_number_of_threads;
use directories_next::ProjectDirs;
use gtk4::prelude::*;
use gtk4::{ComboBoxText, ScrolledWindow, TextView};
@ -101,7 +101,6 @@ impl LoadSaveStruct {
println!("Default value {} can't be convert to integer value", default_value);
panic!();
}
assert!(default_value.parse::<i64>().is_ok());
let mut returned_value = self.get_string(key, default_value.clone());
if returned_value.parse::<i64>().is_err() {
returned_value = default_value;

View file

@ -281,7 +281,7 @@
(9,19,"GtkCheckButton","check_button_settings_use_cache",9,None,None,None,7),
(9,20,"GtkCheckButton","check_button_settings_save_also_json",9,None,None,None,8),
(9,21,"GtkCheckButton","check_button_settings_use_trash",9,None,None,None,9),
(9,22,"GtkBox",None,8,None,None,None,1),
(9,22,"GtkBox",None,8,None,None,None,2),
(9,23,"GtkButton","button_settings_open_cache_folder",22,None,None,None,None),
(9,24,"GtkButton","button_settings_open_settings_folder",22,None,None,None,1),
(9,25,"GtkLabel",None,7,None,None,None,None),
@ -317,7 +317,8 @@
(9,55,"GtkCheckButton","check_button_settings_one_filesystem",9,None,None,None,10),
(9,56,"GtkBox",None,9,None,None,None,11),
(9,57,"GtkLabel","label_settings_number_of_threads",56,None,None,None,None),
(9,58,"GtkScale","scale_settings_number_of_threads",56,None,None,None,1)
(9,58,"GtkScale","scale_settings_number_of_threads",56,None,None,None,1),
(9,59,"GtkLabel","label_restart_needed",8,None,None,None,1)
</object>
<object_property>
(3,1,"GtkAboutDialog","comments","2020 - 2022 Rafał Mikrut(qarmin)\n\nThis program is free to use and will always be.\n",1,None,None,None,None),
@ -955,14 +956,21 @@
(9,55,"GtkCheckButton","active","1",None,None,None,None,None),
(9,55,"GtkCheckButton","label","Exclude other filesystems(Linux)",None,None,None,None,None),
(9,55,"GtkWidget","focusable","1",None,None,None,None,None),
(9,57,"GtkAccessible","accessible-role","presentation",None,None,None,None,None),
(9,57,"GtkLabel","label","Number of used threads",None,None,None,None,None),
(9,57,"GtkLabel","wrap-mode","word-char",None,None,None,None,None),
(9,57,"GtkWidget","margin-start","5",None,None,None,None,None),
(9,58,"GtkRange","fill-level","100",None,None,None,None,None),
(9,58,"GtkRange","round-digits","1",None,None,None,None,None),
(9,58,"GtkScale","digits","0",None,None,None,None,None),
(9,58,"GtkScale","draw-value","True",None,None,None,None,None),
(9,58,"GtkScale","value-pos","right",None,None,None,None,None),
(9,58,"GtkWidget","focusable","1",None,None,None,None,None),
(9,58,"GtkWidget","hexpand","1",None,None,None,None,None)
(9,58,"GtkWidget","hexpand","1",None,None,None,None,None),
(9,59,"GtkAccessible","accessible-role","menu-item-checkbox",None,None,None,None,None),
(9,59,"GtkLabel","label","You need to restart app to apply settings!",None,None,None,None,None),
(9,59,"GtkWidget","margin-bottom","4",None,None,None,None,None),
(9,59,"GtkWidget","margin-top","5",None,None,None,None,None)
</object_property>
<object_layout_property>
(8,17,18,"GtkGridLayoutChild","column","0",None,None,None,None),

View file

@ -118,7 +118,10 @@
<object class="GtkBox">
<child>
<object class="GtkLabel" id="label_settings_number_of_threads">
<property name="accessible-role">presentation</property>
<property name="label">Number of used threads</property>
<property name="margin-start">5</property>
<property name="wrap-mode">word-char</property>
</object>
</child>
<child>
@ -136,6 +139,14 @@
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="label_restart_needed">
<property name="accessible-role">menu-item-checkbox</property>
<property name="label">You need to restart app to apply settings!</property>
<property name="margin-bottom">4</property>
<property name="margin-top">5</property>
</object>
</child>
<child>
<object class="GtkBox">
<property name="valign">center</property>