Console text
This commit is contained in:
parent
ea29b65c11
commit
812164bce9
|
@ -1,4 +1,5 @@
|
|||
use crate::settings::{collect_settings, SettingsCustom};
|
||||
use crate::Settings;
|
||||
use crate::{CurrentTab, MainListModel, MainWindow, ProgressToSend};
|
||||
use chrono::NaiveDateTime;
|
||||
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));
|
||||
|
||||
let mut vector = finder.get_empty_files().clone();
|
||||
let messages = finder.get_text_messages().create_messages_text();
|
||||
|
||||
vector.sort_unstable_by_key(|e| {
|
||||
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| {
|
||||
let number_of_empty_files = vector.len();
|
||||
let items = Rc::new(VecModel::default());
|
||||
for fe in vector {
|
||||
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);
|
||||
}
|
||||
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));
|
||||
|
||||
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| {
|
||||
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);
|
||||
}
|
||||
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());
|
||||
})
|
||||
});
|
||||
}
|
||||
|
|
|
@ -5,16 +5,19 @@ use std::path::PathBuf;
|
|||
use crate::common::create_string_standard_list_view_from_pathbuf;
|
||||
use crate::Settings;
|
||||
use home::home_dir;
|
||||
use slint::{ComponentHandle, Model, SharedString};
|
||||
use slint::{ComponentHandle, Model};
|
||||
|
||||
#[cfg(target_family = "unix")]
|
||||
const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["/proc", "/dev", "/sys", "/run", "/snap"];
|
||||
#[cfg(not(target_family = "unix"))]
|
||||
const DEFAULT_EXCLUDED_DIRECTORIES: &[&str] = &["C:\\Windows"];
|
||||
|
||||
pub fn reset_settings(app: &MainWindow) {
|
||||
app.invoke_set_console_text(SharedString::from(""));
|
||||
pub struct SettingsCustom {
|
||||
pub included_directories: Vec<PathBuf>,
|
||||
pub excluded_directories: Vec<PathBuf>,
|
||||
}
|
||||
|
||||
pub fn reset_settings(app: &MainWindow) {
|
||||
set_settings_to_gui(app, &SettingsCustom::default());
|
||||
}
|
||||
|
||||
|
@ -28,11 +31,9 @@ pub fn set_settings_to_gui(app: &MainWindow, custom_settings: &SettingsCustom) {
|
|||
// Excluded directories
|
||||
let excluded_items = create_string_standard_list_view_from_pathbuf(&custom_settings.excluded_directories);
|
||||
settings.set_excluded_directories(excluded_items);
|
||||
}
|
||||
|
||||
pub struct SettingsCustom {
|
||||
pub included_directories: Vec<PathBuf>,
|
||||
pub excluded_directories: Vec<PathBuf>,
|
||||
// Clear text
|
||||
app.global::<Settings>().set_info_text("".into());
|
||||
}
|
||||
|
||||
impl Default for SettingsCustom {
|
||||
|
|
|
@ -87,7 +87,7 @@ export component ActionButtons inherits HorizontalLayout {
|
|||
height: parent.height;
|
||||
button-visibility: BottomPanelVisibility.NotVisible;
|
||||
bottom_panel_visibility <=> bottom_panel_visibility;
|
||||
text: "NotVS";
|
||||
text: "None";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -84,21 +84,19 @@ component DirectoriesPanel {
|
|||
}
|
||||
}
|
||||
}
|
||||
// TODO this should be a normal read only Text editor
|
||||
|
||||
component TextErrorsPanel inherits TextEdit {
|
||||
height: 20px;
|
||||
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 {
|
||||
in-out property <BottomPanelVisibility> bottom_panel_visibility: BottomPanelVisibility.Directories;
|
||||
in-out property <string> console_text;
|
||||
|
||||
callback folder-choose-requested(bool);
|
||||
callback show_manual_add_dialog(bool);
|
||||
callback set_console_text(string);
|
||||
|
||||
min-height: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 150px;
|
||||
min-width: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 400px;
|
||||
|
@ -111,13 +109,7 @@ export component BottomPanel {
|
|||
}
|
||||
|
||||
if bottom-panel-visibility == BottomPanelVisibility.TextErrors : TextErrorsPanel {
|
||||
text: console_text;
|
||||
|
||||
width: parent.width;
|
||||
height: parent.height;
|
||||
}
|
||||
|
||||
set_console_text(text) => {
|
||||
console_text = text;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,9 +6,9 @@ export global ColorPalette {
|
|||
in-out property<color> tab_hovered_color: StyleMetrics.dark-color-scheme ? #49494926 : #80808014;
|
||||
|
||||
// ListView
|
||||
in-out property<color> list_view_normal_color: StyleMetrics.dark-color-scheme ? #474747 : #dddddd;
|
||||
in-out property<color> list_view_normal_header_color: StyleMetrics.dark-color-scheme ? #292929 : #888888;
|
||||
in-out property<color> list_view_normal_selected_header: StyleMetrics.dark-color-scheme ? #575757 : #cccccc;
|
||||
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 ? #111111 : #888888;
|
||||
in-out property<color> list_view_normal_selected_header: StyleMetrics.dark-color-scheme ? #444444 : #cccccc;
|
||||
|
||||
// Popup
|
||||
in-out property<color> popup_background: StyleMetrics.dark-color-scheme ? #353535 : #5e5e5e;
|
||||
|
|
|
@ -28,9 +28,9 @@ export component MainList {
|
|||
if root.active-tab == CurrentTab.EmptyFiles: SelectableTableView {
|
||||
min-width: 200px;
|
||||
|
||||
columns: ["Selection", "Folder Name", "Path"];
|
||||
columns: ["Selection", "File Name", "Path"];
|
||||
last-column: "Modification Date";
|
||||
column-sizes: [30px, 100px, 100px, 100px];
|
||||
column-sizes: [35px, 100px, 350px, 100px];
|
||||
values <=> empty-files-model;
|
||||
parentPathIdx: 2;
|
||||
fileNameIdx: 1;
|
||||
|
@ -40,9 +40,9 @@ export component MainList {
|
|||
if root.active-tab == CurrentTab.SimilarImages: SelectableTableView {
|
||||
min-width: 200px;
|
||||
|
||||
columns: ["Selection", "Folder Name", "Path"];
|
||||
columns: ["Selection", "File Name", "Path"];
|
||||
last-column: "Modification Date";
|
||||
column-sizes: [30px, 100px, 100px, 100px];
|
||||
column-sizes: [35px, 100px, 350px, 100px];
|
||||
values <=> similar-images-model;
|
||||
parentPathIdx: 2;
|
||||
fileNameIdx: 1;
|
||||
|
|
|
@ -19,9 +19,8 @@ export component MainWindow inherits Window {
|
|||
callback scan_starting(CurrentTab);
|
||||
callback item_opened(string);
|
||||
callback folder-choose-requested(bool);
|
||||
callback set_console_text(string);
|
||||
|
||||
callback scan_ended();
|
||||
callback scan_ended(string);
|
||||
|
||||
min-width: 300px;
|
||||
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: 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"]}
|
||||
];
|
||||
in-out property <[MainListModel]> empty_files_model: [];
|
||||
|
@ -146,10 +122,8 @@ export component MainWindow inherits Window {
|
|||
width: popup_item.width - 20px;
|
||||
height: popup_item.height - 20px;
|
||||
border-radius: 20px;
|
||||
background: ColorPalette.popup_background; // TODO Dark theme
|
||||
background: ColorPalette.popup_background;
|
||||
VerticalLayout {
|
||||
// width: parent.width - 20px;
|
||||
// height: parent.height - 20px;
|
||||
Text {
|
||||
text: "Please add directories one per line";
|
||||
horizontal-alignment: TextHorizontalAlignment.center;
|
||||
|
@ -182,12 +156,8 @@ export component MainWindow inherits Window {
|
|||
|
||||
}
|
||||
|
||||
set_console_text(text) => {
|
||||
bottom-panel.set_console_text(text);
|
||||
}
|
||||
|
||||
scan_ended() => {
|
||||
text-summary.text = ""; // TODO this should be filled with results
|
||||
scan_ended(scan_text) => {
|
||||
text-summary.text = scan_text;
|
||||
root.scanning = false;
|
||||
root.stop_requested = false;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
export global Settings {
|
||||
in-out property<bool> checkbox_checked: false;
|
||||
|
||||
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 <string> info_text: "Nothing to report";
|
||||
}
|
Loading…
Reference in a new issue