示例#1
0
    def firmware_instructions(self):
        branch = conf.get('tinyg.firmware_branch')
        if branch is None:
            branch = self.default_firmware_branch_name
            conf.set('tinyg.firmware_branch', branch)

        return 'Goto https://github.com/synthetos/TinyG/tree/' + branch
示例#2
0
文件: tinyg.py 项目: dougle/Cender
    def firmware_instructions(self):
        branch = conf.get('tinyg.firmware_branch')
        if branch is None:
            branch = self.default_firmware_branch_name
            conf.set('tinyg.firmware_branch', branch)

        return 'Goto https://github.com/synthetos/TinyG/tree/' + branch
示例#3
0
    def check_firmware_version(self):
        self.logger.debug('Checking firmware version')

        branch = conf.get('tinyg.firmware_branch')
        if branch is None:
            branch = self.default_firmware_branch_name
            conf.set('tinyg.firmware_branch', branch)

        try:
            response = urllib2.urlopen(
                'https://raw.githubusercontent.com/synthetos/TinyG/' + branch +
                '/firmware/tinyg/tinyg.h')
            html = response.read()

            match = re.search(r'\#define TINYG_FIRMWARE_BUILD\s+([\d\.]+)',
                              html)

            if 'fb' in self.board_config and match is not None:
                groups = match.groups()
                self.logger.debug(' Found ' + groups[0] + ' and we are ' +
                                  self.board_config['fb']['value'])
                return (float(groups[0]) > float(
                    self.board_config['fb']['value']))
        except urllib2.URLError:
            pass

        return False
示例#4
0
文件: tinyg.py 项目: dougle/Cender
    def check_firmware_version(self):
        self.logger.debug('Checking firmware version')

        branch = conf.get('tinyg.firmware_branch')
        if branch is None:
            branch = self.default_firmware_branch_name
            conf.set('tinyg.firmware_branch', branch)

        try:
            response = urllib2.urlopen(
                'https://raw.githubusercontent.com/synthetos/TinyG/' +
                branch + '/firmware/tinyg/tinyg.h')
            html = response.read()

            match = re.search(
                r'\#define TINYG_FIRMWARE_BUILD\s+([\d\.]+)', html)

            if 'fb' in self.board_config and match is not None:
                groups = match.groups()
                self.logger.debug(
                    ' Found ' + groups[0] + ' and we are ' +
                    self.board_config['fb']['value'])
                return (
                    float(groups[0]) > float(self.board_config['fb']['value'])
                )
        except urllib2.URLError:
            pass

        return False
示例#5
0
    def on_day_start_changed(self, widget):
        day_start = self.day_start.get_time()
        if day_start is None:
            return

        day_start = day_start.hour * 60 + day_start.minute

        conf.set("day_start_minutes", day_start)
示例#6
0
    def on_day_start_changed(self, widget):
        day_start = self.day_start.get_time()
        if day_start is None:
            return

        day_start = day_start.hour * 60 + day_start.minute

        conf.set("day_start_minutes", day_start)
示例#7
0
    def change_offset(self):
        conf.set('ui.current_offset_index', self.ui.comboOffset.currentIndex())

        for axis_letter in self.controller.possible_axis:
            # send it the current position to calculate from
            lcdelement = getattr(
                self.ui, "lcdMachNumber" + axis_letter.upper())
            self.update_lcd(axis_letter, lcdelement.value(), True)
示例#8
0
    def on_workspace_activity_edited(self, cell, path, value):
        index = int(path)
        while index >= len(self.workspace_mapping):
            self.workspace_mapping.append("")

        value = value.decode("utf8", "replace")
        self.workspace_mapping[index] = value
        conf.set("workspace_mapping", self.workspace_mapping)
        self.workspace_store[path][2] = value
示例#9
0
    def on_workspace_activity_edited(self, cell, path, value):
        index = int(path)
        while index >= len(self.workspace_mapping):
            self.workspace_mapping.append("")

        value = value.decode("utf8", "replace")
        self.workspace_mapping[index] = value
        conf.set("workspace_mapping", self.workspace_mapping)
        self.workspace_store[path][2] = value
示例#10
0
    def send_file(self):
        file_path = self.ui.lineFilePath.text()
        conf.set('common.directory', os.path.dirname(str(file_path)))
        self.ui.btnPause.setEnabled(True)
        self.ui.btnClear.setEnabled(True)
        self.ui.btnStart.setEnabled(False)
        self.ui.lblOutputRuntime.setText(str(0))

        self.controller.send_file(file_path)
示例#11
0
 def save_options(self, ui):
     custom_tab = ui.tabWidget.widget(ui.tabWidget.count() - 1)
     # check all checkboxes
     for check_box in custom_tab.findChildren(QtGui.QCheckBox):
         if check_box.objectName() == 'tinyg_edge_firmware':
             if check_box.isChecked():
                 conf.set('tinyg.firmware_branch', 'edge')
             else:
                 conf.set('tinyg.firmware_branch',
                          self.default_firmware_branch_name)
示例#12
0
    def on_workspace_tracking_toggled(self, checkbox):
        workspace_tracking = []
        self.get_widget("workspace_list").set_sensitive(self.get_widget("workspace_tracking_name").get_active())
        if self.get_widget("workspace_tracking_name").get_active():
            workspace_tracking.append("name")

        if self.get_widget("workspace_tracking_memory").get_active():
            workspace_tracking.append("memory")

        conf.set("workspace_tracking", workspace_tracking)
示例#13
0
文件: tinyg.py 项目: dougle/Cender
 def save_options(self, ui):
     custom_tab = ui.tabWidget.widget(ui.tabWidget.count() - 1)
     # check all checkboxes
     for check_box in custom_tab.findChildren(QtGui.QCheckBox):
         if check_box.objectName() == 'tinyg_edge_firmware':
             if check_box.isChecked():
                 conf.set('tinyg.firmware_branch', 'edge')
             else:
                 conf.set(
                     'tinyg.firmware_branch',
                     self.default_firmware_branch_name)
示例#14
0
    def on_workspace_tracking_toggled(self, checkbox):
        workspace_tracking = []
        self.get_widget("workspace_list").set_sensitive(
            self.get_widget("workspace_tracking_name").get_active())
        if self.get_widget("workspace_tracking_name").get_active():
            workspace_tracking.append("name")

        if self.get_widget("workspace_tracking_memory").get_active():
            workspace_tracking.append("memory")

        conf.set("workspace_tracking", workspace_tracking)
示例#15
0
 def feed_rate_sent_handler(self, rate):
     # add the feed rate to the gui and config
     index = self.ui.comboFeedRate.findText(rate)
     if index < 0:
         items = []
         for i in range(self.ui.comboFeedRate.count()):
             items.append(self.ui.comboFeedRate.itemText(i))
         items = sorted(items, key=int)
         self.ui.comboFeedRate.clear()
         self.ui.comboFeedRate.addItems(items)
     index = self.ui.comboFeedRate.findText(rate)
     conf.set('ui.feed_rate_index', index)
     self.ui.comboFeedRate.setCurrentIndex(index)
示例#16
0
    def offset_zero(self, axis_letter):
        lcdnumber = getattr(self.ui, 'lcdMachNumber' + axis_letter.upper())
        try:
            conf.set(
                'ui.offsets.' + str(conf.get('ui.current_offset_index')) +
                '.' + axis_letter, lcdnumber.value())
        except:
            conf.set(
                'ui.offsets.' + str(conf.get('ui.current_offset_index')) +
                '.' + axis_letter, 0)
            pass

        self.update_lcd(axis_letter, lcdnumber.value(), True)
示例#17
0
 def on_redmine_integration_checkbox_toggled(self, checkbox):
     conf.set("redmine_integration_enabled", checkbox.get_active())
     if checkbox.get_active():
         self.get_widget("redmine_url_label").set_sensitive(True)
         self.get_widget("redmine_url_entry").set_sensitive(True)
         self.get_widget("api_key_label").set_sensitive(True)
         self.get_widget("api_key_entry").set_sensitive(True)
         self.get_widget("redmine_test_button").set_sensitive(True)
         self.get_widget("redmine_save_button").set_sensitive(True)
     else:
         self.get_widget("redmine_url_label").set_sensitive(False)
         self.get_widget("redmine_url_entry").set_sensitive(False)
         self.get_widget("api_key_label").set_sensitive(False)
         self.get_widget("api_key_entry").set_sensitive(False)
         self.get_widget("redmine_test_button").set_sensitive(False)
         self.get_widget("redmine_save_button").set_sensitive(False)
示例#18
0
文件: main.py 项目: dougle/Cender
def main():
    app_name = 'Cender'
    log_filename = app_name.lower() + '.log'
    logging.basicConfig(filename=log_filename, level=logging.DEBUG)

    logger = logging.getLogger(app_name.lower())
    logger.debug('Logging initialised')

    app = QtGui.QApplication(sys.argv)
    logger.debug('Application initialised')

    conf.set('ui.app.author', "Dougle")

    main_window = MainWindow()

    sys.exit(app.exec_())
示例#19
0
文件: main.py 项目: yazici/Cender
def main():
    app_name = 'Cender'
    log_filename = app_name.lower() + '.log'
    logging.basicConfig(filename=log_filename, level=logging.DEBUG)

    logger = logging.getLogger(app_name.lower())
    logger.debug('Logging initialised')

    app = QtGui.QApplication(sys.argv)
    logger.debug('Application initialised')

    conf.set('ui.app.author', "Dougle")

    main_window = MainWindow()

    sys.exit(app.exec_())
示例#20
0
    def close_window(self):
        # properly saving window state and position
        maximized = self.window.get_window().get_state() & gtk.gdk.WINDOW_STATE_MAXIMIZED
        conf.set("overview_window_maximized", maximized)

        # make sure to remember dimensions only when in normal state
        if maximized == False and not self.window.get_window().get_state() & gtk.gdk.WINDOW_STATE_ICONIFIED:
            x, y = self.window.get_position()
            w, h = self.window.get_size()
            conf.set("overview_window_box", [x, y, w, h])

        if not self.parent:
            gtk.main_quit()
        else:
            self.window.hide()
            self.facts = None
            return False
示例#21
0
    def close_window(self):
        # properly saving window state and position
        maximized = self.window.get_window().get_state() & gtk.gdk.WINDOW_STATE_MAXIMIZED
        conf.set("overview_window_maximized", maximized)

        # make sure to remember dimensions only when in normal state
        if maximized == False and not self.window.get_window().get_state() & gtk.gdk.WINDOW_STATE_ICONIFIED:
            x, y = self.window.get_position()
            w, h = self.window.get_size()
            conf.set("overview_window_box", [x, y, w, h])


        if not self.parent:
            gtk.main_quit()
        else:
            self.window.destroy()
            return False
示例#22
0
    def close_window(self):
        # properly saving window state and position
        maximized = self.window.get_window().get_state() & gtk.gdk.WINDOW_STATE_MAXIMIZED
        conf.set("overview_window_maximized", maximized)

        # make sure to remember dimensions only when in normal state
        if maximized == False and not self.window.get_window().get_state() & gtk.gdk.WINDOW_STATE_ICONIFIED:
            x, y = self.window.get_position()
            w, h = self.window.get_size()
            conf.set("overview_window_box", [x, y, w, h])

        if not self.parent:
            gtk.main_quit()
        else:
            for obj, handler in self.external_listeners:
                obj.disconnect(handler)
            self._gui = None
            self.window.destroy()
            self.window = None
            self.emit("on-close")
示例#23
0
    def close_window(self):
        # properly saving window state and position
        maximized = self.window.get_window().get_state() & gtk.gdk.WINDOW_STATE_MAXIMIZED
        conf.set("overview_window_maximized", maximized)

        # make sure to remember dimensions only when in normal state
        if maximized == False and not self.window.get_window().get_state() & gtk.gdk.WINDOW_STATE_ICONIFIED:
            x, y = self.window.get_position()
            w, h = self.window.get_size()
            conf.set("overview_window_box", [x, y, w, h])

        if not self.parent:
            gtk.main_quit()
        else:
            for obj, handler in self.external_listeners:
                obj.disconnect(handler)
            self._gui = None
            self.window.destroy()
            self.window = None

            self.emit("on-close")
示例#24
0
    def spindle_toggle(self):
        # filter and cast spindle speed
        spindle_speed = str(self.ui.comboSpindleSpeed.currentText().trimmed())
        spindle_speed = re.sub(r"\.[0-9]$", "", spindle_speed)
        spindle_speed = re.sub(r"[^\-0-9]", "", spindle_speed)

        # default to minimum spindle speed
        if len(spindle_speed) == 0 or spindle_speed <= 0:
            spindle_speed = int(conf.get('common.minimum_spindle_speed'))
        else:
            conf.set(
                'ui.spindle_speed_index',
                self.ui.comboSpindleSpeed.currentIndex())

        direction = 0
        if self.ui.radioSpindleDirectionCCW.isChecked():
            direction = 1

        conf.set('ui.spindle_direction', direction)

        self.controller.set_spindle(
            self.ui.checkBoxSpindle.isChecked(), spindle_speed, direction)
示例#25
0
    def parse_position(self, response):
        if 'sr' in response:
            for axis_letter in ['x', 'y', 'z']:
                if 'pos' + axis_letter in response['sr']:
                    coordinate = response['sr']['pos' + axis_letter]
                    self.logger.debug('Stat: ' + axis_letter + ':' +
                                      str(coordinate))
                    pub.sendMessage('position-received',
                                    axis_letter=axis_letter,
                                    position=float(coordinate))

                    if self.track_coordinates:
                        conf.set('last_positions.' + axis_letter.lower(),
                                 float(coordinate))

            if 'vel' in response['sr']:
                pub.sendMessage('velocity-received',
                                velocity=int(response['sr']['vel']))

            return False

        return True
示例#26
0
    def test_connection(self):
        listener = self.main_window.controller.listener_thread
        if listener is not None and listener.isRunning():
            listener.exit()

        board_type = str(self.ui.comboControllerBoard.currentText())
        driver_class_name = re.sub(r'[^a-zA-Z0-9]', '', board_type)
        driver_filename = re.sub(r'[^a-z0-9]+', '', board_type.lower())
        driver_directory = re.sub(r'[^a-z]+', '', driver_filename)

        sys.path.append(
            os.path.dirname(os.path.realpath(__file__)) + '/drivers/' +
            driver_directory)
        f, filename, description = imp.find_module(driver_filename)
        driver_module = imp.load_module(
            driver_class_name, f, filename, description)
        driver_class = getattr(driver_module, driver_class_name)

        controller = driver_class(self)

        flow_control = 'rtscts'
        if self.ui.radioSoft.isChecked():
            conf.set('connection.port.flow_control', 'xonxoff')

        parity = str(self.ui.comboBoxParity.currentText())
        parity = parity[0].upper()

        connection_message = 'Could not connect.'
        if controller.is_connected(
                str(self.ui.cmbPort.currentText()),
                int(self.ui.comboBoxBaudRate.currentText()),
                float(self.ui.comboBoxStopBits.currentText()),
                parity,
                flow_control):
            connection_message = 'Connected'
        QtGui.QMessageBox.information(
            self, driver_class_name + ' Connection', connection_message)
示例#27
0
文件: tinyg.py 项目: dougle/Cender
    def parse_position(self, response):
        if 'sr' in response:
            for axis_letter in ['x', 'y', 'z']:
                if 'pos' + axis_letter in response['sr']:
                    coordinate = response['sr']['pos' + axis_letter]
                    self.logger.debug(
                        'Stat: ' + axis_letter + ':' + str(coordinate))
                    pub.sendMessage(
                        'position-received',
                        axis_letter=axis_letter,
                        position=float(coordinate))

                    if self.track_coordinates:
                        conf.set(
                            'last_positions.' + axis_letter.lower(),
                            float(coordinate))

            if 'vel' in response['sr']:
                pub.sendMessage(
                    'velocity-received', velocity=int(response['sr']['vel']))

            return False

        return True
示例#28
0
 def on_notify_interval_value_changed(self, scale):
     value = int(scale.get_value())
     conf.set("notify_interval", value)
     self.get_widget("notify_on_idle").set_sensitive(value <= 120)
示例#29
0
 def on_show_label_toggled(self, checkbox):
     show_label = checkbox.get_active()
     conf.set("show_label", show_label)
     self.get_widget("label_length").set_sensitive(show_label)
示例#30
0
 def on_notify_interval_value_changed(self, scale):
     value = int(scale.get_value())
     conf.set("notify_interval", value)
     self.get_widget("notify_on_idle").set_sensitive(value <= 120)
示例#31
0
 def on_notify_on_idle_toggled(self, checkbox):
     conf.set("notify_on_idle", checkbox.get_active())
示例#32
0
 def on_icon_glow_toggled(self, checkbox):
     conf.set("icon_glow", checkbox.get_active())
示例#33
0
 def on_idle_track_toggled(self, checkbox):
     conf.set("enable_timeout", checkbox.get_active())
示例#34
0
 def on_rt_url_changed(self, entry):
     conf.set('rt_url', self.rt_url.get_text())
示例#35
0
 def on_todo_combo_changed(self, combo):
     conf.set("activities_source", self.activities_sources[combo.get_active()][0])
示例#36
0
 def on_label_length_value_changed(self, scale):
     value = int(scale.get_value())
     conf.set("label_length", value)
示例#37
0
 def on_shutdown_track_toggled(self, checkbox):
     conf.set("stop_on_shutdown", checkbox.get_active())
示例#38
0
 def on_show_label_toggled(self, checkbox):
     show_label = checkbox.get_active()
     conf.set("show_label", show_label)
     self.get_widget("label_length").set_sensitive(show_label)
示例#39
0
 def on_last_activities_days_value_changed(self, scale):
     value = int(scale.get_value())
     conf.set("last_activities_days", value)
示例#40
0
 def on_idle_track_toggled(self, checkbox):
     conf.set("enable_timeout", checkbox.get_active())
示例#41
0
 def on_last_activities_days_value_changed(self, scale):
     value = int(scale.get_value())
     conf.set("last_activities_days", value)
示例#42
0
 def on_todo_combo_changed(self, combo):
     conf.set("activities_source",
              self.activities_sources[combo.get_active()][0])
示例#43
0
 def on_rt_apikey_changed(self, entry):
     conf.set('rt_apikey', self.rt_apikey.get_text())
示例#44
0
 def on_redmine_query_changed(self, entry):
     conf.set('redmine_query', self.redmine_query.get_text())
示例#45
0
 def on_redmine_user_changed(self, entry):
     conf.set('redmine_user', self.redmine_user.get_text())
示例#46
0
 def on_redmine_pass_changed(self, entry):
     conf.set('redmine_pass', self.redmine_pass.get_text())
示例#47
0
 def on_shutdown_track_toggled(self, checkbox):
     conf.set("stop_on_shutdown", checkbox.get_active())
示例#48
0
 def on_jira_query_changed(self, entry):
     conf.set('jira_query', self.jira_query.get_text())
示例#49
0
 def on_notify_on_idle_toggled(self, checkbox):
     conf.set("notify_on_idle", checkbox.get_active())
示例#50
0
 def on_jira_category_field_changed(self, entry):
     conf.set('jira_category_field', self.jira_category_field.get_text())
示例#51
0
 def on_remote_activities_only_toggled(self, checkbox):
     conf.set('remote_activities_only', checkbox.get_active())
示例#52
0
 def on_icon_glow_toggled(self, checkbox):
     conf.set("icon_glow", checkbox.get_active())
示例#53
0
 def on_label_length_value_changed(self, scale):
     value = int(scale.get_value())
     conf.set("label_length", value)
示例#54
0
 def on_remote_activities_only_toggled(self, checkbox):
     conf.set('remote_activities_only', checkbox.get_active())