Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 25 additions & 11 deletions Orange/widgets/data/owtable.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,14 @@
from scipy.sparse import issparse

from AnyQt.QtWidgets import (
QTableView, QHeaderView, QAbstractButton, QAction, QApplication,
QStyleOptionHeader, QStyle, QStylePainter, QStyledItemDelegate
QTableView, QHeaderView, QAbstractButton, QApplication, QStyleOptionHeader,
QStyle, QStylePainter, QStyledItemDelegate
)
from AnyQt.QtGui import QColor, QKeySequence, QClipboard
from AnyQt.QtGui import QColor, QClipboard
from AnyQt.QtCore import (
Qt, QSize, QEvent, QByteArray, QMimeData, QObject, QMetaObject,
QAbstractProxyModel, QIdentityProxyModel, QModelIndex,
QItemSelectionModel, QItemSelection, QItemSelectionRange,
QT_VERSION
QItemSelectionModel, QItemSelection, QItemSelectionRange
)
from AnyQt.QtCore import pyqtSlot as Slot

Expand All @@ -33,8 +32,7 @@
from Orange.statistics import basic_stats

from Orange.widgets import widget, gui
from Orange.widgets.settings import (Setting, ContextSetting,
DomainContextHandler)
from Orange.widgets.settings import Setting, DomainContextHandler
from Orange.widgets.widget import Input, Output
from Orange.widgets.utils import datacaching
from Orange.widgets.utils.annotated_data import (create_annotated_table,
Expand Down Expand Up @@ -390,14 +388,19 @@ class Outputs:
color_by_class = Setting(True)
settingsHandler = DomainContextHandler(
match_values=DomainContextHandler.MATCH_VALUES_ALL)
selected_rows = ContextSetting([])
selected_cols = ContextSetting([])
selected_rows = Setting([], schema_only=True)
selected_cols = Setting([], schema_only=True)

def __init__(self):
super().__init__()

self._inputs = OrderedDict()

self.__pending_selected_rows = self.selected_rows
self.selected_rows = None
self.__pending_selected_cols = self.selected_cols
self.selected_cols = None

self.dist_color = QColor(*self.dist_color_RGB)

info_box = gui.vBox(self.controlArea, "Info")
Expand Down Expand Up @@ -514,9 +517,20 @@ def update(f):
self.set_info(current._input_slot.summary)

self.tabs.tabBar().setVisible(self.tabs.count() > 1)
self.selected_rows = []
self.selected_cols = []
self.openContext(data)

if self.__pending_selected_rows is not None:
self.selected_rows = self.__pending_selected_rows
self.__pending_selected_rows = None
else:
self.selected_rows = []

if self.__pending_selected_cols is not None:
self.selected_cols = self.__pending_selected_cols
self.__pending_selected_cols = None
else:
self.selected_cols = []

self.set_selection()
self.commit()

Expand Down
8 changes: 8 additions & 0 deletions Orange/widgets/data/tests/test_owtable.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# pylint: disable=missing-docstring
from Orange.widgets.data.owtable import OWDataTable
from Orange.widgets.tests.base import WidgetTest, WidgetOutputsTestMixin
from Orange.data import Table


class TestOWDataTable(WidgetTest, WidgetOutputsTestMixin):
Expand Down Expand Up @@ -30,6 +31,13 @@ def test_data_model(self):
self.assertEqual(self.widget.tabs.widget(0).model().rowCount(),
len(self.data))

def test_reset_select(self):
self.send_signal(self.widget.Inputs.data, self.data)
self._select_data()
self.send_signal(self.widget.Inputs.data, Table('heart_disease'))
self.assertListEqual([], self.widget.selected_cols)
self.assertListEqual([], self.widget.selected_rows)

def _select_data(self):
self.widget.selected_cols = list(range(len(self.data.domain)))
self.widget.selected_rows = list(range(0, len(self.data.domain), 10))
Expand Down