From 720f3b3eb65432b22ef433d0d578f6cd820f46ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Fri, 18 Jan 2013 23:23:50 +0100 Subject: [PATCH] Renamed from Printer WebUI to OctoPrint The location of the config folder has changed. OctoPrint will try to migrate the configuration from its old location (~/.printerwebui, ...) to its new one (~/.octoprint, ...). For this to work the following conditions must be met: 1) the old config folder exists and is a directory 2) the new config folder does not exist at all. The migration functionality will be in the future. --- README.md | 50 ++++++++++-------- {printer_webui => octoprint}/LICENSE | 0 {printer_webui => octoprint}/__init__.py | 0 {printer_webui => octoprint}/printer.py | 6 +-- {printer_webui => octoprint}/server.py | 8 +-- {printer_webui => octoprint}/settings.py | 34 +++++++----- .../static/css/bootstrap-responsive.css | 0 .../static/css/bootstrap-responsive.min.css | 0 .../static/css/bootstrap.css | 0 .../static/css/bootstrap.min.css | 0 .../static/css/jquery.fileupload-ui.css | 0 .../static/css/ui.css | 8 +++ .../static/img/glyphicons-halflings-white.png | Bin .../static/img/glyphicons-halflings.png | Bin octoprint/static/img/graph-background.png | Bin 0 -> 28174 bytes octoprint/static/img/logo.png | Bin 0 -> 46027 bytes octoprint/static/img/tentacle-20x20.png | Bin 0 -> 721 bytes octoprint/static/img/tentacle-22x22.png | Bin 0 -> 815 bytes octoprint/static/img/tentacle-32x32.png | Bin 0 -> 1314 bytes octoprint/static/img/tentacle-76x76.png | Bin 0 -> 2888 bytes .../static/js/WebSocketMain.swf | Bin .../static/js/WebSocketMainInsecure.swf | Bin .../static/js/bootstrap.js | 0 .../static/js/bootstrap.min.js | 0 .../static/js/jquery.fileupload.js | 0 .../static/js/jquery.flot.js | 0 .../static/js/jquery.iframe-transport.js | 0 .../static/js/jquery.ui.widget.js | 0 .../static/js/knockout-2.2.0.js | 0 .../static/js/socket.io.js | 0 .../static/js/socket.io.min.js | 0 {printer_webui => octoprint}/static/js/ui.js | 0 .../templates/index.html | 8 +-- {printer_webui => octoprint}/timelapse.py | 2 +- {printer_webui => octoprint}/util/README | 0 {printer_webui => octoprint}/util/__init__.py | 0 .../util/avr_isp/__init__.py | 0 .../util/avr_isp/chipDB.py | 0 .../util/avr_isp/intelHex.py | 0 .../util/avr_isp/ispBase.py | 0 .../util/avr_isp/stk500v2.py | 0 {printer_webui => octoprint}/util/comm.py | 6 +-- .../util/gcodeInterpreter.py | 2 +- {printer_webui => octoprint}/util/util3d.py | 0 run | 7 +++ 45 files changed, 81 insertions(+), 50 deletions(-) rename {printer_webui => octoprint}/LICENSE (100%) rename {printer_webui => octoprint}/__init__.py (100%) rename {printer_webui => octoprint}/printer.py (99%) rename {printer_webui => octoprint}/server.py (98%) rename {printer_webui => octoprint}/settings.py (70%) rename {printer_webui => octoprint}/static/css/bootstrap-responsive.css (100%) rename {printer_webui => octoprint}/static/css/bootstrap-responsive.min.css (100%) rename {printer_webui => octoprint}/static/css/bootstrap.css (100%) rename {printer_webui => octoprint}/static/css/bootstrap.min.css (100%) rename {printer_webui => octoprint}/static/css/jquery.fileupload-ui.css (100%) rename {printer_webui => octoprint}/static/css/ui.css (92%) rename {printer_webui => octoprint}/static/img/glyphicons-halflings-white.png (100%) rename {printer_webui => octoprint}/static/img/glyphicons-halflings.png (100%) create mode 100644 octoprint/static/img/graph-background.png create mode 100644 octoprint/static/img/logo.png create mode 100644 octoprint/static/img/tentacle-20x20.png create mode 100644 octoprint/static/img/tentacle-22x22.png create mode 100644 octoprint/static/img/tentacle-32x32.png create mode 100644 octoprint/static/img/tentacle-76x76.png rename {printer_webui => octoprint}/static/js/WebSocketMain.swf (100%) rename {printer_webui => octoprint}/static/js/WebSocketMainInsecure.swf (100%) rename {printer_webui => octoprint}/static/js/bootstrap.js (100%) rename {printer_webui => octoprint}/static/js/bootstrap.min.js (100%) rename {printer_webui => octoprint}/static/js/jquery.fileupload.js (100%) rename {printer_webui => octoprint}/static/js/jquery.flot.js (100%) rename {printer_webui => octoprint}/static/js/jquery.iframe-transport.js (100%) rename {printer_webui => octoprint}/static/js/jquery.ui.widget.js (100%) rename {printer_webui => octoprint}/static/js/knockout-2.2.0.js (100%) rename {printer_webui => octoprint}/static/js/socket.io.js (100%) rename {printer_webui => octoprint}/static/js/socket.io.min.js (100%) rename {printer_webui => octoprint}/static/js/ui.js (100%) rename {printer_webui => octoprint}/templates/index.html (98%) rename {printer_webui => octoprint}/timelapse.py (98%) rename {printer_webui => octoprint}/util/README (100%) rename {printer_webui => octoprint}/util/__init__.py (100%) rename {printer_webui => octoprint}/util/avr_isp/__init__.py (100%) rename {printer_webui => octoprint}/util/avr_isp/chipDB.py (100%) rename {printer_webui => octoprint}/util/avr_isp/intelHex.py (100%) rename {printer_webui => octoprint}/util/avr_isp/ispBase.py (100%) rename {printer_webui => octoprint}/util/avr_isp/stk500v2.py (100%) rename {printer_webui => octoprint}/util/comm.py (99%) rename {printer_webui => octoprint}/util/gcodeInterpreter.py (99%) rename {printer_webui => octoprint}/util/util3d.py (100%) create mode 100644 run diff --git a/README.md b/README.md index 98923ac..47d6338 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,13 @@ -Printer WebUI -============= +Attention +========= -The Printer WebUI provides a responsive web interface for controlling a 3D printer (RepRap, Ultimaker, ...). It currently +OctoPrint -- formerly known as Printer WebUI -- will be migrated to a new repository location reflecting its new name on Saturday 26th 2013. It will then +be located at http://github.com/foosel/OctoPrint. Please be prepared to upgrade your links and remote refs. Sorry for the inconvenience. + +OctoPrint +========= + +OctoPrint provides a responsive web interface for controlling a 3D printer (RepRap, Ultimaker, ...). It currently allows * uploading .gcode files to the server and managing them via the UI @@ -16,7 +22,7 @@ allows * optional: visual monitoring of the printer via webcam stream integrated into the UI (using e.g. MJPG-Streamer) * optional: creation of timelapse recordings of the printjob via webcam stream (using e.g. MJPG-Streamer) -- currently two timelaspe methods are implemented, triggering a shot on z-layer change or every "n" seconds -The intended usecase is to run the Printer WebUI on a single-board computer like the Raspberry Pi and a WiFi module, +The intended usecase is to run OctoPrint on a single-board computer like the Raspberry Pi and a WiFi module, connect the printer to the server and therefore create a WiFi-enabled 3D printer. If you want to add a webcam for visual monitoring and timelapse support, you'll need a **powered** USB hub. @@ -24,34 +30,34 @@ If you want to add a webcam for visual monitoring and timelapse support, you'll Dependencies ------------ -Printer WebUI depends on a couple of python modules to do its job. Those are listed in requirements.txt and can be +OctoPrint depends on a couple of python modules to do its job. Those are listed in requirements.txt and can be installed using `pip`: pip install -r requirements.txt -Printer WebUI currently only supports Python 2.7. +OctoPrint currently only supports Python 2.7. Usage ----- Just start the server via - python -m printer_webui.server + python -m octoprint.server By default it binds to all interfaces on port 5000 (so pointing your browser to `http://127.0.0.1:5000` will do the trick). If you want to change that, use the additional command line parameters `host` and `port`, which accept the host ip to bind to and the numeric port number respectively. If for example you want to the server to only listen on the local interface on port 8080, the command line would be - python -m printer_webui.server --host=127.0.0.1 --port=8080 + python -m octoprint.server --host=127.0.0.1 --port=8080 Alternatively, the host and port on which to bind can be defined via the configuration. Configuration ------------- -The config-file `config.ini` for Printer WebUI is expected in its settings folder, which is located at `~/.printerwebui` -on Linux, at `%APPDATA%/PrinterWebUI` on Windows and at `~/Library/Application Support` on MacOS X. +The config-file `config.ini` for OctoPrint is expected in its settings folder, which is located at `~/.octoprint` +on Linux, at `%APPDATA%/OctoPrint` on Windows and at `~/Library/Application Support/OctoPrint` on MacOS. The following example config should explain the available options: @@ -89,21 +95,21 @@ The following example config should explain the available options: analyzeGcode = True [folder] - # Absolute path where to store gcode uploads. Defaults to the uploads folder in the Printer WebUI settings folder + # Absolute path where to store gcode uploads. Defaults to the uploads folder in the OctoPrint settings folder uploads = /path/to/upload/folder - # Absolute path where to store finished timelapse recordings. Defaults to the timelapse folder in the Printer WebUI + # Absolute path where to store finished timelapse recordings. Defaults to the timelapse folder in the OctoPrint # settings dir timelapse = /path/to/timelapse/folder - # Absolute path where to store temporary timelapse files. Defaults to the timelapse/tmp folder in the Printer WebUI + # Absolute path where to store temporary timelapse files. Defaults to the timelapse/tmp folder in the OctoPrint # settings dir timelapse_tmp = /path/timelapse/tmp/folder Setup on a Raspberry Pi running Raspbian ---------------------------------------- -I currently run the Printer WebUI on a Raspberry Pi running Raspbian (http://www.raspbian.org/). I recommend to use +I currently run the OctoPrint on a Raspberry Pi running Raspbian (http://www.raspbian.org/). I recommend to use a maximum baudrate of 115200 baud in your printer firmware, as the used Python serial module does not support 250000 baud in all Linux distributions yet (Raspbian being not one of them, at least according to my experience). @@ -116,9 +122,9 @@ listed in requirements.txt: cd PrinterWebUI pip install -r requirements.txt -You should then be able to start the WebUI server: +You should then be able to start the OctoPrint server: - pi@raspberrypi ~/PrinterWebUI $ python -m printer_webui.server + pi@raspberrypi ~/PrinterWebUI $ python -m octoprint.server * Running on http://0.0.0.0:5000/ If you also want webcam and timelapse support, you'll need to download and compile MJPG-Streamer: @@ -145,23 +151,23 @@ This should hopefully run through without any compilation errors. You should the o: commands..........: enabled If you now point your browser to `http://:8080/?action=stream`, you should see a moving picture at 5fps. -Open `~/.printerwebui/config.ini` and add the following lines to it: +Open `~/.octoprint/config.ini` and add the following lines to it: [webcam] stream = http://:8080/?action=stream snapshot = http://127.0.0.1:8080/?action=snapshot ffmpeg = /usr/bin/avconv -Restart the WebUI server and reload its frontend. You should now see a Webcam tab with content. +Restart the OctoPrint server and reload its frontend. You should now see a Webcam tab with content. If everything works, add the startup commands to `/etc/rc.local`. Credits ------- -The Printer WebUI started out as a fork of Cura (https://github.com/daid/Cura) for adding a web interface to its -printing functionality. It still uses Cura's communication code for talking to the printer, but has been reorganized to -only include those parts of Cura necessary for its targeted usecase. +The OctoPrint started out as a fork of Cura (https://github.com/daid/Cura) for adding a web interface to its +printing functionality and was originally named Printer WebUI. It still uses Cura's communication code for talking to +the printer, but has been reorganized to only include those parts of Cura necessary for its targeted usecase. It also uses the following libraries and frameworks for backend and frontend: @@ -175,3 +181,5 @@ It also uses the following libraries and frameworks for backend and frontend: The following software is recommended for Webcam support on the Raspberry Pi: * MJPG-Streamer: http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page + +I also want to thank [Janina Himmen](http://jhimmen.de/) for providing the kick-ass logo! diff --git a/printer_webui/LICENSE b/octoprint/LICENSE similarity index 100% rename from printer_webui/LICENSE rename to octoprint/LICENSE diff --git a/printer_webui/__init__.py b/octoprint/__init__.py similarity index 100% rename from printer_webui/__init__.py rename to octoprint/__init__.py diff --git a/printer_webui/printer.py b/octoprint/printer.py similarity index 99% rename from printer_webui/printer.py rename to octoprint/printer.py index 4c282bb..a827509 100644 --- a/printer_webui/printer.py +++ b/octoprint/printer.py @@ -8,10 +8,10 @@ import threading import copy import os -import printer_webui.util.comm as comm -from printer_webui.util import gcodeInterpreter +import octoprint.util.comm as comm +from octoprint.util import gcodeInterpreter -from printer_webui.settings import settings +from octoprint.settings import settings def getConnectionOptions(): """ diff --git a/printer_webui/server.py b/octoprint/server.py similarity index 98% rename from printer_webui/server.py rename to octoprint/server.py index bbf3fc7..5c8798d 100644 --- a/printer_webui/server.py +++ b/octoprint/server.py @@ -10,16 +10,16 @@ import os import fnmatch import threading -from printer_webui.printer import Printer, getConnectionOptions, PrinterCallback -from printer_webui.settings import settings -import printer_webui.timelapse as timelapse +from octoprint.printer import Printer, getConnectionOptions, PrinterCallback +from octoprint.settings import settings +import octoprint.timelapse as timelapse BASEURL = "/ajax/" SUCCESS = {} UPLOAD_FOLDER = settings().getBaseFolder("uploads") -app = Flask("printer_webui") +app = Flask("octoprint") printer = Printer() @app.route("/") diff --git a/printer_webui/settings.py b/octoprint/settings.py similarity index 70% rename from printer_webui/settings.py rename to octoprint/settings.py index 97fc40c..a7a743c 100644 --- a/printer_webui/settings.py +++ b/octoprint/settings.py @@ -6,7 +6,8 @@ import ConfigParser import sys import os -APPNAME="PrinterWebUI" +APPNAME="OctoPrint" +OLD_APPNAME="PrinterWebUI" instance = None @@ -52,18 +53,12 @@ class Settings(object): self.load() def init_settings_dir(self): - # taken from http://stackoverflow.com/questions/1084697/how-do-i-store-desktop-application-data-in-a-cross-platform-way-for-python - if sys.platform == "darwin": - from AppKit import NSSearchPathForDirectoriesInDomains - # http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSSearchPathForDirectoriesInDomains - # NSApplicationSupportDirectory = 14 - # NSUserDomainMask = 1 - # True for expanding the tilde into a fully qualified path - self.settings_dir = os.path.join(NSSearchPathForDirectoriesInDomains(14, 1, True)[0], APPNAME) - elif sys.platform == "win32": - self.settings_dir = os.path.join(os.environ["APPDATA"], APPNAME) - else: - self.settings_dir = os.path.expanduser(os.path.join("~", "." + APPNAME.lower())) + self.settings_dir = _resolveSettingsDir(APPNAME) + + # migration due to rename + old_settings_dir = _resolveSettingsDir(OLD_APPNAME) + if os.path.exists(old_settings_dir) and os.path.isdir(old_settings_dir) and not os.path.exists(self.settings_dir): + os.rename(old_settings_dir, self.settings_dir) def load(self): self._config = ConfigParser.ConfigParser(allow_no_value=True) @@ -144,3 +139,16 @@ class Settings(object): sectionConfig[key] = value self._changes[section] = sectionConfig +def _resolveSettingsDir(applicationName): + # taken from http://stackoverflow.com/questions/1084697/how-do-i-store-desktop-application-data-in-a-cross-platform-way-for-python + if sys.platform == "darwin": + from AppKit import NSSearchPathForDirectoriesInDomains + # http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSSearchPathForDirectoriesInDomains + # NSApplicationSupportDirectory = 14 + # NSUserDomainMask = 1 + # True for expanding the tilde into a fully qualified path + return os.path.join(NSSearchPathForDirectoriesInDomains(14, 1, True)[0], applicationName) + elif sys.platform == "win32": + return os.path.join(os.environ["APPDATA"], applicationName) + else: + return os.path.expanduser(os.path.join("~", "." + applicationName.lower())) \ No newline at end of file diff --git a/printer_webui/static/css/bootstrap-responsive.css b/octoprint/static/css/bootstrap-responsive.css similarity index 100% rename from printer_webui/static/css/bootstrap-responsive.css rename to octoprint/static/css/bootstrap-responsive.css diff --git a/printer_webui/static/css/bootstrap-responsive.min.css b/octoprint/static/css/bootstrap-responsive.min.css similarity index 100% rename from printer_webui/static/css/bootstrap-responsive.min.css rename to octoprint/static/css/bootstrap-responsive.min.css diff --git a/printer_webui/static/css/bootstrap.css b/octoprint/static/css/bootstrap.css similarity index 100% rename from printer_webui/static/css/bootstrap.css rename to octoprint/static/css/bootstrap.css diff --git a/printer_webui/static/css/bootstrap.min.css b/octoprint/static/css/bootstrap.min.css similarity index 100% rename from printer_webui/static/css/bootstrap.min.css rename to octoprint/static/css/bootstrap.min.css diff --git a/printer_webui/static/css/jquery.fileupload-ui.css b/octoprint/static/css/jquery.fileupload-ui.css similarity index 100% rename from printer_webui/static/css/jquery.fileupload-ui.css rename to octoprint/static/css/jquery.fileupload-ui.css diff --git a/printer_webui/static/css/ui.css b/octoprint/static/css/ui.css similarity index 92% rename from printer_webui/static/css/ui.css rename to octoprint/static/css/ui.css index 39e3f0b..6632ef6 100644 --- a/printer_webui/static/css/ui.css +++ b/octoprint/static/css/ui.css @@ -57,6 +57,14 @@ table th.gcode_files_action, table td.gcode_files_action { width: 20%; } +#temperature-graph { + height: 350px; + width: 100%; + background-image: url("/static/img/graph-background.png"); + background-position: center; + background-repeat: no-repeat; +} + #temp { overflow: hidden; } diff --git a/printer_webui/static/img/glyphicons-halflings-white.png b/octoprint/static/img/glyphicons-halflings-white.png similarity index 100% rename from printer_webui/static/img/glyphicons-halflings-white.png rename to octoprint/static/img/glyphicons-halflings-white.png diff --git a/printer_webui/static/img/glyphicons-halflings.png b/octoprint/static/img/glyphicons-halflings.png similarity index 100% rename from printer_webui/static/img/glyphicons-halflings.png rename to octoprint/static/img/glyphicons-halflings.png diff --git a/octoprint/static/img/graph-background.png b/octoprint/static/img/graph-background.png new file mode 100644 index 0000000000000000000000000000000000000000..aa93d0141c3d9e765db33275a8463d08bb789ee6 GIT binary patch literal 28174 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 FV1k{N7)Ag9 literal 0 HcmV?d00001 diff --git a/octoprint/static/img/logo.png b/octoprint/static/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bf5286f423db32bba7556677ed04974c0679cd2b GIT binary patch literal 46027 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 bFdhFNUViQtkrq2900000NkvXXu0mjf|H8JL literal 0 HcmV?d00001 diff --git a/octoprint/static/img/tentacle-20x20.png b/octoprint/static/img/tentacle-20x20.png new file mode 100644 index 0000000000000000000000000000000000000000..ba169130408a493ea5304559c035ac3b35f42f42 GIT binary patch literal 721 zcmV;?0xtcDP)LoMjNl@y|T(ZW9x>(QQ((YA%8zf*0+@OVJv^yCB|F1P_+b9S^(N^dLzDao~Z6dFJ^t&&+Qg{$q>7 z4qI1EG;7Z&o|4+aJ=`d)ZJ%@Z*uc3ToE+@=0B_?=q!8r6txlvXnLg>fXzftoLsxwm z=~FcJ1L_Jz#*mmOiKvm5I_F&cM__x!x6=8Mw-$<`8-M9V#~^mlS80+hyY*?)PM9+A z(*r$cH(rsY{oU|-d&M_6FASvAQ1tv+t=Xy8waTUkV@E6cevKV_<#%({byMY*exC5$ zy$P4c8Marvfy+W2waA9hb*H+n5?U(1M0hugYg_NRGxwz_p>5#x*tJ;Cn;$$*bS>-y zui<$ilMuR%HM@FdvU25A$HI+|)$s6=a(i*OhuKx7{OHo)X>VoQrD(5uOl=+0NR^09 zcdMIbvZGR=Kh02tumR@`cjUu;iD0~90@F}C*5&A zH92DtDTRVPoS9wr^46lkk-)0y=is+-jw$k_i7a;22vrRGb>Ubwy#0b2-;X_shAJmz z)MF3nrP(EO$Lg}MI#NwSR+=W|a1M=rEv?{L|F``OH#FG6aDiLt00000NkvXXu0mjf DK}%Kx literal 0 HcmV?d00001 diff --git a/octoprint/static/img/tentacle-22x22.png b/octoprint/static/img/tentacle-22x22.png new file mode 100644 index 0000000000000000000000000000000000000000..5010ebaa253bab2c03ffc954087b5e18d33ff546 GIT binary patch literal 815 zcmV+~1JL}5P)NQ-C z@KdG>OEbQGu>LOb#GKNZ(d_-sXsNxAcQ6W(Wa(WI_o}iX8l+26oa!8RePUL0PRRQd zPh9eNHon0#{YSM>X-T!N72UW^tVyBdE_IF>&SGcOI+0FxX3VzdlzWOVI*{oyrjjf@ zl_A`TdAG`fh!t%Eeh6~ddhTZg}xTn=b`FUHpWjKgT8&=Of&seW_2ENf>= ziSR3aNUj9CaVXPsvF2D#%KD&?u8gdjZoydXbsQGfrIwzbtJPIE%S}@`0zS^-?84jD z2JIXBS~YURbS(O;v>dJXJ9cNtsn~Z}bXQ%%3uqA8lI2f-Rlgf+b|`pj@w5y615=+k zTR-c=Z2PiwyB@`X{$4>?*DZ^Na!3h&Sv>8+!{;`S=2U-g{sSLbcFw9pMS32O_0Oat z%PnhG3@b?2Aj;;%^Y7kkj?Syzi#4AX>4^s_n)utgQ1#bOPke54;f%%>(Rs;N1>;Q) zgeZhNdip|Qf0brz69uh}W{San9C%ss+V+XVas=7y+#b)!faAUU$;tDMZ&&e+fw7cQ zmAh4_H$3lu#hcqA4z6SMuD?m{P#M;Z`v#$tQ(u_eGI8m(=^qO3IP)Qqlkb1g}X% zK~z}7<=0P$oo5vW@ZWjAnaNC&G0mOKV9^q>1hFEvq6LLGM2(^g=|U8Xixvu{#gK~4 z#zi;cR>4Gr3l|C^xU*1Ex@e~x1^;2HMya(8qBb*kCTXUbWai%c9T)eze0#oCnKC% z{fHND89-~vDV&n#A^J3zNJTWs3+Sn3)I#btfFg@pL7Gw%{56Y5*N%F+*+146;jbzD=&HKD636qPDx^t?snels~?rU7vsUs+xB z9cVo#wgFgJQhIzZc_5m)HW(nX5Ol0tFROa7ZrYZ8qT%AkNSnFeM$W79pqVTt)iQW+ zb{3uhcrdrW$`UJ&)$6zQsTG#ctZh@VAjWvIu-yx(w_U9Mg-tu~Vt_2r!F>UX%So)gjWXlWYZeUVy?l7xQ8Yldv2yrR+@CclO!cA6ZPzwF1+ z_W8KvS8*Ma-c{!QAdmoWP2J)M%EPu&mSUEAebaoOekNa(Gc}&+|O7I+{Z3L)e zGp-3t7|Md#xwH1d{F$9IFo^bN{X8dpqX-A2g9AN}agpw*b>$5*^PbXmPhT8vB0#qo zYm3??*q2OZ_VqSX3<2~MU1f+W)Y9$2hoG)^Z%7KJ#t$7aR@WROe)I%Bv2fOG`{d1y z#w`QLM(blF%&`q#HA+!CAOO1vvD~C>-EsC0hHpk z;6jdiZX^k{k~8X@)Qd(SV!QqN)WR8e?FvBqs4IAW?C`@AMv{9mrB)9to{;@@$xNm% z?zRcx*P}jbdLWuad+f~_9dyT>a2Q>g_bq(eZMy@I{uW$pHq9}LBbl;KH;Z0FL5?d# z@Xo9q-xYui|HyDY`l2v0po7tzR)%^IEpWsu(oJ9IM?)9hA|crdrYhP3}kN8 z#lCM0?_D_Eyf^F=K6McI*e*I;L=zI3JW;z1%-+JRW< Y8zsK=p2-35Q~&?~07*qoM6N<$f_6iA-~a#s literal 0 HcmV?d00001 diff --git a/octoprint/static/img/tentacle-76x76.png b/octoprint/static/img/tentacle-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..6bfb1a5ac745569f4b11a9fd316a6e70bb11268d GIT binary patch literal 2888 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 mpKtlD6Cad3At&VjT>c9m-MK)|`pI7a0000 - Printer WebUI + OctoPrint - + @@ -20,7 +20,7 @@ @@ -118,7 +118,7 @@
-
+
diff --git a/printer_webui/timelapse.py b/octoprint/timelapse.py similarity index 98% rename from printer_webui/timelapse.py rename to octoprint/timelapse.py index 8658835..189b048 100644 --- a/printer_webui/timelapse.py +++ b/octoprint/timelapse.py @@ -2,7 +2,7 @@ __author__ = "Gina Häußge " __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html' -from printer_webui.settings import settings +from octoprint.settings import settings import os import threading diff --git a/printer_webui/util/README b/octoprint/util/README similarity index 100% rename from printer_webui/util/README rename to octoprint/util/README diff --git a/printer_webui/util/__init__.py b/octoprint/util/__init__.py similarity index 100% rename from printer_webui/util/__init__.py rename to octoprint/util/__init__.py diff --git a/printer_webui/util/avr_isp/__init__.py b/octoprint/util/avr_isp/__init__.py similarity index 100% rename from printer_webui/util/avr_isp/__init__.py rename to octoprint/util/avr_isp/__init__.py diff --git a/printer_webui/util/avr_isp/chipDB.py b/octoprint/util/avr_isp/chipDB.py similarity index 100% rename from printer_webui/util/avr_isp/chipDB.py rename to octoprint/util/avr_isp/chipDB.py diff --git a/printer_webui/util/avr_isp/intelHex.py b/octoprint/util/avr_isp/intelHex.py similarity index 100% rename from printer_webui/util/avr_isp/intelHex.py rename to octoprint/util/avr_isp/intelHex.py diff --git a/printer_webui/util/avr_isp/ispBase.py b/octoprint/util/avr_isp/ispBase.py similarity index 100% rename from printer_webui/util/avr_isp/ispBase.py rename to octoprint/util/avr_isp/ispBase.py diff --git a/printer_webui/util/avr_isp/stk500v2.py b/octoprint/util/avr_isp/stk500v2.py similarity index 100% rename from printer_webui/util/avr_isp/stk500v2.py rename to octoprint/util/avr_isp/stk500v2.py diff --git a/printer_webui/util/comm.py b/octoprint/util/comm.py similarity index 99% rename from printer_webui/util/comm.py rename to octoprint/util/comm.py index 6666968..c842c31 100644 --- a/printer_webui/util/comm.py +++ b/octoprint/util/comm.py @@ -12,10 +12,10 @@ import Queue as queue import serial -from printer_webui.util.avr_isp import stk500v2 -from printer_webui.util.avr_isp import ispBase +from octoprint.util.avr_isp import stk500v2 +from octoprint.util.avr_isp import ispBase -from printer_webui.settings import settings +from octoprint.settings import settings try: import _winreg diff --git a/printer_webui/util/gcodeInterpreter.py b/octoprint/util/gcodeInterpreter.py similarity index 99% rename from printer_webui/util/gcodeInterpreter.py rename to octoprint/util/gcodeInterpreter.py index 8ba22ab..1db8585 100644 --- a/printer_webui/util/gcodeInterpreter.py +++ b/octoprint/util/gcodeInterpreter.py @@ -5,7 +5,7 @@ import math import re import os -from printer_webui.util import util3d +from octoprint.util import util3d preferences = { "extruder_offset_x1": -22.0, diff --git a/printer_webui/util/util3d.py b/octoprint/util/util3d.py similarity index 100% rename from printer_webui/util/util3d.py rename to octoprint/util/util3d.py diff --git a/run b/run new file mode 100644 index 0000000..0458401 --- /dev/null +++ b/run @@ -0,0 +1,7 @@ +#!/bin/sh + +PYTHON=`which python` +DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +cd $DIR +$PYTHON -m octoprint.server $@ \ No newline at end of file