SVN: UX improvements #136
@ -396,6 +396,7 @@ class SVN_OT_resolve_conflict(May_Modifiy_Current_Blend, Operator):
|
|||||||
col.alert = True
|
col.alert = True
|
||||||
col.label(text="Choose which version of the file to keep.")
|
col.label(text="Choose which version of the file to keep.")
|
||||||
col.row().prop(self, 'resolve_method', expand=True)
|
col.row().prop(self, 'resolve_method', expand=True)
|
||||||
|
col.separator()
|
||||||
if self.resolve_method == 'mine-full':
|
if self.resolve_method == 'mine-full':
|
||||||
col.label(text="Local changes will be kept.")
|
col.label(text="Local changes will be kept.")
|
||||||
col.label(
|
col.label(
|
||||||
|
@ -40,6 +40,8 @@ class SVN_OT_commit(SVN_Operator, Popup_Operator, Operator):
|
|||||||
bl_options = {'INTERNAL'}
|
bl_options = {'INTERNAL'}
|
||||||
bl_property = "first_line" # Focus the text input box
|
bl_property = "first_line" # Focus the text input box
|
||||||
|
|
||||||
|
popup_width = 600
|
||||||
|
|
||||||
# The first line of the commit message needs to be an operator property in order
|
# The first line of the commit message needs to be an operator property in order
|
||||||
# for us to be able to focus the input box automatically when the window pops up
|
# for us to be able to focus the input box automatically when the window pops up
|
||||||
# (see bl_property above)
|
# (see bl_property above)
|
||||||
@ -92,7 +94,8 @@ class SVN_OT_commit(SVN_Operator, Popup_Operator, Operator):
|
|||||||
for f in repo.external_files:
|
for f in repo.external_files:
|
||||||
f.include_in_commit = False
|
f.include_in_commit = False
|
||||||
for f in self.get_committable_files(context):
|
for f in self.get_committable_files(context):
|
||||||
f.include_in_commit = True
|
if not f.will_conflict:
|
||||||
|
f.include_in_commit = True
|
||||||
|
|
||||||
return super().invoke(context, event)
|
return super().invoke(context, event)
|
||||||
|
|
||||||
@ -108,20 +111,30 @@ class SVN_OT_commit(SVN_Operator, Popup_Operator, Operator):
|
|||||||
row.label(text="Status")
|
row.label(text="Status")
|
||||||
for file in files:
|
for file in files:
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.prop(file, "include_in_commit", text=file.name)
|
split = row.split()
|
||||||
|
checkbox_ui = split.row()
|
||||||
|
status_ui = split.row()
|
||||||
|
checkbox_ui.prop(file, "include_in_commit", text=file.name)
|
||||||
text = file.status_name
|
text = file.status_name
|
||||||
icon = file.status_icon
|
icon = file.status_icon
|
||||||
if file == repo.current_blend_file and self.is_file_really_dirty:
|
if file.will_conflict:
|
||||||
split = row.split(factor=0.7)
|
# We don't want to conflict-resolve during a commit, it's
|
||||||
row = split.row()
|
# confusing. User should resolve this as a separate step.
|
||||||
row.alert = True
|
checkbox_ui.enabled = False
|
||||||
|
text = "Conflicting"
|
||||||
|
status_ui.alert = True
|
||||||
|
icon = 'ERROR'
|
||||||
|
elif file == repo.current_blend_file and self.is_file_really_dirty:
|
||||||
|
split = status_ui.split(factor=0.7)
|
||||||
|
status_ui = split.row()
|
||||||
|
status_ui.alert = True
|
||||||
text += " but not saved!"
|
text += " but not saved!"
|
||||||
icon = 'ERROR'
|
icon = 'ERROR'
|
||||||
op_row = split.row()
|
op_row = split.row()
|
||||||
op_row.alignment = 'LEFT'
|
op_row.alignment = 'LEFT'
|
||||||
op_row.operator('svn.save_during_commit',
|
op_row.operator('svn.save_during_commit',
|
||||||
icon='FILE_BLEND', text="Save")
|
icon='FILE_BLEND', text="Save")
|
||||||
row.label(text=text, icon=icon)
|
status_ui.label(text=text, icon=icon)
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.label(text="Commit message:")
|
row.label(text="Commit message:")
|
||||||
|
@ -48,6 +48,10 @@ class SVN_file(PropertyGroup):
|
|||||||
default="none",
|
default="none",
|
||||||
options=set()
|
options=set()
|
||||||
)
|
)
|
||||||
|
@property
|
||||||
|
def will_conflict(self):
|
||||||
|
return self.status != 'normal' and self.repos_status != 'none'
|
||||||
|
|
||||||
status_prediction_type: EnumProperty(
|
status_prediction_type: EnumProperty(
|
||||||
name="Status Predicted By Process",
|
name="Status Predicted By Process",
|
||||||
items=[
|
items=[
|
||||||
@ -374,6 +378,7 @@ class SVN_repository(PropertyGroup):
|
|||||||
return i, log
|
return i, log
|
||||||
|
|
||||||
def get_latest_revision_of_file(self, svn_path: str) -> int:
|
def get_latest_revision_of_file(self, svn_path: str) -> int:
|
||||||
|
"""Return the revision number of the last log entry that affects the given file."""
|
||||||
svn_path = str(svn_path)
|
svn_path = str(svn_path)
|
||||||
for log in reversed(self.log):
|
for log in reversed(self.log):
|
||||||
for changed_file in log.changed_files:
|
for changed_file in log.changed_files:
|
||||||
|
Loading…
Reference in New Issue
Block a user