Ejemplo n.º 1
0
    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)