1212from typing import Optional , Dict , Tuple
1313
1414from AnyQt .QtWidgets import (
15- QLabel , QTextBrowser , QSplitter , QTreeView ,
15+ QLabel , QLineEdit , QTextBrowser , QSplitter , QTreeView ,
1616 QStyleOptionViewItem , QStyledItemDelegate , QApplication
1717)
18-
1918from AnyQt .QtGui import QStandardItemModel , QStandardItem
2019from AnyQt .QtCore import (
2120 Qt , QSize , QObject , QThread , QModelIndex , QSortFilterProxyModel ,
2625from serverfiles import LocalFiles , ServerFiles , sizeformat
2726
2827import Orange .data
29-
3028from Orange .misc .environ import data_dir
3129from Orange .widgets import widget , settings , gui
3230from Orange .widgets .utils .signals import Output
3331from Orange .widgets .widget import Msg
3432
33+
3534INDEX_URL = "http://datasets.orange.biolab.si/"
3635log = 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