diff options
author | Michael Haberler <git@mah.priv.at> | 2014-03-16 21:07:31 +0100 |
---|---|---|
committer | Michael Haberler <git@mah.priv.at> | 2014-03-16 21:07:31 +0100 |
commit | c09563d41b77ee26e383b7f318a9e6115531226d (patch) | |
tree | 765a3028dab2c91d4888890abe72edd41a389dab | |
parent | 0b7a94f3a2ae6de2a7ff103ef8c889972df75034 (diff) | |
download | linuxcnc-c09563d41b77ee26e383b7f318a9e6115531226d.tar.gz linuxcnc-c09563d41b77ee26e383b7f318a9e6115531226d.zip |
hal_widgets: HALIO_HSscale widget
pin changes have preference over UI-driven changes, which is needed
to retrieve the default from HAL.
goal: provide a means to connect to HAL_IO pins which act as parameters.
-rwxr-xr-x | lib/python/gladevcp/hal_python.xml | 2 | ||||
-rwxr-xr-x | lib/python/gladevcp/hal_pythonplugin.py | 1 | ||||
-rw-r--r-- | lib/python/gladevcp/hal_widgets.py | 25 |
3 files changed, 28 insertions, 0 deletions
diff --git a/lib/python/gladevcp/hal_python.xml b/lib/python/gladevcp/hal_python.xml index 96bc3d943..aca92c2c3 100755 --- a/lib/python/gladevcp/hal_python.xml +++ b/lib/python/gladevcp/hal_python.xml @@ -14,6 +14,7 @@ domain="glade-3" depends="gtk+"> <glade-widget-class name="HAL_ToggleButton" generic-name="hal_togglebutton" title="HAL_ToggleButton"/> <glade-widget-class name="HAL_RadioButton" generic-name="hal_radiobutton" title="HAL_RadioButton"/> <glade-widget-class name="HAL_HScale" generic-name="hal_hscale" title="HAL_HScale"/> + <glade-widget-class name="HALIO_HScale" generic-name="halio_hscale" title="HALIO_HScale"/> <glade-widget-class name="HAL_VScale" generic-name="hal_vscale" title="HAL_VScale"/> <glade-widget-class name="HAL_ProgressBar" generic-name="hal_progressbar" title="HAL_ProgressBar"/> <glade-widget-class name="HAL_LED" generic-name="hal_led" title="HAL LED"> @@ -125,6 +126,7 @@ domain="glade-3" depends="gtk+"> <glade-widget-class-ref name="HAL_ToggleButton"/> <glade-widget-class-ref name="HAL_RadioButton"/> <glade-widget-class-ref name="HAL_HScale"/> + <glade-widget-class-ref name="HALIO_HScale"/> <glade-widget-class-ref name="HAL_VScale"/> <glade-widget-class-ref name="HAL_ProgressBar"/> <glade-widget-class-ref name="HAL_Label"/> diff --git a/lib/python/gladevcp/hal_pythonplugin.py b/lib/python/gladevcp/hal_pythonplugin.py index 0667d3653..628861508 100755 --- a/lib/python/gladevcp/hal_pythonplugin.py +++ b/lib/python/gladevcp/hal_pythonplugin.py @@ -9,6 +9,7 @@ from hal_widgets import HAL_ProgressBar from hal_widgets import HAL_CheckButton from hal_widgets import HAL_VScale from hal_widgets import HAL_HScale +from hal_widgets import HALIO_HScale from hal_widgets import HAL_SpinButton from hal_widgets import HAL_Label diff --git a/lib/python/gladevcp/hal_widgets.py b/lib/python/gladevcp/hal_widgets.py index 55023df17..9f37a42cc 100644 --- a/lib/python/gladevcp/hal_widgets.py +++ b/lib/python/gladevcp/hal_widgets.py @@ -52,8 +52,28 @@ class _HalScaleBase(_HalWidgetBase): self.connect("value-changed", self.hal_update) def hal_update(self, *a): + self.hal_pin.set(self.get_value()) + +class _HalIOScaleBase(_HalWidgetBase): + def _hal_init(self): + self.hal_pin = self.hal.newpin(self.hal_name, hal.HAL_FLOAT, hal.HAL_IO) + self.connect("value-changed", self.hal_update) + self.hal_pin.connect('value-changed', lambda s: self.emit('hal-pin-changed', s)) + self.hal_current = self.hal_pin.get() + + def hal_update(self, *a): + hval = self.hal_pin.get() + if self.hal_current != hval: + self.hal_current = hval + self.set_value(hval) + return + wval = self.get_value() + if wval != hval: + self.hal_pin.set(wval) + + class _HalSensitiveBase(_HalWidgetBase): def _hal_init(self): self.hal_pin = self.hal.newpin(self.hal_name, hal.HAL_BIT, hal.HAL_IN) @@ -166,6 +186,11 @@ class HAL_ToggleButton(gtk.ToggleButton, _HalToggleBase): class HAL_HScale(gtk.HScale, _HalScaleBase): __gtype_name__ = "HAL_HScale" + +class HALIO_HScale(gtk.HScale, _HalIOScaleBase): + __gtype_name__ = "HALIO_HScale" + __gsignals__ = dict([hal_pin_changed_signal]) + class HAL_VScale(gtk.VScale, _HalScaleBase): __gtype_name__ = "HAL_VScale" |