-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
MoonshineSG
committed
Jan 19, 2016
0 parents
commit ca319cf
Showing
6 changed files
with
223 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
*.pyc | ||
*.swp | ||
.idea | ||
*.iml | ||
build | ||
dist | ||
*.egg* | ||
.DS_Store | ||
*.zip |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
include README.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"], []]); | ||
}); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |