From 68c3c294c970b15668f2473d7c0a03bedf76fdb8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mikrut?=
<41945903+qarmin@users.noreply.github.com>
Date: Sat, 19 Dec 2020 10:15:25 +0100
Subject: [PATCH] Add button to enable/disable in settings text view errors
(#122)
---
czkawka_gui/czkawka.glade | 27 ++++-
.../src/connect_hide_text_view_errors.rs | 3 +
czkawka_gui/src/gui_data.rs | 3 +
czkawka_gui/src/saving_loading.rs | 113 ++++++++++++------
4 files changed, 106 insertions(+), 40 deletions(-)
diff --git a/czkawka_gui/czkawka.glade b/czkawka_gui/czkawka.glade
index 1c6cd61..3f4d81d 100644
--- a/czkawka_gui/czkawka.glade
+++ b/czkawka_gui/czkawka.glade
@@ -650,7 +650,7 @@ Author: Rafał Mikrut
False
@@ -701,7 +701,7 @@ Author: Rafał Mikrut
False
@@ -1090,6 +1090,29 @@ Author: Rafał Mikrut
1
+
+
+
+ 0
+ 2
+
+
+
+
+
+
+
+
+
+
+
4
diff --git a/czkawka_gui/src/connect_hide_text_view_errors.rs b/czkawka_gui/src/connect_hide_text_view_errors.rs
index 719266c..02e1c89 100644
--- a/czkawka_gui/src/connect_hide_text_view_errors.rs
+++ b/czkawka_gui/src/connect_hide_text_view_errors.rs
@@ -3,14 +3,17 @@ use crate::gui_data::GuiData;
use gtk::prelude::*;
pub fn connect_hide_text_view_errors(gui_data: &GuiData) {
+ let check_button_settings_show_text_view = gui_data.check_button_settings_show_text_view.clone();
let buttons_show_errors = gui_data.buttons_show_errors.clone();
let scrolled_window_errors = gui_data.scrolled_window_errors.clone();
buttons_show_errors.connect_clicked(move |_| {
if scrolled_window_errors.is_visible() {
scrolled_window_errors.hide();
+ check_button_settings_show_text_view.set_active(false);
} else {
scrolled_window_errors.show();
+ check_button_settings_show_text_view.set_active(true);
}
});
}
diff --git a/czkawka_gui/src/gui_data.rs b/czkawka_gui/src/gui_data.rs
index 9be8895..abb8c7e 100644
--- a/czkawka_gui/src/gui_data.rs
+++ b/czkawka_gui/src/gui_data.rs
@@ -156,6 +156,7 @@ pub struct GuiData {
pub check_button_settings_load_at_start: gtk::CheckButton,
pub check_button_settings_confirm_deletion: gtk::CheckButton,
pub check_button_settings_show_preview_similar_images: gtk::CheckButton,
+ pub check_button_settings_show_text_view: gtk::CheckButton,
pub button_settings_save_configuration: gtk::Button,
pub button_settings_load_configuration: gtk::Button,
@@ -365,6 +366,7 @@ impl GuiData {
let check_button_settings_load_at_start: gtk::CheckButton = builder.get_object("check_button_settings_load_at_start").unwrap();
let check_button_settings_confirm_deletion: gtk::CheckButton = builder.get_object("check_button_settings_confirm_deletion").unwrap();
let check_button_settings_show_preview_similar_images: gtk::CheckButton = builder.get_object("check_button_settings_show_preview_similar_images").unwrap();
+ let check_button_settings_show_text_view: gtk::CheckButton = builder.get_object("check_button_settings_show_text_view").unwrap();
let button_settings_save_configuration: gtk::Button = builder.get_object("button_settings_save_configuration").unwrap();
let button_settings_load_configuration: gtk::Button = builder.get_object("button_settings_load_configuration").unwrap();
@@ -469,6 +471,7 @@ impl GuiData {
check_button_settings_load_at_start,
check_button_settings_confirm_deletion,
check_button_settings_show_preview_similar_images,
+ check_button_settings_show_text_view,
button_settings_save_configuration,
button_settings_load_configuration,
button_settings_reset_configuration,
diff --git a/czkawka_gui/src/saving_loading.rs b/czkawka_gui/src/saving_loading.rs
index 4b95f6b..ed8e95e 100644
--- a/czkawka_gui/src/saving_loading.rs
+++ b/czkawka_gui/src/saving_loading.rs
@@ -66,46 +66,53 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
}
}
- //// Excluded Items
- data_to_save.push("--excluded_items:".to_string());
- let entry_excluded_items = gui_data.entry_excluded_items.clone();
- for item in entry_excluded_items.get_text().split(',') {
- if item.trim().is_empty() {
- continue;
+ {
+ //// Excluded Items
+ data_to_save.push("--excluded_items:".to_string());
+ let entry_excluded_items = gui_data.entry_excluded_items.clone();
+ for item in entry_excluded_items.get_text().split(',') {
+ if item.trim().is_empty() {
+ continue;
+ }
+ data_to_save.push(item.to_string());
}
- data_to_save.push(item.to_string());
- }
- //// Allowed extensions
- data_to_save.push("--allowed_extensions:".to_string());
- let entry_allowed_extensions = gui_data.entry_allowed_extensions.clone();
- for extension in entry_allowed_extensions.get_text().split(',') {
- if extension.trim().is_empty() {
- continue;
+ //// Allowed extensions
+ data_to_save.push("--allowed_extensions:".to_string());
+ let entry_allowed_extensions = gui_data.entry_allowed_extensions.clone();
+ for extension in entry_allowed_extensions.get_text().split(',') {
+ if extension.trim().is_empty() {
+ continue;
+ }
+ data_to_save.push(extension.to_string());
}
- data_to_save.push(extension.to_string());
+
+ //// Save at exit
+ data_to_save.push("--save_at_exit:".to_string());
+ let check_button_settings_save_at_exit = gui_data.check_button_settings_save_at_exit.clone();
+ data_to_save.push(check_button_settings_save_at_exit.get_active().to_string());
+
+ //// Load at start
+ data_to_save.push("--load_at_start:".to_string());
+ let check_button_settings_load_at_start = gui_data.check_button_settings_load_at_start.clone();
+ data_to_save.push(check_button_settings_load_at_start.get_active().to_string());
+
+ //// Confirm deletion of files
+ data_to_save.push("--confirm_deletion:".to_string());
+ let check_button_settings_confirm_deletion = gui_data.check_button_settings_confirm_deletion.clone();
+ data_to_save.push(check_button_settings_confirm_deletion.get_active().to_string());
+
+ //// Show image previews in similar images
+ data_to_save.push("--show_previews:".to_string());
+ let check_button_settings_show_preview_similar_images = gui_data.check_button_settings_show_preview_similar_images.clone();
+ data_to_save.push(check_button_settings_show_preview_similar_images.get_active().to_string());
+
+ //// Show bottom text panel with errors
+ data_to_save.push("--bottom_text_panel:".to_string());
+ let check_button_settings_show_text_view = gui_data.check_button_settings_show_text_view.clone();
+ data_to_save.push(check_button_settings_show_text_view.get_active().to_string());
}
- //// Save at exit
- data_to_save.push("--save_at_exit:".to_string());
- let check_button_settings_save_at_exit = gui_data.check_button_settings_save_at_exit.clone();
- data_to_save.push(check_button_settings_save_at_exit.get_active().to_string());
-
- //// Load at start
- data_to_save.push("--load_at_start:".to_string());
- let check_button_settings_load_at_start = gui_data.check_button_settings_load_at_start.clone();
- data_to_save.push(check_button_settings_load_at_start.get_active().to_string());
-
- //// Confirm deletion of files
- data_to_save.push("--confirm_deletion:".to_string());
- let check_button_settings_confirm_deletion = gui_data.check_button_settings_confirm_deletion.clone();
- data_to_save.push(check_button_settings_confirm_deletion.get_active().to_string());
-
- //// Show image previews in similar images
- data_to_save.push("--show_previews:".to_string());
- let check_button_settings_show_preview_similar_images = gui_data.check_button_settings_show_preview_similar_images.clone();
- data_to_save.push(check_button_settings_show_preview_similar_images.get_active().to_string());
-
// Creating/Opening config file
let config_file = config_dir.join(Path::new(SAVE_FILE_NAME));
@@ -118,17 +125,23 @@ pub fn save_configuration(gui_data: &GuiData, manual_execution: bool) {
}
};
+ let mut data_saved: bool = false;
for data in data_to_save {
match writeln!(config_file_handler, "{}", data) {
Ok(_) => {
- add_text_to_text_view(&text_view_errors, format!("Saved configuration to file {}", config_dir.display()).as_str());
+ data_saved = true;
}
Err(_) => {
- add_text_to_text_view(&text_view_errors, format!("Failed to save configuration data to file {}", config_dir.display()).as_str());
- return;
+ data_saved = false;
+ break;
}
}
}
+ if data_saved {
+ add_text_to_text_view(&text_view_errors, format!("Saved configuration to file {}", config_dir.display()).as_str());
+ } else {
+ add_text_to_text_view(&text_view_errors, format!("Failed to save configuration data to file {}", config_dir.display()).as_str());
+ }
} else {
add_text_to_text_view(&text_view_errors, "Failed to get home directory, so can't save file.");
}
@@ -144,6 +157,7 @@ enum TypeOfLoadedData {
SavingAtExit,
ConfirmDeletion,
ShowPreviews,
+ BottomTextPanel,
}
pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
@@ -185,6 +199,7 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
let mut saving_at_exit: bool = true;
let mut confirm_deletion: bool = true;
let mut show_previews: bool = true;
+ let mut bottom_text_panel: bool = true;
let mut current_type = TypeOfLoadedData::None;
for (line_number, line) in loaded_data.replace("\r\n", "\n").split('\n').enumerate() {
@@ -208,6 +223,8 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
current_type = TypeOfLoadedData::ConfirmDeletion;
} else if line.starts_with("--show_previews") {
current_type = TypeOfLoadedData::ShowPreviews;
+ } else if line.starts_with("--bottom_text_panel") {
+ current_type = TypeOfLoadedData::BottomTextPanel;
} else if line.starts_with("--") {
current_type = TypeOfLoadedData::None;
add_text_to_text_view(
@@ -290,6 +307,19 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
);
}
}
+ TypeOfLoadedData::BottomTextPanel => {
+ let line = line.to_lowercase();
+ if line == "1" || line == "true" {
+ bottom_text_panel = true;
+ } else if line == "0" || line == "false" {
+ bottom_text_panel = false;
+ } else {
+ add_text_to_text_view(
+ &text_view_errors,
+ format!("Found invalid data in line {} \"\"\"{}\"\"\" isn't proper value(0/1/true/false) when loading file {:?}", line_number, line, config_file).as_str(),
+ );
+ }
+ }
}
}
}
@@ -333,6 +363,11 @@ pub fn load_configuration(gui_data: &GuiData, manual_execution: bool) {
gui_data.check_button_settings_save_at_exit.set_active(saving_at_exit);
gui_data.check_button_settings_confirm_deletion.set_active(confirm_deletion);
gui_data.check_button_settings_show_preview_similar_images.set_active(show_previews);
+
+ gui_data.check_button_settings_show_text_view.set_active(bottom_text_panel);
+ if !bottom_text_panel {
+ gui_data.scrolled_window_errors.hide();
+ }
} else {
gui_data.check_button_settings_load_at_start.set_active(false);
}
@@ -410,6 +445,8 @@ pub fn reset_configuration(gui_data: &GuiData, manual_clearing: bool) {
gui_data.check_button_settings_save_at_exit.set_active(true);
gui_data.check_button_settings_load_at_start.set_active(true);
gui_data.check_button_settings_confirm_deletion.set_active(true);
+ gui_data.check_button_settings_show_preview_similar_images.set_active(true);
+ gui_data.check_button_settings_show_text_view.set_active(true);
}
if manual_clearing {
add_text_to_text_view(&text_view_errors, "Current configuration was cleared.");