<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#! /usr/bin/python

import linuxcnc
import csv
import gi
import os

gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

def myOpen(self):
    filename = builder.get_object("filebutton").get_filename()
    print(filename)
    l = builder.get_object("liststore")
    l.clear()
    with open(filename) as myfile:
        csvread = csv.reader(myfile, delimiter=',')
        for row in csvread:
            l.append(row)

def do_defaults(s):
    defaults = "(fengrave_set YSCALE     2.5 )\n"
    if len(s) &gt; 25:
        defaults += "(fengrave_set XSCALE     70 )\n"
    elif len(s) &gt; 23:
        defaults += "(fengrave_set XSCALE     80 )\n"
    elif len(s) &gt; 20:
        defaults += "(fengrave_set XSCALE     90 )\n"
    else: 
        defaults += "(fengrave_set XSCALE     100 )\n"
    defaults += "(fengrave_set gpost         )\n"
    f = open("defaults.txt", "w")
    f.write(defaults)
    f.close()
        
def myEngrave(self):
    model, list_iter = builder.get_object("treeview1").get_selection().get_selected()
    name = model[list_iter][0]
    clubname = model[list_iter][2]
    election = model[list_iter][1]
    gcode = "(Generated by engrave_links)\n"
    gcode += "(%s - %s - %s)\n" % (name, election, clubname)
    gcode += "G21 G92.1\n"
    gcode += "G0 X0 Y0\n"
    if builder.get_object("rbLarge").get_active():
        gcode += "G92 Y -5.975\n"
    else:
        gcode += "G92 Y -5.55\n"
    do_defaults(name)
    gcode += os.popen("./f-engrave.py -b -f cxf_fonts/smallcaps.cxf -g defaults.txt -t \"%s\"" % name).read()
    gcode += "G92.1\n"
    gcode += "G0 X0 Y0\n"
    if builder.get_object("rbLarge").get_active():
        gcode += "G92 Y +5.975\n"
    else:
        gcode += "G92 Y +5.55\n"
    do_defaults(election)
    gcode += os.popen("./f-engrave.py -b -f cxf_fonts/smallcaps.cxf -g defaults.txt -t \"%s\"" % election).read()
    gcode += "M5\n"
    gcode += "G53 G0 Z0\n"
    gcode += "(MSG, Flip the link)\n"
    gcode += "M0\n"
    gcode += "G21 G92.1\n"
    gcode += "G0 X0 Y0\n"
    if builder.get_object("rbLarge").get_active():
        gcode += "G92 Y -5.975\n"
    else:
        gcode += "G92 Y -5.55\n"
    do_defaults(clubname)
    gcode += os.popen("./f-engrave.py -b -f cxf_fonts/smallcaps.cxf -g defaults.txt -t \"%s\"" % clubname).read()    
    gcode += "M5\n"
    gcode += "M2\n"
    
    ofname = "%s/linuxcnc/nc_files/link%i.ngc" % (os.path.expanduser("~"), int(str(model.get_path(list_iter))))
    print(ofname)
    f = open(ofname, "w")
    f.write(gcode)
    f.close()
    c = linuxcnc.command()
    c.mode(linuxcnc.MODE_MANUAL)
    c.reset_interpreter()
    c.wait_complete()
    c.mode(linuxcnc.MODE_AUTO)
    c.program_open(ofname)
    c.wait_complete()
    c.auto(linuxcnc.AUTO_RUN, 1)
    
class Handler:
    def quit(self, *args):
        Gtk.main_quit()
    def new_file(self, *args):
        myOpen(self)
    def engrave(self, *args):
        myEngrave(self)

builder = Gtk.Builder()
builder.add_from_file("engraver.glade")
builder.connect_signals(Handler())

w = builder.get_object("MainWindow")
w.show_all()

Gtk.main()

</pre></body></html>