Skip to content

Commit 17e58e2

Browse files
committed
fixed issues #55 and #56
fixed filters and title not being updated when displaying array created via the console (closes #55). fixed array grid not being updated when selecting a variable when no variable was selected (closes #56)
1 parent 8c552a3 commit 17e58e2

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

larray_editor/arraywidget.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,6 @@ def __init__(self, parent, data, readonly=False, bg_value=None, bg_gradient=None
602602
layout.setContentsMargins(0, 0, 0, 0)
603603
self.setLayout(layout)
604604
self.set_data(data, bg_value=bg_value, bg_gradient=bg_gradient)
605-
self.set_filters()
606605

607606
# See http://doc.qt.io/qt-4.8/qt-draganddrop-fridgemagnets-dragwidget-cpp.html for an example
608607
self.setAcceptDrops(True)
@@ -670,7 +669,6 @@ def dropEvent(self, event):
670669
new_axes.insert(new_index, new_axes.pop(new_axes[previous_index]))
671670
la_data = la_data.transpose(new_axes)
672671
self.set_data(la_data, self.model_data.bg_gradient, self.model_data.bg_value)
673-
self.set_filters()
674672

675673
event.setDropAction(Qt.MoveAction)
676674
event.accept()
@@ -683,7 +681,7 @@ def set_data(self, data, bg_gradient=None, bg_value=None):
683681
self.data_adapter.set_data(data, bg_gradient=bg_gradient, bg_value=bg_value)
684682
self._update_digits_scientific(self.data_adapter.get_data())
685683

686-
def set_filters(self):
684+
# update filters
687685
la_data = self.data_adapter.get_data()
688686
axes = la_data.axes
689687
display_names = axes.display_names

larray_editor/editor.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ def setup_and_check(self, data, title='', readonly=False, minvalue=None, maxvalu
109109

110110
self._listwidget = QListWidget(self)
111111
self._listwidget.currentItemChanged.connect(self.on_item_changed)
112+
# this is a workaround for the fact that no currentItemChanged signal is emitted when no item was selected
113+
# before
114+
self._listwidget.itemSelectionChanged.connect(self.on_selection_changed)
112115
self._listwidget.setMinimumWidth(45)
113116

114117
del_item_shortcut = QShortcut(QKeySequence(Qt.Key_Delete), self._listwidget)
@@ -417,6 +420,14 @@ def ipython_cell_executed(self):
417420
if isinstance(cur_output, matplotlib.axes.Subplot) and 'inline' not in matplotlib.get_backend():
418421
show_figure(self, cur_output.figure)
419422

423+
def on_selection_changed(self, *args, **kwargs):
424+
selected = self._listwidget.selectedItems()
425+
if selected:
426+
assert len(selected) == 1
427+
selected_item = selected[0]
428+
assert isinstance(selected_item, QListWidgetItem)
429+
self.on_item_changed(selected_item, None)
430+
420431
def on_item_changed(self, curr, prev):
421432
if curr is not None:
422433
name = str(curr.text())
@@ -457,12 +468,11 @@ def update_title(self):
457468
self.setWindowTitle(' - '.join(title))
458469

459470
def set_current_array(self, array, name):
460-
self.current_array = array
461-
self.arraywidget.set_data(array)
462-
if name != '<expr>' and name != self.current_array_name:
463-
self.arraywidget.set_filters()
471+
if array is not self.current_array:
472+
self.current_array = array
473+
self.arraywidget.set_data(array)
464474
self.current_array_name = name
465-
self.update_title()
475+
self.update_title()
466476

467477
def _add_arrays(self, arrays):
468478
for k, v in arrays.items():
@@ -501,7 +511,6 @@ def new(self):
501511
if self._ask_to_save_if_unsaved_modifications():
502512
self._reset()
503513
self.arraywidget.set_data(np.empty(0))
504-
self.arraywidget.set_filters()
505514
self.set_current_file(None)
506515
self._unsaved_modifications = False
507516
self.statusBar().showMessage("Viewer has been reset", 4000)

0 commit comments

Comments
 (0)