From 33d2ff26b389c3b21cdc272af133f1f2dca2b36d Mon Sep 17 00:00:00 2001 From: "benjamin.jakimow@geo.hu-berlin.de" <q8DTkxUg-BB> Date: Thu, 27 Jul 2017 09:30:01 +0200 Subject: [PATCH] TimeSeriesTableView context menu allows to check/uncheck selected rows and to hide/show the related observations TimeSeriesTableView context menu allows to copy values of selected cells to the clipboard --- timeseriesviewer/timeseries.py | 35 +++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/timeseriesviewer/timeseries.py b/timeseriesviewer/timeseries.py index 3e8ce2e9..b40664ae 100644 --- a/timeseriesviewer/timeseries.py +++ b/timeseriesviewer/timeseries.py @@ -336,11 +336,40 @@ class TimeSeriesTableView(QTableView): def contextMenuEvent(self, event): menu = QMenu(self) - menu.addAction('Check selected observation') - menu.addAction('Uncheck selected observation') - + a = menu.addAction('Copy value(s)') + a.triggered.connect(self.onCopyValues) + a = menu.addAction('Check') + a.triggered.connect(lambda : self.onSetCheckState(Qt.Checked)) + a = menu.addAction('Uncheck') + a.triggered.connect(lambda: self.onSetCheckState(Qt.Unchecked)) menu.popup(QCursor.pos()) + def onSetCheckState(self, checkState): + indices = self.selectionModel().selectedIndexes() + rows = sorted(list(set([i.row() for i in indices]))) + model = self.model() + if isinstance(model, TimeSeriesTableModel): + for r in rows: + idx = model.index(r,0) + model.setData(idx, checkState, Qt.CheckStateRole) + + def onCopyValues(self): + indices = self.selectionModel().selectedIndexes() + model = self.model() + if isinstance(model, TimeSeriesTableModel): + from collections import OrderedDict + R = OrderedDict() + for idx in indices: + if not idx.row() in R.keys(): + R[idx.row()] = [] + R[idx.row()].append(model.data(idx, Qt.DisplayRole)) + info = [] + for k, values in R.items(): + info.append(';'.join([str(v) for v in values])) + info = '\n'.join(info) + QApplication.clipboard().setText(info) + s = "" + def selectSelectedObservations(b): assert isinstance(b, bool) -- GitLab