UI: Add missing UV tools in the UV/Image Editor Window > Tools tab

Original Author: @xrg
Changes By @blendify

Image of patch: {F284237}
This commit is contained in:
Aaron Carlisle 2017-04-10 18:37:03 -04:00
parent 8ac7510a4d
commit 8b0fbb909b
1 changed files with 91 additions and 2 deletions

View File

@ -18,6 +18,7 @@
# <pep8 compliant>
import bpy
import math
from bpy.types import Header, Menu, Panel
from bl_ui.properties_paint_common import (
UnifiedPaintPanel,
@ -727,11 +728,73 @@ class IMAGE_PT_tools_transform_uvs(Panel, UVToolsPanel):
col.operator("transform.translate")
col.operator("transform.rotate")
col.operator("transform.resize", text="Scale")
col.separator()
col.operator("transform.shear")
class IMAGE_PT_tools_align_uvs(Panel, UVToolsPanel):
bl_label = "UV Align"
@classmethod
def poll(cls, context):
sima = context.space_data
return sima.show_uvedit and not context.tool_settings.use_uv_sculpt
def draw(self, context):
layout = self.layout
layout.operator_context = 'EXEC_REGION_WIN'
split = layout.split()
col = split.column(align=True)
col.operator("transform.mirror", text="Mirror X").constraint_axis[0] = True
col.operator("transform.mirror", text="Mirror Y").constraint_axis[1] = True
col = split.column(align=True)
col.operator("transform.rotate", text="Rotate +90°").value = math.pi / 2
col.operator("transform.rotate", text="Rotate - 90°").value = math.pi / -2
split = layout.split()
col = split.column(align=True)
col.operator("uv.align", text="Straighten").axis = 'ALIGN_S'
col.operator("uv.align", text="Straighten X").axis = 'ALIGN_T'
col.operator("uv.align", text="Straighten Y").axis = 'ALIGN_U'
col = split.column(align=True)
col.operator("uv.align", text="Align Auto").axis = 'ALIGN_AUTO'
col.operator("uv.align", text="Align X").axis = 'ALIGN_X'
col.operator("uv.align", text="Align Y").axis = 'ALIGN_Y'
class IMAGE_PT_tools_uvs(Panel, UVToolsPanel):
bl_label = "UV Tools"
@classmethod
def poll(cls, context):
sima = context.space_data
return sima.show_uvedit and not context.tool_settings.use_uv_sculpt
def draw(self, context):
layout = self.layout
col = layout.column(align=True)
row = col.row(align=True)
row.operator("uv.weld")
row.operator("uv.stitch")
col.operator("uv.remove_doubles")
col.operator("uv.average_islands_scale")
col.operator("uv.pack_islands")
col.operator("mesh.faces_mirror_uv")
col.operator("uv.minimize_stretch")
layout.label(text="UV Unwrap:")
row = layout.row(align=True)
row.operator("uv.pin").clear = False
row.operator("uv.pin", text="Unpin").clear = True
col = layout.column(align=True)
row = col.row(align=True)
row.operator("uv.mark_seam", text="Mark Seam").clear = False
row.operator("uv.mark_seam", text="Clear Seam").clear = True
col.operator("uv.seams_from_islands", text="Mark Seams from Islands")
col.operator("uv.unwrap")
class IMAGE_PT_paint(Panel, ImagePaintPanel):
bl_label = "Paint"
bl_category = "Tools"
@ -1100,6 +1163,29 @@ class IMAGE_PT_tools_mask(MASK_PT_tools, Panel):
# --- end mask ---
class IMAGE_PT_options_uvs(Panel, UVToolsPanel):
bl_label = "UV Options"
bl_category = "Options"
@classmethod
def poll(cls, context):
sima = context.space_data
return sima.show_uvedit
def draw(self, context):
layout = self.layout
sima = context.space_data
uv = sima.uv_editor
toolsettings = context.tool_settings
col = layout.column(align=True)
col.prop(toolsettings, "use_uv_sculpt")
col.prop(uv, "use_live_unwrap")
col.prop(uv, "use_snap_to_pixels")
col.prop(uv, "lock_bounds")
class ImageScopesPanel:
@classmethod
def poll(cls, context):
@ -1267,6 +1353,9 @@ classes = (
IMAGE_PT_game_properties,
IMAGE_PT_view_properties,
IMAGE_PT_tools_transform_uvs,
IMAGE_PT_tools_align_uvs,
IMAGE_PT_tools_uvs,
IMAGE_PT_options_uvs,
IMAGE_PT_paint,
IMAGE_PT_tools_brush_overlay,
IMAGE_PT_tools_brush_texture,