diff options
author | Vilém Duha <vilda.novak@gmail.com> | 2021-01-26 19:16:10 +0300 |
---|---|---|
committer | Vilém Duha <vilda.novak@gmail.com> | 2021-01-28 15:59:46 +0300 |
commit | 4b6ee68c00f1400e2d9824d46ac0ef6c747b5510 (patch) | |
tree | 28985b0afbf072b48052d7b8a21804eb79fbed3a /blenderkit | |
parent | ec4aa946771433d29cf43a8f27378bb4f4fb713e (diff) |
BlenderKit: fix start of assetbar with no search results
This wouldn't previously show asset bar, now it starts search and shows assetbar.
Diffstat (limited to 'blenderkit')
-rw-r--r-- | blenderkit/bkit_oauth.py | 2 | ||||
-rw-r--r-- | blenderkit/categories.py | 31 | ||||
-rw-r--r-- | blenderkit/search.py | 5 | ||||
-rw-r--r-- | blenderkit/ui.py | 10 | ||||
-rw-r--r-- | blenderkit/utils.py | 3 |
5 files changed, 31 insertions, 20 deletions
diff --git a/blenderkit/bkit_oauth.py b/blenderkit/bkit_oauth.py index 7e7946a2..efcc1cc7 100644 --- a/blenderkit/bkit_oauth.py +++ b/blenderkit/bkit_oauth.py @@ -87,7 +87,7 @@ def write_tokens(auth_token, refresh_token, oauth_response): props.report = '' ui.add_report('BlenderKit Re-Login success') search.get_profile() - categories.fetch_categories_thread(auth_token) + categories.fetch_categories_thread(auth_token, force = False) class RegisterLoginOnline(bpy.types.Operator): diff --git a/blenderkit/categories.py b/blenderkit/categories.py index 8408f16f..2da830cb 100644 --- a/blenderkit/categories.py +++ b/blenderkit/categories.py @@ -28,6 +28,7 @@ import time import shutil import threading import logging + bk_logger = logging.getLogger('blenderkit') @@ -95,6 +96,7 @@ def get_category(categories, cat_path=()): return (c) break; + # def get_upload_asset_type(self): # typemapper = { # bpy.types.Object.blenderkit: 'model', @@ -106,15 +108,16 @@ def get_category(categories, cat_path=()): # asset_type = typemapper[type(self)] # return asset_type -def update_category_enums(self,context): +def update_category_enums(self, context): '''Fixes if lower level is empty - sets it to None, because enum value can be higher.''' - enums = get_subcategory_enums(self,context) + enums = get_subcategory_enums(self, context) if enums[0][0] == 'NONE' and self.subcategory != 'NONE': self.subcategory = 'NONE' -def update_subcategory_enums(self,context): + +def update_subcategory_enums(self, context): '''Fixes if lower level is empty - sets it to None, because enum value can be higher.''' - enums = get_subcategory1_enums(self,context) + enums = get_subcategory1_enums(self, context) if enums[0][0] == 'NONE' and self.subcategory1 != 'NONE': self.subcategory1 = 'NONE' @@ -132,10 +135,11 @@ def get_category_enums(self, context): items.append(('NONE', '', 'no categories on this level defined')) return items + def get_subcategory_enums(self, context): wm = bpy.context.window_manager props = bpy.context.scene.blenderkitUI - asset_type = props.asset_type.lower() + asset_type = props.asset_type.lower() items = [] if self.category != '': asset_categories = get_category(wm['bkit_categories'], cat_path=(asset_type, self.category,)) @@ -146,13 +150,14 @@ def get_subcategory_enums(self, context): # print('subcategory', items) return items + def get_subcategory1_enums(self, context): wm = bpy.context.window_manager props = bpy.context.scene.blenderkitUI - asset_type = props.asset_type.lower() + asset_type = props.asset_type.lower() items = [] if self.category != '' and self.subcategory != '': - asset_categories = get_category(wm['bkit_categories'], cat_path=(asset_type, self.category, self.subcategory, )) + asset_categories = get_category(wm['bkit_categories'], cat_path=(asset_type, self.category, self.subcategory,)) if asset_categories: for c in asset_categories['children']: items.append((c['slug'], c['name'], c['description'])) @@ -160,6 +165,7 @@ def get_subcategory1_enums(self, context): items.append(('NONE', '', 'no categories on this level defined')) return items + def copy_categories(): # this creates the categories system on only tempdir = paths.get_temp_dir() @@ -193,11 +199,12 @@ def load_categories(): except: print('categories failed to read') + # catfetch_counter = 0 -def fetch_categories(API_key, force = False): +def fetch_categories(API_key, force=False): url = paths.get_api_url() + 'categories/' headers = utils.get_headers(API_key) @@ -216,14 +223,14 @@ def fetch_categories(API_key, force = False): try: # read categories only once per day maximum, or when forced to do so. if catfile_age > 86400 or force: - bk_logger.debug('requesting categories') + bk_logger.debug('requesting categories from server') r = rerequests.get(url, headers=headers) rdata = r.json() categories = rdata['results'] fix_category_counts(categories) # filter_categories(categories) #TODO this should filter categories for search, but not for upload. by now off. - with open(categories_filepath, 'w', encoding = 'utf-8') as s: - json.dump(categories, s, ensure_ascii=False, indent=4) + with open(categories_filepath, 'w', encoding='utf-8') as s: + json.dump(categories, s, ensure_ascii=False, indent=4) tasks_queue.add_task((load_categories, ())) except Exception as e: bk_logger.debug('category fetching failed') @@ -233,6 +240,6 @@ def fetch_categories(API_key, force = False): shutil.copy(source_path, categories_filepath) -def fetch_categories_thread(API_key, force = False): +def fetch_categories_thread(API_key, force=False): cat_thread = threading.Thread(target=fetch_categories, args=([API_key, force]), daemon=True) cat_thread.start() diff --git a/blenderkit/search.py b/blenderkit/search.py index e362a928..d37b0045 100644 --- a/blenderkit/search.py +++ b/blenderkit/search.py @@ -153,14 +153,12 @@ def purge_search_results(): 'search results', 'search results orig', ] - print('purge search') asset_types = ['model', 'material', 'scene', 'hdr', 'brush'] for at in asset_types: sr_props.append('bkit {at} search') sr_props.append('bkit {at} search orig') for sr_prop in sr_props: if s.get(sr_prop): - print(sr_prop) del (s[sr_prop]) @@ -192,7 +190,7 @@ def fetch_server_data(): if api_key != '' and bpy.context.window_manager.get('bkit profile') == None: get_profile() if bpy.context.window_manager.get('bkit_categories') is None: - categories.fetch_categories_thread(api_key) + categories.fetch_categories_thread(api_key, force = False) first_time = True @@ -1388,6 +1386,7 @@ def search(category='', get_next=False, author_id=''): props = scene.blenderkit_brush query = build_query_brush() + # it's possible get_net was requested more than once. if props.is_searching and get_next == True: return; diff --git a/blenderkit/ui.py b/blenderkit/ui.py index 844d87c5..6d797f73 100644 --- a/blenderkit/ui.py +++ b/blenderkit/ui.py @@ -1705,8 +1705,9 @@ class AssetBarOperator(bpy.types.Operator): def invoke(self, context, event): # FIRST START SEARCH ui_props = context.scene.blenderkitUI + sr = bpy.context.window_manager.get('search results') - if self.do_search: + if self.do_search or sr is None: # we erase search keywords for cateogry search now, since these combinations usually return nothing now. # when the db gets bigger, this can be deleted. if self.category != '': @@ -1714,6 +1715,9 @@ class AssetBarOperator(bpy.types.Operator): sprops.search_keywords = '' search.search(category=self.category) + if sr is None: + bpy.context.window_manager['search results'] = [] + if ui_props.assetbar_on: # we don't want to run the assetbar many times, that's why it has a switch on/off behaviour, # unless being called with 'keep_running' prop. @@ -1734,9 +1738,7 @@ class AssetBarOperator(bpy.types.Operator): ui_props.assetbar_on = True ui_props.turn_off = False - sr = bpy.context.window_manager.get('search results') - if sr is None: - bpy.context.window_manager['search results'] = [] + if context.area.type != 'VIEW_3D': self.report({'WARNING'}, "View3D not found, cannot run operator") diff --git a/blenderkit/utils.py b/blenderkit/utils.py index adf5bd03..30f29ab0 100644 --- a/blenderkit/utils.py +++ b/blenderkit/utils.py @@ -825,3 +825,6 @@ def label_multiline(layout, text='', icon='NONE', width=-1): break; layout.label(text=l, icon=icon) icon = 'NONE' + +def trace(): + traceback.print_stack()
\ No newline at end of file |