Import LinuxCNC source tree
This commit is contained in:
79
lib/python/qtvcp/widgets/radio_axis_selector.py
Normal file
79
lib/python/qtvcp/widgets/radio_axis_selector.py
Normal file
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env python3
|
||||
from qtpy import QtCore, QtWidgets
|
||||
|
||||
from qtvcp.widgets.widget_baseclass import _HalWidgetBase
|
||||
from qtvcp.core import Status, Action
|
||||
from qtvcp import logger
|
||||
|
||||
# Instantiate the libraries with global reference
|
||||
# STATUS gives us status messages from linuxcnc
|
||||
# ACTION is for linuxcnc commands
|
||||
# LOG is for running code logging
|
||||
STATUS = Status()
|
||||
ACTION = Action()
|
||||
LOG = logger.getLogger(__name__)
|
||||
|
||||
# Force the log level for this module
|
||||
#LOG.setLevel(logger.DEBUG) # One of DEBUG, INFO, WARNING, ERROR, CRITICAL
|
||||
|
||||
|
||||
class RadioAxisSelector(QtWidgets.QRadioButton, _HalWidgetBase):
|
||||
def __init__(self, parent=None):
|
||||
super(RadioAxisSelector, self).__init__(parent)
|
||||
self.toggled.connect(lambda:self.btnstate(self))
|
||||
self.axis = ''
|
||||
self.joint = -1
|
||||
|
||||
def _hal_init(self):
|
||||
STATUS.connect('motion-mode-changed', lambda w,data: self.modeChanged(data))
|
||||
|
||||
def btnstate(self,b):
|
||||
if b.isChecked() == True:
|
||||
if STATUS.is_joint_mode():
|
||||
ACTION.SET_SELECTED_JOINT(self.joint)
|
||||
else:
|
||||
ACTION.SET_SELECTED_AXIS(self.axis)
|
||||
# set this without causing a STATUS message output
|
||||
# in case we are selecting an axis to un/home
|
||||
STATUS.selected_joint = self.joint
|
||||
|
||||
# change of joints mode / axis mode
|
||||
def modeChanged(self, mode):
|
||||
self.btnstate(self)
|
||||
|
||||
def setAxis(self, data):
|
||||
if data.upper() in('X','Y','Z','A','B','C','U','V','W'):
|
||||
self.axis = str(data.upper())
|
||||
def getAxis(self):
|
||||
return self.axis
|
||||
def resetAxis(self):
|
||||
self.axis = ''
|
||||
|
||||
def setJoint(self, data):
|
||||
self.joint = data
|
||||
def getJoint(self):
|
||||
return self.joint
|
||||
def resetJoint(self):
|
||||
self.joint = -1
|
||||
|
||||
axis_selection = QtCore.Property(str, getAxis, setAxis, resetAxis)
|
||||
joint_selection = QtCore.Property(int, getJoint, setJoint, resetJoint)
|
||||
|
||||
# for testing without editor:
|
||||
def main():
|
||||
import sys
|
||||
from qtpy.QtWidgets import QApplication
|
||||
app = QApplication(sys.argv)
|
||||
widget = QtWidgets.QWidget()
|
||||
layout = QtWidgets.QHBoxLayout()
|
||||
widget.setLayout(layout)
|
||||
|
||||
cb = RadioAxisSelector()
|
||||
layout.addWidget(cb)
|
||||
cb2 = RadioAxisSelector()
|
||||
layout.addWidget(cb2)
|
||||
|
||||
widget.show()
|
||||
sys.exit(app.exec())
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user