Skip to content

Commit 85f40d9

Browse files
authored
Big UI changes, New Tutorial, fuzzy search, consider case
- Name now has different modes: is, contains, ends with, begins with, is similar to, doesn't contain and in RegEx - Merged name contains - Added new consider case checkbox - Updated README.md for new UI - Removed terminal command - Improved Tutorial - Fixed font in duplicated settings - Updated Tutorial frame - Updated Tutorial content - Fixed wrong brackets in name and name contains check - Updated README.md to the recent UI changes - Updated large info message box now using QTextBrowsers instead of QLabel
1 parent c2eb7c5 commit 85f40d9

File tree

8 files changed

+528
-341
lines changed

8 files changed

+528
-341
lines changed

FF_About_UI.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ def generate_link_button(displayed_text, domain):
164164

165165
# Tutorial
166166
tutorial_action = QAction("&Tutorial", about_window)
167-
tutorial_action.triggered.connect(lambda: FF_Additional_UI.welcome_popups(parent, force_popups=True))
167+
tutorial_action.triggered.connect(lambda: FF_Additional_UI.Tutorial(parent, force_tutorial=True))
168168
help_menu.addAction(tutorial_action)
169169

170170
# Debug

FF_Additional_UI.py

Lines changed: 249 additions & 132 deletions
Large diffs are not rendered by default.

FF_Duplicated.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,7 @@ def __init__(self, parent, search_path, matched_list, cache_file, to_be_marked_f
8282
self.title_label.setText("Duplicated files in results of search in:"
8383
f"\n{FF_Files.display_path(search_path, 45)}")
8484
self.title_label.setToolTip(search_path)
85-
# Make the Font bigger
86-
font = self.title_label.font()
87-
font.setBold(True)
88-
font.setPixelSize(18)
89-
self.title_label.setFont(font)
85+
self.title_label.setFont(FF_Additional_UI.BOLD_QT_FONT)
9086
# Adjust size
9187
self.title_label.adjustSize()
9288
self.Duplicated_Settings_Layout.addWidget(self.title_label)
@@ -288,7 +284,7 @@ class Events(QObject):
288284

289285
# Tutorial
290286
tutorial_action = QAction("&Tutorial", self.Duplicated_Settings)
291-
tutorial_action.triggered.connect(lambda: FF_Additional_UI.welcome_popups(parent, force_popups=True))
287+
tutorial_action.triggered.connect(lambda: FF_Additional_UI.Tutorial(parent, force_tutorial=True))
292288
help_menu.addAction(tutorial_action)
293289

294290
# Debug

FF_Files.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from PySide6.QtCore import QDate, Qt
2020

2121
# Versions
22-
VERSION: str = "25-apr-2025"
22+
VERSION: str = "7-june-2025"
2323
VERSION_SHORT: str = "2.0"
2424
# Versions of file formats
2525
FF_FILTER_VERSION = 2
@@ -109,7 +109,7 @@
109109
"double_click_action": "View file in Finder/File Explorer"}
110110

111111
DEFAULT_FILTER = {"VERSION": FF_FILTER_VERSION,
112-
"name": "", "name_contains": "",
112+
"name": "", "name_specifier": "contains:", "consider_case": False, "similarity": 60,
113113
"file_types": FILE_FORMATS.keys(),
114114
"file_extension": "", "file_type_mode": "predefined",
115115
"directory": USER_FOLDER,

FF_Main_UI.py

Lines changed: 122 additions & 103 deletions
Large diffs are not rendered by default.

FF_Menubar.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ def __init__(
241241

242242
# Tutorial
243243
tutorial_action = QAction("&Tutorial", self.parent)
244-
tutorial_action.triggered.connect(lambda: FF_Additional_UI.welcome_popups(self.parent, force_popups=True))
244+
tutorial_action.triggered.connect(lambda: FF_Additional_UI.Tutorial(self.parent, force_tutorial=True))
245245
self.help_menu.addAction(tutorial_action)
246246

247247
if window == "search":
@@ -679,16 +679,6 @@ def file_info(self):
679679
else:
680680
filetype = "Unknown"
681681

682-
# Display file path nicely
683-
if not len(file) < 105:
684-
file_path = ""
685-
last_step = 0
686-
for part in range(0, len(file), 100):
687-
file_path = file_path + "\n" + file[last_step: part]
688-
last_step = part
689-
else:
690-
file_path = file
691-
692682
# Get dates
693683
# Date modified
694684
m_date = ctime(os.path.getmtime(file))
@@ -707,7 +697,7 @@ def file_info(self):
707697
FF_Additional_UI.PopUps.show_info_messagebox(
708698
f"Information about: {FF_Files.display_path(file, 30)}",
709699
f"\n"
710-
f"Path: {file_path}\n"
700+
f"Path:\n{file}\n"
711701
f"\n"
712702
f"Type: {filetype}\n"
713703
f"File Name: {os.path.basename(file)}\n"

FF_Search.py

Lines changed: 115 additions & 68 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,27 @@ Or you could:
4747

4848
- **Basic**
4949
<p align="left">
50-
<img src="https://github.com/Pixel-Master/Pixel-Master.github.io/blob/main/File-Find/screenshots/File%20Find%20screenshot%20white.png?raw=true" height="250">
50+
<img src="https://github.com/Pixel-Master/Pixel-Master.github.io/blob/main/File-Find/screenshots/File%20Find%20screenshot%20white.png?raw=true" height="250"></p>
5151

52-
* **Name**: Input needs to match the name of a file exactly, ignoring case. Also supports unix shell-style wildcards, which are not the same as regular expressions (also ignoring case).
53-
* **Name contains**: The name of a file must contain input, ignoring case.
54-
* **File Type**: Select groups of files types that should be included in search results.
55-
* **Directory**: The directory tree to search in. Excluding subdirectory content is currently not possibly
52+
* **Name**: Multiple different modes can be selected.
53+
* Name **is**: Input needs to match the file name exactly. Also supports unix shell-style wildcards, which are not the same as regular expressions.
54+
* Usage:
55+
56+
| Pattern | Meaning |
57+
|---------|----------------------------------|
58+
| * | matches everything |
59+
| ? | matches any single character |
60+
| [seq] | matches any character in seq |
61+
| [!seq] | matches any character not in seq |
62+
63+
* Name **contains**: The file name must contain input.
64+
* Name **begins with**: The file name must start with the input
65+
* Name **ends with**: The file name (without the file ending) must end with input. So `mple` would match with `Example.txt`
66+
* Name **is similar to**: Performs a fuzzy search. So `amp` matches with `Example.txt`. Matching percentage can be set separately.
67+
* Name **doesn't contain**: Input must not be included in its entirety in the file name.
68+
* Name **in RegEx**: Does a regular expression pattern matching. For a detailed explanation refer to: https://regular-expressions.info
69+
* **File Types**: Select groups of file types that should be included in search results. Click `Custom` to change selection mode and input a file type (e.g. pdf) without the `.` that needs to match the file ending of a file exactly, ignoring case. Multiple possible file types can be separated with a semicolon (for example: `png;jpg;heic`) Click `Predefined` to switch back. Only the currently visible mode will be taken into account.
70+
* **Directory**: The directory to search in. Excluding subdirectory is possible in `Advanced`
5671

5772

5873

@@ -63,28 +78,31 @@ Or you could:
6378

6479
* **File contains**: Allows you to search in files. Input must be in the file content. This option can take really long. Your input is case-sensitive.
6580
* **Date created and modified**: Specify a date range for the date the file has been created / modified, leave at default to ignore.
66-
* **File size**: Input specifies file size in a range from min to max. Select the unit (Byte, Megabyte, Gigabyte...) on the right. Select "No Limit" to only set a minimum or maximum value.
81+
* **File size**: Input specifies file size in a range from min to max. Select the unit (Byte, Megabyte, Gigabyte...) on the right. Select `No Limit` to only set a minimum or maximum value.
6782

6883

6984
- **Advanced**
7085

7186
<img src="https://github.com/Pixel-Master/Pixel-Master.github.io/blob/main/File-Find/screenshots/advanced.png?raw=true" height="250">
7287

73-
* **Search in system files**: Toggle to include files in the system and library folders.
74-
* **File extension**: Input needs to match the file extension (file type) without the ".", ignoring case.
88+
* **Limit folder depth**: Toggle to include/exclude subdirectories or their subdirectories. Entering a custom number sets the maximum amount of subdirectories in which files are still included.
89+
* `0` or `No subfolders` means that ony the files directly in the specified directory will be included
90+
* `1` means only the files in the folders that are directly in the specified dir will be considered...
7591
* **Only search for folders or files**: Toggle to only include folders or files in the search results.
92+
* **Search in system files**: Toggle to include files in the system and library folders.
7693

7794
- **Sorting**
7895

7996
<img src="https://github.com/Pixel-Master/Pixel-Master.github.io/blob/main/File-Find/screenshots/sorting.png?raw=true" height="250">
8097

81-
* **None** (fastest)
82-
* **File size**
83-
* **File name**
84-
* **Date modified**
85-
* **Date created**
86-
* **Path**
87-
* **Reverse Sort**: Reverse the sorted search results.
98+
* **Sorting**: Possible sorting options:
99+
* **None** (fastest)
100+
* **File size**
101+
* **File name**
102+
* **Date modified**
103+
* **Date created**
104+
* **Path**: Sorting Path alphabetically
105+
* **Reverse Sort**: Reverse the sorted search results (last comes first). Only appears if a search option is selected.
88106

89107
### Dark / Light mode
90108

@@ -242,12 +260,12 @@ Q: **Why does File Find ask for permission for Contacts, Calenders, Photos, etc.
242260

243261
A: File Find scans the entire specified directory, even if files are excluded they are scanned first and then sorted out.
244262
Your photos, Calendar data, Contacts etc. are stored in a library folder, which means that File Find scans them.
245-
File Find does not connect to the internet, everything stays on your machine. You can also press "Do not allow", the associated files will not appear in your searches.
263+
File Find does not connect to the internet, everything stays on your machine. You can also press `Do not allow`, the associated files will not appear in your searches.
246264

247265
Q: **Why does File Find ask for permission for Downloads, Desktop, Documents, etc...?**
248266

249267
A: On macOS if an app scans a directory this popup will automatically appear.
250-
If you press "Don't allow", File Find will still be able to scan those files,
268+
If you press `Don't allow`, File Find will still be able to scan those files,
251269
but you are not going to be able to save searches in those directories
252270

253271
Q: **Does File Find connect to the Internet?**

0 commit comments

Comments
 (0)