geometry: 'window_profileXYZ' code cleanup.

mesh
Pierre-Antoine Rouby 2023-04-05 10:53:15 +02:00
parent e228a59537
commit a7460193b5
2 changed files with 161 additions and 287 deletions

View File

@ -31,9 +31,9 @@ class PandasModelEditable(QAbstractTableModel):
if header is None:
self.headers = [
_translate("MainWindow_reach", "Nom"),
_translate("MainWindow_reach", "Pk"),
_translate("MainWindow_reach", "Type")
_translate("Geometry", "Name"),
_translate("Geometry", "KP"),
_translate("Geometry", "Type")
]
else:
self.headers = header
@ -62,8 +62,7 @@ class PandasModelEditable(QAbstractTableModel):
if role == Qt.DisplayRole and index.column() == 2:
return self._data.profile[index.row()].profile_type
column_count = self.columnCount()
for column in range(0, column_count):
for column in range(0, self.columnCount()):
if index.column() == column and role == Qt.TextAlignmentRole:
return Qt.AlignHCenter | Qt.AlignVCenter
@ -135,8 +134,11 @@ class PandasModelEditable(QAbstractTableModel):
msg.setText("{} : Valeur saisie incorrecte".format(value))
msg.setInformativeText("Seules les valeurs numériques sont autorisées.")
msg.setWindowTitle("Warning ")
msg.setStyleSheet("QLabel{min-width:250 px; font-size: 13px;} QPushButton{ width:20px; font-size: 12px};"
"background-color: Ligthgray ; color : gray;font-size: 8pt; color: #888a80;")
msg.setStyleSheet("QLabel{min-width:250 px; font-size: 13px}; "
"QPushButton{ width:20px; font-size: 12px}; "
"background-color: Ligthgray ; "
"color : gray;font-size: 8pt; "
"color: #888a80;")
msg.exec_()
def index(self, row, column, parent=QModelIndex()):
@ -195,8 +197,6 @@ class PandasModelEditable(QAbstractTableModel):
file_st.write("\n")
for point in self._data.profile[index_pro].points:
print(point)
for i in [point.x, point.y, point.z, point.name]:
if isinstance(i, float):
if i >= 0:

View File

@ -18,8 +18,9 @@ _translate = QCoreApplication.translate
class View(QMainWindow):
def __init__(self, profile_selected_num: int = 1, profile=None, pk=None, profile_name=None, parent=None):
def __init__(self, profile_selected_num: int = 1,
profile=None, pk=None, profile_name=None,
parent=None):
self.parent = parent
super(View, self).__init__(self.parent)
@ -59,13 +60,15 @@ class View(QMainWindow):
def window_title(self, pk, profile_name=None, profile_selected_num=None):
if profile_name is None or profile_name == "":
profile_name = _translate("MainWindowProfile", "(sans nom)")
self.setWindowTitle(_translate("MainWindowProfile", f"Profil Pk = {pk} \t Section {profile_name} "
f"N°: {profile_selected_num + 1} (selon "
f"l'ordre du tableau)"))
self.setWindowTitle(
_translate("MainWindowProfile",
f"Profil Pk = {pk} \t Section {profile_name} "
f"N°: {profile_selected_num + 1} (selon "
f"l'ordre du tableau)")
)
def tableview_is_modified(self):
self.status_change_tableview = True
print("tableview_is_modified... :", self.status_change_tableview)
def setup_connections(self):
self.ui.btn_sort_asc_x.clicked.connect(self.sort_X_ascending)
@ -80,46 +83,23 @@ class View(QMainWindow):
self.ui.btn_copy.clicked.connect(self.copyTable)
self.ui.btn_paste.clicked.connect(self.pasteTable)
self.ui.btn_check.clicked.connect(self.validate_changes)
# self.button_moveUp.clicked.connect(self.graph)
# self.button_moveDown.clicked.connect(self.graph)
# self.button_moveUp.clicked.connect(self.myslot)
self.ui.btn_go_back.clicked.connect(self.cancel_validate_changes)
self.ui.btn_reset.clicked.connect(self.go_back_to_initial_state)
def setup_model(self):
t0 = time()
if self.profile_selected is None:
# chemin = os.path.abspath(os.pardir)
# print(chemin)
# chemin = os.path.dirname(chemin)
# print(chemin)
# bief = reach.Bief(f"{chemin}/resources/Fichier_ST/Saar.ST")
bief = reach.Bief("../../resources/Fichier_ST/Saar.ST")
# bief = reach.Bief("PamHyrPyQt5/resources/Fichier_ST/test_Pamhyr.st")
# bief = reach.Bief("/home/sylvain.coulibaly/Bureau/testpamhyr/test_Pamhyr.st")
# bief = reach.Bief("C:/Users/csylv/Fichiers-ST/Saar.ST")
# bief = reach.Bief("C:/Users/csylv/Fichiers-ST/testpamhyr/test_Pamhyr.st")
print("** Debut création du modèle **")
profile_num = 0
self.profile_default = bief.profile[profile_num]
self.window_title(bief.profile[0].pk, bief.profile[0].name, profile_num + 1)
self.model = qtableview_profile.PandasModelEditable(self.profile_default)
# self._last_saved_model_data = copy.deepcopy(self.profile_default)
# self._last_saved_model_data = copy.deepcopy(self.model.model_data)
#
# self.reference_data = copy.deepcopy(self.profile_default)
else:
self.model = qtableview_profile.PandasModelEditable(self.profile_selected)
# self._last_saved_model_data = copy.deepcopy(self.profile_selected)
# self.reference_data = copy.deepcopy(self.profile_selected)
self._last_saved_model_data = copy.deepcopy(self.model.model_data)
self.__initial_model_data = copy.deepcopy(self.model.model_data)
self.tableView.setModel(self.model)
self.tableView.setItemDelegate(qtableview_profile.Delegate())
print(" ==> Modèle créé au bout de :", time() - t0, "s")
def graph(self):
"""
@ -135,45 +115,57 @@ class View(QMainWindow):
self.my_canvas.axes.cla()
self.my_canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5)
self.profile_line2D, = self.my_canvas.axes.plot(x, y, color='r', lw=1.5, markersize=7, marker='+',
picker=30)
# pickradius=5)
# print("type", type(self.profile_line2D))
# self.my_canvas.axes.plot(self.model.profile.iloc[:, 4], self.model.profile.iloc[:, 2], vertical_slider_label='y(x)', color='r',
# lw=1.5, markersize=7, marker='+')
self.my_canvas.axes.set_xlabel(_translate("MainWindowProfile", "Abscisse en travers (m)"), color='black',
fontsize=10)
self.my_canvas.axes.set_ylabel(_translate("MainWindowProfile", "Cote (m)"), color='black', fontsize=10)
self.profile_line2D, = self.my_canvas.axes.plot(
x, y, color='r', lw=1.5, markersize=7, marker='+',
picker=30
)
self.my_canvas.axes.set_xlabel(
_translate("MainWindowProfile",
"Abscisse en travers (m)"),
color='black',
fontsize=10
)
self.my_canvas.axes.set_ylabel(
_translate("MainWindowProfile", "Cote (m)"),
color='black', fontsize=10
)
# Ajout des étiquettes sur le graphe
# Add label on graph
self.annotation = []
for i, txt in enumerate(list(ld)):
annotation = self.my_canvas.axes.annotate(txt, (x[i], y[i]), horizontalalignment='left',
verticalalignment='top', annotation_clip=True, fontsize=10,
color='black')
annotation = self.my_canvas.axes.annotate(
txt, (x[i], y[i]),
horizontalalignment='left',
verticalalignment='top',
annotation_clip=True, fontsize=10,
color='black'
)
annotation.set_position((x[i], y[i]))
annotation.set_color("black")
self.annotation.append(annotation)
al = 8. # arrow length in points
arrowprops = dict(clip_on=True, # plotting outside axes on purpose
# frac=1., # make end arrowhead the whole size of arrow
headwidth=5., # in points
facecolor='k')
arrowprops = dict(
clip_on=True, # plotting outside axes on purpose
# frac=1., # make end arrowhead the whole size of arrow
headwidth=5., # in points
facecolor='k'
)
kwargs = dict(
xycoords='axes fraction',
textcoords='offset points',
arrowprops=arrowprops,
)
self.my_canvas.axes.annotate("", (1, 0), xytext=(-al, 0), **kwargs)
self.my_canvas.axes.annotate("", (0, 1), xytext=(0, -al), **kwargs) # left spin arrow
# self.my_canvas.axes.spines[['top', 'right']].set_visible(
# False) # pour enlever le 'cadre' en haut et à droite de la figure
self.my_canvas.axes.spines[['top', 'right']].set_color('none')
self.my_canvas.axes.yaxis.tick_left() # enlève les traits de graduation sur le côté gauche du graphique
self.my_canvas.axes.xaxis.tick_bottom() # enlève les traits de graduation sur la partie supérieure du graphique
self.my_canvas.axes.yaxis.tick_left()
self.my_canvas.axes.xaxis.tick_bottom()
self.my_canvas.axes.set_facecolor('#F9F9F9') # '#E0FFFF')
self.my_canvas.figure.patch.set_facecolor('white')
try:
self.onpick_event = OnpickEvent(self.my_canvas.axes, x, y, x_carto, y_carto, self.tableView)
self.my_canvas.figure.canvas.mpl_connect('pick_event', self.onpick_event.onpick)
@ -181,30 +173,14 @@ class View(QMainWindow):
self.onclick_event = OnpickEvent(self.my_canvas.axes, x, y, x_carto, y_carto, self.tableView)
self.my_canvas.figure.canvas.mpl_connect('button_press_event', self.onclick_event.onclick)
except:
print("pas assez de points pour calculer la ligne d'eau")
self.my_canvas.figure.tight_layout()
print("TODO")
self.my_canvas.figure.tight_layout()
self.my_canvas.figure.canvas.draw_idle()
else:
self.my_canvas.axes.cla()
self.my_canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5)
# def update_graphic(self):
# self.profile_line2D.set_data(self.model.station, self.model.z)
# print(self.annotation)
# for i, txt in enumerate(list(self.model.name)):
# self.annotation[i].set_text(txt)
# self.annotation[i].set_position((self.model.station[i] + 0.5, self.model.z[i]))
# # self.onpick_event = OnpickEvent(self.my_canvas.axes, self.model.station, self.model.z, self.model.x, self.model.y,
# # self.tableView)
# self.my_canvas.figure.canvas.mpl_connect('pick_event', self.onpick_event.onpick)
#
# # self.onclick_event = OnpickEvent(self.my_canvas.axes, self.model.station, self.model.z, self.model.x,
# # self.model.y, self.tableView)
# self.my_canvas.figure.canvas.mpl_connect('button_press_event', self.onclick_event.onclick)
#
# self.my_canvas.figure.canvas.draw_idle()
def insert_row(self):
if len(self.tableView.selectedIndexes()) == 0:
self.model.insertRows(self.model.rowCount(), 1)
@ -212,10 +188,12 @@ class View(QMainWindow):
rows = list(set([index.row() for index in self.tableView.selectedIndexes()]))
for row in rows: # [::-1]:
self.model.insertRows(row + 1, 1)
try:
self.graph() # mise à jour du graphique
except:
pass
self.status_change_tableview = True
self.ui.btn_check.setEnabled(True)
self.ui.btn_go_back.setEnabled(True)
@ -223,10 +201,6 @@ class View(QMainWindow):
def delete_row(self):
rows = list(set([index.row() for index in self.tableView.selectedIndexes()]))
# for row in rows:#[::-1]:
# self.model.removeRows(row, 1)
#
# self.graph() # mise à jour du graphique
if len(rows) > 0:
self.model.remove_rows(rows)
@ -234,7 +208,8 @@ class View(QMainWindow):
try:
self.graph() # mise à jour du graphique
except:
print("Plus rien à afficher")
print("TODO")
self.status_change_tableview = True
self.ui.btn_check.setEnabled(True)
self.ui.btn_go_back.setEnabled(True)
@ -243,7 +218,6 @@ class View(QMainWindow):
def sort_X_ascending(self):
self.model.sort(0, order=Qt.AscendingOrder)
self.graph()
print("self.status_change_tableview ", self.status_change_tableview)
self.status_change_tableview = True
self.ui.btn_check.setEnabled(True)
self.ui.btn_go_back.setEnabled(True)
@ -252,8 +226,6 @@ class View(QMainWindow):
def sort_X_descending(self):
self.model.sort(0, order=Qt.DescendingOrder)
self.graph()
print("initial_state_model", self._last_saved_model_data)
print("self.status_change_tableview ", self.status_change_tableview)
self.status_change_tableview = True
self.ui.btn_check.setEnabled(True)
self.ui.btn_go_back.setEnabled(True)
@ -277,24 +249,25 @@ class View(QMainWindow):
def move_row_down(self):
rows = list(set([index.row() for index in self.tableView.selectedIndexes()]))
for row in rows:
if row < self.model.rowCount() - 1: # on s'arrête à la dernière ligne du tableau
if row < self.model.rowCount() - 1:
self.model.moveRowDown(row)
self.graph()
self.status_change_tableview = True
self.ui.btn_check.setEnabled(True)
self.ui.btn_go_back.setEnabled(True)
self.ui.btn_reset.setEnabled(True)
# print("profile.x ", self.model.profile.x)
def move_row_up(self):
rows = list(set([index.row() for index in self.tableView.selectedIndexes()]))
for row in rows:
if 0 < row: # on s'arrête lorsqu'on est à l'index 0 ie la première ligne
if 0 < row:
self.model.moveRowUp(row)
self.graph()
print("status_change_tableview", self.status_change_tableview)
self.status_change_tableview = True
self.ui.btn_check.setEnabled(True)
self.ui.btn_go_back.setEnabled(True)
@ -303,88 +276,73 @@ class View(QMainWindow):
def eventFilter(self, source, event):
if event.type() == QEvent.KeyPress:
if event == QtGui.QKeySequence.Copy:
# self.copySelection()
self.copyTable()
print("copie")
return True
elif event == QtGui.QKeySequence.Paste:
# self.pasteSelection()
self.pasteTable()
return True
elif event.type() == QEvent.ContextMenu:
# a context icons for the copy/paste operations
elif event.type() == QEvent.ContextMenu:
menu = QtWidgets.QMenu()
copyAction = menu.addAction('Copy')
# copyAction.triggered.connect(self.copySelection)
# self.button_copy.triggered.connect(self.copyTable)
pasteAction = menu.addAction('Paste')
# pasteAction.triggered.connect(self.pasteSelection)
# self.button_paste.triggered.connect(self.pasteTable)
if not self.tableView.selectedIndexes():
pass
# no selection available, both copy and paste are disabled
# copyAction.setEnabled(False)
# if not self.clipboard:
# pass
# # no clipboard contents, paste is disabled
# pasteAction.setEnabled(False)
# self.button_paste.setEnabled(False)
# icons.exec(event.globalPos())
# icons.exec(event.globalPos())
return True
# self.button_copy.setEnabled(False)
# self.button_paste.setEnabled(False)
return super(View, self).eventFilter(source, event)
def copySelection(self):
# clear the current contents of the clipboard
self.clipboard.clear()
selected = self.tableView.selectedIndexes()
rows = []
columns = []
# cycle all selected items to get the minimum row and column, so that the
# reference will always be [0, 0]
for index in selected:
rows.append(index.row())
columns.append(index.column())
minRow = min(rows)
minCol = min(columns)
print(minCol)
print(minRow, columns)
for index in selected:
# append the profile of each selected index
self.clipboard.append((index.row() - minRow, index.column() - minCol, index.data_frame()))
# self.clipboard.append((index.row(), index.column() , index.profile()))
self.clipboard.append((index.row() - minRow,
index.column() - minCol,
index.data_frame()))
def pasteSelection(self):
if not self.clipboard:
return
current = self.tableView.currentIndex()
if not current.isValid():
# in the rare case that there is no current index, use the first row
# and column as target
# In the rare case that there is no current index, use the
# first row and column as target
current = self.model.index(0, 0)
firstRow = current.row()
firstColumn = current.column()
# optional: get the selection model so that pasted indexes will be
# automatically selected at the end
# optional: Get the selection model so that pasted indexes
# will be automatically selected at the end
selection = self.tableView.selectionModel()
print(self.clipboard)
for row, column, data in self.clipboard:
# get the index, with rows and columns relative to the current
# index = self.model.index(firstRow + row, firstColumn + column)
# Get the index, with rows and columns relative to the
# current index = self.model.index(firstRow + row,
# firstColumn + column)
index = self.model.index(firstRow, column)
# set the profile for the index
self.model.setData(index, data, Qt.EditRole) # Qt.DisplayRole)
# add the index to the selection
# Set the profile for the index
self.model.setData(index, data, Qt.EditRole)
# Add the index to the selection
selection.select(index, selection.Select)
# apply the selection model
# Apply the selection model
self.tableView.setSelectionModel(selection)
def copyTable(self):
@ -392,75 +350,63 @@ class View(QMainWindow):
self.model.copyTable(0, self.model.rowCount())
else:
rows = list(set([index.row() for index in self.tableView.selectedIndexes()]))
rows.sort() # pour trier la liste afin de respecter l'ordre des lignes sélectionnées en collant
print(rows)
rows.sort()
df = self.model.model_data.loc[rows, :]
df.to_clipboard(header=None, index=False, excel=True, sep='\t')
def pasteTable(self):
# self.tableView.clearSelection()
if len(self.tableView.selectedIndexes()) == 0:
self.model.pasteTable(self.model.rowCount())
else:
rows = list(set([index.row() for index in self.tableView.selectedIndexes()]))
# rows.sort() # pour trier la liste afin de respecter l'ordre des lignes sélectionnées en collant
for row in rows:
try:
self.model.pasteTable(row + 1)
except:
print("Le collage n'est pas réussi")
print(rows)
print("TODO")
self.graph()
self.status_change_tableview = True
self.ui.btn_check.setEnabled(True)
self.ui.btn_go_back.setEnabled(True)
self.ui.btn_reset.setEnabled(True)
# try:
# self.model.pasteTable()
# self.graph()
# print(" Collage réussi !")
# except:
# pass
# print("Le collage n'a pas été effectué. Vérifier que vous avez copié depuis un presse-papier au format "
# "tabulé")
def handleSave(self):
print("handleSave")
if self.fileName is None or self.fileName == '':
self.fileName, self.filters = QFileDialog.getSaveFileName(self, filter=self.filters)
self.fileName, self.filters = QFileDialog.getSaveFileName(
self, filter=self.filters
)
if self.fileName != '':
with open(self.fileName, 'w') as stream:
csvout = csv.writer(stream, delimiter='\t', quotechar=' ', escapechar=None,
quoting=csv.QUOTE_NONNUMERIC, lineterminator='\n')
# csvout.writerow(self.headers)
csvout = csv.writer(stream, delimiter='\t', quotechar=' ',
escapechar=None,
quoting=csv.QUOTE_NONNUMERIC,
lineterminator='\n')
for row in range(self.model.rowCount(QModelIndex())):
print(self.model.rowCount(QModelIndex()))
rowdata = []
for column in range(self.model.columnCount(QModelIndex())):
item = self.model.index(row, column, QModelIndex()).data(Qt.DisplayRole)
# if column == 0:
# rowdata.append('')
# continue
item = self.model.index(
row, column, QModelIndex()
).data(Qt.DisplayRole)
if item is not None:
rowdata.append(item)
if item == 'nan':
rowdata.remove(item)
else:
pass # rowdata.append('')
csvout.writerow(rowdata)
print(rowdata)
def handleOpen(self):
print("handleOpen")
self.fileName, self.filterName = QFileDialog.getOpenFileName(self)
if self.fileName != '':
with open(self.fileName, 'r') as f:
reader = csv.reader(f, delimiter='\t')
header = next(reader)
buf = []
for row in reader:
row[0] = QCheckBox("-")
@ -472,44 +418,14 @@ class View(QMainWindow):
self.fileName = ''
def cancel_validate_changes(self):
# if self.profile_selected is None:
# self._last_saved_model_data = copy.deepcopy(self.profile_default)
# else:
# self._last_saved_model_data = copy.deepcopy(self.profile_selected)
# data = pd.DataFrame({"x": self._last_saved_model_data.x, "y": self._last_saved_model_data.y,
# "z": self._last_saved_model_data.z, "ld": self._last_saved_model_data.ld,
# "abs": projection_pointXYZ.get_station(self._last_saved_model_data)
#
# })
# self._data = data
# self.model.model_data = data
self.model.model_data = copy.deepcopy(self._last_saved_model_data)
print(self.model.model_data)
# print(data)
self.graph()
self.ui.btn_go_back.setEnabled(False)
# self.button_cancel_validate.setEnabled(False)
# self.status_change_tableview = True
def validate_changes(self):
# self.model.validate_changes()
self.remove_duplicates_point_names()
# self.model.delete_empty_rows()
self.delete_empty_rows()
# if self.profile_selected is None:
# #self._last_saved_model_data = copy.deepcopy(self.profile_default)
# self._last_saved_model_data = copy.deepcopy(self.model.model_data)
#
# # self.profile_selected == copy.deepcopy(
# else:
# #self._last_saved_model_data = copy.deepcopy(self.profile_selected)
# self._last_saved_model_data = copy.deepcopy(self.model.profile)
self._last_saved_model_data = copy.deepcopy(self.model.model_data)
# self._last_saved_model_data = copy.deepcopy(self.model.model_data)
self.ui.btn_check.setEnabled(False)
self.ui.btn_go_back.setEnabled(False)
self.status_change_tableview = False
@ -517,11 +433,11 @@ class View(QMainWindow):
self.model.valide_all_changes()
self.parent.update_graphic_2()
self.parent.update_graphic_1()
self.selected_row = list(set([index.row() for index in self.parent.tableView.selectedIndexes()]))
self.selected_row = list(set(
[index.row() for index in self.parent.tableView.selectedIndexes()]
))
self.parent.update_graphic_3(self.selected_row[0])
# self._last_saved_model_data = copy.deepcopy(self.model.profile)
def set_enable_validate_changes_btn(self):
self.ui.btn_check.setEnabled(True)
@ -531,55 +447,51 @@ class View(QMainWindow):
def set_enable_go_back_initial_state_btn(self):
self.ui.btn_reset.setEnabled(True)
# self._last_saved_model_data = copy.deepcopy(self.profile_default)
def delete_empty_rows(self):
if self.model.data_contains_nan():
buttonReply = QtWidgets.QMessageBox.question(self, _translate("MainWindowProfile", "Suppression les lignes "
"incomplètes"),
_translate("MainWindowProfile", "Supprimer les"
" lignes des cellules non "
"renseignées ?"),
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
print(int(buttonReply))
buttonReply = QtWidgets.QMessageBox.question(
self,
_translate("MainWindowProfile",
"Suppression les lignes incomplètes"),
_translate("MainWindowProfile",
"Supprimer les lignes des cellules"
" non renseignées ?"),
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No
)
if buttonReply == QtWidgets.QMessageBox.Yes:
print('Yes clicked.')
self.model.delete_empty_rows()
# self._last_saved_model_data = copy.deepcopy(self.model.model_data)
if buttonReply == QtWidgets.QMessageBox.No:
# self._last_saved_model_data = copy.deepcopy(self.model.model_data)
print(self.model.model_data)
pass
def remove_duplicates_point_names(self):
counter_list = []
list_deleted_names = []
# is_removed = False
for ind, name_point in enumerate(self.model.name):
if name_point not in counter_list:
counter_list.append(name_point)
elif len(name_point.strip()) > 0 and name_point in counter_list:
# is_removed = True
# self.msg_question(self.model.get_data(), ind)
# self._data.iat[ind, 3] = ""
# self._remove_duplicates_names()
if name_point not in list_deleted_names:
list_deleted_names.append(name_point)
print("mon indddddd", ind)
if list_deleted_names:
self.msg_box_check_duplication_names(list_deleted_names)
def go_back_to_initial_state(self):
reply = QtWidgets.QMessageBox.question(self, _translate("MainWindowProfile", "Retour à l'état initial "),
_translate("MainWindowProfile", "Voulez-vous vraiment annuler toutes "
"les modifications?\n\n "
"\tOui : Revenir à l'état initial\n"
"\tNon : Garder l'état actuel des "
"données du profil"),
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
reply = QtWidgets.QMessageBox.question(
self,
_translate("MainWindowProfile", "Retour à l'état initial "),
_translate("MainWindowProfile",
"Voulez-vous vraiment annuler toutes "
"les modifications?\n\n "
"\tOui : Revenir à l'état initial\n"
"\tNon : Garder l'état actuel des "
"données du profil"),
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No
)
if reply == QtWidgets.QMessageBox.Yes:
self.model.model_data = copy.deepcopy(self.__initial_model_data)
@ -588,99 +500,61 @@ class View(QMainWindow):
self.ui.btn_reset.setEnabled(False)
self.ui.btn_check.setEnabled(False)
self.ui.btn_go_back.setEnabled(False)
if reply == QtWidgets.QMessageBox.No:
elif reply == QtWidgets.QMessageBox.No:
pass
def closeEvent(self, event):
# self.vrai =True
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)
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.graph()
event.accept()
else:
# data = pd.DataFrame({"a": self._last_saved_model_data.x, "b": self._last_saved_model_data.y,
# "c": self._last_saved_model_data.z, "d": self._last_saved_model_data.ld,
# "e": projection_pointXYZ.get_station(self._last_saved_model_data)
#
# })
# # self._data = data
# self.model.model_data = data
#
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):
if len(list_deleted_names) == 1:
text = _translate("MainWindowProfile", "Le nom ''{}'' est dupliqué."
" \n\nYes : Ne garder que la première occurrence. \nNo :"
" Annuler la suppression.".format(list_deleted_names[0]))
text = _translate("MainWindowProfile",
"Le nom ''{}'' est dupliqué."
" \n\nYes : Ne garder que la première occurrence. \nNo :"
" Annuler la suppression.".format(list_deleted_names[0]))
else:
text = _translate("MainWindowProfile", "Les noms suivants : \n{} sont dupliqués"
" \n\nYes : Ne garder que la première occurrence de "
"chaque nom. \nNo : Annuler la suppression.".format(list_deleted_names))
buttonReply = QtWidgets.QMessageBox.question(self, _translate("MainWindowProfile",
"Suppression des noms répétés"),
text,
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
print(int(buttonReply))
text = _translate("MainWindowProfile",
"Les noms suivants : \n{} sont dupliqués"
" \n\nYes : Ne garder que la première occurrence de "
"chaque nom. \nNo :"
" Annuler la suppression.".format(list_deleted_names))
buttonReply = QtWidgets.QMessageBox.question(
self, _translate("MainWindowProfile",
"Suppression des noms répétés"),
text,
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No
)
if buttonReply == QtWidgets.QMessageBox.Yes:
print('Yes clicked.')
self.model.remove_duplicates_names()
if buttonReply == QtWidgets.QMessageBox.No:
print('No clicked.')
# if buttonReply == QtWidgets.QMessageBox.Cancel:
# print('Cancel')
# def showDialog(self):
# msgBox = QtWidgets.QMessageBox()
# msgBox.setIcon(QtWidgets.QMessageBox.Information)
# msgBox.setText("Message box pop up window")
# msgBox.setWindowTitle("QMessageBox Example")
# msgBox.setStandardButtons(QtWidgets.QMessageBox.Ok | QtWidgets.QMessageBox.Cancel)
# msgBox.buttonClicked.connect(self.msgButtonClick)
#
# returnValue = msgBox.exec()
# if returnValue == QtWidgets.QMessageBox.Ok:
# print('OK clicked')
# self.model._remove_duplicates_names()
def msg_button_click(self, i):
print("Button clicked is:", i.text())
def ask_quit(self):
choice = QtWidgets.QMessageBox.question(self, _translate("MainWindowProfile", "Quittez ?"),
_translate("MainWindowProfile", "Etes-vous sûr de vouloir quitter ?"),
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
choice = QtWidgets.QMessageBox.question(
self,
_translate("MainWindowProfile", "Quittez ?"),
_translate("MainWindowProfile",
"Etes-vous sûr de vouloir quitter ?"),
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No
)
return choice == QtWidgets.QMessageBox.Yes
def initial_state_model(self, profile_initial_state):
# profile_initial_state = self.profile_selected
return profile_initial_state
if __name__ == '__main__':
# http://www.xavierdupre.fr/blog/2014-04-12_nojs.html
# import cProfile
# import re
app = QApplication(sys.argv)
app.setStyle("Fusion") # 'Breeze', 'Oxygen', 'QtCurve', 'Windows', 'Fusion'
table = View()
table.show()
# cProfile.run('View()')
# translator = QtCore.QTranslator(app)
# locale = QtCore.QLocale.system().name()
# path = QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)
# translator.load('qt_%s' % locale, path)
# app.installTranslator(translator)
sys.exit(app.exec_())