From c84f83153900009f1c7743e3b21792ab1a730257 Mon Sep 17 00:00:00 2001 From: Vilem Duha <vilem.duha@gmail.com> Date: Thu, 1 Jul 2021 12:09:55 +0200 Subject: [PATCH] BlenderKit: many post-release fixes Fix for rerequests recursion crash rename timers fix manual link attemt to fix mysterious crashes on some machines by limiting some calls to assetbar operator, and not copying image into it's preview so often fix search when & was present add a popup when appending a scene improve starup dialog with an image --- blenderkit/__init__.py | 29 +++++++++++--- blenderkit/bg_blender.py | 7 ++++ blenderkit/categories.py | 1 + blenderkit/download.py | 43 ++++++++++++++------ blenderkit/paths.py | 2 +- blenderkit/rerequests.py | 14 ++++--- blenderkit/search.py | 61 +++++++++++++++++++++------- blenderkit/tasks_queue.py | 4 ++ blenderkit/thumbnails/intro.jpg | Bin 0 -> 66605 bytes blenderkit/ui.py | 16 ++++++-- blenderkit/ui_panels.py | 68 +++++++++++++++++++++++++------- blenderkit/utils.py | 16 ++++++-- 12 files changed, 201 insertions(+), 60 deletions(-) create mode 100644 blenderkit/thumbnails/intro.jpg diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py index e80436260..c58e5d997 100644 --- a/blenderkit/__init__.py +++ b/blenderkit/__init__.py @@ -155,10 +155,10 @@ def scene_load(context): @bpy.app.handlers.persistent def check_timers_timer(): ''' checks if all timers are registered regularly. Prevents possible bugs from stopping the addon.''' - if not bpy.app.timers.is_registered(search.timer_update): - bpy.app.timers.register(search.timer_update) - if not bpy.app.timers.is_registered(download.timer_update): - bpy.app.timers.register(download.timer_update) + if not bpy.app.timers.is_registered(search.search_timer): + bpy.app.timers.register(search.search_timer) + if not bpy.app.timers.is_registered(download.download_timer): + bpy.app.timers.register(download.download_timer) if not (bpy.app.timers.is_registered(tasks_queue.queue_worker)): bpy.app.timers.register(tasks_queue.queue_worker) if not bpy.app.timers.is_registered(bg_blender.bg_update): @@ -1542,7 +1542,7 @@ class BlenderKitSceneSearchProps(PropertyGroup, BlenderKitCommonSearchProps): ) switch_after_append: BoolProperty( name='Switch to scene after download', - default=False + default=True ) @@ -1714,6 +1714,13 @@ class BlenderKitAddonPreferences(AddonPreferences): update=utils.save_prefs ) + # single_timer: BoolProperty( + # name="Use timers", + # description="Use timers for BlenderKit. Usefull for debugging since timers seem to be unstable", + # default=True, + # update=utils.save_prefs + # ) + experimental_features: BoolProperty( name="Enable experimental features", description="Enable all experimental features of BlenderKit. Use at your own risk.", @@ -1773,6 +1780,15 @@ class BlenderKitAddonPreferences(AddonPreferences): layout.prop(self, "categories_fix") +# # @bpy.app.handlers.persistent +# def blenderkit_timer(): +# +# +# if not user_preferences.use_timers: +# search.search_timer() +# download.download_timer() +# tasks_queue.queue_worker() +# bg_blender.bg_update() # registration classes = ( @@ -1800,6 +1816,7 @@ classes = ( ) + def register(): for cls in classes: bpy.utils.register_class(cls) @@ -1874,6 +1891,8 @@ def register(): if a.type == 'PREFERENCES': tasks_queue.add_task((bpy.ops.wm.blenderkit_welcome, ('INVOKE_DEFAULT',)), fake_context=True, fake_context_area='PREFERENCES') + #save preferences after manually enabling the addon + tasks_queue.add_task((bpy.ops.wm.save_userpref, ()), fake_context=False,) def unregister(): diff --git a/blenderkit/bg_blender.py b/blenderkit/bg_blender.py index 01c625386..c4294b304 100644 --- a/blenderkit/bg_blender.py +++ b/blenderkit/bg_blender.py @@ -108,11 +108,14 @@ def bg_update(): '''monitoring of background process''' text = '' #utils.p('timer search') + # utils.p('start bg_blender timer bg_update') s = bpy.context.scene global bg_processes if len(bg_processes) == 0: + # utils.p('end bg_blender timer bg_update') + return 2 #cleanup dead processes first remove_processes = [] @@ -156,7 +159,11 @@ def bg_update(): # if len(bg_processes) == 0: # bpy.app.timers.unregister(bg_update) if len(bg_processes) > 0: + # utils.p('end bg_blender timer bg_update') + return .3 + # utils.p('end bg_blender timer bg_update') + return 1. diff --git a/blenderkit/categories.py b/blenderkit/categories.py index 46d10f86c..3a0d26243 100644 --- a/blenderkit/categories.py +++ b/blenderkit/categories.py @@ -84,6 +84,7 @@ def get_category_path(categories, category): category_path.insert(0, slug) return category_path check_categories.append(ch) + return category_path def get_category_name_path(categories, category): '''finds the category in all possible subcategories and returns the path to it''' diff --git a/blenderkit/download.py b/blenderkit/download.py index 7cffff443..f0c101a1c 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) diff --git a/blenderkit/paths.py b/blenderkit/paths.py index 0ca55271a..57511108c 100644 --- a/blenderkit/paths.py +++ b/blenderkit/paths.py @@ -27,7 +27,7 @@ BLENDERKIT_API = "/api/v1/" BLENDERKIT_REPORT_URL = "usage_report/" BLENDERKIT_USER_ASSETS = "/my-assets" BLENDERKIT_PLANS = "/plans/pricing/" -BLENDERKIT_MANUAL = "https://youtu.be/1hVgcQhIAo8" +BLENDERKIT_MANUAL = "https://youtu.be/pSay3yaBWV0" BLENDERKIT_MODEL_UPLOAD_INSTRUCTIONS_URL = "https://www.blenderkit.com/docs/upload/" BLENDERKIT_MATERIAL_UPLOAD_INSTRUCTIONS_URL = "https://www.blenderkit.com/docs/uploading-material/" BLENDERKIT_BRUSH_UPLOAD_INSTRUCTIONS_URL = "https://www.blenderkit.com/docs/uploading-brush/" diff --git a/blenderkit/rerequests.py b/blenderkit/rerequests.py index 6a2659c28..f9c515598 100644 --- a/blenderkit/rerequests.py +++ b/blenderkit/rerequests.py @@ -22,10 +22,11 @@ from blenderkit import ui, utils, paths, tasks_queue, bkit_oauth import requests import bpy import logging + bk_logger = logging.getLogger('rerequests') -def rerequest(method, url, **kwargs): +def rerequest(method, url, recursion=0, **kwargs): # first get any additional args from kwargs immediate = False if kwargs.get('immediate'): @@ -34,10 +35,11 @@ def rerequest(method, url, **kwargs): # first normal attempt try: response = requests.request(method, url, **kwargs) - except: - return rerequest(method, url, **kwargs) + except Exception as e: + print(e) + return None - bk_logger.debug(url+ str( kwargs)) + bk_logger.debug(url + str(kwargs)) bk_logger.debug(response.status_code) if response.status_code == 401: @@ -53,7 +55,7 @@ def rerequest(method, url, **kwargs): if user_preferences.api_key != '': if user_preferences.enable_oauth and user_preferences.api_key_refresh != '': tasks_queue.add_task((ui.add_report, ( - 'refreshing token. If this fails, please login in BlenderKit Login panel.', 10))) + 'refreshing token. If this fails, please login in BlenderKit Login panel.', 10))) refresh_url = paths.get_bkit_url() auth_token, refresh_token, oauth_response = bkit_oauth.refresh_token( user_preferences.api_key_refresh, refresh_url) @@ -80,7 +82,7 @@ def rerequest(method, url, **kwargs): tasks_queue.add_task((ui.add_report, ( 'Refreshing token failed.Please login manually.', 10))) # tasks_queue.add_task((bkit_oauth.write_tokens, ('', '', ''))) - tasks_queue.add_task((bpy.ops.wm.blenderkit_login,( 'INVOKE_DEFAULT',)),fake_context = True) + tasks_queue.add_task((bpy.ops.wm.blenderkit_login, ('INVOKE_DEFAULT',)), fake_context=True) return response diff --git a/blenderkit/search.py b/blenderkit/search.py index 4c57135d1..dbe25d617 100644 --- a/blenderkit/search.py +++ b/blenderkit/search.py @@ -48,6 +48,7 @@ import copy import json import math import unicodedata +import urllib import queue import logging @@ -80,7 +81,7 @@ reports_queue = queue.Queue() rtips = ['Click or drag model or material in scene to link/append ', "Please rate responsively and plentifully. This helps us distribute rewards to the authors.", "Click on brushes to link them into scene.", - "All materials and brushes are free.", + "All materials are free.", "Storage for public assets is unlimited.", "Locked models are available if you subscribe to Full plan.", "Login to upload your own models, materials or brushes.", @@ -246,7 +247,7 @@ def parse_result(r): durl, tname, small_tname = '', '', '' if r['assetType'] == 'hdr': - tname = paths.extract_filename_from_url(r['thumbnailMiddleUrlNonsquared']) + tname = paths.extract_filename_from_url(r['thumbnailLargeUrlNonsquared']) else: tname = paths.extract_filename_from_url(r['thumbnailMiddleUrl']) small_tname = paths.extract_filename_from_url(r['thumbnailSmallUrl']) @@ -349,10 +350,10 @@ def parse_result(r): # @bpy.app.handlers.persistent -def timer_update(): +def search_timer(): # this makes a first search after opening blender. showing latest assets. # utils.p('timer search') - + # utils.p('start search timer') global first_time preferences = bpy.context.preferences.addons['blenderkit'].preferences if first_time and not bpy.app.background: # first time @@ -367,6 +368,8 @@ def timer_update(): utils.get_largest_area() ui.update_ui_size(ui.active_area_pointer, ui.active_region_pointer) ui.add_report(text='BlenderKit Tip: ' + random.choice(rtips), timeout=12, color=colors.GREEN) + # utils.p('end search timer') + return 3.0 # if preferences.first_run: @@ -377,10 +380,14 @@ def timer_update(): global search_threads if len(search_threads) == 0: + # utils.p('end search timer') + return 1.0 # don't do anything while dragging - this could switch asset during drag, and make results list length different, # causing a lot of throuble. if bpy.context.scene.blenderkitUI.dragging: + # utils.p('end search timer') + return 0.5 for thread in search_threads: # TODO this doesn't check all processes when one gets removed, @@ -415,6 +422,8 @@ def timer_update(): while not reports_queue.empty(): props.report = str(reports_queue.get()) + # utils.p('end search timer') + return .2 rdata = thread[0].result @@ -422,7 +431,10 @@ def timer_update(): ok, error = check_errors(rdata) if ok: - bpy.ops.object.run_assetbar_fix_context() + ui_props = bpy.context.scene.blenderkitUI + + if not ui_props.assetbar_on: + bpy.ops.object.run_assetbar_fix_context() @@ -447,7 +459,6 @@ def timer_update(): wm['search results orig'] = wm[search_name + ' orig'] load_previews() - ui_props = bpy.context.scene.blenderkitUI if len(result_field) < ui_props.scrolloffset or not (thread[0].params.get('get_next')): # jump back ui_props.scrolloffset = 0 @@ -457,7 +468,7 @@ def timer_update(): if len(wm['search results']) == 0: tasks_queue.add_task((ui.add_report, ('No matching results found.',))) # undo push - bpy.ops.wm.undo_push_context(message='Get BlenderKit search') + # bpy.ops.wm.undo_push_context(message='Get BlenderKit search') else: bk_logger.error(error) @@ -466,6 +477,7 @@ def timer_update(): # print('finished search thread') mt('preview loading finished') + # utils.p('end search timer') return .3 @@ -642,6 +654,7 @@ class ThumbDownloader(threading.Thread): def run(self): # print('thumb downloader', self.url) + # utils.p('start thumbdownloader thread') r = None try: r = requests.get(self.url, stream=False) @@ -655,6 +668,8 @@ class ThumbDownloader(threading.Thread): # with open(path, 'wb') as f: # for chunk in r.iter_content(1048576*4): # f.write(chunk) + # utils.p('end thumbdownloader thread') + def write_gravatar(a_id, gravatar_path): @@ -800,7 +815,8 @@ def query_to_url(query={}, params={}): order.append('-score,_score') else: order.append('_score') - requeststring += '+order:' + ','.join(order) + if requeststring.find('+order:')==-1: + requeststring += '+order:' + ','.join(order) requeststring += '&addon_version=%s' % params['addon_version'] if params.get('scene_uuid') is not None: @@ -843,6 +859,8 @@ class Searcher(threading.Thread): params = self.params t = time.time() + # utils.p('start search thread') + mt('search thread started') # tempdir = paths.get_temp_dir('%s_search' % query['asset_type']) # json_filepath = os.path.join(tempdir, '%s_searchresult.json' % query['asset_type']) @@ -856,6 +874,8 @@ class Searcher(threading.Thread): except requests.exceptions.RequestException as e: bk_logger.error(e) reports_queue.put(str(e)) + # utils.p('end search thread') + return mt('search response is back ') @@ -875,10 +895,14 @@ class Searcher(threading.Thread): # it means it's a server error that has a clear message. # That's why it gets processed in the update timer, where it can be passed in messages to user. self.result = rdata + # utils.p('end search thread') + return # print('number of results: ', len(rdata.get('results', []))) if self.stopped(): utils.p('stopping search : ' + str(query)) + # utils.p('end search thread') + return mt('search finished') @@ -896,7 +920,7 @@ class Searcher(threading.Thread): thumb_small_filepaths.append(imgpath) if d["assetType"] == 'hdr': - larege_thumb_url = d['thumbnailMiddleUrlNonsquared'] + larege_thumb_url = d['thumbnailLargeUrlNonsquared'] else: larege_thumb_url = d['thumbnailMiddleUrl'] @@ -945,10 +969,12 @@ class Searcher(threading.Thread): for k in thumb_full_download_threads.keys(): if k not in thumb_full_filepaths: killthreads_full.append(k) # do actual killing here? - # TODO do the killing/ stopping here! remember threads might have finished inbetween! + # TODO do the killing/ stopping here. remember threads might have finished inbetween. if self.stopped(): utils.p('stopping search : ' + str(query)) + # utils.p('end search thread') + return # this loop handles downloading of small thumbnails @@ -973,6 +999,8 @@ class Searcher(threading.Thread): i += 1 if self.stopped(): utils.p('stopping search : ' + str(query)) + # utils.p('end search thread') + return idx = 0 while len(thumb_sml_download_threads) > 0: @@ -984,6 +1012,8 @@ class Searcher(threading.Thread): i += 1 if self.stopped(): + # utils.p('end search thread') + utils.p('stopping search : ' + str(query)) return @@ -995,6 +1025,7 @@ class Searcher(threading.Thread): # daemon=True) thread.start() thumb_full_download_threads[imgpath] = thread + # utils.p('end search thread') mt('thumbnails finished') @@ -1002,7 +1033,9 @@ def build_query_common(query, props): '''add shared parameters to query''' query_common = {} if props.search_keywords != '': - query_common["query"] = props.search_keywords + # keywords = urllib.parse.urlencode(props.search_keywords) + keywords = props.search_keywords.replace('&','%26') + query_common["query"] = keywords if props.search_verification_status != 'ALL' and utils.profile_is_validator(): query_common['verification_status'] = props.search_verification_status.lower() @@ -1504,7 +1537,7 @@ def register_search(): user_preferences = bpy.context.preferences.addons['blenderkit'].preferences if user_preferences.use_timers: - bpy.app.timers.register(timer_update) + bpy.app.timers.register(search_timer) categories.load_categories() @@ -1515,5 +1548,5 @@ def unregister_search(): for c in classes: bpy.utils.unregister_class(c) - if bpy.app.timers.is_registered(timer_update): - bpy.app.timers.unregister(timer_update) + if bpy.app.timers.is_registered(search_timer): + bpy.app.timers.unregister(search_timer) diff --git a/blenderkit/tasks_queue.py b/blenderkit/tasks_queue.py index f52cfd639..0d9918788 100644 --- a/blenderkit/tasks_queue.py +++ b/blenderkit/tasks_queue.py @@ -58,6 +58,8 @@ def add_task(task, wait = 0, only_last = False, fake_context = False, fake_conte def queue_worker(): + # utils.p('start queue worker timer') + #bk_logger.debug('timer queue worker') time_step = 2.0 q = get_queue() @@ -110,6 +112,8 @@ def queue_worker(): # print('queue while 2') for task in back_to_queue: q.put(task) + # utils.p('end queue worker timer') + return 2.0 diff --git a/blenderkit/thumbnails/intro.jpg b/blenderkit/thumbnails/intro.jpg new file mode 100644 index 0000000000000000000000000000000000000000..52ce56e390a75aa2590f7277877d53b2841f3f81 GIT binary patch literal 66605 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%0Dm+YUUOypU~`PR8bkv9hIW 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 literal 0 HcmV?d00001 diff --git a/blenderkit/ui.py b/blenderkit/ui.py index 295ded3b3..68c19cf07 100644 --- a/blenderkit/ui.py +++ b/blenderkit/ui.py @@ -483,12 +483,14 @@ def draw_callback_2d_progress(self, context): loc = view3d_utils.location_3d_to_region_2d(bpy.context.region, bpy.context.space_data.region_3d, d['location']) + # print('drawing downloader') if loc is not None: if asset_data['assetType'] == 'model': # models now draw with star trek mode, no need to draw percent for the image. draw_downloader(loc[0], loc[1], percent=tcom.progress, img=img, text=tcom.report) else: draw_downloader(loc[0], loc[1], percent=tcom.progress, img=img, text=tcom.report) + # utils.p('end drawing downlaoders downloader') else: draw_progress(x, y - index * 30, text='downloading %s' % asset_data['name'], percent=tcom.progress) @@ -1192,8 +1194,8 @@ class AssetBarOperator(bpy.types.Operator): # timers testing - seems timers might be causing crashes. testing it this way now. if not user_preferences.use_timers: - search.timer_update() - download.timer_update() + search.search_timer() + download.download_timer() tasks_queue.queue_worker() bg_blender.bg_update() @@ -1451,7 +1453,7 @@ class AssetBarOperator(bpy.types.Operator): if not asset_data.get('canDownload'): message = "Let's support asset creators and Open source." link_text = 'Unlock the asset.' - url = paths.get_bkit_url() + '/get-blenderkit/' + asset_data['id'] + '/?from_addon' + url = paths.get_bkit_url() + '/get-blenderkit/' + asset_data['id'] + '/?from_addon=True' bpy.ops.wm.blenderkit_url_dialog('INVOKE_REGION_WIN', url=url, message=message, link_text=link_text) return {'RUNNING_MODAL'} @@ -1626,6 +1628,14 @@ class AssetBarOperator(bpy.types.Operator): invoke_resolution=True, max_resolution=asset_data.get('max_resolution', 0) ) + elif ui_props.asset_type == 'SCENE': + bpy.ops.scene.blenderkit_download('INVOKE_DEFAULT', + asset_index=asset_search_index, + # replace_resolution=True, + invoke_resolution=False, + invoke_scene_settings=True, + max_resolution=asset_data.get('max_resolution', 0) + ) else: bpy.ops.scene.blenderkit_download( # asset_type=ui_props.asset_type, asset_index=asset_search_index, diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py index 3c5f4dcf7..fe91658cf 100644 --- a/blenderkit/ui_panels.py +++ b/blenderkit/ui_panels.py @@ -36,6 +36,7 @@ from bpy.props import ( import bpy import os +import random import logging bk_logger = logging.getLogger('blenderkit') @@ -887,6 +888,15 @@ class VIEW3D_PT_blenderkit_categories(Panel): def draw(self, context): draw_panel_categories(self, context) +def draw_scene_import_settings(self, context): + s = context.scene + props = s.blenderkit_scene + layout = self.layout + layout.prop(props, 'switch_after_append') + # layout.label(text='Import method:') + row = layout.row() + row.prop(props, 'append_link', expand=True, icon_only=False) + class VIEW3D_PT_blenderkit_import_settings(Panel): bl_category = "BlenderKit" @@ -931,11 +941,8 @@ class VIEW3D_PT_blenderkit_import_settings(Panel): row.prop(props, 'append_method', expand=True, icon_only=False) if ui_props.asset_type == 'SCENE': - props = s.blenderkit_scene - layout.prop(props, 'switch_after_append') - layout.label(text='Import method:') - row = layout.row() - row.prop(props, 'append_link', expand=True, icon_only=False) + draw_scene_import_settings(self,context) + if ui_props.asset_type == 'HDR': props = s.blenderkit_HDR @@ -1113,13 +1120,19 @@ class BlenderKitWelcomeOperator(bpy.types.Operator): if self.step == 0: user_preferences = bpy.context.preferences.addons['blenderkit'].preferences - message = "BlenderKit connects from Blender to an online, " \ - "community built shared library of models, " \ - "materials, and brushes. " \ - "Use addon preferences to set up where files will be saved in the Global directory setting." + # message = "BlenderKit connects from Blender to an online, " \ + # "community built shared library of models, " \ + # "materials, and brushes. " \ + # "Use addon preferences to set up where files will be saved in the Global directory setting." + # + # utils.label_multiline(layout, text=message, width=300) + + layout.template_icon(icon_value=self.img.preview.icon_id, scale=18) + + # utils.label_multiline(layout, text="\n Let's start by searching for some cool materials?", width=300) + op = layout.operator("wm.url_open", text='Watch Video Tutorial', icon='QUESTION') + op.url = paths.BLENDERKIT_MANUAL - utils.label_multiline(layout, text=message, width=300) - utils.label_multiline(layout, text="\n Let's start by searching for some cool materials?", width=300) else: message = "Operator Tutorial called with invalid step" @@ -1131,14 +1144,36 @@ class BlenderKitWelcomeOperator(bpy.types.Operator): # bpy.context.window_manager.windows[0].screen.areas[5].spaces[0].show_region_ui = False print('running search no') ui_props = bpy.context.scene.blenderkitUI - ui_props.asset_type = 'MATERIAL' - bpy.context.scene.blenderkit_mat.search_keywords = 'ice' + random_searches = [ + ('MATERIAL','ice'), + ('MODEL','car'), + ('MODEL','vase'), + ('MODEL','grass'), + ('MODEL','plant'), + ('MODEL','man'), + ('MATERIAL','metal'), + ('MATERIAL','wood'), + ('MATERIAL','floor'), + ('MATERIAL','bricks'), + ] + random_search = random.choice(random_searches) + ui_props.asset_type = random_search[0] + + bpy.context.scene.blenderkit_mat.search_keywords = ''#random_search[1] + bpy.context.scene.blenderkit_mat.search_keywords = '+is_free:true+score_gte:1000+order:-created'#random_search[1] # search.search() return {'FINISHED'} def invoke(self, context, event): wm = bpy.context.window_manager - return wm.invoke_props_dialog(self) + img = utils.get_thumbnail('intro.jpg') + utils.img_to_preview(img, copy_original = True) + self.img = img + w, a, r = utils.get_largest_area(area_type='VIEW_3D') + if a is not None: + a.spaces.active.show_region_ui = True + + return wm.invoke_props_dialog(self, width = 500) def draw_asset_context_menu(layout, context, asset_data, from_panel=False): @@ -1779,8 +1814,9 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties): # top draggabe bar with name of the asset top_row = layout.row() top_drag_bar = top_row.box() + bcats = bpy.context.window_manager['bkit_categories'] - cat_path = categories.get_category_path(bpy.context.window_manager['bkit_categories'], + cat_path = categories.get_category_path(bcats, self.asset_data['category'])[1:] for i,c in enumerate(cat_path): cat_path[i] = c.capitalize() @@ -1821,6 +1857,8 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties): sr = bpy.context.window_manager['search results'] asset_data = sr[ui_props.active_index] self.img = ui.get_large_thumbnail_image(asset_data) + utils.img_to_preview(self.img, copy_original = True) + self.asset_type = asset_data['assetType'] self.asset_id = asset_data['id'] # self.tex = utils.get_hidden_texture(self.img) diff --git a/blenderkit/utils.py b/blenderkit/utils.py index bae1244d8..3d1f3eaed 100644 --- a/blenderkit/utils.py +++ b/blenderkit/utils.py @@ -337,9 +337,14 @@ def get_hidden_texture(name, force_reload=False): return t -def img_to_preview(img): - img.preview.image_size = (img.size[0], img.size[1]) - img.preview.image_pixels_float = img.pixels[:] +def img_to_preview(img, copy_original = False): + if bpy.app.version[0]>=3: + img.preview_ensure() + if not copy_original: + return; + if img.preview.image_size != img.size: + img.preview.image_size = (img.size[0], img.size[1]) + img.preview.image_pixels_float = img.pixels[:] # img.preview.icon_size = (img.size[0], img.size[1]) # img.preview.icon_pixels_float = img.pixels[:] @@ -852,11 +857,14 @@ def get_fake_context(context, area_type='VIEW_3D'): # print(w,a,r) return C_dict +# def is_url(text): + def label_multiline(layout, text='', icon='NONE', width=-1): ''' draw a ui label, but try to split it in multiple lines.''' if text.strip() == '': return + text = text.replace('\r\n','\n') lines = text.split('\n') if width > 0: threshold = int(width / 5.5) @@ -865,6 +873,8 @@ def label_multiline(layout, text='', icon='NONE', width=-1): maxlines = 8 li = 0 for l in lines: + # if is_url(l): + while len(l) > threshold: i = l.rfind(' ', 0, threshold) if i < 1: -- GitLab