[Bf-extensions-cvs] [d54fb366] master: BlenderKit: search by collection/ desginer/designCollection
Vilem Duha
noreply at git.blender.org
Sat Aug 7 12:55:15 CEST 2021
Commit: d54fb366442e38c9a718ac55be08e0708de9afab
Author: Vilem Duha
Date: Sat Aug 7 12:54:25 2021 +0200
Branches: master
https://developer.blender.org/rBAd54fb366442e38c9a718ac55be08e0708de9afab
BlenderKit: search by collection/ desginer/designCollection
also fix fetching ratings for validators.
===================================================================
M blenderkit/search.py
M blenderkit/ui_panels.py
===================================================================
diff --git a/blenderkit/search.py b/blenderkit/search.py
index ac03080c..dfb57cf2 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -448,7 +448,7 @@ def search_timer():
headers = utils.get_headers(api_key)
if utils.profile_is_validator():
for r in rdata['results']:
- if ratings_utils.get_rating_local(asset_data['id']) is None:
+ if ratings_utils.get_rating_local(r['id']) is None:
rating_thread = threading.Thread(target=ratings_utils.get_rating, args=([r['id'], headers]),
daemon=True)
rating_thread.start()
@@ -1491,7 +1491,8 @@ class SearchOperator(Operator):
own: BoolProperty(name="own assets only",
description="Find all own assets",
- default=False)
+ default=False,
+ options={'SKIP_SAVE'})
category: StringProperty(
name="category",
diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py
index 67f42148..056c3f19 100644
--- a/blenderkit/ui_panels.py
+++ b/blenderkit/ui_panels.py
@@ -870,6 +870,7 @@ class VIEW3D_PT_blenderkit_advanced_material_search(Panel):
row.prop(props, "search_file_size_max", text='Max')
layout.prop(props, "quality_limit", slider=True)
+
class VIEW3D_PT_blenderkit_categories(Panel):
bl_category = "BlenderKit"
bl_idname = "VIEW3D_PT_blenderkit_categories"
@@ -891,6 +892,7 @@ class VIEW3D_PT_blenderkit_categories(Panel):
def draw(self, context):
draw_panel_categories(self, context)
+
def draw_scene_import_settings(self, context):
wm = bpy.context.window_manager
props = wm.blenderkit_scene
@@ -945,7 +947,7 @@ class VIEW3D_PT_blenderkit_import_settings(Panel):
row.prop(props, 'append_method', expand=True, icon_only=False)
if ui_props.asset_type == 'SCENE':
- draw_scene_import_settings(self,context)
+ draw_scene_import_settings(self, context)
if ui_props.asset_type == 'HDR':
props = wm.blenderkit_HDR
@@ -1149,35 +1151,35 @@ class BlenderKitWelcomeOperator(bpy.types.Operator):
print('running search no')
ui_props = bpy.context.scene.blenderkitUI
random_searches = [
- ('MATERIAL','ice'),
- ('MODEL','car'),
- ('MODEL','vase'),
- ('MODEL','grass'),
- ('MODEL','plant'),
- ('MODEL','man'),
- ('MATERIAL','metal'),
- ('MATERIAL','wood'),
- ('MATERIAL','floor'),
- ('MATERIAL','bricks'),
+ ('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.window_manager.blenderkit_mat.search_keywords = ''#random_search[1]
- bpy.context.window_manager.blenderkit_mat.search_keywords = '+is_free:true+score_gte:1000+order:-created'#random_search[1]
+ bpy.context.window_manager.blenderkit_mat.search_keywords = '' # random_search[1]
+ bpy.context.window_manager.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
img = utils.get_thumbnail('intro.jpg')
- utils.img_to_preview(img, copy_original = True)
+ 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)
+ return wm.invoke_props_dialog(self, width=500)
def draw_asset_context_menu(layout, context, asset_data, from_panel=False):
@@ -1396,8 +1398,8 @@ class OBJECT_MT_blenderkit_asset_menu(bpy.types.Menu):
def numeric_to_str(s):
if s:
- if s<1:
- s = str(round(s,1))
+ if s < 1:
+ s = str(round(s, 1))
else:
s = str(round(s))
else:
@@ -1405,14 +1407,32 @@ def numeric_to_str(s):
return s
-def push_op_left(layout, strength =3):
+def push_op_left(layout, strength=3):
for a in range(0, strength):
layout.label(text='')
-def label_or_url(layout, text='', tooltip='', url='', icon_value=None, icon=None):
+def label_or_url_or_operator(layout, text='', tooltip='', url='', operator=None, operator_kwargs={}, icon_value=None,
+ icon=None):
'''automatically switch between different layout options for linking or tooltips'''
layout.emboss = 'NONE'
+
+ if operator is not None:
+ if icon:
+ op = layout.operator(operator, text=text, icon=icon)
+ elif icon_value:
+ op = layout.operator(operator, text=text, icon_value=icon_value)
+ else:
+ op = layout.operator(operator, text=text)
+ for kwarg in operator_kwargs.keys():
+ if type(operator_kwargs[kwarg]) == str:
+ quoatation = "'"
+ else:
+ quoatation = ""
+ exec(f"op.{kwarg} = {quoatation}{operator_kwargs[kwarg]}{quoatation}")
+ push_op_left(layout, strength=2)
+
+ return
if url != '':
if icon:
op = layout.operator('wm.blenderkit_url', text=text, icon=icon)
@@ -1422,7 +1442,7 @@ def label_or_url(layout, text='', tooltip='', url='', icon_value=None, icon=None
op = layout.operator('wm.blenderkit_url', text=text)
op.url = url
op.tooltip = tooltip
- push_op_left(layout, strength = 5)
+ push_op_left(layout, strength=5)
return
if tooltip != '':
@@ -1435,7 +1455,7 @@ def label_or_url(layout, text='', tooltip='', url='', icon_value=None, icon=None
op.tooltip = tooltip
# these are here to move the text to left, since operators can only center text by default
- push_op_left(layout, strength = 3)
+ push_op_left(layout, strength=3)
return
if icon:
layout.label(text=text, icon=icon)
@@ -1460,7 +1480,8 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties):
# layout = layout.column()
draw_asset_context_menu(layout, context, self.asset_data, from_panel=False)
- def draw_property(self, layout, left, right, icon=None, icon_value=None, url='', tooltip=''):
+ def draw_property(self, layout, left, right, icon=None, icon_value=None, url='', tooltip='', operator=None,
+ operator_kwargs={}):
right = str(right)
row = layout.row()
split = row.split(factor=0.35)
@@ -1471,7 +1492,8 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties):
# split for questionmark:
if url != '':
split = split.split(factor=0.6)
- label_or_url(split, text=right, tooltip=tooltip, url=url, icon_value=icon_value, icon=icon)
+ label_or_url_or_operator(split, text=right, tooltip=tooltip, url=url, operator=operator,
+ operator_kwargs=operator_kwargs, icon_value=icon_value, icon=icon)
# additional questionmark icon where it's important?
if url != '':
split = split.split()
@@ -1479,7 +1501,7 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties):
op.url = url
op.tooltip = tooltip
- def draw_asset_parameter(self, layout, key='', pretext=''):
+ def draw_asset_parameter(self, layout, key='', pretext='', do_search=False):
parameter = utils.get_param(self.asset_data, key)
if parameter == None:
return
@@ -1487,7 +1509,15 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties):
parameter = f"{parameter:,d}"
elif type(parameter) == float:
parameter = f"{parameter:,.1f}"
- self.draw_property(layout, pretext, parameter)
+ if do_search:
+ kwargs = {
+ 'esc': True,
+ 'keywords': f'+{key}:{parameter}',
+ 'tooltip': f'search by {parameter}',
+ }
+ self.draw_property(layout, pretext, parameter, operator='view3d.blenderkit_search', operator_kwargs=kwargs)
+ else:
+ self.draw_property(layout, pretext, parameter)
def draw_description(self, layout, width=250):
if len(self.asset_data['description']) > 0:
@@ -1495,7 +1525,7 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties):
box.scale_y = 0.4
box.label(text='Description')
box.separator()
- link_more = utils.label_multiline(box, self.asset_data['description'], width=width, max_lines = 10)
+ link_more = utils.label_multiline(box, self.asset_data['description'], width=width, max_lines=10)
if link_more:
row = box.row()
row.scale_y = 2
@@ -1588,9 +1618,10 @@ class AssetPopupCard(bpy.types.Operator, ratings_utils.RatingsProperties):
resolutions = resolutions.replace('_', '.')
self.draw_property(box, 'Generated', resolutions)
- self.draw_asset_parameter(box, key='designer', pretext='Designer')
- self.draw_asset_parameter(box, key='manufacturer', pretext='Manufacturer') # TODO make them clickable!
- self.draw_asset_parameter(box, key='designCollection', pretext='Collection')
+ self.draw_asset_parameter(box, key='designer', pretext='De
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list