class Ui_TimeSeriesVariableResolutionEditor(object): def setupUi(self, TimeSeriesVariableResolutionEditor): if not TimeSeriesVariableResolutionEditor.objectName(): TimeSeriesVariableResolutionEditor.setObjectName(u"TimeSeriesVariableResolutionEditor") TimeSeriesVariableResolutionEditor.resize(718, 478) self.verticalLayout = QVBoxLayout(TimeSeriesVariableResolutionEditor) self.verticalLayout.setObjectName(u"verticalLayout") self.splitter = QSplitter(TimeSeriesVariableResolutionEditor) self.splitter.setObjectName(u"splitter") self.splitter.setOrientation(Qt.Horizontal) self.verticalLayoutWidget = QWidget(self.splitter) self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget") self.left_layout = QVBoxLayout(self.verticalLayoutWidget) self.left_layout.setObjectName(u"left_layout") self.left_layout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_2 = QHBoxLayout() self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") self.ignore_year_check_box = QCheckBox(self.verticalLayoutWidget) self.ignore_year_check_box.setObjectName(u"ignore_year_check_box") self.horizontalLayout_2.addWidget(self.ignore_year_check_box) self.repeat_check_box = QCheckBox(self.verticalLayoutWidget) self.repeat_check_box.setObjectName(u"repeat_check_box") self.horizontalLayout_2.addWidget(self.repeat_check_box) self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout_2.addItem(self.horizontalSpacer_3) self.left_layout.addLayout(self.horizontalLayout_2) self.time_series_table = IndexedValueTableView(self.verticalLayoutWidget) self.time_series_table.setObjectName(u"time_series_table") self.left_layout.addWidget(self.time_series_table) self.splitter.addWidget(self.verticalLayoutWidget) self.plot_widget = PlotWidget(self.splitter) self.plot_widget.setObjectName(u"plot_widget") self.splitter.addWidget(self.plot_widget) self.verticalLayout.addWidget(self.splitter) self.retranslateUi(TimeSeriesVariableResolutionEditor) QMetaObject.connectSlotsByName(TimeSeriesVariableResolutionEditor) # setupUi def retranslateUi(self, TimeSeriesVariableResolutionEditor): TimeSeriesVariableResolutionEditor.setWindowTitle(QCoreApplication.translate("TimeSeriesVariableResolutionEditor", u"Form", None)) self.ignore_year_check_box.setText(QCoreApplication.translate("TimeSeriesVariableResolutionEditor", u"Ignore year", None)) self.repeat_check_box.setText(QCoreApplication.translate("TimeSeriesVariableResolutionEditor", u"Repeat", None))
def setUp(self): QApplication.clipboard().clear() self._table_view = IndexedValueTableView(parent=None) series = TimeSeriesVariableResolution( [ "2019-08-08T12:00", "2019-08-08T13:00", "2019-08-08T14:00", "2019-08-08T15:00" ], [1.1, 2.2, 3.3, 4.4], False, False, ) model = TimeSeriesModelVariableResolution(series) self._table_view.setModel(model)
def setupUi(self, TimePatternEditor): if not TimePatternEditor.objectName(): TimePatternEditor.setObjectName(u"TimePatternEditor") TimePatternEditor.resize(586, 443) self.verticalLayout = QVBoxLayout(TimePatternEditor) self.verticalLayout.setObjectName(u"verticalLayout") self.pattern_edit_table = IndexedValueTableView(TimePatternEditor) self.pattern_edit_table.setObjectName(u"pattern_edit_table") self.verticalLayout.addWidget(self.pattern_edit_table) self.retranslateUi(TimePatternEditor) QMetaObject.connectSlotsByName(TimePatternEditor)
class Ui_TimePatternEditor(object): def setupUi(self, TimePatternEditor): if not TimePatternEditor.objectName(): TimePatternEditor.setObjectName(u"TimePatternEditor") TimePatternEditor.resize(586, 443) self.verticalLayout = QVBoxLayout(TimePatternEditor) self.verticalLayout.setObjectName(u"verticalLayout") self.pattern_edit_table = IndexedValueTableView(TimePatternEditor) self.pattern_edit_table.setObjectName(u"pattern_edit_table") self.verticalLayout.addWidget(self.pattern_edit_table) self.retranslateUi(TimePatternEditor) QMetaObject.connectSlotsByName(TimePatternEditor) # setupUi def retranslateUi(self, TimePatternEditor): TimePatternEditor.setWindowTitle(QCoreApplication.translate("TimePatternEditor", u"Form", None))
class TestIndexedValueTableView(unittest.TestCase): @classmethod def setUpClass(cls): if not QApplication.instance(): QApplication() def setUp(self): QApplication.clipboard().clear() self._table_view = IndexedValueTableView(parent=None) series = TimeSeriesVariableResolution( [ "2019-08-08T12:00", "2019-08-08T13:00", "2019-08-08T14:00", "2019-08-08T15:00" ], [1.1, 2.2, 3.3, 4.4], False, False, ) model = TimeSeriesModelVariableResolution(series) self._table_view.setModel(model) def test_copy(self): selection_model = self._table_view.selectionModel() model = self._table_view.model() selection_model.select(model.index(0, 0), QItemSelectionModel.Select) selection_model.select(model.index(1, 1), QItemSelectionModel.Select) selection_model.select(model.index(2, 0), QItemSelectionModel.Select) self._table_view.copy() copied = QApplication.clipboard().text() self.assertEqual( copied, "2019-08-08T12:00:00\t\r\n\t{:n}\r\n2019-08-08T14:00:00\t\r\n". format(2.2)) def test_paste_single_value(self): selection_model = self._table_view.selectionModel() model = self._table_view.model() selection_model.select(model.index(0, 1), QItemSelectionModel.Select) copied_data = locale.str(-1.1) QApplication.clipboard().setText(copied_data) self._table_view.paste() series = TimeSeriesVariableResolution( [ "2019-08-08T12:00", "2019-08-08T13:00", "2019-08-08T14:00", "2019-08-08T15:00" ], [-1.1, 2.2, 3.3, 4.4], False, False, ) self.assertEqual(model.value, series) def test_paste_single_index(self): selection_model = self._table_view.selectionModel() model = self._table_view.model() selection_model.select(model.index(0, 0), QItemSelectionModel.Select) copied_data = "2019-08-08T00:00" QApplication.clipboard().setText(copied_data) self._table_view.paste() series = TimeSeriesVariableResolution( [ "2019-08-08T00:00", "2019-08-08T13:00", "2019-08-08T14:00", "2019-08-08T15:00" ], [1.1, 2.2, 3.3, 4.4], False, False, ) self.assertEqual(model.value, series) def test_pasting_multiple_columns_to_last_row_expands_model(self): selection_model = self._table_view.selectionModel() model = self._table_view.model() selection_model.select(model.index(3, 1), QItemSelectionModel.Select) copied_data = "2019-08-08T17:00\t{:n}\n2019-08-08T18:00\t{:n}".format( -4.4, -5.5) QApplication.clipboard().setText(copied_data) self._table_view.paste() series = TimeSeriesVariableResolution( [ "2019-08-08T12:00", "2019-08-08T13:00", "2019-08-08T14:00", "2019-08-08T17:00", "2019-08-08T18:00" ], [1.1, 2.2, 3.3, -4.4, -5.5], False, False, ) self.assertEqual(model.value, series) def test_pasting_single_column_to_last_row_expands_model(self): selection_model = self._table_view.selectionModel() model = self._table_view.model() selection_model.select(model.index(3, 0), QItemSelectionModel.Select) copied_data = "2019-08-08T17:00\n2019-08-08T18:00" QApplication.clipboard().setText(copied_data) self._table_view.paste() series = TimeSeriesVariableResolution( [ "2019-08-08T12:00", "2019-08-08T13:00", "2019-08-08T14:00", "2019-08-08T17:00", "2019-08-08T18:00" ], [1.1, 2.2, 3.3, 4.4, 0.0], False, False, ) self.assertEqual(model.value, series) def test_paste_to_multirow_selection_limits_pasted_data(self): selection_model = self._table_view.selectionModel() model = self._table_view.model() selection_model.select(model.index(1, 0), QItemSelectionModel.Select) selection_model.select(model.index(1, 1), QItemSelectionModel.Select) selection_model.select(model.index(2, 0), QItemSelectionModel.Select) selection_model.select(model.index(2, 1), QItemSelectionModel.Select) copied_data = "2019-08-08T12:30\t{:n}\n2019-08-08T13:30\t{:n}\n2019-08-08T14:30\t{:n}".format( -2.2, -3.3, -4.4) QApplication.clipboard().setText(copied_data) self._table_view.paste() series = TimeSeriesVariableResolution( [ "2019-08-08T12:00", "2019-08-08T12:30", "2019-08-08T13:30", "2019-08-08T15:00" ], [1.1, -2.2, -3.3, 4.4], False, False, ) self.assertEqual(model.value, series) def test_paste_to_larger_selection_overrides_first_rows_only(self): selection_model = self._table_view.selectionModel() model = self._table_view.model() selection_model.select(model.index(0, 0), QItemSelectionModel.Select) selection_model.select(model.index(0, 1), QItemSelectionModel.Select) selection_model.select(model.index(1, 0), QItemSelectionModel.Select) selection_model.select(model.index(1, 1), QItemSelectionModel.Select) selection_model.select(model.index(2, 0), QItemSelectionModel.Select) selection_model.select(model.index(2, 1), QItemSelectionModel.Select) copied_data = "2019-08-08T12:30\t{:n}\n2019-08-08T13:30\t{:n}".format( -1.1, -2.2) QApplication.clipboard().setText(copied_data) self._table_view.paste() series = TimeSeriesVariableResolution( [ "2019-08-08T12:30", "2019-08-08T13:30", "2019-08-08T14:00", "2019-08-08T15:00" ], [-1.1, -2.2, 3.3, 4.4], False, False, ) self.assertEqual(model.value, series) def test_pasted_cells_are_selected(self): selection_model = self._table_view.selectionModel() model = self._table_view.model() selection_model.select(model.index(0, 1), QItemSelectionModel.Select) copied_data = locale.str(-1.1) + '\n' + locale.str(-2.2) QApplication.clipboard().setText(copied_data) self._table_view.paste() selected_indexes = selection_model.selectedIndexes() self.assertEqual(len(selected_indexes), 2) self.assertTrue(model.index(0, 1) in selected_indexes) self.assertTrue(model.index(1, 1) in selected_indexes)