diff --git a/src/js/axis-vars.js b/src/js/axis-vars.js index 92fc20f..e563f57 100644 --- a/src/js/axis-vars.js +++ b/src/js/axis-vars.js @@ -240,9 +240,10 @@ module.exports = { if (!homed && this.ask_home) { this.ask_home = false; - SvelteComponents.showDialog("HomeMachine", { - home: () => this.home() - }); + this.home() + // SvelteComponents.showDialog("HomeMachine", { + // home: () => this.home() + // }); } return { diff --git a/src/js/control-view.js b/src/js/control-view.js index c3e3afd..ae58bea 100644 --- a/src/js/control-view.js +++ b/src/js/control-view.js @@ -725,7 +725,9 @@ module.exports = { return; } const macrosList = this.state.macros_list.map(item => item.file_name); - var files_to_delete = selected_folder.files.map(item => item.file_name).filter(item => !macrosList.includes(item)); + var files_to_delete = selected_folder.files + .map(item => item.file_name) + .filter(item => !macrosList.includes(item)); if (selected_folder.name != "default") { this.config.gcode_list = this.config.gcode_list.filter(item => item.name != this.state.folder); } else { diff --git a/src/py/bbctrl/Config.py b/src/py/bbctrl/Config.py index dd7c780..429848d 100644 --- a/src/py/bbctrl/Config.py +++ b/src/py/bbctrl/Config.py @@ -78,7 +78,32 @@ class Config(object): def get(self, name, default = None): return self.values.get(name, default) + + def set(self, name, default = None): + path = self.ctrl.get_path('config.json') + try: + if os.path.exists(path): + with open(path, 'r') as f: config_data = json.load(f) + else: config_data = {'version': self.version} + + if name in config_data: + existing_value = config_data[name] + if isinstance(existing_value, dict) and isinstance(default, dict): + config_data[name] = {**existing_value, **default} + # existing_value.update(default) + elif isinstance(existing_value, list) and isinstance(default, list): + config_data[name].extend(default) + elif isinstance(existing_value, list): + config_data[name].append(default) + else: + config_data[name] = default + else: + config_data[name] = default + + self.save(config_data) + self.log.info('105: name:{} default:{}'.format(name, default)) + except Exception: self.log.exception('Internal error: Failed to upgrade config') def save(self, config): self._upgrade(config) diff --git a/src/py/bbctrl/Mach.py b/src/py/bbctrl/Mach.py index 2aee1ef..c1d6a33 100644 --- a/src/py/bbctrl/Mach.py +++ b/src/py/bbctrl/Mach.py @@ -275,6 +275,7 @@ class Mach(Comm): def home(self, axis, position = None): state = self.ctrl.state + config = self.ctrl.config if axis is None: axes = 'zxyabc' # TODO This should be configurable else: axes = '%c' % axis @@ -312,6 +313,12 @@ class Mach(Comm): self.planner.mdi(gcode, False) super().resume() + if 'offset_' + axis and axis + 'p' in config.values: + state.set('offset_' + axis, config.values['offset_' + axis]) + state.set(axis + 'p', 0) + self.log.info('Set the state value from config: {} = {}'.format('offset_' + axis , config.values['offset_' + axis])) + else: + self.log.info('Values is not present in config:{}'.format('offset_' + axis)) def unhome(self, axis): self.mdi('G28.2 %c0' % axis) diff --git a/src/py/bbctrl/State.py b/src/py/bbctrl/State.py index c66bdc1..b12c273 100644 --- a/src/py/bbctrl/State.py +++ b/src/py/bbctrl/State.py @@ -230,6 +230,14 @@ class State(object): def set(self, name, value): name = self.resolve(name) + keys = ['offset_x', 'offset_y', 'offset_z'] + + if name in keys and 'cycle' in self.vars: + self.log.info('236 cycle:{} name:{} value:{}'.format(self.vars['cycle'], name, value)) + if self.vars['cycle'] == 'mdi': + self.log.info('238 changing data %s : %d , %d' % (name, value, self.vars[name])) + self.ctrl.config.set('axes', {name: value}) + if not name in self.vars or self.vars[name] != value: self.vars[name] = value diff --git a/src/resources/config-template.json b/src/resources/config-template.json index 9d56bc5..535843b 100644 --- a/src/resources/config-template.json +++ b/src/resources/config-template.json @@ -653,6 +653,21 @@ } }, + "axes": { + "offset_x": { + "type": "float", + "default": 0 + }, + "offset_y": { + "type": "float", + "default": 0 + }, + "offset_z": { + "type": "float", + "default": 0 + } + }, + "admin": { "auto-check-upgrade": { "type": "bool",