Commit graph

1059 commits

Author SHA1 Message Date
Gina Häußge
7e6ddaf0d6 Plugins can now have a folder for plugin related data
Path can be queried from settings.
2015-06-22 12:59:39 +02:00
Gina Häußge
22710ccfb3 Show overlay when a new server version is detected
That's more user friendly than just blindly reloading the page. Also include installed Template- and AssetPlugins in the check whether there's a new version or not.
2015-06-21 18:02:16 +02:00
Gina Häußge
33ea9c3459 Fix: Software Update config could contain circular reference
Caused by a wrong variable usage. Fixed the usage and added a migration
step that fixes the circular reference if it exists. Bumping configuration
version to 2.

Fixes #946
2015-06-21 12:27:33 +02:00
Gina Häußge
e722c2f8ad Sanity check: verify that plugin settings data jsonifies without error
More resilience which apparently is necessary as witnessed in #946
2015-06-21 00:32:59 +02:00
Gina Häußge
1c99bccef9 Updated german translation 2015-06-20 01:05:18 +02:00
Gina Häußge
61bd803942 Fix: Properly report if a plugin simply could not be found after installation
Also more resilience towards odd version numbers that get mangled by python's package management (1.2.3a0 => 1.2.3a)
2015-06-20 00:56:26 +02:00
Gina Häußge
2f5c3570dd More verbose logging for analyzer 2015-06-20 00:01:59 +02:00
Gina Häußge
c6cb430594 Throttle gcode analysis a bit for low prio entries
Give the Pi's CPU a bit air to breathe...
2015-06-19 22:33:26 +02:00
Gina Häußge
0e60b26048 Config migration must happen after all plugin implementations are initialized
Introduced new callback for settings plugin to hook into the point after the settings have been migrated since the initialize method is not suitable for that as it might be called before other plugin implementations reachable through hooks are initialized.
2015-06-19 22:31:05 +02:00
Gina Häußge
269f18a22f Software Update Fix: Only migrate config settings that are actually in the config 2015-06-19 22:26:22 +02:00
Gina Häußge
7c74aa4c4d Allow ignoring of settings defaults when retrieving values 2015-06-19 22:25:42 +02:00
Gina Häußge
a6c1084b14 Fix: Only try to delete a key in the settings that's actually there 2015-06-19 21:52:03 +02:00
Gina Häußge
65ae48d992 Merge branch 'master' into devel 2015-06-19 19:21:44 +02:00
Gina Häußge
4abd97df09 File manager will now migrate analysis result from old metadata
That should make the initial startup after switching to 1.2.0 way faster.
2015-06-19 19:19:02 +02:00
Gina Häußge
904a3cdaff super(...).method(...) => BaseClass.method(self, ...) 2015-06-19 15:25:37 +02:00
Gina Häußge
f58d63bb49 pluginmanager: Reset flag for repository_available when refreshing it 2015-06-19 15:20:25 +02:00
Gina Häußge
dedf3f234f super(...).on_settings_save(data) => octoprint.plugin.SettingsPlugin.on_settings_save(self, data) 2015-06-19 13:19:54 +02:00
Gina Häußge
633d1ae594 Fix: capture TypeError caused by dynamic reloading on settings save and load
Usage of super(MyClass, self) is henceforth discouraged due to dynamic reloading within OctoPrint's plugin subsystem. Refer to https://thingspython.wordpress.com/2010/09/27/another-super-wrinkle-raising-typeerror/ for details on this problem.

Action by plugin authors is needed to remove the super(...) call and substitute it with octoprint.plugin.SettingsPlugin.on_settings_save(self, data) and octoprint.plugin.SettingsPlugin.on_settings_load(self). Without these modifications, calls to plugin methods utilizing super(...) will fail after a call to the plugin managers reload_plugins method.

Closes #942
2015-06-19 13:18:21 +02:00
Gina Häußge
0846a0fed0 Fix: Wrong parameter order 2015-06-19 11:24:37 +02:00
Gina Häußge
f1be116190 SoftwareUpdate: Don't persist more check data than necessary in config
The SoftwareUpdate Plugin had a bug that caused way too much check data to be stored in the configuration, leading to plugins potentially being stuck in an "update available" loop although the update had already been applied. Now only the current version of github_commit update types is persisted, not the full check configuration.

Also introduced a configuration version and made the migration function migrate old configs to remove anything that was same as the default supplied for the "octoprint" and all plugin hook checks. That should clean things up in existing installations.
2015-06-19 11:12:24 +02:00
Gina Häußge
d5af7b9b48 SettingsPlugins may now track configuration versions
OctoPrint will take care of calling a migration function on the plugin if the plugin demands a newer configuration version than currently stored in config.yaml.
2015-06-19 11:10:07 +02:00
Gina Häußge
e55677da22 Plugin system now support pre/post implementation init methods 2015-06-19 11:09:08 +02:00
Gina Häußge
9f4a74cca0 Fix: setting defaults supplied to set/get from plugins are no longer overwritten 2015-06-19 11:08:11 +02:00
Gina Häußge
b40cba659a Fix: defaults are now correctly applied when setting config for plugins 2015-06-19 11:06:51 +02:00
Gina Häußge
a26b203205 Enforce update of updateable software after plugin changes
When any plugins are enabled/disabled, the client now gets a trigger to fetch a fresh list of update information from the server. This should take care of any old popups still hinting at now uninstalled plugins.
2015-06-18 17:08:56 +02:00
Gina Häußge
6e90c9d730 Reintroduced minification
Still opt-in though.
2015-06-18 13:49:40 +02:00
Gina Häußge
31d7eaad90 Add ";" delimiters between bundled JS files
This is to make sure that they all end on a ; and hence stuff doesn't break if a file included directly after starts with a (...) construct. Of course it would be better if all bundled files are valid in that matter, however since we can't enforce that, we'll add this slight overhead to reduce the risk of stuff breaking.

See for example: http://stackoverflow.com/questions/20307462/js-cant-combine-lib-files
2015-06-18 13:00:18 +02:00
Gina Häußge
0d886ab6f1 Revert cbd3b1424b
That was a bit too early and an accident caused by a too fast "OK" in IntelliJ (as quite visible from the completely unrelated commit message)
2015-06-18 12:11:54 +02:00
Gina Häußge
cbd3b1424b Default to full platform compatibility 2015-06-18 12:05:11 +02:00
Gina Häußge
0ce1575e12 Don't allow plugin management while the printer is printing 2015-06-18 11:37:08 +02:00
Gina Häußge
268886576f More resilience against wonky plugin compatibility data
(cherry picked from commit 5ed37e0)
2015-06-18 09:31:11 +02:00
Gina Häußge
5ed37e0db1 More resilience against wonky plugin compatibility data 2015-06-18 09:30:25 +02:00
Gina Häußge
1a1e3f2d8a Merge branch 'master' into devel 2015-06-17 18:44:04 +02:00
Gina Häußge
cbc6f20fa6 Split assets up a bit to allow better debugging of issues with webassets 2015-06-17 18:43:38 +02:00
Gina Häußge
98122322a8 Merge branch 'master' into devel 2015-06-13 19:40:15 +02:00
Gina Häußge
608be52b9a softwareupdate: plugins may now specify that they have dependency links
Update plugin will then also process those during pip install. Was missing previously and caused Pushbullet Plugin to not properly update.
2015-06-13 19:36:28 +02:00
Gina Häußge
8e5c383c37 Merge branch 'master' into devel 2015-06-11 22:02:59 +02:00
Gina Häußge
46711ce365 pluginmanager: Support installing plugins that need --process-dependency-links
This might be necessary when plugins depend on (patched) library versions that are not yet released on PyPI
2015-06-10 19:34:33 +02:00
Gina Häußge
8353c9bdf5 Better fix for #931, stays backwards compatible to older setuptools versions
python-setuptools on OctoPi is quite old and trying to update in a local virtualenv apparently CAN cause problems (we had this with python-serial too a while back), so a backwards compatible solution is better here.
2015-06-10 17:25:23 +02:00
Gina Häußge
496828482d Allow specifying a target path for generating language packs with babel_pack 2015-06-10 17:14:14 +02:00
Gina Häußge
d2cd459f26 Marked deprecated PluginSettings.getInt etc methods as to remove with 1.3.0 2015-06-10 09:43:10 +02:00
Gina Häußge
06fb249f2e Send frontend translations with javascript mime type
Thanks @markwal
2015-06-10 09:14:39 +02:00
Gina Häußge
d9cbf786d5 Fix: Don't depend on presence of String.prototype.startsWith
Instead use direct comparison with "divider" (matches docs more closely anyhow)
2015-06-09 22:33:18 +02:00
Gina Häußge
5d5c3d74c1 softwareupdate: re-fetch check data on plugin lifecycle events
If plugins get enabled or disabled, the update check configuration needs to be refetched next time it's needed since there might have been changes to plugin implementing the check_info hook.
2015-06-09 19:03:38 +02:00
Gina Häußge
592cad5b99 Deprecated AppPlugin mixin and introduced octoprint.accesscontrol.appkey hook instead
Plugins implementing the mixin will automatically be migrated to providing the single mixin method as hook handler.
2015-06-09 18:50:55 +02:00
Gina Häußge
228fb21ceb softwareupdate: Also allow {target} in pip install urls, as a synonym for {target_version} 2015-06-09 17:33:41 +02:00
Gina Häußge
f813e6317b Updated and bundled german core translation 2015-06-09 15:00:43 +02:00
Gina Häußge
51cc994610 softwareupdate: Slight rewording of "current versions" information 2015-06-09 14:59:52 +02:00
Gina Häußge
7ae83a4031 Moved software update plugin into "OctoPrint" settings section 2015-06-09 14:59:09 +02:00
Gina Häußge
8696ce9291 Fix: Bundled plugins always take precedence over external ones 2015-06-09 13:54:21 +02:00
Gina Häußge
2e6240a910 Bundled Software Update Plugin 2015-06-09 13:35:03 +02:00
Gina Häußge
cd390a53af Updated links in footer 2015-06-09 13:04:29 +02:00
Gina Häußge
ef1c9724c7 Fix: Include all packages for a plugin during setup, not only the topmost one
Thanks @Salandora
2015-06-09 12:47:37 +02:00
Gina Häußge
a9d5e1643d Merge branch 'devel' of github.com:foosel/OctoPrint into devel 2015-06-09 11:00:55 +02:00
Gina Häußge
f00c8bba33 Frontend: All number inputs are now right-aligned 2015-06-09 10:51:59 +02:00
Gina Häußge
d43ead5b34 Frontend: Added option to allow partial settings save with callback
That's useful for plugins which only want to allow editing a selected segment of the whole settings set.
2015-06-09 10:51:20 +02:00
Gina Häußge
4b896fc327 Fixed webassets cache method to not hiccup on vanished files
Utilizing a monkey patch to catch ENOENT errors when calculating the hash of cached files.
2015-06-09 10:49:59 +02:00
Gina Häußge
be5a5f3c69 Fix: Also take configuration changes into account for update-necessary-check on assets
This way, changes to the minify parameter actually change behaviour...
2015-06-08 18:06:45 +02:00
Gina Häußge
fde543f19e [doc] octoprint.ui.web.templatetypes hook is now documented 2015-06-08 12:05:29 +02:00
Gina Häußge
804d832544 Made name entry for Plugin Manager settings dialog translateable 2015-06-08 08:22:40 +02:00
Gina Häußge
bbba7f2817 Assets are no longer needed in index view renderer
They are now bundled via Flask-Assets instead
2015-06-08 08:22:11 +02:00
Marc
9753a74db4 Addded possibility to add dividers to System Command Menu 2015-06-05 01:26:45 +02:00
Gina Häußge
a1568c43d3 Bundled german language pack 2015-06-04 10:18:20 +02:00
Gina Häußge
0d7d4cb142 Custom webassets filter that rewrites LESS imports
Need to point to ../less folder
2015-06-04 09:06:04 +02:00
Gina Häußge
8d3f933562 Fixed webassets cache method to also allow overwriting files under windows
Utilizing a monkey patch to swap os.rename for shutil.move, which also works if the target file already exists.
2015-06-04 09:05:31 +02:00
Gina Häußge
3dc0452a45 Adjusted docs to describe new web asset handling 2015-06-03 20:21:12 +02:00
Gina Häußge
261f6709a3 Depend on Flask-Assets 0.10
Compatibility adjustments and version pinning
2015-06-03 19:36:38 +02:00
Gina Häußge
b63f842210 Webassets are now written to ~/.octoprint/generated
Same holds true for cache files, so there should be no problem anymore with installs where the static folder is not writable.

Also introduced two new devel config vars to disable merging and minifying of the assets, solved the empty-less-bundle problem and made sure babel knows about the jinja extension.
2015-06-03 18:27:30 +02:00
Gina Häußge
55650cd416 AssetPlugins now necessitate a restart due to utilizing blueprints 2015-06-03 18:25:27 +02:00
Gina Häußge
157b78a052 WIP: Use Flask-Assets to merge js, css and less files
Should reduce number of requests and hence load times needed for loading web interface.

TODO: Handling of empty bundles needs to be fixed
2015-06-03 16:42:57 +02:00
Gina Häußge
db980689c8 Fixed GCODE viewer in zoomed out browsers
Closes #612
2015-06-03 13:25:30 +02:00
Gina Häußge
b714c59004 Allow specification of known long running commands through settings
This should allow users to adjust the behaviour of the communication stack more granularly in case the regular settings which only consider G4, G28, G29, G30, G32 to be real long runners without output are not sufficient.
2015-06-03 12:34:00 +02:00
Gina Häußge
d2bca10ac9 Slight refactoring of API key evaluation in restricted_access decorator
Actual test whether key is provided or not happens in before_request handler of flask app, hence the more granular processing in the decorator was unecessary since around november '14. Adjusted to only do the actual processing necessary to replicate login_required behaviour/login users if necessary.

Closes #516 (actually, that was solved since introduction of the before_request handler which took that work off the hands of the decorator, but now it's properly documented too)
2015-06-03 11:55:32 +02:00
Gina Häußge
27dcef3e23 New approach to matching up installed packages with plugins
Match against entry_point origins using both package name and package name plus version. If one of those matches (depends on pip version if output will include version or not), it's the plugin we are looking for.

This way we don't need to try to strip a version number from the package name as output by pip without knowing if a version number is included or not.
2015-06-03 10:46:58 +02:00
Gina Häußge
ba5e99c187 Use namedtuple for plugin.origin data structure and include package version 2015-06-03 10:44:27 +02:00
Mark Walker
35f2c6d788 Pip result parsing version numbers and extra lines
Some pip invocations return extra info after the Successfully installed
(like "Cleaning up...").  Also, not all packages include a version
number in their package names.
2015-06-02 23:31:03 -07:00
Gina Häußge
da58b14124 Display a message when no additional language packs are installed 2015-06-02 14:41:56 +02:00
Gina Häußge
02b7085543 Merge branch 'dev/translationsAsPackages' into devel
Conflicts:
	src/octoprint/server/__init__.py
2015-06-02 13:58:40 +02:00
Gina Häußge
fb85b228f0 Merge branch 'dev/translationsAsPackages' of github.com:foosel/OctoPrint into dev/translationsAsPackages
Conflicts:
	src/octoprint/server/__init__.py
	src/octoprint/server/util/flask.py
	src/octoprint/server/views.py
2015-06-02 13:46:10 +02:00
Gina Häußge
52dd2ad7ac Management dialog for language packs
Allows managing language packs of core OctoPrint and plugins.
2015-06-02 13:39:10 +02:00
Gina Häußge
5904d01bff Unbundled translations, added new tools to bundle and pack translations
The only translation that is going to be bundled with OctoPrint for now will be .de, if at all. The reason simply being that this is the only translation I can update myself and hence guarantee a good user experience for.

setup.py now offers two new commands, babel_bundle and babel_pack, with which translations for plugins and core OctoPrint can be automatically bundled or packed as language packs once compiled. This should make sharing translations quite easy in the future.
2015-06-02 13:38:08 +02:00
Gina Häußge
7f8a3849c7 Adjusted messages.js compilation, debugged new i18n handling and added logging 2015-06-02 13:31:41 +02:00
Gina Häußge
106b21f288 New hook for specifying custom template types
TODO: documentation
2015-06-01 11:41:54 +02:00
Gina Häußge
449dd4301e Allow translations to be stored in ~/.octoprint
That is the first step towards downloadable (and separately managed) translation packages, decoupled from the software's release cycle and source control. Since it will be impossible to properly maintain all languages concurrently with OctoPrint's releases, decoupling that will hopefully increase the user experience through preventing broken translations (or stalling releases due to having to wait for the translations to be updated).
2015-05-29 19:44:11 +02:00
Gina Häußge
baf2a77e18 Updated German translation 2015-05-29 18:49:20 +02:00
Gina Häußge
ab1d28bb27 Removed some outdated code from the cura settings dialog 2015-05-29 18:48:58 +02:00
Gina Häußge
71319942d9 Fix: Don't have plugin i18n paths overwrite the core i18n path
Stopped translations bundled with OctoPrint to work
2015-05-29 18:23:16 +02:00
Gina Häußge
ff9765f668 Fixed font size in plugin manager's repository options 2015-05-29 16:46:22 +02:00
Gina Häußge
caef322b65 The Plugin Manager is now bundled with OctoPrint 2015-05-29 16:31:43 +02:00
Gina Häußge
a42868d7eb Allow marking plugins as uninstalled
Sometimes they will still get discovered by python even though their packages have since been uninstalled.
This will also lead to them being reloaded after an uninstall and a subsequent plugin reload.

Marking them as uninstalled and not handing out uninstalled plugins when collecting them solves this.
2015-05-29 16:25:18 +02:00
Gina Häußge
f2192ba232 Fix: Re-open detected serial port with specified baudrate
The serial port was previously kept open from the Stk500 initialization, which defaults to 115200 baud.

Closes #892
2015-05-29 11:36:36 +02:00
Gina Häußge
1a80aa854f Fix: "gcode" var was not properly parsed for queuing and queued command phases
Thanks @C-o-r-E for the heads-up
2015-05-28 20:20:51 +02:00
Gina Häußge
1e3f75c852 Merge branch 'rotate90' of https://github.com/markwal/OctoPrint into pr/markwal/rotate90
Conflicts:
	src/octoprint/static/css/octoprint.css
	src/octoprint/static/less/octoprint.less
2015-05-28 19:14:02 +02:00
Gina Häußge
61af59cca1 New hooks for command processing in comm layer
Added phase specific hooks for queuing, queued, sending and sent phases of a command ("octoprint.comm.protocol.gcode.<phase>"). Removed old queuing phase hook and declared as obsolete hook in plugin manager to prevent plugins that depend on it from being enabled.

Adding those new hooks also necessitated refactoring the whole command processing, made it more modular and added phase specific handler functions that allow handling all blocking commands centrally for example.
2015-05-28 17:06:24 +02:00
Gina Häußge
1458503561 Logging for the virtual printer... 2015-05-28 17:03:03 +02:00
Gina Häußge
046fffdd14 Fixed a deadlock in the communication layer when pausing via M0
Using reentrant locks to allow sending of additional commands
2015-05-28 16:10:48 +02:00
Gina Häußge
2cfa3d9218 Refuse to enable plugins that utilize obsolete hooks
Since it cannot be reliably determined by the system if a hook is essential for a plugin's functionality or not, it makes more sense to just disable plugins that utilize obsolete hooks then risk running half working plugins.
2015-05-28 12:56:42 +02:00
Mark Walker
a294fb4e8b Use a namespace for the jquery event so it will be less likely to stomp
on another event handler that may be added elsewhere.
2015-05-27 23:11:33 -07:00
Gina Häußge
ceb0e29da3 Changed existing octoprint.server.http.* hooks to prefix routes with /plugin/<identifier>/
This will hopefully prevent conflicting routes between multiple plugins from being registered and also ensures a more consistent behaviour compared to BlueprintPlugin mixins.

 Thanks to @Salandora for bringing this up.
2015-05-27 14:30:41 +02:00
Gina Häußge
3823216319 Some new styles for forms usable by plugins 2015-05-27 13:36:33 +02:00
Gina Häußge
3ac2d5dd34 Fixed Z-Timelapse for Z changes on `G1` moves
Solves #909
2015-05-26 18:46:50 +02:00
Gina Häußge
5c2a9ce5db Allow downloading all uploaded files, not just gcode and stl
Hidden files (starting with .) will produce a 404. This also excludes .metadata.yaml from being downloadable. The alternative of adding all extensions defined by plugins to the regex dynamically was not chosen since that would necessitate to make plugins implementing the "octoprint.filemanager.extension_tree" hook restart needing plugins in the lifecycle management for a minimal gain in perceived security.

Solves #897
2015-05-26 13:55:04 +02:00
Gina Häußge
ad054338b5 More/fixed documentation on the octoprint.server.util module 2015-05-26 13:16:01 +02:00
Mark Walker
42f06d5147 Request issue #895: Rotate webcam image
Added a setting to allow -90 degree rotation. Combined with fliph and
flipv, I think this means every one of the 8 major orientations is covered
(2^3). 0, 90, 180, 270 times 2 (mirror image in each rotation). I chose
-90 instead of 90 because that keeps the upper left corner pinned to the
same spot.
The extra ms-transforms aren't for this issue exactly but allowed me to
test my changes in ie. I've tested Chrome, Firefox and IE11. I don't
have Safari handy, but if it breaks it *should* be only when this is
enabled.
2015-05-24 17:02:32 -07:00
Gina Häußge
7263fb74a9 Merge pull request #901 from markwal/handleErrorsShortform
Only eat two characters when the error indicator is '!!'
2015-05-21 19:04:23 +02:00
Gina Häußge
e8ca6709b9 New hook "octoprint.server.http.routes" to extend static tornado routes through plugins
TODO: docs

Thanks @Salandora
2015-05-21 18:07:15 +02:00
Mark Walker
50c95e439d Only eat two characters when the error indicator is '!!' 2015-05-20 20:06:24 -07:00
Gina Häußge
fa57f160dc Log cancelled prints only once
Thanks to @imrahil for the headsup
2015-05-13 14:00:12 +02:00
Gina Häußge
37ee1d6780 octoprint.setuptools => octoprint_setuptools (own package)
Otherwise we get import issues during build since the octoprint module depends on the dependencies already being present what they obviously can't be at the beginning of setup.
2015-05-12 20:36:38 +02:00
Gina Häußge
9e9189727f Removed javascript babel files superseded by new central i18n js template 2015-05-12 17:38:22 +02:00
Gina Häußge
05fd4fbc8a Some final touches to the new setuptools submodule
CleanCommand should never touch .git subfolders. Plugin CleanCommand should remove plugin's egg-info files
2015-05-12 17:34:00 +02:00
Gina Häußge
95062747ef Extracted setuptools related things into reusable package
Babel related commands and the Clean command for setup.py are not reusable by plugins as well. Also added a factory method for plugin setup parameters.
2015-05-12 17:20:31 +02:00
Gina Häußge
6465e2dc2f Don't try to include a i18n js file when g.locale is not set 2015-05-12 13:54:36 +02:00
Gina Häußge
074d7a017e Wrapped some texts in translation brackets 2015-05-12 12:22:26 +02:00
Gina Häußge
739a185d1b Logging for flask view caching 2015-05-12 12:22:10 +02:00
Gina Häußge
9f54985ce5 Also support client side translations for plugins 2015-05-12 11:58:48 +02:00
Gina Häußge
b908ff5821 Enhanced flask-babel to also allow plugins to provide translated strings
This way plugins can maintain their own translations of their UIs. Some monkey patching was necessary, not the cleanest solution but it should work.
2015-05-11 18:44:30 +02:00
Gina Häußge
6029340f78 Merge branch 'sockjslikebunnies' of https://github.com/markwal/OctoPrint into pr/markwal/sockjslikebunnies 2015-05-11 16:22:34 +02:00
Gina Häußge
4c7520efb9 New hook "octoprint.server.http.bodysize" and lifecycle support for restart needing hooks
The new hook allows extending the list of rules for maximum body sizes differing from the default of 100KB and can be used by plugins to allow uploads to them that exceed that file size.

Also extended the plugin manager to detect plugins that implement restart needing hooks (such as the above one) and handling those plugins the same as plugins containing implementations that inherit from octoprint.plugin.core.RestartNeedingPlugin
2015-05-11 15:47:40 +02:00
Mark Walker
c8b8bcb22e Magic CLOSE_NORMAL
See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent
WebSocket defines 1000 as CLOSE_NORMAL, SockJS uses it without
a name and doesn't provide one for us, so for now we define our own
2015-05-11 05:52:36 -07:00
Gina Häußge
797a5c8a5c Cura plugin: Fix potential key error in error reporting 2015-05-11 13:10:23 +02:00
Gina Häußge
6323ce56ed Fix: Properly close selected files in case of errors or intentional disconnects on the serial interface
File handle was formerly kept open. Thanks to @Salandora for the initial work on this. See also PR #883
2015-05-11 12:23:56 +02:00
Gina Häußge
86a4e7f495 Only treat wait as ack while printing 2015-05-11 11:47:15 +02:00
Mark Walker
91bdffab33 Stop sockjs from multiplying on reconnect
Have you ever noticed when developing that every time you stop and start
the server, the terminal window gets an extra duplicate line for every
reconnect attempt?  Well, it's because (I think) "delete" in javascript
just removes the indicated name from the namespace, it doesn't actually
free up an object. Those zombie objects are still there and wake up (for
some transports) on reconnect. Might be different in SockJS v1 or later.
2015-05-10 18:58:18 -07:00
Gina Häußge
9568806219 Fix: Don't reload page when disabling access control in first run dialog
Cache clearing doesn't work reliably with location.reload(true), leading to cache induced infinite loop when disabling access control (since generated template still assumes first run dialog to be active). Disabling for now, need to find a better way to reload the page while clearing the browser's and server's cache (same issue exists for plugins needing a client side triggered reload).

Fixes #886
2015-05-10 00:54:44 +02:00
Gina Häußge
5fa30e4145 Ignore feed rates of 0, those don't make sense anyhow
Fixes #887
2015-05-10 00:36:09 +02:00
Gina Häußge
fa9821083d Support fast communication recovery during printing when printer sends "wait" line
Common setting in Repetier, Marlin might support this sooner or later as well.
2015-05-08 13:47:52 +02:00
Gina Häußge
9d3a029e10 Added missing event when closing the settings dialog 2015-05-07 15:23:40 +02:00
Gina Häußge
ea93ba6a77 Fixed grid in GCODE viewer for rectangular bed with origin in lower left 2015-05-07 13:05:43 +02:00
Gina Häußge
9b010db0b8 Removed obsolete elif branch in file upload code 2015-05-07 12:51:23 +02:00
Gina Häußge
aed9e905f2 Cura Plugin: added more logging
Trying to get to the ground of #878
2015-05-07 11:06:11 +02:00
Gina Häußge
d43bc2e17e Allow different timestamps (zones or dates) between client and server while keeping the temperature graph working
The server now sends the current server time with each temperature update as well as the initial temperature data, allowing the client to translate the timestamps contained in the temperature logs to its local timescale.

 Followup to commit f19d0f0360 which caused a problem with large deviations between server and client time.
2015-05-06 17:23:01 +02:00
Gina Häußge
9ecd59c6e1 Merge branch 'gcode-renderer-retina' of https://github.com/lucas-clemente/OctoPrint into pr/lucas-clemente/gcode-renderer-retina
Conflicts:
	CHANGELOG.md
2015-05-05 22:04:22 +02:00
Gina Häußge
d34b73cd7c Merge pull request #884 from Salandora/vp_dropConnection2
Adds !!DEBUG:drop_connection to the virtual Printer
2015-05-05 21:59:00 +02:00
Gina Häußge
3e5298fcab Merge pull request #879 from markwal/onSettingsShown
onSettingsShown/Hidden call only on parent dialog shown/hidden
2015-05-05 21:57:34 +02:00
Marc
e5de00095f Adds !!DEBUG:drop_connection to the virtual Printer 2015-05-05 21:01:00 +02:00
Gina Häußge
84cda5cfe2 Fix: Only show the "too big" dialog in the gcode viewer if no file loading is currently taking place
Possible fix for #825
2015-05-05 18:33:45 +02:00
Gina Häußge
f19d0f0360 Base cut off point for temperature graph on timestamps instead of data points
Cut off of the temperature graph is now not based on the number of data points any more but on the actual time of the data points. Anything older than ``n`` minutes will be cut off, with ``n`` defaulting to 30min. This value can be changed under "Temperatures" in the Settings

Closes #343
2015-05-05 18:18:55 +02:00
Gina Häußge
ede2e8c593 Virtual printer now allows sending of custom action commands
Sending "!!DEBUG:action_custom foo 1 2 3" will result in the virtual printer sending "// action:foo 1 2 3" back. Sending "!!DEBUG:action_custom bar" will result in the virtual printer sending "// action:bar" back.
2015-05-05 17:30:35 +02:00
Gina Häußge
2ef3930fc3 Better extruder/nozzle offset editing in the printer profiles
If only one tool is configured, the profile dialog now won't show the offset configuration. If more than one extruder is configured offset configuration for anything but the first tool (which acts as reference for the relative offsets of the others) will be shown.

Closes #677
2015-05-05 10:28:21 +02:00
Gina Häußge
92445a8a3f Virtual printer now supports two resend variants 2015-05-04 18:15:46 +02:00
Gina Häußge
517a32f08f Less strict error parsing for detecting communication errors
Instead of matching to full strings send by firmware in case of checksum or line number issues, now matches only against lower case "checksum", "line number" and "line expected". Should make it more resilient to firmware side changes of the sent messages.
2015-05-04 18:15:46 +02:00
Gina Häußge
72cadba854 Merge pull request #870 from DanLipsitt/feature/flask-0.10
flask 0.10 fixes
2015-05-04 11:36:14 +02:00
Gina Häußge
0ef66c74b0 Fix: Corectly send origin center for circular volumes
Also added more logging in case of invalid profile detection.
2015-05-04 11:27:25 +02:00
Gina Häußge
a1ae185272 Fans => Fan 2015-05-04 10:38:24 +02:00
Gina Häußge
fcdb556f3b Made autodetection more robust and fixed it not running if a preset for a baudrate existed
Thanks @Salandora
2015-04-30 17:25:52 +02:00
Gina Häußge
6e1e869851 Renamed parameter for default display for output custom control: defaultValue => default 2015-04-30 14:03:52 +02:00
Gina Häußge
ba1bab4ee7 Virtual printer now allows simulating more communication problems
Added new debug commands:
  * !!DEBUG:dont_answer will cause the next command to go unanswered
  * !!DEBUG:trigger_resend will trigger a resend request
2015-04-30 14:02:57 +02:00
Mark Walker
dbc2fe9cdb onSettingsShown/Hidden call only on parent dialog shown/hidden
jQuery bubbles all children show/hide events up to the parent so the
event gets called whenever a settings pane is chosen by the user.
Intent of the viewmodel callback was just on first show and final
dismiss.
2015-04-30 02:22:25 -07:00
Gina Häußge
ad17e22201 Force M105 upon communication timeout, see if that changes behaviour 2015-04-28 22:21:01 +02:00
Gina Häußge
3aa882ee21 Fix: Also process temperature responses that only contain bed temperatures 2015-04-28 16:31:10 +02:00
Gina Häußge
4944c33228 Made something way to complicated when it can be achieved oh so much easier.
Thanks @Salandora
2015-04-28 12:21:14 +02:00
Gina Häußge
06518b5374 Some changes to increase readability and reuse and remove redundancy 2015-04-28 12:16:54 +02:00
Marc
2a5a0282cb Updated the Check routine and put it into a temp. fcuntion for better readability 2015-04-27 20:55:06 +02:00
Marc
d4a96c53c3 Merge branch 'devel' of github.com:foosel/OctoPrint into fixControl 2015-04-27 19:39:37 +02:00
Gina Häußge
5e54f3a523 Persist package name for plugins loaded from entry point
This allows later deinstallation even if module and package name differ.
2015-04-27 18:43:00 +02:00
Gina Häußge
e96dcadc70 Fix: Receiving a "start" from the firmware triggers another handshake attempt
Fixes #869
2015-04-27 18:42:05 +02:00
Gina Häußge
fb5aaffdc1 Added a "fake ack" button to terminal tab, as counter measure for lost "ok"s
In case an ok gets lost on the line, this allows to have the communication between
OctoPrint and the printer take up again.
2015-04-27 18:13:39 +02:00
Gina Häußge
4ea6bcd1de Smoothie compat fix: Only wait for ok's after GCODE commands
Any unknown commands should just be piped through and not use up an acknowledgement. This
new behaviour can be overridden via the new feature flag "unknownCommandsNeedAck", which will
restore the former behaviour causing even unknown commands to use up an "ok".

Also no line numbering or checksumming will happen. Shouldn't usually be of relevance for other
firmwares, but in case of any compatibility issues introduced by this also added a new feature
flag "sendChecksumWithNonGcode" that causes even unknown commands to be sent with a
checksum if necessary.
2015-04-27 17:24:34 +02:00
Gina Häußge
5765180462 Fix: moved line number incrementing to send loop
Should fix issues where too fast a temperature polling could cause skipped line numbers, triggering nasty resend loops in the process.
2015-04-27 17:15:57 +02:00
Gina Häußge
4c1ba0fd0b [doc] <pluginname> => <plugin identifier> 2015-04-27 16:10:23 +02:00
Marc
159eb4ce59 Fix 2015-04-24 15:39:31 +02:00
Marc
17889a2b46 Slider DefaultValue always an Int and in range(min, max) 2015-04-24 14:46:41 +02:00
Gina Häußge
3ebc6f0f1d Fix: Reselect current printer profile if it was updated and deny deleting the current printer profile 2015-04-24 12:05:38 +02:00
Gina Häußge
9ee9f7bffb Workaround for idle temperature polling not working with Repetier Firmware
Repetier always first sends the ok and then any command output. In case of M105, that makes the response look like from an externally triggered heatup (no ok on the same line), causing polling to stop until that falsely detected heatup is complete. Added a configuration option to disable heatup detection. The disadvantage of this is that when printing via Repetier Firmware from SD, the heatup times won't be substractable from the total print time, leading to a less accurate print time left estimation.

 Closes #835
2015-04-24 09:36:43 +02:00
Dan Lipsitt
013d221398 BadRequest is actually in werkzeug.exceptions. 2015-04-23 13:17:39 -07:00
Gina Häußge
a55de71233 Merge branch 'pr/Salandora/patch3' into devel 2015-04-23 10:41:34 +02:00
Gina Häußge
2c50861c44 Removed unnecessary a tag in custom section headers, we can just use the h1 to toggle 2015-04-23 10:41:22 +02:00
Gina Häußge
d0e7cd46ce Removed id attribute again since we don't need it anymore 2015-04-23 10:27:15 +02:00
Gina Häußge
e0027c3cba Made baudrate detection a bit more solid 2015-04-23 10:07:05 +02:00
Gina Häußge
19918b7221 Suggestion for custom controls to allow for collapsable sections while keeping close to the same visual appearance 2015-04-22 19:27:44 +02:00
Marc
7c4c8485b4 Fixed Layout 2015-04-22 18:05:49 +02:00
Gina Häußge
88af79509f Delect selected files upon comm disconnect in the printer handler
Should solve #861
2015-04-22 11:42:41 +02:00
Gina Häußge
a42c5edaa3 Merge pull request #865 from DanLipsitt/feature/flask-0.10
Use BadRequest instead of JSONBadRequest.
2015-04-22 11:16:27 +02:00
Marc
ef9034e380 Fixed linendings and encoding 2015-04-22 10:20:15 +02:00
Marc
f24ae37bd8 Missing ; added 2015-04-22 10:01:09 +02:00
Marc
3f1cbb20d3 renamed deflt and default to defaultValue
+ adds a div container around the each Input
2015-04-22 10:00:58 +02:00
Marc
483e19adb6 exc.stack -> (exc.stack || exc) so if exc is a message (e.g. knockout sends a message) you'll get the message instead of undefined 2015-04-22 10:00:45 +02:00
Marc
3304a7e341 Deleted unnecessary css style 2015-04-22 10:00:29 +02:00
Marc
2edb92112a Custom control containers are now Collapsable if user wants so. 2015-04-22 10:00:02 +02:00
Marc
de8484b6f8 Added IDs to CustomControls and made Containers with names collapsable 2015-04-22 09:59:45 +02:00
Marc
88a81b186b Update CSS + LESS 2015-04-22 09:59:31 +02:00
Marc
15d4525b71 Added OnSettingsBeforeSave event + using onEventSettingsUpdated to sync the controls 2015-04-22 09:59:19 +02:00
Marc
032c76a944 Fixed horizontal and horizontal_grid to work properly 2015-04-22 09:58:57 +02:00
Marc
525709eb38 Added showConfirmationDialog function 2015-04-22 09:58:43 +02:00
Marc
232dbe5459 Patched Context Menu, to include also the object wich has the ContextMenu binding 2015-04-22 09:58:27 +02:00
Gina Häußge
3f14fdb51b Allow disabling the cache during development
Set "devel > cache > enabled" to false in config.yaml to disable the cache. Defaults to true.
2015-04-22 09:45:25 +02:00
Dan Lipsitt
ca914bd419 Use BadRequest instead of JSONBadRequest.
JSONBadRequest is removed in Flask version 0.10. BadRequest is backwards
compatible with Flask 0.9.
2015-04-21 23:10:03 -07:00
Gina Häußge
2ce40c4847 Added new callback to viewmodels, allowing to react to login events
Removed old loginstate.subscribe method and migrated existing code to new mechanism.

This should allow plugins to only request their sensitive data if a user is a) logged in and has b) the necessary rights for a request. The server should still do additional auth checks, but this way no unnecessary request have to be made.
2015-04-21 19:39:48 +02:00
Gina Häußge
3f272b209d Added method to SimpleApiPlugins to allow locking API to only admins 2015-04-21 19:39:48 +02:00
Jarek Szczepanski
26f43de07d Fixed sorting log files on settings dialog 2015-04-21 15:09:45 +02:00
Lucas Clemente
579fd3bbfb Add support for high-DPI screens to gcode renderer
window.devicePixelRatio is used to scale the canvas, extrusion line
width, retract spot size and mouse event position.
2015-04-18 12:14:47 +02:00
Gina Häußge
a996f7b6fb New hook octoprint.filemanager.preprocessor
Allows preprocessing files that are uploaded or otherwise added to the system (e.g. through slicing) before their contents are saved to disk
2015-04-17 14:45:58 +02:00
Gina Häußge
6bb4a3e28c Potential fix for the "No PKG-INFO found for package" issue 2015-04-16 18:37:03 +02:00
Gina Häußge
023b6f9d81 Small fixes prior to merge of #849
* Renamed userjson to userdata, removed original userdata (developers will live if they need to ensure their supplied userdata is valid JSON)
   * Input validation for userdata parameter - a HTTP 400 response will be generated if userdata can't be parsed as JSON
   * Adjusted documentation accordingly
2015-04-16 16:05:23 +02:00
Gina Häußge
694a8febb5 Merge branch 'jm/feature-metadata-endpoint' of https://github.com/Voxel8/OctoPrint into pr/jminardi/feature-metadata-endpoint 2015-04-16 15:39:35 +02:00
Gina Häußge
cd244f341d Small fixes prior to merge of #852
* Proper origin visualization in gcode viewer for centered rectangular
   * Validation of origin profile entry
   * Auto-migration of existing profiles upon load
   * Added changelog entry
2015-04-16 15:20:18 +02:00
Gina Häußge
12310c5e3a Merge branch 'centeredorigin' of https://github.com/markwal/OctoPrint into pr/markwal/centeredorigin 2015-04-16 13:33:26 +02:00
Gina Häußge
1d98135f58 New hook "octoprint.filemanager.extension_tree"
Allows extending the list of supported file extensions for the file manager.

See also discussion on #850
2015-04-16 13:09:05 +02:00
Gina Häußge
8ac375fc9b Some minor changes before merging the PR
* moved virtual printer into plugin
  * made default serial factory use supplied parameters instead of directly utilizing self._port and similar
  * documented new hook
2015-04-16 11:43:30 +02:00