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

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'blenderkit/download.py')
-rw-r--r--blenderkit/download.py43
1 files changed, 30 insertions, 13 deletions
diff --git a/blenderkit/download.py b/blenderkit/download.py
index 7cffff44..f0c101a1 100644
--- a/blenderkit/download.py
+++ b/blenderkit/download.py
@@ -17,7 +17,7 @@
# ##### END GPL LICENSE BLOCK #####
-from blenderkit import paths, append_link, utils, ui, colors, tasks_queue, rerequests, resolutions
+from blenderkit import paths, append_link, utils, ui, colors, tasks_queue, rerequests, resolutions, ui_panels
import threading
import time
@@ -62,7 +62,7 @@ def check_missing():
for l in missing:
asset_data = l['asset_data']
- downloaded = check_existing(asset_data, resolution=asset_data['resolution'])
+ downloaded = check_existing(asset_data, resolution=asset_data.get('resolution'))
if downloaded:
try:
l.reload()
@@ -315,11 +315,11 @@ def append_asset(asset_data, **kwargs): # downloaders=[], location=None,
sprops = s.blenderkit_scene
scene = append_link.append_scene(file_names[0], link=sprops.append_link == 'LINK', fake_user=False)
- print('scene appended')
+ # print('scene appended')
if scene is not None:
props = scene.blenderkit
asset_main = scene
- print(sprops.switch_after_append)
+ # print(sprops.switch_after_append)
if sprops.switch_after_append:
bpy.context.window_manager.windows[0].scene = scene
@@ -563,7 +563,7 @@ def replace_resolution_appended(file_paths, asset_data, resolution):
# @bpy.app.handlers.persistent
-def timer_update():
+def download_timer():
# TODO might get moved to handle all blenderkit stuff, not to slow down.
'''
check for running and finished downloads.
@@ -571,10 +571,14 @@ def timer_update():
Finished downloads are processed and linked/appended to scene.
'''
global download_threads
+ # utils.p('start download timer')
+
# bk_logger.debug('timer download')
if len(download_threads) == 0:
- return 2.0
+ # utils.p('end download timer')
+
+ return 2
s = bpy.context.scene
for threaddata in download_threads:
t = threaddata[0]
@@ -589,13 +593,14 @@ def timer_update():
if sr is not None:
for r in sr:
if asset_data['id'] == r['id']:
- r['downloaded'] = tcom.progress
-
+ r['downloaded'] = 0.5#tcom.progress
if not t.is_alive():
if tcom.error:
sprops = utils.get_search_props()
sprops.report = tcom.report
download_threads.remove(threaddata)
+ # utils.p('end download timer')
+
return
file_paths = paths.get_download_filepaths(asset_data, tcom.passargs['resolution'])
@@ -661,6 +666,8 @@ def timer_update():
sres['downloaded'] = 100
bk_logger.debug('finished download thread')
+ # utils.p('end download timer')
+
return .5
@@ -753,6 +760,7 @@ class Downloader(threading.Thread):
# def main_download_thread(asset_data, tcom, scene_id, api_key):
def run(self):
'''try to download file from blenderkit'''
+ # utils.p('start downloader thread')
asset_data = self.asset_data
tcom = self.tcom
scene_id = self.scene_id
@@ -832,6 +840,8 @@ class Downloader(threading.Thread):
tcom.report = f'Unpacking files'
self.asset_data['resolution'] = self.resolution
resolutions.send_to_bg(self.asset_data, file_name, command='unpack')
+ # utils.p('end downloader thread')
+
class ThreadCom: # object passed to threads to read background process stdout info
@@ -1226,7 +1236,7 @@ def show_enum_values(obj, prop_name):
class BlenderkitDownloadOperator(bpy.types.Operator):
"""Download and link asset to scene. Only link if asset already available locally"""
bl_idname = "scene.blenderkit_download"
- bl_label = "BlenderKit Asset Download"
+ bl_label = "Download"
bl_options = {'REGISTER', 'UNDO', 'INTERNAL'}
# asset_type: EnumProperty(
@@ -1258,6 +1268,8 @@ class BlenderkitDownloadOperator(bpy.types.Operator):
invoke_resolution: BoolProperty(name='Replace resolution popup',
description='pop up to ask which resolution to download', default=False)
+ invoke_scene_settings: BoolProperty(name='Scene import settings popup',
+ description='pop up scene import settings', default=False)
resolution: EnumProperty(
items=available_resolutions_callback,
@@ -1376,7 +1388,10 @@ class BlenderkitDownloadOperator(bpy.types.Operator):
def draw(self, context):
layout = self.layout
- layout.prop(self, 'resolution', expand=True, icon_only=False)
+ if self.invoke_resolution:
+ layout.prop(self, 'resolution', expand=True, icon_only=False)
+ if self.invoke_scene_settings:
+ ui_panels.draw_scene_import_settings(self, context)
def invoke(self, context, event):
# if self.close_window:
@@ -1399,6 +1414,8 @@ class BlenderkitDownloadOperator(bpy.types.Operator):
self.resolution = 'ORIGINAL'
return wm.invoke_props_dialog(self)
+ if self.invoke_scene_settings:
+ return wm.invoke_props_dialog(self)
# if self.close_window:
# time.sleep(0.1)
# context.area.tag_redraw()
@@ -1416,7 +1433,7 @@ def register_download():
bpy.app.handlers.save_pre.append(scene_save)
user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
if user_preferences.use_timers:
- bpy.app.timers.register(timer_update)
+ bpy.app.timers.register(download_timer)
def unregister_download():
@@ -1424,5 +1441,5 @@ def unregister_download():
bpy.utils.unregister_class(BlenderkitKillDownloadOperator)
bpy.app.handlers.load_post.remove(scene_load)
bpy.app.handlers.save_pre.remove(scene_save)
- if bpy.app.timers.is_registered(timer_update):
- bpy.app.timers.unregister(timer_update)
+ if bpy.app.timers.is_registered(download_timer):
+ bpy.app.timers.unregister(download_timer)