1
0
Fork 0
mirror of synced 2024-06-15 08:54:47 +12:00

Console text

This commit is contained in:
Rafał Mikrut 2023-11-10 16:49:54 +01:00
parent ea29b65c11
commit 812164bce9
8 changed files with 32 additions and 63 deletions

View file

@ -1,4 +1,5 @@
use crate::settings::{collect_settings, SettingsCustom}; use crate::settings::{collect_settings, SettingsCustom};
use crate::Settings;
use crate::{CurrentTab, MainListModel, MainWindow, ProgressToSend}; use crate::{CurrentTab, MainListModel, MainWindow, ProgressToSend};
use chrono::NaiveDateTime; use chrono::NaiveDateTime;
use crossbeam_channel::{Receiver, Sender}; use crossbeam_channel::{Receiver, Sender};
@ -49,6 +50,7 @@ fn scan_empty_files(a: Weak<MainWindow>, progress_sender: Sender<ProgressData>,
finder.find_empty_files(Some(&stop_receiver), Some(&progress_sender)); finder.find_empty_files(Some(&stop_receiver), Some(&progress_sender));
let mut vector = finder.get_empty_files().clone(); let mut vector = finder.get_empty_files().clone();
let messages = finder.get_text_messages().create_messages_text();
vector.sort_unstable_by_key(|e| { vector.sort_unstable_by_key(|e| {
let t = split_path(e.get_path()); let t = split_path(e.get_path());
@ -56,6 +58,7 @@ fn scan_empty_files(a: Weak<MainWindow>, progress_sender: Sender<ProgressData>,
}); });
a.upgrade_in_event_loop(move |app| { a.upgrade_in_event_loop(move |app| {
let number_of_empty_files = vector.len();
let items = Rc::new(VecModel::default()); let items = Rc::new(VecModel::default());
for fe in vector { for fe in vector {
let (directory, file) = split_path(fe.get_path()); let (directory, file) = split_path(fe.get_path());
@ -74,7 +77,8 @@ fn scan_empty_files(a: Weak<MainWindow>, progress_sender: Sender<ProgressData>,
items.push(main); items.push(main);
} }
app.set_empty_files_model(items.into()); app.set_empty_files_model(items.into());
app.invoke_scan_ended(); app.invoke_scan_ended(format!("Found {} empty files", number_of_empty_files).into());
app.global::<Settings>().set_info_text(messages.into());
}) })
}); });
} }
@ -87,6 +91,7 @@ fn scan_empty_folders(a: Weak<MainWindow>, progress_sender: Sender<ProgressData>
finder.find_empty_folders(Some(&stop_receiver), Some(&progress_sender)); finder.find_empty_folders(Some(&stop_receiver), Some(&progress_sender));
let mut vector = finder.get_empty_folder_list().keys().cloned().collect::<Vec<PathBuf>>(); let mut vector = finder.get_empty_folder_list().keys().cloned().collect::<Vec<PathBuf>>();
let messages = finder.get_text_messages().create_messages_text();
vector.sort_unstable_by_key(|e| { vector.sort_unstable_by_key(|e| {
let t = split_path(e.as_path()); let t = split_path(e.as_path());
@ -113,7 +118,8 @@ fn scan_empty_folders(a: Weak<MainWindow>, progress_sender: Sender<ProgressData>
items.push(main); items.push(main);
} }
app.set_empty_folder_model(items.into()); app.set_empty_folder_model(items.into());
app.invoke_scan_ended(); app.invoke_scan_ended(format!("Found {} empty folders", folder_map.len()).into());
app.global::<Settings>().set_info_text(messages.into());
}) })
}); });
} }

View file

@ -5,16 +5,19 @@ use std::path::PathBuf;
use crate::common::create_string_standard_list_view_from_pathbuf; use crate::common::create_string_standard_list_view_from_pathbuf;
use crate::Settings; use crate::Settings;
use home::home_dir; use home::home_dir;
use slint::{ComponentHandle, Model, SharedString}; use slint::{ComponentHandle, Model};
#[cfg(target_family = "unix")] #[cfg(target_family = "unix")]
const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["/proc", "/dev", "/sys", "/run", "/snap"]; const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["/proc", "/dev", "/sys", "/run", "/snap"];
#[cfg(not(target_family = "unix"))] #[cfg(not(target_family = "unix"))]
const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["C:\\Windows"]; const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["C:\\Windows"];
pub fn reset_settings(app: &MainWindow) { pub struct SettingsCustom {
app.invoke_set_console_text(SharedString::from("")); pub included_directories: Vec<PathBuf>,
pub excluded_directories: Vec<PathBuf>,
}
pub fn reset_settings(app: &MainWindow) {
set_settings_to_gui(app, &SettingsCustom::default()); set_settings_to_gui(app, &SettingsCustom::default());
} }
@ -28,11 +31,9 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
// Excluded directories // Excluded directories
let excluded_items = create_string_standard_list_view_from_pathbuf(&custom_settings.excluded_directories); let excluded_items = create_string_standard_list_view_from_pathbuf(&custom_settings.excluded_directories);
settings.set_excluded_directories(excluded_items); settings.set_excluded_directories(excluded_items);
}
pub struct SettingsCustom { // Clear text
pub included_directories: Vec<PathBuf>, app.global::<Settings>().set_info_text("".into());
pub excluded_directories: Vec<PathBuf>,
} }
impl Default for SettingsCustom { impl Default for SettingsCustom {

View file

@ -87,7 +87,7 @@ export component ActionButtons inherits HorizontalLayout {
height: parent.height; height: parent.height;
button-visibility: BottomPanelVisibility.NotVisible; button-visibility: BottomPanelVisibility.NotVisible;
bottom_panel_visibility <=> bottom_panel_visibility; bottom_panel_visibility <=> bottom_panel_visibility;
text: "NotVS"; text: "None";
} }
} }
} }

View file

@ -84,21 +84,19 @@ component DirectoriesPanel {
} }
} }
} }
// TODO this should be a normal read only Text editor
component TextErrorsPanel inherits TextEdit { component TextErrorsPanel inherits TextEdit {
height: 20px; height: 20px;
read-only: true; read-only: true;
text: "Something\nShould be\nASFASF\nasgasg\nASfgasga\nasfgAGAWGW\nAfgAWFGAWG\nfawfafgweg\nAFGWGTwgwg\nGawgAWFWAF\nawfawgaw\nasfa \nasfawgw\nawfawg\nRRRRRR"; text <=> Settings.info_text;
} }
export component BottomPanel { export component BottomPanel {
in-out property <BottomPanelVisibility> bottom_panel_visibility: BottomPanelVisibility.Directories; in-out property <BottomPanelVisibility> bottom_panel_visibility: BottomPanelVisibility.Directories;
in-out property <string> console_text;
callback folder-choose-requested(bool); callback folder-choose-requested(bool);
callback show_manual_add_dialog(bool); callback show_manual_add_dialog(bool);
callback set_console_text(string);
min-height: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 150px; min-height: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 150px;
min-width: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 400px; min-width: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 400px;
@ -111,13 +109,7 @@ export component BottomPanel {
} }
if bottom-panel-visibility == BottomPanelVisibility.TextErrors : TextErrorsPanel { if bottom-panel-visibility == BottomPanelVisibility.TextErrors : TextErrorsPanel {
text: console_text;
width: parent.width; width: parent.width;
height: parent.height; height: parent.height;
} }
set_console_text(text) => {
console_text = text;
}
} }

View file

@ -6,9 +6,9 @@ export global ColorPalette {
in-out property<color> tab_hovered_color: StyleMetrics.dark-color-scheme ? #49494926 : #80808014; in-out property<color> tab_hovered_color: StyleMetrics.dark-color-scheme ? #49494926 : #80808014;
// ListView // ListView
in-out property<color> list_view_normal_color: StyleMetrics.dark-color-scheme ? #474747 : #dddddd; in-out property<color> list_view_normal_color: StyleMetrics.dark-color-scheme ? #222222 : #dddddd;
in-out property<color> list_view_normal_header_color: StyleMetrics.dark-color-scheme ? #292929 : #888888; in-out property<color> list_view_normal_header_color: StyleMetrics.dark-color-scheme ? #111111 : #888888;
in-out property<color> list_view_normal_selected_header: StyleMetrics.dark-color-scheme ? #575757 : #cccccc; in-out property<color> list_view_normal_selected_header: StyleMetrics.dark-color-scheme ? #444444 : #cccccc;
// Popup // Popup
in-out property<color> popup_background: StyleMetrics.dark-color-scheme ? #353535 : #5e5e5e; in-out property<color> popup_background: StyleMetrics.dark-color-scheme ? #353535 : #5e5e5e;

View file

@ -28,9 +28,9 @@ export component MainList {
if root.active-tab == CurrentTab.EmptyFiles: SelectableTableView { if root.active-tab == CurrentTab.EmptyFiles: SelectableTableView {
min-width: 200px; min-width: 200px;
columns: ["Selection", "Folder Name", "Path"]; columns: ["Selection", "File Name", "Path"];
last-column: "Modification Date"; last-column: "Modification Date";
column-sizes: [30px, 100px, 100px, 100px]; column-sizes: [35px, 100px, 350px, 100px];
values <=> empty-files-model; values <=> empty-files-model;
parentPathIdx: 2; parentPathIdx: 2;
fileNameIdx: 1; fileNameIdx: 1;
@ -40,9 +40,9 @@ export component MainList {
if root.active-tab == CurrentTab.SimilarImages: SelectableTableView { if root.active-tab == CurrentTab.SimilarImages: SelectableTableView {
min-width: 200px; min-width: 200px;
columns: ["Selection", "Folder Name", "Path"]; columns: ["Selection", "File Name", "Path"];
last-column: "Modification Date"; last-column: "Modification Date";
column-sizes: [30px, 100px, 100px, 100px]; column-sizes: [35px, 100px, 350px, 100px];
values <=> similar-images-model; values <=> similar-images-model;
parentPathIdx: 2; parentPathIdx: 2;
fileNameIdx: 1; fileNameIdx: 1;

View file

@ -19,9 +19,8 @@ export component MainWindow inherits Window {
callback scan_starting(CurrentTab); callback scan_starting(CurrentTab);
callback item_opened(string); callback item_opened(string);
callback folder-choose-requested(bool); callback folder-choose-requested(bool);
callback set_console_text(string);
callback scan_ended(); callback scan_ended(string);
min-width: 300px; min-width: 300px;
preferred-width: 800px; preferred-width: 800px;
@ -41,29 +40,6 @@ export component MainWindow inherits Window {
{checked: false, selected_row: false, header_row: true, val: ["kropkarz", "/Xd1", "24.10.2023"]} , {checked: false, selected_row: false, header_row: true, val: ["kropkarz", "/Xd1", "24.10.2023"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} , {checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: false, selected_row: false, header_row: false, val: ["witasphere", "/Xd1/Imagerren2", "25.11.1991"]} ,
{checked: true, selected_row: false, header_row: false, val: ["lokkaler", "/Xd1/Vide2", "01.23.1911"]} {checked: true, selected_row: false, header_row: false, val: ["lokkaler", "/Xd1/Vide2", "01.23.1911"]}
]; ];
in-out property <[MainListModel]> empty_files_model: []; in-out property <[MainListModel]> empty_files_model: [];
@ -146,10 +122,8 @@ export component MainWindow inherits Window {
width: popup_item.width - 20px; width: popup_item.width - 20px;
height: popup_item.height - 20px; height: popup_item.height - 20px;
border-radius: 20px; border-radius: 20px;
background: ColorPalette.popup_background; // TODO Dark theme background: ColorPalette.popup_background;
VerticalLayout { VerticalLayout {
// width: parent.width - 20px;
// height: parent.height - 20px;
Text { Text {
text: "Please add directories one per line"; text: "Please add directories one per line";
horizontal-alignment: TextHorizontalAlignment.center; horizontal-alignment: TextHorizontalAlignment.center;
@ -182,12 +156,8 @@ export component MainWindow inherits Window {
} }
set_console_text(text) => { scan_ended(scan_text) => {
bottom-panel.set_console_text(text); text-summary.text = scan_text;
}
scan_ended() => {
text-summary.text = ""; // TODO this should be filled with results
root.scanning = false; root.scanning = false;
root.stop_requested = false; root.stop_requested = false;
} }

View file

@ -1,6 +1,6 @@
export global Settings { export global Settings {
in-out property<bool> checkbox_checked: false;
in-out property <[StandardListViewItem]> included_directories: [{text: "ABCD"}, {text: "BCDA"}]; in-out property <[StandardListViewItem]> included_directories: [{text: "ABCD"}, {text: "BCDA"}];
in-out property <[StandardListViewItem]> excluded_directories: [{text: "ABCD"}, {text: "BCDA"}, {text: "CDFFF"}]; in-out property <[StandardListViewItem]> excluded_directories: [{text: "ABCD"}, {text: "BCDA"}, {text: "CDFFF"}];
in-out property <string> info_text: "Nothing to report";
} }