diff --git a/InteractiveHtmlBom/core/config.py b/InteractiveHtmlBom/core/config.py index b39d0b6..5aa593d 100644 --- a/InteractiveHtmlBom/core/config.py +++ b/InteractiveHtmlBom/core/config.py @@ -39,7 +39,7 @@ class Config: 'dark_mode', 'show_pads', 'show_fabrication', 'show_silkscreen', 'highlight_pin1', 'redraw_on_drag', 'board_rotation', 'checkboxes', 'bom_view', 'layer_view', 'offset_back_rotation', - 'kicad_text_formatting' + 'kicad_text_formatting', 'mark_when_checked' ] default_show_group_fields = ["Value", "Footprint"] @@ -55,6 +55,7 @@ class Config: board_rotation = 0 offset_back_rotation = False checkboxes = ','.join(default_checkboxes) + mark_when_checked = '' bom_view = bom_view_choices[1] layer_view = layer_view_choices[1] compression = True @@ -121,6 +122,7 @@ def load_from_ini(self): self.offset_back_rotation = f.ReadBool( 'offset_back_rotation', self.offset_back_rotation) self.checkboxes = f.Read('checkboxes', self.checkboxes) + self.mark_when_checked = f.Read('mark_when_checked', self.mark_when_checked) self.bom_view = f.Read('bom_view', self.bom_view) self.layer_view = f.Read('layer_view', self.layer_view) self.compression = f.ReadBool('compression', self.compression) @@ -180,6 +182,7 @@ def save(self, locally): f.WriteInt('board_rotation', self.board_rotation) f.WriteBool('offset_back_rotation', self.offset_back_rotation) f.Write('checkboxes', self.checkboxes) + f.Write('mark_when_checked', self.mark_when_checked) f.Write('bom_view', self.bom_view) f.Write('layer_view', self.layer_view) f.WriteBool('compression', self.compression) @@ -226,6 +229,7 @@ def set_from_dialog(self, dlg): self.offset_back_rotation = \ dlg.html.offsetBackRotationCheckbox.IsChecked() self.checkboxes = dlg.html.bomCheckboxesCtrl.Value + # No dialog for mark_when_checked ... self.bom_view = self.bom_view_choices[dlg.html.bomDefaultView.Selection] self.layer_view = self.layer_view_choices[ dlg.html.layerDefaultView.Selection] @@ -275,6 +279,7 @@ def transfer_to_dialog(self, dlg): dlg.html.boardRotationSlider.Value = self.board_rotation dlg.html.offsetBackRotationCheckbox.Value = self.offset_back_rotation dlg.html.bomCheckboxesCtrl.Value = self.checkboxes + # No dialog for mark_when_checked ... dlg.html.bomDefaultView.Selection = self.bom_view_choices.index( self.bom_view) dlg.html.layerDefaultView.Selection = self.layer_view_choices.index( @@ -360,6 +365,10 @@ def add_options(cls, parser, version): parser.add_argument('--checkboxes', default=cls.checkboxes, help='Comma separated list of checkbox columns.') + parser.add_argument('--mark-when-checked', + default=cls.mark_when_checked, + help='Name of the checkbox column used to mark ' + 'components when checked.') parser.add_argument('--bom-view', default=cls.bom_view, choices=cls.bom_view_choices, help='Default BOM view.') @@ -446,6 +455,7 @@ def set_from_args(self, args): self.board_rotation = math.fmod(args.board_rotation // 5, 37) self.offset_back_rotation = args.offset_back_rotation self.checkboxes = args.checkboxes + self.mark_when_checked = args.mark_when_checked self.bom_view = args.bom_view self.layer_view = args.layer_view self.compression = not args.no_compression diff --git a/InteractiveHtmlBom/web/util.js b/InteractiveHtmlBom/web/util.js index 3f84b6d..e3f4947 100644 --- a/InteractiveHtmlBom/web/util.js +++ b/InteractiveHtmlBom/web/util.js @@ -549,7 +549,10 @@ function initDefaults() { setHighlightPin1(highlightpin1); document.forms.highlightpin1.highlightpin1.value = highlightpin1; - settings.markWhenChecked = readStorage("markWhenChecked") || ""; + settings.markWhenChecked = readStorage("markWhenChecked"); + if (settings.markWhenChecked == null) { + settings.markWhenChecked = config.mark_when_checked; + } populateMarkWhenCheckedOptions(); function initBooleanSetting(storageString, def, elementId, func) {