settings fixed
This commit is contained in:
parent
af6310f5d3
commit
4469f69cab
6 changed files with 99 additions and 245 deletions
|
|
@ -29,6 +29,36 @@ from .profile import Profile
|
|||
|
||||
blueprint = flask.Blueprint("plugin.svgtogcode", __name__)
|
||||
|
||||
@blueprint.route("/discovery.xml", methods=["GET"])
|
||||
def discovery(self):
|
||||
self._logger.debug("Rendering discovery.xml")
|
||||
|
||||
modelName = self._settings.get(["model", "name"])
|
||||
if not modelName:
|
||||
import octoprint.server
|
||||
modelName = "0.1"
|
||||
|
||||
vendor = self._settings.get(["model", "vendor"])
|
||||
vendorUrl = self._settings.get(["model", "vendorUrl"])
|
||||
if not vendor:
|
||||
vendor = "The Mr Beam Project"
|
||||
vendorUrl = "http://www.mr-beam.org/"
|
||||
|
||||
response = flask.make_response(flask.render_template("svgtogcode.xml.jinja2",
|
||||
friendlyName=self.get_instance_name(),
|
||||
manufacturer=vendor,
|
||||
manufacturerUrl=vendorUrl,
|
||||
modelName=modelName,
|
||||
modelDescription=self._settings.get(["model", "description"]),
|
||||
modelNumber=self._settings.get(["model", "number"]),
|
||||
modelUrl=self._settings.get(["model", "url"]),
|
||||
serialNumber=self._settings.get(["model", "serial"]),
|
||||
uuid=self.get_uuid(),
|
||||
presentationUrl=flask.url_for("index", _external=True)))
|
||||
response.headers['Content-Type'] = 'application/xml'
|
||||
return response
|
||||
|
||||
|
||||
@blueprint.route("/import", methods=["POST"])
|
||||
def importSvgToGcodeProfile():
|
||||
import datetime
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0"?>
|
||||
<root xmlns="urn:schemas-upnp-org:device-1-0">
|
||||
<specVersion>
|
||||
<major>1</major>
|
||||
<minor>0</minor>
|
||||
</specVersion>
|
||||
<device>
|
||||
<deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>
|
||||
<friendlyName>{{ friendlyName }}</friendlyName>
|
||||
<manufacturer>{{ manufacturer }}</manufacturer>
|
||||
{% if manufacturerUrl %}<manufacturerURL>{{ manufacturerUrl }}</manufacturerURL>{% endif %}
|
||||
<modelName>{{ modelName }}</modelName>
|
||||
{% if modelDescription %}<modelDescription>{{ modelDescription }}</modelDescription>{% endif %}
|
||||
{% if modelNumber %}<modelNumber>{{ modelNumber }}</modelNumber>{% endif %}
|
||||
{% if modelUrl %}<modelURL>{{ modelUrl }}</modelURL>{% endif %}
|
||||
{% if serialNumber %}<serialNumber>{{ serialNumber }}</serialNumber>{% endif %}
|
||||
<UDN>uuid:{{ uuid }}</UDN>
|
||||
<serviceList>
|
||||
</serviceList>
|
||||
<presentationURL>{{ presentationUrl }}</presentationURL>
|
||||
</device>
|
||||
</root>
|
||||
|
|
@ -146,7 +146,6 @@ class Printer(PrinterInterface, comm.MachineComPrintCallback):
|
|||
except: self._logger.exception("Exception while adding printer message")
|
||||
|
||||
def _sendCurrentDataCallbacks(self, data):
|
||||
print("current Data callback", self._callbacks)
|
||||
for callback in self._callbacks:
|
||||
try: callback.on_printer_send_current_data(copy.deepcopy(data))
|
||||
except: self._logger.exception("Exception while pushing current data")
|
||||
|
|
|
|||
|
|
@ -129,24 +129,24 @@ def index():
|
|||
# settings dialog
|
||||
|
||||
templates["settings"]["entries"] = dict(
|
||||
section_printer=(gettext("Printer"), None),
|
||||
#section_printer=(gettext("Printer"), None),
|
||||
|
||||
serial=(gettext("Serial Connection"), dict(template="dialogs/settings/serialconnection.jinja2", _div="settings_serialConnection", custom_bindings=False)),
|
||||
printerprofiles=(gettext("Printer Profiles"), dict(template="dialogs/settings/printerprofiles.jinja2", _div="settings_printerProfiles", custom_bindings=False)),
|
||||
temperatures=(gettext("Temperatures"), dict(template="dialogs/settings/temperatures.jinja2", _div="settings_temperature", custom_bindings=False)),
|
||||
#printerprofiles=(gettext("Printer Profiles"), dict(template="dialogs/settings/printerprofiles.jinja2", _div="settings_printerProfiles", custom_bindings=False)),
|
||||
#temperatures=(gettext("Temperatures"), dict(template="dialogs/settings/temperatures.jinja2", _div="settings_temperature", custom_bindings=False)),
|
||||
terminalfilters=(gettext("Terminal Filters"), dict(template="dialogs/settings/terminalfilters.jinja2", _div="settings_terminalFilters", custom_bindings=False)),
|
||||
gcodescripts=(gettext("GCODE Scripts"), dict(template="dialogs/settings/gcodescripts.jinja2", _div="settings_gcodeScripts", custom_bindings=False)),
|
||||
#gcodescripts=(gettext("GCODE Scripts"), dict(template="dialogs/settings/gcodescripts.jinja2", _div="settings_gcodeScripts", custom_bindings=False)),
|
||||
|
||||
section_features=(gettext("Features"), None),
|
||||
#section_features=(gettext("Features"), None),
|
||||
|
||||
features=(gettext("Features"), dict(template="dialogs/settings/features.jinja2", _div="settings_features", custom_bindings=False)),
|
||||
webcam=(gettext("Webcam"), dict(template="dialogs/settings/webcam.jinja2", _div="settings_webcam", custom_bindings=False)),
|
||||
api=(gettext("API"), dict(template="dialogs/settings/api.jinja2", _div="settings_api", custom_bindings=False)),
|
||||
#features=(gettext("Features"), dict(template="dialogs/settings/features.jinja2", _div="settings_features", custom_bindings=False)),
|
||||
#webcam=(gettext("Webcam"), dict(template="dialogs/settings/webcam.jinja2", _div="settings_webcam", custom_bindings=False)),
|
||||
#api=(gettext("API"), dict(template="dialogs/settings/api.jinja2", _div="settings_api", custom_bindings=False)),
|
||||
|
||||
section_octoprint=(gettext("OctoPrint"), None),
|
||||
#section_octoprint=(gettext("OctoPrint"), None),
|
||||
|
||||
folders=(gettext("Folders"), dict(template="dialogs/settings/folders.jinja2", _div="settings_folders", custom_bindings=False)),
|
||||
appearance=(gettext("Appearance"), dict(template="dialogs/settings/appearance.jinja2", _div="settings_appearance", custom_bindings=False)),
|
||||
#folders=(gettext("Folders"), dict(template="dialogs/settings/folders.jinja2", _div="settings_folders", custom_bindings=False)),
|
||||
#appearance=(gettext("Appearance"), dict(template="dialogs/settings/appearance.jinja2", _div="settings_appearance", custom_bindings=False)),
|
||||
logs=(gettext("Logs"), dict(template="dialogs/settings/logs.jinja2", _div="settings_logs")),
|
||||
)
|
||||
if enable_accesscontrol:
|
||||
|
|
@ -166,7 +166,12 @@ def index():
|
|||
|
||||
plugin_vars = dict()
|
||||
plugin_names = set()
|
||||
plugins_with_hidden_settings = ['pluginmanager']
|
||||
for implementation in template_plugins:
|
||||
print('plugin ', implementation._identifier)
|
||||
if(implementation._identifier in plugins_with_hidden_settings):
|
||||
print("blocked")
|
||||
continue
|
||||
name = implementation._identifier
|
||||
plugin_names.add(name)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,204 +1,9 @@
|
|||
//<<<<<<< HEAD
|
||||
//function SettingsViewModel(loginStateViewModel, usersViewModel, printerProfilesViewModel) {
|
||||
// var self = this;
|
||||
//
|
||||
// self.savetimer = undefined;
|
||||
// self.loginState = loginStateViewModel;
|
||||
// self.users = usersViewModel;
|
||||
// self.printerProfiles = printerProfilesViewModel;
|
||||
//
|
||||
// self.api_enabled = ko.observable(undefined);
|
||||
// self.api_key = ko.observable(undefined);
|
||||
// self.api_allowCrossOrigin = ko.observable(undefined);
|
||||
//
|
||||
// self.appearance_name = ko.observable(undefined);
|
||||
// self.appearance_color = ko.observable(undefined);
|
||||
//
|
||||
// self.appearance_available_colors = ko.observable([
|
||||
// {key: "default", name: gettext("default")},
|
||||
// {key: "red", name: gettext("red")},
|
||||
// {key: "orange", name: gettext("orange")},
|
||||
// {key: "yellow", name: gettext("yellow")},
|
||||
// {key: "green", name: gettext("green")},
|
||||
// {key: "blue", name: gettext("blue")},
|
||||
// {key: "violet", name: gettext("violet")},
|
||||
// {key: "black", name: gettext("black")}
|
||||
// ]);
|
||||
//
|
||||
// self.appearance_colorName = function(color) {
|
||||
// switch (color) {
|
||||
// case "red":
|
||||
// return gettext("red");
|
||||
// case "orange":
|
||||
// return gettext("orange");
|
||||
// case "yellow":
|
||||
// return gettext("yellow");
|
||||
// case "green":
|
||||
// return gettext("green");
|
||||
// case "blue":
|
||||
// return gettext("blue");
|
||||
// case "violet":
|
||||
// return gettext("violet");
|
||||
// case "black":
|
||||
// return gettext("black");
|
||||
// case "default":
|
||||
// return gettext("default");
|
||||
// default:
|
||||
// return color;
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// self.printer_defaultExtrusionLength = ko.observable(undefined);
|
||||
//
|
||||
// self.webcam_streamUrl = ko.observable(undefined);
|
||||
// self.webcam_snapshotUrl = ko.observable(undefined);
|
||||
// self.webcam_ffmpegPath = ko.observable(undefined);
|
||||
// self.webcam_bitrate = ko.observable(undefined);
|
||||
// self.webcam_watermark = ko.observable(undefined);
|
||||
// self.webcam_flipH = ko.observable(undefined);
|
||||
// self.webcam_flipV = ko.observable(undefined);
|
||||
//
|
||||
// self.feature_gcodeViewer = ko.observable(undefined);
|
||||
// self.feature_temperatureGraph = ko.observable(undefined);
|
||||
// self.feature_waitForStart = ko.observable(undefined);
|
||||
// self.feature_alwaysSendChecksum = ko.observable(undefined);
|
||||
// self.feature_sdSupport = ko.observable(undefined);
|
||||
// self.feature_sdAlwaysAvailable = ko.observable(undefined);
|
||||
// self.feature_swallowOkAfterResend = ko.observable(undefined);
|
||||
// self.feature_repetierTargetTemp = ko.observable(undefined);
|
||||
// self.feature_keyboardControl = ko.observable(undefined);
|
||||
//
|
||||
// self.serial_port = ko.observable();
|
||||
// self.serial_baudrate = ko.observable();
|
||||
// self.serial_portOptions = ko.observableArray([]);
|
||||
// self.serial_baudrateOptions = ko.observableArray([]);
|
||||
// self.serial_autoconnect = ko.observable(undefined);
|
||||
// self.serial_timeoutConnection = ko.observable(undefined);
|
||||
// self.serial_timeoutDetection = ko.observable(undefined);
|
||||
// self.serial_timeoutCommunication = ko.observable(undefined);
|
||||
// self.serial_timeoutTemperature = ko.observable(undefined);
|
||||
// self.serial_timeoutSdStatus = ko.observable(undefined);
|
||||
// self.serial_log = ko.observable(undefined);
|
||||
//
|
||||
// self.folder_uploads = ko.observable(undefined);
|
||||
// self.folder_timelapse = ko.observable(undefined);
|
||||
// self.folder_timelapseTmp = ko.observable(undefined);
|
||||
// self.folder_logs = ko.observable(undefined);
|
||||
// self.folder_watched = ko.observable(undefined);
|
||||
//
|
||||
// self.cura_enabled = ko.observable(undefined);
|
||||
// self.cura_path = ko.observable(undefined);
|
||||
// self.cura_config = ko.observable(undefined);
|
||||
//
|
||||
// self.temperature_profiles = ko.observableArray(undefined);
|
||||
//
|
||||
// self.system_actions = ko.observableArray([]);
|
||||
//
|
||||
// self.terminalFilters = ko.observableArray([]);
|
||||
//
|
||||
// self.settings = undefined;
|
||||
//
|
||||
// self.addTemperatureProfile = function() {
|
||||
// self.temperature_profiles.push({name: "New", extruder:0, bed:0});
|
||||
// };
|
||||
//
|
||||
// self.removeTemperatureProfile = function(profile) {
|
||||
// self.temperature_profiles.remove(profile);
|
||||
// };
|
||||
//
|
||||
// self.addTerminalFilter = function() {
|
||||
// self.terminalFilters.push({name: "New", regex: "(Send: \?)|(Recv: ok)"})
|
||||
// };
|
||||
//
|
||||
// self.removeTerminalFilter = function(filter) {
|
||||
// self.terminalFilters.remove(filter);
|
||||
// self.saveall();
|
||||
// };
|
||||
//
|
||||
// self.onSettingsShown = function() {
|
||||
// self.requestData();
|
||||
// };
|
||||
//
|
||||
|
||||
//
|
||||
// self.requestData = function(callback) {
|
||||
// $.ajax({
|
||||
// url: API_BASEURL + "settings",
|
||||
// type: "GET",
|
||||
// dataType: "json",
|
||||
// success: function(response) {
|
||||
// self.fromResponse(response);
|
||||
// if (callback) callback();
|
||||
// }
|
||||
// });
|
||||
// };
|
||||
//
|
||||
// self.fromResponse = function(response) {
|
||||
// if (self.settings === undefined) {
|
||||
// self.settings = ko.mapping.fromJS(response);
|
||||
// } else {
|
||||
// ko.mapping.fromJS(response, self.settings);
|
||||
// }
|
||||
// self.api_enabled(response.api.enabled);
|
||||
// self.api_key(response.api.key);
|
||||
// self.api_allowCrossOrigin(response.api.allowCrossOrigin);
|
||||
//
|
||||
// self.appearance_name(response.appearance.name);
|
||||
// self.appearance_color(response.appearance.color);
|
||||
//
|
||||
// self.printer_defaultExtrusionLength(response.printer.defaultExtrusionLength);
|
||||
//
|
||||
// self.webcam_streamUrl(response.webcam.streamUrl);
|
||||
// self.webcam_snapshotUrl(response.webcam.snapshotUrl);
|
||||
// self.webcam_ffmpegPath(response.webcam.ffmpegPath);
|
||||
// self.webcam_bitrate(response.webcam.bitrate);
|
||||
// self.webcam_watermark(response.webcam.watermark);
|
||||
// self.webcam_flipH(response.webcam.flipH);
|
||||
// self.webcam_flipV(response.webcam.flipV);
|
||||
//
|
||||
// self.feature_gcodeViewer(response.feature.gcodeViewer);
|
||||
// self.feature_temperatureGraph(response.feature.temperatureGraph);
|
||||
// self.feature_waitForStart(response.feature.waitForStart);
|
||||
// self.feature_alwaysSendChecksum(response.feature.alwaysSendChecksum);
|
||||
// self.feature_sdSupport(response.feature.sdSupport);
|
||||
// self.feature_sdAlwaysAvailable(response.feature.sdAlwaysAvailable);
|
||||
// self.feature_swallowOkAfterResend(response.feature.swallowOkAfterResend);
|
||||
// self.feature_repetierTargetTemp(response.feature.repetierTargetTemp);
|
||||
// self.feature_keyboardControl(response.feature.keyboardControl);
|
||||
//
|
||||
// self.serial_port(response.serial.port);
|
||||
// self.serial_baudrate(response.serial.baudrate);
|
||||
// self.serial_portOptions(response.serial.portOptions);
|
||||
// self.serial_baudrateOptions(response.serial.baudrateOptions);
|
||||
// self.serial_autoconnect(response.serial.autoconnect);
|
||||
// self.serial_timeoutConnection(response.serial.timeoutConnection);
|
||||
// self.serial_timeoutDetection(response.serial.timeoutDetection);
|
||||
// self.serial_timeoutCommunication(response.serial.timeoutCommunication);
|
||||
// self.serial_timeoutTemperature(response.serial.timeoutTemperature);
|
||||
// self.serial_timeoutSdStatus(response.serial.timeoutSdStatus);
|
||||
// self.serial_log(response.serial.log);
|
||||
//
|
||||
// self.folder_uploads(response.folder.uploads);
|
||||
// self.folder_timelapse(response.folder.timelapse);
|
||||
// self.folder_timelapseTmp(response.folder.timelapseTmp);
|
||||
// self.folder_logs(response.folder.logs);
|
||||
// self.folder_watched(response.folder.watched);
|
||||
//
|
||||
// self.cura_enabled(response.cura.enabled);
|
||||
// self.cura_path(response.cura.path);
|
||||
// self.cura_config(response.cura.config);
|
||||
//
|
||||
// self.temperature_profiles(response.temperature.profiles);
|
||||
//
|
||||
// self.system_actions(response.system.actions);
|
||||
// self.terminalFilters(response.terminalFilters);
|
||||
// };
|
||||
//
|
||||
|
||||
//=======
|
||||
$(function() {
|
||||
function SettingsViewModel(parameters) {
|
||||
var self = this;
|
||||
|
||||
self.savetimer = undefined;
|
||||
|
||||
self.loginState = parameters[0];
|
||||
self.users = parameters[1];
|
||||
|
|
@ -237,7 +42,6 @@ $(function() {
|
|||
if (a["locale"].toLocaleLowerCase() > b["locale"].toLocaleLowerCase()) return 1;
|
||||
return 0;
|
||||
}
|
||||
//>>>>>>> upstream/maintenance
|
||||
},
|
||||
{},
|
||||
"locale",
|
||||
|
|
@ -356,12 +160,13 @@ $(function() {
|
|||
self.temperature_profiles.remove(profile);
|
||||
};
|
||||
|
||||
self.addTerminalFilter = function() {
|
||||
self.terminalFilters.push({name: "New", regex: "(Send: M105)|(Recv: ok T:)"})
|
||||
};
|
||||
self.addTerminalFilter = function() {
|
||||
self.terminalFilters.push({name: "New", regex: "(Send: \?)|(Recv: ok)"});
|
||||
};
|
||||
|
||||
self.removeTerminalFilter = function(filter) {
|
||||
self.removeTerminalFilter = function(filter) {
|
||||
self.terminalFilters.remove(filter);
|
||||
self.saveall();
|
||||
};
|
||||
|
||||
self.onSettingsShown = function() {
|
||||
|
|
@ -524,29 +329,6 @@ $(function() {
|
|||
});
|
||||
|
||||
|
||||
//<<<<<<< HEAD
|
||||
// self.saveData = function() {
|
||||
//
|
||||
// var data = self.collectData();
|
||||
//
|
||||
// $.ajax({
|
||||
// url: API_BASEURL + "settings",
|
||||
// type: "POST",
|
||||
// dataType: "json",
|
||||
// contentType: "application/json; charset=UTF-8",
|
||||
// data: JSON.stringify(data),
|
||||
// success: function(response) {
|
||||
// self.fromResponse(response);
|
||||
//// $("#settings_dialog").modal("hide");
|
||||
//// $("#settings_save_btn").attr("disabled", "disabled");
|
||||
// $("#settings_save_btn").css("visibility", "hidden");
|
||||
//
|
||||
// }
|
||||
// });
|
||||
// };
|
||||
//
|
||||
|
||||
//=======
|
||||
self.deleteLanguagePack = function(locale, pack) {
|
||||
$.ajax({
|
||||
url: API_BASEURL + "languages/" + locale + "/" + pack,
|
||||
|
|
@ -558,12 +340,11 @@ $(function() {
|
|||
})
|
||||
};
|
||||
|
||||
self.fromResponse = function(response) {
|
||||
self.fromResponse = function(response) {
|
||||
if (self.settings === undefined) {
|
||||
self.settings = ko.mapping.fromJS(response);
|
||||
} else {
|
||||
ko.mapping.fromJS(response, self.settings);
|
||||
//>>>>>>> upstream/maintenance
|
||||
}
|
||||
|
||||
self.api_enabled(response.api.enabled);
|
||||
|
|
@ -579,7 +360,6 @@ $(function() {
|
|||
}
|
||||
|
||||
self.printer_defaultExtrusionLength(response.printer.defaultExtrusionLength);
|
||||
|
||||
self.webcam_streamUrl(response.webcam.streamUrl);
|
||||
self.webcam_snapshotUrl(response.webcam.snapshotUrl);
|
||||
self.webcam_ffmpegPath(response.webcam.ffmpegPath);
|
||||
|
|
@ -590,7 +370,7 @@ $(function() {
|
|||
self.webcam_flipV(response.webcam.flipV);
|
||||
self.webcam_rotate90(response.webcam.rotate90);
|
||||
|
||||
self.feature_gcodeViewer(response.feature.gcodeViewer);
|
||||
self.feature_gcodeViewer(response.feature.gcodeViewer);
|
||||
self.feature_temperatureGraph(response.feature.temperatureGraph);
|
||||
self.feature_waitForStart(response.feature.waitForStart);
|
||||
self.feature_alwaysSendChecksum(response.feature.alwaysSendChecksum);
|
||||
|
|
@ -747,9 +527,7 @@ $(function() {
|
|||
};
|
||||
|
||||
self.instantSaveData = function() {
|
||||
|
||||
var data = self.collectData();
|
||||
|
||||
$.ajax({
|
||||
url: API_BASEURL + "settings",
|
||||
type: "POST",
|
||||
|
|
@ -766,7 +544,23 @@ $(function() {
|
|||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
self.saveData = function() {
|
||||
var data = self.collectData();
|
||||
$.ajax({
|
||||
url: API_BASEURL + "settings",
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
contentType: "application/json; charset=UTF-8",
|
||||
data: JSON.stringify(data),
|
||||
success: function(response) {
|
||||
self.fromResponse(response);
|
||||
// $("#settings_dialog").modal("hide");
|
||||
// $("#settings_save_btn").attr("disabled", "disabled");
|
||||
$("#settings_save_btn").css("visibility", "hidden");
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
self.collectData = function (){
|
||||
var data = ko.mapping.toJS(self.settings);
|
||||
|
|
|
|||
|
|
@ -18,12 +18,13 @@
|
|||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="control-group" title="{{ _('Interval in which to poll for the temperature information from the printer while printing') }}">
|
||||
<label class="control-label" for="settings-serialTimeoutTemperature">{{ _('Temperature interval') }}</label>
|
||||
<div class="controls">
|
||||
<div class="input-append">
|
||||
<input type="number" step="any" min="0" class="input-mini text-right" data-bind="event: {change: saveall}, value: serial_timeoutCommunication" id="settings-serialTimeoutCommunication">
|
||||
<!--<input type="number" step="any" min="0" class="input-mini text-right" data-bind="value: serial_timeoutTemperature" id="settings-serialTimeoutTemperature">-->
|
||||
<input type="number" step="any" min="0" class="input-mini text-right" data-bind="value: serial_timeoutTemperature" id="settings-serialTimeoutTemperature">
|
||||
<span class="add-on">s</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -38,6 +39,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
<div class="control-group" title="{{ _('Time after which the communication with your printer will be considered timed out if nothing was sent by your printer (and an attempt to get it talking again will be done). Increase this if your printer takes longer than this for some moves. This is also the interval in which the temperature will be polled from the printer while not printing.') }}">
|
||||
<label class="control-label" for="settings-serialTimeoutCommunication">{{ _('Communication timeout') }}</label>
|
||||
<div class="controls">
|
||||
|
|
@ -73,6 +75,7 @@
|
|||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="settings-serialLongRunningCommands">{{ _('Long running commands') }}</label>
|
||||
<div class="controls">
|
||||
|
|
@ -87,4 +90,5 @@
|
|||
<span class="help-inline">{{ _('Use this to define additional <a href="%%(glob_url)s">glob patterns</a> matching serial ports to list for connecting against, e.g. <code>/dev/ttyAMA*</code>. One entry per line.')|format(glob_url="http://docs.python.org/2/library/glob.html") }}</span>
|
||||
</div>
|
||||
</div>
|
||||
-->
|
||||
</form>
|
||||
|
|
|
|||
Loading…
Reference in a new issue