from gladevcp.core import Info, Action

ACTION = Action()
INFO = Info()

def get_factor():
	f = open("/home/scsmith1/linuxcnc/configs/inMill/gvcp_debug.log","a")
	f.write("Calling get_factor:\n");

	factor = 1        #inches

	if (INFO.MACHINE_IS_METRIC):
		factor = 25.4 #metric

	f.write("\tfactor: %f\n", factor)
	f.close()

	return (factor)
		
class HandlerClass:

	def on_destroy(self,obj,data=None):
		f = open("/home/scsmith1/linuxcnc/configs/inMill/gvcp_debug.log","a")
		f.write("Calling on_destroy:\n");
		
		print("on_destroy, combobox active=%d" %(self.combo.get_active()))
		
		f.write("\tDestroy HAL component and exit\n")
		f.close()
		
		self.halcomp.exit() # avoid lingering HAL component
		Gtk.main_quit()

	def on_changed(self, combobox, data=None):
		f = open("/home/scsmith1/linuxcnc/configs/inMill/gvcp_debug.log","a")
		f.write("Calling on_changed:\n")
		
		model = combobox.get_model()
		index = combobox.get_active()
		
		f.write("\tOffset: ", model[index][0], "\nValue: ", model[index][1],"\nIndex: ",index)
		
		if (model[index][1]):
			f.write("\tSetting coordinate system to: %s\n", model[index][0])
			f.write("\tand zeroing the offset\n")
#			self.execute(model[index][0])
#			ACTION.ZERO_G5X_OFFSET(model[index][1])
		
		f.close();

	def on_min_clicked(self, btn, data=None):
		f = open("/home/scsmith1/linuxcnc/configs/inMill/gvcp_debug.log","a")
		f.write("Calling on_min_clicked:\n")
		
		factor = get_factor();
		value = 1 * factor;

		f.write("\tfactor: %f\n", factor)
		f.write("\tvalue:  %f\n", value)
		f.close()

#		ACTION.SET_JOG_RATE(value)

	def on_max_clicked(self, btn, data=None):
		f = open("/home/scsmith1/linuxcnc/configs/inMill/gvcp_debug.log","a")
		f.write("Calling on_max_clicked\n")

		factor = get_factor();
		value = 20 * factor;

		f.write("\tfactor: %f\n", factor)
		f.write("\tvalue:  %f\n", value)
		f.close()
	
#		ACTION.SET_JOG_RATE(value)

	def __init__(self, halcomp,builder,useropts):
		self.halcomp = halcomp
		self.builder = builder
		self.useropts = useropts

		self.combo = self.builder.get_object('select-program-offset')
		self.jog_min = self.builder.get_object('set-jog-rate-min')
		self.jog_max = self.builder.get_object('set-jog-rate-max')

def get_handlers(halcomp,builder,useropts):

	global debug
	for cmd in useropts:
		exec(cmd, globals())

	return [HandlerClass(halcomp,builder,useropts)]
