Commit Graph

30 Commits

Author SHA1 Message Date
Sybren A. Stüvel e4cd6643b0 Removed unused code. 2016-03-21 15:50:03 +01:00
Sybren A. Stüvel 6bf8300948 Don't attempt thumbnail download when we receive an error HTTP code 2016-03-21 11:47:29 +01:00
Sybren A. Stüvel 5c2beaf7b2 Browsing now uses node objects, instead of just node UUID
This made the browsing code slightly simpler, and reduces the number
of Pillar queries. The list of nodes visited to end up at the current node
is also stored, so that we can easily go back up.
2016-03-21 11:46:47 +01:00
Sybren A. Stüvel 5f43b355b0 Renamed blender_cloud.cache to blender_cloud.http_cache. 2016-03-21 09:32:10 +01:00
Sybren A. Stüvel 5039a33053 Switched caching to CacheControl + pillar module usable without Blender
Making the blender_cloud.pillar and blender_cloud.cache modules usable
without Blender required some moving of the code, from __init__.py to
blender.py.

CacheControl requires the lockfile package, which increases the number
of bundled wheel files to 3. Those are now managed by
blender_cloud.wheels.load_wheels(). The wheels are only loaded if the
Python installation doesn't yet contain the required packages. This allows
development with virtualenv-installed packages, debugging in the IDE, etc.
2016-03-18 16:53:52 +01:00
Sybren A. Stüvel 8fbdf456cd Change of plans: caching is done with CacheControl.
Requests-Cache ignores HTTP cache control headers, violating the HTTP
protocol.
2016-03-18 16:38:27 +01:00
Sybren A. Stüvel 9267faac8e Add caching at HTTP level.
This uses Reqests-Cache, which should be installed on the PYTHONPATH or
provided as a wheel in blender_cache/requests_cache-*.whl. In the latter
case, it'll be automatically added to sys.path.
2016-03-18 14:03:25 +01:00
Sybren A. Stüvel e15f4d1573 Added design notes for communication & file structure 2016-03-16 15:50:57 +01:00
Sybren A. Stüvel aeae24e6bc Allow the Blender Cloud browser to run full-screen
It no longer requires a 3D View, but can be run everywhere.
2016-03-15 17:09:27 +01:00
Sybren A. Stüvel e16f069eb3 Added downloading of textures when clicking on a menu item
For this I made the operator a state machine; when its state is set to
'QUIT' it'll quit. Different states can have different OpenGL drawing
functions.

For now, to help development, the state is drawn in the bottom left corner.
2016-03-15 15:44:19 +01:00
Sybren A. Stüvel 5730f43848 Allow downloading to non-existant directory 2016-03-15 15:35:28 +01:00
Sybren A. Stüvel 7520421083 Download in larger chunks 2016-03-15 15:35:18 +01:00
Sybren A. Stüvel 012239a6c6 make is_cancelled() None-safe 2016-03-15 15:35:06 +01:00
Sybren A. Stüvel d3e433b8b2 Using loop.call_later() to ensure short-running loop iteration
How we previously did things could cause us to miss certain calls, such
as calling 'future.add_done_callback()' callbacks.
2016-03-15 15:34:30 +01:00
Sybren A. Stüvel e60853a211 Separated getting thumbnail info from downloading the thumbnail
Also added a TODO for future reference.
2016-03-15 14:23:11 +01:00
Sybren A. Stüvel fc0fe9f651 Added TODO note. 2016-03-15 14:07:25 +01:00
Sybren A. Stüvel 5e237bea22 Explicitly support cancelling tasks.
The 'cancelled' status is now tracked by a Future that's passed to
different asychronous tasks. That way it is possible to cancel all
running tasks before browsing another Pillar node.
2016-03-15 14:05:54 +01:00
Sybren A. Stüvel 0174c28075 Setting up and using Python's logging framework.
It's dubious whether logging.basicConfig() should be called here, so
that call will probably be moved somewhere else.
2016-03-15 13:47:21 +01:00
Sybren A. Stüvel e32d7de7a6 Earlier calling of thumbnail_loading callback
This means that some information isn't available to the callback yet,
but it can show the filename & spinner logo much sooner.
2016-03-14 18:12:29 +01:00
Sybren A. Stüvel 59401d9c41 Moved GUI to 3D viewport
We now draw the GUI using OpenGL in Python. This allows for much more
control on the Python side. It's still a prototype, and allows us to
test the features without depending on C support in Blender itself.
GUI code was taken from the Asset Flinger addon.
2016-03-14 17:23:56 +01:00
Sybren A. Stüvel 55eea4a9dc Removed some test code 2016-03-14 11:44:05 +01:00
Sybren A. Stüvel b156535ba1 Removed attempt at region redrawing, in preparation of custom OpenGL GUI 2016-03-14 11:43:56 +01:00
Sybren A. Stüvel 8533ac83ba Added parallel downloading of thumbnails.
By using asyncio.gather, all thumbnail-downloading tasks are queued
simultaneously, and downloaded in parallel by the task executor.
2016-03-14 09:33:43 +01:00
Sybren A. Stüvel b274faf12c Transitioned from synchronous to asynchronous
Using the new 'async def' functionality in Python 3.5!
Still crappy GUI, we're going to replace that.
2016-03-11 17:52:12 +01:00
Sybren A. Stüvel 01b73a0439 Added browsing group_texture nodes
Added downloading of thumbnails too. Still primitive, thumbs are
re-downloaded every time and all I/O blocks the Blender UI.
2016-03-09 17:34:37 +01:00
Sybren A. Stüvel 0f8cededb2 Support reloading of the addon 2016-03-09 14:09:22 +01:00
Sybren A. Stüvel 6a5c8c7e9a Added downloading of texture thumbnails
The downloading is multi-threaded, and streams directly to disk in 10kB
chunks.
2016-03-09 14:09:06 +01:00
Sybren A. Stüvel 80c9f15192 Added querying of project by URL and nodes for project/node 2016-03-08 17:56:32 +01:00
Sybren A. Stüvel a5b7597853 Allow setting the Pillar server URL 2016-03-08 17:56:13 +01:00
Sybren A. Stüvel b39ce06c75 Initial checkin
Allows authentication with the Blender ID addon, and requires the Pillar
SDK, but doesn't do much else.
2016-03-08 16:22:20 +01:00