@@ -153,7 +153,6 @@ def __init__(self, **kwargs):
153153 "rtu" : [self .slave_start_add .text ,
154154 self .slave_end_add .text ,
155155 self .slave_count .text ]}
156- self .save = True
157156
158157 @property
159158 def modbus_device (self ):
@@ -657,10 +656,7 @@ def _restore(self):
657656 self .slave_count .text ) = self ._slave_misc [self .active_server ]
658657 self .slave_list ._trigger_reset_populate ()
659658
660- def reset_state (self ):
661- self .save = False
662-
663- def save_conf (self ):
659+ def save_state (self ):
664660 with open (SLAVES_FILE , 'w' ) as f :
665661 slave = [int (slave_no ) for slave_no in self .slave_list .adapter .data ]
666662 slaves_memory = []
@@ -671,12 +667,12 @@ def save_conf(self):
671667
672668 dump (dict (
673669 slaves_list = slave , active_server = self .active_server ,
674- port = self .port .text , slaves_memory = slaves_memory ,
675- save_state = self .save
670+ port = self .port .text , slaves_memory = slaves_memory
676671 ), f , indent = 4 )
677672
678- def load_conf (self ):
679- if not os .path .isfile (SLAVES_FILE ):
673+ def load_state (self ):
674+ if not bool (eval (self .config .get ("State" , "Load State" ))) and \
675+ not os .path .isfile (SLAVES_FILE ):
680676 return
681677
682678 with open (SLAVES_FILE , 'r' ) as f :
@@ -691,15 +687,11 @@ def load_conf(self):
691687 return
692688
693689 if 'active_server' not in data or 'port' not in data \
694- or 'slaves_list' not in data or 'slaves_memory' not in data or \
695- 'save_state' not in data :
690+ or 'slaves_list' not in data or 'slaves_memory' not in data :
696691 self .show_error ("LoadError: Failed to Load Config Error "
697692 "\n Save Your Config File it will be overwritten" )
698693 return
699694
700- if not data ['save_state' ]:
701- return
702-
703695 slaves_list = data ['slaves_list' ]
704696 if not len (slaves_list ):
705697 return
@@ -937,12 +929,22 @@ def load_conf(self):
937929 {
938930 "type": "numeric",
939931 "title": "Time interval",
940- "desc": "When simulation is enabled, data is changed for eveery 'n' seconds defined here",
932+ "desc": "When simulation is enabled, data is changed for every 'n' seconds defined here",
941933 "section": "Simulation",
942934 "key": "time interval"
935+ },
936+ {
937+ "type": "title",
938+ "title": "State"
939+ },
940+ {
941+ "type": "bool",
942+ "title": "Load State",
943+ "desc": "Whether the previous state should be loaded or not, if not the original state is loaded",
944+ "section": "State",
945+ "key": "Load State"
943946 }
944947
945-
946948]
947949"""
948950
@@ -960,7 +962,7 @@ def build(self):
960962 self .gui = Gui (
961963 modbus_log = os .path .join (self .user_data_dir , 'modbus.log' )
962964 )
963- self .gui .load_conf ()
965+ self .gui .load_state ()
964966 return self .gui
965967
966968 def on_pause (self ):
@@ -971,7 +973,7 @@ def on_stop(self):
971973 self .config .write ()
972974 if self .gui .server_running :
973975 self .gui ._stop_server ()
974- self .gui .save_conf ()
976+ self .gui .save_state ()
975977 if self .gui .server_running :
976978 if self .gui .simulating :
977979 self .gui .simulating = False
@@ -1016,6 +1018,9 @@ def build_config(self, config):
10161018 config .add_section ('Simulation' )
10171019 config .set ('Simulation' , 'time interval' , 1 )
10181020
1021+ config .add_section ('State' )
1022+ config .set ('State' , 'Load State' , 1 )
1023+
10191024 def build_settings (self , settings ):
10201025 settings .register_type ("numeric_range" , SettingIntegerWithRange )
10211026 settings .add_json_panel ('Modbus Settings' , self .config ,
0 commit comments