From 4f3e4f7f385fce0ce88157e3b6298b0c46766217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Mon, 6 Jun 2016 16:20:47 +0200 Subject: [PATCH 1/9] Force rescanning of available slicing profiles for slicer on update Should make newly uploaded profiles available in the slicing dialog without having to first deselect and then reselected the current slicer. --- src/octoprint/static/js/app/viewmodels/slicing.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/octoprint/static/js/app/viewmodels/slicing.js b/src/octoprint/static/js/app/viewmodels/slicing.js index 63088973..fc0b9ce6 100644 --- a/src/octoprint/static/js/app/viewmodels/slicing.js +++ b/src/octoprint/static/js/app/viewmodels/slicing.js @@ -102,6 +102,7 @@ $(function() { if (selectedSlicer != undefined) { self.slicer(selectedSlicer); + self.profilesForSlicer(selectedSlicer); } self.defaultSlicer = selectedSlicer; From 5006b019af8d17a10a96490a669dd201c21582de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Mon, 6 Jun 2016 18:12:32 +0200 Subject: [PATCH 2/9] Add events for slicing profile manipulation Events SlicingProfile(Added|Modified|Deleted). Initially thought to be necessary to properly refresh available profiles in slicing dialog, not needed for that after all but still left in and documented, might be useful for someone. --- docs/events/index.rst | 24 +++++++++++++++++++++++ src/octoprint/events.py | 8 ++++++++ src/octoprint/plugins/cura/__init__.py | 3 --- src/octoprint/server/api/slicing.py | 4 +++- src/octoprint/slicing/__init__.py | 27 ++++++++++++++++++++++---- src/octoprint/slicing/exceptions.py | 13 +++++++++++++ 6 files changed, 71 insertions(+), 8 deletions(-) diff --git a/docs/events/index.rst b/docs/events/index.rst index 1dfde900..dad12138 100644 --- a/docs/events/index.rst +++ b/docs/events/index.rst @@ -365,6 +365,30 @@ SlicingFailed * ``gcode``: the sliced GCODE's filename * ``reason``: the reason for the slicing having failed +SlicingProfileAdded + A new slicing profile was added. + + Payload: + + * ``slicer``: the slicer for which the profile was added + * ``profile``: the profile that was added + +SlicingProfileModified + A new slicing profile was modified. + + Payload: + + * ``slicer``: the slicer for which the profile was modified + * ``profile``: the profile that was modified + +SlicingProfileDeleted + A slicing profile was deleted. + + Payload: + + * ``slicer``: the slicer for which the profile was deleted + * ``profile``: the profile that was deleted + Settings -------- diff --git a/src/octoprint/events.py b/src/octoprint/events.py index 36e48843..c19a8c88 100644 --- a/src/octoprint/events.py +++ b/src/octoprint/events.py @@ -86,6 +86,14 @@ class Events(object): SLICING_DONE = "SlicingDone" SLICING_FAILED = "SlicingFailed" SLICING_CANCELLED = "SlicingCancelled" + SLICING_PROFILE_ADDED = "SlicingProfileAdded" + SLICING_PROFILE_MODIFIED = "SlicingProfileModified" + SLICING_PROFILE_DELETED = "SlicingProfileDeleted" + + # Printer Profiles + PRINTER_PROFILE_ADDED = "PrinterProfileAdded" + PRINTER_PROFILE_MODIFIED = "PrinterProfileModified" + PRINTER_PROFILE_DELETED = "PrinterProfileDeleted" # Settings SETTINGS_UPDATED = "SettingsUpdated" diff --git a/src/octoprint/plugins/cura/__init__.py b/src/octoprint/plugins/cura/__init__.py index 095a274b..a525c0de 100644 --- a/src/octoprint/plugins/cura/__init__.py +++ b/src/octoprint/plugins/cura/__init__.py @@ -191,9 +191,6 @@ class CuraPlugin(octoprint.plugin.SlicerPlugin, return octoprint.slicing.SlicingProfile(properties["type"], "unknown", profile_dict, display_name=display_name, description=description) def save_slicer_profile(self, path, profile, allow_overwrite=True, overrides=None): - if os.path.exists(path) and not allow_overwrite: - raise octoprint.slicing.ProfileAlreadyExists("cura", profile.name) - new_profile = Profile.merge_profile(profile.data, overrides=overrides) if profile.display_name is not None: diff --git a/src/octoprint/server/api/slicing.py b/src/octoprint/server/api/slicing.py index 7dd80f3b..f1dc3763 100644 --- a/src/octoprint/server/api/slicing.py +++ b/src/octoprint/server/api/slicing.py @@ -14,7 +14,7 @@ from octoprint.server.api import api, NO_CONTENT from octoprint.settings import settings as s, valid_boolean_trues -from octoprint.slicing import UnknownSlicer, SlicerNotConfigured, ProfileAlreadyExists, UnknownProfile +from octoprint.slicing import UnknownSlicer, SlicerNotConfigured, ProfileAlreadyExists, UnknownProfile, CouldNotDeleteProfile @api.route("/slicing", methods=["GET"]) @@ -147,6 +147,8 @@ def slicingDelSlicerProfile(slicer, name): slicingManager.delete_profile(slicer, name) except UnknownSlicer: return make_response("Unknown slicer {slicer}".format(**locals()), 404) + except CouldNotDeleteProfile as e: + return make_response("Could not delete profile {profile} for slicer {slicer}: {cause}".format(profile=name, slicer=slicer, cause=str(e.cause)), 500) return NO_CONTENT diff --git a/src/octoprint/slicing/__init__.py b/src/octoprint/slicing/__init__.py index 448624b9..7f40d09e 100644 --- a/src/octoprint/slicing/__init__.py +++ b/src/octoprint/slicing/__init__.py @@ -407,7 +407,18 @@ class SlicingManager(object): profile.description = description path = self.get_profile_path(slicer, name) + is_overwrite = os.path.exists(path) + + if is_overwrite and not allow_overwrite: + raise ProfileAlreadyExists(slicer, profile.name) + self._save_profile_to_path(slicer, path, profile, overrides=overrides, allow_overwrite=allow_overwrite) + + payload = dict(slicer=slicer, + profile=name) + event = octoprint.events.Events.SLICING_PROFILE_MODIFIED if is_overwrite else octoprint.events.Events.SLICING_PROFILE_ADDED + octoprint.events.eventManager().fire(event, payload) + return profile def _temporary_profile(self, slicer, name=None, overrides=None): @@ -436,6 +447,7 @@ class SlicingManager(object): Raises: ~octoprint.slicing.exceptions.UnknownSlicer: The slicer ``slicer`` is unknown. + ~octoprint.slicing.exceptions.CouldNotDeleteProfile: There was an error while deleting the profile. """ if not slicer in self.registered_slicers: @@ -445,10 +457,17 @@ class SlicingManager(object): raise ValueError("name must be set") try: - path = self.get_profile_path(slicer, name, must_exist=True) - except UnknownProfile: - return - os.remove(path) + try: + path = self.get_profile_path(slicer, name, must_exist=True) + except UnknownProfile: + return + os.remove(path) + except ProfileException as e: + raise e + except Exception as e: + raise CouldNotDeleteProfile(slicer, name, cause=e) + else: + octoprint.events.eventManager().fire(octoprint.events.Events.SLICING_PROFILE_DELETED, dict(slicer=slicer, profile=name)) def all_profiles(self, slicer, require_configured=False): """ diff --git a/src/octoprint/slicing/exceptions.py b/src/octoprint/slicing/exceptions.py index 8a543e9f..7f4b1b6a 100644 --- a/src/octoprint/slicing/exceptions.py +++ b/src/octoprint/slicing/exceptions.py @@ -105,3 +105,16 @@ class ProfileAlreadyExists(ProfileException): def __init__(self, slicer, profile, *args, **kwargs): ProfileException.__init__(self, slicer, profile, *args, **kwargs) self.message = "Profile {profile} for slicer {slicer} already exists".format(profile=profile, slicer=slicer) + +class CouldNotDeleteProfile(ProfileException): + """ + Raised if there is an unexpected error trying to delete a known profile. + """ + def __init__(self, slicer, profile, cause=None, *args, **kwargs): + ProfileException.__init__(self, slicer, profile, *args, **kwargs) + + self.cause = cause + if cause: + self.message = "Could not delete profile {profile} for slicer {slicer}: {cause}".format(profile=profile, slicer=slicer, cause=str(cause)) + else: + self.message = "Could not delete profile {profile} for slicer {slicer}".format(profile=profile, slicer=slicer) From e9f80c661628b6288ac4957465c400a46ee84da7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 8 Jun 2016 11:19:21 +0200 Subject: [PATCH 3/9] Added new prerelease branch to versioneer config Can be used in the future for tracking prereleases and testing proper version updates without having to push to master directly. --- .versioneer-lookup | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.versioneer-lookup b/.versioneer-lookup index 148123e0..45cba710 100644 --- a/.versioneer-lookup +++ b/.versioneer-lookup @@ -7,8 +7,10 @@ # The file is processed from top to bottom, the first matching line wins. If or are left out, # the lookup table does not apply to the matched branches -# master shall not use the lookup table, only tags +# master, prerelease and rc shall not use the lookup table, only tags master +prerelease +rc # neither should disconnected checkouts, e.g. 'git checkout ' HEAD From 4c34cb84c7b51321b702f94ad352a0f1be2cabd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 8 Jun 2016 13:09:04 +0200 Subject: [PATCH 4/9] Preparing release of 1.2.12 --- CHANGELOG.md | 25 +++ SUPPORTERS.md | 30 ++- .../translations/de/LC_MESSAGES/messages.mo | Bin 63280 -> 63608 bytes .../translations/de/LC_MESSAGES/messages.po | 158 ++++++++-------- translations/de/LC_MESSAGES/messages.mo | Bin 63280 -> 63608 bytes translations/de/LC_MESSAGES/messages.po | 158 ++++++++-------- translations/messages.pot | 178 +++++++++--------- 7 files changed, 306 insertions(+), 243 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 741659ea..a65fb195 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # OctoPrint Changelog +## 1.2.12 (2016-06-08) + +### Improvements + + * [#1338](https://github.com/foosel/OctoPrint/issues/1338): Threshold configuration fields now include information about how to specify the thresholds. + * Mark unrendered timelapses currently being processed (recording or rendering) in the list and remove action buttons so no accidental double-processing can take place. + * Removed file extension from "rendering" and "rendered" notifications, was misleading when using the [mp4 wrapper script](https://github.com/guysoft/OctoPi/issues/184). + * Added some new events for manipulation of slicing profiles. + * Small fix of the german translation. + +### Bug Fixes + + * [#1314](https://github.com/foosel/OctoPrint/issues/1314): Do not change the extension of `.g` files being uploaded to SD (e.g. `auto0.g`) + * [#1320](https://github.com/foosel/OctoPrint/issues/1320): Allow deletion of *.mp4 timelapse files (see [this wrapper script](https://github.com/guysoft/OctoPi/issues/184)). + * [#1324](https://github.com/foosel/OctoPrint/issues/1324): Make daemonized OctoPrint properly clean up its pid file again (see also [#1330](https://github.com/foosel/OctoPrint/pull/1330)). + * [#1326](https://github.com/foosel/OctoPrint/issues/1326): Do not try to clean up an unrendered timelapse while it is already being deleted (and produce way too much logging output in the process). + * [#1343](https://github.com/foosel/OctoPrint/issues/1343): Events are now processed in the order they are fired in, making e.g. the "timelapse rendering" message always appear before "timelapse failed" and hence not stay on forever in case of a failed timelapse. + * [#1344](https://github.com/foosel/OctoPrint/issues/1344): `ProgressPlugin`s now get also notified about a progress of 0%. + * [#1357](https://github.com/foosel/OctoPrint/issues/1357): Fixed wrongly named method call on editing access control options for a user, causing that to not work properly. + * [#1361](https://github.com/foosel/OctoPrint/issues/1361): Properly reload profile list for currently selected slicer in the slicing dialog on change of profiles. + * Fixed concurrent message pushing to the frontend being able to break push messages for the session by forcing synchronization of SockJS message sending. + * Do not require admin rights for connecting/disconnecting, like it was in 1.1.x (note that this is supposed to become configurable behaviour once [#1110](https://github.com/foosel/OctoPrint/issues/1110) gets implemented) + +([Commits](https://github.com/foosel/OctoPrint/compare/1.2.11...1.2.12)) + ## 1.2.11 (2016-05-04) ### Important Announcement diff --git a/SUPPORTERS.md b/SUPPORTERS.md index 958f3c02..fef00f79 100644 --- a/SUPPORTERS.md +++ b/SUPPORTERS.md @@ -7,35 +7,59 @@ thanks to everyone who contributed! ## Patreon Patrons * 3D Moniak + * alephobjects * Andrew Moorby * Arnljot Arntsen * Aurelio Bernal Ramírez + * Bart Zudell + * Brad Jackson + * Brent Fiegle * Brian E. Tyler + * Charles Mitchell * Christian Petropolis * COLLE+McVOY * CreativeTools * D Brian Kimmel + * DeltaMaker 3D Printers * Doug Johnson * E3D BigBox * Erik de Bruijn * Ernesto Martinez * Exovite + * Frank Sander * georgeroblesjr * Gregor Luetolf + * Jason Galarneau + * Joe Korzeniewski * Joshua Gregory + * Kaile Riser * Kale Stedman + * Kevin Freeheart * Kyle Gress * Makespace Madrid + * Mark Lane + * Mark Qvist + * Mark Walker * Masayoshi Mitsui * Miguel Angel Salmeron - * MikeyDK + * Mikey + * Miles Flavel * Mohammed Khorakiwala * Noe Ruiz + * Paul Generes + * Peter Schmehl + * Roger Strolz * Roy Cortes * Samer Najia + * SD3D + * Shane Ekerbicer + * Simon * Stefan Krister + * stefi davis * Steven Pearson * Sven Mueller - * Tom + * Thomas Hatley + * Thomas Sanladerer + * Trent Shumay -and 414 more wonderful people pledging on the [Patreon campaign](https://patreon.com/foosel)! \ No newline at end of file +and 734 more wonderful people pledging on the [Patreon campaign](https://patreon.com/foosel)! \ No newline at end of file diff --git a/src/octoprint/translations/de/LC_MESSAGES/messages.mo b/src/octoprint/translations/de/LC_MESSAGES/messages.mo index 947535d8e6bffbbd671296510d4c001ae08d51c5..bcdcf24a1932c6541ee1052faba8d632b66ffdd3 100644 GIT binary patch delta 10410 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 delta 10080 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\n" "Language: de\n" "Language-Team: German (http://www.transifex.com/projects/p/octoprint/language/de/)\n" @@ -976,128 +976,73 @@ msgstr "Zugriff" msgid "Interface" msgstr "Interface" -#: src/octoprint/static/js/app/dataupdater.js:94 -#: src/octoprint/static/js/app/dataupdater.js:129 +#: src/octoprint/static/js/app/dataupdater.js:92 +#: src/octoprint/static/js/app/dataupdater.js:127 #: src/octoprint/static/js/app/helpers.js:451 #: src/octoprint/templates/overlays/offline.jinja2:6 msgid "Server is offline" msgstr "Der Server ist offline" -#: src/octoprint/static/js/app/dataupdater.js:95 +#: src/octoprint/static/js/app/dataupdater.js:93 msgid "The server appears to be offline, at least I'm not getting any response from it. I'll try to reconnect automatically over the next couple of minutes, however you are welcome to try a manual reconnect anytime using the button below." msgstr "Der Server scheint offline zu sein, zumindest kann ich mich nicht mit ihm verbinden. Ich werde in den nächsten Minuten versuchen mich erneut zu verbinden, aber Du kannst mittels des folgenden Buttons auch jederzeit einen manuellen Verbindungsversuch anstoßen." -#: src/octoprint/static/js/app/dataupdater.js:130 +#: src/octoprint/static/js/app/dataupdater.js:128 msgid "The server appears to be offline, at least I'm not getting any response from it. I could not reconnect automatically, but you may try a manual reconnect using the button below." msgstr "Der Server scheint offline zu sein, zumindest kann ich mich nicht mit ihm verbinden. Ich konnte mich nicht automatisch neu verbinden, aber Du kannst mittels des folgenden Buttons einen manuellen Verbindungsversuch anstoßen." -#: src/octoprint/static/js/app/dataupdater.js:208 -#: src/octoprint/static/js/app/dataupdater.js:314 +#: src/octoprint/static/js/app/dataupdater.js:206 +#: src/octoprint/static/js/app/dataupdater.js:226 #, python-format msgid "Slicing ... (%(percentage)d%%)" msgstr "Slice ... (%(percentage)d%%)" -#: src/octoprint/static/js/app/dataupdater.js:230 -msgid "Rendering timelapse" -msgstr "Zeitrafferaufnahme wird gerendert" - -#: src/octoprint/static/js/app/dataupdater.js:231 -#, python-format -msgid "Now rendering timelapse %(movie_basename)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering." -msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_basename)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird." - -#: src/octoprint/static/js/app/dataupdater.js:244 -msgid "Timelapse ready" -msgstr "Zeitrafferaufnahme fertig" - -#: src/octoprint/static/js/app/dataupdater.js:245 -#, python-format -msgid "New timelapse %(movie_basename)s is done rendering." -msgstr "Neue Zeitrafferaufnahme %(movie_basename)s wurde fertig gerendert" - -#: src/octoprint/static/js/app/dataupdater.js:256 -#, python-format -msgid "Rendering of timelapse %(movie_basename)s failed with return code %(returncode)s" -msgstr "Rendering der Zeitrafferaufnahme %(movie_basename)s fehlgeschlagen mit Returncode %(returncode)s" - -#: src/octoprint/static/js/app/dataupdater.js:263 -msgid "Rendering failed" -msgstr "Rendering fehlgeschlagen" - -#: src/octoprint/static/js/app/dataupdater.js:276 -msgid "Capturing timelapse postroll" -msgstr "Zeichne Timelapse-Postroll auf" - -#: src/octoprint/static/js/app/dataupdater.js:280 -msgid "Now capturing timelapse post roll, this will take only a moment..." -msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird nur einen Moment dauern..." - -#: src/octoprint/static/js/app/dataupdater.js:287 -#, python-format -msgid "%(minutes)d min" -msgstr "%(minutes)d Min" - -#: src/octoprint/static/js/app/dataupdater.js:288 -#, python-format -msgid "Now capturing timelapse post roll, this will take approximately %(duration)s (so until %(time)s)..." -msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern (also etwa bis %(time)s)..." - -#: src/octoprint/static/js/app/dataupdater.js:290 -#, python-format -msgid "%(seconds)d sec" -msgstr "%(seconds) Sek" - -#: src/octoprint/static/js/app/dataupdater.js:291 -#, python-format -msgid "Now capturing timelapse post roll, this will take approximately %(duration)s..." -msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern..." - -#: src/octoprint/static/js/app/dataupdater.js:316 +#: src/octoprint/static/js/app/dataupdater.js:228 msgid "Slicing ..." msgstr "Slice ..." -#: src/octoprint/static/js/app/dataupdater.js:322 +#: src/octoprint/static/js/app/dataupdater.js:234 msgid "Slicing done" msgstr "Slicing abgeschlossen" -#: src/octoprint/static/js/app/dataupdater.js:322 +#: src/octoprint/static/js/app/dataupdater.js:234 #, python-format msgid "Sliced %(stl)s to %(gcode)s, took %(time).2f seconds" msgstr "%(stl)s nach %(gcode)s geslicet, dauerte %(time).2f Sekunden" -#: src/octoprint/static/js/app/dataupdater.js:332 +#: src/octoprint/static/js/app/dataupdater.js:244 #, python-format msgid "Could not slice %(stl)s to %(gcode)s: %(reason)s" msgstr "Konnte %(stl)s nicht nach %(gcode)s slicen: %(reason)s" -#: src/octoprint/static/js/app/dataupdater.js:333 +#: src/octoprint/static/js/app/dataupdater.js:245 msgid "Slicing failed" msgstr "Slicing fehlgeschlagen" -#: src/octoprint/static/js/app/dataupdater.js:337 +#: src/octoprint/static/js/app/dataupdater.js:249 msgid "Streaming ..." msgstr "Streaming ..." -#: src/octoprint/static/js/app/dataupdater.js:343 +#: src/octoprint/static/js/app/dataupdater.js:255 msgid "Streaming done" msgstr "Streaming abgeschlossen" -#: src/octoprint/static/js/app/dataupdater.js:344 +#: src/octoprint/static/js/app/dataupdater.js:256 #, python-format msgid "Streamed %(local)s to %(remote)s on SD, took %(time).2f seconds" msgstr "%(local)s nach %(remote)s gestreamt, dauerte %(time).2f Sekunden" -#: src/octoprint/static/js/app/dataupdater.js:350 -#: src/octoprint/static/js/app/dataupdater.js:358 +#: src/octoprint/static/js/app/dataupdater.js:262 +#: src/octoprint/static/js/app/dataupdater.js:270 msgid "Unhandled communication error" msgstr "Unbehandelter Kommunikationsfehler" -#: src/octoprint/static/js/app/dataupdater.js:351 +#: src/octoprint/static/js/app/dataupdater.js:263 #, python-format msgid "There was an unhandled error while talking to the printer. Due to that the ongoing print job was cancelled. Error: %(firmwareError)s" msgstr "Es gab einen unbehandelten Fehler bei der Kommunikation mit dem Drucker. Daher wurder der laufende Druckauftrag abgebrochen. Fehler: %(firmwareError)s" -#: src/octoprint/static/js/app/dataupdater.js:359 +#: src/octoprint/static/js/app/dataupdater.js:271 #, python-format msgid "The was an unhandled error while talking to the printer. Due to that OctoPrint disconnected. Error: %(error)s" msgstr "Es gab einen unbehandelten Fehler bei der Kommunikation mit dem Drucker. Daher hat OctoPrint die Verbindung getrennt. Fehler: %(error)s" @@ -1550,6 +1495,61 @@ msgstr "zeige %(displayed)d Zeilen (Buffer voll)" msgid "showing %(displayed)d lines" msgstr "zeige %(displayed)d Zeilen" +#: src/octoprint/static/js/app/viewmodels/timelapse.js:255 +msgid "Capturing timelapse postroll" +msgstr "Zeichne Timelapse-Postroll auf" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:259 +msgid "Now capturing timelapse post roll, this will take only a moment..." +msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird nur einen Moment dauern..." + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:266 +#, python-format +msgid "%(minutes)d min" +msgstr "%(minutes)d Min" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:267 +#, python-format +msgid "Now capturing timelapse post roll, this will take approximately %(duration)s (so until %(time)s)..." +msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern (also etwa bis %(time)s)..." + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:269 +#, python-format +msgid "%(seconds)d sec" +msgstr "%(seconds) Sek" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:270 +#, python-format +msgid "Now capturing timelapse post roll, this will take approximately %(duration)s..." +msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern..." + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:283 +msgid "Rendering timelapse" +msgstr "Zeitrafferaufnahme wird gerendert" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:284 +#, python-format +msgid "Now rendering timelapse %(movie_prefix)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering." +msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_prefix)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird." + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:290 +#, python-format +msgid "Rendering of timelapse %(movie_prefix)s failed with return code %(returncode)s" +msgstr "Rendering der Zeitrafferaufnahme %(movie_prefix)s fehlgeschlagen mit Returncode %(returncode)s" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:294 +msgid "Rendering failed" +msgstr "Rendering fehlgeschlagen" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:303 +msgid "Timelapse ready" +msgstr "Zeitrafferaufnahme fertig" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:304 +#, python-format +msgid "New timelapse %(movie_prefix)s is done rendering." +msgstr "Neue Zeitrafferaufnahme %(movie_prefix)s wurde fertig gerendert" + #: src/octoprint/static/js/app/viewmodels/usersettings.js:10 msgid "Site default" msgstr "Seitenvoreinstellung" @@ -1994,6 +1994,10 @@ msgstr "Warnung" msgid "Critical" msgstr "Kritisch" +#: src/octoprint/templates/dialogs/settings/folders.jinja2:59 +msgid "Provide values including size unit. Allowed units are: b, byte, bytes, kb, mb, gb, tb (case insensitive). Example: 5MB, 500KB" +msgstr "Wert inklusive Größeneinheit. Erlaubte Einheiten sind: b, byte, bytes, kb, mb, gb, tb (Groß-/Kleinschreibung irrelevant). Beispiel: 5MB, 500KB" + #: src/octoprint/templates/dialogs/settings/gcodescripts.jinja2:3 msgid "Before print job starts" msgstr "Vor dem Start eines Druckjobs" @@ -2826,11 +2830,11 @@ msgstr "Ungerenderte Zeitrafferaufnahmen" msgid "Frames" msgstr "Frames" -#: src/octoprint/templates/tabs/timelapse.jinja2:97 +#: src/octoprint/templates/tabs/timelapse.jinja2:99 msgid "Delete unrendered timelapse" msgstr "Ungerenderte Zeitrafferaufnahme löschen" -#: src/octoprint/templates/tabs/timelapse.jinja2:97 +#: src/octoprint/templates/tabs/timelapse.jinja2:99 msgid "Render timelapse" msgstr "Zeitrafferaufnahme rendern" diff --git a/translations/de/LC_MESSAGES/messages.mo b/translations/de/LC_MESSAGES/messages.mo index 947535d8e6bffbbd671296510d4c001ae08d51c5..bcdcf24a1932c6541ee1052faba8d632b66ffdd3 100644 GIT binary patch delta 10410 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 delta 10080 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\n" "Language: de\n" "Language-Team: German (http://www.transifex.com/projects/p/octoprint/language/de/)\n" @@ -976,128 +976,73 @@ msgstr "Zugriff" msgid "Interface" msgstr "Interface" -#: src/octoprint/static/js/app/dataupdater.js:94 -#: src/octoprint/static/js/app/dataupdater.js:129 +#: src/octoprint/static/js/app/dataupdater.js:92 +#: src/octoprint/static/js/app/dataupdater.js:127 #: src/octoprint/static/js/app/helpers.js:451 #: src/octoprint/templates/overlays/offline.jinja2:6 msgid "Server is offline" msgstr "Der Server ist offline" -#: src/octoprint/static/js/app/dataupdater.js:95 +#: src/octoprint/static/js/app/dataupdater.js:93 msgid "The server appears to be offline, at least I'm not getting any response from it. I'll try to reconnect automatically over the next couple of minutes, however you are welcome to try a manual reconnect anytime using the button below." msgstr "Der Server scheint offline zu sein, zumindest kann ich mich nicht mit ihm verbinden. Ich werde in den nächsten Minuten versuchen mich erneut zu verbinden, aber Du kannst mittels des folgenden Buttons auch jederzeit einen manuellen Verbindungsversuch anstoßen." -#: src/octoprint/static/js/app/dataupdater.js:130 +#: src/octoprint/static/js/app/dataupdater.js:128 msgid "The server appears to be offline, at least I'm not getting any response from it. I could not reconnect automatically, but you may try a manual reconnect using the button below." msgstr "Der Server scheint offline zu sein, zumindest kann ich mich nicht mit ihm verbinden. Ich konnte mich nicht automatisch neu verbinden, aber Du kannst mittels des folgenden Buttons einen manuellen Verbindungsversuch anstoßen." -#: src/octoprint/static/js/app/dataupdater.js:208 -#: src/octoprint/static/js/app/dataupdater.js:314 +#: src/octoprint/static/js/app/dataupdater.js:206 +#: src/octoprint/static/js/app/dataupdater.js:226 #, python-format msgid "Slicing ... (%(percentage)d%%)" msgstr "Slice ... (%(percentage)d%%)" -#: src/octoprint/static/js/app/dataupdater.js:230 -msgid "Rendering timelapse" -msgstr "Zeitrafferaufnahme wird gerendert" - -#: src/octoprint/static/js/app/dataupdater.js:231 -#, python-format -msgid "Now rendering timelapse %(movie_basename)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering." -msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_basename)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird." - -#: src/octoprint/static/js/app/dataupdater.js:244 -msgid "Timelapse ready" -msgstr "Zeitrafferaufnahme fertig" - -#: src/octoprint/static/js/app/dataupdater.js:245 -#, python-format -msgid "New timelapse %(movie_basename)s is done rendering." -msgstr "Neue Zeitrafferaufnahme %(movie_basename)s wurde fertig gerendert" - -#: src/octoprint/static/js/app/dataupdater.js:256 -#, python-format -msgid "Rendering of timelapse %(movie_basename)s failed with return code %(returncode)s" -msgstr "Rendering der Zeitrafferaufnahme %(movie_basename)s fehlgeschlagen mit Returncode %(returncode)s" - -#: src/octoprint/static/js/app/dataupdater.js:263 -msgid "Rendering failed" -msgstr "Rendering fehlgeschlagen" - -#: src/octoprint/static/js/app/dataupdater.js:276 -msgid "Capturing timelapse postroll" -msgstr "Zeichne Timelapse-Postroll auf" - -#: src/octoprint/static/js/app/dataupdater.js:280 -msgid "Now capturing timelapse post roll, this will take only a moment..." -msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird nur einen Moment dauern..." - -#: src/octoprint/static/js/app/dataupdater.js:287 -#, python-format -msgid "%(minutes)d min" -msgstr "%(minutes)d Min" - -#: src/octoprint/static/js/app/dataupdater.js:288 -#, python-format -msgid "Now capturing timelapse post roll, this will take approximately %(duration)s (so until %(time)s)..." -msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern (also etwa bis %(time)s)..." - -#: src/octoprint/static/js/app/dataupdater.js:290 -#, python-format -msgid "%(seconds)d sec" -msgstr "%(seconds) Sek" - -#: src/octoprint/static/js/app/dataupdater.js:291 -#, python-format -msgid "Now capturing timelapse post roll, this will take approximately %(duration)s..." -msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern..." - -#: src/octoprint/static/js/app/dataupdater.js:316 +#: src/octoprint/static/js/app/dataupdater.js:228 msgid "Slicing ..." msgstr "Slice ..." -#: src/octoprint/static/js/app/dataupdater.js:322 +#: src/octoprint/static/js/app/dataupdater.js:234 msgid "Slicing done" msgstr "Slicing abgeschlossen" -#: src/octoprint/static/js/app/dataupdater.js:322 +#: src/octoprint/static/js/app/dataupdater.js:234 #, python-format msgid "Sliced %(stl)s to %(gcode)s, took %(time).2f seconds" msgstr "%(stl)s nach %(gcode)s geslicet, dauerte %(time).2f Sekunden" -#: src/octoprint/static/js/app/dataupdater.js:332 +#: src/octoprint/static/js/app/dataupdater.js:244 #, python-format msgid "Could not slice %(stl)s to %(gcode)s: %(reason)s" msgstr "Konnte %(stl)s nicht nach %(gcode)s slicen: %(reason)s" -#: src/octoprint/static/js/app/dataupdater.js:333 +#: src/octoprint/static/js/app/dataupdater.js:245 msgid "Slicing failed" msgstr "Slicing fehlgeschlagen" -#: src/octoprint/static/js/app/dataupdater.js:337 +#: src/octoprint/static/js/app/dataupdater.js:249 msgid "Streaming ..." msgstr "Streaming ..." -#: src/octoprint/static/js/app/dataupdater.js:343 +#: src/octoprint/static/js/app/dataupdater.js:255 msgid "Streaming done" msgstr "Streaming abgeschlossen" -#: src/octoprint/static/js/app/dataupdater.js:344 +#: src/octoprint/static/js/app/dataupdater.js:256 #, python-format msgid "Streamed %(local)s to %(remote)s on SD, took %(time).2f seconds" msgstr "%(local)s nach %(remote)s gestreamt, dauerte %(time).2f Sekunden" -#: src/octoprint/static/js/app/dataupdater.js:350 -#: src/octoprint/static/js/app/dataupdater.js:358 +#: src/octoprint/static/js/app/dataupdater.js:262 +#: src/octoprint/static/js/app/dataupdater.js:270 msgid "Unhandled communication error" msgstr "Unbehandelter Kommunikationsfehler" -#: src/octoprint/static/js/app/dataupdater.js:351 +#: src/octoprint/static/js/app/dataupdater.js:263 #, python-format msgid "There was an unhandled error while talking to the printer. Due to that the ongoing print job was cancelled. Error: %(firmwareError)s" msgstr "Es gab einen unbehandelten Fehler bei der Kommunikation mit dem Drucker. Daher wurder der laufende Druckauftrag abgebrochen. Fehler: %(firmwareError)s" -#: src/octoprint/static/js/app/dataupdater.js:359 +#: src/octoprint/static/js/app/dataupdater.js:271 #, python-format msgid "The was an unhandled error while talking to the printer. Due to that OctoPrint disconnected. Error: %(error)s" msgstr "Es gab einen unbehandelten Fehler bei der Kommunikation mit dem Drucker. Daher hat OctoPrint die Verbindung getrennt. Fehler: %(error)s" @@ -1550,6 +1495,61 @@ msgstr "zeige %(displayed)d Zeilen (Buffer voll)" msgid "showing %(displayed)d lines" msgstr "zeige %(displayed)d Zeilen" +#: src/octoprint/static/js/app/viewmodels/timelapse.js:255 +msgid "Capturing timelapse postroll" +msgstr "Zeichne Timelapse-Postroll auf" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:259 +msgid "Now capturing timelapse post roll, this will take only a moment..." +msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird nur einen Moment dauern..." + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:266 +#, python-format +msgid "%(minutes)d min" +msgstr "%(minutes)d Min" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:267 +#, python-format +msgid "Now capturing timelapse post roll, this will take approximately %(duration)s (so until %(time)s)..." +msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern (also etwa bis %(time)s)..." + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:269 +#, python-format +msgid "%(seconds)d sec" +msgstr "%(seconds) Sek" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:270 +#, python-format +msgid "Now capturing timelapse post roll, this will take approximately %(duration)s..." +msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern..." + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:283 +msgid "Rendering timelapse" +msgstr "Zeitrafferaufnahme wird gerendert" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:284 +#, python-format +msgid "Now rendering timelapse %(movie_prefix)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering." +msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_prefix)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird." + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:290 +#, python-format +msgid "Rendering of timelapse %(movie_prefix)s failed with return code %(returncode)s" +msgstr "Rendering der Zeitrafferaufnahme %(movie_prefix)s fehlgeschlagen mit Returncode %(returncode)s" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:294 +msgid "Rendering failed" +msgstr "Rendering fehlgeschlagen" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:303 +msgid "Timelapse ready" +msgstr "Zeitrafferaufnahme fertig" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:304 +#, python-format +msgid "New timelapse %(movie_prefix)s is done rendering." +msgstr "Neue Zeitrafferaufnahme %(movie_prefix)s wurde fertig gerendert" + #: src/octoprint/static/js/app/viewmodels/usersettings.js:10 msgid "Site default" msgstr "Seitenvoreinstellung" @@ -1994,6 +1994,10 @@ msgstr "Warnung" msgid "Critical" msgstr "Kritisch" +#: src/octoprint/templates/dialogs/settings/folders.jinja2:59 +msgid "Provide values including size unit. Allowed units are: b, byte, bytes, kb, mb, gb, tb (case insensitive). Example: 5MB, 500KB" +msgstr "Wert inklusive Größeneinheit. Erlaubte Einheiten sind: b, byte, bytes, kb, mb, gb, tb (Groß-/Kleinschreibung irrelevant). Beispiel: 5MB, 500KB" + #: src/octoprint/templates/dialogs/settings/gcodescripts.jinja2:3 msgid "Before print job starts" msgstr "Vor dem Start eines Druckjobs" @@ -2826,11 +2830,11 @@ msgstr "Ungerenderte Zeitrafferaufnahmen" msgid "Frames" msgstr "Frames" -#: src/octoprint/templates/tabs/timelapse.jinja2:97 +#: src/octoprint/templates/tabs/timelapse.jinja2:99 msgid "Delete unrendered timelapse" msgstr "Ungerenderte Zeitrafferaufnahme löschen" -#: src/octoprint/templates/tabs/timelapse.jinja2:97 +#: src/octoprint/templates/tabs/timelapse.jinja2:99 msgid "Render timelapse" msgstr "Zeitrafferaufnahme rendern" diff --git a/translations/messages.pot b/translations/messages.pot index 0e283491..1bc5ef39 100644 --- a/translations/messages.pot +++ b/translations/messages.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: OctoPrint 1.2.11.dev32+g76959e0.dirty\n" +"Project-Id-Version: OctoPrint 1.2.12.dev21+g5006b01.dirty\n" "Report-Msgid-Bugs-To: i18n@octoprint.org\n" -"POT-Creation-Date: 2016-05-04 13:26+0200\n" +"POT-Creation-Date: 2016-06-08 11:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1045,14 +1045,14 @@ msgstr "" msgid "Interface" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:94 -#: src/octoprint/static/js/app/dataupdater.js:129 +#: src/octoprint/static/js/app/dataupdater.js:92 +#: src/octoprint/static/js/app/dataupdater.js:127 #: src/octoprint/static/js/app/helpers.js:451 #: src/octoprint/templates/overlays/offline.jinja2:6 msgid "Server is offline" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:95 +#: src/octoprint/static/js/app/dataupdater.js:93 msgid "" "The server appears to be offline, at least I'm not getting any response " "from it. I'll try to reconnect automatically over the next couple" @@ -1060,131 +1060,67 @@ msgid "" "anytime using the button below." msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:130 +#: src/octoprint/static/js/app/dataupdater.js:128 msgid "" "The server appears to be offline, at least I'm not getting any response " "from it. I could not reconnect automatically, but you " "may try a manual reconnect using the button below." msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:208 -#: src/octoprint/static/js/app/dataupdater.js:314 +#: src/octoprint/static/js/app/dataupdater.js:206 +#: src/octoprint/static/js/app/dataupdater.js:226 #, python-format msgid "Slicing ... (%(percentage)d%%)" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:230 -msgid "Rendering timelapse" -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:231 -#, python-format -msgid "" -"Now rendering timelapse %(movie_basename)s. Due to performance reasons it" -" is not recommended to start a print job while a movie is still " -"rendering." -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:244 -msgid "Timelapse ready" -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:245 -#, python-format -msgid "New timelapse %(movie_basename)s is done rendering." -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:256 -#, python-format -msgid "" -"Rendering of timelapse %(movie_basename)s failed with return code " -"%(returncode)s" -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:263 -msgid "Rendering failed" -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:276 -msgid "Capturing timelapse postroll" -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:280 -msgid "Now capturing timelapse post roll, this will take only a moment..." -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:287 -#, python-format -msgid "%(minutes)d min" -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:288 -#, python-format -msgid "" -"Now capturing timelapse post roll, this will take approximately " -"%(duration)s (so until %(time)s)..." -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:290 -#, python-format -msgid "%(seconds)d sec" -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:291 -#, python-format -msgid "" -"Now capturing timelapse post roll, this will take approximately " -"%(duration)s..." -msgstr "" - -#: src/octoprint/static/js/app/dataupdater.js:316 +#: src/octoprint/static/js/app/dataupdater.js:228 msgid "Slicing ..." msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:322 +#: src/octoprint/static/js/app/dataupdater.js:234 msgid "Slicing done" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:322 +#: src/octoprint/static/js/app/dataupdater.js:234 #, python-format msgid "Sliced %(stl)s to %(gcode)s, took %(time).2f seconds" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:332 +#: src/octoprint/static/js/app/dataupdater.js:244 #, python-format msgid "Could not slice %(stl)s to %(gcode)s: %(reason)s" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:333 +#: src/octoprint/static/js/app/dataupdater.js:245 msgid "Slicing failed" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:337 +#: src/octoprint/static/js/app/dataupdater.js:249 msgid "Streaming ..." msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:343 +#: src/octoprint/static/js/app/dataupdater.js:255 msgid "Streaming done" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:344 +#: src/octoprint/static/js/app/dataupdater.js:256 #, python-format msgid "Streamed %(local)s to %(remote)s on SD, took %(time).2f seconds" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:350 -#: src/octoprint/static/js/app/dataupdater.js:358 +#: src/octoprint/static/js/app/dataupdater.js:262 +#: src/octoprint/static/js/app/dataupdater.js:270 msgid "Unhandled communication error" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:351 +#: src/octoprint/static/js/app/dataupdater.js:263 #, python-format msgid "" "There was an unhandled error while talking to the printer. Due to that " "the ongoing print job was cancelled. Error: %(firmwareError)s" msgstr "" -#: src/octoprint/static/js/app/dataupdater.js:359 +#: src/octoprint/static/js/app/dataupdater.js:271 #, python-format msgid "" "The was an unhandled error while talking to the printer. Due to that " @@ -1655,6 +1591,69 @@ msgstr "" msgid "showing %(displayed)d lines" msgstr "" +#: src/octoprint/static/js/app/viewmodels/timelapse.js:255 +msgid "Capturing timelapse postroll" +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:259 +msgid "Now capturing timelapse post roll, this will take only a moment..." +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:266 +#, python-format +msgid "%(minutes)d min" +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:267 +#, python-format +msgid "" +"Now capturing timelapse post roll, this will take approximately " +"%(duration)s (so until %(time)s)..." +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:269 +#, python-format +msgid "%(seconds)d sec" +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:270 +#, python-format +msgid "" +"Now capturing timelapse post roll, this will take approximately " +"%(duration)s..." +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:283 +msgid "Rendering timelapse" +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:284 +#, python-format +msgid "" +"Now rendering timelapse %(movie_prefix)s. Due to performance reasons it " +"is not recommended to start a print job while a movie is still rendering." +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:290 +#, python-format +msgid "" +"Rendering of timelapse %(movie_prefix)s failed with return code " +"%(returncode)s" +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:294 +msgid "Rendering failed" +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:303 +msgid "Timelapse ready" +msgstr "" + +#: src/octoprint/static/js/app/viewmodels/timelapse.js:304 +#, python-format +msgid "New timelapse %(movie_prefix)s is done rendering." +msgstr "" + #: src/octoprint/static/js/app/viewmodels/usersettings.js:10 msgid "Site default" msgstr "" @@ -2109,6 +2108,13 @@ msgstr "" msgid "Critical" msgstr "" +#: src/octoprint/templates/dialogs/settings/folders.jinja2:59 +msgid "" +"Provide values including size unit. Allowed units are: b, byte, bytes, " +"kb, mb, gb, tb (case insensitive). Example: 5MB, " +"500KB" +msgstr "" + #: src/octoprint/templates/dialogs/settings/gcodescripts.jinja2:3 msgid "Before print job starts" msgstr "" @@ -3006,11 +3012,11 @@ msgstr "" msgid "Frames" msgstr "" -#: src/octoprint/templates/tabs/timelapse.jinja2:97 +#: src/octoprint/templates/tabs/timelapse.jinja2:99 msgid "Delete unrendered timelapse" msgstr "" -#: src/octoprint/templates/tabs/timelapse.jinja2:97 +#: src/octoprint/templates/tabs/timelapse.jinja2:99 msgid "Render timelapse" msgstr "" From 63cec660ca7fddce7803e64825c6b6b7f569b879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 8 Jun 2016 16:21:25 +0200 Subject: [PATCH 5/9] Solve a race condition that could cause 401 responses and a broken UI Closes #1364. See ticket for details. --- src/octoprint/static/js/app/dataupdater.js | 15 +++++++-- src/octoprint/static/js/app/main.js | 31 ++++++++++++------- .../static/js/app/viewmodels/files.js | 6 +--- .../static/js/app/viewmodels/loginstate.js | 7 ++--- 4 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/octoprint/static/js/app/dataupdater.js b/src/octoprint/static/js/app/dataupdater.js index 6296e530..8ffb4c1f 100644 --- a/src/octoprint/static/js/app/dataupdater.js +++ b/src/octoprint/static/js/app/dataupdater.js @@ -16,12 +16,16 @@ function DataUpdater(allViewModels) { self._lastProcessingTimes = []; self._lastProcessingTimesSize = 20; - self.connect = function() { + self._connectCallback = undefined; + + self.connect = function(callback) { var options = {}; if (SOCKJS_DEBUG) { options["debug"] = true; } + self._connectCallback = callback; + self._socket = new SockJS(SOCKJS_URI, undefined, options); self._socket.onopen = self._onconnect; self._socket.onclose = self._onclose; @@ -184,6 +188,13 @@ function DataUpdater(allViewModels) { self.setThrottle(1); + log.info("Connected to the server"); + + if (self._connectCallback) { + self._connectCallback(); + self._connectCallback = undefined; + } + break; } case "history": { @@ -334,6 +345,4 @@ function DataUpdater(allViewModels) { } } }; - - self.connect(); } diff --git a/src/octoprint/static/js/app/main.js b/src/octoprint/static/js/app/main.js index 7c9ff6fb..2ead5fc7 100644 --- a/src/octoprint/static/js/app/main.js +++ b/src/octoprint/static/js/app/main.js @@ -276,8 +276,6 @@ $(function() { } log.info("... dependency resolution done"); - var dataUpdater = new DataUpdater(allViewModels); - //~~ Custom knockout.js bindings ko.bindingHandlers.popover = { @@ -517,14 +515,6 @@ $(function() { // reload overlay $("#reloadui_overlay_reload").click(function() { location.reload(); }); - //~~ Starting up the app - - _.each(allViewModels, function(viewModel) { - if (viewModel.hasOwnProperty("onStartup")) { - viewModel.onStartup(); - } - }); - //~~ view model binding var bindViewModels = function() { @@ -614,12 +604,31 @@ $(function() { } }); }); + + log.info("Application startup complete"); }; if (!_.has(viewModelMap, "settingsViewModel")) { throw new Error("settingsViewModel is missing, can't run UI") } - viewModelMap["settingsViewModel"].requestData(bindViewModels); + + var dataUpdaterConnectCallback = function() { + log.info("Finalizing application startup"); + + //~~ Starting up the app + + _.each(allViewModels, function(viewModel) { + if (viewModel.hasOwnProperty("onStartup")) { + viewModel.onStartup(); + } + }); + + viewModelMap["settingsViewModel"].requestData(bindViewModels); + }; + + log.info("Initial application setup done, connecting to server..."); + var dataUpdater = new DataUpdater(allViewModels); + dataUpdater.connect(dataUpdaterConnectCallback); } ); diff --git a/src/octoprint/static/js/app/viewmodels/files.js b/src/octoprint/static/js/app/viewmodels/files.js index 9f0d6cb2..1e2a063a 100644 --- a/src/octoprint/static/js/app/viewmodels/files.js +++ b/src/octoprint/static/js/app/viewmodels/files.js @@ -446,11 +446,7 @@ $(function() { self._enableDragNDrop(true); self.requestData(); }; - - self.onServerReconnect = function(payload) { - self._enableDragNDrop(true); - self.requestData(); - }; + self.onServerReconnect = self.onServerConnect; self.onServerDisconnect = function(payload) { self._enableDragNDrop(false); diff --git a/src/octoprint/static/js/app/viewmodels/loginstate.js b/src/octoprint/static/js/app/viewmodels/loginstate.js index 8b529936..36f6f0ff 100644 --- a/src/octoprint/static/js/app/viewmodels/loginstate.js +++ b/src/octoprint/static/js/app/viewmodels/loginstate.js @@ -129,13 +129,10 @@ $(function() { self.allViewModels = allViewModels; }; - self.onDataUpdaterReconnect = function() { - self.requestData(); - }; - - self.onStartupComplete = function() { + self.onServerConnect = function() { self.requestData(); }; + self.onServerReconnect = self.onServerConnect; } OCTOPRINT_VIEWMODELS.push([ From d7ef60b4d2f4b8eeffbfea5011ce041487521a88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 8 Jun 2016 16:33:08 +0200 Subject: [PATCH 6/9] Slight change in function definition of reused functions (JS) --- src/octoprint/static/js/app/viewmodels/files.js | 3 +-- src/octoprint/static/js/app/viewmodels/loginstate.js | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/octoprint/static/js/app/viewmodels/files.js b/src/octoprint/static/js/app/viewmodels/files.js index 1e2a063a..c0086e9b 100644 --- a/src/octoprint/static/js/app/viewmodels/files.js +++ b/src/octoprint/static/js/app/viewmodels/files.js @@ -442,11 +442,10 @@ $(function() { self.requestData(payload.remote, "sdcard"); }; - self.onServerConnect = function(payload) { + self.onServerConnect = self.onServerReconnect = function(payload) { self._enableDragNDrop(true); self.requestData(); }; - self.onServerReconnect = self.onServerConnect; self.onServerDisconnect = function(payload) { self._enableDragNDrop(false); diff --git a/src/octoprint/static/js/app/viewmodels/loginstate.js b/src/octoprint/static/js/app/viewmodels/loginstate.js index 36f6f0ff..0064439b 100644 --- a/src/octoprint/static/js/app/viewmodels/loginstate.js +++ b/src/octoprint/static/js/app/viewmodels/loginstate.js @@ -129,10 +129,9 @@ $(function() { self.allViewModels = allViewModels; }; - self.onServerConnect = function() { + self.onServerConnect = self.onServerReconnect = function() { self.requestData(); }; - self.onServerReconnect = self.onServerConnect; } OCTOPRINT_VIEWMODELS.push([ From 885b48911e4a2729fb55d293c6fc6d3594fd09b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 8 Jun 2016 16:48:39 +0200 Subject: [PATCH 7/9] Preparing release of 1.2.12 (part two) Another update of the CHANGELOG after fixing a bug. Shifted release date to tomorrow to leave more time for final tests that was now eaten up by the last minute bug fix. Also updated CONTRIBUTING file to explain new prerelease branch. --- CHANGELOG.md | 3 ++- CONTRIBUTING.md | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a65fb195..ee49675a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # OctoPrint Changelog -## 1.2.12 (2016-06-08) +## 1.2.12 (2016-06-09) ### Improvements @@ -20,6 +20,7 @@ * [#1344](https://github.com/foosel/OctoPrint/issues/1344): `ProgressPlugin`s now get also notified about a progress of 0%. * [#1357](https://github.com/foosel/OctoPrint/issues/1357): Fixed wrongly named method call on editing access control options for a user, causing that to not work properly. * [#1361](https://github.com/foosel/OctoPrint/issues/1361): Properly reload profile list for currently selected slicer in the slicing dialog on change of profiles. + * [#1364](https://github.com/foosel/OctoPrint/issues/1364): Fixed a race condition that could cause the UI to not initialize correctly due to 401 errors, leaving it in an unusable state until a reload. * Fixed concurrent message pushing to the frontend being able to break push messages for the session by forcing synchronization of SockJS message sending. * Do not require admin rights for connecting/disconnecting, like it was in 1.1.x (note that this is supposed to become configurable behaviour once [#1110](https://github.com/foosel/OctoPrint/issues/1110) gets implemented) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2ece77e2..23984c22 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -302,6 +302,11 @@ There are three main branches in OctoPrint: the scheme `x.y.z` (e.g. `1.2.9`) or - if it's absolutely necessary to add a commit after release to this branch - `x.y.z.post` (e.g. `1.2.9.post1`). + * `prerelease`: This branch is only used during the short period where a + future release has "graduated" from the `maintenance` branch and is already + tagged, but still marked on Github as a pre-release. This is mostly used for + update testing just before new releases. Version number follows the scheme + `x.y.z` (e.g. `1.2.9`), just like the `master` branch. * `maintenance`: Improvements and fixes of the current release that make up the next release go here. More or less continously updated. You can consider this a preview of the next release version. It should be very stable at all @@ -329,6 +334,9 @@ Those usually have one of the following prefixes: `maintenance` and `devel` branches. * `dev/...` or `feature/...`: New functionality under development that is to be merged into the `devel` branch. + * `rc`: A branch similar in nature to the `prerelease` branch, only that it will be + used to provide current release candidates of the next stable version to be derived + from the `devel` branch. There is also the `gh-pages` branch, which holds OctoPrint's web page, and a couple of older development branches that are slowly being migrated or deleted. @@ -367,6 +375,7 @@ the local version identifier to allow for an exact determination of the active c * 2016-02-16: Added requirement to add information from template to existing tickets as well, explained issue with "me too" red herrings. * 2016-03-14: Some more requirements for PRs, and a PR template. + * 2016-06-08: New `prerelease` and `rc` branches explained. ## Footnotes * [1] - If you are wondering why, the problem is that anything that you add From 685ce16c85eea9c4f11586ea99c9a84aca382bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Thu, 9 Jun 2016 09:31:36 +0200 Subject: [PATCH 8/9] Preparing release of 1.2.12 (part three) Forgot to add the news category of the blog to the announcement plugin and also updated the list of patrons again. --- SUPPORTERS.md | 1 + src/octoprint/plugins/announcements/__init__.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/SUPPORTERS.md b/SUPPORTERS.md index fef00f79..a49b3375 100644 --- a/SUPPORTERS.md +++ b/SUPPORTERS.md @@ -41,6 +41,7 @@ thanks to everyone who contributed! * Mark Qvist * Mark Walker * Masayoshi Mitsui + * Michael McDargh * Miguel Angel Salmeron * Mikey * Miles Flavel diff --git a/src/octoprint/plugins/announcements/__init__.py b/src/octoprint/plugins/announcements/__init__.py index d7b1fa67..ce8101dc 100644 --- a/src/octoprint/plugins/announcements/__init__.py +++ b/src/octoprint/plugins/announcements/__init__.py @@ -49,6 +49,10 @@ class AnnouncementPlugin(octoprint.plugin.AssetPlugin, type="rss", url="http://octoprint.org/feeds/important.xml", read_until=1449446400), + _news=dict(name="OctoPrint News", + priority=2, + type="rss", + url="http://octoprint.org/feeds/news.xml"), _releases=dict(name="OctoPrint Release Announcements", priority=2, type="rss", From be711dd69175f57a1f4c7fb2333b93bab2f37cd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Thu, 9 Jun 2016 12:16:27 +0200 Subject: [PATCH 9/9] maintenance branch is now 1.2.13.dev --- .versioneer-lookup | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.versioneer-lookup b/.versioneer-lookup index 6365fb3c..9bc29b46 100644 --- a/.versioneer-lookup +++ b/.versioneer-lookup @@ -16,11 +16,11 @@ rc HEAD \(detached.* -# maintenance is currently the branch for preparation of maintenance release 1.2.12 +# maintenance is currently the branch for preparation of maintenance release 1.2.13 # so are any fix/... and improve/... branches -maintenance 1.2.12 e79703ba6eec1ecdfa21cf8f2a9efbc1eb6120e3 pep440-dev -fix/.* 1.2.12 e79703ba6eec1ecdfa21cf8f2a9efbc1eb6120e3 pep440-dev -improve/.* 1.2.12 e79703ba6eec1ecdfa21cf8f2a9efbc1eb6120e3 pep440-dev +maintenance 1.2.13 685ce16c85eea9c4f11586ea99c9a84aca382bd4 pep440-dev +fix/.* 1.2.13 685ce16c85eea9c4f11586ea99c9a84aca382bd4 pep440-dev +improve/.* 1.2.13 685ce16c85eea9c4f11586ea99c9a84aca382bd4 pep440-dev # every other branch is a development branch and thus gets resolved to 1.3.0-dev for now .* 1.3.0 198d3450d94be1a2 pep440-dev