diff --git a/src/octoprint/plugins/svgtogcode/__init__.py b/src/octoprint/plugins/svgtogcode/__init__.py index 61ed595d..303de48e 100644 --- a/src/octoprint/plugins/svgtogcode/__init__.py +++ b/src/octoprint/plugins/svgtogcode/__init__.py @@ -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 diff --git a/src/octoprint/plugins/svgtogcode/templates/svgtogcode.xml.jinja2 b/src/octoprint/plugins/svgtogcode/templates/svgtogcode.xml.jinja2 new file mode 100644 index 00000000..413c84f7 --- /dev/null +++ b/src/octoprint/plugins/svgtogcode/templates/svgtogcode.xml.jinja2 @@ -0,0 +1,22 @@ + + + + 1 + 0 + + + urn:schemas-upnp-org:device:Basic:1 + {{ friendlyName }} + {{ manufacturer }} + {% if manufacturerUrl %}{{ manufacturerUrl }}{% endif %} + {{ modelName }} + {% if modelDescription %}{{ modelDescription }}{% endif %} + {% if modelNumber %}{{ modelNumber }}{% endif %} + {% if modelUrl %}{{ modelUrl }}{% endif %} + {% if serialNumber %}{{ serialNumber }}{% endif %} + uuid:{{ uuid }} + + + {{ presentationUrl }} + + \ No newline at end of file diff --git a/src/octoprint/printer/standard.py b/src/octoprint/printer/standard.py index 83da09e4..0d2ebc57 100644 --- a/src/octoprint/printer/standard.py +++ b/src/octoprint/printer/standard.py @@ -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") diff --git a/src/octoprint/server/views.py b/src/octoprint/server/views.py index 1bd59886..f0bc70d9 100644 --- a/src/octoprint/server/views.py +++ b/src/octoprint/server/views.py @@ -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) diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js index d204d794..255fa6de 100644 --- a/src/octoprint/static/js/app/viewmodels/settings.js +++ b/src/octoprint/static/js/app/viewmodels/settings.js @@ -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); diff --git a/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 b/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 index a748cb24..4a6a979e 100644 --- a/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 +++ b/src/octoprint/templates/dialogs/settings/serialconnection.jinja2 @@ -18,12 +18,13 @@ + + s @@ -38,6 +39,7 @@ +-->
@@ -73,6 +75,7 @@
+