RepRapFirmware style M23 select file
RepRapFirmware enumerates the gcode files starting at /gcode, it will also interpret any relative path as being relative to that folder. However a full absolute path will actually interpret as from the real root of the SD card :-(
This commit is contained in:
parent
ba4b7c09bf
commit
ac685703c1
6 changed files with 15 additions and 1 deletions
|
|
@ -434,6 +434,9 @@ Use the following settings to enable or disable OctoPrint features:
|
||||||
# Specifies whether support for SD printing and file management should be enabled
|
# Specifies whether support for SD printing and file management should be enabled
|
||||||
sdSupport: true
|
sdSupport: true
|
||||||
|
|
||||||
|
# Specifies whether firmware expects relative paths for selecting SD files
|
||||||
|
sdRelativePath: false
|
||||||
|
|
||||||
# Whether to always assume that an SD card is present in the printer.
|
# Whether to always assume that an SD card is present in the printer.
|
||||||
# Needed by some firmwares which don't report the SD card status properly.
|
# Needed by some firmwares which don't report the SD card status properly.
|
||||||
sdAlwaysAvailable: false
|
sdAlwaysAvailable: false
|
||||||
|
|
|
||||||
|
|
@ -362,7 +362,7 @@ class Printer(PrinterInterface, comm.MachineComPrintCallback):
|
||||||
|
|
||||||
self._printAfterSelect = printAfterSelect
|
self._printAfterSelect = printAfterSelect
|
||||||
self._posAfterSelect = pos
|
self._posAfterSelect = pos
|
||||||
self._comm.selectFile("/" + path if sd else path, sd)
|
self._comm.selectFile("/" + path if sd and not settings().getBoolean(["feature", "sdRelativePath"]) else path, sd)
|
||||||
self._setProgressData(completion=0)
|
self._setProgressData(completion=0)
|
||||||
self._setCurrentZ(None)
|
self._setCurrentZ(None)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ def getSettings():
|
||||||
"alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]),
|
"alwaysSendChecksum": s.getBoolean(["feature", "alwaysSendChecksum"]),
|
||||||
"neverSendChecksum": s.getBoolean(["feature", "neverSendChecksum"]),
|
"neverSendChecksum": s.getBoolean(["feature", "neverSendChecksum"]),
|
||||||
"sdSupport": s.getBoolean(["feature", "sdSupport"]),
|
"sdSupport": s.getBoolean(["feature", "sdSupport"]),
|
||||||
|
"sdRelativePath": s.getBoolean(["feature", "sdRelativePath"]),
|
||||||
"sdAlwaysAvailable": s.getBoolean(["feature", "sdAlwaysAvailable"]),
|
"sdAlwaysAvailable": s.getBoolean(["feature", "sdAlwaysAvailable"]),
|
||||||
"swallowOkAfterResend": s.getBoolean(["feature", "swallowOkAfterResend"]),
|
"swallowOkAfterResend": s.getBoolean(["feature", "swallowOkAfterResend"]),
|
||||||
"repetierTargetTemp": s.getBoolean(["feature", "repetierTargetTemp"]),
|
"repetierTargetTemp": s.getBoolean(["feature", "repetierTargetTemp"]),
|
||||||
|
|
@ -229,6 +230,7 @@ def _saveSettings(data):
|
||||||
if "alwaysSendChecksum" in data["feature"].keys(): s.setBoolean(["feature", "alwaysSendChecksum"], data["feature"]["alwaysSendChecksum"])
|
if "alwaysSendChecksum" in data["feature"].keys(): s.setBoolean(["feature", "alwaysSendChecksum"], data["feature"]["alwaysSendChecksum"])
|
||||||
if "neverSendChecksum" in data["feature"].keys(): s.setBoolean(["feature", "neverSendChecksum"], data["feature"]["neverSendChecksum"])
|
if "neverSendChecksum" in data["feature"].keys(): s.setBoolean(["feature", "neverSendChecksum"], data["feature"]["neverSendChecksum"])
|
||||||
if "sdSupport" in data["feature"].keys(): s.setBoolean(["feature", "sdSupport"], data["feature"]["sdSupport"])
|
if "sdSupport" in data["feature"].keys(): s.setBoolean(["feature", "sdSupport"], data["feature"]["sdSupport"])
|
||||||
|
if "sdRelativePath" in data["feature"].keys(): s.setBoolean(["feature", "sdRelativePath"], data["feature"]["sdRelativePath"])
|
||||||
if "sdAlwaysAvailable" in data["feature"].keys(): s.setBoolean(["feature", "sdAlwaysAvailable"], data["feature"]["sdAlwaysAvailable"])
|
if "sdAlwaysAvailable" in data["feature"].keys(): s.setBoolean(["feature", "sdAlwaysAvailable"], data["feature"]["sdAlwaysAvailable"])
|
||||||
if "swallowOkAfterResend" in data["feature"].keys(): s.setBoolean(["feature", "swallowOkAfterResend"], data["feature"]["swallowOkAfterResend"])
|
if "swallowOkAfterResend" in data["feature"].keys(): s.setBoolean(["feature", "swallowOkAfterResend"], data["feature"]["swallowOkAfterResend"])
|
||||||
if "repetierTargetTemp" in data["feature"].keys(): s.setBoolean(["feature", "repetierTargetTemp"], data["feature"]["repetierTargetTemp"])
|
if "repetierTargetTemp" in data["feature"].keys(): s.setBoolean(["feature", "repetierTargetTemp"], data["feature"]["repetierTargetTemp"])
|
||||||
|
|
|
||||||
|
|
@ -166,6 +166,7 @@ default_settings = {
|
||||||
"sendChecksumWithUnknownCommands": False,
|
"sendChecksumWithUnknownCommands": False,
|
||||||
"unknownCommandsNeedAck": False,
|
"unknownCommandsNeedAck": False,
|
||||||
"sdSupport": True,
|
"sdSupport": True,
|
||||||
|
"sdRelativePath": False,
|
||||||
"sdAlwaysAvailable": False,
|
"sdAlwaysAvailable": False,
|
||||||
"swallowOkAfterResend": True,
|
"swallowOkAfterResend": True,
|
||||||
"repetierTargetTemp": False,
|
"repetierTargetTemp": False,
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,7 @@ $(function() {
|
||||||
self.feature_waitForStart = ko.observable(undefined);
|
self.feature_waitForStart = ko.observable(undefined);
|
||||||
self.feature_sendChecksum = ko.observable("print");
|
self.feature_sendChecksum = ko.observable("print");
|
||||||
self.feature_sdSupport = ko.observable(undefined);
|
self.feature_sdSupport = ko.observable(undefined);
|
||||||
|
self.feature_sdRelativePath = ko.observable(undefined);
|
||||||
self.feature_sdAlwaysAvailable = ko.observable(undefined);
|
self.feature_sdAlwaysAvailable = ko.observable(undefined);
|
||||||
self.feature_swallowOkAfterResend = ko.observable(undefined);
|
self.feature_swallowOkAfterResend = ko.observable(undefined);
|
||||||
self.feature_repetierTargetTemp = ko.observable(undefined);
|
self.feature_repetierTargetTemp = ko.observable(undefined);
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,13 @@
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<div class="controls">
|
||||||
|
<label class="checkbox">
|
||||||
|
<input type="checkbox" data-bind="checked: feature_sdRelativePath" id="settings-sdRelativePath"> {{ _('Select SD files by relative path') }} <span class="label">{{ _('RepRap Firmware') }}</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<label class="checkbox">
|
<label class="checkbox">
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue