def __init__(self, svg, nodes, inkex): logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s', filename=LOG_FILENAME, filemode='w') #-----------------------format input-------------------- self.svg = svg.getroot() self.inkex = inkex def getSelectedById( IDlist ): # returns lxml elements that have an id in IDlist in the svg ele = [] for e in self.svg.iterfind('.//*[@id]'): if e.get('id') in IDlist: ele.append(e) return ele self.nodes = getSelectedById(nodes) logging.info("Selected elements: %s" % (self.nodes)) #-----------------------start building gui-------------------- builder = gtk.Builder() glade = os.path.join(appPath, "gui", "inkcut.glade") builder.add_from_file(glade) glade = etree.parse(glade) self.set_adjustment_values(builder, glade) self.populate_combos(builder) #-----------------------saved widgets-------------------- widgets = [ 'offset', 'overcut', 'smoothness', 'textviewlog', 'preview1', 'preview2', 'pathh', 'pathw', 'material', 'material-length', 'material-width', 'velocity', 'force', 'feed', 'scale', 'copies', 'posnx', 'posny', 'spacing-row', 'spacing-col', 'margin', 'tile-col', 'tile-row', 'weed_box', 'weed_v_box', 'weed_h_box', 'overcut-box', 'offset-box', 'cutter-box', 'file-box', 'feeding1', 'feeding2', 'invert-box', 'rotate-box', 'filechooserbutton1', 'plotdata', 'plotdetails', 'inkscape_preview', 'order_box', 'order_combo', 'color_cut_combo', 'Yax', 'edt_1x', 'edt_1y', 'edt_2x', 'edt_2y', 'edt_home_x', 'edt_home_y', 'chk_1x10', 'chk_2x10', 'cmb_plotlang', 'device-length', 'device-width', 'calibration', 'interface', 'printer', 'port', 'baudrate', 'parity', 'device1', 'bytesize', 'stopbits', 'xonxoff', 'rtscts', 'dsrdtr' ] self.gui = {} for widget in widgets: self.gui[widget] = builder.get_object(widget) #-----------------------load settings -------------------- self.settings = Settings( os.path.join(appPath, 'config', 'settings.xml'), self.gui) self.settings.load('last') self.gui['edt_home_x'].set_text('0') self.gui['edt_home_y'].set_text('0') #-----------------------Create Graphic & Initialize Plot -------------------- self.plot = hpgl.Plot({'rotate': self.calculate_degree()}) self.plot.loadGraphic(self.nodes, self.gui['color_cut_combo'].get_active_text()) self.on_color_cut_changed(self.gui['color_cut_combo']) self.on_material_size_changed() self.on_pos_value_changed() self.on_spacing_value_changed() self.on_margin_value_changed() self.on_velocity_value_changed() self.on_force_value_changed() self.on_feeding_group_changed() self.on_invertbox_toggled(None) self.on_smoothness_value_changed() self.on_overcut_value_changed() self.on_offset_value_changed() self.on_weed_h_box_toggled(self.gui['weed_h_box']) self.on_weed_v_box_toggled(self.gui['weed_v_box']) self.on_weed_box_toggled(self.gui['weed_box']) self.on_order_changed(self.gui['order_box']) self.on_reset_stack_btn_clicked(self.gui['copies']) self.on_order_changed(self.gui['order_combo']) self.on_calibration_value_changed(self.gui['calibration']) self.set_device_combo(builder.get_object("device1")) # do this last... self.on_preview_clicked('first') #-----------------------show windows-------------------- self.window = builder.get_object("window1") self.about_dialog = builder.get_object("aboutdialog1") self.properties_dialog = builder.get_object("dialog1") self.log_dialog = builder.get_object("dialog2") self.plot_dialog = builder.get_object("dialog3") self.concut_dialog = builder.get_object("concutdlg") builder.connect_signals(self)