import hal_glib
import hal
import pango
import linuxcnc

class HandlerClass:
    def __init__(self, halcomp,builder,useropts):
        self.builder = builder
        self.halcomp = halcomp
        self.stat = linuxcnc.stat()
        self.jog_increment = self.builder.get_object('jog_increment')
        self.g54inch = self.builder.get_object('g54inch_jog')
        self.g54tenths = self.builder.get_object('g54tenth_jog')
        self.g54hundredths = self.builder.get_object('g54hundedth_jog')
        self.g54thousandths = self.builder.get_object('g54thousandth_jog')
        self.zw_label = self.builder.get_object('zw_label')
        self.example_trigger = hal_glib.GPin(halcomp.newpin('label-trigger', hal.HAL_BIT, hal.HAL_IN))
        self.example_trigger.connect('value-changed', self.on_label_trigger_value_changed)
        self.vac_on = self.builder.get_object('vac_on')
        self.vac_off = self.builder.get_object('vac_off')
        self.on_vacuum_state = hal_glib.GPin(halcomp.newpin('on-vacuum-state', hal.HAL_BIT, hal.HAL_IN))
        self.off_vacuum_state = hal_glib.GPin(halcomp.newpin('off-vacuum-state', hal.HAL_BIT, hal.HAL_IN))
        self.on_vacuum_state.connect('value-changed', self.on_vacuum_state_value_changed)
        self.off_vacuum_state.connect('value-changed', self.off_vacuum_state_value_changed)

        self.attr_true = pango.AttrList()       
        fg_color = pango.AttrForeground(0, 0, 65535, 0, -1)
        size = pango.AttrSize(30000, 0, -1)
        weight = pango.AttrWeight(pango.WEIGHT_BOLD, 0, -1)
        self.attr_true.insert(fg_color)
        self.attr_true.insert(size)
        self.attr_true.insert(weight)

        self.attr_false = pango.AttrList()       
        fg_color = pango.AttrForeground(0, 0, 0, 0, -1)
        self.attr_false.insert(fg_color)
        self.attr_false.insert(size)
        self.attr_false.insert(weight)
	self.work_coord_lable = self.builder.get_object('work_coord_label')
        self.work_coord_label.set_text('G54(Front)')

    def on_label_trigger_value_changed(self, pin):
        state = pin.get()
        if state:
            self.zw_label.set_attributes(self.attr_true)
            self.zw_label.set_text('ZZ')
        else:
            self.zw_label.set_attributes(self.attr_false)
            self.zw_label.set_text('ZW')

    def activ_inc(self, widget):
        if widget.get_active():
            if widget == self.g54inch: self.jog_increment.set_text('1.000')
            elif widget == self.g54tenths: self.jog_increment.set_text('0.100')
            elif widget == self.g54hundredths:  self.jog_increment.set_text('0.010')
            elif widget == self.g54thousandths: self.jog_increment.set_text('0.001')

    def on_vacuum_state_value_changed(self, pin):
        state = pin.get()
        if state:
            self.vac_on.set_active(True)
    def off_vacuum_state_value_changed(self, pin):
        state = pin.get()
        if state:
            self.vac_off.set_active(True)

# This is boiler code, required for gladevcp
def get_handlers(halcomp,builder,useropts):
    return [HandlerClass(halcomp,builder,useropts)]
