Update
This commit is contained in:
57
2023/scripts/rigging_tools/ngskintools2/ui/action.py
Normal file
57
2023/scripts/rigging_tools/ngskintools2/ui/action.py
Normal file
@@ -0,0 +1,57 @@
|
||||
from ngSkinTools2 import signal
|
||||
from ngSkinTools2.api.python_compatibility import Object
|
||||
from ngSkinTools2.api.session import Session
|
||||
|
||||
|
||||
class Action(Object):
|
||||
name = "Action"
|
||||
tooltip = ""
|
||||
checkable = False
|
||||
|
||||
def __init__(self, session):
|
||||
self.session = session # type: Session
|
||||
|
||||
def run(self):
|
||||
pass
|
||||
|
||||
def enabled(self):
|
||||
return True
|
||||
|
||||
def checked(self):
|
||||
return False
|
||||
|
||||
def run_if_enabled(self):
|
||||
if self.enabled():
|
||||
self.run()
|
||||
|
||||
def update_on_signals(self):
|
||||
return []
|
||||
|
||||
def as_qt_action(self, parent):
|
||||
from ngSkinTools2.ui import actions
|
||||
|
||||
result = actions.define_action(parent, self.name, callback=self.run_if_enabled, tooltip=self.tooltip)
|
||||
result.setCheckable(self.checkable)
|
||||
|
||||
def update():
|
||||
result.setEnabled(self.enabled())
|
||||
if self.checkable:
|
||||
result.setChecked(self.checked())
|
||||
|
||||
signal.on(*self.update_on_signals(), qtParent=parent)(update)
|
||||
|
||||
update()
|
||||
return result
|
||||
|
||||
|
||||
def qt_action(action_class, session, parent):
|
||||
"""
|
||||
Wrap provided action_class into a QT action
|
||||
"""
|
||||
return action_class(session).as_qt_action(parent)
|
||||
|
||||
|
||||
def do_action_hotkey(action_class):
|
||||
from ngSkinTools2.api import session
|
||||
|
||||
action_class(session.session).run_if_enabled()
|
||||
Reference in New Issue
Block a user