diff options
author | Vilem Duha <vilem.duha@gmail.com> | 2021-07-23 16:09:17 +0300 |
---|---|---|
committer | Vilem Duha <vilem.duha@gmail.com> | 2021-07-23 16:09:28 +0300 |
commit | 7ebbe0f3093deb78bcfe6b5c614e7419630f3568 (patch) | |
tree | 704f4702cf5349d8abf0d061743cffb715c88122 | |
parent | 0a34d11883bb9c3095c6a46739aefda86784b423 (diff) |
BlenderKit: make it clear when a filter is used
this required a new icon for filters and an update function.
-rw-r--r-- | blenderkit/__init__.py | 5 | ||||
-rw-r--r-- | blenderkit/asset_bar_op.py | 2 | ||||
-rw-r--r-- | blenderkit/icons.py | 2 | ||||
-rw-r--r-- | blenderkit/search.py | 25 | ||||
-rw-r--r-- | blenderkit/thumbnails/filter.png | bin | 0 -> 525 bytes | |||
-rw-r--r-- | blenderkit/thumbnails/filter_active.png | bin | 0 -> 525 bytes | |||
-rw-r--r-- | blenderkit/ui.py | 2 | ||||
-rw-r--r-- | blenderkit/ui_panels.py | 13 |
8 files changed, 40 insertions, 9 deletions
diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py index 7bd5fe8d..37e91a0a 100644 --- a/blenderkit/__init__.py +++ b/blenderkit/__init__.py @@ -459,8 +459,8 @@ class BlenderKitCommonSearchProps(object): default=False) own_only: BoolProperty(name="My Assets Only", description="Search only for your assets", default=False, update=search.search_update) - search_advanced: BoolProperty(name="Advanced Search Options", description="use advanced search properties", - default=False, update=search.search_update) + use_filters: BoolProperty(name="Filters are on", description="some filters are used", + default=False) search_error: BoolProperty(name="Search Error", description="last search had an error", default=False) report: StringProperty( @@ -574,6 +574,7 @@ class BlenderKitCommonSearchProps(object): default=0, min=0, max=10, update=search.search_update) + def name_update(self, context): ''' checks for name change, because it decides if whole asset has to be re-uploaded. Name is stored in the blend file and that's the reason.''' diff --git a/blenderkit/asset_bar_op.py b/blenderkit/asset_bar_op.py index 9c12b0f2..19f51682 100644 --- a/blenderkit/asset_bar_op.py +++ b/blenderkit/asset_bar_op.py @@ -605,7 +605,7 @@ class BlenderKitAssetBarOperator(BL_UI_OT_draw_operator): self.scroll_offset = min(self.scroll_offset, len(sr) - (self.wcount * self.hcount)) self.scroll_offset = max(self.scroll_offset, 0) self.update_images() - if len(sr) - self.scroll_offset < (self.wcount * self.hcount) + 10: + if len(sr) - self.scroll_offset < (self.wcount * self.hcount) + 15: self.search_more() def search_by_author(self, asset_index): diff --git a/blenderkit/icons.py b/blenderkit/icons.py index b8b86cba..09a1ba19 100644 --- a/blenderkit/icons.py +++ b/blenderkit/icons.py @@ -31,6 +31,8 @@ icons_read = { 'dumbbell.png': 'dumbbell', 'cc0.png': 'cc0', 'royalty_free.png': 'royalty_free', + 'filter.png': 'filter', + 'filter_active.png': 'filter_active', } verification_icons = { diff --git a/blenderkit/search.py b/blenderkit/search.py index 59f9f838..940375fa 100644 --- a/blenderkit/search.py +++ b/blenderkit/search.py @@ -1083,7 +1083,7 @@ def build_query_common(query, props): if props.quality_limit > 0: query["quality_gte"] = props.quality_limit - + query.update(query_common) @@ -1106,7 +1106,6 @@ def build_query_model(): # if props.free_only: # query["is_free"] = True - # if props.search_advanced: if props.search_condition != 'UNSPECIFIED': query["condition"] = props.search_condition @@ -1387,7 +1386,7 @@ def search(category='', get_next=False, author_id=''): # utils.p('searching') props.is_searching = True - page_size = min(40, ui_props.wcount * user_preferences.max_assetbar_rows) + page_size = min(30, ui_props.wcount * user_preferences.max_assetbar_rows) params = { 'scene_uuid': bpy.context.scene.get('uuid', None), @@ -1406,10 +1405,30 @@ def search(category='', get_next=False, author_id=''): props.report = 'BlenderKit searching....' +def update_filters(): + sprops = utils.get_search_props() + ui_props = bpy.context.scene.blenderkitUI + fcommon = sprops.own_only or \ + sprops.search_texture_resolution or\ + sprops.search_file_size or \ + sprops.search_procedural != 'BOTH' or \ + sprops.free_only or \ + sprops.quality_limit>0 + + if ui_props.asset_type =='MODEL': + sprops.use_filters = fcommon or \ + sprops.search_style != 'ANY' or \ + sprops.search_condition != 'UNSPECIFIED' or \ + sprops.search_design_year or \ + sprops.search_polycount + elif ui_props.asset_type == 'MATERIAL': + sprops.use_filters = fcommon + def search_update(self, context): utils.p('search updater') # if self.search_keywords != '': + update_filters() ui_props = bpy.context.scene.blenderkitUI if ui_props.down_up != 'SEARCH': ui_props.down_up = 'SEARCH' diff --git a/blenderkit/thumbnails/filter.png b/blenderkit/thumbnails/filter.png Binary files differnew file mode 100644 index 00000000..e128c35e --- /dev/null +++ b/blenderkit/thumbnails/filter.png diff --git a/blenderkit/thumbnails/filter_active.png b/blenderkit/thumbnails/filter_active.png Binary files differnew file mode 100644 index 00000000..de4fb3be --- /dev/null +++ b/blenderkit/thumbnails/filter_active.png diff --git a/blenderkit/ui.py b/blenderkit/ui.py index 5b4160c5..f402de51 100644 --- a/blenderkit/ui.py +++ b/blenderkit/ui.py @@ -1298,7 +1298,7 @@ class AssetBarOperator(bpy.types.Operator): # If there aren't any results, we need no interaction(yet) if sr is None: return {'PASS_THROUGH'} - if len(sr) - ui_props.scrolloffset < (ui_props.wcount * user_preferences.max_assetbar_rows) + 10: + if len(sr) - ui_props.scrolloffset < (ui_props.wcount * user_preferences.max_assetbar_rows) + 15: self.search_more() if event.type == 'WHEELUPMOUSE' or event.type == 'WHEELDOWNMOUSE' or event.type == 'TRACKPADPAN': diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py index f09f0b2a..d5b0e66b 100644 --- a/blenderkit/ui_panels.py +++ b/blenderkit/ui_panels.py @@ -2205,10 +2205,19 @@ def header_search_draw(self, context): layout.prop(props, "search_keywords", text="", icon='VIEWZOOM') draw_assetbar_show_hide(layout, props) layout.popover(panel="VIEW3D_PT_blenderkit_categories", text="", icon = 'OUTLINER') + + pcoll = icons.icon_collections["main"] + + if props.use_filters: + icon_id = pcoll['filter_active'].icon_id + else: + icon_id = pcoll['filter'].icon_id + if ui_props.asset_type=='MODEL': - layout.popover(panel="VIEW3D_PT_blenderkit_advanced_model_search", text="", icon = 'FILTER') + layout.popover(panel="VIEW3D_PT_blenderkit_advanced_model_search", text="", icon_value = icon_id) + elif ui_props.asset_type=='MATERIAL': - layout.popover(panel="VIEW3D_PT_blenderkit_advanced_material_search", text="", icon = 'FILTER') + layout.popover(panel="VIEW3D_PT_blenderkit_advanced_material_search", text="", icon_value = icon_id) def ui_message(title, message): |