def __init__(self, parent): super().__init__(parent) layouts = QHBoxLayout() self.__table = AccuracyCheckerConfigTable(self) self.__buttons = ConfigGroupButtons(self) layouts.addWidget(self.__table) layouts.addWidget(self.__buttons) self.setLayout(layouts) self.__set_connections()
class AccuracyCheckerConfigWidget(QWidget): addTestSignal = pyqtSignal(list) deleteTestSignal = pyqtSignal(list) changeTestSignal = pyqtSignal(list) copyTestSignal = pyqtSignal(list) showAddTestDialogSignal = pyqtSignal() showChangeTestDialogSignal = pyqtSignal() loadSignal = pyqtSignal(str) saveSignal = pyqtSignal(str) clearSignal = pyqtSignal() def __init__(self, parent): super().__init__(parent) layouts = QHBoxLayout() self.__table = AccuracyCheckerConfigTable(self) self.__buttons = ConfigGroupButtons(self) layouts.addWidget(self.__table) layouts.addWidget(self.__buttons) self.setLayout(layouts) self.__set_connections() def __set_connections(self): self.__buttons.get_buttons()['Add information'].clicked.connect(self.showAddTestDialogSignal.emit) self.__buttons.get_buttons()['Delete information'].clicked.connect(self.__click_delete_button) self.__buttons.get_buttons()['Change information'].clicked.connect(self.showChangeTestDialogSignal.emit) self.__buttons.get_buttons()['Copy information'].clicked.connect(self.__copy_tests) self.__buttons.get_buttons()['Load table'].clicked.connect(self.__show_dialog_parser_config) self.__buttons.get_buttons()['Save table'].clicked.connect(self.__show_dialog_create_config) self.__buttons.get_buttons()['Clear table'].clicked.connect(self.clearSignal.emit) def show_add_test_dialog(self, models): if not models: QMessageBox.warning(self, "Warning!", "Models list is empty!") return dialog = AccuracyCheckerConfigDialog(self, models) if dialog.exec(): values = dialog.get_values() self.addTestSignal.emit(values) def show_change_test_dialog(self, models): if len(self.__table.get_selected_rows()) != 1: QMessageBox.warning(self, "Warning!", "Choose one row!") return row = self.__table.get_selected_rows()[0] dialog = AccuracyCheckerConfigDialog(self, models) dialog.load_values_from_table_row(self.__table, row) if dialog.exec(): values = dialog.get_values() self.changeTestSignal.emit([row, *values]) self.__table.remove_selection() def __show_dialog_parser_config(self): path_to_config = QFileDialog.getOpenFileName(self, "Open File", __file__, "XML files (*.xml)") if path_to_config[0]: self.loadSignal.emit(path_to_config[0]) def __show_dialog_create_config(self): path_to_config = QFileDialog.getSaveFileName(self, "Save File", __file__, "XML files (*.xml)") if path_to_config[0]: self.saveSignal.emit(path_to_config[0]) def __click_delete_button(self): self.deleteTestSignal.emit(self.__table.get_selected_rows()) self.__table.remove_selection() def show_message_status_saving(self, status): if status: QMessageBox.information(self, "Success", "AccuracyChecker configuration was created successfully!") else: QMessageBox.warning(self, "Fail", "AccuracyChecker configuration was not created!") def __copy_tests(self): self.copyTestSignal.emit(self.get_selected_rows()) def get_selected_rows(self): return self.__table.get_selected_rows() def update(self, model): self.__table.update(model.get_tests())
class RemoteConfigWidget(QWidget): addComputerSignal = pyqtSignal(str, str, str, str, str, str, str, str, str, str, str, str, str, str, str) deleteComputerSignal = pyqtSignal(list) changeComputerSignal = pyqtSignal(int, str, str, str, str, str, str, str, str, str, str, str, str, str, str, str) copyComputerSignal = pyqtSignal(list) loadSignal = pyqtSignal(str) saveSignal = pyqtSignal(str) clearSignal = pyqtSignal() def __init__(self, parent): super().__init__(parent) layouts = QHBoxLayout() self.__table = RemoteConfigTable(self) self.__buttons = ConfigGroupButtons(self) layouts.addWidget(self.__table) layouts.addWidget(self.__buttons) self.setLayout(layouts) self.__set_connections() def __set_connections(self): self.__buttons.get_buttons()['Add information'].clicked.connect(self.__show_dialog_add_computer) self.__buttons.get_buttons()['Delete information'].clicked.connect(self.__del_click) self.__buttons.get_buttons()['Change information'].clicked.connect(self.__show_dialog_change_computer) self.__buttons.get_buttons()['Copy information'].clicked.connect(self.__copy_computers) self.__buttons.get_buttons()['Load table'].clicked.connect(self.__show_dialog_parser_config) self.__buttons.get_buttons()['Save table'].clicked.connect(self.__show_dialog_create_config) self.__buttons.get_buttons()['Clear table'].clicked.connect(self.clearSignal.emit) def __del_click(self): self.deleteComputerSignal.emit(self.__table.get_selected_rows()) self.__table.remove_selection() def __show_dialog_add_computer(self): dialog = RemoteConfigDialog(self) if dialog.exec(): self.addComputerSignal.emit(*dialog.get_values()) def __show_dialog_change_computer(self): if len(self.__table.get_selected_rows()) != 1: QMessageBox.warning(self, "Warning!", "Choose one row!") return dialog = RemoteConfigDialog(self) row = self.__table.get_selected_rows()[0] idx = 0 for tag in dialog.tags: dialog.edits[tag].setText(self.__table.item(row, idx).text()) idx += 1 if dialog.exec(): self.changeComputerSignal.emit(row, *dialog.get_values()) self.__table.remove_selection() def __show_dialog_parser_config(self): path_to_config = QFileDialog.getOpenFileName(self, "Open File", "", "XML files (*.xml)") if path_to_config[0]: self.loadSignal.emit(path_to_config[0]) def __show_dialog_create_config(self): path_to_config = QFileDialog.getSaveFileName(self, "Save File", "", "XML files (*.xml)") if path_to_config[0]: self.saveSignal.emit(path_to_config[0]) def show_message_status_saving(self, status): if status: QMessageBox.information(self, "Success", "Remote configuration was created successfully!") else: QMessageBox.warning(self, "Fail", "Remote configuration was not created!") def __copy_computers(self): self.copyComputerSignal.emit(self.get_selected_rows()) def get_selected_rows(self): return self.__table.get_selected_rows() def update(self, model): self.__table.update(model.get_computers())