Commit bcaca20f authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Geometry: Fix status propagation from ProfileXYZ to PointXYZ.

Showing with 36 additions and 35 deletions
+36 -35
......@@ -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()
......
......@@ -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]
......
......@@ -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()
......
......@@ -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
)
)
......
......@@ -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é."
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment