From e1d4832026b468d7080409d77286c337cc9c64cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sat, 16 Mar 2013 02:40:42 +0100 Subject: [PATCH 01/12] Moved configuration description to wiki and removed obsolete information regarding the repository rename. --- README.md | 173 +----------------------------------------------------- 1 file changed, 2 insertions(+), 171 deletions(-) diff --git a/README.md b/README.md index b541626..3cf6f91 100644 --- a/README.md +++ b/README.md @@ -68,162 +68,9 @@ See `run --help` for further information. Configuration ------------- -If not specified via the commandline, the configfile `config.yaml` 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. +If not specified via the commandline, the configfile `config.yaml` for OctoPrint is expected in the 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, most of which can also be configured via the -settings dialog within OctoPrint: - - # Use the following settings to configure the serial connection to the printer - serial: - # Use the following option to define the default serial port, defaults to unset (= AUTO) - port: /dev/ttyACM0 - - # Use the following option to define the default baudrate, defaults to unset (= AUTO) - baudrate: 115200 - - # Use the following settings to configure the web server - server: - # Use this option to define the host to which to bind the server, defaults to "0.0.0.0" (= all interfaces) - host: 0.0.0.0 - - # Use this option to define the port to which to bind the server, defaults to 5000 - port: 5000 - - # Use the following settings to configure webcam support - webcam: - # Use this option to enable display of a webcam stream in the UI, e.g. via MJPG-Streamer. - # Webcam support will be disabled if not set - stream: http://:/?action=stream - - # Use this option to enable timelapse support via snapshot, e.g. via MJPG-Streamer. - # Timelapse support will be disabled if not set - snapshot: http://:/?action=snapshot - - # Path to ffmpeg binary to use for creating timelapse recordings. - # Timelapse support will be disabled if not set - ffmpeg: /path/to/ffmpeg - - # The bitrate to use for rendering the timelapse video. This gets directly passed to ffmpeg. - bitrate: 5000k - - # Use the following settings to enable or disable OctoPrint features - feature: - # Whether to enable the gcode viewer in the UI or not - gCodeVisualizer: true - - # Specified whether OctoPrint should wait for the start response from the printer before trying to send commands - # during connect - waitForStartOnConnect: false - - # Use the following settings to set custom paths for folders used by OctoPrint - 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 OctoPrint - # settings dir - timelapse: /path/to/timelapse/folder - - # Absolute path where to store temporary timelapse files. Defaults to the timelapse/tmp folder in the OctoPrint - # settings dir - timelapse_tmp: /path/to/timelapse/tmp/folder - - # Absolute path where to store log files. Defaults to the logs folder in the OctoPrint settings dir - logs: /path/to/logs/folder - - # Use the following settings to configure temperature profiles which will be displayed in the temperature tab. - temperature: - profiles: - - name: ABS - extruder: 210 - bed: 100 - - name: PLA - extruder: 180 - bed: 60 - - # Use the following settings to configure printer parameters - printerParameters: - # Use this to define the movement speed on X, Y, Z and E to use for the controls on the controls tab - movementSpeed: - x: 6000 - y: 6000 - z: 200 - e: 300 - - # Use the following settings to tweak OctoPrint's appearance a bit to better distinguish multiple instances/printers - appearance: - # Use this to give your printer a name. It will be displayed in the title bar (as " [OctoPrint]") and in the - # navigation bar (as "OctoPrint: ") - name: My Printer Model - - # Use this to color the navigation bar. Supported colors are red, orange, yellow, green, blue, violet and default. - color: blue - - # Use the following settings to add custom controls to the "Controls" tab within OctoPrint - # - # Controls consist at least of a name, a type and type-specific further attributes. Currently recognized types are - # - section: Creates a visual section in the UI, you can use this to separate functional blocks - # - command: Creates a button that sends a defined GCODE command to the printer when clicked - # - commands: Creates a button that sends multiple defined GCODE commands to the printer when clicked - # - parametric_command: Creates a button that sends a parameterized GCODE command to the printer, parameters - # needed for the command are added to the UI as input fields, are named and can such be referenced from the command - # - parametric_commands: Like parametric_command, but supports multiple commands - # - # The following example defines a control for enabling the cooling fan with a variable speed defined by the user - # (default 255) and a control for disabling the fan, all within a section named "Fan", and two example controls with - # multiple commands in a section "Example for multiple commands". - controls: - - name: Fan - type: section - children: - - name: Enable Fan - type: parametric_command - command: M106 S%(speed)s - input: - - name: Speed (0-255) - parameter: speed - default: 255 - - name: Disable Fan - type: command - command: M107 - - name: Example for multiple commands - type: section - children: - - name: Move X (static) - type: commands - commands: - - G91 - - G1 X10 F3000 - - G90 - - name: Move X (parametric) - type: parametric_commands - commands: - - G91 - - G1 X%(distance)s F%(speed)s - - G90 - input: - - default: 10 - name: Distance - parameter: distance - - default: 3000 - name: Speed - parameter: speed - - # Use the following settings to add custom system commands to the "System" dropdown within OctoPrint's top bar - # - # Commands consist of a name, an action identifier, the commandline to execute and an optional confirmation message - # to display before actually executing the command (should be set to False if a confirmation dialog is not desired). - # - # The following example defines a command for shutting down the system under Linux. It assumes that the user under - # which OctoPrint is running is allowed to do this without password entry. - system: - actions: - - name: Shutdown - action: shutdown - command: sudo shutdown -h now - confirm: You are about to shutdown the system. +A comprehensive overview of all available configuration settings can be found [on the wiki](https://github.com/foosel/OctoPrint/wiki/Configuration). Setup on a Raspberry Pi running Raspbian ---------------------------------------- @@ -263,19 +110,3 @@ Why is it called OctoPrint and what's with the crystal ball in the logo? ------------------------------------------------------------------------ It so happens that I needed a favicon and also OctoPrint's first name -- Printer WebUI -- simply lacked a certain coolness to it. So I asked The Internet(tm) for advise. After some brainstorming, the idea of a cute Octopus watching his print job remotely through a crystal ball was born... [or something like that](https://plus.google.com/u/0/106003970953341660077/posts/UmLD5mW8yBQ). - -What do I have to do after the rename from Printer WebUI to OctoPrint? ----------------------------------------------------------------------- - -If you did checkout OctoPrint from its previous location at https://github.com/foosel/PrinterWebUI.git, you'll have to -update your so-called remote references in git in order to make `git pull` use the new repository location as origin. - -To do so you'll only need to execute the following command in your OctoPrint/PrinterWebUI folder: - - git remote set-url origin https://github.com/foosel/OctoPrint.git - -After that you might also want to rename your base directory (which probably still is called `PrinterWebUI`) to `OctoPrint` -and delete the folder `printer_webui` in your base folder (which stays there thanks to Python's compiled bytecode files -even after a rename of the Python package to `octoprint`). - -After that you are set, the configuration files are migrated automatically. From 192952c03f52124432f804ba6b418bad04ab2597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sun, 17 Mar 2013 16:31:20 +0100 Subject: [PATCH 02/12] Logging statements for timelapse creation --- octoprint/timelapse.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/octoprint/timelapse.py b/octoprint/timelapse.py index 49b2063..4283323 100644 --- a/octoprint/timelapse.py +++ b/octoprint/timelapse.py @@ -1,4 +1,6 @@ # coding=utf-8 +import logging + __author__ = "Gina Häußge " __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html' @@ -32,6 +34,8 @@ def getFinishedTimelapses(): class Timelapse(object): def __init__(self): + self._logger = logging.getLogger(__name__) + self._imageNumber = None self._inTimelapse = False self._gcodeFile = None @@ -56,6 +60,7 @@ class Timelapse(object): pass def startTimelapse(self, gcodeFile): + self._logger.debug("Starting timelapse for %s" % gcodeFile) self.cleanCaptureDir() self._imageNumber = 0 @@ -63,6 +68,7 @@ class Timelapse(object): self._gcodeFile = os.path.basename(gcodeFile) def stopTimelapse(self): + self._logger.debug("Stopping timelapse") self._renderThread = threading.Thread(target=self._createMovie) self._renderThread.daemon = True self._renderThread.start() @@ -72,11 +78,13 @@ class Timelapse(object): def captureImage(self): if self._captureDir is None: + self._logger.warn("Cannot capture image, capture directory is unset") return with self._captureMutex: filename = os.path.join(self._captureDir, "tmp_%05d.jpg" % (self._imageNumber)) self._imageNumber += 1; + self._logger.debug("Capturing image to %s" % filename) captureThread = threading.Thread(target=self._captureWorker, kwargs={"filename": filename}) captureThread.daemon = True @@ -84,11 +92,13 @@ class Timelapse(object): def _captureWorker(self, filename): urllib.urlretrieve(self._snapshotUrl, filename) + self._logger.debug("Image %s captured from %s" % (filename, self._snapshotUrl)) def _createMovie(self): ffmpeg = settings().get(["webcam", "ffmpeg"]) bitrate = settings().get(["webcam", "bitrate"]) if ffmpeg is None or bitrate is None: + self._logger.warn("Cannot create movie, path to ffmpeg is unset") return input = os.path.join(self._captureDir, "tmp_%05d.jpg") @@ -111,9 +121,11 @@ class Timelapse(object): # finalize command with output file command.append(output) subprocess.call(command) + self._logger.debug("Rendering movie to %s" % output) def cleanCaptureDir(self): if not os.path.isdir(self._captureDir): + self._logger.warn("Cannot clean capture directory, it is unset") return for filename in os.listdir(self._captureDir): @@ -124,8 +136,10 @@ class Timelapse(object): class ZTimelapse(Timelapse): def __init__(self): Timelapse.__init__(self) + self._logger.debug("ZTimelapse initialized") def onZChange(self, oldZ, newZ): + self._logger.debug("Z change detected, capturing image") self.captureImage() class TimedTimelapse(Timelapse): @@ -138,6 +152,8 @@ class TimedTimelapse(Timelapse): self._timerThread = None + self._logger.debug("TimedTimelapse initialized") + def interval(self): return self._interval @@ -151,6 +167,7 @@ class TimedTimelapse(Timelapse): self._timerThread.start() def timerWorker(self): + self._logger.debug("Starting timer for interval based timelapse") while self._inTimelapse: self.captureImage() time.sleep(self._interval) From 178b2f36d71a7ec7e69d580e798bb3bfefbb0fbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sun, 17 Mar 2013 22:32:35 +0100 Subject: [PATCH 03/12] Only log the terminal output to disk if the "--debug" commandline switch is given Otherwise slowdowns might be caused on Raspberry Pi when dumping all printer communication to SD --- octoprint/server.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/octoprint/server.py b/octoprint/server.py index 8ae920a..63c096c 100644 --- a/octoprint/server.py +++ b/octoprint/server.py @@ -519,17 +519,20 @@ class Server(): } }, "loggers": { - "SERIAL": { - "level": "DEBUG", - "handlers": ["serialFile"], - "propagate": False - } }, "root": { "level": "INFO", "handlers": ["console", "file"] } } + + if debug: + self._config["loggers"]["SERIAL"] = { + "level": "DEBUG", + "handlers": ["serialFile"], + "propagate": False + } + logging.config.dictConfig(self._config) if __name__ == "__main__": From 06cbe6081f84ac4c331abc20dffcdf9d02c33eba Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 24 Mar 2013 13:16:17 +0100 Subject: [PATCH 04/12] added init script --- octoprint.init | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100755 octoprint.init diff --git a/octoprint.init b/octoprint.init new file mode 100755 index 0000000..ad0a983 --- /dev/null +++ b/octoprint.init @@ -0,0 +1,49 @@ +#!/bin/sh +# +# Copy this script to /etc/init.d/octoprint and adjust the variables +# at the top to match your installation (should be okay for a Raspian +# setup). Then link it to the correct run levels. On Debian/Rasbian +# just call 'sudo update-rc.d octoprint defaults' + +### BEGIN INIT INFO +# Provides: octoprint +# Required-Start: $local_fs networking +# Required-Stop: +# Should-Start: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Run octoprint +# Description: Octoprint provides a responsive web interface for +# controlling a 3D printer +### END INIT INFO + + +# OctoPrint's run script +DAEMON=/home/pi/OctoPrint/run + +# Port to use +PORT=5000 + +# Run as this user +RUNAS=pi + +# Exit if the run script is not found +[ -x "$DAEMON" ] || exit 0 + + +case "$1" in + start) + su $RUNAS -c "$DAEMON --port=$PORT --daemon start" + ;; + stop) + su $RUNAS -c "$DAEMON --port=$PORT --daemon stop" + ;; + restart) + su $RUNAS -c "$DAEMON --port=$PORT --daemon restart" + ;; + *) + echo "Usage: $0 {start|stop|restart}" >&2 + ;; +esac + +: From 9314e83665bf1c77bea6d05ed628f6fa25ba6c11 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 24 Mar 2013 16:11:54 +0100 Subject: [PATCH 05/12] added footer makes it faster, to refer to the OctoPrint site when problems occur. --- octoprint/static/css/octoprint.less | 11 +++++++++++ octoprint/templates/index.html | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/octoprint/static/css/octoprint.less b/octoprint/static/css/octoprint.less index ce1be6c..b94774e 100644 --- a/octoprint/static/css/octoprint.less +++ b/octoprint/static/css/octoprint.less @@ -307,6 +307,17 @@ ul.dropdown-menu li a { #settings_dialog { width: 650px; } + +/** Footer */ +.footer { + text-align: right; + + ul li { + display: inline; + margin-left: 1em; + } +} + /** General helper classes */ .text-right { diff --git a/octoprint/templates/index.html b/octoprint/templates/index.html index 8491186..192c81b 100644 --- a/octoprint/templates/index.html +++ b/octoprint/templates/index.html @@ -519,6 +519,13 @@ + {% include 'settings.html' %} From 71f3dbbdccc409090475616ea2a1c79efa7a9bd2 Mon Sep 17 00:00:00 2001 From: Dale Price Date: Mon, 25 Mar 2013 23:55:53 -0500 Subject: [PATCH 06/12] add tooltips to file controls --- octoprint/templates/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/octoprint/templates/index.html b/octoprint/templates/index.html index 8491186..ba96af2 100644 --- a/octoprint/templates/index.html +++ b/octoprint/templates/index.html @@ -127,7 +127,7 @@ -  |  +  |  From 021f413c127ef79e2a318c6e0acd7bba4dd39fc5 Mon Sep 17 00:00:00 2001 From: Dale Price Date: Tue, 26 Mar 2013 00:09:36 -0500 Subject: [PATCH 07/12] add "Load and Print" button which automatically starts printing when a gcode file is done loading. Solves foosel/OctoPrint#91 --- octoprint/printer.py | 27 +++++++++++++++++++++++++++ octoprint/server.py | 8 ++++++++ octoprint/static/css/octoprint.less | 2 +- octoprint/static/js/ui.js | 9 +++++++++ octoprint/templates/index.html | 2 +- 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/octoprint/printer.py b/octoprint/printer.py index 14edf8b..72cb531 100644 --- a/octoprint/printer.py +++ b/octoprint/printer.py @@ -172,6 +172,22 @@ class Printer(): self._gcodeLoader.start() self._stateMonitor.setState({"state": self._state, "stateString": self.getStateString(), "flags": self._getStateFlags()}) + + def loadAndPrintGcode(self, file): + """ + Loads the gcode from the given file as the new print job and starts the print. + Aborts if the printer is currently printing or another gcode file is currently being loaded, or if loading the gcode file fails. + """ + if (self._comm is not None and self._comm.isPrinting()) or (self._gcodeLoader is not None): + return + + self._setJobData(None, None) + + self._gcodeLoader = GcodeLoader(file, self._onGcodeLoadingProgress, self._onGcodeLoadedToPrint) + self._gcodeLoader.start() + + self._stateMonitor.setState({"state": self._state, "stateString": self.getStateString(), "flags": self._getStateFlags()}) + def startPrint(self): """ @@ -416,6 +432,17 @@ class Printer(): self._stateMonitor.setGcodeData({"filename": None, "progress": None}) self._stateMonitor.setState({"state": self._state, "stateString": self.getStateString(), "flags": self._getStateFlags()}) + def _onGcodeLoadedToPrint(self, filename, gcodeList): + self._setJobData(filename, gcodeList) + self._setCurrentZ(None) + self._setProgressData(None, None, None) + self._gcodeLoader = None + + self._stateMonitor.setGcodeData({"filename": None, "progress": None}) + self._stateMonitor.setState({"state": self._state, "stateString": self.getStateString(), "flags": self._getStateFlags()}) + + self.startPrint(); + #~~ state reports def feedrateState(self): diff --git a/octoprint/server.py b/octoprint/server.py index 63c096c..6af1e58 100644 --- a/octoprint/server.py +++ b/octoprint/server.py @@ -266,6 +266,14 @@ def loadGcodeFile(): printer.loadGcode(filename) return jsonify(SUCCESS) +@app.route(BASEURL + "gcodefiles/loadandprint", methods=["POST"]) +def loadAndPrintGcodeFile(): + if "filename" in request.values.keys(): + filename = gcodeManager.getAbsolutePath(request.values["filename"]) + if filename is not None: + printer.loadAndPrintGcode(filename) + return jsonify(SUCCESS) + @app.route(BASEURL + "gcodefiles/delete", methods=["POST"]) def deleteGcodeFile(): if "filename" in request.values.keys(): diff --git a/octoprint/static/css/octoprint.less b/octoprint/static/css/octoprint.less index ce1be6c..31a233c 100644 --- a/octoprint/static/css/octoprint.less +++ b/octoprint/static/css/octoprint.less @@ -145,7 +145,7 @@ table { &.gcode_files_action { text-align: center; - width: 45px; + width: 70px; } // timelapse files diff --git a/octoprint/static/js/ui.js b/octoprint/static/js/ui.js index 48df520..8027d51 100644 --- a/octoprint/static/js/ui.js +++ b/octoprint/static/js/ui.js @@ -719,6 +719,15 @@ function GcodeFilesViewModel() { }) } + self.loadAndPrintFile = function(filename) { + $.ajax({ + url: AJAX_BASEURL + "gcodefiles/loadandprint", + type: "POST", + dataType: "json", + data: {filename: filename} + }) + } + self.removeFile = function(filename) { $.ajax({ url: AJAX_BASEURL + "gcodefiles/delete", diff --git a/octoprint/templates/index.html b/octoprint/templates/index.html index ba96af2..8bf411c 100644 --- a/octoprint/templates/index.html +++ b/octoprint/templates/index.html @@ -127,7 +127,7 @@ -  |  +  |  |  From f70649b0d2c94738856e12f77bb9e35cc594431a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sat, 30 Mar 2013 18:21:49 +0100 Subject: [PATCH 08/12] Removed a couple of redundancies for loadAndPrint button, actions are now disabled if they don't make sense --- octoprint/printer.py | 35 +++++--------------- octoprint/server.py | 13 +++----- octoprint/static/css/octoprint.less | 19 +++++++++++ octoprint/static/js/ui.js | 51 ++++++++++++++++++++++------- octoprint/templates/index.html | 5 ++- 5 files changed, 74 insertions(+), 49 deletions(-) diff --git a/octoprint/printer.py b/octoprint/printer.py index 72cb531..be080b2 100644 --- a/octoprint/printer.py +++ b/octoprint/printer.py @@ -158,7 +158,7 @@ class Printer(): self._comm.setFeedrateModifier(self._feedrateModifierMapping[structure], percentage / 100.0) - def loadGcode(self, file): + def loadGcode(self, file, printAfterLoading=False): """ Loads the gcode from the given file as the new print job. Aborts if the printer is currently printing or another gcode file is currently being loaded. @@ -168,27 +168,15 @@ class Printer(): self._setJobData(None, None) - self._gcodeLoader = GcodeLoader(file, self._onGcodeLoadingProgress, self._onGcodeLoaded) + onGcodeLoadedCallback = self._onGcodeLoaded + if printAfterLoading: + onGcodeLoadedCallback = self._onGcodeLoadedToPrint + + self._gcodeLoader = GcodeLoader(file, self._onGcodeLoadingProgress, onGcodeLoadedCallback) self._gcodeLoader.start() self._stateMonitor.setState({"state": self._state, "stateString": self.getStateString(), "flags": self._getStateFlags()}) - def loadAndPrintGcode(self, file): - """ - Loads the gcode from the given file as the new print job and starts the print. - Aborts if the printer is currently printing or another gcode file is currently being loaded, or if loading the gcode file fails. - """ - if (self._comm is not None and self._comm.isPrinting()) or (self._gcodeLoader is not None): - return - - self._setJobData(None, None) - - self._gcodeLoader = GcodeLoader(file, self._onGcodeLoadingProgress, self._onGcodeLoadedToPrint) - self._gcodeLoader.start() - - self._stateMonitor.setState({"state": self._state, "stateString": self.getStateString(), "flags": self._getStateFlags()}) - - def startPrint(self): """ Starts the currently loaded print job. @@ -433,15 +421,8 @@ class Printer(): self._stateMonitor.setState({"state": self._state, "stateString": self.getStateString(), "flags": self._getStateFlags()}) def _onGcodeLoadedToPrint(self, filename, gcodeList): - self._setJobData(filename, gcodeList) - self._setCurrentZ(None) - self._setProgressData(None, None, None) - self._gcodeLoader = None - - self._stateMonitor.setGcodeData({"filename": None, "progress": None}) - self._stateMonitor.setState({"state": self._state, "stateString": self.getStateString(), "flags": self._getStateFlags()}) - - self.startPrint(); + self._onGcodeLoaded(filename, gcodeList) + self.startPrint() #~~ state reports diff --git a/octoprint/server.py b/octoprint/server.py index 6af1e58..865d792 100644 --- a/octoprint/server.py +++ b/octoprint/server.py @@ -261,17 +261,12 @@ def uploadGcodeFile(): @app.route(BASEURL + "gcodefiles/load", methods=["POST"]) def loadGcodeFile(): if "filename" in request.values.keys(): + printAfterLoading = False + if "print" in request.values.keys() and request.values["print"]: + printAfterLoading = True filename = gcodeManager.getAbsolutePath(request.values["filename"]) if filename is not None: - printer.loadGcode(filename) - return jsonify(SUCCESS) - -@app.route(BASEURL + "gcodefiles/loadandprint", methods=["POST"]) -def loadAndPrintGcodeFile(): - if "filename" in request.values.keys(): - filename = gcodeManager.getAbsolutePath(request.values["filename"]) - if filename is not None: - printer.loadAndPrintGcode(filename) + printer.loadGcode(filename, printAfterLoading) return jsonify(SUCCESS) @app.route(BASEURL + "gcodefiles/delete", methods=["POST"]) diff --git a/octoprint/static/css/octoprint.less b/octoprint/static/css/octoprint.less index 31a233c..5a592fa 100644 --- a/octoprint/static/css/octoprint.less +++ b/octoprint/static/css/octoprint.less @@ -65,6 +65,10 @@ body { @base: #7728FF; .navbar-inner-color(@base); } + + .brand img { + vertical-align: bottom; + } } /** OctoPrint application tabs */ @@ -115,6 +119,11 @@ body { a.accordion-toggle { display: inline-block; } + + [class^="icon-"], + [class*=" icon-"] { + color: #000; + } } } @@ -146,6 +155,16 @@ table { &.gcode_files_action { text-align: center; width: 70px; + + a { + text-decoration: none; + color: #000; + + &.disabled { + color: #ccc; + cursor: default; + } + } } // timelapse files diff --git a/octoprint/static/js/ui.js b/octoprint/static/js/ui.js index 8027d51..bf0831c 100644 --- a/octoprint/static/js/ui.js +++ b/octoprint/static/js/ui.js @@ -657,6 +657,14 @@ function TerminalViewModel() { function GcodeFilesViewModel() { var self = this; + self.isErrorOrClosed = ko.observable(undefined); + self.isOperational = ko.observable(undefined); + self.isPrinting = ko.observable(undefined); + self.isPaused = ko.observable(undefined); + self.isError = ko.observable(undefined); + self.isReady = ko.observable(undefined); + self.isLoading = ko.observable(undefined); + // initialize list helper self.listHelper = new ItemListHelper( "gcodeFiles", @@ -688,7 +696,33 @@ function GcodeFilesViewModel() { "name", [], CONFIG_GCODEFILESPERPAGE - ) + ); + + self.isLoadActionPossible = ko.computed(function() { + return !self.isPrinting() && !self.isPaused() && !self.isLoading(); + }); + + self.isLoadAndPrintActionPossible = ko.computed(function() { + return self.isOperational() && self.isLoadActionPossible(); + }); + + self.fromCurrentData = function(data) { + self._processStateData(data.state); + } + + self.fromHistoryData = function(data) { + self._processStateData(data.state); + } + + self._processStateData = function(data) { + self.isErrorOrClosed(data.flags.closedOrError); + self.isOperational(data.flags.operational); + self.isPaused(data.flags.paused); + self.isPrinting(data.flags.printing); + self.isError(data.flags.error); + self.isReady(data.flags.ready); + self.isLoading(data.flags.loading); + } self.requestData = function() { $.ajax({ @@ -710,21 +744,12 @@ function GcodeFilesViewModel() { } } - self.loadFile = function(filename) { + self.loadFile = function(filename, printAfterLoad) { $.ajax({ url: AJAX_BASEURL + "gcodefiles/load", type: "POST", dataType: "json", - data: {filename: filename} - }) - } - - self.loadAndPrintFile = function(filename) { - $.ajax({ - url: AJAX_BASEURL + "gcodefiles/loadandprint", - type: "POST", - dataType: "json", - data: {filename: filename} + data: {filename: filename, print: printAfterLoad} }) } @@ -1149,6 +1174,7 @@ function DataUpdater(connectionViewModel, printerStateViewModel, temperatureView self.terminalViewModel.fromHistoryData(data); self.webcamViewModel.fromHistoryData(data); self.gcodeViewModel.fromHistoryData(data); + self.gcodeFilesViewModel.fromCurrentData(data); }) self._socket.on("current", function(data) { self.connectionViewModel.fromCurrentData(data); @@ -1158,6 +1184,7 @@ function DataUpdater(connectionViewModel, printerStateViewModel, temperatureView self.terminalViewModel.fromCurrentData(data); self.webcamViewModel.fromCurrentData(data); self.gcodeViewModel.fromCurrentData(data); + self.gcodeFilesViewModel.fromCurrentData(data); }) self._socket.on("updateTrigger", function(type) { if (type == "gcodeFiles") { diff --git a/octoprint/templates/index.html b/octoprint/templates/index.html index 8bf411c..2f17cc1 100644 --- a/octoprint/templates/index.html +++ b/octoprint/templates/index.html @@ -8,6 +8,7 @@ + @@ -127,7 +128,9 @@ -  |  |  + +  |  |  + From cfdfad1c06c51ddfdb348a84e0e5121aaf6045c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sat, 30 Mar 2013 18:28:24 +0100 Subject: [PATCH 09/12] Changed color and font-size of footer --- octoprint/static/css/octoprint.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/octoprint/static/css/octoprint.less b/octoprint/static/css/octoprint.less index 5011e61..b66ef6f 100644 --- a/octoprint/static/css/octoprint.less +++ b/octoprint/static/css/octoprint.less @@ -334,6 +334,10 @@ ul.dropdown-menu li a { ul li { display: inline; margin-left: 1em; + font-size: 85%; + a { + color: #555; + } } } From c01b49fbc738168affc28da0486b6115a7d256f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sat, 30 Mar 2013 18:29:13 +0100 Subject: [PATCH 10/12] Forgot to commit Font Awesome --- octoprint/static/css/font-awesome.min.css | 33 ++ octoprint/static/font/FontAwesome.otf | Bin 0 -> 42288 bytes octoprint/static/font/fontawesome-webfont.eot | Bin 0 -> 25395 bytes octoprint/static/font/fontawesome-webfont.svg | 284 ++++++++++++++++++ octoprint/static/font/fontawesome-webfont.ttf | Bin 0 -> 55096 bytes .../static/font/fontawesome-webfont.woff | Bin 0 -> 29380 bytes 6 files changed, 317 insertions(+) create mode 100644 octoprint/static/css/font-awesome.min.css create mode 100644 octoprint/static/font/FontAwesome.otf create mode 100644 octoprint/static/font/fontawesome-webfont.eot create mode 100644 octoprint/static/font/fontawesome-webfont.svg create mode 100644 octoprint/static/font/fontawesome-webfont.ttf create mode 100644 octoprint/static/font/fontawesome-webfont.woff diff --git a/octoprint/static/css/font-awesome.min.css b/octoprint/static/css/font-awesome.min.css new file mode 100644 index 0000000..d4e45b3 --- /dev/null +++ b/octoprint/static/css/font-awesome.min.css @@ -0,0 +1,33 @@ +/*! + * Font Awesome 3.0.2 + * the iconic font designed for use with Twitter Bootstrap + * ------------------------------------------------------- + * The full suite of pictographic icons, examples, and documentation + * can be found at: http://fortawesome.github.com/Font-Awesome/ + * + * License + * ------------------------------------------------------- + * - The Font Awesome font is licensed under the SIL Open Font License - http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - + * http://opensource.org/licenses/mit-license.html + * - The Font Awesome pictograms are licensed under the CC BY 3.0 License - http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome" + + * Contact + * ------------------------------------------------------- + * Email: dave@davegandy.com + * Twitter: http://twitter.com/fortaweso_me + * Work: Lead Product Designer @ http://kyruus.com + */ + +@font-face{ + font-family:'FontAwesome'; + src:url('../font/fontawesome-webfont.eot?v=3.0.1'); + src:url('../font/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'), + url('../font/fontawesome-webfont.woff?v=3.0.1') format('woff'), + url('../font/fontawesome-webfont.ttf?v=3.0.1') format('truetype'); + font-weight:normal; + font-style:normal } + +[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0 0;background-repeat:repeat;margin-top:0}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}a [class^="icon-"],a [class*=" icon-"]{display:inline-block}.icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em}.btn [class^="icon-"],.nav [class^="icon-"],.btn [class*=" icon-"],.nav [class*=" icon-"]{display:inline}.btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em}.btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block}.nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em}li [class^="icon-"],.nav li [class^="icon-"],li [class*=" icon-"],.nav li [class*=" icon-"]{display:inline-block;width:1.25em;text-align:center}li [class^="icon-"].icon-large,.nav li [class^="icon-"].icon-large,li [class*=" icon-"].icon-large,.nav li [class*=" icon-"].icon-large{width:1.5625em}ul.icons{list-style-type:none;text-indent:-0.75em}ul.icons li [class^="icon-"],ul.icons li [class*=" icon-"]{width:.75em}.icon-muted{color:#eee}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em}.btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em}.btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em}.btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em}.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}@-moz-document url-prefix(){.icon-spin{height:.9em}.btn .icon-spin{height:auto}.icon-spin.icon-large{height:1.25em}.btn .icon-spin.icon-large{height:.75em}}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope-alt:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"} \ No newline at end of file diff --git a/octoprint/static/font/FontAwesome.otf b/octoprint/static/font/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..d13308ef5bb1d5db72da2d33a9f8381fb40a3d43 GIT binary patch literal 42288 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

=!CDNLp%72-gAOIr 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øo4RGa3i9bp!r%|D-y;ox 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 literal 0 HcmV?d00001 diff --git a/octoprint/static/font/fontawesome-webfont.svg b/octoprint/static/font/fontawesome-webfont.svg new file mode 100644 index 0000000..ba0afe5 --- /dev/null +++ b/octoprint/static/font/fontawesome-webfont.svg @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/octoprint/static/font/fontawesome-webfont.ttf b/octoprint/static/font/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d46172476a3c7caf4f44946e3c40218559f3edfa GIT binary patch literal 55096 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%0D$gSMd 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

R}45_uzO@F4>M&+fi#l7 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�BcG>P)^DXFH|n4bmKVUj~;gSQkVFL7%ihZM>XC4 yQMX@enqCS@LyX>zjG!}8S``+2*O*S81puws$XSmd6%#S@(X+rh{^NpC5dI5Q|KZmF literal 0 HcmV?d00001 diff --git a/octoprint/static/font/fontawesome-webfont.woff b/octoprint/static/font/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..3c89ae09b88b38d3bc8563ca69f7f401b7301f45 GIT binary patch literal 29380 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 literal 0 HcmV?d00001 From 1f06faa167c18e0aa5d006cc25511b8eb708a440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sat, 30 Mar 2013 18:31:17 +0100 Subject: [PATCH 11/12] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3cf6f91..7dd80ab 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ Credits ------- 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 +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 use case. It also uses the following libraries and frameworks for backend and frontend: @@ -93,6 +93,7 @@ It also uses the following libraries and frameworks for backend and frontend: * Socket.io: http://socket.io/ * jQuery: http://jquery.com/ * Bootstrap: http://twitter.github.com/bootstrap/ +* Font Awesome: http://fortawesome.github.com/Font-Awesome/ * Knockout.js: http://knockoutjs.com/ * Underscore.js: http://underscorejs.org/ * Flot: http://www.flotcharts.org/ From d20aae6474da8ea030cb8a4eb5c1dd58358f04a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Mon, 1 Apr 2013 17:23:56 +0200 Subject: [PATCH 12/12] Added homepage to footer --- octoprint/templates/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/octoprint/templates/index.html b/octoprint/templates/index.html index 98ead09..ed22f68 100644 --- a/octoprint/templates/index.html +++ b/octoprint/templates/index.html @@ -524,6 +524,7 @@