[Bf-extensions-cvs] [6892d3a9] master: BlenderKit: progress on asset bar
Vilem Duha
noreply at git.blender.org
Mon Oct 18 13:30:49 CEST 2021
Commit: 6892d3a92e94867c80bdc25373ee9d6ef5e8c6ce
Author: Vilem Duha
Date: Mon Oct 18 13:30:35 2021 +0200
Branches: master
https://developer.blender.org/rBA6892d3a92e94867c80bdc25373ee9d6ef5e8c6ce
BlenderKit: progress on asset bar
Forgot to add files to last commit
===================================================================
M blenderkit/__init__.py
M blenderkit/asset_bar_op.py
M blenderkit/bkit_oauth.py
M blenderkit/bl_ui_widgets/bl_ui_draw_op.py
M blenderkit/bl_ui_widgets/bl_ui_image.py
M blenderkit/reports.py
M blenderkit/ui.py
M blenderkit/ui_panels.py
===================================================================
diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py
index 45ae8daa..75787065 100644
--- a/blenderkit/__init__.py
+++ b/blenderkit/__init__.py
@@ -64,6 +64,7 @@ if "bpy" in locals():
bl_ui_widget = reload(bl_ui_widget)
bl_ui_label = reload(bl_ui_label)
bl_ui_button = reload(bl_ui_button)
+ bl_ui_image = reload(bl_ui_image)
# bl_ui_checkbox = reload(bl_ui_checkbox)
# bl_ui_slider = reload(bl_ui_slider)
# bl_ui_up_down = reload(bl_ui_up_down)
@@ -102,6 +103,7 @@ else:
from blenderkit.bl_ui_widgets import bl_ui_widget
from blenderkit.bl_ui_widgets import bl_ui_label
from blenderkit.bl_ui_widgets import bl_ui_button
+ from blenderkit.bl_ui_widgets import bl_ui_image
# from blenderkit.bl_ui_widgets import bl_ui_checkbox
# from blenderkit.bl_ui_widgets import bl_ui_slider
# from blenderkit.bl_ui_widgets import bl_ui_up_down
diff --git a/blenderkit/asset_bar_op.py b/blenderkit/asset_bar_op.py
index a7ad1b7a..fb87452a 100644
--- a/blenderkit/asset_bar_op.py
+++ b/blenderkit/asset_bar_op.py
@@ -4,6 +4,7 @@ from bpy.types import Operator
from blenderkit.bl_ui_widgets.bl_ui_label import *
from blenderkit.bl_ui_widgets.bl_ui_button import *
+from blenderkit.bl_ui_widgets.bl_ui_image import *
# from blenderkit.bl_ui_widgets.bl_ui_checkbox import *
# from blenderkit.bl_ui_widgets.bl_ui_slider import *
# from blenderkit.bl_ui_widgets.bl_ui_up_down import *
@@ -70,23 +71,40 @@ def asset_bar_modal(self, context, event):
self.finish()
return {'FINISHED'}
+ # progress bar
+ # Todo: put this into a timer?
+ sr = bpy.context.window_manager.get('search results')
+ ui_scale = bpy.context.preferences.view.ui_scale
+ for asset_button in self.asset_buttons:
+
+ if sr is not None and len(sr)> asset_button.asset_index:
+ asset_data = sr[asset_button.asset_index]
+
+ if asset_data['downloaded'] > 0:
+ asset_button.progress_bar.width = int(self.button_size * ui_scale * asset_data['downloaded'] / 100)
+ asset_button.progress_bar.visible = True
+ else:
+ asset_button.progress_bar.visible = False
if self.handle_widget_events(event):
return {'RUNNING_MODAL'}
if event.type in {"ESC"}:
self.finish()
- if event.type == 'WHEELUPMOUSE':
+ x = event.mouse_region_x
+ y = event.mouse_region_y
+ if event.type == 'WHEELUPMOUSE' and self.panel.is_in_rect(x, y):
self.scroll_offset -= 5
self.scroll_update()
return {'RUNNING_MODAL'}
- elif event.type == 'WHEELDOWNMOUSE':
+
+ elif event.type == 'WHEELDOWNMOUSE' and self.panel.is_in_rect(x, y):
self.scroll_offset += 5
self.scroll_update()
return {'RUNNING_MODAL'}
if self.check_ui_resized(context) or self.check_new_search_results(context):
- self.update_ui_size(context)
+ # self.update_ui_size(context)
self.update_layout(context, event)
return {"PASS_THROUGH"}
@@ -125,48 +143,6 @@ def mouse_down_right(self, x, y):
return False
-# def handle_event(self, event):
-# x = event.mouse_region_x
-# y = event.mouse_region_y
-#
-# if (event.type == 'LEFTMOUSE'):
-# if (event.value == 'PRESS'):
-# self._mouse_down = True
-# return self.mouse_down(x, y)
-# else:
-# self._mouse_down = False
-# self.mouse_up(x, y)
-#
-# elif (event.type == 'RIGHTMOUSE'):
-# if (event.value == 'PRESS'):
-# self._mouse_down_right = True
-# return self.mouse_down_right(x, y)
-# else:
-# self._mouse_down_right = False
-# self.mouse_up(x, y)
-#
-# elif (event.type == 'MOUSEMOVE'):
-# self.mouse_move(x, y)
-#
-# inrect = self.is_in_rect(x, y)
-#
-# # we enter the rect
-# if not self.__inrect and inrect:
-# self.__inrect = True
-# self.mouse_enter(event, x, y)
-#
-# # we are leaving the rect
-# elif self.__inrect and not inrect:
-# self.__inrect = False
-# self.mouse_exit(event, x, y)
-#
-# return False
-#
-# elif event.value == 'PRESS' and (event.ascii != '' or event.type in self.get_input_keys()):
-# return self.text_input(event)
-#
-# return False
-
BL_UI_Button.mouse_down_right = mouse_down_right
BL_UI_Button.set_mouse_down_right = set_mouse_down_right
@@ -258,8 +234,7 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
self.tooltip_panel.bg_color = (0.0, 0.0, 0.0, 0.5)
self.tooltip_panel.visible = False
- tooltip_image = BL_UI_Button(0, 0, 1, 1)
- tooltip_image.text = ""
+ tooltip_image = BL_UI_Image(0, 0, 1, 1)
img_path = paths.get_addon_thumbnail_path('thumbnail_notready.jpg')
tooltip_image.set_image(img_path)
tooltip_image.set_image_size((tooltip_width, tooltip_height))
@@ -287,8 +262,7 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
self.authors_name = authors_name
self.tooltip_widgets.append(authors_name)
- gravatar_image = BL_UI_Button(tooltip_width - gravatar_size, tooltip_height - gravatar_size, 1, 1)
- gravatar_image.text = ""
+ gravatar_image = BL_UI_Image(tooltip_width - gravatar_size, tooltip_height - gravatar_size, 1, 1)
img_path = paths.get_addon_thumbnail_path('thumbnail_notready.jpg')
gravatar_image.set_image(img_path)
gravatar_image.set_image_size((gravatar_size - 1 * self.margin, gravatar_size - 1 * self.margin))
@@ -372,12 +346,12 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
ui_scale = bpy.context.preferences.view.ui_scale
self.margin = ui_props.bl_rna.properties['margin'].default * ui_scale
- self.margin = int(7 * ui_scale)
+ self.margin = int(9 * ui_scale)
self.button_margin = int(0 * ui_scale)
- self.author_text_size = int(15 * ui_scale)
self.asset_name_text_size = int(20 * ui_scale)
+ self.author_text_size = int(self.asset_name_text_size * .7 * ui_scale)
self.assetbar_margin = int(2 * ui_scale)
- self.tooltip_size = int(500 * ui_scale)
+ self.tooltip_size = int(512 * ui_scale)
self.thumb_size = user_preferences.thumb_size * ui_scale
self.button_size = 2 * self.button_margin + self.thumb_size
@@ -417,12 +391,23 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
self.reports_x = self.bar_x
def update_layout(self, context, event):
- self.init_ui()
- self.setup_widgets(context, event)
- self.tooltip_panel.add_widgets(self.tooltip_widgets)
- self.scroll_update()
+ #restarting asset_bar completely since the widgets are too hard to get working with updates.
+ ui_props = bpy.context.window_manager.blenderkitUI
+ ui_props.turn_off = False
+ self.finish()
+ C_dict = utils.get_fake_context(context)
+ if C_dict.get('window'): # no 3d view, no asset bar.
+ bpy.ops.view3d.blenderkit_asset_bar_widget(C_dict, 'INVOKE_REGION_WIN', keep_running=self.keep_running,
+ do_search=False)
+ # self.init_ui()
+ # self.init_tooltip()
+ # self.hide_tooltip()
+ # self.setup_widgets(context, event)
+ # self.scroll_update()
def asset_button_init(self, asset_x, asset_y, button_idx):
+ ui_scale = bpy.context.preferences.view.ui_scale
+
button_bg_color = (0.2, 0.2, 0.2, .1)
button_hover_color = (0.8, 0.8, 0.8, .2)
@@ -448,9 +433,9 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
new_button.set_mouse_exit(self.exit_button)
new_button.text_input = self.handle_key_input
# add validation icon to button
- icon_size = 24
- validation_icon_margin = 3
- validation_icon = BL_UI_Button(
+ icon_size = int(24 * ui_scale)
+ validation_icon_margin = int(3 * ui_scale)
+ validation_icon = BL_UI_Image(
asset_x + self.button_size - icon_size - self.button_margin - validation_icon_margin,
asset_y + self.button_size - icon_size - self.button_margin - validation_icon_margin, 0, 0)
@@ -458,20 +443,30 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
# if v_icon is not None:
# img_fp = paths.get_addon_thumbnail_path(v_icon)
# validation_icon.set_image(img_fp)
- validation_icon.text = ''
validation_icon.set_image_size((icon_size, icon_size))
validation_icon.set_image_position((0, 0))
self.validation_icons.append(validation_icon)
new_button.validation_icon = validation_icon
+
+ progress_bar = BL_UI_Widget(asset_x, asset_y + self.button_size - 3, self.button_size, 3)
+ progress_bar.bg_color = (0.0, 1.0, 0.0, 1.0)
+ new_button.progress_bar = progress_bar
+ self.progress_bars.append(progress_bar)
+ # if result['downloaded'] > 0:
+ # ui_bgl.draw_rect(x, y, int(ui_props.thumb_size * result['downloaded'] / 100.0), 2, green)
+
return new_button
def init_ui(self):
+ ui_scale = bpy.context.preferences.view.ui_scale
+
button_bg_color = (0.2, 0.2, 0.2, .1)
button_hover_color = (0.8, 0.8, 0.8, .2)
self.buttons = []
self.asset_buttons = []
self.validation_icons = []
+ self.progress_bars = []
self.widgets_panel = []
self.panel = BL_UI_Drag_Panel(0, 0, self.bar_width, self.bar_height)
@@ -490,7 +485,7 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator):
new_button = self.asset_button_init(asset_x, asset_y, button_idx)
self.asset_buttons.append(new_button)
- other_button_size = 30
+ other_button_size = int(30 * ui_scale)
self.button_close = BL_UI_Button(self.bar_width - other_button_size, -0, other_button_size, other_button_size)
self.button_close.bg_color = button_bg_color
@@ -550,6
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list