rummage 4.24.1__tar.gz → 4.26__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rummage-4.24.1 → rummage-4.26}/PKG-INFO +3 -3
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/.snippets/abbr.md +1 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/about/changelog.md +13 -0
- rummage-4.26/docs/src/markdown/images/settings_search.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/search.md +12 -0
- {rummage-4.24.1 → rummage-4.26}/gui.fbp +81 -9
- {rummage-4.24.1 → rummage-4.26}/pyproject.toml +2 -2
- {rummage-4.24.1 → rummage-4.26}/requirements/project.txt +2 -2
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/__meta__.py +1 -1
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/app/custom_app.py +8 -8
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/result_lists.py +13 -4
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/about/changelog.html +13 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/about/contributing.html +2 -2
- rummage-4.26/rummage/lib/gui/data/docs/images/settings_search.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/search.html +12 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/usage.html +2 -2
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/import_settings_dialog.py +1 -1
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/rummage_dialog.py +37 -6
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/settings_dialog.py +8 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/gui.py +13 -6
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/settings/__init__.py +24 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/rumcore/__init__.py +20 -30
- rummage-4.24.1/docs/src/markdown/images/settings_search.png +0 -0
- rummage-4.24.1/rummage/lib/gui/data/docs/images/settings_search.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/.coveragerc +0 -0
- {rummage-4.24.1 → rummage-4.26}/.gitignore +0 -0
- {rummage-4.24.1 → rummage-4.26}/LICENSE.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/README.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/.snippets/links.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/.snippets/refs.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/about/contributing.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/about/license.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/extras.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/chain_button.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/chain_mode.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/chains.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/content_tab.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/file_pattern.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/files_tab.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/html_export.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/limit_search_panel.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/load_search.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/logo.svg +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/plugin_input.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/plugin_toggle.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/preview.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/regex_buttons.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/regex_tester.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/rummage.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/rummage.svg +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/save_search.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/search_replace_inputs.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/search_replace_panel.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/search_tab.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/settings_backup.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/settings_editor.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/settings_encoding.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/settings_export.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/settings_general.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/settings_history.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/settings_import.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/settings_notify.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/thunar-basic.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/thunar-conditions.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/images/thunar-custom.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/index.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/installation.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/preferences.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/sitemap.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/src/markdown/usage.md +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/theme/announce.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/theme/assets/pymdownx-extras/extra-95634471d6.css +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/theme/main.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/theme/nav.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/docs/theme/sitemap.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/hatch_build.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/requirements/docs.txt +0 -0
- {rummage-4.24.1 → rummage-4.26}/requirements/extras.txt +0 -0
- {rummage-4.24.1 → rummage-4.26}/requirements/lint.txt +0 -0
- {rummage-4.24.1 → rummage-4.26}/requirements/setup.txt +0 -0
- {rummage-4.24.1 → rummage-4.26}/requirements/test-project.txt +0 -0
- {rummage-4.24.1 → rummage-4.26}/requirements/test.txt +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/__main__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/checksum/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/checksum/sum_hashes.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/checksum/tiger.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/checksum/whirlpool.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/export_csv.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/export_html.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/fileops.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/sanitize_json.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/actions/updates.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/app/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/app/platform_window_focus.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/app/rummage_app.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/autocomplete_combo.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/collapsible_pane.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/custom_statusbar.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/date_picker.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/dock_icon.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/dynamic_lists.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/encoding_list.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/file_picker.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/load_search_list.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/pick_button.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/search_chain_list.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/search_error_list.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/time_picker.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/controls/webview.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/arrow_down.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/arrow_left.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/arrow_right.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/arrow_up.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/binary.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/doc.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/404.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/about/license.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/css/theme.css +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/extras.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/chain_button.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/chain_mode.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/chains.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/content_tab.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/file_pattern.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/files_tab.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/html_export.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/limit_search_panel.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/load_search.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/logo.svg +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/plugin_input.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/plugin_toggle.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/preview.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/regex_buttons.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/regex_tester.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/rummage.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/rummage.svg +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/save_search.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/search_replace_inputs.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/search_replace_panel.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/search_tab.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/settings_backup.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/settings_editor.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/settings_encoding.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/settings_export.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/settings_general.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/settings_history.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/settings_import.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/settings_notify.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/thunar-basic.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/thunar-conditions.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/images/thunar-custom.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/index.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/installation.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/js/theme.js +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/preferences.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/docs/sitemap.html +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/error.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/glass.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/results.css +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage.icns +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage.ico +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage_1024.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage_128.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage_16.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage_256.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage_32.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage_40.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage_48.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage_512.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/rummage_mac.png +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/data/sorttable.js +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/checksum_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/column_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/delete_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/edit_search_chain_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/error_text_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/export_settings_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/file_ext_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/generic_dialogs.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/html_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/load_search_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/msg_dialogs.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/overwrite_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/regex_test_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/save_search_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/search_chain_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/search_error_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/dialogs/support_info_dialog.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/localization/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/localization/locale/en_US/LC_MESSAGES/rummage.po +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/localization/locale/ru_RU/LC_MESSAGES/rummage.po +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/notify/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/notify/notify_linux.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/notify/notify_osx.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/notify/notify_windows.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/notify/util.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/util/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/util/colors.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/util/images.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/gui/util/png.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/rumcore/text_decode.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/rummage/lib/rumcore/util.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/tests/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/tests/test_rumcore.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/tests/test_text_decode.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/tests/test_versions.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/tests/util.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/tools/__init__.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/tools/gen_docs.py +0 -0
- {rummage-4.24.1 → rummage-4.26}/tools/gui_patch.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rummage
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.26
|
|
4
4
|
Summary: A GUI search and replace app.
|
|
5
5
|
Project-URL: Homepage, https://github.com/facelessuser/Rummage
|
|
6
6
|
Author-email: Isaac Muse <Isaac.Muse@gmail.com>
|
|
@@ -27,12 +27,12 @@ Requires-Dist: backrefs>=7.0
|
|
|
27
27
|
Requires-Dist: bracex>=3.0
|
|
28
28
|
Requires-Dist: chardet>=7.4.3
|
|
29
29
|
Requires-Dist: coloraide>=8.10
|
|
30
|
-
Requires-Dist: filelock>=3.29.
|
|
30
|
+
Requires-Dist: filelock>=3.29.7
|
|
31
31
|
Requires-Dist: markdown>=3.10.2
|
|
32
32
|
Requires-Dist: pygments>=2.19.2
|
|
33
33
|
Requires-Dist: pymdown-extensions>=11.0
|
|
34
34
|
Requires-Dist: send2trash>=2.1.0
|
|
35
|
-
Requires-Dist: wcmatch<
|
|
35
|
+
Requires-Dist: wcmatch<12.0,>=11.0
|
|
36
36
|
Requires-Dist: wxpython>=4.1.0
|
|
37
37
|
Provides-Extra: extras
|
|
38
38
|
Requires-Dist: faust-cchardet>=2.1.19; extra == 'extras'
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.26
|
|
4
|
+
|
|
5
|
+
- **NEW**: Show file sizes in proper, various increments: bytes, KB, MB, and GB.
|
|
6
|
+
- **NEW**: Add control to select file size unit types in limiter panel.
|
|
7
|
+
- **FIX**: Fix issue where directory picker for target folder to search would not start with the current, specified
|
|
8
|
+
directory, even when it is valid.
|
|
9
|
+
|
|
10
|
+
## 4.25
|
|
11
|
+
|
|
12
|
+
- **NEW**: Require `wcmatch` 11.0+.
|
|
13
|
+
- **NEW**: Add new "ZSH number range" option in settings to enable ZSH style number ranges in glob patterns (`<0-9>`).
|
|
14
|
+
- **FIX**: Fix an issue where logging would break.
|
|
15
|
+
|
|
3
16
|
## 4.24.1
|
|
4
17
|
|
|
5
18
|
- **NEW**: Fix URL handling in documentation rendering in `webview`.
|
|
Binary file
|
|
@@ -144,6 +144,18 @@ Pattern | Meaning
|
|
|
144
144
|
> If you need to escape `-` or `|`, you can put them in a sequence: `[-|]`. Remember to place `-` at the beginning of
|
|
145
145
|
> a sequence as `-` is also used to specify character ranges: `[a-z]`.
|
|
146
146
|
|
|
147
|
+
#### ZSH Number Ranges
|
|
148
|
+
|
|
149
|
+
ZSH number ranges are a simple syntax for specifying a simple range of numbers via `<0-100>`. Ends can also be omitted
|
|
150
|
+
allowing for unbounded ranges: `<->`, `<-100>`, `<0-100>`, etc. It should be noted that numbers must be whole, positive
|
|
151
|
+
numbers and manually specified numbers greater than 19 digits will be truncated.
|
|
152
|
+
|
|
153
|
+
ZSH number ranges also handle numbers padded with zeros, so `<0-9>` would match `5`, `05`, `005`, etc. You can pad your
|
|
154
|
+
match pattern with zeros (`<0010-0090>`), but it has no affect on the actual search. Input numbers will be normalized
|
|
155
|
+
(`<10-90>`) and ZSH padding number handling is always the same.
|
|
156
|
+
|
|
157
|
+
This can be enabled in [Preferences](./preferences.md#search).
|
|
158
|
+
|
|
147
159
|
#### Extended Match Syntax
|
|
148
160
|
|
|
149
161
|
In [Preferences](./preferences.md#search), you can also enable extended match patterns. Extended match patterns allow
|
|
@@ -3106,9 +3106,9 @@
|
|
|
3106
3106
|
</object>
|
|
3107
3107
|
<object class="sizeritem" expanded="false">
|
|
3108
3108
|
<property name="border">5</property>
|
|
3109
|
-
<property name="flag">
|
|
3109
|
+
<property name="flag">wxALL</property>
|
|
3110
3110
|
<property name="proportion">0</property>
|
|
3111
|
-
<object class="
|
|
3111
|
+
<object class="wxChoice" expanded="false">
|
|
3112
3112
|
<property name="BottomDockable">1</property>
|
|
3113
3113
|
<property name="LeftDockable">1</property>
|
|
3114
3114
|
<property name="RightDockable">1</property>
|
|
@@ -3122,6 +3122,7 @@
|
|
|
3122
3122
|
<property name="caption"></property>
|
|
3123
3123
|
<property name="caption_visible">1</property>
|
|
3124
3124
|
<property name="center_pane">0</property>
|
|
3125
|
+
<property name="choices">"bytes" "KB" "MB" "GB" "TB"</property>
|
|
3125
3126
|
<property name="close_button">1</property>
|
|
3126
3127
|
<property name="context_help"></property>
|
|
3127
3128
|
<property name="context_menu">1</property>
|
|
@@ -3137,8 +3138,6 @@
|
|
|
3137
3138
|
<property name="gripper">0</property>
|
|
3138
3139
|
<property name="hidden">0</property>
|
|
3139
3140
|
<property name="id">wxID_ANY</property>
|
|
3140
|
-
<property name="label">KB</property>
|
|
3141
|
-
<property name="markup">0</property>
|
|
3142
3141
|
<property name="max_size"></property>
|
|
3143
3142
|
<property name="maximize_button">0</property>
|
|
3144
3143
|
<property name="maximum_size"></property>
|
|
@@ -3146,7 +3145,7 @@
|
|
|
3146
3145
|
<property name="minimize_button">0</property>
|
|
3147
3146
|
<property name="minimum_size"></property>
|
|
3148
3147
|
<property name="moveable">1</property>
|
|
3149
|
-
<property name="name">
|
|
3148
|
+
<property name="name">m_size_type_choice</property>
|
|
3150
3149
|
<property name="pane_border">1</property>
|
|
3151
3150
|
<property name="pane_position"></property>
|
|
3152
3151
|
<property name="pane_size"></property>
|
|
@@ -3154,16 +3153,20 @@
|
|
|
3154
3153
|
<property name="pin_button">1</property>
|
|
3155
3154
|
<property name="pos"></property>
|
|
3156
3155
|
<property name="resize">Resizable</property>
|
|
3156
|
+
<property name="selection">1</property>
|
|
3157
3157
|
<property name="show">1</property>
|
|
3158
3158
|
<property name="size"></property>
|
|
3159
3159
|
<property name="style"></property>
|
|
3160
|
-
<property name="subclass"
|
|
3160
|
+
<property name="subclass">; ; forward_declare</property>
|
|
3161
3161
|
<property name="toolbar_pane">0</property>
|
|
3162
3162
|
<property name="tooltip"></property>
|
|
3163
|
+
<property name="validator_data_type"></property>
|
|
3164
|
+
<property name="validator_style">wxFILTER_NONE</property>
|
|
3165
|
+
<property name="validator_type">wxDefaultValidator</property>
|
|
3166
|
+
<property name="validator_variable"></property>
|
|
3163
3167
|
<property name="window_extra_style"></property>
|
|
3164
3168
|
<property name="window_name"></property>
|
|
3165
3169
|
<property name="window_style"></property>
|
|
3166
|
-
<property name="wrap">-1</property>
|
|
3167
3170
|
</object>
|
|
3168
3171
|
</object>
|
|
3169
3172
|
</object>
|
|
@@ -8765,12 +8768,81 @@
|
|
|
8765
8768
|
<event name="OnCheckBox">on_fullfile_toggle</event>
|
|
8766
8769
|
</object>
|
|
8767
8770
|
</object>
|
|
8771
|
+
<object class="gbsizeritem" expanded="false">
|
|
8772
|
+
<property name="border">5</property>
|
|
8773
|
+
<property name="colspan">1</property>
|
|
8774
|
+
<property name="column">0</property>
|
|
8775
|
+
<property name="flag">wxALL</property>
|
|
8776
|
+
<property name="row">4</property>
|
|
8777
|
+
<property name="rowspan">1</property>
|
|
8778
|
+
<object class="wxCheckBox" expanded="false">
|
|
8779
|
+
<property name="BottomDockable">1</property>
|
|
8780
|
+
<property name="LeftDockable">1</property>
|
|
8781
|
+
<property name="RightDockable">1</property>
|
|
8782
|
+
<property name="TopDockable">1</property>
|
|
8783
|
+
<property name="aui_layer">0</property>
|
|
8784
|
+
<property name="aui_name"></property>
|
|
8785
|
+
<property name="aui_position">0</property>
|
|
8786
|
+
<property name="aui_row">0</property>
|
|
8787
|
+
<property name="best_size"></property>
|
|
8788
|
+
<property name="bg"></property>
|
|
8789
|
+
<property name="caption"></property>
|
|
8790
|
+
<property name="caption_visible">1</property>
|
|
8791
|
+
<property name="center_pane">0</property>
|
|
8792
|
+
<property name="checked">0</property>
|
|
8793
|
+
<property name="close_button">1</property>
|
|
8794
|
+
<property name="context_help"></property>
|
|
8795
|
+
<property name="context_menu">1</property>
|
|
8796
|
+
<property name="default_pane">0</property>
|
|
8797
|
+
<property name="dock">Dock</property>
|
|
8798
|
+
<property name="dock_fixed">0</property>
|
|
8799
|
+
<property name="docking">Left</property>
|
|
8800
|
+
<property name="drag_accept_files">0</property>
|
|
8801
|
+
<property name="enabled">1</property>
|
|
8802
|
+
<property name="fg"></property>
|
|
8803
|
+
<property name="floatable">1</property>
|
|
8804
|
+
<property name="font"></property>
|
|
8805
|
+
<property name="gripper">0</property>
|
|
8806
|
+
<property name="hidden">0</property>
|
|
8807
|
+
<property name="id">wxID_ANY</property>
|
|
8808
|
+
<property name="label">ZSH Number Range</property>
|
|
8809
|
+
<property name="max_size"></property>
|
|
8810
|
+
<property name="maximize_button">0</property>
|
|
8811
|
+
<property name="maximum_size"></property>
|
|
8812
|
+
<property name="min_size"></property>
|
|
8813
|
+
<property name="minimize_button">0</property>
|
|
8814
|
+
<property name="minimum_size"></property>
|
|
8815
|
+
<property name="moveable">1</property>
|
|
8816
|
+
<property name="name">m_zsh_numrange_checkbox</property>
|
|
8817
|
+
<property name="pane_border">1</property>
|
|
8818
|
+
<property name="pane_position"></property>
|
|
8819
|
+
<property name="pane_size"></property>
|
|
8820
|
+
<property name="permission">protected</property>
|
|
8821
|
+
<property name="pin_button">1</property>
|
|
8822
|
+
<property name="pos"></property>
|
|
8823
|
+
<property name="resize">Resizable</property>
|
|
8824
|
+
<property name="show">1</property>
|
|
8825
|
+
<property name="size"></property>
|
|
8826
|
+
<property name="style"></property>
|
|
8827
|
+
<property name="subclass">; ; forward_declare</property>
|
|
8828
|
+
<property name="toolbar_pane">0</property>
|
|
8829
|
+
<property name="tooltip"></property>
|
|
8830
|
+
<property name="validator_data_type"></property>
|
|
8831
|
+
<property name="validator_style">wxFILTER_NONE</property>
|
|
8832
|
+
<property name="validator_type">wxDefaultValidator</property>
|
|
8833
|
+
<property name="validator_variable"></property>
|
|
8834
|
+
<property name="window_extra_style"></property>
|
|
8835
|
+
<property name="window_name"></property>
|
|
8836
|
+
<property name="window_style"></property>
|
|
8837
|
+
<event name="OnCheckBox">on_zsh_numrange_toggle</event>
|
|
8838
|
+
</object>
|
|
8839
|
+
</object>
|
|
8768
8840
|
<object class="gbsizeritem" expanded="false">
|
|
8769
8841
|
<property name="border">5</property>
|
|
8770
8842
|
<property name="colspan">2</property>
|
|
8771
8843
|
<property name="column">0</property>
|
|
8772
8844
|
<property name="flag">wxEXPAND | wxALL</property>
|
|
8773
|
-
<property name="row">
|
|
8845
|
+
<property name="row">5</property>
|
|
8774
8846
|
<property name="rowspan">1</property>
|
|
8775
8847
|
<object class="wxStaticLine" expanded="false">
|
|
8776
8848
|
<property name="BottomDockable">1</property>
|
|
@@ -8832,7 +8904,7 @@
|
|
|
8832
8904
|
<property name="colspan">2</property>
|
|
8833
8905
|
<property name="column">0</property>
|
|
8834
8906
|
<property name="flag">wxEXPAND</property>
|
|
8835
|
-
<property name="row">
|
|
8907
|
+
<property name="row">6</property>
|
|
8836
8908
|
<property name="rowspan">1</property>
|
|
8837
8909
|
<object class="wxGridBagSizer" expanded="false">
|
|
8838
8910
|
<property name="empty_cell_size"></property>
|
|
@@ -153,7 +153,7 @@ legacy_tox_ini = """
|
|
|
153
153
|
[tox]
|
|
154
154
|
skipsdist=true
|
|
155
155
|
envlist=
|
|
156
|
-
{
|
|
156
|
+
{py310,py311,py312,py313,py314},
|
|
157
157
|
lint
|
|
158
158
|
|
|
159
159
|
[testenv]
|
|
@@ -181,6 +181,6 @@ deps =
|
|
|
181
181
|
-rrequirements/docs.txt
|
|
182
182
|
commands =
|
|
183
183
|
{envbindir}/zensical build -f zensical.yml --clean
|
|
184
|
-
pyspelling -j
|
|
184
|
+
pyspelling -j 8
|
|
185
185
|
{envpython} {toxinidir}/tools/gen_docs.py --verbose --test
|
|
186
186
|
"""
|
|
@@ -189,7 +189,7 @@ def parse_version(ver):
|
|
|
189
189
|
|
|
190
190
|
|
|
191
191
|
# (major, minor, micro, release type, pre-release build, post-release build, development-release)
|
|
192
|
-
__version_info__ = Version(4,
|
|
192
|
+
__version_info__ = Version(4, 26, 0, 'final')
|
|
193
193
|
__version__ = __version_info__._get_canonical()
|
|
194
194
|
__app__ = "Rummage"
|
|
195
195
|
__status__ = __version_info__[3]
|
|
@@ -297,9 +297,9 @@ class CustomLog(wx.Log):
|
|
|
297
297
|
self.file_lock = FileLock(self.file_name + '.lock')
|
|
298
298
|
|
|
299
299
|
try:
|
|
300
|
-
with self.file_lock
|
|
301
|
-
with open(self.file_name, "w",
|
|
302
|
-
|
|
300
|
+
with self.file_lock:
|
|
301
|
+
with open(self.file_name, "w", encoding='utf-8', errors='strict'):
|
|
302
|
+
pass
|
|
303
303
|
except Exception:
|
|
304
304
|
self.file_name = None
|
|
305
305
|
|
|
@@ -312,7 +312,7 @@ class CustomLog(wx.Log):
|
|
|
312
312
|
|
|
313
313
|
try:
|
|
314
314
|
if self.file_name is not None:
|
|
315
|
-
with self.file_lock
|
|
315
|
+
with self.file_lock:
|
|
316
316
|
with open(self.file_name, 'a', encoding='utf-8', errors='strict') as f:
|
|
317
317
|
f.write(msg)
|
|
318
318
|
else:
|
|
@@ -389,9 +389,9 @@ class CustomLogGui(wx.LogGui):
|
|
|
389
389
|
self.debug = debug
|
|
390
390
|
|
|
391
391
|
try:
|
|
392
|
-
with self.file_lock
|
|
393
|
-
with open(self.file_name, "w",
|
|
394
|
-
|
|
392
|
+
with self.file_lock:
|
|
393
|
+
with open(self.file_name, "w", encoding='utf-8', errors='strict'):
|
|
394
|
+
pass
|
|
395
395
|
except Exception:
|
|
396
396
|
self.file_name = None
|
|
397
397
|
|
|
@@ -402,7 +402,7 @@ class CustomLogGui(wx.LogGui):
|
|
|
402
402
|
|
|
403
403
|
try:
|
|
404
404
|
if self.file_name is not None:
|
|
405
|
-
with self.file_lock
|
|
405
|
+
with self.file_lock:
|
|
406
406
|
with open(self.file_name, 'a', encoding='utf-8', errors='strict') as f:
|
|
407
407
|
f.write(msg)
|
|
408
408
|
else:
|
|
@@ -20,7 +20,6 @@ IN THE SOFTWARE.
|
|
|
20
20
|
"""
|
|
21
21
|
import time
|
|
22
22
|
import wx
|
|
23
|
-
import decimal
|
|
24
23
|
import os
|
|
25
24
|
import functools
|
|
26
25
|
from .dynamic_lists import DynamicList, USE_SAMPLE_SIZE
|
|
@@ -324,7 +323,7 @@ class ResultFileList(CommonOperationsMixin, DynamicList):
|
|
|
324
323
|
os.path.basename(obj.name),
|
|
325
324
|
0,
|
|
326
325
|
obj.ext,
|
|
327
|
-
|
|
326
|
+
obj.size,
|
|
328
327
|
os.path.dirname(obj.name),
|
|
329
328
|
'',
|
|
330
329
|
obj.modified,
|
|
@@ -342,7 +341,7 @@ class ResultFileList(CommonOperationsMixin, DynamicList):
|
|
|
342
341
|
os.path.basename(obj.info.name),
|
|
343
342
|
1,
|
|
344
343
|
obj.info.ext,
|
|
345
|
-
|
|
344
|
+
obj.info.size,
|
|
346
345
|
os.path.dirname(obj.info.name),
|
|
347
346
|
obj.info.encoding,
|
|
348
347
|
obj.info.modified,
|
|
@@ -374,7 +373,17 @@ class ResultFileList(CommonOperationsMixin, DynamicList):
|
|
|
374
373
|
if not absolute:
|
|
375
374
|
item = self.itemIndexMap[item]
|
|
376
375
|
if real == FILE_SIZE:
|
|
377
|
-
|
|
376
|
+
s = self.itemDataMap[item][FILE_SIZE]
|
|
377
|
+
if s < 1e3:
|
|
378
|
+
return f"{s:d} bytes"
|
|
379
|
+
elif s < 1e6:
|
|
380
|
+
return f'{s / 1e3:.2f} KB'
|
|
381
|
+
elif s < 1e9:
|
|
382
|
+
return f'{s / 1e6:.2f} MB'
|
|
383
|
+
elif s < 1e12:
|
|
384
|
+
return f'{s / 1e9:.2f} GB'
|
|
385
|
+
else:
|
|
386
|
+
return f'{s / 1e12:.2f} TB'
|
|
378
387
|
elif real in (FILE_MOD, FILE_CRE):
|
|
379
388
|
if self.international:
|
|
380
389
|
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(self.itemDataMap[item][real]))
|
|
@@ -25,6 +25,19 @@
|
|
|
25
25
|
|
|
26
26
|
<!-- Table of Content (Don't show for static sites) -->
|
|
27
27
|
<h1 id="changelog">Changelog</h1>
|
|
28
|
+
<h2 id="426">4.26</h2>
|
|
29
|
+
<ul>
|
|
30
|
+
<li><strong>NEW</strong>: Show file sizes in proper, various increments: bytes, KB, MB, and GB.</li>
|
|
31
|
+
<li><strong>NEW</strong>: Add control to select file size unit types in limiter panel.</li>
|
|
32
|
+
<li><strong>FIX</strong>: Fix issue where directory picker for target folder to search would not start with the current, specified
|
|
33
|
+
directory, even when it is valid.</li>
|
|
34
|
+
</ul>
|
|
35
|
+
<h2 id="425">4.25</h2>
|
|
36
|
+
<ul>
|
|
37
|
+
<li><strong>NEW</strong>: Require <code>wcmatch</code> 11.0+.</li>
|
|
38
|
+
<li><strong>NEW</strong>: Add new "<abbr title="Z Shell">ZSH</abbr> number range" option in settings to enable <abbr title="Z Shell">ZSH</abbr> style number ranges in glob patterns (<code><0-9></code>).</li>
|
|
39
|
+
<li><strong>FIX</strong>: Fix an issue where logging would break.</li>
|
|
40
|
+
</ul>
|
|
28
41
|
<h2 id="4241">4.24.1</h2>
|
|
29
42
|
<ul>
|
|
30
43
|
<li><strong>NEW</strong>: Fix URL handling in documentation rendering in <code>webview</code>.</li>
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<div class="__toc_wrapper"><span class="__toc_icon"></span>
|
|
32
32
|
<div class="__toc_content">
|
|
33
33
|
<ul class="__toc_list">
|
|
34
|
-
<li class="__toc_level_2"><a href="#contributing
|
|
34
|
+
<li class="__toc_level_2"><a href="#contributing-support">Contributing & Support</a></li>
|
|
35
35
|
<ul class="__toc_list_2">
|
|
36
36
|
|
|
37
37
|
<li class="__toc_level_3"><a href="#overview">Overview</a></li>
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
</ul>
|
|
71
71
|
</div>
|
|
72
72
|
</div>
|
|
73
|
-
<h1 id="contributing
|
|
73
|
+
<h1 id="contributing-support">Contributing & Support</h1>
|
|
74
74
|
<h2 id="overview">Overview</h2>
|
|
75
75
|
<p>Contribution from the community is encouraged and can be done in a variety of ways:</p>
|
|
76
76
|
<ul>
|
|
Binary file
|
|
@@ -59,6 +59,10 @@
|
|
|
59
59
|
<li class="__toc_level_5"><a href="#basic-wildcard-syntax">Basic Wildcard syntax</a></li>
|
|
60
60
|
<ul class="__toc_list_5">
|
|
61
61
|
|
|
62
|
+
</ul>
|
|
63
|
+
<li class="__toc_level_5"><a href="#zsh-number-ranges">ZSH Number Ranges</a></li>
|
|
64
|
+
<ul class="__toc_list_5">
|
|
65
|
+
|
|
62
66
|
</ul>
|
|
63
67
|
<li class="__toc_level_5"><a href="#extended-match-syntax">Extended Match Syntax</a></li>
|
|
64
68
|
<ul class="__toc_list_5">
|
|
@@ -345,6 +349,14 @@ which we will always be included.</p>
|
|
|
345
349
|
<p>If you need to escape <code>-</code> or <code>|</code>, you can put them in a sequence: <code>[-|]</code>. Remember to place <code>-</code> at the beginning of
|
|
346
350
|
a sequence as <code>-</code> is also used to specify character ranges: <code>[a-z]</code>.</p>
|
|
347
351
|
</div>
|
|
352
|
+
<h4 id="zsh-number-ranges"><abbr title="Z Shell">ZSH</abbr> Number Ranges</h4>
|
|
353
|
+
<p><abbr title="Z Shell">ZSH</abbr> number ranges are a simple syntax for specifying a simple range of numbers via <code><0-100></code>. Ends can also be omitted
|
|
354
|
+
allowing for unbounded ranges: <code><-></code>, <code><-100></code>, <code><0-100></code>, etc. It should be noted that numbers must be whole, positive
|
|
355
|
+
numbers and manually specified numbers greater than 19 digits will be truncated.</p>
|
|
356
|
+
<p><abbr title="Z Shell">ZSH</abbr> number ranges also handle numbers padded with zeros, so <code><0-9></code> would match <code>5</code>, <code>05</code>, <code>005</code>, etc. You can pad your
|
|
357
|
+
match pattern with zeros (<code><0010-0090></code>), but it has no affect on the actual search. Input numbers will be normalized
|
|
358
|
+
(<code><10-90></code>) and <abbr title="Z Shell">ZSH</abbr> padding number handling is always the same.</p>
|
|
359
|
+
<p>This can be enabled in <a href="./preferences.html#search">Preferences</a>.</p>
|
|
348
360
|
<h4 id="extended-match-syntax">Extended Match Syntax</h4>
|
|
349
361
|
<p>In <a href="./preferences.html#search">Preferences</a>, you can also enable extended match patterns. Extended match patterns allow
|
|
350
362
|
you to provide pattern lists to provide more advanced logic.</p>
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
<ul class="__toc_list_3">
|
|
43
43
|
|
|
44
44
|
</ul>
|
|
45
|
-
<li class="__toc_level_3"><a href="#searching
|
|
45
|
+
<li class="__toc_level_3"><a href="#searching-replacing">Searching & Replacing</a></li>
|
|
46
46
|
<ul class="__toc_list_3">
|
|
47
47
|
|
|
48
48
|
<li class="__toc_level_4"><a href="#configuring-text-search">Configuring Text Search</a></li>
|
|
@@ -114,7 +114,7 @@ major and minor Python version to the end:</p>
|
|
|
114
114
|
<a href="./installation.html#running-in-anaconda">Running in Anaconda</a>).</p>
|
|
115
115
|
<div class="highlight"><pre><span></span><code>pythonw<span class="w"> </span>-m<span class="w"> </span>rummage
|
|
116
116
|
</code></pre></div>
|
|
117
|
-
<h2 id="searching
|
|
117
|
+
<h2 id="searching-replacing">Searching & Replacing</h2>
|
|
118
118
|
<p><img alt="Search Tab" src="images/search_tab.png" /></p>
|
|
119
119
|
<p>Search and replaces are configured in the <strong>Search</strong> tab. The search tab can essentially be broken up into two sections:
|
|
120
120
|
text search configuration and file search configuration.</p>
|
|
@@ -39,7 +39,7 @@ class ImportSettingsDialog(gui.ImportSettingsDialog):
|
|
|
39
39
|
"notify_enabled", "single_instance", "extmatch",
|
|
40
40
|
"brace_expansion", "file_case_sensitive", "full_exclude_path", "full_file_path",
|
|
41
41
|
"globstar", "international_time", "matchbase", "minusnegate", "alt_list_color",
|
|
42
|
-
"autocomplete"
|
|
42
|
+
"autocomplete", "zsh_numrange"
|
|
43
43
|
)
|
|
44
44
|
STRING = ("backup_ext", "backup_folder", "term_notifier", "editor", "notify_method", "notify_sound")
|
|
45
45
|
INTEGER = ("backup_type", "regex_mode", "regex_version", "patten_limit")
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Rummage Dialog.
|
|
3
3
|
|
|
4
4
|
Licensed under MIT
|
|
5
|
-
Copyright (c) 2011 -
|
|
5
|
+
Copyright (c) 2011 - 2026 Isaac Muse <isaacmuse@gmail.com>
|
|
6
6
|
|
|
7
7
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
8
8
|
documentation files (the "Software"), to deal in the Software without restriction, including without limitation
|
|
@@ -68,7 +68,6 @@ from ... import __meta__
|
|
|
68
68
|
from ... import rumcore
|
|
69
69
|
from .. import util
|
|
70
70
|
from ..util.colors import Color
|
|
71
|
-
import decimal
|
|
72
71
|
if rumcore.REGEX_SUPPORT:
|
|
73
72
|
from backrefs import bregex
|
|
74
73
|
else:
|
|
@@ -328,6 +327,7 @@ class RummageArgs:
|
|
|
328
327
|
self.full_exclude_path = False
|
|
329
328
|
self.full_file_path = False
|
|
330
329
|
self.globstar = False
|
|
330
|
+
self.zsh_numrange = False
|
|
331
331
|
self.matchbase = False
|
|
332
332
|
self.minusnegate = True
|
|
333
333
|
self.encoding_options = {}
|
|
@@ -817,6 +817,9 @@ class RummageFrame(gui.RummageFrame):
|
|
|
817
817
|
)
|
|
818
818
|
)
|
|
819
819
|
self.m_size_text.SetValue(Settings.get_search_setting("size_limit_string", "1000"))
|
|
820
|
+
self.m_size_type_choice.SetStringSelection(
|
|
821
|
+
Settings.get_search_setting("size_compare_type", "KB")
|
|
822
|
+
)
|
|
820
823
|
|
|
821
824
|
self.m_case_checkbox.SetValue(not Settings.get_search_setting("ignore_case_toggle", False))
|
|
822
825
|
self.m_dotmatch_checkbox.SetValue(Settings.get_search_setting("dotall_toggle", False))
|
|
@@ -1217,6 +1220,9 @@ class RummageFrame(gui.RummageFrame):
|
|
|
1217
1220
|
if args.brace_expansion:
|
|
1218
1221
|
flags |= rumcore.BRACE
|
|
1219
1222
|
|
|
1223
|
+
if args.zsh_numrange:
|
|
1224
|
+
flags |= rumcore.NUMRANGE
|
|
1225
|
+
|
|
1220
1226
|
if args.file_case_sensitive:
|
|
1221
1227
|
flags |= rumcore.FILECASE
|
|
1222
1228
|
|
|
@@ -1401,6 +1407,7 @@ class RummageFrame(gui.RummageFrame):
|
|
|
1401
1407
|
args.globstar = bool(Settings.get_globstar())
|
|
1402
1408
|
args.matchbase = bool(Settings.get_matchbase())
|
|
1403
1409
|
args.minusnegate = bool(Settings.get_minusnegate())
|
|
1410
|
+
args.zsh_numrange = bool(Settings.get_zsh_numrange())
|
|
1404
1411
|
|
|
1405
1412
|
args.filepattern = self.m_filematch_textbox.Value
|
|
1406
1413
|
if self.m_fileregex_checkbox.GetValue():
|
|
@@ -1413,8 +1420,17 @@ class RummageFrame(gui.RummageFrame):
|
|
|
1413
1420
|
|
|
1414
1421
|
cmp_size = self.m_logic_choice.GetSelection()
|
|
1415
1422
|
if cmp_size:
|
|
1416
|
-
size =
|
|
1417
|
-
|
|
1423
|
+
size = int(self.m_size_text.GetValue())
|
|
1424
|
+
size_type = self.m_size_type_choice.GetStringSelection()
|
|
1425
|
+
if size_type == "KB":
|
|
1426
|
+
size *= 1e3
|
|
1427
|
+
elif size_type == "MB":
|
|
1428
|
+
size *= 1e6
|
|
1429
|
+
elif size_type == "GB":
|
|
1430
|
+
size *= 1e9
|
|
1431
|
+
elif size_type == "TB":
|
|
1432
|
+
size *= 1e12
|
|
1433
|
+
args.size_compare = (LIMIT_COMPARE[cmp_size], size)
|
|
1418
1434
|
else:
|
|
1419
1435
|
args.size_compare = None
|
|
1420
1436
|
cmp_modified = self.m_modified_choice.GetSelection()
|
|
@@ -1568,7 +1584,20 @@ class RummageFrame(gui.RummageFrame):
|
|
|
1568
1584
|
strings.append(("force_encode", self.m_force_encode_choice.GetStringSelection()))
|
|
1569
1585
|
|
|
1570
1586
|
if eng_size != "any":
|
|
1571
|
-
|
|
1587
|
+
size_limit = int(self.m_size_text.GetValue())
|
|
1588
|
+
size_type = self.m_size_type_choice.GetStringSelection()
|
|
1589
|
+
if size_type == 'KB':
|
|
1590
|
+
size_limit *= 1e3
|
|
1591
|
+
elif size_type == "MB":
|
|
1592
|
+
size_limit *= 1e6
|
|
1593
|
+
elif size_type == "GB":
|
|
1594
|
+
size_limit *= 1e9
|
|
1595
|
+
elif size_type == "TB":
|
|
1596
|
+
size_limit *= 1e12
|
|
1597
|
+
strings += [
|
|
1598
|
+
("size_limit_string", str(size_limit)),
|
|
1599
|
+
("size_compare_type", size_type)
|
|
1600
|
+
]
|
|
1572
1601
|
if eng_mod != "on any":
|
|
1573
1602
|
strings += [
|
|
1574
1603
|
("modified_date_string", self.m_modified_date_picker.GetValue().Format("%m/%d/%Y")),
|
|
@@ -2154,7 +2183,9 @@ class RummageFrame(gui.RummageFrame):
|
|
|
2154
2183
|
def on_searchin_changed(self):
|
|
2155
2184
|
"""Callback for when a directory changes via the `m_searchin_text` control."""
|
|
2156
2185
|
|
|
2157
|
-
self.
|
|
2186
|
+
target = self.m_searchin_text.GetValue()
|
|
2187
|
+
self.SetTitle(target)
|
|
2188
|
+
self.m_searchin_dir_picker.target = target
|
|
2158
2189
|
|
|
2159
2190
|
def on_save_search(self, event):
|
|
2160
2191
|
"""Open a dialog to save a search for later use."""
|
|
@@ -123,6 +123,7 @@ class SettingsDialog(webview.WebViewMixin, gui.SettingsDialog):
|
|
|
123
123
|
self.m_brace_checkbox.SetValue(Settings.get_brace_expansion())
|
|
124
124
|
self.m_case_checkbox.SetValue(Settings.get_file_case_sensitive())
|
|
125
125
|
self.m_fullpath_checkbox.SetValue(Settings.get_full_exclude_path())
|
|
126
|
+
self.m_zsh_numrange_checkbox.SetValue(Settings.get_zsh_numrange())
|
|
126
127
|
self.m_fullfile_checkbox.SetValue(Settings.get_full_file_path())
|
|
127
128
|
self.m_globstar_checkbox.SetValue(Settings.get_globstar())
|
|
128
129
|
self.m_matchbase_checkbox.SetValue(Settings.get_matchbase())
|
|
@@ -264,6 +265,7 @@ class SettingsDialog(webview.WebViewMixin, gui.SettingsDialog):
|
|
|
264
265
|
self.BRACES = _("Brace expansion")
|
|
265
266
|
self.CASE = _("Case sensitive")
|
|
266
267
|
self.FULL_PATH = _("Full path directory match")
|
|
268
|
+
self.ZSH_NUMRANGE = _("ZSH number range")
|
|
267
269
|
self.FULL_FILE = _("Full path file match")
|
|
268
270
|
self.GLOBSTAR = _("Globstar (full path)")
|
|
269
271
|
self.MATCHBASE = _("Match base (full path)")
|
|
@@ -339,6 +341,7 @@ class SettingsDialog(webview.WebViewMixin, gui.SettingsDialog):
|
|
|
339
341
|
self.m_brace_checkbox.SetLabel(self.BRACES)
|
|
340
342
|
self.m_case_checkbox.SetLabel(self.CASE)
|
|
341
343
|
self.m_fullpath_checkbox.SetLabel(self.FULL_PATH)
|
|
344
|
+
self.m_zsh_numrange_checkbox.SetLabel(self.ZSH_NUMRANGE)
|
|
342
345
|
self.m_fullfile_checkbox.SetLabel(self.FULL_FILE)
|
|
343
346
|
self.m_globstar_checkbox.SetLabel(self.GLOBSTAR)
|
|
344
347
|
self.m_matchbase_checkbox.SetLabel(self.MATCHBASE)
|
|
@@ -660,6 +663,11 @@ class SettingsDialog(webview.WebViewMixin, gui.SettingsDialog):
|
|
|
660
663
|
|
|
661
664
|
Settings.set_full_exclude_path(self.m_fullpath_checkbox.GetValue())
|
|
662
665
|
|
|
666
|
+
def on_zsh_numrange_toggle(self, event):
|
|
667
|
+
"""Handle ZSH number range toggle."""
|
|
668
|
+
|
|
669
|
+
Settings.set_zsh_numrange(self.m_zsh_numrange_checkbox.GetValue())
|
|
670
|
+
|
|
663
671
|
def on_fullfile_toggle(self, event):
|
|
664
672
|
"""Handle full file toggle."""
|
|
665
673
|
|