Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Z-Bolt/OctoPrint-Z-Bolt-Theme.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksei Kvitinskii <aleksei.kvitinskii@gmail.com>2019-07-04 11:51:59 +0300
committerAleksei Kvitinskii <aleksei.kvitinskii@gmail.com>2019-07-04 11:51:59 +0300
commitcf3024f4099a5eb5a5c2f0dd42c9c1d37f81d5ac (patch)
treeb5eb5341ef9da9f36ba14452f55f5686c3fcca4d
init
-rw-r--r--.vscode/settings.json12
-rw-r--r--MANIFEST.in1
-rw-r--r--OctoPrint_zbolttheme.egg-info/PKG-INFO10
-rw-r--r--OctoPrint_zbolttheme.egg-info/SOURCES.txt11
-rw-r--r--OctoPrint_zbolttheme.egg-info/dependency_links.txt1
-rw-r--r--OctoPrint_zbolttheme.egg-info/entry_points.txt3
-rw-r--r--OctoPrint_zbolttheme.egg-info/not-zip-safe1
-rw-r--r--OctoPrint_zbolttheme.egg-info/requires.txt1
-rw-r--r--OctoPrint_zbolttheme.egg-info/top_level.txt1
-rw-r--r--README.md18
-rw-r--r--babel.cfg6
-rw-r--r--octoprint_zbolttheme/__init__.py79
-rw-r--r--octoprint_zbolttheme/__init__.pycbin0 -> 3811 bytes
-rw-r--r--octoprint_zbolttheme/static/css/README.txt1
-rw-r--r--octoprint_zbolttheme/static/css/main.css30
-rw-r--r--octoprint_zbolttheme/static/css/theme.css1
-rw-r--r--octoprint_zbolttheme/static/css/theme.css.map1
-rw-r--r--octoprint_zbolttheme/static/favicon.pngbin0 -> 3527 bytes
-rw-r--r--octoprint_zbolttheme/static/img/z-bolt-logo.svg15
-rw-r--r--octoprint_zbolttheme/static/js/zbolttheme.js23
-rw-r--r--octoprint_zbolttheme/static/less/README.txt1
-rw-r--r--octoprint_zbolttheme/static/less/theme.less403
-rw-r--r--octoprint_zbolttheme/static/less/variables.less0
-rw-r--r--octoprint_zbolttheme/templates/README.txt1
-rw-r--r--octoprint_zbolttheme/templates/zbolttheme_settings.jinja25
-rw-r--r--requirements.txt9
-rw-r--r--setup.py94
27 files changed, 728 insertions, 0 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..0f3506e
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,12 @@
+{
+ "python.linting.flake8Enabled": false,
+ "python.linting.pylintEnabled": true,
+ "python.linting.enabled": true,
+
+ "less.compile": {
+ "compress": true, // true => remove surplus whitespace
+ "sourceMap": true, // true => generate source maps (.css.map files)
+ "out": "../../../octoprint_zbolttheme/static/css/", // "./otorpint_z-bolttheme/static/css/theme.css"
+ }
+
+}
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..5669e3e
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1 @@
+include README.md
diff --git a/OctoPrint_zbolttheme.egg-info/PKG-INFO b/OctoPrint_zbolttheme.egg-info/PKG-INFO
new file mode 100644
index 0000000..f5d16c4
--- /dev/null
+++ b/OctoPrint_zbolttheme.egg-info/PKG-INFO
@@ -0,0 +1,10 @@
+Metadata-Version: 1.0
+Name: OctoPrint-zbolttheme
+Version: 1.0.0
+Summary: Z-Bolt's theme for OctoPrint
+Home-page: https://github.com/Z-Bolt/OctoPrint-Z-Bolt-Theme
+Author: Z-Bolt
+Author-email: aleksei.wm@gmail.com
+License: AGPLv3
+Description: UNKNOWN
+Platform: UNKNOWN
diff --git a/OctoPrint_zbolttheme.egg-info/SOURCES.txt b/OctoPrint_zbolttheme.egg-info/SOURCES.txt
new file mode 100644
index 0000000..907a48e
--- /dev/null
+++ b/OctoPrint_zbolttheme.egg-info/SOURCES.txt
@@ -0,0 +1,11 @@
+MANIFEST.in
+README.md
+setup.py
+OctoPrint_zbolttheme.egg-info/PKG-INFO
+OctoPrint_zbolttheme.egg-info/SOURCES.txt
+OctoPrint_zbolttheme.egg-info/dependency_links.txt
+OctoPrint_zbolttheme.egg-info/entry_points.txt
+OctoPrint_zbolttheme.egg-info/not-zip-safe
+OctoPrint_zbolttheme.egg-info/requires.txt
+OctoPrint_zbolttheme.egg-info/top_level.txt
+octoprint_zbolttheme/__init__.py \ No newline at end of file
diff --git a/OctoPrint_zbolttheme.egg-info/dependency_links.txt b/OctoPrint_zbolttheme.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/OctoPrint_zbolttheme.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/OctoPrint_zbolttheme.egg-info/entry_points.txt b/OctoPrint_zbolttheme.egg-info/entry_points.txt
new file mode 100644
index 0000000..96b1f0f
--- /dev/null
+++ b/OctoPrint_zbolttheme.egg-info/entry_points.txt
@@ -0,0 +1,3 @@
+[octoprint.plugin]
+zbolttheme = octoprint_zbolttheme
+
diff --git a/OctoPrint_zbolttheme.egg-info/not-zip-safe b/OctoPrint_zbolttheme.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/OctoPrint_zbolttheme.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
diff --git a/OctoPrint_zbolttheme.egg-info/requires.txt b/OctoPrint_zbolttheme.egg-info/requires.txt
new file mode 100644
index 0000000..9267262
--- /dev/null
+++ b/OctoPrint_zbolttheme.egg-info/requires.txt
@@ -0,0 +1 @@
+OctoPrint
diff --git a/OctoPrint_zbolttheme.egg-info/top_level.txt b/OctoPrint_zbolttheme.egg-info/top_level.txt
new file mode 100644
index 0000000..0e90d9b
--- /dev/null
+++ b/OctoPrint_zbolttheme.egg-info/top_level.txt
@@ -0,0 +1 @@
+octoprint_zbolttheme
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..14fe904
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# OctoPrint-Z-Bolt-Theme
+
+**TODO:** Describe what your plugin does.
+This plugin changes the way octoprint looks on a browser.
+
+## Setup
+
+Install via the bundled [Plugin Manager](https://github.com/foosel/OctoPrint/wiki/Plugin:-Plugin-Manager)
+or manually using this URL:
+
+ https://github.com/Z-Bolt/OctoPrint-Z-Bolt-Theme
+
+**TODO:** Describe how to install your plugin, if more needs to be done than just installing it via pip or through
+the plugin manager.
+
+## Configuration
+
+**TODO:** Describe your plugin's configuration options (if any).
diff --git a/babel.cfg b/babel.cfg
new file mode 100644
index 0000000..e34825a
--- /dev/null
+++ b/babel.cfg
@@ -0,0 +1,6 @@
+[python: */**.py]
+[jinja2: */**.jinja2]
+extensions=jinja2.ext.autoescape, jinja2.ext.with_
+
+[javascript: */**.js]
+extract_messages = gettext, ngettext
diff --git a/octoprint_zbolttheme/__init__.py b/octoprint_zbolttheme/__init__.py
new file mode 100644
index 0000000..7b2dc6f
--- /dev/null
+++ b/octoprint_zbolttheme/__init__.py
@@ -0,0 +1,79 @@
+# coding=utf-8
+from __future__ import absolute_import
+
+import octoprint.plugin
+import flask
+import socket
+
+
+
+class zboltthemePlugin(octoprint.plugin.SettingsPlugin,
+ octoprint.plugin.TemplatePlugin,
+ octoprint.plugin.AssetPlugin,
+ octoprint.plugin.SimpleApiPlugin,
+ octoprint.plugin.StartupPlugin):
+
+ def __init__(self):
+ hostname = socket.gethostname() + ".local"
+ self.printer_name = [hostname]
+
+ def get_settings_defaults(self):
+ return dict(
+ webcam=dict(
+ enabled=False
+ )
+ )
+
+ def get_assets(self):
+ return dict(
+ less=['less/theme.less'],
+ js=['js/zbolttheme.js'],
+ css=['css/main.css', 'css/theme.css']
+ )
+
+ def get_api_commands(self):
+ return dict(
+ update_printer_name=[]
+ )
+
+ def on_api_command(self, command, data):
+ if command == "update_printer_name":
+ self.printer_name = data.get("printer_name")
+ self._plugin_manager.send_plugin_message(
+ self._identifier, dict(printer_name=self.printer_name))
+
+ def on_api_get(self, request):
+ return flask.jsonify(printer_name=self.printer_name)
+
+ def get_template_configs(self):
+ return [
+ dict(type="settings", name="Z-Bolt",
+ data_bind="visible: loginState.isAdmin()"),
+ ]
+
+ ##~~ Softwareupdate hook
+ def get_update_information(self):
+ return dict(
+ zbolttheme=dict(
+ displayName = "Z-Bolt Theme",
+ displayVersion = self._plugin_version,
+
+ type="github_release",
+ user="Z-Bolt",
+ repo="OctoPrint-zbolttheme",
+ current=self._plugin_version,
+
+ pip="https://github.com/Z-Bolt/OctoPrint-Z-Bolt-Theme/archive/{target_version}.zip"
+ )
+ )
+
+__plugin_name__ = "Z-Bolt Theme"
+
+def __plugin_load__():
+ global __plugin_implementation__
+ __plugin_implementation__ = zboltthemePlugin()
+
+ global __plugin_hooks__
+ __plugin_hooks__ = {
+ "octoprint.plugin.softwareupdate.check_config":__plugin_implementation__.get_update_information
+ }
diff --git a/octoprint_zbolttheme/__init__.pyc b/octoprint_zbolttheme/__init__.pyc
new file mode 100644
index 0000000..e601225
--- /dev/null
+++ b/octoprint_zbolttheme/__init__.pyc
Binary files differ
diff --git a/octoprint_zbolttheme/static/css/README.txt b/octoprint_zbolttheme/static/css/README.txt
new file mode 100644
index 0000000..1803f70
--- /dev/null
+++ b/octoprint_zbolttheme/static/css/README.txt
@@ -0,0 +1 @@
+Have your plugin's CSS files generated to here. \ No newline at end of file
diff --git a/octoprint_zbolttheme/static/css/main.css b/octoprint_zbolttheme/static/css/main.css
new file mode 100644
index 0000000..ade178b
--- /dev/null
+++ b/octoprint_zbolttheme/static/css/main.css
@@ -0,0 +1,30 @@
+/* Z-Bolt OctoPrint Theme
+ * Contributors: Aleksei Kvitinskii (aleksei.wm@gmail.com)
+===================================================
+ Table of Contents
+===================================================
+ I. SHARED STYLES
+ II. PRIMARY COMPONENTS
+ III. PANELS
+ IV. THEME ELEMENTS
+ V. COLOR SYSTEM
+ VI. MISCELLANEOUS
+ VII. HELPERS
+ VIII. RESPONSIVE FUNCTIONALITY
+===================================================
+
+===================================================
+ I. SHARED STYLES
+ A. Global
+ B. Grid
+ C. Typography
+===================================================
+ A. Global
+=================================================== */
+
+@import url("https://fonts.googleapis.com/css?family=Open+Sans:100,100italic,300,300italic,400,400italic,500,500italic,700,700italic,900,900italic&subset=latin,latin-ext,cyrillic,cyrillic-ext,greek-ext,greek,vietnamese");
+
+body {
+ font-family: 'Open Sans', sans-serif;
+}
+
diff --git a/octoprint_zbolttheme/static/css/theme.css b/octoprint_zbolttheme/static/css/theme.css
new file mode 100644
index 0000000..04d819b
--- /dev/null
+++ b/octoprint_zbolttheme/static/css/theme.css
@@ -0,0 +1 @@
+body{background-color:#F4F7FA;font-weight:400}a{color:#007bff}.shadow-s{-webkit-box-shadow:0 1px 20px 0 rgba(69,90,100,0.08);box-shadow:0 1px 20px 0 rgba(69,90,100,0.08)}.shadow-m,.accordion-group,.tabbable{-webkit-box-shadow:0 3px 10px 0 rgba(0,0,0,0.05);box-shadow:0 3px 10px 0 rgba(0,0,0,0.05)}.shadow-l,.btn,.btn-primary,.nav-tabs>.active>a,.nav-tabs>.active>a:hover{-webkit-box-shadow:0 10px 18px 0 rgba(62,57,107,0.2);box-shadow:0 10px 18px 0 rgba(62,57,107,0.2)}.shadow-xl,.progress .bar{-webkit-box-shadow:0 10px 20px 0 rgba(0,0,0,0.3);box-shadow:0 10px 20px 0 rgba(0,0,0,0.3)}.alert h1,.alert h2,.alert h3,.alert h4,.alert h5,.alert h6{color:inherit}.text-error{color:#dc3545 !important}.text-success{color:#28a745 !important}.btn{text-shadow:none;background-image:none;font-weight:400;border:none;background-color:#748892;color:#fff}.btn:hover{color:#fff;background-color:#91a0a8}.btn:active{box-shadow:none}.btn[disabled]{color:#fff;background-color:#748892}.btn-primary{background-color:#04a9f5}.btn-primary:hover{background-color:#30bcfc}.btn-primary[disabled],.btn-primary.disabled{background-color:#30bcfc}.btn-group>.btn+.dropdown-toggle{box-shadow:none}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04a9f5}.container{width:100%}.container .span4{width:25%}.container .span8{width:70%}.container .row{margin-left:0}#navbar .navbar-inner{background-color:rgba(26,26,26,0.92);border:none;background-image:none}#navbar .navbar-inner .nav>li.dropdown.open>.dropdown-toggle,#navbar .navbar-inner .nav>li.dropdown.active>.dropdown-toggle,#navbar .navbar-inner .nav>li.dropdown.open.active>.dropdown-toggle{background:#fcfcfc;border-bottom:1px solid #333;color:#fff}#navbar .navbar-inner .nav>li>a:hover{color:#fff;background:#04a9f5}#navbar .navbar-inner .brand,#navbar .navbar-inner .nav>li>a{text-shadow:none;color:#fff}#navbar .navbar-inner .brand .caret,#navbar .navbar-inner .nav>li>a .caret{border-top-color:#fff;border-bottom-color:#fff}#navbar .navbar-inner .brand span{background-image:url(../img/z-bolt-logo.svg)}.navbar-inner .container{width:100%}.nav-tabs{border-bottom:none;margin:10px;padding-bottom:10px}.nav-tabs>li>a{-webkit-border-radius:0;border-radius:0;border:none}.nav-tabs>li{margin-bottom:-2px;border:none}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{background:#04a9f5;color:#fff;border-radius:4px;border:none}.nav-tabs>li>a:hover{background:none;border:none}.accordion-group{background-color:#fff;border:none;border-radius:0;margin-bottom:5px}.accordion-group hr{border-bottom:none;border-top:1px solid #e6e6e6}.accordion-inner{border-top:none;padding-bottom:10px;padding-top:0}.octoprint-container .accordion-heading{font-size:17px;position:relative;padding-top:10px;padding-bottom:10px}.octoprint-container .accordion-heading [class*=" icon-"]{color:#007bff}.octoprint-container .accordion-heading .accordion-heading-button a{font-size:17px;color:#007bff}.octoprint-container .accordion-heading .accordion-toggle:after{content:"";background-color:#04a9f5;position:absolute;left:0;top:7px;width:4px;height:20px}.octoprint-container .accordion-heading .accordion-toggle{display:inline-block;margin-right:10px;line-height:1.1;position:relative;padding-left:20px}.octoprint-container .accordion-heading *,.octoprint-container .accordion-heading ::after,.octoprint-container .accordion-heading ::before{box-sizing:border-box}.octoprint-container{margin-top:0}#state_wrapper{background:linear-gradient(-135deg, #1de9b6 0, #0247af 100%);color:#fff}#state_wrapper .accordion-toggle{color:#fff}#state_wrapper .accordion-heading [class*=" icon-"]{color:#fff}#state_wrapper .accordion-toggle:after{background:#fff}.sd-trigger{display:none}.tab-pane{padding-bottom:10px}.octoprint-container .tab-content{border:none}.tabbable{background:#fff;padding-top:10px}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#fff}.dropdown-menu{-webkit-box-shadow:0 1px 10px 0 rgba(69,90,100,0.2);box-shadow:0 1px 10px 0 rgba(69,90,100,0.2);border:none}#temperature-table input[type=number].input-nospin,#temperature-table .input-mini{border:none;background:#f2f2f2;box-shadow:none}#temperature-table .input-append .add-on{border:none;background:#f2f2f2}#control .box{padding-left:9px}#temperature-graph{background:none}#job_print{background-color:#1de9b6}#job_pause{background-color:#04a9f5}.caret{border-top:4px solid #fff}.progress{border-radius:0;box-shadow:none;background:#f4f7fa;overflow:visible}.progress .bar{background:linear-gradient(-135deg, #1de9b6 0, #1dc4e9 100%);border-radius:0;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;text-align:center;white-space:nowrap}.progress-text-back{color:#333}.slider .slider-selection{background-image:-webkit-linear-gradient(top, #8ac1ef 0, #82b3de 100%);background-image:-o-linear-gradient(top, #8ac1ef 0, #82b3de 100%);background-image:linear-gradient(to bottom, #8ac1ef 0, #82b3de 100%);background-repeat:repeat-x;border:0 solid transparent}.slider .slider-handle{width:20px !important;height:20px !important;margin-top:-5px !important}.slider .slider-handle.round{background-color:#337ab7;background-image:-webkit-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:-o-linear-gradient(top, #337ab7 0, #2e6da4 100%);background-image:linear-gradient(to bottom, #337ab7 0, #2e6da4 100%);background-repeat:repeat-x;border:0 solid transparent}.slider .slider-track{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #f9f9f9 100%);background-image:-o-linear-gradient(top, #f5f5f5 0, #f9f9f9 100%);background-image:linear-gradient(to bottom, #f5f5f5 0, #f9f9f9 100%);background-repeat:repeat-x;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);border-radius:4px;border:none}.hero-unit{width:700px;margin:auto}.modal-backdrop,.modal-backdrop.fade.in{opacity:.4;background:#000}.modal{border:none}.footer{display:none}/*# sourceMappingURL=./theme.css.map */ \ No newline at end of file
diff --git a/octoprint_zbolttheme/static/css/theme.css.map b/octoprint_zbolttheme/static/css/theme.css.map
new file mode 100644
index 0000000..ea4bc7e
--- /dev/null
+++ b/octoprint_zbolttheme/static/css/theme.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../less/theme.less"],"names":[],"mappings":"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"} \ No newline at end of file
diff --git a/octoprint_zbolttheme/static/favicon.png b/octoprint_zbolttheme/static/favicon.png
new file mode 100644
index 0000000..4412542
--- /dev/null
+++ b/octoprint_zbolttheme/static/favicon.png
Binary files differ
diff --git a/octoprint_zbolttheme/static/img/z-bolt-logo.svg b/octoprint_zbolttheme/static/img/z-bolt-logo.svg
new file mode 100644
index 0000000..9389e7f
--- /dev/null
+++ b/octoprint_zbolttheme/static/img/z-bolt-logo.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="100px" height="100px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->
+ <title>bc_1_1</title>
+ <desc>Created with Sketch.</desc>
+ <g id="Business-Card" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="bc_1_1" transform="translate(-298.000000, -272.000000)" fill="#FFFFFF" fill-rule="nonzero">
+ <g id="Group" transform="translate(298.000000, 272.000000)">
+ <g id="LogoWhite6" transform="translate(5.000000, 6.000000)">
+ <path d="M15.8889021,23.0208393 C21.7519276,15.2277319 30.4897934,10.1414305 40.1138106,8.92051029 L40.1138106,22.3818046 L22.1743952,26.6835998 L15.8889021,23.0208393 Z M20.4381566,36.1080646 L44.6270009,30.3047971 L56.007865,33.1207067 L11.3808641,59.1029268 C7.61472029,50.0837037 7.61987234,39.9214918 11.3808641,30.8970732 L20.4381566,36.1080646 Z M33.2409845,56.8792933 L77.8628334,30.8970732 C81.6289771,39.9162963 81.6289771,50.0837037 77.8628334,59.1029268 L68.7797806,53.8140044 L44.6733691,58.5314323 L33.2409845,56.8792933 Z M44.6733691,67.6233909 L67.0693021,63.3164003 L73.3547954,66.9791607 C70.5057152,70.7770018 66.9920215,73.9150262 63.0404043,76.27374 C57.553478,79.5520406 51.2267685,81.33926 44.663065,81.3496506 C33.3697859,81.3600416 22.7205118,76.0451422 15.8889021,66.9791607 L22.1743952,63.3164003 L44.6733691,67.6233909 Z M49.1298869,22.3818046 L49.1298869,8.92051029 C58.759056,10.1414305 67.4866177,15.2225365 73.3547954,23.0208393 L67.0693021,26.6835998 L49.1298869,22.3818046 Z M44.6218486,0 C19.9796247,0 0,20.1477804 0,45.0025976 C0,69.8522195 19.9796247,90 44.6218486,90 C69.2692248,90 89.2436975,69.8522195 89.2436975,45.0025976 C89.2436975,20.1477804 69.2692248,0 44.6218486,0 Z" id="Shape"></path>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/octoprint_zbolttheme/static/js/zbolttheme.js b/octoprint_zbolttheme/static/js/zbolttheme.js
new file mode 100644
index 0000000..90c20e0
--- /dev/null
+++ b/octoprint_zbolttheme/static/js/zbolttheme.js
@@ -0,0 +1,23 @@
+$(function() {
+
+ function ZBoltViewModel(parameters) {
+ var self = this;
+
+ var faviconUrl = document.querySelector("link[rel~='mask-icon-theme']").href
+ || link.href
+ || window.location.origin + "/favicon.ico";
+
+ console.log('test');
+ }
+
+ OCTOPRINT_VIEWMODELS.push({
+ construct: ZBoltViewModel,
+ // dependencies: ["AppearanceViewModel"],
+ elements: ["head"]
+ });
+
+
+
+});
+
+
diff --git a/octoprint_zbolttheme/static/less/README.txt b/octoprint_zbolttheme/static/less/README.txt
new file mode 100644
index 0000000..023008f
--- /dev/null
+++ b/octoprint_zbolttheme/static/less/README.txt
@@ -0,0 +1 @@
+Put your plugin's LESS files here, have them generated to ../css. \ No newline at end of file
diff --git a/octoprint_zbolttheme/static/less/theme.less b/octoprint_zbolttheme/static/less/theme.less
new file mode 100644
index 0000000..eec76d1
--- /dev/null
+++ b/octoprint_zbolttheme/static/less/theme.less
@@ -0,0 +1,403 @@
+
+
+@mainLink: #007bff;
+@mainBg: #F4F7FA;//#2C2F33;
+@widgetsBg: #fff;
+@mainFontColor: #333;//#darken(#fff, 20);
+
+@mainButtonBg: #04a9f5;
+@mainButtonFontColor: #fff;
+@mainGreen: #15A336;
+
+@greyButtonBg: #748892;
+
+
+body {
+ background-color: @mainBg;
+ font-weight: 400;
+}
+
+a {
+ color: @mainLink;
+}
+
+.shadow-s {
+ -webkit-box-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08);
+ box-shadow: 0 1px 20px 0 rgba(69, 90, 100, 0.08);
+}
+
+.shadow-m {
+ -webkit-box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.05);
+ box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.05);
+}
+
+.shadow-l {
+ -webkit-box-shadow: 0 10px 18px 0 rgba(62, 57, 107, 0.2);
+ box-shadow: 0 10px 18px 0 rgba(62, 57, 107, 0.2);
+}
+
+.shadow-xl {
+ -webkit-box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.3);
+ box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.3);
+}
+
+
+.alert {
+ h1, h2, h3, h4, h5, h6 {
+ color: inherit;
+ }
+}
+
+.text-error {
+ color: #dc3545!important
+}
+
+.text-success {
+ color: #28a745!important
+}
+
+.btn {
+ text-shadow: none;
+
+ &:extend(.shadow-l);
+
+ background-image: none;
+ // box-shadow: none;
+ font-weight: 400;
+ border: none;
+ background-color: @greyButtonBg;
+ color: #fff;
+
+ &:hover {
+ color: #fff;
+ background-color: lighten(@greyButtonBg, 10);
+ }
+
+ &:active {
+ box-shadow: none;
+ }
+}
+
+.btn[disabled] {
+ color: #fff;
+ background-color: @greyButtonBg;
+}
+
+.btn-primary {
+ &:extend(.shadow-l);
+ background-color: @mainButtonBg;
+ &:hover {
+ background-color: lighten(@mainButtonBg, 10);
+ }
+}
+
+.btn-primary[disabled], .btn-primary.disabled {
+ background-color: lighten(@mainButtonBg,10);
+}
+
+.btn-group>.btn+.dropdown-toggle {
+ box-shadow: none;
+}
+
+.btn-group.open .btn-primary.dropdown-toggle {
+ background-color: @mainButtonBg;
+}
+
+.container {
+ width:100%;
+ .span4 {
+ width: 25%;
+ }
+ .span8 {
+ width: 70%;
+ }
+
+ .row {
+ margin-left: 0;
+ }
+}
+
+#navbar .navbar-inner {
+ background-color: rgba(26, 26, 26, 0.92);
+ border: none;
+ background-image: none;
+
+ .nav {
+ >li.dropdown.open>.dropdown-toggle, >li.dropdown.active>.dropdown-toggle, >li.dropdown.open.active>.dropdown-toggle {
+ background: darken(@widgetsBg, 1);
+ border-bottom: 1px solid @mainFontColor;
+ color: #fff;
+ }
+ > li > a:hover {
+ color: #fff;
+ background: @mainButtonBg;
+ }
+ }
+
+ & .brand, .nav > li > a {
+ text-shadow: none;
+ color: #fff;
+ & .caret {
+ border-top-color: #fff;
+ border-bottom-color: #fff;
+ }
+ }
+ .brand span {
+ background-image: url(../img/z-bolt-logo.svg);
+ }
+}
+
+.navbar-inner .container{
+ width:100%;
+}
+
+.nav-tabs {
+ border-bottom: none;
+ margin: 10px;
+ padding-bottom: 10px;
+}
+
+.nav-tabs>li>a {
+ -webkit-border-radius: 0;
+ border-radius: 0;
+ border:none;
+}
+
+.nav-tabs>li {
+ margin-bottom: -2px;
+ border:none
+}
+
+.nav-tabs>.active>a, .nav-tabs>.active>a:hover {
+ &:extend(.shadow-l);
+ background: @mainButtonBg;
+ color: @mainButtonFontColor;
+ border-radius: 4px;
+ border: none;
+}
+
+.nav-tabs>li>a:hover {
+ background:none;
+ border:none;
+}
+
+.accordion-group {
+ &:extend(.shadow-m);
+ background-color: @widgetsBg;
+ border: none;
+ border-radius: 0px;
+ margin-bottom: 5px;
+
+ hr {
+ border-bottom: none;
+ border-top: 1px solid darken(@widgetsBg, 10);
+ }
+}
+
+.accordion-inner {
+ border-top: none;
+ padding-bottom: 10px;
+ padding-top: 0px;
+}
+
+.octoprint-container .accordion-heading {
+ font-size: 17px;
+ position: relative;
+ padding-top: 10px;
+ padding-bottom: 10px;
+
+ [class*=" icon-"] {
+ color: @mainLink;
+ }
+
+ .accordion-heading-button a {
+ font-size: 17px;
+ color: @mainLink;
+ }
+
+ .accordion-toggle:after {
+ content: "";
+ background-color: #04a9f5;
+ position: absolute;
+ left: 0px;
+ top: 7px;
+ width: 4px;
+ height: 20px;
+ }
+
+ .accordion-toggle {
+ display: inline-block;
+ margin-right: 10px;
+ line-height: 1.1;
+ position: relative;
+ padding-left: 20px;
+ }
+
+ *, ::after, ::before {
+ box-sizing: border-box;
+ }
+
+}
+
+.octoprint-container {
+ margin-top: 0px;
+}
+
+#state_wrapper {
+ // background-color: #04a9f5;
+ background: linear-gradient(-135deg, #1de9b6 0, #0247af 100%);
+ color: #fff;
+ .accordion-toggle {
+ color: #fff;
+ }
+
+ .accordion-heading [class*=" icon-"] {
+ color: #fff;
+ }
+
+ .accordion-toggle:after {
+ background: #fff;
+ }
+}
+
+
+.sd-trigger {
+ display: none;
+}
+
+
+.tab-pane {
+ padding-bottom: 10px;
+}
+
+.octoprint-container .tab-content {
+ border: none;
+}
+
+.tabbable {
+ background: @widgetsBg;
+ &:extend(.shadow-m);
+ padding-top: 10px;
+}
+
+.table-hover tbody tr:hover td,
+.table-hover tbody tr:hover th {
+ background-color: @widgetsBg;
+}
+
+.dropdown-menu {
+ -webkit-box-shadow: 0 1px 10px 0 rgba(69, 90, 100, 0.2);
+ box-shadow: 0 1px 10px 0 rgba(69, 90, 100, 0.2);
+ border: none;
+}
+
+
+#temperature-table {
+ input[type=number].input-nospin, .input-mini {
+ border: none;
+ background: #f2f2f2;
+ box-shadow:none;
+ }
+
+ .input-append .add-on {
+ border: none;
+ background: #f2f2f2;
+ }
+}
+
+#control .box {
+ padding-left: 9px;
+}
+
+#temperature-graph {
+ background: none;
+}
+
+#job_print {
+ background-color: #1de9b6;
+}
+
+#job_pause{
+ background-color: #04a9f5;
+}
+
+.caret {
+ border-top: 4px solid #fff;
+}
+
+.progress {
+ border-radius: 0px;
+ box-shadow: none;
+ background: #f4f7fa;
+ overflow: visible;
+ .bar {
+ &:extend(.shadow-xl);
+ background: linear-gradient(-135deg, #1de9b6 0%, #1dc4e9 100%);
+ border-radius: 0px;
+
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+ white-space: nowrap;
+ }
+}
+
+.progress-text-back {
+ color: @mainFontColor;
+}
+
+.slider {
+ .slider-selection {
+ background-image: -webkit-linear-gradient(top,#8ac1ef 0,#82b3de 100%);
+ background-image: -o-linear-gradient(top,#8ac1ef 0,#82b3de 100%);
+ background-image: linear-gradient(to bottom,#8ac1ef 0,#82b3de 100%);
+ background-repeat: repeat-x;
+ border: 0 solid transparent;
+ }
+
+ .slider-handle {
+ width: 20px !important;
+ height: 20px !important;
+ margin-top: -5px !important;
+ }
+
+ .slider-handle.round {
+ background-color: #337ab7;
+ background-image: -webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);
+ background-image: -o-linear-gradient(top,#337ab7 0,#2e6da4 100%);
+ background-image: linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);
+ background-repeat: repeat-x;
+ border: 0 solid transparent;
+ }
+
+ .slider-track{
+ background-image: -webkit-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);
+ background-image: -o-linear-gradient(top,#f5f5f5 0,#f9f9f9 100%);
+ background-image: linear-gradient(to bottom,#f5f5f5 0,#f9f9f9 100%);
+ background-repeat: repeat-x;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
+ box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
+ border-radius: 4px;
+ border: none;
+ }
+}
+
+.hero-unit {
+ width: 700px;
+ margin: auto;
+}
+
+.modal-backdrop, .modal-backdrop.fade.in {
+ opacity: 0.4;
+ background: #000;
+}
+
+.modal {
+ border: none;
+}
+
+.footer {
+ display: none;
+} \ No newline at end of file
diff --git a/octoprint_zbolttheme/static/less/variables.less b/octoprint_zbolttheme/static/less/variables.less
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/octoprint_zbolttheme/static/less/variables.less
diff --git a/octoprint_zbolttheme/templates/README.txt b/octoprint_zbolttheme/templates/README.txt
new file mode 100644
index 0000000..eb9629f
--- /dev/null
+++ b/octoprint_zbolttheme/templates/README.txt
@@ -0,0 +1 @@
+Put your plugin's Jinja2 templates here. \ No newline at end of file
diff --git a/octoprint_zbolttheme/templates/zbolttheme_settings.jinja2 b/octoprint_zbolttheme/templates/zbolttheme_settings.jinja2
new file mode 100644
index 0000000..9a41104
--- /dev/null
+++ b/octoprint_zbolttheme/templates/zbolttheme_settings.jinja2
@@ -0,0 +1,5 @@
+<form class="form-horizontal">
+ <div class="control-group" data-toggle="tooltip">
+
+ </div>
+</form>
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..a417c38
--- /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..2e19f60
--- /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 = "zbolttheme"
+
+# The plugin's python package, should be "octoprint_<plugin identifier>", has to be unique
+plugin_package = "octoprint_zbolttheme"
+
+# The plugin's human readable name. Can be overwritten within OctoPrint's internal data via __plugin_name__ in the
+# plugin module
+plugin_name = "OctoPrint-Z-Bolt-Theme"
+
+# The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module
+plugin_version = "1.0.0"
+
+# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
+# module
+plugin_description = """Z-Bolt's theme for OctoPrint"""
+
+# The plugin's author. Can be overwritten within OctoPrint's internal data via __plugin_author__ in the plugin module
+plugin_author = "Z-Bolt"
+
+# The plugin's author's mail address.
+plugin_author_email = "aleksei.wm@gmail.com"
+
+# 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/Z-Bolt/OctoPrint-Z-Bolt-Theme"
+
+# 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)