From f8e1e9badf2a5dfcafa2805dc936c2421959c20d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Thu, 16 Jul 2015 18:38:32 +0200 Subject: [PATCH] Improved wizard for initial CuraEngine setup Added profile is now set as default and UI is a bit more visually pleasing. Next step is to find some way to mark wizard completion as "please ignore"... --- src/octoprint/plugins/cura/__init__.py | 13 +++- src/octoprint/plugins/cura/static/js/cura.js | 11 ++- .../cura/templates/cura_settings.jinja2 | 2 + .../plugins/cura/templates/cura_wizard.jinja2 | 36 +++++----- .../snippets/cura_profile_importer.jinja2 | 7 ++ .../templates/snippets/cura_profiles.jinja2 | 67 +++++++++---------- 6 files changed, 84 insertions(+), 52 deletions(-) diff --git a/src/octoprint/plugins/cura/__init__.py b/src/octoprint/plugins/cura/__init__.py index 765f65f3..9e9b1501 100644 --- a/src/octoprint/plugins/cura/__init__.py +++ b/src/octoprint/plugins/cura/__init__.py @@ -111,8 +111,10 @@ class CuraPlugin(octoprint.plugin.SlicerPlugin, profile_display_name = name profile_description = "Imported from {filename} on {date}".format(filename=filename, date=octoprint.util.get_formatted_datetime(datetime.datetime.now())) profile_allow_overwrite = False + profile_make_default = False # overrides + from octoprint.server.api import valid_boolean_trues if "name" in flask.request.values: profile_name = flask.request.values["name"] if "displayName" in flask.request.values: @@ -120,8 +122,9 @@ class CuraPlugin(octoprint.plugin.SlicerPlugin, if "description" in flask.request.values: profile_description = flask.request.values["description"] if "allowOverwrite" in flask.request.values: - from octoprint.server.api import valid_boolean_trues profile_allow_overwrite = flask.request.values["allowOverwrite"] in valid_boolean_trues + if "default" in flask.request.values: + profile_make_default = flask.request.values["default"] in valid_boolean_trues try: self._slicing_manager.save_profile("cura", @@ -134,8 +137,16 @@ class CuraPlugin(octoprint.plugin.SlicerPlugin, self._logger.warn("Profile {profile_name} already exists, aborting".format(**locals())) return flask.make_response("A profile named {profile_name} already exists for slicer cura".format(**locals()), 409) + if profile_make_default: + try: + self._slicing_manager.set_default_profile("cura", profile_name) + except octoprint.slicing.UnknownProfile: + self._logger.warn("Profile {profile_name} could not be set as default, aborting".format(**locals())) + return flask.make_response("The profile {profile_name} for slicer cura could not be set as default".format(**locals()), 500) + result = dict( resource=flask.url_for("api.slicingGetSlicerProfile", slicer="cura", name=profile_name, _external=True), + name=profile_name, displayName=profile_display_name, description=profile_description ) diff --git a/src/octoprint/plugins/cura/static/js/cura.js b/src/octoprint/plugins/cura/static/js/cura.js index b0482cc6..f849fb75 100644 --- a/src/octoprint/plugins/cura/static/js/cura.js +++ b/src/octoprint/plugins/cura/static/js/cura.js @@ -23,6 +23,7 @@ $(function() { self.profileDisplayName = ko.observable(); self.profileDescription = ko.observable(); self.profileAllowOverwrite = ko.observable(true); + self.profileMakeDefault = ko.observable(false); self.unconfiguredCuraEngine = ko.observable(); self.unconfiguredSlicingProfile = ko.observable(); @@ -96,6 +97,9 @@ $(function() { if (self.profileDescription() !== undefined) { form["description"] = self.profileDescription(); } + if (self.profileMakeDefault()) { + form["default"] = true; + } data.formData = form; data.submit(); @@ -110,6 +114,7 @@ $(function() { self.profileDisplayName(undefined); self.profileDescription(undefined); self.profileAllowOverwrite(true); + self.profileMakeDefault(false); $("#settings_plugin_cura_import").modal("hide"); self.requestData(); @@ -163,7 +168,11 @@ $(function() { }); }; - self.showImportProfileDialog = function() { + self.showImportProfileDialog = function(makeDefault) { + if (makeDefault == undefined) { + makeDefault = _.filter(self.profiles.items(), function(profile) { profile.isdefault() }).length == 0; + } + self.profileMakeDefault(makeDefault); $("#settings_plugin_cura_import").modal("show"); }; diff --git a/src/octoprint/plugins/cura/templates/cura_settings.jinja2 b/src/octoprint/plugins/cura/templates/cura_settings.jinja2 index dec631da..1d9e40bf 100644 --- a/src/octoprint/plugins/cura/templates/cura_settings.jinja2 +++ b/src/octoprint/plugins/cura/templates/cura_settings.jinja2 @@ -6,4 +6,6 @@ {% include "snippets/cura_profiles.jinja2" %} + + {% include "snippets/cura_profile_importer.jinja2" %} diff --git a/src/octoprint/plugins/cura/templates/cura_wizard.jinja2 b/src/octoprint/plugins/cura/templates/cura_wizard.jinja2 index 3613e042..192ffb68 100644 --- a/src/octoprint/plugins/cura/templates/cura_wizard.jinja2 +++ b/src/octoprint/plugins/cura/templates/cura_wizard.jinja2 @@ -1,3 +1,9 @@ +
{% trans %} + Note: OctoPrint currently only supports slicing with + CuraEngine up to 15.04 and importing Cura profiles from Cura versions + up to 15.04. +{% endtrans %}
+

{{ _('Configure CuraEngine') }}

{% trans %} @@ -12,23 +18,21 @@

{{ _('Set up a slicing profile') }}

-

{% trans %}You don't have imported a slicing profile to use for slicing with CuraEngine +

{% trans %}You haven't imported a slicing profile to use for slicing with CuraEngine yet. You should do this now.{% endtrans %}

- {% include "snippets/cura_profiles.jinja2" %} +
+ {% include "snippets/cura_profiles.jinja2" %} +
-

{% trans %} - Don't know where to get a profile? In order to export - a slicing profile from the Cura desktop UI, open it, set up your - profile, then click on "File" and there on "Save Profile". You can - import the .ini-file this creates via the "Import Profile" button. - {% endtrans %}

+ + +
+ {% trans %} + Don't know where to get a profile? In order to export + a slicing profile from the Cura desktop UI, open it, set up your + profile, then click on "File" and there on "Save Profile". You can + import the .ini-file this creates via the "Import Profile" button. + {% endtrans %} +
- -

{% trans %} - Note: OctoPrint currently only supports slicing with - CuraEngine up to 15.04 and importing Cura profiles from Cura versions - up to 15.04. Newer Cura releases (e.g. 15.06) do not allow to - export the slicing profile anymore and also use a different internal format - that will not work with the current version of the Cura Plugin. -{% endtrans %}

diff --git a/src/octoprint/plugins/cura/templates/snippets/cura_profile_importer.jinja2 b/src/octoprint/plugins/cura/templates/snippets/cura_profile_importer.jinja2 index 1a4b428f..219f474a 100644 --- a/src/octoprint/plugins/cura/templates/snippets/cura_profile_importer.jinja2 +++ b/src/octoprint/plugins/cura/templates/snippets/cura_profile_importer.jinja2 @@ -35,6 +35,13 @@
+
+
+ +
+