rummage 4.26.4__tar.gz → 4.27__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.26.4 → rummage-4.27}/PKG-INFO +10 -10
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/about/changelog.md +7 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/preferences.md +7 -7
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/usage.md +1 -2
- {rummage-4.26.4 → rummage-4.27}/hatch_build.py +1 -1
- {rummage-4.26.4 → rummage-4.27}/pyproject.toml +2 -2
- rummage-4.27/requirements/docs.txt +7 -0
- rummage-4.27/requirements/extras.txt +2 -0
- {rummage-4.26.4 → rummage-4.27}/requirements/project.txt +5 -5
- rummage-4.27/requirements/test-project.txt +4 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/__meta__.py +1 -1
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/about/changelog.html +7 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/extras.html +18 -18
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/preferences.html +22 -22
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/search.html +1 -1
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/usage.html +15 -16
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/rummage_dialog.py +2 -2
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/settings_dialog.py +2 -2
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/util/__init__.py +16 -0
- {rummage-4.26.4 → rummage-4.27}/tools/gen_docs.py +8 -2
- rummage-4.26.4/docs/theme/assets/pymdownx-extras/extra-95634471d6.css +0 -2
- rummage-4.26.4/docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js +0 -4
- rummage-4.26.4/docs/theme/main.html +0 -17
- rummage-4.26.4/requirements/docs.txt +0 -4
- rummage-4.26.4/requirements/extras.txt +0 -2
- rummage-4.26.4/requirements/test-project.txt +0 -3
- {rummage-4.26.4 → rummage-4.27}/.coveragerc +0 -0
- {rummage-4.26.4 → rummage-4.27}/.gitignore +0 -0
- {rummage-4.26.4 → rummage-4.27}/LICENSE.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/README.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/.snippets/abbr.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/.snippets/links.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/.snippets/refs.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/about/contributing.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/about/license.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/extras.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/chain_button.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/chain_mode.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/chains.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/content_tab.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/file_pattern.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/files_tab.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/html_export.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/limit_search_panel.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/load_search.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/logo.svg +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/plugin_input.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/plugin_toggle.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/preview.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/regex_buttons.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/regex_tester.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/rummage.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/rummage.svg +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/save_search.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/search_replace_inputs.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/search_replace_panel.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/search_tab.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/settings_backup.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/settings_editor.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/settings_encoding.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/settings_export.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/settings_general.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/settings_history.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/settings_import.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/settings_notify.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/settings_search.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/thunar-basic.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/thunar-conditions.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/images/thunar-custom.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/index.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/installation.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/search.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/src/markdown/sitemap.md +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/theme/announce.html +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/theme/nav.html +0 -0
- {rummage-4.26.4 → rummage-4.27}/docs/theme/sitemap.html +0 -0
- {rummage-4.26.4 → rummage-4.27}/gui.fbp +0 -0
- {rummage-4.26.4 → rummage-4.27}/requirements/lint.txt +0 -0
- {rummage-4.26.4 → rummage-4.27}/requirements/setup.txt +0 -0
- {rummage-4.26.4 → rummage-4.27}/requirements/test.txt +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/__main__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/checksum/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/checksum/sum_hashes.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/checksum/tiger.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/checksum/whirlpool.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/export_csv.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/export_html.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/fileops.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/sanitize_json.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/actions/updates.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/app/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/app/custom_app.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/app/platform_window_focus.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/app/rummage_app.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/autocomplete_combo.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/collapsible_pane.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/custom_statusbar.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/date_picker.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/dock_icon.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/dynamic_lists.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/encoding_list.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/file_picker.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/load_search_list.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/pick_button.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/result_lists.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/search_chain_list.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/search_error_list.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/time_picker.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/controls/webview.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/arrow_down.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/arrow_left.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/arrow_right.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/arrow_up.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/binary.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/doc.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/404.html +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/about/contributing.html +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/about/license.html +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/css/theme.css +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/chain_button.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/chain_mode.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/chains.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/content_tab.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/file_pattern.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/files_tab.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/html_export.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/limit_search_panel.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/load_search.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/logo.svg +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/plugin_input.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/plugin_toggle.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/preview.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/regex_buttons.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/regex_tester.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/rummage.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/rummage.svg +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/save_search.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/search_replace_inputs.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/search_replace_panel.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/search_tab.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/settings_backup.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/settings_editor.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/settings_encoding.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/settings_export.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/settings_general.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/settings_history.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/settings_import.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/settings_notify.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/settings_search.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/thunar-basic.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/thunar-conditions.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/images/thunar-custom.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/index.html +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/installation.html +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/js/theme.js +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/docs/sitemap.html +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/error.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/glass.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/results.css +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage.icns +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage.ico +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage_1024.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage_128.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage_16.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage_256.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage_32.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage_40.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage_48.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage_512.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/rummage_mac.png +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/data/sorttable.js +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/checksum_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/column_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/delete_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/edit_search_chain_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/error_text_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/export_settings_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/file_ext_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/generic_dialogs.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/html_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/import_settings_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/load_search_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/msg_dialogs.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/overwrite_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/regex_test_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/save_search_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/search_chain_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/search_error_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/dialogs/support_info_dialog.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/gui.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/localization/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/localization/locale/en_US/LC_MESSAGES/rummage.po +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/localization/locale/ru_RU/LC_MESSAGES/rummage.po +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/notify/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/notify/notify_linux.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/notify/notify_osx.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/notify/notify_windows.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/notify/util.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/settings/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/util/colors.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/util/images.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/gui/util/png.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/rumcore/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/rumcore/text_decode.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/rummage/lib/rumcore/util.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/tests/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/tests/test_rumcore.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/tests/test_text_decode.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/tests/test_versions.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/tests/util.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/tools/__init__.py +0 -0
- {rummage-4.26.4 → rummage-4.27}/tools/gui_patch.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rummage
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.27
|
|
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>
|
|
@@ -13,30 +13,30 @@ Classifier: Intended Audience :: Developers
|
|
|
13
13
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
14
|
Classifier: Operating System :: OS Independent
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
21
21
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
22
22
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
23
|
Classifier: Topic :: Text Processing :: Filters
|
|
24
24
|
Classifier: Topic :: Text Processing :: Markup :: HTML
|
|
25
|
-
Requires-Python: >=3.
|
|
26
|
-
Requires-Dist: backrefs>=8.
|
|
27
|
-
Requires-Dist: bracex>=3.
|
|
28
|
-
Requires-Dist: chardet>=7.
|
|
29
|
-
Requires-Dist: coloraide>=8.
|
|
25
|
+
Requires-Python: >=3.11
|
|
26
|
+
Requires-Dist: backrefs>=8.3
|
|
27
|
+
Requires-Dist: bracex>=3.2.2
|
|
28
|
+
Requires-Dist: chardet>=7.7.0
|
|
29
|
+
Requires-Dist: coloraide>=8.13.1
|
|
30
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<13.0,>=12.0.1
|
|
36
36
|
Requires-Dist: wxpython>=4.1.0
|
|
37
37
|
Provides-Extra: extras
|
|
38
|
-
Requires-Dist: faust-cchardet>=2.
|
|
39
|
-
Requires-Dist: regex>=2026.
|
|
38
|
+
Requires-Dist: faust-cchardet>=3.2.0; extra == 'extras'
|
|
39
|
+
Requires-Dist: regex>=2026.11.9; extra == 'extras'
|
|
40
40
|
Description-Content-Type: text/markdown
|
|
41
41
|
|
|
42
42
|
[![Donate via PayPal][donate-image]][donate-link]
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.27
|
|
4
|
+
|
|
5
|
+
- **NEW**: Add Python 3.15 support.
|
|
6
|
+
- **NEW**: Drop Python 3.10 support.
|
|
7
|
+
- **NEW**: Update minimum dependencies for bug fixes.
|
|
8
|
+
- **NEW**: Fix color issues related to collapsible panels on latest wxPython.
|
|
9
|
+
|
|
3
10
|
## 4.26.4
|
|
4
11
|
|
|
5
12
|
- **FIX**: Require `wcmatch` 11.0.1 which fixes some dot cases related to extended glob patterns.
|
|
@@ -80,7 +80,7 @@ more about each feature:
|
|
|
80
80
|
|
|
81
81
|
- [Extended match](./search.md#extended-match-syntax).
|
|
82
82
|
- [Brace expansion](./search.md#brace-expansion-syntax).
|
|
83
|
-
- Case sensitive for [wildcard match](./search.md#wildcard) and for [regular expression match](#regular-expression).
|
|
83
|
+
- Case sensitive for [wildcard match](./search.md#wildcard) and for [regular expression match](./search.md#regular-expression).
|
|
84
84
|
- [Globstar](./search.md#full-path-matching).
|
|
85
85
|
- [Exclude with `-`](./search.md#basic-wildcard-syntax) which is the default.
|
|
86
86
|
- [Match base](./search.md#full-path-matching).
|
|
@@ -251,10 +251,10 @@ Flags | Supported\ Libraries | Option
|
|
|
251
251
|
`i` | All | [Search case-sensitive.](./search.md#common-options)
|
|
252
252
|
`u` | All | [Use Unicode properties.](./search.md#common-options)
|
|
253
253
|
`s` | All | [Dot matches newline.](./search.md#common-options)
|
|
254
|
-
`f` | Regex, Regex\ + \Backrefs | [Full case-folding.](./search.md#regex-options)
|
|
255
|
-
`b` | Regex, Regex\ + \Backrefs | [Best fuzzy match.](./search.md#regex-options)
|
|
256
|
-
`e` | Regex, Regex\ + \Backrefs | [Improve fuzzy fit.](./search.md#regex-options)
|
|
257
|
-
`w` | Regex, Regex\ + \Backrefs | [Unicode word breaks.](./search.md#regex-options)
|
|
258
|
-
`r` | Regex, Regex\ + \Backrefs | [Search backwards.](./search.md#regex-options)
|
|
259
|
-
`p` | Regex, Regex\ + \Backrefs | [Use POSIX matching.](./search.md#regex-options)
|
|
254
|
+
`f` | Regex, Regex\ + \Backrefs | [Full case-folding.](./search.md#regex-engine-options)
|
|
255
|
+
`b` | Regex, Regex\ + \Backrefs | [Best fuzzy match.](./search.md#regex-engine-options)
|
|
256
|
+
`e` | Regex, Regex\ + \Backrefs | [Improve fuzzy fit.](./search.md#regex-engine-options)
|
|
257
|
+
`w` | Regex, Regex\ + \Backrefs | [Unicode word breaks.](./search.md#regex-engine-options)
|
|
258
|
+
`r` | Regex, Regex\ + \Backrefs | [Search backwards.](./search.md#regex-engine-options)
|
|
259
|
+
`p` | Regex, Regex\ + \Backrefs | [Use POSIX matching.](./search.md#regex-engine-options)
|
|
260
260
|
`F` | Regex, Regex\ + \Backrefs, Re\ + \Backrefs | [Format style replacements.](./search.md#common-options)
|
|
@@ -35,8 +35,7 @@ rummage3.6
|
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
In some environments, it may make sense to run Rummage with `pythonw` which is mainly for launching GUI scripts
|
|
38
|
-
(`pythonw` is not available on Linux). In some environments, it may be required
|
|
39
|
-
[Running in Anaconda](./installation.md#running-in-anaconda)).
|
|
38
|
+
(`pythonw` is not available on Linux). In some environments, it may be required.
|
|
40
39
|
|
|
41
40
|
```bash
|
|
42
41
|
pythonw -m rummage
|
|
@@ -43,11 +43,11 @@ class CustomMetadataHook(MetadataHookInterface):
|
|
|
43
43
|
"License :: OSI Approved :: MIT License",
|
|
44
44
|
"Operating System :: OS Independent",
|
|
45
45
|
"Programming Language :: Python :: 3",
|
|
46
|
-
"Programming Language :: Python :: 3.10",
|
|
47
46
|
"Programming Language :: Python :: 3.11",
|
|
48
47
|
"Programming Language :: Python :: 3.12",
|
|
49
48
|
"Programming Language :: Python :: 3.13",
|
|
50
49
|
"Programming Language :: Python :: 3.14",
|
|
50
|
+
"Programming Language :: Python :: 3.15",
|
|
51
51
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
52
52
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
53
53
|
"Topic :: Text Processing :: Filters",
|
|
@@ -9,7 +9,7 @@ name = "rummage"
|
|
|
9
9
|
description = "A GUI search and replace app."
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
license = "MIT"
|
|
12
|
-
requires-python = ">=3.
|
|
12
|
+
requires-python = ">=3.11"
|
|
13
13
|
authors = [
|
|
14
14
|
{ name = "Isaac Muse", email = "Isaac.Muse@gmail.com" },
|
|
15
15
|
]
|
|
@@ -153,7 +153,7 @@ legacy_tox_ini = """
|
|
|
153
153
|
[tox]
|
|
154
154
|
skipsdist=true
|
|
155
155
|
envlist=
|
|
156
|
-
{
|
|
156
|
+
{py311,py312,py313,py314,py315},
|
|
157
157
|
lint
|
|
158
158
|
|
|
159
159
|
[testenv]
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
chardet>=7.
|
|
2
|
-
backrefs>=8.
|
|
3
|
-
bracex>=3.
|
|
4
|
-
wcmatch>=
|
|
1
|
+
chardet>=7.7.0
|
|
2
|
+
backrefs>=8.3
|
|
3
|
+
bracex>=3.2.2
|
|
4
|
+
wcmatch>=12.0.1,<13.0
|
|
5
5
|
wxpython>=4.1.0
|
|
6
6
|
filelock>=3.29.7
|
|
7
7
|
send2trash>=2.1.0
|
|
8
8
|
markdown>=3.10.2
|
|
9
9
|
pymdown-extensions>=11.0
|
|
10
10
|
pygments>=2.19.2
|
|
11
|
-
coloraide>=8.
|
|
11
|
+
coloraide>=8.13.1
|
|
@@ -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, 27, 0, 'final')
|
|
193
193
|
__version__ = __version_info__._get_canonical()
|
|
194
194
|
__app__ = "Rummage"
|
|
195
195
|
__status__ = __version_info__[3]
|
|
@@ -25,6 +25,13 @@
|
|
|
25
25
|
|
|
26
26
|
<!-- Table of Content (Don't show for static sites) -->
|
|
27
27
|
<h1 id="changelog">Changelog</h1>
|
|
28
|
+
<h2 id="427">4.27</h2>
|
|
29
|
+
<ul>
|
|
30
|
+
<li><strong>NEW</strong>: Add Python 3.15 support.</li>
|
|
31
|
+
<li><strong>NEW</strong>: Drop Python 3.10 support.</li>
|
|
32
|
+
<li><strong>NEW</strong>: Update minimum dependencies for bug fixes.</li>
|
|
33
|
+
<li><strong>NEW</strong>: Fix color issues related to collapsible panels on latest wxPython.</li>
|
|
34
|
+
</ul>
|
|
28
35
|
<h2 id="4264">4.26.4</h2>
|
|
29
36
|
<ul>
|
|
30
37
|
<li><strong>FIX</strong>: Require <code>wcmatch</code> 11.0.1 which fixes some dot cases related to extended glob patterns.</li>
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
<li>Pass input: <code>as arguments</code>.</li>
|
|
105
105
|
<li>
|
|
106
106
|
<p>Content of script:</p>
|
|
107
|
-
<div class="highlight"><pre><span></span><code><span class="o">(</span>/Library/Frameworks/Python.framework/Versions/3.6/bin/rummage<span class="w"> </span>--path<span class="w"> </span><span class="s2"
|
|
107
|
+
<div class="highlight"><pre><span></span><code><span class="o">(</span>/Library/Frameworks/Python.framework/Versions/3.6/bin/rummage<span class="w"> </span>--path<span class="w"> </span><span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span><span class="o">)</span>>/dev/null<span class="w"> </span><span class="m">2</span>><span class="p">&</span><span class="m">1</span><span class="w"> </span><span class="p">&</span>
|
|
108
108
|
</code></pre></div>
|
|
109
109
|
<p>This is just an example. You will need to determine the location of your Python install.</p>
|
|
110
110
|
</li>
|
|
@@ -129,33 +129,33 @@ are doing.</p>
|
|
|
129
129
|
<div class="highlight"><pre><span></span><code><span class="na">Windows Registry Editor Version 5.00</span>
|
|
130
130
|
|
|
131
131
|
<span class="k">[HKEY_CLASSES_ROOT\Folder\shell\Rummage Here...]</span>
|
|
132
|
-
<span class="na">@</span><span class="o">=</span><span class="s"
|
|
132
|
+
<span class="na">@</span><span class="o">=</span><span class="s">""</span>
|
|
133
133
|
|
|
134
134
|
<span class="k">[HKEY_CLASSES_ROOT\Folder\shell\Rummage Here...\command]</span>
|
|
135
|
-
<span class="na">@</span><span class="o">=</span><span class="s"
|
|
135
|
+
<span class="na">@</span><span class="o">=</span><span class="s">"<python_install_path>\\Scripts\\rummage.exe --path \"</span><span class="na">%1\""</span>
|
|
136
136
|
|
|
137
137
|
<span class="k">[HKEY_CLASSES_ROOT\*\shell\Rummage Here...]</span>
|
|
138
|
-
<span class="na">@</span><span class="o">=</span><span class="s"
|
|
138
|
+
<span class="na">@</span><span class="o">=</span><span class="s">""</span>
|
|
139
139
|
|
|
140
140
|
<span class="k">[HKEY_CLASSES_ROOT\*\shell\Rummage Here...\command]</span>
|
|
141
|
-
<span class="na">@</span><span class="o">=</span><span class="s"
|
|
141
|
+
<span class="na">@</span><span class="o">=</span><span class="s">"<python_install_path>\\Scripts\\rummage.exe --path \"</span><span class="na">%1\""</span>
|
|
142
142
|
</code></pre></div>
|
|
143
143
|
<p>Optionally, you can also include the Rummage icon beside your context menu entry by adding a few additional lines:</p>
|
|
144
144
|
<div class="highlight"><pre><span></span><code><span class="na">Windows Registry Editor Version 5.00</span>
|
|
145
145
|
|
|
146
146
|
<span class="k">[HKEY_CLASSES_ROOT\Folder\shell\Rummage Here...]</span>
|
|
147
|
-
<span class="na">@</span><span class="o">=</span><span class="s"
|
|
148
|
-
<span class="na"
|
|
147
|
+
<span class="na">@</span><span class="o">=</span><span class="s">""</span>
|
|
148
|
+
<span class="na">"Icon"</span><span class="o">=</span><span class="s">"<python_install_path>\\Lib\\site-packages\\rummage\\lib\\gui\\data\\rummage.ico"</span>
|
|
149
149
|
|
|
150
150
|
<span class="k">[HKEY_CLASSES_ROOT\Folder\shell\Rummage Here...\command]</span>
|
|
151
|
-
<span class="na">@</span><span class="o">=</span><span class="s"
|
|
151
|
+
<span class="na">@</span><span class="o">=</span><span class="s">"<python_install_path>\\Scripts\\rummage.exe --path \"</span><span class="na">%1\""</span>
|
|
152
152
|
|
|
153
153
|
<span class="k">[HKEY_CLASSES_ROOT\*\shell\Rummage Here...]</span>
|
|
154
|
-
<span class="na">@</span><span class="o">=</span><span class="s"
|
|
155
|
-
<span class="na"
|
|
154
|
+
<span class="na">@</span><span class="o">=</span><span class="s">""</span>
|
|
155
|
+
<span class="na">"Icon"</span><span class="o">=</span><span class="s">"<python_install_path>\\Lib\\site-packages\\rummage\\lib\\gui\\data\\rummage.ico"</span>
|
|
156
156
|
|
|
157
157
|
<span class="k">[HKEY_CLASSES_ROOT\*\shell\Rummage Here...\command]</span>
|
|
158
|
-
<span class="na">@</span><span class="o">=</span><span class="s"
|
|
158
|
+
<span class="na">@</span><span class="o">=</span><span class="s">"<python_install_path>\\Scripts\\rummage.exe --path \"</span><span class="na">%1\""</span>
|
|
159
159
|
</code></pre></div>
|
|
160
160
|
</li>
|
|
161
161
|
<li>
|
|
@@ -178,13 +178,13 @@ like to include the info here, please issue a pull request to update the documen
|
|
|
178
178
|
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
|
179
179
|
<span class="kn">import</span><span class="w"> </span><span class="nn">subprocess</span>
|
|
180
180
|
|
|
181
|
-
<span class="n">RUMMAGE_PATH</span> <span class="o">=</span> <span class="s2"
|
|
181
|
+
<span class="n">RUMMAGE_PATH</span> <span class="o">=</span> <span class="s2">"/usr/local/bin/rummage"</span>
|
|
182
182
|
|
|
183
|
-
<span class="n">selected_paths</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2"
|
|
183
|
+
<span class="n">selected_paths</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
184
184
|
<span class="k">if</span> <span class="n">selected_paths</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
185
|
-
<span class="n">paths</span> <span class="o">=</span> <span class="n">selected_paths</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2"
|
|
185
|
+
<span class="n">paths</span> <span class="o">=</span> <span class="n">selected_paths</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
186
186
|
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">paths</span><span class="p">):</span>
|
|
187
|
-
<span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">RUMMAGE_PATH</span><span class="p">,</span> <span class="s2"
|
|
187
|
+
<span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">RUMMAGE_PATH</span><span class="p">,</span> <span class="s2">"--path"</span><span class="p">,</span> <span class="n">paths</span><span class="p">[</span><span class="mi">0</span><span class="p">]])</span>
|
|
188
188
|
</code></pre></div>
|
|
189
189
|
</li>
|
|
190
190
|
<li>
|
|
@@ -218,7 +218,7 @@ like to include the info here, please issue a pull request to update the documen
|
|
|
218
218
|
<span class="k">[Desktop Action rummage]</span>
|
|
219
219
|
<span class="na">Name</span><span class="o">=</span><span class="s">Rummage Here...</span>
|
|
220
220
|
<span class="na">Icon</span><span class="o">=</span><span class="s">/usr/local/lib/python3.5/dist-packages/rummage/lib/gui/data/rummage_1024.png</span>
|
|
221
|
-
<span class="na">Exec</span><span class="o">=</span><span class="s">rummage --path
|
|
221
|
+
<span class="na">Exec</span><span class="o">=</span><span class="s">rummage --path "%f"</span>
|
|
222
222
|
</code></pre></div>
|
|
223
223
|
</li>
|
|
224
224
|
<li>
|
|
@@ -264,8 +264,8 @@ update them appropriately via pull requests or they will remain out of date.</p>
|
|
|
264
264
|
<p>Inside each <code>.po</code> file there will be a <code>msgid</code> for each unique translatable string. Each <code>msgid</code> represents the actual
|
|
265
265
|
US English text that is shown in Rummage. Underneath each <code>msgid</code>, you'll also find a <code>msgstr</code> which represents the
|
|
266
266
|
translation for the <code>msgid</code>. Just edit the corresponding <code>msgstr</code> for each <code>msgid</code> in the existing <code>rummage.po</code> file.</p>
|
|
267
|
-
<div class="highlight"><pre><span></span><code>msgid
|
|
268
|
-
msgstr &
|
|
267
|
+
<div class="highlight"><pre><span></span><code>msgid "About"
|
|
268
|
+
msgstr "<my_translation>"
|
|
269
269
|
</code></pre></div>
|
|
270
270
|
<h3 id="generate-new-template-from-source">Generate New Template from Source</h3>
|
|
271
271
|
<p>In the Python source, you'll notice that translatable strings are represented as <code>_("some text")</code>. <code>_</code> is the function
|
|
@@ -133,7 +133,7 @@ more about each feature:</p>
|
|
|
133
133
|
<ul>
|
|
134
134
|
<li><a href="./search.html#extended-match-syntax">Extended match</a>.</li>
|
|
135
135
|
<li><a href="./search.html#brace-expansion-syntax">Brace expansion</a>.</li>
|
|
136
|
-
<li>Case sensitive for <a href="./search.html#wildcard">wildcard match</a> and for <a href="#regular-expression">regular expression match</a>.</li>
|
|
136
|
+
<li>Case sensitive for <a href="./search.html#wildcard">wildcard match</a> and for <a href="./search.html#regular-expression">regular expression match</a>.</li>
|
|
137
137
|
<li><a href="./search.html#full-path-matching">Globstar</a>.</li>
|
|
138
138
|
<li><a href="./search.html#basic-wildcard-syntax">Exclude with <code>-</code></a> which is the default.</li>
|
|
139
139
|
<li><a href="./search.html#full-path-matching">Match base</a>.</li>
|
|
@@ -273,28 +273,28 @@ import results in the text box.</p>
|
|
|
273
273
|
supported settings will not be covered here, but the chain and search format will be discussed in details.</p>
|
|
274
274
|
<p>The chain format for importing is shown below:</p>
|
|
275
275
|
<div class="highlight"><pre><span></span><code><span class="p">{</span>
|
|
276
|
-
<span class="w"> </span><span class="s2"
|
|
277
|
-
<span class="w"> </span><span class="s2"
|
|
278
|
-
<span class="w"> </span><span class="s2"
|
|
279
|
-
<span class="w"> </span><span class="s2"
|
|
276
|
+
<span class="w"> </span><span class="s2">"chains"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// The key that denotes this setting is the "chains" setting.</span>
|
|
277
|
+
<span class="w"> </span><span class="s2">"a-chain"</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="c1">// Unique chain ID. Must be composed of letters, numbers, underscores, and hyphens.</span>
|
|
278
|
+
<span class="w"> </span><span class="s2">"example-1"</span><span class="p">,</span><span class="w"> </span><span class="c1">// A list of references to specific unique search IDs.</span>
|
|
279
|
+
<span class="w"> </span><span class="s2">"example-2"</span>
|
|
280
280
|
<span class="w"> </span><span class="p">],</span>
|
|
281
|
-
<span class="w"> </span><span class="s2"
|
|
282
|
-
<span class="w"> </span><span class="s2"
|
|
283
|
-
<span class="w"> </span><span class="s2"
|
|
281
|
+
<span class="w"> </span><span class="s2">"another-chain"</span><span class="o">:</span><span class="w"> </span><span class="p">[</span>
|
|
282
|
+
<span class="w"> </span><span class="s2">"example-3"</span><span class="p">,</span>
|
|
283
|
+
<span class="w"> </span><span class="s2">"example-4"</span>
|
|
284
284
|
<span class="w"> </span><span class="p">]</span>
|
|
285
285
|
<span class="w"> </span><span class="p">}</span>
|
|
286
286
|
<span class="p">}</span>
|
|
287
287
|
</code></pre></div>
|
|
288
288
|
<p>The search/replace format for importing is show below:</p>
|
|
289
289
|
<div class="highlight"><pre><span></span><code><span class="p">{</span>
|
|
290
|
-
<span class="w"> </span><span class="s2"
|
|
291
|
-
<span class="w"> </span><span class="s2"
|
|
292
|
-
<span class="w"> </span><span class="s2"
|
|
293
|
-
<span class="w"> </span><span class="s2"
|
|
294
|
-
<span class="w"> </span><span class="s2"
|
|
295
|
-
<span class="w"> </span><span class="s2"
|
|
296
|
-
<span class="w"> </span><span class="s2"
|
|
297
|
-
<span class="w"> </span><span class="s2"
|
|
290
|
+
<span class="w"> </span><span class="s2">"saved_searches"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// The key that denotes this setting is the "chains" setting.</span>
|
|
291
|
+
<span class="w"> </span><span class="s2">"Copyright-update"</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Unique search ID. Must be composed of letters, numbers, underscores, and hyphens.</span>
|
|
292
|
+
<span class="w"> </span><span class="s2">"flags"</span><span class="o">:</span><span class="w"> </span><span class="s2">"is"</span><span class="p">,</span><span class="w"> </span><span class="c1">// Search and replace flags (covered below).</span>
|
|
293
|
+
<span class="w"> </span><span class="s2">"is_function"</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="c1">// Boolean stating whether the replace pattern is a function or not.</span>
|
|
294
|
+
<span class="w"> </span><span class="s2">"is_regex"</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"> </span><span class="c1">// Boolean stating whether the search pattern is a regular expression or literal string.</span>
|
|
295
|
+
<span class="w"> </span><span class="s2">"name"</span><span class="o">:</span><span class="w"> </span><span class="s2">"Copyright update"</span><span class="p">,</span><span class="w"> </span><span class="c1">// A more user friendly name or description of the pattern.</span>
|
|
296
|
+
<span class="w"> </span><span class="s2">"replace"</span><span class="o">:</span><span class="w"> </span><span class="s2">"\\g<1>16"</span><span class="p">,</span><span class="w"> </span><span class="c1">// The replace pattern, or in case `is_function` is `true`, the path to the Python replace plugin file.</span>
|
|
297
|
+
<span class="w"> </span><span class="s2">"search"</span><span class="o">:</span><span class="w"> </span><span class="s2">"(Copyright \\(c\\) \\d+ - 20)(\\d{2})"</span><span class="w"> </span><span class="c1">// The search pattern.</span>
|
|
298
298
|
<span class="w"> </span><span class="p">}</span>
|
|
299
299
|
<span class="w"> </span><span class="p">}</span>
|
|
300
300
|
<span class="p">}</span>
|
|
@@ -329,32 +329,32 @@ depending on whether you are using Re, Regex, or one of the two with Backrefs).<
|
|
|
329
329
|
<tr>
|
|
330
330
|
<td><code>f</code></td>
|
|
331
331
|
<td>Regex, Regex + Backrefs</td>
|
|
332
|
-
<td><a href="./search.html#regex-options">Full case-folding.</a></td>
|
|
332
|
+
<td><a href="./search.html#regex-engine-options">Full case-folding.</a></td>
|
|
333
333
|
</tr>
|
|
334
334
|
<tr>
|
|
335
335
|
<td><code>b</code></td>
|
|
336
336
|
<td>Regex, Regex + Backrefs</td>
|
|
337
|
-
<td><a href="./search.html#regex-options">Best fuzzy match.</a></td>
|
|
337
|
+
<td><a href="./search.html#regex-engine-options">Best fuzzy match.</a></td>
|
|
338
338
|
</tr>
|
|
339
339
|
<tr>
|
|
340
340
|
<td><code>e</code></td>
|
|
341
341
|
<td>Regex, Regex + Backrefs</td>
|
|
342
|
-
<td><a href="./search.html#regex-options">Improve fuzzy fit.</a></td>
|
|
342
|
+
<td><a href="./search.html#regex-engine-options">Improve fuzzy fit.</a></td>
|
|
343
343
|
</tr>
|
|
344
344
|
<tr>
|
|
345
345
|
<td><code>w</code></td>
|
|
346
346
|
<td>Regex, Regex + Backrefs</td>
|
|
347
|
-
<td><a href="./search.html#regex-options">Unicode word breaks.</a></td>
|
|
347
|
+
<td><a href="./search.html#regex-engine-options">Unicode word breaks.</a></td>
|
|
348
348
|
</tr>
|
|
349
349
|
<tr>
|
|
350
350
|
<td><code>r</code></td>
|
|
351
351
|
<td>Regex, Regex + Backrefs</td>
|
|
352
|
-
<td><a href="./search.html#regex-options">Search backwards.</a></td>
|
|
352
|
+
<td><a href="./search.html#regex-engine-options">Search backwards.</a></td>
|
|
353
353
|
</tr>
|
|
354
354
|
<tr>
|
|
355
355
|
<td><code>p</code></td>
|
|
356
356
|
<td>Regex, Regex + Backrefs</td>
|
|
357
|
-
<td><a href="./search.html#regex-options">Use POSIX matching.</a></td>
|
|
357
|
+
<td><a href="./search.html#regex-engine-options">Use POSIX matching.</a></td>
|
|
358
358
|
</tr>
|
|
359
359
|
<tr>
|
|
360
360
|
<td><code>F</code></td>
|
|
@@ -135,7 +135,7 @@ are found directly under the search and replace text boxes.</p>
|
|
|
135
135
|
</tr>
|
|
136
136
|
<tr>
|
|
137
137
|
<td>Format style replacements</td>
|
|
138
|
-
<td>Replace pattern will use <a href="https://docs.python.org/2/library/string.html#format-string-syntax">a string replace format</a> for replace. <code class="highlight"><span class="s2"
|
|
138
|
+
<td>Replace pattern will use <a href="https://docs.python.org/2/library/string.html#format-string-syntax">a string replace format</a> for replace. <code class="highlight"><span class="s2">"</span><span class="si">{1}</span><span class="s2"> </span><span class="si">{1[-2]}</span><span class="s2"> </span><span class="si">{group_name[-3]}</span><span class="s2">"</span></code> etc. This is not available for Re without Backrefs, and is limited when using Re with Backrefs. Read more about format mode <a href="http://facelessuser.github.io/backrefs/#format-replacements">here</a>. And remember that Rummage normalizes differences in Backrefs' and Regex's handling of back slash escapes in format replace mode.</td>
|
|
139
139
|
</tr>
|
|
140
140
|
</tbody>
|
|
141
141
|
</table>
|
|
@@ -110,8 +110,7 @@ major and minor Python version to the end:</p>
|
|
|
110
110
|
<div class="highlight"><pre><span></span><code>rummage3.6
|
|
111
111
|
</code></pre></div>
|
|
112
112
|
<p>In some environments, it may make sense to run Rummage with <code>pythonw</code> which is mainly for launching GUI scripts
|
|
113
|
-
(<code>pythonw</code> is not available on Linux). In some environments, it may be required
|
|
114
|
-
<a href="./installation.html#running-in-anaconda">Running in Anaconda</a>).</p>
|
|
113
|
+
(<code>pythonw</code> is not available on Linux). In some environments, it may be required.</p>
|
|
115
114
|
<div class="highlight"><pre><span></span><code>pythonw<span class="w"> </span>-m<span class="w"> </span>rummage
|
|
116
115
|
</code></pre></div>
|
|
117
116
|
<h2 id="searching--replacing">Searching & Replacing</h2>
|
|
@@ -222,40 +221,40 @@ environment.</p>
|
|
|
222
221
|
</ol>
|
|
223
222
|
<p>The plugin class is fairly straight forward and is shown below.</p>
|
|
224
223
|
<div class="highlight"><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">ReplacePlugin</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
|
225
|
-
<span class="w"> </span><span class="sd"
|
|
224
|
+
<span class="w"> </span><span class="sd">"""Rummage replace plugin."""</span>
|
|
226
225
|
|
|
227
226
|
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_info</span><span class="p">,</span> <span class="n">flags</span><span class="p">):</span>
|
|
228
|
-
<span class="w"> </span><span class="sd"
|
|
227
|
+
<span class="w"> </span><span class="sd">"""Initialize."""</span>
|
|
229
228
|
|
|
230
229
|
<span class="bp">self</span><span class="o">.</span><span class="n">file_info</span> <span class="o">=</span> <span class="n">file_info</span>
|
|
231
230
|
<span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">flags</span>
|
|
232
231
|
<span class="bp">self</span><span class="o">.</span><span class="n">on_init</span><span class="p">()</span>
|
|
233
232
|
|
|
234
233
|
<span class="k">def</span><span class="w"> </span><span class="nf">on_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
235
|
-
<span class="w"> </span><span class="sd"
|
|
234
|
+
<span class="w"> </span><span class="sd">"""Override this function to add initialization setup."""</span>
|
|
236
235
|
|
|
237
236
|
<span class="k">def</span><span class="w"> </span><span class="nf">get_flags</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
238
|
-
<span class="w"> </span><span class="sd"
|
|
237
|
+
<span class="w"> </span><span class="sd">"""Get flags."""</span>
|
|
239
238
|
|
|
240
239
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">flags</span>
|
|
241
240
|
|
|
242
241
|
<span class="k">def</span><span class="w"> </span><span class="nf">get_file_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
243
|
-
<span class="w"> </span><span class="sd"
|
|
242
|
+
<span class="w"> </span><span class="sd">"""Get file name."""</span>
|
|
244
243
|
|
|
245
244
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">file_info</span><span class="o">.</span><span class="n">name</span>
|
|
246
245
|
|
|
247
246
|
<span class="k">def</span><span class="w"> </span><span class="nf">is_binary</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
248
|
-
<span class="w"> </span><span class="sd"
|
|
247
|
+
<span class="w"> </span><span class="sd">"""Is a binary search."""</span>
|
|
249
248
|
|
|
250
|
-
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">file_info</span><span class="o">.</span><span class="n">encoding</span><span class="o">.</span><span class="n">encode</span> <span class="o">==</span> <span class="s1"
|
|
249
|
+
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">file_info</span><span class="o">.</span><span class="n">encoding</span><span class="o">.</span><span class="n">encode</span> <span class="o">==</span> <span class="s1">'bin'</span>
|
|
251
250
|
|
|
252
251
|
<span class="k">def</span><span class="w"> </span><span class="nf">is_literal</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
253
|
-
<span class="w"> </span><span class="sd"
|
|
252
|
+
<span class="w"> </span><span class="sd">"""Is a literal search."""</span>
|
|
254
253
|
|
|
255
254
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">flags</span> <span class="o">&</span> <span class="n">LITERAL</span>
|
|
256
255
|
|
|
257
256
|
<span class="k">def</span><span class="w"> </span><span class="nf">replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span>
|
|
258
|
-
<span class="w"> </span><span class="sd"
|
|
257
|
+
<span class="w"> </span><span class="sd">"""Make replacement."""</span>
|
|
259
258
|
|
|
260
259
|
<span class="k">return</span> <span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
261
260
|
</code></pre></div>
|
|
@@ -264,8 +263,8 @@ environment.</p>
|
|
|
264
263
|
string (for binary files).</p>
|
|
265
264
|
<p>The <code>ReplacePlugin</code>'s <code>file_info</code> property is a named tuple providing information about the current file such as name,
|
|
266
265
|
size, creation date, etc.</p>
|
|
267
|
-
<div class="highlight"><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">FileInfoRecord</span><span class="p">(</span><span class="n">namedtuple</span><span class="p">(</span><span class="s1"
|
|
268
|
-
<span class="w"> </span><span class="sd"
|
|
266
|
+
<div class="highlight"><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">FileInfoRecord</span><span class="p">(</span><span class="n">namedtuple</span><span class="p">(</span><span class="s1">'FileInfoRecord'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'id'</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">,</span> <span class="s1">'size'</span><span class="p">,</span> <span class="s1">'modified'</span><span class="p">,</span> <span class="s1">'created'</span><span class="p">,</span> <span class="s1">'encoding'</span><span class="p">])):</span>
|
|
267
|
+
<span class="w"> </span><span class="sd">"""A record for tracking file info."""</span>
|
|
269
268
|
</code></pre></div>
|
|
270
269
|
<p>The <code>ReplacePlugin</code>'s <code>flags</code> property contains only Rummage search related flags (the flags are abstracted at this
|
|
271
270
|
level and are converted to the appropriate regular expression flags later). They can also be accessed from
|
|
@@ -301,17 +300,17 @@ assumed this is not a binary replace, so a Unicode string is returned.</p>
|
|
|
301
300
|
|
|
302
301
|
|
|
303
302
|
<span class="k">class</span><span class="w"> </span><span class="nc">TestReplace</span><span class="p">(</span><span class="n">rumcore</span><span class="o">.</span><span class="n">ReplacePlugin</span><span class="p">):</span>
|
|
304
|
-
<span class="w"> </span><span class="sd"
|
|
303
|
+
<span class="w"> </span><span class="sd">"""Replace object."""</span>
|
|
305
304
|
|
|
306
305
|
<span class="k">def</span><span class="w"> </span><span class="nf">replace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">m</span><span class="p">):</span>
|
|
307
|
-
<span class="w"> </span><span class="sd"
|
|
306
|
+
<span class="w"> </span><span class="sd">"""Replace method."""</span>
|
|
308
307
|
|
|
309
308
|
<span class="n">name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_file_name</span><span class="p">())</span>
|
|
310
309
|
<span class="k">return</span> <span class="n">name</span>
|
|
311
310
|
|
|
312
311
|
|
|
313
312
|
<span class="k">def</span><span class="w"> </span><span class="nf">get_replace</span><span class="p">():</span>
|
|
314
|
-
<span class="w"> </span><span class="sd"
|
|
313
|
+
<span class="w"> </span><span class="sd">"""Get the replace object."""</span>
|
|
315
314
|
|
|
316
315
|
<span class="k">return</span> <span class="n">TestReplace</span>
|
|
317
316
|
</code></pre></div>
|
|
@@ -472,10 +472,10 @@ class RummageFrame(gui.RummageFrame):
|
|
|
472
472
|
page = self.m_grep_notebook.GetPage(x)
|
|
473
473
|
if util.platform() == "linux":
|
|
474
474
|
self.m_grep_notebook.SetBackgroundColour(wx.NullColour)
|
|
475
|
-
bg = self.m_grep_notebook
|
|
475
|
+
bg = util.get_background_colour(self.m_grep_notebook)
|
|
476
476
|
else:
|
|
477
477
|
page.SetBackgroundColour(wx.NullColour)
|
|
478
|
-
bg =
|
|
478
|
+
bg = util.get_background_colour(page)
|
|
479
479
|
if util.platform() == "macos" and not util.MAC_OLD:
|
|
480
480
|
color = Color.from_wxbgr(bg.GetRGB())
|
|
481
481
|
factor = util.MAC_LIGHT if color.luminance() > 0.5 else util.MAC_DARK
|
|
@@ -193,10 +193,10 @@ class SettingsDialog(webview.WebViewMixin, gui.SettingsDialog):
|
|
|
193
193
|
page = self.m_settings_notebook.GetPage(x)
|
|
194
194
|
if util.platform() == "linux":
|
|
195
195
|
self.m_settings_notebook.SetBackgroundColour(wx.NullColour)
|
|
196
|
-
bg = self.m_settings_notebook
|
|
196
|
+
bg = util.get_background_colour(self.m_settings_notebook)
|
|
197
197
|
else:
|
|
198
198
|
page.SetBackgroundColour(wx.NullColour)
|
|
199
|
-
bg =
|
|
199
|
+
bg = util.get_background_colour(page)
|
|
200
200
|
if util.platform() == "macos" and not util.MAC_OLD:
|
|
201
201
|
color = Color.from_wxbgr(bg.GetRGB())
|
|
202
202
|
factor = util.MAC_LIGHT if color.luminance() > 0.5 else util.MAC_DARK
|
|
@@ -25,6 +25,22 @@ MAC_OLD = _MAC_VER < (10, 14)
|
|
|
25
25
|
MAC_LIGHT = 0.032
|
|
26
26
|
MAC_DARK = 0.062
|
|
27
27
|
|
|
28
|
+
def get_background_colour(window):
|
|
29
|
+
"""
|
|
30
|
+
Get the effective background color of a window.
|
|
31
|
+
|
|
32
|
+
Newer wxWidgets (3.3+, wxPython 4.3+) report an unset background as a fully transparent
|
|
33
|
+
color (alpha 0) on macOS for natively drawn controls, as the native control paints the
|
|
34
|
+
real color itself. In that case, fall back to the system face color which is what the
|
|
35
|
+
native control uses.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
bg = window.GetBackgroundColour()
|
|
39
|
+
if not bg.IsOk() or bg.GetAlpha() == 0:
|
|
40
|
+
bg = wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DFACE)
|
|
41
|
+
return bg
|
|
42
|
+
|
|
43
|
+
|
|
28
44
|
def mac_ver():
|
|
29
45
|
"""Get macOS version."""
|
|
30
46
|
|