feat: show busy dialog while parsing archive contents for extract#2468
feat: show busy dialog while parsing archive contents for extract#2468Fikri-20 wants to merge 7 commits intoborgbase:masterfrom
Conversation
_set_status() in ChangeBorgPassphraseWindow called self.errorText.setText() but the widget was absent from the UI file, causing an AttributeError crash when displaying errors after a keyring change. Adds the errorText QLabel (matching the pattern used in repo_add.ui) and a regression test that verifies _set_status() works without crashing. Fixes borgbase#2454
|
hey @m3nu , could you please review the PR and tell me if I need to tweak anything else? |
87652bf to
7637837
Compare
|
Hi @m3nu, I'm applying for GSoC 2026 and have these PR ready for review. Could you please take a look? |
m3nu
left a comment
There was a problem hiding this comment.
Good feature for #1570 -- the indeterminate QProgressDialog is the right UX pattern here. A few items to address before merge:
Should fix:
-
Clean up
_extract_progressreference after close. TheQProgressDialogremains referenced onself.tab._extract_progressindefinitely after closing. Either set it toNoneor usedeleteLater():self.tab._t.finished.connect(self.tab._extract_progress.close) self.tab._t.finished.connect(self.tab._extract_progress.deleteLater)
-
Remove or unify redundant
_set_status()call. The status bar message"Processing archive contents"is now redundant since the modal dialog shows the same information. Either remove the_set_statuscall or keep it as a fallback and remove the near-duplicate translatable string.
Nice to have:
-
Strengthen the test. The current test only checks
hasattr(tab, '_extract_progress')after completion, which is trivially true once the attribute is set. A stronger test would verify the dialog was actually visible at some point (e.g.,mocker.spyonQProgressDialog.show) or thatclosewas called. -
Ellipsis consistency. The dialog string uses Unicode ellipsis (
…) while the status bar version doesn't. Minor, but these are two separate translation keys -- consider unifying.
…e#2435) * fix: prevent crash when removing source during size recalculation Guard against race condition where FilePathInfoAsync thread completes after the source has been removed. Disconnect thread signals on removal and catch DoesNotExist in the callback as a safety net. * addressing review --------- Co-authored-by: Manu <3916435+m3nu@users.noreply.github.com>
…kups (borgbase#2444) * Remove unused self.selected_archives variable in ArchiveTab * Suppress expected-skip notifications for scheduled backups Use structured level field in create.py for WiFi and metered connection skips instead of fragile string comparison. Add unit tests covering both skip cases and notification suppression. Fixes borgbase#2231 --------- Co-authored-by: Aniket Gautam <aniketgit-hub101@users.noreply.github.com> Co-authored-by: Manu <3916435+m3nu@users.noreply.github.com>
7637837 to
31f276f
Compare
|
Hey @m3nu, thanks for the thorough review. working on them! |
31f276f to
53cd525
Compare
|
Just pushed the fixes for all your comments: |
|
would like to hear from you @m3nu if I need to tweak other edits in the PR. |
f81b37b to
94ee349
Compare
Fixes #1570
When extracting from a large archive, parsing the file list can take minutes but the UI only showed a small status-bar message. Added a QProgressDialog in indeterminate mode that appears when parsing starts and closes when done.