#!/usr/bin/python3

########    Craftsman toolchange        ########
####     Creator: Piet van Rensburg        #####
####     Company: Craftsman CNC            #####
####     wwww.craftsmancnc.com.au          #####
################################################

import sys, os 
import gettext, gobject
BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
gettext.install("linuxcnc", localedir=os.path.join(BASE, "share", "locale"), unicode=True)

sys.path.append('./')              
              
import linuxcnc, hal
import globals

stat = linuxcnc.stat()
lc = linuxcnc.command()

_after = None
props_set = False  

def do_change(n):
	global props_set		
	stat.poll()
	curr_line = stat.current_line

	globals.tool_change(str(curr_line))	
	globals.set_tooldata(n)
	globals.get_tooldata()
	tool_desc = globals.tool_desc
	
	if n:		
		message = "Insert tool: T" + str(n) + " - "  + tool_desc + ". Click Start when ready"
		globals.ops_message(message)
	else:
		message = "Remove the tool and click Start when ready"
		globals.ops_message(message)
	
	
	if curr_line >= 0:
		lc.abort()
		globals.ops_message(message)			
		h.changed = False
		props_set = False
		curr_line = -1
		#pass
	
	h.changed = True
	props_set = True	
	

h = hal.component("craftsman_toolchange")
h.newpin("number", hal.HAL_S32, hal.HAL_IN)
h.newpin("change", hal.HAL_BIT, hal.HAL_IN)
h.newpin("changed", hal.HAL_BIT, hal.HAL_OUT)
h.newpin("length", hal.HAL_S32, hal.HAL_IN)
h.newpin("diameter", hal.HAL_S32, hal.HAL_IN)
h.ready()


try:
	while 1:
		change = h.change
		if change and not h.changed:
			do_change(h.number)
		elif not change:
			h.changed = False
			
except KeyboardInterrupt:
    pass
