Skip to content

Commit d848f01

Browse files
authored
Merge pull request #1607 from janezd/file-widget-improvements
[ENH] File widget improvements
2 parents ebca371 + 1e83e16 commit d848f01

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

Orange/widgets/data/owfile.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ def match(self, context, filename, sheets):
6565
return ContextHandler.NO_MATCH
6666

6767

68+
class LineEditSelectOnFocus(QtGui.QLineEdit):
69+
def focusInEvent(self, event):
70+
super().focusInEvent(event)
71+
# If selectAll is called directly, placing the cursor unselects the text
72+
QtCore.QTimer.singleShot(0, self.selectAll)
73+
74+
6875
class OWFile(widget.OWWidget, RecentPathsWComboMixin):
6976
name = "File"
7077
id = "orange.widgets.data.file"
@@ -168,6 +175,7 @@ def __init__(self):
168175
self.url_combo = url_combo = QtGui.QComboBox()
169176
url_model = NamedURLModel(self.sheet_names)
170177
url_model.wrap(self.recent_urls)
178+
url_combo.setLineEdit(LineEditSelectOnFocus())
171179
url_combo.setModel(url_model)
172180
url_combo.setSizePolicy(Policy.MinimumExpanding, Policy.Fixed)
173181
url_combo.setEditable(True)
@@ -249,7 +257,13 @@ def browse_file(self, in_demos=False):
249257

250258
# Open a file, create data from it and send it over the data channel
251259
def load_data(self):
260+
self.editor_model.set_domain(None)
252261
self.reader = self._get_reader()
262+
if not self.reader:
263+
self.data = None
264+
self.send("Data", None)
265+
self.info.setText("No data.")
266+
return
253267
self._update_sheet_combo()
254268

255269
errors = []
@@ -288,7 +302,9 @@ def _get_reader(self):
288302
reader.select_sheet(self.recent_paths[0].sheet)
289303
return reader
290304
elif self.source == self.URL:
291-
return UrlReader(self.url_combo.currentText())
305+
url = self.url_combo.currentText().strip()
306+
if url:
307+
return UrlReader(url)
292308

293309
def _update_sheet_combo(self):
294310
if len(self.reader.sheets) < 2:

Orange/widgets/utils/domaineditor.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,17 @@ def discrete_value_display(value_list):
5555
return result
5656

5757
self.modelAboutToBeReset.emit()
58-
self.variables[:] = self.original = [
59-
[var.name, type(var), place,
60-
discrete_value_display(var.values) if var.is_discrete else "",
61-
may_be_numeric(var)]
62-
for place, vars in enumerate(
63-
(domain.attributes, domain.class_vars, domain.metas))
64-
for var in vars
65-
]
58+
if domain is None:
59+
self.variables.clear()
60+
else:
61+
self.variables[:] = self.original = [
62+
[var.name, type(var), place,
63+
discrete_value_display(var.values) if var.is_discrete else "",
64+
may_be_numeric(var)]
65+
for place, vars in enumerate(
66+
(domain.attributes, domain.class_vars, domain.metas))
67+
for var in vars
68+
]
6669
self.modelReset.emit()
6770

6871
def reset(self):

0 commit comments

Comments
 (0)