mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
BBIM fix Git panel polling repo on refresh (#3096)
Just scrolling Git panel shouldn't do any Git IO
This commit is contained in:
@@ -34,6 +34,10 @@ class IfcGitData:
|
|||||||
"name_ifc": cls.name_ifc(),
|
"name_ifc": cls.name_ifc(),
|
||||||
"dir_name": cls.dir_name(),
|
"dir_name": cls.dir_name(),
|
||||||
"base_name": cls.base_name(),
|
"base_name": cls.base_name(),
|
||||||
|
"working_dir": cls.working_dir(),
|
||||||
|
"untracked_files": cls.untracked_files(),
|
||||||
|
"is_detached": cls.is_detached(),
|
||||||
|
"active_branch_name": cls.active_branch_name(),
|
||||||
"is_dirty": cls.is_dirty(),
|
"is_dirty": cls.is_dirty(),
|
||||||
"commit": cls.commit(),
|
"commit": cls.commit(),
|
||||||
"current_revision": cls.current_revision(),
|
"current_revision": cls.current_revision(),
|
||||||
@@ -118,6 +122,27 @@ class IfcGitData:
|
|||||||
return os.path.basename(path_ifc)
|
return os.path.basename(path_ifc)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def working_dir(cls):
|
||||||
|
if cls.repo():
|
||||||
|
return cls.repo().working_dir
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def untracked_files(cls):
|
||||||
|
if cls.repo():
|
||||||
|
return cls.repo().untracked_files
|
||||||
|
return []
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def is_detached(cls):
|
||||||
|
if cls.repo():
|
||||||
|
return cls.repo().head.is_detached
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def active_branch_name(cls):
|
||||||
|
if cls.repo() and not cls.is_detached():
|
||||||
|
return cls.repo().active_branch.name
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_dirty(cls):
|
def is_dirty(cls):
|
||||||
if cls.repo() and cls.git_exe():
|
if cls.repo() and cls.git_exe():
|
||||||
|
|||||||
@@ -149,6 +149,8 @@ class AddTag(bpy.types.Operator):
|
|||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
IfcGitData.make_sure_is_loaded()
|
IfcGitData.make_sure_is_loaded()
|
||||||
props = context.scene.IfcGitProperties
|
props = context.scene.IfcGitProperties
|
||||||
|
if props.new_tag_name == "":
|
||||||
|
return False
|
||||||
repo = IfcGitData.data["repo"]
|
repo = IfcGitData.data["repo"]
|
||||||
if repo and (
|
if repo and (
|
||||||
not tool.IfcGit.is_valid_ref_format(props.new_tag_name)
|
not tool.IfcGit.is_valid_ref_format(props.new_tag_name)
|
||||||
@@ -194,7 +196,7 @@ class RefreshGit(bpy.types.Operator):
|
|||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
IfcGitData.make_sure_is_loaded()
|
IfcGitData.make_sure_is_loaded()
|
||||||
repo = IfcGitData.data["repo"]
|
repo = IfcGitData.data["repo"]
|
||||||
if repo != None and repo.heads:
|
if repo:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@@ -213,6 +215,12 @@ class DisplayRevision(bpy.types.Operator):
|
|||||||
bl_idname = "ifcgit.display_revision"
|
bl_idname = "ifcgit.display_revision"
|
||||||
bl_options = {"REGISTER"}
|
bl_options = {"REGISTER"}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
props = context.scene.IfcGitProperties
|
||||||
|
if props.ifcgit_commits:
|
||||||
|
return True
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
|
|
||||||
core.colourise_revision(tool.IfcGit)
|
core.colourise_revision(tool.IfcGit)
|
||||||
@@ -242,6 +250,12 @@ class SwitchRevision(bpy.types.Operator):
|
|||||||
bl_idname = "ifcgit.switch_revision"
|
bl_idname = "ifcgit.switch_revision"
|
||||||
bl_options = {"REGISTER"}
|
bl_options = {"REGISTER"}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
props = context.scene.IfcGitProperties
|
||||||
|
if props.ifcgit_commits:
|
||||||
|
return True
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
|
|
||||||
core.switch_revision(tool.IfcGit, tool.Ifc)
|
core.switch_revision(tool.IfcGit, tool.Ifc)
|
||||||
@@ -259,7 +273,8 @@ class Merge(bpy.types.Operator):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
IfcGitData.make_sure_is_loaded()
|
IfcGitData.make_sure_is_loaded()
|
||||||
if IfcGitData.data["ifcmerge_exe"]:
|
props = context.scene.IfcGitProperties
|
||||||
|
if IfcGitData.data["ifcmerge_exe"] and props.ifcgit_commits and not IfcGitData.data["is_detached"]:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@@ -318,8 +333,8 @@ class AddRemote(bpy.types.Operator):
|
|||||||
if (
|
if (
|
||||||
not repo
|
not repo
|
||||||
or not tool.IfcGit.is_valid_ref_format(props.remote_name)
|
or not tool.IfcGit.is_valid_ref_format(props.remote_name)
|
||||||
or props.remote_name in [remote.name for remote in repo.remotes]
|
|
||||||
or not props.remote_url
|
or not props.remote_url
|
||||||
|
or props.remote_name in [remote.name for remote in repo.remotes]
|
||||||
):
|
):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from bpy.props import (
|
|||||||
IntProperty,
|
IntProperty,
|
||||||
EnumProperty,
|
EnumProperty,
|
||||||
)
|
)
|
||||||
from blenderbim.bim.module.ifcgit.data import IfcGitData, refresh
|
from blenderbim.bim.module.ifcgit.data import IfcGitData
|
||||||
|
|
||||||
|
|
||||||
def git_branches(self, context):
|
def git_branches(self, context):
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import bpy
|
import bpy
|
||||||
import time
|
import time
|
||||||
from blenderbim.bim.module.ifcgit.data import IfcGitData, refresh
|
from blenderbim.bim.module.ifcgit.data import IfcGitData
|
||||||
|
|
||||||
|
|
||||||
class IFCGIT_PT_panel(bpy.types.Panel):
|
class IFCGIT_PT_panel(bpy.types.Panel):
|
||||||
@@ -34,8 +34,8 @@ class IFCGIT_PT_panel(bpy.types.Panel):
|
|||||||
if path_ifc:
|
if path_ifc:
|
||||||
if IfcGitData.data["repo"]:
|
if IfcGitData.data["repo"]:
|
||||||
name_ifc = IfcGitData.data["name_ifc"]
|
name_ifc = IfcGitData.data["name_ifc"]
|
||||||
row.label(text=IfcGitData.data["repo"].working_dir, icon="SYSTEM")
|
row.label(text=IfcGitData.data["working_dir"], icon="SYSTEM")
|
||||||
if name_ifc in IfcGitData.data["repo"].untracked_files:
|
if name_ifc in IfcGitData.data["untracked_files"]:
|
||||||
row.operator(
|
row.operator(
|
||||||
"ifcgit.addfile",
|
"ifcgit.addfile",
|
||||||
text="Add '" + name_ifc + "' to repository",
|
text="Add '" + name_ifc + "' to repository",
|
||||||
@@ -79,7 +79,7 @@ class IFCGIT_PT_panel(bpy.types.Panel):
|
|||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.prop(props, "commit_message")
|
row.prop(props, "commit_message")
|
||||||
|
|
||||||
if IfcGitData.data["repo"].head.is_detached:
|
if IfcGitData.data["is_detached"]:
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.label(text="HEAD is detached, commit will create a branch", icon="ERROR")
|
row.label(text="HEAD is detached, commit will create a branch", icon="ERROR")
|
||||||
row.prop(props, "new_branch_name")
|
row.prop(props, "new_branch_name")
|
||||||
@@ -88,10 +88,10 @@ class IFCGIT_PT_panel(bpy.types.Panel):
|
|||||||
row.operator("ifcgit.commit_changes", icon="GREASEPENCIL")
|
row.operator("ifcgit.commit_changes", icon="GREASEPENCIL")
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
if IfcGitData.data["repo"].head.is_detached:
|
if IfcGitData.data["is_detached"]:
|
||||||
row.label(text="Working branch: Detached HEAD")
|
row.label(text="Working branch: Detached HEAD")
|
||||||
else:
|
else:
|
||||||
row.label(text="Working branch: " + IfcGitData.data["repo"].active_branch.name)
|
row.label(text="Working branch: " + IfcGitData.data["active_branch_name"])
|
||||||
|
|
||||||
grouped = layout.row()
|
grouped = layout.row()
|
||||||
column = grouped.column()
|
column = grouped.column()
|
||||||
|
|||||||
@@ -57,7 +57,8 @@ def push(ifcgit, repo, remote_name, operator):
|
|||||||
|
|
||||||
|
|
||||||
def refresh_revision_list(ifcgit, repo, ifc):
|
def refresh_revision_list(ifcgit, repo, ifc):
|
||||||
ifcgit.refresh_revision_list(ifc.get_path())
|
if repo.heads:
|
||||||
|
ifcgit.refresh_revision_list(ifc.get_path())
|
||||||
|
|
||||||
|
|
||||||
def colourise_revision(ifcgit):
|
def colourise_revision(ifcgit):
|
||||||
|
|||||||
Reference in New Issue
Block a user