Bladeren bron

changed widget handling in _bif_read_and_update. now widgets register a observer on lastDataSet which is updated everytime a new DataSet is taken

Matze 4 jaren geleden
bovenliggende
commit
b9b142f6a6

+ 1 - 0
KCG/base/backend/board/board_config.py

@@ -63,6 +63,7 @@ class BoardConfiguration(QtGui.QWidget):
         """
         self._config = {
             'board_version' : 7,
+            'lastDataSet': None,
 
             'adc_number': 8,
             'samplingrate': 1,

+ 1 - 28
KCG/base/backendinterface.py

@@ -556,35 +556,8 @@ def _bif_read_and_update(board_id, read_type, dataOrName):
     else:
         data = DataSet(filename=dataOrName, delays=delays, tRev=config.tRev, bunchesPerTurn=config.bunches_per_turn, shiftFMC2=config.shiftFMC2)
 
-    ##############################
-    # Update Widgets with new Data
-    if live_plot_windows.hasWindows(board_id):
-        for plotwin in live_plot_windows.getWindows(board_id):
-            plotwin.plot_live(data=data)
+    board.get_board_config(board_id).update('lastDataSet', data)
 
-    #--
-    try:
-        from ..widgets import AdcWidget
-        if AdcWidget.updateData is not None:
-            adc_widget.updateData(data)
-    except:
-        pass
-    
-    #--
-    try:
-        from ..widgets import CorrelationWidget
-        cw = global_objects.get_global('area').widgets[CorrelationWidget.__widget_id__]
-        cw.updateDelay(data)
-    except Exception as e:
-        pass
-    
-    #-- 
-    try:
-        if cuda_windows is not None:
-            cuda_windows(board.get_board_status(board_id).last_file)
-    except:
-        pass
-    ##############################
     QtGui.qApp.processEvents()
 
     _bif_disable_wait_cursor()

+ 12 - 1
KCG/widgets/CorrelationWidget.py

@@ -26,6 +26,7 @@ try:
     #for KCG
     from ..base import kcgwidget as kcgw
     from ..base.backend import board
+    from ..base.backend.board import available_boards
     from ..base.backend.DataSet import DataSet
     from ..base.backend.TimeScan import TimeScan
     from .. import config
@@ -225,6 +226,12 @@ class CorrelationWidget(kcgw.KCGWidgets):
         self.plot()
         self.updateLabels()
 
+        try:
+            board.get_board_config(available_boards[0]).observe(self, self.updateDelay, 'lastDataSet')
+        except:
+            traceback.print_exc()
+            pass
+
 
     def openTimeScan(self):
         filename = str(QtGui.QFileDialog.getOpenFileName(self, "Select Time Scan"))
@@ -552,7 +559,11 @@ class CorrelationWidget(kcgw.KCGWidgets):
         """
         Event handler for closing this window
         """
-        #reopen file so that it is in read only mode
+        try:
+            board.get_board_config(available_boards[0]).unobserve(self, 'lastDataSet')
+        except:
+            pass
+
         if self.processbarWidget is not None:
             self.processbarWidget.close()
 

+ 7 - 0
KCG/widgets/PlotWidget.py

@@ -942,6 +942,11 @@ class PlotWidget(kcgw.KCGWidgets):
         self.layout.addLayout(self.from_to_layout)
         self.setLayout(self.layout)
 
+        self.board_config.observe(self, self.observeDataSet, 'lastDataSet')
+
+    def observeDataSet(self, data):
+        self.plot_live(data=data)
+
     def change_adc(self):
         """
         Change the adc for which data is plotted
@@ -1176,6 +1181,8 @@ class PlotWidget(kcgw.KCGWidgets):
         :param event: QEvent
         :return: -
         """
+        self.board_config.unobserve(self, 'lastDataSet')
+
         if not self.close_silent:
             if not self.parent.remove_plot(self.theId, silent=self.close_silent):
                 event.ignore()