Sybren A. Stüvel
db10201cd3
Faster cancelling of thumbnail downloads.
...
I forgot to pass the 'future' object to the download_texture_thumbnail
function, and as such it wasn't notified of cancellations.
2016-03-22 11:30:00 +01:00
Sybren A. Stüvel
c679809c18
Removed some unnecessary code.
2016-03-22 10:51:45 +01:00
Sybren A. Stüvel
0b4a1a7098
Only download a file once per Blender session.
2016-03-22 10:41:35 +01:00
Sybren A. Stüvel
5f3a83737c
Slight tweak
2016-03-21 17:43:25 +01:00
Sybren A. Stüvel
3352d405c9
Redownload if file size is not what it should be.
2016-03-21 17:36:43 +01:00
Sybren A. Stüvel
7df27426ef
Caching of texture thumbnails.
...
Based on HTTP headers stored in sidecar files.
2016-03-21 17:21:51 +01:00
Sybren A. Stüvel
addb7b90bb
New location of wheel files
2016-03-21 15:51:38 +01:00
Sybren A. Stüvel
16d29050df
Ignore more
2016-03-21 15:51:29 +01:00
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