Skip to content

Commit 3dcbc9b

Browse files
committed
owdatasets: Add filtering
1 parent 8cbe98a commit 3dcbc9b

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

Orange/widgets/data/owdatasets.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@
1212
from typing import Optional, Dict, Tuple
1313

1414
from AnyQt.QtWidgets import (
15-
QLabel, QTextBrowser, QSplitter, QTreeView,
15+
QLabel, QLineEdit, QTextBrowser, QSplitter, QTreeView,
1616
QStyleOptionViewItem, QStyledItemDelegate, QApplication
1717
)
18-
1918
from AnyQt.QtGui import QStandardItemModel, QStandardItem
2019
from AnyQt.QtCore import (
2120
Qt, QSize, QObject, QThread, QModelIndex, QSortFilterProxyModel,
@@ -26,12 +25,12 @@
2625
from serverfiles import LocalFiles, ServerFiles, sizeformat
2726

2827
import Orange.data
29-
3028
from Orange.misc.environ import data_dir
3129
from Orange.widgets import widget, settings, gui
3230
from Orange.widgets.utils.signals import Output
3331
from Orange.widgets.widget import Msg
3432

33+
3534
INDEX_URL = "http://datasets.orange.biolab.si/"
3635
log = logging.getLogger(__name__)
3736

@@ -141,6 +140,12 @@ def __init__(self):
141140
self.infolabel = QLabel(text="Initializing...\n\n")
142141
box.layout().addWidget(self.infolabel)
143142

143+
gui.widgetLabel(self.mainArea, "Filter")
144+
self.filterLineEdit = QLineEdit(
145+
textChanged=self.filter
146+
)
147+
self.mainArea.layout().addWidget(self.filterLineEdit)
148+
144149
self.splitter = QSplitter(orientation=Qt.Vertical)
145150

146151
self.view = QTreeView(
@@ -150,6 +155,7 @@ def __init__(self):
150155
rootIsDecorated=False,
151156
editTriggers=QTreeView.NoEditTriggers,
152157
)
158+
153159
box = gui.widgetBox(self.splitter, "Description", addToLayout=False)
154160
self.descriptionlabel = QLabel(
155161
wordWrap=True,
@@ -181,7 +187,9 @@ def __init__(self):
181187
model.setHorizontalHeaderLabels(HEADER)
182188
proxy = QSortFilterProxyModel()
183189
proxy.setSourceModel(model)
184-
self.view.setModel(model)
190+
proxy.setFilterKeyColumn(-1)
191+
proxy.setFilterCaseSensitivity(False)
192+
self.view.setModel(proxy)
185193

186194
if self.splitter_state:
187195
self.splitter.restoreState(self.splitter_state)
@@ -294,8 +302,8 @@ def info(prefix, filename):
294302
current_index = i
295303

296304
hs = self.view.header().saveState()
297-
model_ = self.view.model()
298-
self.view.setModel(model)
305+
model_ = self.view.model().sourceModel()
306+
self.view.model().setSourceModel(model)
299307
self.view.header().restoreState(hs)
300308
model_.deleteLater()
301309
model_.setParent(None)
@@ -344,6 +352,12 @@ def selected_dataset(self):
344352
info = None
345353
return info
346354

355+
def filter(self):
356+
filter_string = self.filterLineEdit.text().strip()
357+
proxyModel = self.view.model()
358+
if proxyModel:
359+
proxyModel.setFilterFixedString(filter_string)
360+
347361
def __on_selection(self):
348362
# Main data sets view selection has changed
349363
rows = self.view.selectionModel().selectedRows(0)

0 commit comments

Comments
 (0)