diff --git a/src/Model/Except.py b/src/Model/Except.py index 4c71bbc29c577bf257e067830f15e9b805dc631f..8480e3ee953401902b797aff59cc2a23413db94b 100644 --- a/src/Model/Except.py +++ b/src/Model/Except.py @@ -124,25 +124,25 @@ class ClipboardFormatError(ExeceptionWithMessageBox): title = _translate("Exception", "Clipboard format error") ) - self.mime = mime - self.header = header - self.data = data + self._mime = mime + self._header = header + self._data = data - if self.mime is not None: - self.msg = f"Impossible to decode data to mime code '{self.mime}'" + if self._mime is not None: + self.msg = f"Impossible to decode data to mime code '{self._mime}'" else: - if len(self.header) == 0: + if len(self._header) == 0: msg = _translate("Exception", "without header") else: msg = ( _translate("Exception", "with header") + - f": {self.header}" + f": {self._header}" ) - self.msg = ( - _translate("Exception", "Invalid clipboard data format:") + - f" '{self.data}' {msg}" - ) + self.msg = ( + _translate("Exception", "Invalid clipboard data format:") + + f" '{self._data}' {msg}" + ) self.alert() diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py index de4c843dbe5c3b13aaa6d96065bebbf019114df9..08cf2cf4c7b3f4716eb8f8101d2ae248bef32ffd 100644 --- a/src/Model/Geometry/ProfileXYZ.py +++ b/src/Model/Geometry/ProfileXYZ.py @@ -63,6 +63,28 @@ class ProfileXYZ(Profile): return profile + def point_from_data(self, header, data): + point = None + try: + if len(header) == 0: + point = PointXYZ( + *data, status=self._status + ) + else: + valid_header = {'name', 'x', 'y', 'z'} + d = {"status": self._status} + for i, v in enumerate(data): + h = header[i].strip().lower().split(' ')[0] + if h in valid_header: + d[h] = v + + point = PointXYZ(**d) + except Exception as e: + raise ClipboardFormatError(header=header, data=data) + + return point + + def x(self): return [point.x for point in self._points] diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py index 8a1745178deb60f42463f9530eb11eb92fcf4002..087b0a876aa2485eadfe6e335c646937e37168d4 100644 --- a/src/Model/Geometry/Reach.py +++ b/src/Model/Geometry/Reach.py @@ -82,7 +82,7 @@ class Reach: Returns: The new profile. """ - profile = ProfileXYZ(reach=self) + profile = ProfileXYZ(reach=self, status=self._status) self._profiles.insert(index, profile) self._update_profile_numbers() diff --git a/src/View/Geometry/Profile/Table.py b/src/View/Geometry/Profile/Table.py index 01608630f4dfd4b264bb9a0c4befd26c2f6a54ea..d55ebfcd663a9ca5f4d3fde948a58610fd5d62dc 100644 --- a/src/View/Geometry/Profile/Table.py +++ b/src/View/Geometry/Profile/Table.py @@ -271,7 +271,7 @@ class TableEditableModel(QAbstractTableModel): self._profile, row, list( map( - lambda d: PointXYZ.from_data(header, d), + lambda d: self._profile.point_from_data(header, d), data ) ) diff --git a/src/View/Geometry/Profile/Window.py b/src/View/Geometry/Profile/Window.py index 0f68169934ad26088dd6543a2af28a6ed08c6bd8..815cc2ecb26802e345cd9329ed581fa412a86509 100644 --- a/src/View/Geometry/Profile/Window.py +++ b/src/View/Geometry/Profile/Window.py @@ -333,28 +333,7 @@ class ProfileWindow(QMainWindow, WindowToolKit): if list_deleted_names: self.msg_box_check_duplication_names(list_deleted_names) - def closeEvent(self, event): - print("TODO: Close") - # if self.status_change_tableview: - # reply = QtWidgets.QMessageBox.question( - # self, - # _translate("MainWindowProfile", "Terminer l'édition du profil "), - # _translate("MainWindowProfile", "Voulez-vous vraiment quitter " - # "?\n Oui : Valider et quitter\n" - # "Non : Annuler"), - # QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No - # ) - - # if reply == QtWidgets.QMessageBox.Yes: - # self.validate_changes() - # self.plot() - # event.accept() - # else: - # event.ignore() - # self.ui.btn_check.setEnabled(True) - # self.ui.btn_go_back.setEnabled(True) - - def msg_box_check_duplication_names(self, list_deleted_names): # name_point,list_deleted_names,counter_list): + def msg_box_check_duplication_names(self, list_deleted_names): if len(list_deleted_names) == 1: text = _translate("MainWindowProfile", "Le nom ''{}'' est dupliqué."