From f9a0e0d2207e73d043b1ef99e168b02521d478d8 Mon Sep 17 00:00:00 2001
From: "benjamin.jakimow@geo.hu-berlin.de" <q8DTkxUg-BB>
Date: Fri, 20 Jan 2017 18:45:42 +0100
Subject: [PATCH] refactoring

---
 timeseriesviewer/ui/docks.py | 93 ++++++++++++++++++++++++++++++++++--
 1 file changed, 90 insertions(+), 3 deletions(-)

diff --git a/timeseriesviewer/ui/docks.py b/timeseriesviewer/ui/docks.py
index ab09dee8..bd52b3a4 100644
--- a/timeseriesviewer/ui/docks.py
+++ b/timeseriesviewer/ui/docks.py
@@ -18,6 +18,9 @@ load = lambda p : loadUIFormClass(jp(DIR_UI,p))
 
 class TsvDockWidgetBase(QgsDockWidget):
 
+    def __init__(self, parent):
+        super(TsvDockWidgetBase, self).__init__(parent)
+        self.setupUi(self)
 
     def _blockSignals(self, widgets, block=True):
         states = dict()
@@ -41,17 +44,65 @@ class SensorDockUI(TsvDockWidgetBase, load('sensordock.ui')):
         self.setupUi(self)
 
 
-
 class RenderingDockUI(TsvDockWidgetBase, load('renderingdock.ui')):
     def __init__(self, parent=None):
         super(RenderingDockUI, self).__init__(parent)
         self.setupUi(self)
+        self.progress = dict()
+        self.spinBoxSubsetSizeX.valueChanged.connect(lambda: self.onSubsetValueChanged('X'))
+        self.spinBoxSubsetSizeY.valueChanged.connect(lambda: self.onSubsetValueChanged('Y'))
+
+        self.subsetRatio = None
+        self.lastSubsetSizeX = self.spinBoxSubsetSizeX.value()
+        self.lastSubsetSizeY = self.spinBoxSubsetSizeY.value()
+
+        self.subsetSizeWidgets = [self.spinBoxSubsetSizeX, self.spinBoxSubsetSizeY]
 
     def subsetSize(self):
         return QSize(self.spinBoxSubsetSizeX.value(),
                      self.spinBoxSubsetSizeY.value())
+    def onSubsetValueChanged(self, key):
+        if self.checkBoxKeepSubsetAspectRatio.isChecked():
+
+            if key == 'X':
+                v_old = self.lastSubsetSizeX
+                v_new = self.spinBoxSubsetSizeX.value()
+                s = self.spinBoxSubsetSizeY
+            elif key == 'Y':
+                v_old = self.lastSubsetSizeY
+                v_new = self.spinBoxSubsetSizeY.value()
+                s = self.spinBoxSubsetSizeX
+
+            oldState = s.blockSignals(True)
+            s.setValue(int(round(float(v_new) / v_old * s.value())))
+            s.blockSignals(oldState)
+
+        self.lastSubsetSizeX = self.spinBoxSubsetSizeX.value()
+        self.lastSubsetSizeY = self.spinBoxSubsetSizeY.value()
+
+        self.actionSetSubsetSize.activate(QAction.Trigger)
 
 
+    def addStartedWork(self, *args):
+        self.progress[args] = False
+        self.refreshProgressBar()
+
+
+    def refreshProgressBar(self):
+        #todo: do this delayed
+        self.progressBar.setMaximum(len(self.progress.keys()))
+        p = len([v for v in self.progress.values() if v == True])
+        self.progressBar.setValue(p)
+
+
+    def addFinishedWork(self, *args):
+        if args in self.progress.keys():
+            self.progress[args] = True
+
+        else:
+            s = ""
+        self.refreshProgressBar()
+
 class NavigationDockUI(TsvDockWidgetBase, load('navigationdock.ui')):
     from timeseriesviewer.timeseries import TimeSeriesDatum
 
@@ -201,14 +252,50 @@ class NavigationDockUI(TsvDockWidgetBase, load('navigationdock.ui')):
 class TimeSeriesDockUI(TsvDockWidgetBase, load('timeseriesdock.ui')):
     def __init__(self, parent=None):
         super(TimeSeriesDockUI, self).__init__(parent)
-        self.setupUi(self)
+        #self.setupUi(self)
+        self.btnAddTSD.setDefaultAction(parent.actionAddTSD)
+        self.btnRemoveTSD.setDefaultAction(parent.actionRemoveTSD)
+        self.btnLoadTS.setDefaultAction(parent.actionLoadTS)
+        self.btnSaveTS.setDefaultAction(parent.actionSaveTS)
+        self.btnClearTS.setDefaultAction(parent.actionClearTS)
+
+        self.connectTimeSeries(None)
+
+
+    def onSelectionChanged(self, *args):
+        self.btnRemoveTSD.setEnabled(self.SM is not None and len(self.SM.selectedRows()) > 0)
+
+
+        s = ""
+
+    def selectedTimeSeriesDates(self):
+        if self.SM is not None:
+            return [self.TSM.data(idx, Qt.UserRole) for idx in self.SM.selectedRows()]
+        return []
+
+    def connectTimeSeries(self, TS):
+        self.TS = TS
+        self.TSM = None
+        self.SM = None
+        self.timeSeriesInitialized = False
+        if TS is not None:
+            from timeseriesviewer.main import TimeSeriesTableModel
+            self.TSM = TimeSeriesTableModel(self.TS)
+            self.tableView_TimeSeries.setModel(self.TSM)
+            self.SM = QItemSelectionModel(self.TSM)
+            self.tableView_TimeSeries.setSelectionModel(self.SM)
+            self.SM.selectionChanged.connect(self.onSelectionChanged)
+            self.tableView_TimeSeries.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
+        self.onSelectionChanged()
 
 class MapViewDockUI(TsvDockWidgetBase, load('mapviewdock.ui')):
     def __init__(self, parent=None):
         super(MapViewDockUI, self).__init__(parent)
         self.setupUi(self)
 
-        self.dockLocationChanged.connect(self.adjustLayouts)
+        self.btnApplyStyles.setDefaultAction(self.actionApplyStyles)
+
+        #self.dockLocationChanged.connect(self.adjustLayouts)
 
     def toogleLayout(self, p):
         newLayout = None
-- 
GitLab