From 07cc610b7001d87c86a67743e23aa1788cc80dca Mon Sep 17 00:00:00 2001
From: Pieter Eendebak <pieter.eendebak@gmail.com>
Date: Mon, 6 Jul 2020 16:37:11 +0200
Subject: [PATCH 1/2] cleanup gui setup code into for loop; fix testing code

---
 .../GUI/param_viewer/param_viewer_GUI_main.py | 59 ++++++++-----------
 1 file changed, 25 insertions(+), 34 deletions(-)

diff --git a/core_tools/GUI/param_viewer/param_viewer_GUI_main.py b/core_tools/GUI/param_viewer/param_viewer_GUI_main.py
index 7884057d..36456e8a 100644
--- a/core_tools/GUI/param_viewer/param_viewer_GUI_main.py
+++ b/core_tools/GUI/param_viewer/param_viewer_GUI_main.py
@@ -28,10 +28,10 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
             try:
                 self.gates_object = self.station.gates
             except:
-                raise ValueError('Default guess for gates object wrong, please supply manually')    
+                raise ValueError('Default guess for gates object wrong, please supply manually')
         self._step_size = 1 #mV
         instance_ready = True
-        
+
         # set graphical user interface
         self.app = QtCore.QCoreApplication.instance()
         if self.app is None:
@@ -40,7 +40,7 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
 
         super(QtWidgets.QMainWindow, self).__init__()
         self.setupUi(self)
-        
+
         # add RF parameters
         for src_name in self.gates_object.hardware.RF_source_names:
             inst = getattr(station, src_name)
@@ -69,7 +69,7 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
         self.show()
         if instance_ready == False:
             self.app.exec()
-    
+
     def _update_step(self, value):
         self.update_step(value())
 
@@ -93,12 +93,12 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
 
         i = len(self.rf_settings)
         layout = self.layout_RF
-        
+
         name = parameter.full_name
         unit = parameter.unit
         step_size = 0.5
         division = 1
-        
+
         if parameter.name[0:10] == 'frequency':
             division = 1e6
             step_size = 0.1
@@ -115,13 +115,13 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
         set_input = QtWidgets.QDoubleSpinBox(self.RFsettings)
         set_input.setObjectName(name + "_input")
         set_input.setMinimumSize(QtCore.QSize(100, 0))
-        
+
         # TODO collect boundaries out of the harware
         set_input.setRange(-1e9,1e9)
         set_input.valueChanged.connect(partial(self._set_set, parameter, set_input.value,division))
         set_input.setKeyboardTracking(False)
         set_input.setSingleStep(step_size)
-        
+
         layout.addWidget(set_input, i, 1, 1, 1)
 
         set_unit = QtWidgets.QLabel(self.RFsettings)
@@ -145,7 +145,7 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
         if virtual == True:
             i = len(self.virtual_gates)
             layout = self.layout_virtual
-        
+
         name = parameter.name
         unit = parameter.unit
 
@@ -160,7 +160,7 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
         voltage_input = QtWidgets.QDoubleSpinBox(self.virtualgates)
         voltage_input.setObjectName( name + "_input")
         voltage_input.setMinimumSize(QtCore.QSize(100, 0))
-        
+
         # TODO collect boundaries out of the harware
         voltage_input.setRange(-4000,4000.0)
         voltage_input.valueChanged.connect(partial(self._set_gate, parameter, voltage_input.value))
@@ -187,36 +187,24 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
         self.gates_object.hardware.sync_data()
 
     def _finish_gates_GUI(self):
-        # MAKE THIS INTO A FOR LOOP
-        i = len(self.real_gates) + 1
-
-        spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
-        self.layout_real.addItem(spacerItem, i, 0, 1, 1)
-
-        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.layout_real.addItem(spacerItem1, 0, 3, 1, 1)
 
-        i = len(self.virtual_gates) + 1
+        for items, layout_widget in [ (self.real_gates, self.layout_real), (self.virtual_gates, self.layout_virtual),
+                              (self.rf_settings, self.layout_RF)]:
+            i = len(items) + 1
 
-        spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
-        self.layout_virtual.addItem(spacerItem, i, 0, 1, 1)
+            spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
+            layout_widget.addItem(spacerItem, i, 0, 1, 1)
 
-        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.layout_virtual.addItem(spacerItem1, 0, 3, 1, 1)
-        
-        i = len(self.rf_settings) + 1
+            spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+            layout_widget.addItem(spacerItem1, 0, 3, 1, 1)
 
-        spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
-        self.layout_RF.addItem(spacerItem, i, 0, 1, 1)
-
-        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
-        self.layout_RF.addItem(spacerItem1, 0, 3, 1, 1)
+        self.setWindowTitle(f'Viewer for {self.gates_object}')
 
     def _update_parameters(self):
         '''
         updates the values of all the gates in the parameterviewer periodically
         '''
-        idx = self.tab_menu.currentIndex() 
+        idx = self.tab_menu.currentIndex()
 
         if idx == 0:
             params = self.real_gates
@@ -232,12 +220,12 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
             if not param.gui_input_param.hasFocus():
                 param.gui_input_param.setValue(param.param_parameter()/param.division)
 
-        
+
 
 if __name__ == "__main__":
     import sys
     import qcodes as qc
-    from V2_software.drivers.virtual_gates.examples.hardware_example import hardware_example 
+    from V2_software.drivers.virtual_gates.examples.hardware_example import hardware_example
     from V2_software.drivers.virtual_gates.instrument_drivers.virtual_dac import virtual_dac
     from V2_software.drivers.virtual_gates.instrument_drivers.gates import gates
 
@@ -247,10 +235,13 @@ if __name__ == "__main__":
     my_dac_4 = virtual_dac("dac_d", "virtual")
 
     hw =  hardware_example("hw")
+    hw.RF_source_names = []
     my_gates = gates("my_gates", hw, [my_dac_1, my_dac_2, my_dac_3, my_dac_4])
 
     # app = QtWidgets.QApplication(sys.argv)
     # MainWindow = QtWidgets.QMainWindow()
-    ui = param_viewer(my_gates)
+    station=qc.Station(my_gates)
+    ui = param_viewer(station, my_gates)
+
     # MainWindow.show()
     # sys.exit(app.exec_())
\ No newline at end of file
-- 
GitLab


From f039a242fe25e9e190ced0fad061227a53fe0ae6 Mon Sep 17 00:00:00 2001
From: Pieter Eendebak <pieter.eendebak@gmail.com>
Date: Mon, 6 Jul 2020 16:44:24 +0200
Subject: [PATCH 2/2] update type annotations and documentation

---
 .../GUI/param_viewer/param_viewer_GUI_main.py     | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/core_tools/GUI/param_viewer/param_viewer_GUI_main.py b/core_tools/GUI/param_viewer/param_viewer_GUI_main.py
index 36456e8a..85667040 100644
--- a/core_tools/GUI/param_viewer/param_viewer_GUI_main.py
+++ b/core_tools/GUI/param_viewer/param_viewer_GUI_main.py
@@ -1,7 +1,9 @@
 # -*- coding: utf-8 -*-
+from typing import Optional
 from core_tools.GUI.param_viewer.param_viewer_GUI_window import Ui_MainWindow
 from PyQt5 import QtCore, QtGui, QtWidgets
 from functools import partial
+import qcodes as qc
 from qcodes import Station
 import numpy as np
 from dataclasses import dataclass
@@ -15,7 +17,7 @@ class param_data_obj:
 
 class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
     """docstring for virt_gate_matrix_GUI"""
-    def __init__(self, station, gates_object = None):
+    def __init__(self, station : Station, gates_object: Optional[object] = None):
         if type(station) is not Station:
             raise Exception('Syntax changed, to support RF_settings now supply station')
         self.real_gates = list()
@@ -73,7 +75,8 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
     def _update_step(self, value):
         self.update_step(value())
 
-    def update_step(self, value):
+    def update_step(self, value : float):
+        """ Update step size of the parameter GUI elements with the specified value """
         self._step_size = value
         for gate in self.real_gates:
             gate.gui_input_param.setSingleStep(value)
@@ -82,13 +85,11 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
 
         self.step_size.setValue(value)
 
-    def _add_RFset(self, parameter):
-        '''
-        add a new gate.
+    def _add_RFset(self, parameter : qc.Parameter):
+        ''' Add a new RF.
 
         Args:
             parameter (QCoDeS parameter object) : parameter to add.
-            virtual (bool) : True in case this is a virtual gate.
         '''
 
         i = len(self.rf_settings)
@@ -130,7 +131,7 @@ class param_viewer(QtWidgets.QMainWindow, Ui_MainWindow):
         layout.addWidget(set_unit, i, 2, 1, 1)
         self.rf_settings.append(param_data_obj(parameter,  set_input, division))
 
-    def _add_gate(self, parameter, virtual):
+    def _add_gate(self, parameter : qc.Parameter, virtual : bool):
         '''
         add a new gate.
 
-- 
GitLab