@@ -81,6 +81,10 @@ def _split(s):
81
81
"""Splits string by ',' and drops empty strings from resulting array."""
82
82
return [a .replace ('\\ ,' , ',' ) for a in re .split (r'(?<!\\),' , s ) if a ]
83
83
84
+ @staticmethod
85
+ def _join (lst ):
86
+ return ',' .join ([s .replace (',' , '\\ ,' ) for s in lst ])
87
+
84
88
def __init__ (self ):
85
89
"""Init from config file if it exists."""
86
90
if not os .path .isfile (self .config_file ):
@@ -121,7 +125,7 @@ def __init__(self):
121
125
f .SetPath ('/extra_fields' )
122
126
self .extra_fields = self ._split (f .Read (
123
127
'extra_fields' ,
124
- ',' . join (self .extra_fields )))
128
+ self . _join (self .extra_fields )))
125
129
self .normalize_field_case = f .ReadBool (
126
130
'normalize_field_case' , self .normalize_field_case )
127
131
self .board_variant_field = f .Read (
@@ -167,7 +171,7 @@ def save(self):
167
171
f .WriteBool ('include_nets' , self .include_nets )
168
172
169
173
f .SetPath ('/extra_fields' )
170
- f .Write ('extra_fields' , ',' . join (self .extra_fields ))
174
+ f .Write ('extra_fields' , self . _join (self .extra_fields ))
171
175
f .WriteBool ('normalize_field_case' , self .normalize_field_case )
172
176
f .Write ('board_variant_field' , self .board_variant_field )
173
177
f .Write ('board_variant_whitelist' ,
@@ -258,7 +262,12 @@ def transfer_to_dialog(self, dlg):
258
262
259
263
def safe_set_checked_strings (clb , strings ):
260
264
safe_strings = list (clb .GetStrings ())
261
- clb .SetCheckedStrings ([s for s in strings if s in safe_strings ])
265
+ if safe_strings :
266
+ present_strings = [s for s in strings if s in safe_strings ]
267
+ not_present_strings = [s for s in safe_strings if s not in strings ]
268
+ clb .Clear ()
269
+ clb .InsertItems (present_strings + not_present_strings , 0 )
270
+ clb .SetCheckedStrings (present_strings )
262
271
263
272
safe_set_checked_strings (dlg .extra .extraFieldsList , self .extra_fields )
264
273
dlg .extra .normalizeCaseCheckbox .Value = self .normalize_field_case
@@ -340,7 +349,7 @@ def add_options(self, parser, file_name_format_hint):
340
349
parser .add_argument ('--netlist-file' ,
341
350
help = 'Path to netlist or xml file.' )
342
351
parser .add_argument ('--extra-fields' ,
343
- default = ',' . join (self .extra_fields ),
352
+ default = self . _join (self .extra_fields ),
344
353
help = 'Comma separated list of extra fields to '
345
354
'pull from netlist or xml file.' )
346
355
parser .add_argument ('--normalize-field-case' ,
@@ -393,8 +402,8 @@ def set_from_args(self, args):
393
402
self .extra_fields = self ._split (args .extra_fields )
394
403
self .normalize_field_case = args .normalize_field_case
395
404
self .board_variant_field = args .variant_field
396
- self .board_variant_whitelist = args .variants_whitelist
397
- self .board_variant_blacklist = args .variants_blacklist
405
+ self .board_variant_whitelist = self . _split ( args .variants_whitelist )
406
+ self .board_variant_blacklist = self . _split ( args .variants_blacklist )
398
407
self .dnp_field = args .dnp_field
399
408
400
409
def get_html_config (self ):
0 commit comments