Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diff and Extract View Filtering Options #1749

Open
wants to merge 39 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
84c5b74
Initial Search box
jetchirag Jul 11, 2023
384b41e
Created a base file_dialog class to reuse code in diff and extract di…
jetchirag Jul 17, 2023
45f3383
Added search syntax with name and path search along with a error signal
jetchirag Jul 21, 2023
1da2ecd
Use existing method to join path in searchpattern
jetchirag Jul 21, 2023
69649b0
Added search button
jetchirag Jul 21, 2023
b947858
Added size filter, improved string search
jetchirag Jul 25, 2023
f14a1c6
Added change type filter
jetchirag Jul 29, 2023
15b2fd4
Added search to extract view
jetchirag Jul 29, 2023
370a4fb
Added Balance and healthy filter
jetchirag Aug 8, 2023
4247e82
Added Last Modified filter
jetchirag Aug 12, 2023
a1cbdfc
Added Search Icon
jetchirag Aug 16, 2023
67e884f
Merge branch 'master' into search-file
jetchirag Aug 16, 2023
ba80f2e
Added search clear icon and minor fixes with borg outputs
jetchirag Aug 19, 2023
f965fb4
Merge master
jetchirag Aug 19, 2023
1e8bd75
Merge branch 'search-file' of github.com:jetchirag/vorta into search-…
jetchirag Aug 19, 2023
b91ada9
Added new flag 'exclude-parents' and added test to cover all flags an…
jetchirag Aug 19, 2023
2db3d24
Modular approach for Diff and Extract Tree Views with base class
jetchirag Aug 21, 2023
547d3b4
Fixed Tooltip border on error
jetchirag Aug 21, 2023
57309cc
Added docstrings description to BaseFileDialog
jetchirag Aug 21, 2023
1b0f0b6
Added docstring for test
jetchirag Aug 21, 2023
a56af3a
Fixed pytest exception with scheduler
jetchirag Aug 21, 2023
d45d6af
Merge branch 'master' into search-file
jetchirag Aug 21, 2023
43c2d91
Merge branch 'search-file' of github.com:jetchirag/vorta into search-…
jetchirag Aug 21, 2023
0706d87
Fix diff test
jetchirag Aug 21, 2023
cd77419
Added missing docstring in treemodel
jetchirag Aug 21, 2023
b1fdbf4
Merge branch 'master' into search-file
jetchirag Sep 8, 2023
7ebc36e
Common dest for healthy and unhealthy search syntax
jetchirag Sep 8, 2023
e2912f5
Added tests for both extract and diff filtering
jetchirag Sep 25, 2023
8950eb2
Merge branch 'master' into search-file
jetchirag Sep 25, 2023
06560d2
Resolve merge conflict
jetchirag Oct 28, 2023
9e43cca
Fixed test; Added help icon linking to doc
jetchirag Oct 28, 2023
f288952
Merge remote-tracking branch 'upstream/master' into search-file
jetchirag Feb 9, 2024
4f46c4a
Minor refactoring
jetchirag Feb 9, 2024
8c28bde
Merge branch 'master' into search-file
jetchirag Mar 29, 2024
63e231e
Merge remote-tracking branch 'upstream/master' into search-file
jetchirag Apr 8, 2024
53fef0b
Merge branch 'search-file' of github.com:jetchirag/vorta into search-…
jetchirag Apr 8, 2024
a6a0707
Remove condition to force --path with -m fm
jetchirag Apr 8, 2024
ab39467
Check for invalid regex pattern
jetchirag Apr 8, 2024
e53546a
Test now check whether test syntax emitted error or not
jetchirag Apr 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/vorta/assets/UI/diffresult.ui
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,30 @@
</item>
</layout>
</item>

<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>4</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<item>

<widget class="QLineEdit" name="searchWidget">
<property name="toolTip">
<string>Search</string>
</property>
<property name="placeholderText">
<string>Search</string>
</property>
</widget>

</item>
</layout>
</item>

<item>
<widget class="QTreeView" name="treeView"/>
</item>
Expand Down
2 changes: 2 additions & 0 deletions src/vorta/views/diff_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ def __init__(self, archive_newer, archive_older, model: 'DiffTree'):
self.comboBoxDisplayMode.setCurrentIndex(int(diff_result_display_mode))
self.bFoldersOnTop.toggled.connect(self.sortproxy.keepFoldersOnTop)
self.bCollapseAll.clicked.connect(self.treeView.collapseAll)
# Search widget
self.searchWidget.textChanged.connect(self.sortproxy.setFilterFixedString)

self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
Expand Down
30 changes: 30 additions & 0 deletions src/vorta/views/partials/treemodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -907,6 +907,7 @@ def __init__(self, parent=None) -> None:
"""Init."""
super().__init__(parent)
self.folders_on_top = False
self.searchPattern = ""

@overload
def keepFoldersOnTop(self) -> bool:
Expand Down Expand Up @@ -994,3 +995,32 @@ def lessThan(self, left: QModelIndex, right: QModelIndex) -> bool:
data1 = self.choose_data(left)
data2 = self.choose_data(right)
return data1 < data2

def setFilterFixedString(self, pattern: str):
jetchirag marked this conversation as resolved.
Show resolved Hide resolved
"""
Set the pattern to filter for.
"""
self.searchPattern = pattern
self.invalidateRowsFilter()
jetchirag marked this conversation as resolved.
Show resolved Hide resolved

def filterAcceptsRow(self, sourceRow: int, sourceParent: QModelIndex) -> bool:
"""
Return whether the row should be accepted.
"""

self.setRecursiveFilteringEnabled(True)
self.setAutoAcceptChildRows(True)

if self.searchPattern == "":
jetchirag marked this conversation as resolved.
Show resolved Hide resolved
return True

sourceModel = self.sourceModel()
sourceIndex = sourceModel.index(sourceRow, 0, sourceParent)
name = self.extract_path(sourceIndex)

if self.searchPattern.lower() in name.lower():
return True

# TODO: Implement path: syntax which builds full path of current item and then compares using startWith

return False