4141GENERAL_DOMAIN = None
4242ALL_DOMAINS = "" # The setting is Optional[str], so don't use other types here
4343
44+ # The number of characters at which filter overrides the domain and language
45+ FILTER_OVERRIDE_LENGTH = 4
46+
4447
4548def ensure_local (index_url , file_path , local_cache_path ,
4649 force = False , progress_advance = None ):
@@ -180,7 +183,7 @@ def filterAcceptsRow(self, row, parent):
180183 data = source .index (row , 0 ).data (Qt .UserRole )
181184 in_filter = (
182185 self .__filter is not None
183- and len (self .__filter ) >= 4
186+ and len (self .__filter ) >= FILTER_OVERRIDE_LENGTH
184187 and self .__filter in data .title .casefold ()
185188 )
186189 published_ok = data .publication_status == Namespace .PUBLISHED
@@ -190,7 +193,6 @@ def filterAcceptsRow(self, row, parent):
190193 and (published_ok and domain_ok and language_ok
191194 or in_filter ))
192195
193-
194196class OWDataSets (OWWidget ):
195197 name = "Datasets"
196198 description = "Load a dataset from an online repository"
@@ -276,8 +278,13 @@ def __init__(self):
276278 "Typing four letters or more overrides domain and language filters" )
277279 layout .addWidget (self .filterLineEdit )
278280
281+ self .combo_elements = []
282+
279283 layout .addSpacing (20 )
280- layout .addWidget (QLabel ("Show data sets in " ))
284+ label = QLabel ("Show data sets in " )
285+ layout .addWidget (label )
286+ self .combo_elements .append (label )
287+
281288 lang_combo = self .language_combo = QComboBox ()
282289 languages = [self .DEFAULT_LANG , self .ALL_LANGUAGES ]
283290 if self .language is not None and self .language not in languages :
@@ -289,14 +296,19 @@ def __init__(self):
289296 lang_combo .setCurrentText (self .language )
290297 lang_combo .activated .connect (self ._on_language_changed )
291298 layout .addWidget (lang_combo )
299+ self .combo_elements .append (lang_combo )
292300
293301 layout .addSpacing (20 )
294- layout .addWidget (QLabel ("Domain:" ))
302+ label = QLabel ("Domain:" )
303+ layout .addWidget (label )
304+ self .combo_elements .append (label )
305+
295306 domain_combo = self .domain_combo = QComboBox ()
296307 domain_combo .addItem (self .GENERAL_DOMAIN_LABEL )
297308 domain_combo .activated .connect (self ._on_domain_changed )
298309 if self .core_widget :
299310 layout .addWidget (domain_combo )
311+ self .combo_elements .append (domain_combo )
300312
301313 self .mainArea .layout ().addLayout (layout )
302314
@@ -622,6 +634,17 @@ def selected_dataset(self):
622634
623635 def filter (self ):
624636 filter_string = self .filterLineEdit .text ().strip ()
637+ enable_combos = len (filter_string ) < FILTER_OVERRIDE_LENGTH
638+ if enable_combos is not self .domain_combo .isEnabled ():
639+ for element in self .combo_elements :
640+ element .setEnabled (enable_combos )
641+ if enable_combos :
642+ self .domain_combo .setCurrentText (self .domain )
643+ self .language_combo .setCurrentText (self .language )
644+ else :
645+ self .domain_combo .setCurrentIndex (self .domain_combo .count () - 1 )
646+ self .language_combo .setCurrentIndex (self .language_combo .count () - 1 )
647+
625648 self .filter_hint = filter_string
626649 proxyModel = self .view .model ()
627650 if proxyModel :
0 commit comments