From 630979fd7b8c0360ae14b30f97e3996372ea6c30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sat, 27 Jun 2015 19:26:15 +0200 Subject: [PATCH] Initial commit --- .editorconfig | 17 ++++++ .gitignore | 9 +++ MANIFEST.in | 1 + README.md | 12 ++++ extras/autoselect.md | 29 ++++++++++ octoprint_autoselect/__init__.py | 33 +++++++++++ requirements.txt | 9 +++ setup.py | 94 ++++++++++++++++++++++++++++++++ 8 files changed, 204 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 MANIFEST.in create mode 100644 README.md create mode 100644 extras/autoselect.md create mode 100644 octoprint_autoselect/__init__.py create mode 100644 requirements.txt create mode 100644 setup.py diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..82c8e05 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# This file is for unifying the coding style for different editors and IDEs +# editorconfig.org + +root = true + +[*] +end_of_line = lf +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +[**.py] +indent_style = tab + +[**.js] +indent_style = space +indent_size = 4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ecfcd6f --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.pyc +*.swp +.idea +*.iml +build +dist +*.egg* +.DS_Store +*.zip diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..bb3ec5f --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..b554968 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# OctoPrint-Autoselect + +The Autoselect Plugin will automatically select newly uploaded files for +printing if there is an active connection to a printer and currently no print +job running. + +## Setup + +Install via the bundled [Plugin Manager](https://github.com/foosel/OctoPrint/wiki/Plugin:-Plugin-Manager) +or manually using this URL: + + https://github.com/OctoPrint/OctoPrint-Autoselect/archive/master.zip diff --git a/extras/autoselect.md b/extras/autoselect.md new file mode 100644 index 0000000..30a5a13 --- /dev/null +++ b/extras/autoselect.md @@ -0,0 +1,29 @@ +--- +layout: plugin + +id: autoselect +title: OctoPrint-Autoselect +description: Automatically selects freshly uploaded files for printing if no print job is currently active. +author: Gina Häußge +license: AGPLv3 + +date: 2015-06-27 + +homepage: https://github.com/OctoPrint/OctoPrint-Autoselect +source: https://github.com/OctoPrint/OctoPrint-Autoselect +archive: https://github.com/OctoPrint/OctoPrint-Autoselect/archive/master.zip + +tags: +- ux +- upload +- filemanagement + +compatibility: + # list of compatible versions, for example 1.2.0. If left empty no specific version requirement will be assumed + octoprint: + - 1.2.0 +--- + +The Autoselect Plugin will automatically select newly uploaded files for +printing if there is an active connection to a printer and currently no print +job running. diff --git a/octoprint_autoselect/__init__.py b/octoprint_autoselect/__init__.py new file mode 100644 index 0000000..28aa5fa --- /dev/null +++ b/octoprint_autoselect/__init__.py @@ -0,0 +1,33 @@ +# coding=utf-8 +from __future__ import absolute_import + +import octoprint.plugin +from octoprint.filemanager.destinations import FileDestinations + +class AutoselectPlugin(octoprint.plugin.EventHandlerPlugin): + def on_event(self, event, payload): + if event != "Upload": + return + + if not self._printer.is_ready(): + self._logger.debug("Printer is not ready, not autoselecting uploaded file") + return + + filename = payload["file"] + target = payload["target"] + + if target == FileDestinations.SDCARD: + path = filename + sd = True + else: + path = self._file_manager.path_on_disk(target, filename) + sd = False + + self._logger.info("Selecting {} on {} that was just uploaded".format(filename, target)) + self._printer.select_file(path, sd, False) + +__plugin_name__ = "Autoselect Plugin" + +def __plugin_load__(): + global __plugin_implementation__ + __plugin_implementation__ = AutoselectPlugin() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a1dc463 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,9 @@ +### +# This file is only here to make sure that something like +# +# pip install -e . +# +# works as expected. Requirements can be found in setup.py. +### + +. diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..7b35368 --- /dev/null +++ b/setup.py @@ -0,0 +1,94 @@ +# coding=utf-8 + +######################################################################################################################## +### Do not forget to adjust the following variables to your own plugin. + +# The plugin's identifier, has to be unique +plugin_identifier = "autoselect" + +# The plugin's python package, should be "octoprint_", has to be unique +plugin_package = "octoprint_autoselect" + +# The plugin's human readable name. Can be overwritten within OctoPrint's internal data via __plugin_name__ in the +# plugin module +plugin_name = "OctoPrint-Autoselect" + +# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module +plugin_version = "0.1.0" + +# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin +# module +plugin_description = """Automatically selects freshly uploaded files for printing if no print job is currently active.""" + +# The plugin's author. Can be overwritten within OctoPrint's internal data via __plugin_author__ in the plugin module +plugin_author = "Gina Häußge" + +# The plugin's author's mail address. +plugin_author_email = "osd@foosel.net" + +# The plugin's homepage URL. Can be overwritten within OctoPrint's internal data via __plugin_url__ in the plugin module +plugin_url = "https://github.com/OctoPrint/OctoPrint-Autoselect" + +# The plugin's license. Can be overwritten within OctoPrint's internal data via __plugin_license__ in the plugin module +plugin_license = "AGPLv3" + +# Any additional requirements besides OctoPrint should be listed here +plugin_requires = [] + +### -------------------------------------------------------------------------------------------------------------------- +### More advanced options that you usually shouldn't have to touch follow after this point +### -------------------------------------------------------------------------------------------------------------------- + +# Additional package data to install for this plugin. The subfolders "templates", "static" and "translations" will +# already be installed automatically if they exist. +plugin_additional_data = [] + +# Any additional python packages you need to install with your plugin that are not contains in .* +plugin_addtional_packages = [] + +# Any python packages within .* you do NOT want to install with your plugin +plugin_ignored_packages = [] + +# Additional parameters for the call to setuptools.setup. If your plugin wants to register additional entry points, +# define dependency links or other things like that, this is the place to go. Will be merged recursively with the +# default setup parameters as provided by octoprint_setuptools.create_plugin_setup_parameters using +# octoprint.util.dict_merge. +# +# Example: +# plugin_requires = ["someDependency==dev"] +# additional_setup_parameters = {"dependency_links": ["https://github.com/someUser/someRepo/archive/master.zip#egg=someDependency-dev"]} +additional_setup_parameters = {} + +######################################################################################################################## + +from setuptools import setup + +try: + import octoprint_setuptools +except: + print("Could not import OctoPrint's setuptools, are you sure you are running that under " + "the same python installation that OctoPrint is installed under?") + import sys + sys.exit(-1) + +setup_parameters = octoprint_setuptools.create_plugin_setup_parameters( + identifier=plugin_identifier, + package=plugin_package, + name=plugin_name, + version=plugin_version, + description=plugin_description, + author=plugin_author, + mail=plugin_author_email, + url=plugin_url, + license=plugin_license, + requires=plugin_requires, + additional_packages=plugin_addtional_packages, + ignored_packages=plugin_ignored_packages, + additional_data=plugin_additional_data +) + +if len(additional_setup_parameters): + from octoprint.util import dict_merge + setup_parameters = dict_merge(setup_parameters, additional_setup_parameters) + +setup(**setup_parameters)