29
29
from artisanlib .util import deltaLabelUTF8 , setDeviceDebugLogLevel , argb_colorname2rgba_colorname , rgba_colorname2argb_colorname , toInt
30
30
from artisanlib .dialogs import ArtisanResizeablDialog
31
31
from artisanlib .widgets import MyContentLimitedQComboBox , MyQComboBox , MyQDoubleSpinBox , wait_cursor
32
- from artisanlib .scale import Scale , SUPPORTED_SCALES , ScaleSpecs
32
+ from artisanlib .scale import SUPPORTED_SCALES , ScaleSpecs
33
33
34
34
35
35
_log : Final [logging .Logger ] = logging .getLogger (__name__ )
@@ -65,6 +65,13 @@ def __init__(self, parent:QWidget, aw:'ApplicationWindow', activeTab:int = 0) ->
65
65
self .org_santokerBLE = self .aw .santokerBLE
66
66
self .org_kaleidoSerial = self .aw .kaleidoSerial
67
67
68
+ self .org_scale1_model = self .aw .scale1_model
69
+ self .org_scale1_name = self .aw .scale1_name
70
+ self .org_scale1_id = self .aw .scale1_id
71
+ self .org_scale2_model = self .aw .scale2_model
72
+ self .org_scale2_name = self .aw .scale2_name
73
+ self .org_scale2_id = self .aw .scale2_id
74
+
68
75
################ TAB 1 WIDGETS
69
76
#ETcurve
70
77
self .ETcurve = QCheckBox (QApplication .translate ('CheckBox' , 'ET' ))
@@ -1446,8 +1453,6 @@ def __init__(self, parent:QWidget, aw:'ApplicationWindow', activeTab:int = 0) ->
1446
1453
1447
1454
self .scale1_devices :ScaleSpecs = [] # discovered scale1 devices
1448
1455
self .scale2_devices :ScaleSpecs = [] # discovered scale2 devices
1449
- self .scale1 :Optional [Scale ] = None
1450
- self .scale2 :Optional [Scale ] = None
1451
1456
1452
1457
scale1ModelLabel = QLabel (QApplication .translate ('Label' ,'Model' ))
1453
1458
self .scale1ModelComboBox = QComboBox ()
@@ -1471,6 +1476,9 @@ def __init__(self, parent:QWidget, aw:'ApplicationWindow', activeTab:int = 0) ->
1471
1476
self .scale1NameComboBox .currentIndexChanged .connect (self .scale1NameChanged )
1472
1477
self .scale1ScanButton .clicked .connect (self .scanScale1 )
1473
1478
1479
+ if self .aw .scale1_name and self .aw .scale1_id :
1480
+ self .updateScale1devices ([(self .aw .scale1_name , self .aw .scale1_id )])
1481
+
1474
1482
scale1Grid = QGridLayout ()
1475
1483
scale1Grid .addWidget (scale1ModelLabel ,0 ,0 )
1476
1484
scale1Grid .addWidget (self .scale1ModelComboBox ,0 ,1 )
@@ -1497,11 +1505,17 @@ def __init__(self, parent:QWidget, aw:'ApplicationWindow', activeTab:int = 0) ->
1497
1505
self .scale2ScanButton .setEnabled (False )
1498
1506
elif self .aw .scale2_model < len (SUPPORTED_SCALES ):
1499
1507
self .scale2ModelComboBox .setCurrentIndex (self .aw .scale2_model + 1 )
1500
- if self .aw .scale2_name is not None :
1508
+ if self .aw .scale2_name is None :
1509
+ self .scale2NameComboBox .setEnabled (False )
1510
+ else :
1501
1511
self .scale2NameComboBox .setEnabled (True )
1502
1512
self .scale2ModelComboBox .currentIndexChanged .connect (self .scale2ModelChanged )
1513
+ self .scale2NameComboBox .currentIndexChanged .connect (self .scale2NameChanged )
1503
1514
self .scale2ScanButton .clicked .connect (self .scanScale2 )
1504
1515
1516
+ if self .aw .scale2_name and self .aw .scale2_id :
1517
+ self .updateScale2devices ([(self .aw .scale2_name , self .aw .scale2_id )])
1518
+
1505
1519
scale2Grid = QGridLayout ()
1506
1520
scale2Grid .addWidget (scale2ModelLabel ,0 ,0 )
1507
1521
scale2Grid .addWidget (self .scale2ModelComboBox ,0 ,1 )
@@ -1692,14 +1706,17 @@ def scale1ModelChanged(self, i:int) -> None:
1692
1706
@pyqtSlot (int )
1693
1707
def scale1NameChanged (self , i :int ) -> None :
1694
1708
if 0 <= i < len (self .scale1_devices ) and self .aw .scale1_model is not None :
1695
- if self .scale1 is not None :
1696
- self .scale1 .disconnect ()
1697
- self .scale1 = self .aw .scale_manager .get_scale (self .aw .scale1_model , self .scale1_devices [i ][1 ])
1698
- if self .scale1 is not None :
1699
- self .scale1 .connect ()
1709
+ self .aw .scale1_name = self .scale1_devices [i ][0 ]
1710
+ self .aw .scale1_id = self .scale1_devices [i ][1 ]
1711
+ scale = self .aw .scale_manager .get_scale (self .aw .scale1_model , self .scale1_devices [i ][1 ])
1712
+ self .aw .scale_manager .set_scale1 (scale )
1713
+ if scale is not None :
1714
+ scale .connect ()
1700
1715
# i == -1 if self.scale1NameComboBox is empty!
1701
- elif self .scale1 is not None :
1702
- self .scale1 .disconnect ()
1716
+ else :
1717
+ scale1 = self .aw .scale_manager .get_scale1 ()
1718
+ if scale1 is not None :
1719
+ scale1 .disconnect ()
1703
1720
1704
1721
def updateScale1devices (self , devices :ScaleSpecs ) -> None :
1705
1722
self .scale1_devices = devices
@@ -1734,14 +1751,17 @@ def scale2ModelChanged(self, i:int) -> None:
1734
1751
@pyqtSlot (int )
1735
1752
def scale2NameChanged (self , i :int ) -> None :
1736
1753
if 0 <= i < len (self .scale2_devices ) and self .aw .scale2_model is not None :
1737
- if self .scale2 is not None :
1738
- self .scale2 .disconnect ()
1739
- self .scale2 = self .aw .scale_manager .get_scale (self .aw .scale2_model , self .scale2_devices [i ][1 ])
1740
- if self .scale2 is not None :
1741
- self .scale2 .connect ()
1754
+ self .aw .scale2_name = self .scale2_devices [i ][0 ]
1755
+ self .aw .scale2_id = self .scale2_devices [i ][1 ]
1756
+ scale = self .aw .scale_manager .get_scale (self .aw .scale2_model , self .scale2_devices [i ][1 ])
1757
+ self .aw .scale_manager .set_scale2 (scale )
1758
+ if scale is not None :
1759
+ scale .connect ()
1742
1760
# i == -1 if self.scale2NameComboBox is empty!
1743
- elif self .scale2 is not None :
1744
- self .scale2 .disconnect ()
1761
+ else :
1762
+ scale2 = self .aw .scale_manager .get_scale2 ()
1763
+ if scale2 is not None :
1764
+ scale2 .disconnect ()
1745
1765
1746
1766
def updateScale2devices (self , devices :ScaleSpecs ) -> None :
1747
1767
self .scale2_devices = devices
@@ -2725,13 +2745,19 @@ def setextracolor(self, ll:int, i:int) -> None:
2725
2745
_t , _e , exc_tb = sys .exc_info ()
2726
2746
self .aw .qmc .adderror ((QApplication .translate ('Error Message' , 'Exception:' ) + ' setextracolor(): {0}' ).format (str (e )),getattr (exc_tb , 'tb_lineno' , '?' ))
2727
2747
2748
+ # close is called from OK and CANCEL
2728
2749
def close (self ) -> bool :
2729
2750
self .closeHelp ()
2730
2751
settings = QSettings ()
2731
2752
#save window geometry
2732
2753
settings .setValue ('DeviceAssignmentGeometry' ,self .saveGeometry ())
2733
2754
self .aw .DeviceAssignmentDlg_activeTab = self .TabWidget .currentIndex ()
2734
2755
# self.aw.closeEventSettings() # save all app settings
2756
+
2757
+ if not self .aw .schedule_window :
2758
+ # we disconnect all scales again if scheduler is not active
2759
+ self .aw .scale_manager .disconnect_all ()
2760
+
2735
2761
return True
2736
2762
2737
2763
@pyqtSlot ()
@@ -2743,6 +2769,14 @@ def cancelEvent(self) -> None:
2743
2769
self .aw .santokerSerial = self .org_santokerSerial
2744
2770
self .aw .santokerBLE = self .org_santokerBLE
2745
2771
self .aw .kaleidoSerial = self .org_kaleidoSerial
2772
+
2773
+ self .aw .scale1_model = self .org_scale1_model
2774
+ self .aw .scale1_name = self .org_scale1_name
2775
+ self .aw .scale1_id = self .org_scale1_id
2776
+ self .aw .scale2_model = self .org_scale2_model
2777
+ self .aw .scale2_name = self .org_scale2_name
2778
+ self .aw .scale2_id = self .org_scale2_id
2779
+
2746
2780
self .reject ()
2747
2781
2748
2782
@pyqtSlot ()
0 commit comments