From 40fd706cf73ae590f8e86678328fee545b49f4c2 Mon Sep 17 00:00:00 2001
From: Malte Kuhlmann <malte-kuhlmann@web.de>
Date: Fri, 12 Aug 2016 14:19:18 +0200
Subject: [PATCH] Having a deactivated image selected disables the widgets to
 change its properties. For functional images they are enabled if an active
 functional image is selected.

---
 vviewer/vviewer.py | 43 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/vviewer/vviewer.py b/vviewer/vviewer.py
index 9717834..7a00bfa 100755
--- a/vviewer/vviewer.py
+++ b/vviewer/vviewer.py
@@ -1880,6 +1880,7 @@ class vviewer(QtGui.QMainWindow):
         Activate image with index 'ind'.
         """
         if self.states[ind] == False:
+            self.enableControls()
             self.imagelist.item(ind).setCheckState(QtCore.Qt.Checked)
             self.states[ind] = True
             image_item_list_tmp = []
@@ -1903,6 +1904,7 @@ class vviewer(QtGui.QMainWindow):
 
     def deactivateImageIndex(self, ind):
         if self.states[ind]:
+            self.disableControls()
             self.imagelist.item(ind).setCheckState(QtCore.Qt.Unchecked)
             self.states[ind] = False
             self.removeFromSliceWidget(ind, 0)
@@ -2012,6 +2014,8 @@ class vviewer(QtGui.QMainWindow):
         self.threshold_write_block = True
         index = self.imagelist.currentRow()
         if index >= 0:
+            # enable controls
+            self.enableControls()
             # actions for all images
             self.images[index].pos_gradient.show()
             self.slider_pos.setEnabled(True)
@@ -2041,8 +2045,47 @@ class vviewer(QtGui.QMainWindow):
             # If there is a histogram window, update that, too.
             if self.hist is not None:
                 self.resetHistogram()
+            # if image is inactive: disable all controls
+            if self.states[index] is not True:
+                self.disableControls()
+            # image is functional and active enable functional widgets
+            if self.states[index] is True and self.images[index].type_d() == "4D":
+                self.enableFuncView()
         self.threshold_write_block = False
 
+    def disableControls(self):
+        self.min_neg.setEnabled(False)
+        self.max_neg.setEnabled(False)
+        self.min_pos.setEnabled(False)
+        self.max_pos.setEnabled(False)
+        self.slider_pos.setEnabled(False)
+        self.slider_pos.setGradientLeftColor(self.slider_color_off)
+        self.slider_pos.setGradientRightColor(self.slider_color_off)
+        self.slider_neg.setEnabled(False)
+        self.slider_neg.setGradientLeftColor(self.slider_color_off)
+        self.slider_neg.setGradientRightColor(self.slider_color_off)
+        self.min_button.setEnabled(False)
+        self.max_button.setEnabled(False)
+        self.disableFuncView()
+        
+    def enableControls(self):
+        index = self.imagelist.currentRow()
+        if self.images[index].type() is "two":
+            self.min_neg.setEnabled(True)
+            self.max_neg.setEnabled(True)
+            self.slider_neg.setEnabled(True)
+            self.slider_neg.setGradientLeftColor(self.slider_color)
+            self.slider_neg.setGradientRightColor(self.slider_color)
+        self.min_pos.setEnabled(True)
+        self.max_pos.setEnabled(True)
+        self.slider_pos.setEnabled(True)
+        self.slider_pos.setGradientLeftColor(self.slider_color)
+        self.slider_pos.setGradientRightColor(self.slider_color)
+        self.min_button.setEnabled(True)
+        self.max_button.setEnabled(True)
+        if self.images[index].type_d() == "4D":
+            self.enableFuncView()
+        
     def disableSliderNeg(self):
         self.slider_neg.setEnabled(False)
         self.slider_neg.setGradientLeftColor(self.slider_color_off)
-- 
GitLab