Skip to content

Commit 7562830

Browse files
Merge pull request #86 from chrisjbillington/config-fix
Use labconfig.save_appconfig and load_appconfig
2 parents 2c0a163 + 4eb1711 commit 7562830

File tree

1 file changed

+64
-102
lines changed

1 file changed

+64
-102
lines changed

runmanager/__main__.py

Lines changed: 64 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848

4949
splash.update_text('importing labscript suite modules')
5050
from labscript_utils.ls_zprocess import zmq_get, ProcessTree, ZMQServer
51-
from labscript_utils.labconfig import LabConfig
51+
from labscript_utils.labconfig import LabConfig, save_appconfig, load_appconfig
5252
from labscript_utils.setup_logging import setup_logging
5353
import labscript_utils.shared_drive as shared_drive
5454
from labscript_utils import dedent
@@ -3040,10 +3040,10 @@ def get_save_data(self):
30403040
shot_output_folder = ''
30413041

30423042
# Get the server hostnames:
3043-
BLACS_host = self.ui.lineEdit_BLACS_hostname.text()
3043+
blacs_host = self.ui.lineEdit_BLACS_hostname.text()
30443044

30453045
send_to_runviewer = self.ui.checkBox_view_shots.isChecked()
3046-
send_to_BLACS = self.ui.checkBox_run_shots.isChecked()
3046+
send_to_blacs = self.ui.checkBox_run_shots.isChecked()
30473047
shuffle = self.ui.pushButton_shuffle.isChecked()
30483048

30493049
# axes tab information
@@ -3062,19 +3062,17 @@ def get_save_data(self):
30623062
'shot_output_folder': shot_output_folder,
30633063
'is_using_default_shot_output_folder': is_using_default_shot_output_folder,
30643064
'send_to_runviewer': send_to_runviewer,
3065-
'send_to_BLACS': send_to_BLACS,
3065+
'send_to_blacs': send_to_blacs,
30663066
'shuffle': shuffle,
30673067
'axes': axes,
3068-
'BLACS_host': BLACS_host}
3068+
'blacs_host': blacs_host}
30693069
return save_data
30703070

30713071
def save_configuration(self, save_file):
3072-
runmanager_config = LabConfig(save_file)
30733072
save_data = self.get_save_data()
30743073
self.last_save_config_file = save_file
30753074
self.last_save_data = save_data
3076-
for key, value in save_data.items():
3077-
runmanager_config.set('runmanager_state', key, pprint.pformat(value))
3075+
save_appconfig(save_file, {'runmanager_state': save_data})
30783076

30793077
def on_load_configuration_triggered(self):
30803078
save_data = self.get_save_data()
@@ -3117,7 +3115,7 @@ def load_configuration(self, filename):
31173115
self.close_globals_file(globals_file, confirm=False)
31183116
# Ensure folder exists, if this was opened programmatically we are
31193117
# creating the file, so the directory had better exist!
3120-
runmanager_config = LabConfig(filename)
3118+
runmanager_config = load_appconfig(filename).get('runmanager_state', {})
31213119

31223120
has_been_a_warning = [False]
31233121
def warning(message):
@@ -3126,118 +3124,82 @@ def warning(message):
31263124
self.output_box.output('\n')
31273125
self.output_box.output('Warning: %s\n' % message, red=True)
31283126

3129-
try:
3130-
h5_files_open = ast.literal_eval(runmanager_config.get('runmanager_state', 'h5_files_open'))
3131-
except Exception:
3132-
pass
3133-
else:
3134-
for globals_file in h5_files_open:
3135-
if os.path.exists(globals_file):
3136-
try:
3137-
self.open_globals_file(globals_file)
3138-
self.last_opened_globals_folder = os.path.dirname(globals_file)
3139-
except Exception:
3140-
raise_exception_in_thread(sys.exc_info())
3141-
continue
3142-
else:
3143-
self.output_box.output('\nWarning: globals file %s no longer exists\n' % globals_file, red=True)
3144-
try:
3145-
active_groups = ast.literal_eval(runmanager_config.get('runmanager_state', 'active_groups'))
3146-
except Exception:
3147-
pass
3148-
else:
3149-
for globals_file, group_name in active_groups:
3150-
try:
3151-
group_active_item = self.get_group_item_by_name(globals_file, group_name, self.GROUPS_COL_ACTIVE)
3152-
group_active_item.setCheckState(QtCore.Qt.Checked)
3153-
except LookupError:
3154-
warning("previously active group '%s' in %s no longer exists" % (group_name, globals_file))
3155-
try:
3156-
groups_open = ast.literal_eval(runmanager_config.get('runmanager_state', 'groups_open'))
3157-
except Exception:
3158-
pass
3159-
else:
3160-
for globals_file, group_name in groups_open:
3161-
# First check if it exists:
3127+
for globals_file in runmanager_config.get('h5_files_open', []):
3128+
if os.path.exists(globals_file):
31623129
try:
3163-
self.get_group_item_by_name(globals_file, group_name, self.GROUPS_COL_NAME)
3164-
except LookupError:
3165-
warning("previously open group '%s' in %s no longer exists" % (group_name, globals_file))
3166-
else:
3167-
self.open_group(globals_file, group_name)
3130+
self.open_globals_file(globals_file)
3131+
self.last_opened_globals_folder = os.path.dirname(globals_file)
3132+
except Exception:
3133+
raise_exception_in_thread(sys.exc_info())
3134+
continue
3135+
else:
3136+
self.output_box.output('\nWarning: globals file %s no longer exists\n' % globals_file, red=True)
31683137

3169-
try:
3170-
current_labscript_file = ast.literal_eval(
3171-
runmanager_config.get('runmanager_state', 'current_labscript_file'))
3172-
except Exception:
3173-
pass
3174-
else:
3138+
for globals_file, group_name in runmanager_config.get('active_groups', []):
3139+
try:
3140+
group_active_item = self.get_group_item_by_name(globals_file, group_name, self.GROUPS_COL_ACTIVE)
3141+
group_active_item.setCheckState(QtCore.Qt.Checked)
3142+
except LookupError:
3143+
warning("previously active group '%s' in %s no longer exists" % (group_name, globals_file))
3144+
3145+
for globals_file, group_name in runmanager_config.get('groups_open', []):
3146+
# First check if it exists:
3147+
try:
3148+
self.get_group_item_by_name(globals_file, group_name, self.GROUPS_COL_NAME)
3149+
except LookupError:
3150+
warning("previously open group '%s' in %s no longer exists" % (group_name, globals_file))
3151+
else:
3152+
self.open_group(globals_file, group_name)
3153+
3154+
current_labscript_file = runmanager_config.get('current_labscript_file')
3155+
if current_labscript_file is not None:
31753156
if os.path.exists(current_labscript_file):
31763157
self.ui.lineEdit_labscript_file.setText(current_labscript_file)
31773158
self.last_opened_labscript_folder = os.path.dirname(current_labscript_file)
31783159
elif current_labscript_file:
31793160
warning('previously selected labscript file %s no longer exists' % current_labscript_file)
3180-
try:
3181-
shot_output_folder = ast.literal_eval(runmanager_config.get('runmanager_state', 'shot_output_folder'))
3182-
except Exception:
3183-
pass
3184-
else:
3161+
3162+
shot_output_folder = runmanager_config.get('shot_output_folder')
3163+
if shot_output_folder is not None:
31853164
self.ui.lineEdit_shot_output_folder.setText(shot_output_folder)
31863165
self.last_selected_shot_output_folder = os.path.dirname(shot_output_folder)
3187-
try:
3188-
is_using_default_shot_output_folder = ast.literal_eval(
3189-
runmanager_config.get('runmanager_state', 'is_using_default_shot_output_folder'))
3190-
except Exception:
3191-
pass
3192-
else:
3193-
if is_using_default_shot_output_folder:
3194-
default_output_folder = self.get_default_output_folder()
3195-
self.ui.lineEdit_shot_output_folder.setText(default_output_folder)
3196-
self.last_selected_shot_output_folder = os.path.dirname(default_output_folder)
3197-
try:
3198-
send_to_runviewer = ast.literal_eval(runmanager_config.get('runmanager_state', 'send_to_runviewer'))
3199-
except Exception:
3200-
pass
3201-
else:
3166+
3167+
if runmanager_config.get('is_using_default_shot_output_folder', False):
3168+
default_output_folder = self.get_default_output_folder()
3169+
self.ui.lineEdit_shot_output_folder.setText(default_output_folder)
3170+
self.last_selected_shot_output_folder = os.path.dirname(default_output_folder)
3171+
3172+
send_to_runviewer = runmanager_config.get('send_to_runviewer')
3173+
if send_to_runviewer is not None:
32023174
self.ui.checkBox_view_shots.setChecked(send_to_runviewer)
3203-
try:
3204-
send_to_BLACS = ast.literal_eval(runmanager_config.get('runmanager_state', 'send_to_BLACS'))
3205-
except Exception:
3206-
pass
3207-
else:
3208-
self.ui.checkBox_run_shots.setChecked(send_to_BLACS)
3175+
3176+
send_to_blacs = runmanager_config.get('send_to_blacs')
3177+
if send_to_blacs is not None:
3178+
self.ui.checkBox_run_shots.setChecked(send_to_blacs)
32093179

32103180
# clear the axes model first
32113181
if self.axes_model.rowCount():
32123182
self.axes_model.removeRows(0, self.axes_model.rowCount())
3183+
32133184
# set the state of the global shuffle button. This ensure that if no axes items get loaded afterwards
32143185
# (e.g. because the globals in the .ini file are no longer expansion globals), then we still have
32153186
# an approximate state for the shuffle button that will apply to whatever globals are to be expanded.
3216-
try:
3217-
shuffle = ast.literal_eval(runmanager_config.get('runmanager_state', 'shuffle'))
3218-
except Exception:
3219-
pass
3220-
else:
3221-
if shuffle:
3222-
self.ui.pushButton_shuffle.setChecked(True)
3187+
if runmanager_config.get('shuffle', False):
3188+
self.ui.pushButton_shuffle.setChecked(True)
3189+
32233190
# Now load the axes states (order and shuffle). This will also ensure the shuffle button matches the
32243191
# state of these items (since we don't save/restore the tri-state nature of the global shuffle button
3225-
try:
3226-
axes = ast.literal_eval(runmanager_config.get('runmanager_state', 'axes'))
3227-
except Exception:
3228-
pass
3229-
else:
3230-
if isinstance(axes, list):
3231-
# clear model
3232-
for name, shuffle in axes:
3233-
self.add_item_to_axes_model(name, shuffle)
3234-
self.update_axes_indentation()
3235-
try:
3236-
BLACS_host = ast.literal_eval(runmanager_config.get('runmanager_state', 'BLACS_host'))
3237-
except Exception:
3238-
pass
3239-
else:
3240-
self.ui.lineEdit_BLACS_hostname.setText(BLACS_host)
3192+
axes = runmanager_config.get('axes')
3193+
if axes is not None and isinstance(axes, list):
3194+
# clear model
3195+
for name, shuffle in axes:
3196+
self.add_item_to_axes_model(name, shuffle)
3197+
self.update_axes_indentation()
3198+
3199+
blacs_host = runmanager_config.get('blacs_host')
3200+
if blacs_host is not None:
3201+
self.ui.lineEdit_BLACS_hostname.setText(blacs_host)
3202+
32413203
# Set as self.last_save_data:
32423204
save_data = self.get_save_data()
32433205
self.last_save_data = save_data

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy