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:
authorVilém Duha <vilda.novak@gmail.com>2021-04-05 20:03:10 +0300
committerVilém Duha <vilda.novak@gmail.com>2021-04-05 20:03:10 +0300
commit414f63669ff475d044a1d907326d78cad77fbefd (patch)
tree6ded9c46086fe65fbdea75bfe6f4f1834a7c0278 /blenderkit
parent08e9ab150d105ba4de2b977b94ab794efd6fd1f2 (diff)
BlenderKit: fix poll of Fast metadata edit and rating operators
previous fix broke other use cases (in panels and in BGL element)
Diffstat (limited to 'blenderkit')
-rw-r--r--blenderkit/ratings.py4
-rw-r--r--blenderkit/ui_panels.py1
-rw-r--r--blenderkit/upload.py13
-rw-r--r--blenderkit/utils.py21
4 files changed, 34 insertions, 5 deletions
diff --git a/blenderkit/ratings.py b/blenderkit/ratings.py
index e06b3d49..c7055905 100644
--- a/blenderkit/ratings.py
+++ b/blenderkit/ratings.py
@@ -426,7 +426,7 @@ class FastRateMenu(Operator):
def poll(cls, context):
scene = bpy.context.scene
ui_props = scene.blenderkitUI
- return ui_props.active_index > -1
+ return True;
def draw(self, context):
layout = self.layout
@@ -500,6 +500,8 @@ class FastRateMenu(Operator):
self.asset_id = asset_data['id']
self.asset_type = asset_data['assetType']
+ if self.asset_id == '':
+ return {'CANCELLED'}
self.message = f"Rate asset {self.asset_name}"
wm = context.window_manager
diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py
index 0c460f29..4ccddcfe 100644
--- a/blenderkit/ui_panels.py
+++ b/blenderkit/ui_panels.py
@@ -1285,6 +1285,7 @@ def draw_asset_context_menu(layout, context, asset_data, from_panel=False):
row.operator_context = 'INVOKE_DEFAULT'
op = layout.operator('wm.blenderkit_fast_metadata', text='Fast Edit Metadata')
op.asset_id = asset_data['id']
+ op.asset_type = asset_data['assetType']
if author_id == str(profile['user']['id']):
row = layout.row()
diff --git a/blenderkit/upload.py b/blenderkit/upload.py
index 284d6359..b2395f68 100644
--- a/blenderkit/upload.py
+++ b/blenderkit/upload.py
@@ -596,6 +596,11 @@ class FastMetadata(bpy.types.Operator):
description="Unique name of the asset (hidden)",
default=""
)
+ asset_type: StringProperty(
+ name="Asset Type",
+ description="Asset Type",
+ default=""
+ )
name: StringProperty(
name="Name",
description="Main name of the asset",
@@ -658,7 +663,7 @@ class FastMetadata(bpy.types.Operator):
def poll(cls, context):
scene = bpy.context.scene
ui_props = scene.blenderkitUI
- return can_edit_asset(active_index=ui_props.active_index)
+ return True
def draw(self, context):
layout = self.layout
@@ -717,9 +722,9 @@ class FastMetadata(bpy.types.Operator):
sr = bpy.context.window_manager['search results']
asset_data = dict(sr[ui_props.active_index])
else:
- for result in bpy.context.window_manager['search results']:
- if result['id'] == self.asset_id:
- asset_data = dict(result)
+
+ active_asset = utils.get_active_asset_by_type(asset_type = self.asset_type)
+ asset_data = active_asset.get('asset_data')
if not can_edit_asset(asset_data=asset_data):
return {'CANCELLED'}
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index d45ac1f5..7abc07d5 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -181,6 +181,27 @@ def get_search_props():
return props
+def get_active_asset_by_type(asset_type = 'model'):
+ asset_type =asset_type.lower()
+ if asset_type == 'model':
+ if bpy.context.view_layer.objects.active is not None:
+ ob = get_active_model()
+ return ob
+ if asset_type == 'scene':
+ return bpy.context.scene
+ if asset_type == 'hdr':
+ return get_active_HDR()
+ if asset_type == 'material':
+ if bpy.context.view_layer.objects.active is not None and bpy.context.active_object.active_material is not None:
+ return bpy.context.active_object.active_material
+ if asset_type == 'texture':
+ return None
+ if asset_type == 'brush':
+ b = get_active_brush()
+ if b is not None:
+ return b
+ return None
+
def get_active_asset():
scene = bpy.context.scene
ui_props = scene.blenderkitUI