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-26 18:48:18 +0300
committerVilém Duha <vilda.novak@gmail.com>2021-04-26 18:48:18 +0300
commite7acb93c89fc00a5dfffcff90ab3956a0eaf34f0 (patch)
tree28853a2e858e7f6ae059fcbc52887e297dedc2db /blenderkit/asset_bar_op.py
parent4cb833e84acfd2be5fa08ce75118ce9cb60643b8 (diff)
BlenderKit:fixes
- improve material and model thumbnailers -Now it's possible to re-render assets directly from right-click menu. -fix appending of assets with wrong name -several fixes for experimental asset bar - small fixes in bg_blender for background operations - material thumbnailer background fixed - draw upload thumbnail in upload UI
Diffstat (limited to 'blenderkit/asset_bar_op.py')
-rw-r--r--blenderkit/asset_bar_op.py68
1 files changed, 59 insertions, 9 deletions
diff --git a/blenderkit/asset_bar_op.py b/blenderkit/asset_bar_op.py
index 41ead99c..acb9cf94 100644
--- a/blenderkit/asset_bar_op.py
+++ b/blenderkit/asset_bar_op.py
@@ -52,6 +52,11 @@ BL_UI_Widget.get_area_height = get_area_height
def asset_bar_modal(self, context, event):
+ ui_props = bpy.context.scene.blenderkitUI
+ if ui_props.turn_off:
+ ui_props.turn_off = False
+ self.finish()
+
if self._finished:
return {'FINISHED'}
@@ -76,7 +81,9 @@ def asset_bar_modal(self, context, event):
self.scroll_update()
return {'RUNNING_MODAL'}
-
+ if self.check_ui_resized(context):
+ self.update_ui_size(context)
+ self.update_layout(context)
return {"PASS_THROUGH"}
def asset_bar_invoke(self, context, event):
@@ -235,6 +242,27 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
for w in self.tooltip_widgets:
w.visible = True
+ def check_ui_resized(self,context):
+ region = context.region
+ area = context.area
+ ui_props = bpy.context.scene.blenderkitUI
+ ui_scale = bpy.context.preferences.view.ui_scale
+
+ reg_multiplier = 1
+ if not bpy.context.preferences.system.use_region_overlap:
+ reg_multiplier = 0
+
+ for r in area.regions:
+ if r.type == 'TOOLS':
+ self.bar_x = r.width * reg_multiplier + self.margin + ui_props.bar_x_offset * ui_scale
+ elif r.type == 'UI':
+ self.bar_end = r.width * reg_multiplier + 100 * ui_scale
+
+ bar_width = region.width - self.bar_x - self.bar_end
+ if bar_width != self.bar_width:
+ return True
+ return False
+
def update_ui_size(self, context):
if bpy.app.background or not context.area:
@@ -264,16 +292,18 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
elif r.type == 'UI':
self.bar_end = r.width * reg_multiplier + 100 * ui_scale
- self.bar_width = region.width - ui_props.bar_x - ui_props.bar_end
+ self.bar_width = region.width - self.bar_x - self.bar_end
self.wcount = math.floor(
(self.bar_width) / (self.button_size))
search_results = bpy.context.window_manager.get('search results')
- if search_results is not None and self.wcount > 0:
- self.hcount = min(user_preferences.max_assetbar_rows, math.ceil(len(search_results) / self.wcount))
- else:
- self.hcount = 1
+ # we need to init all possible thumb previews in advance/
+ self.hcount = user_preferences.max_assetbar_rows
+ # if search_results is not None and self.wcount > 0:
+ # self.hcount = min(user_preferences.max_assetbar_rows, math.ceil(len(search_results) / self.wcount))
+ # else:
+ # self.hcount = 1
self.bar_height = (self.button_size) * self.hcount + 2 * self.assetbar_margin
# self.bar_y = region.height - ui_props.bar_y_offset * ui_scale
@@ -285,6 +315,9 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
self.reports_y = self.bar_y - self.bar_height - 100
self.reports_x = self.bar_x
+ def update_layout(self, context):
+ pass;
+
def __init__(self):
super().__init__()
@@ -490,7 +523,14 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
if img:
self.tooltip_image.set_image(img.filepath)
self.asset_name.text = asset_data['name']
- self.tooltip_panel.update(widget.x_screen + widget.width, widget.y_screen + widget.height)
+
+ properties_width = 0
+ for r in bpy.context.area.regions:
+ if r.type == 'UI':
+ properties_width = r.width
+ tooltip_x = min(widget.x_screen + widget.width, bpy.context.region.width - self.tooltip_panel.width -properties_width)
+
+ self.tooltip_panel.update(tooltip_x, widget.y_screen + widget.height)
self.tooltip_panel.layout_widgets()
def exit_button(self, widget):
@@ -518,8 +558,9 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
blenderkit.search.search(get_next=True)
def update_images(self):
- sr = bpy.context.window_manager['search results']
-
+ sr = bpy.context.window_manager.get('search results')
+ if not sr:
+ return
for asset_button in self.asset_buttons:
asset_button.asset_index = asset_button.button_index + self.scroll_offset
if asset_button.asset_index < len(sr):
@@ -580,6 +621,15 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
self.scroll_offset -= self.wcount * self.hcount
self.scroll_update()
+ def update_sizes(self):
+ properties_width = 0
+ for r in bpy.context.area.regions:
+ if r.type == 'UI':
+ properties_width = r.width
+ tooltip_x = min(widget.x_screen + widget.width,
+ bpy.context.region.width - self.tooltip_panel.width - properties_width)
+ print(widget.x_screen + widget.width, bpy.context.region.width - self.tooltip_panel.width)
+
def register():
bpy.utils.register_class(BlenderKitAssetBarOperator)