1
0
Fork 0
mirror of synced 2024-05-17 19:03:08 +12:00

Simplify opening

This commit is contained in:
Rafał Mikrut 2023-11-12 09:09:15 +01:00
parent b67a98f8ca
commit ff7cfff900
9 changed files with 118 additions and 107 deletions

View file

@ -1132,6 +1132,7 @@ mod tests {
use std::collections::HashMap;
use std::path::PathBuf;
use crate::common_dir_traversal::ToolType;
use bk_tree::BKTree;
use crate::common_directory::Directories;
@ -1152,6 +1153,10 @@ mod tests {
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 0,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
..Default::default()
},
..Default::default()
};
@ -1183,6 +1188,10 @@ mod tests {
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 1,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
..Default::default()
},
..Default::default()
};
@ -1203,6 +1212,7 @@ mod tests {
similarity: 2,
common_data: CommonToolData {
use_reference_folders: false,
tool_type: ToolType::SimilarImages,
..Default::default()
},
..Default::default()
@ -1227,6 +1237,10 @@ mod tests {
// for _ in 0..100 {
// let mut similar_images = SimilarImages {
// similarity: 10,
// common_data: CommonToolData {
// tool_type: ToolType::SimilarImages,
// ..Default::default()
// },
// use_reference_folders: false,
// ..Default::default()
// };
@ -1250,6 +1264,7 @@ mod tests {
let mut similar_images = SimilarImages {
similarity: 0,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
@ -1276,6 +1291,7 @@ mod tests {
let mut similar_images = SimilarImages {
similarity: 0,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
@ -1303,6 +1319,7 @@ mod tests {
let mut similar_images = SimilarImages {
similarity: 0,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
@ -1334,6 +1351,7 @@ mod tests {
let mut similar_images = SimilarImages {
similarity: 1,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
use_reference_folders: false,
..Default::default()
},
@ -1358,6 +1376,7 @@ mod tests {
let mut similar_images = SimilarImages {
similarity: 4,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
use_reference_folders: false,
..Default::default()
},
@ -1391,6 +1410,7 @@ mod tests {
let mut similar_images = SimilarImages {
similarity: 1,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
@ -1421,6 +1441,7 @@ mod tests {
let mut similar_images = SimilarImages {
similarity: 1,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
@ -1448,6 +1469,7 @@ mod tests {
let mut similar_images = SimilarImages {
similarity: 1,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
@ -1486,6 +1508,7 @@ mod tests {
let mut similar_images = SimilarImages {
similarity: 10,
common_data: CommonToolData {
tool_type: ToolType::SimilarImages,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()

View file

@ -2,12 +2,12 @@ use std::borrow::Borrow;
use slint::{ComponentHandle, Model, ModelRc, VecModel};
use crate::{CurrentTab, MainListModel, MainWindow};
use crate::{Callabler, CurrentTab, MainListModel, MainWindow};
use log::info;
pub fn connect_delete_button(app: &MainWindow) {
let a = app.as_weak();
app.on_deleted(move || {
app.global::<Callabler>().on_delete_selected_items(move || {
let app = a.upgrade().unwrap();
let active_tab = app.get_active_tab();

View file

@ -1,7 +1,8 @@
use crate::MainWindow;
use crate::{Callabler, MainWindow};
use slint::ComponentHandle;
pub fn connect_open_items(app: &MainWindow) {
app.on_item_opened(move |path| {
app.global::<Callabler>().on_item_opened(move |path| {
match open::that(&*path) {
Ok(()) => {}
Err(e) => {

View file

@ -3,6 +3,7 @@ import {LeftSidePanel} from "left_side_panel.slint";
import {MainList} from "main_lists.slint";
import {CurrentTab} from "common.slint";
import {BottomPanelVisibility} from "common.slint";
import {Callabler} from "callabler.slint";
export component VisibilityButton inherits Button {
in-out property <BottomPanelVisibility> button_visibility;
@ -16,7 +17,6 @@ export component VisibilityButton inherits Button {
}
export component ActionButtons inherits HorizontalLayout {
callback deleted;
callback scan_stopping;
callback scan_starting(CurrentTab);
in-out property <BottomPanelVisibility> bottom_panel_visibility: BottomPanelVisibility.Directories;
@ -55,7 +55,7 @@ export component ActionButtons inherits HorizontalLayout {
enabled: !scanning;
text: "Delete";
clicked => {
root.deleted();
Callabler.delete_selected_items();
}
}

View file

@ -4,93 +4,93 @@ import {Settings} from "settings.slint";
import {BottomPanelVisibility} from "common.slint";
import {Callabler} from "callabler.slint";
component DirectoriesPanel {
callback folder-choose-requested(bool);
component DirectoriesPanel inherits HorizontalLayout {
callback folder_choose_requested(bool);
callback show_manual_add_dialog(bool);
// Included directories
HorizontalLayout {
VerticalLayout {
horizontal-stretch: 0.0;
Button {
text: "Add";
clicked => {
folder-choose-requested(true);
}
}
Button {
text: "Remove";
clicked => {
Callabler.remove_item_directories(true, included-list.current-item);
}
}
Button {
text: "Manual Add";
clicked => {
show_manual_add_dialog(true);
}
}
Rectangle {
vertical-stretch: 1.0;
VerticalLayout {
horizontal-stretch: 0.0;
spacing: 5px;
Button {
text: "Add";
clicked => {
folder_choose_requested(true);
}
}
VerticalLayout {
horizontal-stretch: 1.0;
Rectangle {
Text {
text: "Included Directories";
}
}
included_list := StandardListView {
model: Settings.included-directories;
Button {
text: "Remove";
clicked => {
Callabler.remove_item_directories(true, included-list.current-item);
}
}
// Excluded directories
VerticalLayout {
horizontal-stretch: 0.0;
Button {
text: "Add";
clicked => {
folder-choose-requested(false);
}
}
Button {
text: "Remove";
clicked => {
Callabler.remove_item_directories(false, excluded-list.current-item);
}
}
Button {
text: "Manual Add";
clicked => {
show_manual_add_dialog(false);
}
}
Rectangle {
vertical-stretch: 1.0;
Button {
text: "Manual Add";
clicked => {
show_manual_add_dialog(true);
}
}
VerticalLayout {
horizontal-stretch: 1.0;
Rectangle {
Text {
text: "Excluded Directories";
}
}
Rectangle {
vertical-stretch: 1.0;
}
}
excluded_list := StandardListView {
model: Settings.excluded-directories;
VerticalLayout {
horizontal-stretch: 1.0;
Rectangle {
Text {
text: "Included Directories";
}
}
included_list := StandardListView {
model: Settings.included-directories;
}
}
// Excluded directories
VerticalLayout {
horizontal-stretch: 0.0;
spacing: 5px;
Button {
text: "Add";
clicked => {
folder_choose_requested(false);
}
}
Button {
text: "Remove";
clicked => {
Callabler.remove_item_directories(false, excluded-list.current-item);
}
}
Button {
text: "Manual Add";
clicked => {
show_manual_add_dialog(false);
}
}
Rectangle {
vertical-stretch: 1.0;
}
}
VerticalLayout {
horizontal-stretch: 1.0;
Rectangle {
Text {
text: "Excluded Directories";
}
}
excluded_list := StandardListView {
model: Settings.excluded-directories;
}
}
}
@ -103,15 +103,15 @@ component TextErrorsPanel inherits TextEdit {
export component BottomPanel {
in-out property <BottomPanelVisibility> bottom_panel_visibility: BottomPanelVisibility.Directories;
callback folder-choose-requested(bool);
callback folder_choose_requested(bool);
callback show_manual_add_dialog(bool);
min-height: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 150px;
min-width: bottom-panel-visibility == BottomPanelVisibility.NotVisible ? 0px : 400px;
if bottom-panel-visibility == BottomPanelVisibility.Directories: DirectoriesPanel {
width: parent.width;
height: parent.height;
folder-choose-requested(included-directories) => {
root.folder-choose-requested(included-directories)
folder_choose_requested(included-directories) => {
root.folder_choose_requested(included-directories)
}
show_manual_add_dialog(included-directories) => {
root.show_manual_add_dialog(included-directories)

View file

@ -1,4 +1,10 @@
export global Callabler {
// Bottom panel operations
callback remove_item_directories(bool, int);
callback added_manual_directories(bool, string);
// Right click or middle click opener
callback item_opened(string);
callback delete_selected_items();
}

View file

@ -5,7 +5,6 @@ import {CurrentTab, TypeOfOpenedItem} from "common.slint";
import {MainListModel} from "common.slint";
export component MainList {
callback item_opened(string);
in-out property <CurrentTab> active-tab;
in-out property <[MainListModel]> empty_folder_model;
in-out property <[MainListModel]> empty_files_model;
@ -19,9 +18,6 @@ export component MainList {
values <=> empty-folder-model;
parentPathIdx: 2;
fileNameIdx: 1;
item_opened(item) => {
item_opened(item)
}
}
if root.active-tab == CurrentTab.EmptyFiles: SelectableTableView {
@ -32,9 +28,6 @@ export component MainList {
values <=> empty-files-model;
parentPathIdx: 2;
fileNameIdx: 1;
item_opened(item) => {
item_opened(item)
}
}
if root.active-tab == CurrentTab.SimilarImages: SelectableTableView {
@ -45,8 +38,5 @@ export component MainList {
values <=> similar-images-model;
parentPathIdx: 5;
fileNameIdx: 4;
item_opened(item) => {
item_opened(item)
}
}
}

View file

@ -14,11 +14,9 @@ import {ColorPalette} from "color_palette.slint";
export {Settings, Callabler}
export component MainWindow inherits Window {
callback deleted;
callback scan_stopping;
callback scan_starting(CurrentTab);
callback item_opened(string);
callback folder-choose-requested(bool);
callback folder_choose_requested(bool);
callback scan_ended(string);
min-width: 300px;
preferred-width: 800px;
@ -58,10 +56,6 @@ export component MainWindow inherits Window {
empty_folder_model <=> root.empty_folder_model;
empty_files_model <=> root.empty_files_model;
similar_images_model <=> root.similar_images_model;
item_opened(item) => {
item_opened(item)
}
}
if root.scanning: Progress {
@ -76,9 +70,6 @@ export component MainWindow inherits Window {
scanning <=> root.scanning;
active-tab <=> root.active-tab;
stop_requested <=> root.stop-requested;
deleted => {
root.deleted();
}
scan_stopping => {
text_summary.text = "Stopping scan, please wait...";
root.scan_stopping();
@ -99,8 +90,8 @@ export component MainWindow inherits Window {
bottom-panel-visibility <=> action_buttons.bottom-panel-visibility;
vertical-stretch: 0.0;
folder-choose-requested(included-directories) => {
root.folder-choose-requested(included-directories)
folder_choose_requested(included-directories) => {
root.folder_choose_requested(included-directories)
}
show_manual_add_dialog(included-directories) => {
self.included-directories = included-directories;

View file

@ -2,7 +2,7 @@ import { Button, VerticalBox , HorizontalBox, TabWidget, ListView, StandardListV
import {TypeOfOpenedItem} from "common.slint";
import {ColorPalette} from "color_palette.slint";
import {MainListModel} from "common.slint";
import {Callabler} from "callabler.slint";
export component SelectableTableView inherits Rectangle {
callback item_opened(string);
@ -100,9 +100,9 @@ export component SelectableTableView inherits Rectangle {
pointer-event(event) => {
// TODO this should be clicked by double-click
if (event.button == PointerEventButton.right && event.kind == PointerEventKind.up) {
root.item_opened(r.val[root.parentPathIdx - 1])
Callabler.item_opened(r.val[root.parentPathIdx - 1])
} else if (event.button == PointerEventButton.middle && event.kind == PointerEventKind.up) {
root.item_opened(r.val[root.parentPathIdx - 1] + "/" + r.val[root.fileNameIdx - 1])
Callabler.item_opened(r.val[root.parentPathIdx - 1] + "/" + r.val[root.fileNameIdx - 1])
}
}
}