Update
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
from ngSkinTools2 import api, signal
|
||||
from ngSkinTools2.api import Layer, PasteOperation
|
||||
from ngSkinTools2.api.session import Session
|
||||
|
||||
|
||||
def action_copy_cut(session, parent, cut):
|
||||
"""
|
||||
:type session: Session
|
||||
:type parent: PySide2.QtWidgets.QWidget
|
||||
:type cut: bool
|
||||
"""
|
||||
from ngSkinTools2.ui import actions
|
||||
|
||||
def cut_copy_callback():
|
||||
if session.state.selectedSkinCluster is None:
|
||||
return
|
||||
if session.state.currentLayer.layer is None:
|
||||
return
|
||||
influences = session.state.currentLayer.layer.paint_targets
|
||||
operation = api.copy_weights # type: Callable[[Layer, list], None]
|
||||
if cut:
|
||||
operation = api.cut_weights
|
||||
|
||||
operation(session.state.currentLayer.layer, influences)
|
||||
|
||||
operation_name = "Cut" if cut else "Copy"
|
||||
result = actions.define_action(parent, operation_name + " weights to clipboard", callback=cut_copy_callback)
|
||||
|
||||
@signal.on(session.events.currentLayerChanged, session.events.currentInfluenceChanged, qtParent=parent)
|
||||
def on_selection_changed():
|
||||
layer = session.state.currentLayer.layer
|
||||
result.setEnabled(layer is not None and len(layer.paint_targets) > 0)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def action_paste(session, parent, operation):
|
||||
"""
|
||||
:type session: Session
|
||||
:type parent: PySide2.QtWidgets.QWidget
|
||||
:type cut: bool
|
||||
"""
|
||||
from ngSkinTools2.ui import actions
|
||||
|
||||
def paste_callback():
|
||||
if session.state.currentLayer.layer is None:
|
||||
return
|
||||
influences = session.state.currentLayer.layer.paint_targets
|
||||
api.paste_weights(session.state.currentLayer.layer, operation, influences=influences)
|
||||
|
||||
labels = {
|
||||
PasteOperation.add: 'Paste weights (add to existing)',
|
||||
PasteOperation.subtract: 'Paste weight (subtract from existing)',
|
||||
PasteOperation.replace: 'Paste weights (replace existing)',
|
||||
}
|
||||
|
||||
result = actions.define_action(parent, labels[operation], callback=paste_callback)
|
||||
result.setToolTip("Paste previously copied weights from clipboard")
|
||||
|
||||
@signal.on(session.events.currentLayerChanged)
|
||||
def on_selection_changed():
|
||||
result.setEnabled(session.state.currentLayer.layer is not None)
|
||||
|
||||
return result
|
||||
Reference in New Issue
Block a user