def macros_selected(self): """ selects new macros :return: """ selected_macros: Optional[data_types.MacroSet] = \ data_types.get_macros_by_name(self.CBMacros.currentText(), self.all_macros) if selected_macros: self.current_macros = selected_macros self.port_settings.last_macros_set = selected_macros.name self.settings_form = settings.Settings(self.port_settings, self.text_settings, self.colors, self.current_font) self.settings_form.save_settings() for (index, btn) in enumerate(self.macros_btns_list): caption = self.current_macros.macros[ index].name if self.current_macros.macros[ index].name else '<Not used>' btn.setText(caption) if self.current_macros.macros[index].name: btn.setToolTip(self.current_macros.macros[index].command) if self.current_macros.macros[index].icon_path and \ os.path.exists(self.current_macros.macros[index].icon_path): icon = QtGui.QIcon( self.current_macros.macros[index].icon_path) btn.setIcon(icon) btn.setEnabled(caption != '<Not used>') else: self.port_settings.last_macros_set = "" for (index, btn) in enumerate(self.macros_btns_list): btn.setText('M%i' % (index + 1)) btn.setEnabled(False) btn.setIcon(QtGui.QIcon())
def create_macros_set(self) -> Optional[data_types.MacroSet]: """ create new macros from data from fields and add it to all macroses :return: new macros """ name = self.LineNameSet.text() if not name: common_functions.error_message("Macros Set Name is empty") return None if name not in [macro.name for macro in self.all_macros]: new_macros_set = data_types.MacroSet(name=name, macros=list()) for key in self.macros_dict.keys(): new_macros_set.macros.append( data_types.Macro( name=self.macros_names_list[key].text(), command=self.macros_command_list[key].text(), icon_path=self.current_icon_paths[key])) self.all_macros.append(new_macros_set) self.CBMacros.addItem(name) self.CBMacros.setCurrentText(name) return new_macros_set else: macros_used = data_types.get_macros_by_name(name, self.all_macros) for i in range(data_types.max_macros): macros_used.macros[i].name = self.macros_names_list[i].text() macros_used.macros[i].command = self.macros_command_list[ i].text() macros_used.macros[i].command = self.current_icon_paths[i] return macros_used
def macros_selected(self): """ selects new macros :return: """ selected_macros: Optional[data_types.MacroSet] = \ data_types.get_macros_by_name(self.CBMacros.currentText(), self.all_macros) if selected_macros: self.current_macros = selected_macros self.port_settings.last_macros_set = selected_macros.name self.settings_form = settings.Settings(self.port_settings, self.text_settings, self.colors, self.current_font) self.settings_form.save_settings() self.LblMacrosSelected.setText("Macros set selected: %s" % selected_macros.name) for (index, btn) in enumerate(self.macros_btns_list): caption = self.current_macros.macros[index].name if self.current_macros.macros[ index].name else '<Not used>' btn.setText(caption) btn.setEnabled(caption != '<Not used>') else: self.LblMacrosSelected.setText("Macros set selected: None") self.port_settings.last_macros_set = "" for (index, btn) in enumerate(self.macros_btns_list): btn.setText('M%i' % (index+1)) btn.setEnabled(False)
def create_macros_set(self) -> Optional[data_types.MacroSet]: """ create new macros from data from fields and add it to all macroses :return: new macros """ name = self.LineNameSet.text() if not name: common_functions.error_message("Macros Set Name is empty") return None new_macros_set = data_types.MacroSet(name=name, macros=list()) for key in self.macros_dict.keys(): new_macros_set.macros.append( data_types.Macro(name=self.macros_dict[key][0].text(), command=self.macros_dict[key][1].text())) if name in [macro.name for macro in self.all_macros]: macros_used = data_types.get_macros_by_name(name, self.all_macros) if macros_used != new_macros_set: # reply = QtWidgets.QMessageBox.question(self, 'Message', # 'Macros set "%s" already exists. Overwrite?' % name, # QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) # if reply == QtWidgets.QMessageBox.Yes: ind = self.all_macros.index(macros_used) self.all_macros.pop(ind) self.all_macros.insert(ind, new_macros_set) return macros_used if name not in [macro.name for macro in self.all_macros]: self.all_macros.append(new_macros_set) self.CBMacros.addItem(name) self.CBMacros.setCurrentText(name) return new_macros_set
def load_settings(self): """ loads settings from file if any and overwrites default :return: """ if os.path.exists("settings.json"): with open("settings.json") as f: try: settings_json = json.load(f) if 'COM settings' in settings_json.keys(): if 'baudrate' in settings_json['COM settings'].keys(): self.port_settings.baudrate = settings_json['COM settings']['baudrate'] if self.port_settings.baudrate not in data_types.baudrates: self.CBBaudrate.addItem(str(self.port_settings.baudrate)) self.CBBaudrate.setCurrentText(str(self.port_settings.baudrate)) if 'stopbits' in settings_json['COM settings'].keys(): self.port_settings.stopbits = settings_json['COM settings']['stopbits'] if 'parity' in settings_json['COM settings'].keys(): self.port_settings.parity = data_types.Parity(settings_json['COM settings']['parity']) if 'databits' in settings_json['COM settings'].keys(): self.port_settings.databits = settings_json['COM settings']['databits'] if 'Text settings' in settings_json.keys(): if 'CRLF' in settings_json['Text settings'].keys(): self.text_settings.CRLF = settings_json['Text settings']['CRLF'] if 'bytecodes' in settings_json['Text settings'].keys(): self.text_settings.bytecodes = settings_json['Text settings']['bytecodes'] if 'scroll' in settings_json['Text settings'].keys(): self.text_settings.scroll = settings_json['Text settings']['scroll'] if 'show sent' in settings_json['Text settings'].keys(): self.text_settings.show_sent = settings_json['Text settings']['show sent'] if 'timestamps' in settings_json['Text settings'].keys(): self.text_settings.timestamps = settings_json['Text settings']['timestamps'] if 'Colors' in settings_json.keys(): if 'background-color' in settings_json['Colors'].keys(): self.colors['background-color'] = tuple(settings_json['Colors']['background-color']) self.back_color_changed() if 'font-transmit' in settings_json['Colors'].keys(): self.colors['font-transmit'] = tuple(settings_json['Colors']['font-transmit']) if 'font-receive' in settings_json['Colors'].keys(): self.colors['font-receive'] = tuple(settings_json['Colors']['font-receive']) if 'bytes-color' in settings_json['Colors'].keys(): self.colors['bytes-color'] = tuple(settings_json['Colors']['bytes-color']) if 'Font' in settings_json.keys(): font_family = settings_json['Font']['family'] if 'family' in settings_json['Font'].keys() \ else 'Consolas' font_size = settings_json['Font']['size'] if 'size' in settings_json['Font'].keys() else 10 self.current_font = QtGui.QFont(font_family, font_size) self.TxtBuffer.setFont(self.current_font) if 'Macros set' in settings_json.keys(): self.current_macros = data_types.get_macros_by_name(settings_json['Macros set'], self.all_macros) if self.current_macros: self.port_settings.last_macros_set = settings_json['Macros set'] self.CBMacros.setCurrentText(self.port_settings.last_macros_set) except (json.JSONDecodeError, AttributeError, KeyError, ValueError): common_functions.error_message("Settings file is incorrect, default settings used")
def selected_changed(self): """ loads data of selected macros :return: """ if self.CBMacros.currentText() == 'None': self.clear() else: macros = data_types.get_macros_by_name(self.CBMacros.currentText(), self.all_macros) if macros: self.load_macros(macros)
def load_macros_settings(self, settings_json): """ load last macro set settings from json :param settings_json: data with settings :return: """ if 'Macros set' in settings_json.keys(): self.current_macros = data_types.get_macros_by_name( settings_json['Macros set'], self.all_macros) if self.current_macros: self.port_settings.last_macros_set = settings_json[ 'Macros set'] self.CBMacros.setCurrentText( self.port_settings.last_macros_set)
def delete_pressed(self): name = self.LineNameSet.text() if name and name in [macro.name for macro in self.all_macros]: # noinspection PyCallByClass reply = QtWidgets.QMessageBox.question( self, 'Message', 'Do you really want to delete "%s" macros set?' % name, QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: macros_to_delete = data_types.get_macros_by_name( name, self.all_macros) self.all_macros.remove(macros_to_delete) self.CBMacros.clear() self.CBMacros.addItem('None') self.CBMacros.addItems( [macrosset.name for macrosset in self.all_macros]) self.save() self.CBMacros.setCurrentText('None')