Exemplo n.º 1
0
 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())
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
    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")
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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')