mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-22 23:29:59 +00:00
blenderbim addon updater accommodations
This commit is contained in:
@@ -36,9 +36,11 @@ if sys.modules.get("bpy", None):
|
|||||||
# This is 3 levels deep as required by the static RPATH of ../../ from dependencies taken from Anaconda
|
# This is 3 levels deep as required by the static RPATH of ../../ from dependencies taken from Anaconda
|
||||||
site.addsitedir(os.path.join(os.path.dirname(os.path.realpath(__file__)), "libs", "site", "packages"))
|
site.addsitedir(os.path.join(os.path.dirname(os.path.realpath(__file__)), "libs", "site", "packages"))
|
||||||
|
|
||||||
|
import blenderbim.addon_updater_ops
|
||||||
import blenderbim.bim
|
import blenderbim.bim
|
||||||
|
|
||||||
def register():
|
def register():
|
||||||
|
blenderbim.addon_updater_ops.register(bl_info)
|
||||||
blenderbim.bim.register()
|
blenderbim.bim.register()
|
||||||
|
|
||||||
def unregister():
|
def unregister():
|
||||||
|
|||||||
@@ -1741,4 +1741,4 @@ class GitlabEngine:
|
|||||||
# should be what's imported to other files
|
# should be what's imported to other files
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
Updater = SingletonUpdater()
|
Updater = SingletonUpdater()
|
||||||
@@ -72,7 +72,7 @@ except Exception as e:
|
|||||||
# not match and have errors. Must be all lowercase and no spaces! Should also
|
# not match and have errors. Must be all lowercase and no spaces! Should also
|
||||||
# be unique among any other addons that could exist (using this updater code),
|
# be unique among any other addons that could exist (using this updater code),
|
||||||
# to avoid clashes in operator registration.
|
# to avoid clashes in operator registration.
|
||||||
updater.addon = "addon_updater_demo"
|
updater.addon = "blenderbim"
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
@@ -1284,6 +1284,12 @@ def skip_tag_function(self, tag):
|
|||||||
# In all other cases, allow showing the tag for updating/reverting.
|
# In all other cases, allow showing the tag for updating/reverting.
|
||||||
# To simply and always show all tags, this return False could be moved
|
# To simply and always show all tags, this return False could be moved
|
||||||
# to the start of the function definition so all tags are allowed.
|
# to the start of the function definition so all tags are allowed.
|
||||||
|
if not tag['name'].startswith('blenderbim-'):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
version_number = tag['name'].split('-', 1)[1]
|
||||||
|
tag['name'] = 'v0.0.%s' % version_number
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
@@ -1295,7 +1301,15 @@ def select_link_function(self, tag):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# -- Default, universal case (and is the only option for GitLab/Bitbucket)
|
# -- Default, universal case (and is the only option for GitLab/Bitbucket)
|
||||||
link = tag["zipball_url"]
|
# link = tag["zipball_url"]
|
||||||
|
|
||||||
|
# TODO: remove requests dependency?
|
||||||
|
# TODO: get repo name procedurally
|
||||||
|
# TODO: figure platform
|
||||||
|
tag_name = tag['name']
|
||||||
|
import requests
|
||||||
|
json_data = requests.get('https://api.github.com/repos/Ifcopenshell/Ifcopenshell/releases').json()
|
||||||
|
download_url = [release for release in json_data if release['tag_name'] == tag_name][0]['assets'][0]['browser_download_url']
|
||||||
|
|
||||||
# -- Example: select the first (or only) asset instead source code --
|
# -- Example: select the first (or only) asset instead source code --
|
||||||
# if "assets" in tag and "browser_download_url" in tag["assets"][0]:
|
# if "assets" in tag and "browser_download_url" in tag["assets"][0]:
|
||||||
@@ -1313,7 +1327,7 @@ def select_link_function(self, tag):
|
|||||||
# elif platform.system() == "Linux":
|
# elif platform.system() == "Linux":
|
||||||
# link = [asset for asset in tag["assets"] if 'linux' in asset][0]
|
# link = [asset for asset in tag["assets"] if 'linux' in asset][0]
|
||||||
|
|
||||||
return link
|
return download_url
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
@@ -1353,20 +1367,22 @@ def register(bl_info):
|
|||||||
updater.private_token = None # "tokenstring"
|
updater.private_token = None # "tokenstring"
|
||||||
|
|
||||||
# Choose your own username, must match website (not needed for GitLab).
|
# Choose your own username, must match website (not needed for GitLab).
|
||||||
updater.user = "cgcookie"
|
updater.user = "IfcOpenShell"
|
||||||
|
|
||||||
# Choose your own repository, must match git name for GitHUb and Bitbucket,
|
# Choose your own repository, must match git name for GitHUb and Bitbucket,
|
||||||
# for GitLab use project ID (numbers only).
|
# for GitLab use project ID (numbers only).
|
||||||
updater.repo = "blender-addon-updater"
|
updater.repo = "IfcOpenShell"
|
||||||
|
|
||||||
# updater.addon = # define at top of module, MUST be done first
|
# updater.addon = # define at top of module, MUST be done first
|
||||||
|
|
||||||
# Website for manual addon download, optional but recommended to set.
|
# Website for manual addon download, optional but recommended to set.
|
||||||
updater.website = "https://github.com/CGCookie/blender-addon-updater/"
|
updater.website = "https://github.com/IfcOpenShell/IfcOpenShell/"
|
||||||
|
|
||||||
# Addon subfolder path.
|
# Addon subfolder path.
|
||||||
# "sample/path/to/addon"
|
# "sample/path/to/addon"
|
||||||
# default is "" or None, meaning root
|
# default is "" or None, meaning root
|
||||||
|
# We leave this empty as we redefine `select_link_function`
|
||||||
|
# and will download the zip with addon, not the release source code
|
||||||
updater.subfolder_path = ""
|
updater.subfolder_path = ""
|
||||||
|
|
||||||
# Used to check/compare versions.
|
# Used to check/compare versions.
|
||||||
@@ -1535,4 +1551,4 @@ def unregister():
|
|||||||
ran_update_success_popup = False
|
ran_update_success_popup = False
|
||||||
|
|
||||||
global ran_background_check
|
global ran_background_check
|
||||||
ran_background_check = False
|
ran_background_check = False
|
||||||
@@ -21,7 +21,7 @@ from blenderbim.bim.helper import prop_with_search
|
|||||||
from bpy.types import Panel, UIList
|
from bpy.types import Panel, UIList
|
||||||
from blenderbim.bim.ifc import IfcStore
|
from blenderbim.bim.ifc import IfcStore
|
||||||
from blenderbim.bim.module.project.data import ProjectData
|
from blenderbim.bim.module.project.data import ProjectData
|
||||||
|
import blenderbim.addon_updater_ops
|
||||||
|
|
||||||
class BIM_PT_project(Panel):
|
class BIM_PT_project(Panel):
|
||||||
bl_label = "IFC Project"
|
bl_label = "IFC Project"
|
||||||
@@ -166,6 +166,9 @@ class BIM_PT_project(Panel):
|
|||||||
row.operator("bim.unload_project", text="", icon="X")
|
row.operator("bim.unload_project", text="", icon="X")
|
||||||
|
|
||||||
def draw_create_project_ui(self, context):
|
def draw_create_project_ui(self, context):
|
||||||
|
blenderbim.addon_updater_ops.check_for_update_background()
|
||||||
|
blenderbim.addon_updater_ops.update_notice_box_ui(self, context)
|
||||||
|
|
||||||
props = context.scene.BIMProperties
|
props = context.scene.BIMProperties
|
||||||
pprops = context.scene.BIMProjectProperties
|
pprops = context.scene.BIMProjectProperties
|
||||||
prop_with_search(self.layout, pprops, "export_schema")
|
prop_with_search(self.layout, pprops, "export_schema")
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ from ifcopenshell.util.doc import (
|
|||||||
get_attribute_doc,
|
get_attribute_doc,
|
||||||
)
|
)
|
||||||
from . import ifc
|
from . import ifc
|
||||||
|
import blenderbim.addon_updater_ops
|
||||||
import blenderbim.tool as tool
|
import blenderbim.tool as tool
|
||||||
from blenderbim.bim.helper import IfcHeaderExtractor
|
from blenderbim.bim.helper import IfcHeaderExtractor
|
||||||
from blenderbim.bim.prop import Attribute
|
from blenderbim.bim.prop import Attribute
|
||||||
|
|
||||||
|
|
||||||
class IFCFileSelector:
|
class IFCFileSelector:
|
||||||
def is_existing_ifc_file(self, filepath=None):
|
def is_existing_ifc_file(self, filepath=None):
|
||||||
if filepath is None:
|
if filepath is None:
|
||||||
@@ -123,6 +123,40 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences):
|
|||||||
)
|
)
|
||||||
lock_grids_on_import: BoolProperty(name="Should Lock Grids By Default", default=True)
|
lock_grids_on_import: BoolProperty(name="Should Lock Grids By Default", default=True)
|
||||||
|
|
||||||
|
# addon updater preferences from `__init__`, be sure to copy all of them
|
||||||
|
auto_check_update : bpy.props.BoolProperty(
|
||||||
|
name = "Auto-check for Update",
|
||||||
|
description = "If enabled, auto-check for updates using an interval",
|
||||||
|
default = False,
|
||||||
|
)
|
||||||
|
|
||||||
|
updater_interval_months : bpy.props.IntProperty(
|
||||||
|
name='Months',
|
||||||
|
description = "Number of months between checking for updates",
|
||||||
|
default=0,
|
||||||
|
min=0
|
||||||
|
)
|
||||||
|
updater_interval_days : bpy.props.IntProperty(
|
||||||
|
name='Days',
|
||||||
|
description = "Number of days between checking for updates",
|
||||||
|
default=7,
|
||||||
|
min=0,
|
||||||
|
)
|
||||||
|
updater_interval_hours : bpy.props.IntProperty(
|
||||||
|
name='Hours',
|
||||||
|
description = "Number of hours between checking for updates",
|
||||||
|
default=0,
|
||||||
|
min=0,
|
||||||
|
max=23
|
||||||
|
)
|
||||||
|
updater_interval_minutes : bpy.props.IntProperty(
|
||||||
|
name='Minutes',
|
||||||
|
description = "Number of minutes between checking for updates",
|
||||||
|
default=0,
|
||||||
|
min=0,
|
||||||
|
max=59
|
||||||
|
)
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
@@ -187,6 +221,8 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences):
|
|||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator("bim.configure_visibility")
|
row.operator("bim.configure_visibility")
|
||||||
|
|
||||||
|
blenderbim.addon_updater_ops.update_settings_ui(self, context)
|
||||||
|
|
||||||
|
|
||||||
def ifc_units(self, context):
|
def ifc_units(self, context):
|
||||||
scene = context.scene
|
scene = context.scene
|
||||||
|
|||||||
Reference in New Issue
Block a user