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
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
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
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)
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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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_())
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
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
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")
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)
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
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)
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
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)
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)
def on_notify_on_idle_toggled(self, checkbox): conf.set("notify_on_idle", checkbox.get_active())
def on_icon_glow_toggled(self, checkbox): conf.set("icon_glow", checkbox.get_active())
def on_idle_track_toggled(self, checkbox): conf.set("enable_timeout", checkbox.get_active())
def on_rt_url_changed(self, entry): conf.set('rt_url', self.rt_url.get_text())
def on_todo_combo_changed(self, combo): conf.set("activities_source", self.activities_sources[combo.get_active()][0])
def on_label_length_value_changed(self, scale): value = int(scale.get_value()) conf.set("label_length", value)
def on_shutdown_track_toggled(self, checkbox): conf.set("stop_on_shutdown", checkbox.get_active())
def on_last_activities_days_value_changed(self, scale): value = int(scale.get_value()) conf.set("last_activities_days", value)
def on_rt_apikey_changed(self, entry): conf.set('rt_apikey', self.rt_apikey.get_text())
def on_redmine_query_changed(self, entry): conf.set('redmine_query', self.redmine_query.get_text())
def on_redmine_user_changed(self, entry): conf.set('redmine_user', self.redmine_user.get_text())
def on_redmine_pass_changed(self, entry): conf.set('redmine_pass', self.redmine_pass.get_text())
def on_jira_query_changed(self, entry): conf.set('jira_query', self.jira_query.get_text())
def on_jira_category_field_changed(self, entry): conf.set('jira_category_field', self.jira_category_field.get_text())
def on_remote_activities_only_toggled(self, checkbox): conf.set('remote_activities_only', checkbox.get_active())