def draw(self, context): s = context.scene ui_props = s.blenderkitUI user_preferences = bpy.context.preferences.addons[ 'blenderkit'].preferences wm = bpy.context.window_manager layout = self.layout # layout.prop_tabs_enum(ui_props, "asset_type", icon_only = True) row = layout.row() #row.scale_x = 1.6 #row.scale_y = 1.6 # row.prop(ui_props, 'down_up', expand=True, icon_only=False) # row.label(text='') #row = row.split().row() #layout.alert = True #layout.alignment = 'CENTER' #row = layout.row(align = True) #split = row.split(factor=.5) #row.prop(ui_props, 'asset_type', expand=True, icon_only=True) #row = layout.column(align = False) layout.prop(ui_props, 'asset_type', expand=False, text='') w = context.region.width if user_preferences.login_attempt: draw_login_progress(layout) return if len(user_preferences.api_key ) < 20 and user_preferences.asset_counter > 20: if user_preferences.enable_oauth: draw_login_buttons(layout) else: op = layout.operator("wm.url_open", text="Get your API Key", icon='QUESTION') op.url = paths.BLENDERKIT_SIGNUP_URL layout.label(text='Paste your API Key:') layout.prop(user_preferences, 'api_key', text='') layout.separator() if bpy.data.filepath == '': layout.alert = True label_multiline(layout, text="It's better to save your file first.", width=w) layout.alert = False layout.separator() if ui_props.down_up == 'SEARCH': if ui_props.asset_type == 'MODEL': # noinspection PyCallByClass draw_panel_model_search(self, context) if ui_props.asset_type == 'SCENE': # noinspection PyCallByClass draw_panel_scene_search(self, context) elif ui_props.asset_type == 'MATERIAL': draw_panel_material_search(self, context) elif ui_props.asset_type == 'BRUSH': if context.sculpt_object or context.image_paint_object: # noinspection PyCallByClass draw_panel_brush_search(self, context) else: label_multiline(layout, text='switch to paint or sculpt mode.', width=context.region.width) return elif ui_props.down_up == 'UPLOAD': if not ui_props.assetbar_on: text = 'Show asset preview - ;' else: text = 'Hide asset preview - ;' op = layout.operator('view3d.blenderkit_asset_bar', text=text, icon='EXPORT') op.keep_running = False op.do_search = False e = s.render.engine if e not in ('CYCLES', 'BLENDER_EEVEE'): rtext = 'Only Cycles and EEVEE render engines are currently supported. ' \ 'Please use Cycles for all assets you upload to BlenderKit.' label_multiline(layout, rtext, icon='ERROR', width=w) return if ui_props.asset_type == 'MODEL': # label_multiline(layout, "Uploaded models won't be available in b2.79", icon='ERROR') if bpy.context.view_layer.objects.active is not None: draw_panel_model_upload(self, context) else: layout.label(text='selet object to upload') elif ui_props.asset_type == 'SCENE': draw_panel_scene_upload(self, context) elif ui_props.asset_type == 'MATERIAL': # label_multiline(layout, "Uploaded materials won't be available in b2.79", icon='ERROR') if bpy.context.view_layer.objects.active is not None and bpy.context.active_object.active_material is not None: draw_panel_material_upload(self, context) else: label_multiline( layout, text='select object with material to upload materials', width=w) elif ui_props.asset_type == 'BRUSH': if context.sculpt_object or context.image_paint_object: draw_panel_brush_upload(self, context) else: layout.label(text='switch to paint or sculpt mode.') elif ui_props.down_up == 'RATING': # the poll functions didn't work here, don't know why. if ui_props.asset_type == 'MODEL': # TODO improve poll here to parenting structures if bpy.context.view_layer.objects.active is not None and bpy.context.active_object.get( 'asset_data') != None: ad = bpy.context.active_object.get('asset_data') layout.label(text=ad['name']) draw_panel_model_rating(self, context) if ui_props.asset_type == 'MATERIAL': if bpy.context.view_layer.objects.active is not None and \ bpy.context.active_object.active_material is not None and \ bpy.context.active_object.active_material.blenderkit.asset_base_id != '': layout.label(text=bpy.context.active_object. active_material.blenderkit.name + ' :') # noinspection PyCallByClass draw_panel_material_ratings(self, context) if ui_props.asset_type == 'BRUSH': if context.sculpt_object or context.image_paint_object: props = utils.get_brush_props(context) if props.asset_base_id != '': layout.label(text=props.name + ' :') # noinspection PyCallByClass draw_panel_brush_ratings(self, context) if ui_props.asset_type == 'TEXTURE': layout.label(text='not yet implemented')
def draw(self, context): s = context.scene ui_props = s.blenderkitUI user_preferences = bpy.context.preferences.addons['blenderkit'].preferences wm = bpy.context.window_manager layout = self.layout row = layout.row() # row.prop(ui_props, 'down_up', expand=True, icon_only=True) # row.label(text='') row = row.split().row() row.prop(ui_props, 'asset_type', expand=True, icon_only=True) w = context.region.width if user_preferences.login_attempt: layout.label(text='Login through browser') layout.label(text='in progress.') layout.operator("wm.blenderkit_login_cancel", text="Cancel", icon='CANCEL') return if len(user_preferences.api_key) < 20 and user_preferences.asset_counter > 20: if user_preferences.enable_oauth: draw_login_buttons(layout) else: op = layout.operator("wm.url_open", text="Get your API Key", icon='QUESTION') op.url = paths.BLENDERKIT_SIGNUP_URL layout.label(text='Paste your API Key:') layout.prop(user_preferences, 'api_key', text='') layout.separator() if bpy.data.filepath == '': label_multiline(layout, text="It's better to save the file first.", width=w) layout.separator() if wm.get('bkit_update'): label_multiline(layout, text="New version available!", icon='INFO', width=w) layout.operator("wm.url_open", text="Get new version", icon='URL').url = paths.BLENDERKIT_ADDON_FILE_URL layout.separator() layout.separator() layout.separator() if ui_props.down_up == 'SEARCH': # global assetbar_on if not ui_props.assetbar_on: icon = 'EXPORT' text = 'Show AssetBar - ;' row = layout.row() sr = bpy.context.scene.get('search results') if sr != None: icon = 'RESTRICT_VIEW_OFF' row.scale_y = 1 text = 'Show Assetbar to see %i results - ;' % len(sr) op = row.operator('view3d.blenderkit_asset_bar', text=text, icon=icon) else: op = layout.operator('view3d.blenderkit_asset_bar', text='Hide AssetBar - ;', icon='EXPORT') op.keep_running = False op.do_search = False if ui_props.asset_type == 'MODEL': # noinspection PyCallByClass draw_panel_model_search(self, context) if ui_props.asset_type == 'SCENE': # noinspection PyCallByClass draw_panel_scene_search(self, context) elif ui_props.asset_type == 'MATERIAL': draw_panel_material_search(self, context) elif ui_props.asset_type == 'BRUSH': if context.sculpt_object or context.image_paint_object: # noinspection PyCallByClass draw_panel_brush_search(self, context) else: label_multiline(layout, text='switch to paint or sculpt mode.', width=context.region.width) return elif ui_props.down_up == 'UPLOAD': if not ui_props.assetbar_on: text = 'Show asset preview - ;' else: text = 'Hide asset preview - ;' op = layout.operator('view3d.blenderkit_asset_bar', text=text, icon='EXPORT') op.keep_running = False op.do_search = False e = s.render.engine if e not in ('CYCLES', 'BLENDER_EEVEE'): rtext = 'Only Cycles and EEVEE render engines are currently supported. ' \ 'Please use Cycles for all assets you upload to BlenderKit.' label_multiline(layout, rtext, icon='ERROR', width=w) return; if ui_props.asset_type == 'MODEL': # label_multiline(layout, "Uploaded models won't be available in b2.79", icon='ERROR') if bpy.context.active_object is not None: draw_panel_model_upload(self, context) else: layout.label(text='selet object to upload') elif ui_props.asset_type == 'SCENE': draw_panel_scene_upload(self, context) elif ui_props.asset_type == 'MATERIAL': # label_multiline(layout, "Uploaded materials won't be available in b2.79", icon='ERROR') if bpy.context.active_object is not None and bpy.context.active_object.active_material is not None: draw_panel_material_upload(self, context) else: label_multiline(layout, text='select object with material to upload materials', width=w) elif ui_props.asset_type == 'BRUSH': if context.sculpt_object or context.image_paint_object: draw_panel_brush_upload(self, context) else: layout.label(text='switch to paint or sculpt mode.') elif ui_props.down_up == 'RATING': # the poll functions didn't work here, don't know why. if ui_props.asset_type == 'MODEL': # TODO improve poll here to parenting structures if bpy.context.active_object is not None and bpy.context.active_object.get('asset_data') != None: ad = bpy.context.active_object.get('asset_data') layout.label(text=ad['name']) draw_panel_model_rating(self, context) if ui_props.asset_type == 'MATERIAL': if bpy.context.active_object is not None and \ bpy.context.active_object.active_material is not None and \ bpy.context.active_object.active_material.blenderkit.asset_base_id != '': layout.label(text=bpy.context.active_object.active_material.blenderkit.name + ' :') # noinspection PyCallByClass draw_panel_material_ratings(self, context) if ui_props.asset_type == 'BRUSH': if context.sculpt_object or context.image_paint_object: props = utils.get_brush_props(context) if props.asset_base_id != '': layout.label(text=props.name + ' :') # noinspection PyCallByClass draw_panel_brush_ratings(self, context) if ui_props.asset_type == 'TEXTURE': layout.label(text='not yet implemented')