[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