Skip to content

Commit

Permalink
Initial release
Browse files Browse the repository at this point in the history
  • Loading branch information
MoonshineSG committed Jan 19, 2016
0 parents commit ca319cf
Show file tree
Hide file tree
Showing 6 changed files with 223 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
*.pyc
*.swp
.idea
*.iml
build
dist
*.egg*
.DS_Store
*.zip
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include README.md
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# OctoPrint-Autoscroll

Turn on/off terminal autoscroll when scrolling up/down

Turns autoscroll off when scrolling up (rename button to "Now")
Turns autoscroll on when "Now" is pressed or scrolled to the end

This simulates "Console" application, the OSX log viewer.

## Setup

Install via the bundled [Plugin Manager](https://github.com/foosel/OctoPrint/wiki/Plugin:-Plugin-Manager)
or manually using this URL:

https://github.com/MoonshineSG/Octoprint-Autoscroll/archive/master.zip



44 changes: 44 additions & 0 deletions octoprint_autoscroll/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# coding=utf-8
import octoprint.plugin
import logging

class AutoscrollPlugin(octoprint.plugin.AssetPlugin):

def get_assets(self):
return dict(
js=["js/autoscroll.js"]
)

def get_version(self):
return self._plugin_version

def get_update_information(self):
return dict(
autoscroll=dict(
displayName="Autoscroll",
displayVersion=self._plugin_version,

# version check: github repository
type="github_release",
user="MoonshineSG",
repo="OctoPrint-Autoscroll",
current=self._plugin_version,

# update method: pip
pip="https://github.com/MoonshineSG/OctoPrint-Autoscroll/archive/{target_version}.zip"
)
)

__plugin_name__ = "Autoscroll"


def __plugin_load__():
global __plugin_implementation__
__plugin_implementation__ = AutoscrollPlugin()

global __plugin_hooks__
__plugin_hooks__ = {
"octoprint.plugin.softwareupdate.check_config": __plugin_implementation__.get_update_information
}


57 changes: 57 additions & 0 deletions octoprint_autoscroll/static/js/autoscroll.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
$(function() {
function AutoscrollViewModel(models) {
var self = this;
self.terminal = models[0];
self.program = false;

self.onAllBound = function () {
self.terminal.autoscrollEnabled.subscribe(function(newValue) {
if (newValue) {
self.terminal.scrollToEnd();
self.rename("Autoscroll");
} else {
self.rename("Now");
}
});

//overwrite the method to set program tag
self.terminal.scrollToEnd = function() {
self.program = true;
if (self.container.length) {
self.container.scrollTop(self.container[0].scrollHeight);
}
}

self.container = $("#terminal-output");

$("#terminal-output").on("scroll", self.scrollhandle);
}

self.scrollhandle = function(event) {
if (!self.program) {
var auto = false;
if (self.container.length) {
auto = self._almost_equal(self.container[0].scrollHeight - self.container[0].scrollTop, self.container[0].clientHeight)
}
if ( auto ) {
self.terminal.autoscrollEnabled(true);
} else {
self.terminal.autoscrollEnabled(false);
}
}
self.program = false;
}

self.rename = function(name) {
$(".terminal button").text(name);
}

self._almost_equal = function(a, b){
if(Math.abs(a - b) < 5) return true;
return false;
}

}
ADDITIONAL_VIEWMODELS.push([AutoscrollViewModel, ["terminalViewModel"], []]);
});

94 changes: 94 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -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 = "autoscroll"

# The plugin's python package, should be "octoprint_<plugin identifier>", has to be unique
plugin_package = "octoprint_autoscroll"

# The plugin's human readable name. Can be overwritten within OctoPrint's internal data via __plugin_name__ in the
# plugin module
plugin_name = "OctoPrint-Autoscroll"

# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module
plugin_version = "0.0.1"

# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
# module
plugin_description = """Turn on/off terminal autoscroll when scrolling up/down"""

# The plugin's author. Can be overwritten within OctoPrint's internal data via __plugin_author__ in the plugin module
plugin_author = "ovidiu"

# The plugin's author's mail address.
plugin_author_email = "[email protected]"

# 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/MoonshineSG/OctoPrint-Autoscroll"

# 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_package>.*
plugin_addtional_packages = []

# Any python packages within <plugin_package>.* 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)

0 comments on commit ca319cf

Please sign in to comment.