Simplify opening
This commit is contained in:
parent
b67a98f8ca
commit
ff7cfff900
|
@ -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()
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) => {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue