mirror of https://gitlab.com/pamhyr/pamhyr2
geomerty: Minor change and fix.
parent
8fdfd52ff1
commit
54909af8dd
|
|
@ -229,7 +229,7 @@ class Reach:
|
|||
|
||||
return (complete, incomplete)
|
||||
|
||||
def _map_guidelines_points(self, func):
|
||||
def _map_guidelines_points(self, func, _filter=None):
|
||||
return list(
|
||||
# Map for each guideline
|
||||
map(
|
||||
|
|
@ -240,7 +240,10 @@ class Reach:
|
|||
self._guidelines[k],
|
||||
)
|
||||
),
|
||||
self._guidelines
|
||||
self._guidelines if not _filter else filter(
|
||||
_filter,
|
||||
self._guidelines
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.tableView = self.ui.tableView
|
||||
self.tableView_header = self.ui.tableView_header
|
||||
|
||||
self.model = None
|
||||
self._tablemodel = None
|
||||
|
||||
self.setup_window()
|
||||
self.setup_model()
|
||||
|
|
@ -47,11 +47,11 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.setWindowTitle(f"{self.ui.mainwindow_title} - {self._reach.name}")
|
||||
|
||||
def setup_model(self):
|
||||
self.model = qtableview_reach.PandasModelEditable(
|
||||
self._tablemodel = qtableview_reach.PandasModelEditable(
|
||||
headers = self.ui.tableView_header,
|
||||
reach = self._reach
|
||||
)
|
||||
self.tableView.setModel(self.model)
|
||||
self.tableView.setModel(self._tablemodel)
|
||||
self.tableView.setItemDelegate(qtableview_reach.Delegate())
|
||||
|
||||
def setup_plot(self):
|
||||
|
|
@ -98,13 +98,12 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
if filename != "":
|
||||
size = os.stat(filename).st_size
|
||||
self._reach.import_geometry(filename)
|
||||
self.model.layoutChanged.emit()
|
||||
self._tablemodel.layoutChanged.emit()
|
||||
|
||||
self.update_profile_windows()
|
||||
self.graphic_1()
|
||||
self.graphic_2()
|
||||
self.graphic_3()
|
||||
self.fichier_ouvert = True
|
||||
|
||||
# Profile selection when line change in table
|
||||
self.tableView.selectionModel()\
|
||||
|
|
@ -112,8 +111,8 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
.connect(self.select_current_profile)
|
||||
|
||||
# Update plot when profile data change
|
||||
self.model.dataChanged.connect(self.update_graphic_1)
|
||||
self.model.dataChanged.connect(self.update_graphic_2)
|
||||
self._tablemodel.dataChanged.connect(self.update_graphic_1)
|
||||
self._tablemodel.dataChanged.connect(self.update_graphic_2)
|
||||
self.tableView.selectionModel()\
|
||||
.selectionChanged\
|
||||
.connect(self.update_graphic_1)
|
||||
|
|
@ -211,14 +210,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
pyqtSlot(bool)
|
||||
|
||||
def changed_profile_slot(self, status):
|
||||
print("status du changement ", status)
|
||||
self.update_view1 = status
|
||||
print(self.update_view1)
|
||||
|
||||
def update_graphic_1_profile(self):
|
||||
if self.update_view1:
|
||||
self.update_graphic_1()
|
||||
print("update_graphic_1_profile")
|
||||
|
||||
def update_profile_windows(self):
|
||||
self.list_second_window = []
|
||||
|
|
@ -322,10 +314,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.line_kp_zgl = [
|
||||
self.ui.canvas_2.axes.plot(
|
||||
self._reach.get_kp(), i, lw=1.
|
||||
) for i in self.model.z_complete_guideline()
|
||||
) for i in self._reach.get_guidelines_z()
|
||||
]
|
||||
except:
|
||||
print("TODO")
|
||||
print("Graphic 2: Z guidelines failed")
|
||||
|
||||
self.line_kp_zmin, = self.ui.canvas_2.axes.plot(
|
||||
kp, z_min,
|
||||
|
|
@ -342,16 +334,16 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
def update_graphic_1(self):
|
||||
self.tableView.model().blockSignals(True)
|
||||
|
||||
for ind in range(self.model.rowCount()):
|
||||
for ind in range(self._tablemodel.rowCount()):
|
||||
self.line_xy[ind][0].set_data(
|
||||
self._reach.profile(ind).x,
|
||||
self._reach.profile(ind).y
|
||||
self._reach.profile(ind).x(),
|
||||
self._reach.profile(ind).y()
|
||||
)
|
||||
|
||||
for i in range(len(self.line_gl_1)):
|
||||
self.line_gl_1[i].set_data(
|
||||
[x[i] for x in self.get_x_complete_list_gl],
|
||||
[y[i] for y in self.get_y_complete_list_gl]
|
||||
[x[i] for x in self.x_complete],
|
||||
[y[i] for y in self.y_complete]
|
||||
)
|
||||
|
||||
self.tableView.model().blockSignals(False)
|
||||
|
|
@ -376,10 +368,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
try:
|
||||
for i in range(len(self.line_kp_zgl)):
|
||||
self.line_kp_zgl[i][0].set_data(
|
||||
kp, self.model.z_complete_guideline()[i]
|
||||
kp, self._tablemodel.z_complete_guideline()[i]
|
||||
)
|
||||
except:
|
||||
print("TODO")
|
||||
print("Failed to update graphic 2")
|
||||
|
||||
self.tableView.model().blockSignals(False)
|
||||
self.ui.canvas_2.axes.autoscale_view(True, True, True)
|
||||
|
|
@ -494,47 +486,46 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
|
||||
self.annotation_3[:] = []
|
||||
|
||||
x = self.profile(ind).get_station()
|
||||
x = self._reach.profile(ind).get_station()
|
||||
y = self._reach.profile(ind).z()
|
||||
gl = self._reach.profile(ind).name
|
||||
get_complete_list_gl = self._reach.get_complete_list_gl()
|
||||
get_incomplete_list_gl = self._reach.get_incomplete_list_gl()
|
||||
complete, incomplete = self._reach.compute_guidelines()
|
||||
|
||||
try:
|
||||
x_gl_complete = []
|
||||
color_scat_complete_gl = []
|
||||
x_gl_incomplete = []
|
||||
color_scat_incomplete_gl = []
|
||||
x_complete = []
|
||||
color_scat_complete = []
|
||||
x_incomplete = []
|
||||
color_scat_incomplete = []
|
||||
for i, txt in enumerate(list(gl)):
|
||||
if txt in get_complete_list_gl:
|
||||
if txt in complete:
|
||||
annotate = self.ui.canvas_3.axes.annotate(
|
||||
txt, (x[i], y[i]), horizontalalignment='left',
|
||||
verticalalignment='top', annotation_clip=True,
|
||||
fontsize=11,
|
||||
color=self.color_complete_gl[
|
||||
get_complete_list_gl.index(txt)
|
||||
color=self.color_complete[
|
||||
complete.index(txt)
|
||||
],
|
||||
size=10
|
||||
)
|
||||
self.annotation_3.append(annotate)
|
||||
x_gl_complete.append([x[i], y[i]])
|
||||
color_scat_complete_gl.append(
|
||||
self.color_complete_gl[self.complete_gl.index(txt)]
|
||||
x_complete.append([x[i], y[i]])
|
||||
color_scat_complete.append(
|
||||
self.color_complete[self.complete.index(txt)]
|
||||
)
|
||||
elif txt in get_incomplete_list_gl:
|
||||
elif txt in incomplete:
|
||||
annotate = self.ui.canvas_3.axes.annotate(
|
||||
txt, (x[i], y[i]), horizontalalignment='left',
|
||||
verticalalignment='top', annotation_clip=True,
|
||||
fontsize=11,
|
||||
color=self.color_incomplete_gl[
|
||||
get_incomplete_list_gl.index(txt)
|
||||
color=self.color_incomplete[
|
||||
incomplete.index(txt)
|
||||
],
|
||||
size=10
|
||||
)
|
||||
self.annotation_3.append(annotate)
|
||||
x_gl_incomplete.append([x[i], y[i]])
|
||||
color_scat_incomplete_gl.append(
|
||||
self.color_incomplete_gl[get_incomplete_list_gl.index(txt)]
|
||||
x_incomplete.append([x[i], y[i]])
|
||||
color_scat_incomplete.append(
|
||||
self.color_incomplete[incomplete.index(txt)]
|
||||
)
|
||||
except:
|
||||
print("FIXME")
|
||||
|
|
@ -559,43 +550,34 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
def update_graphic_3(self, ind: int):
|
||||
self.tableView.model().blockSignals(True)
|
||||
|
||||
if ind == 0:
|
||||
# ind - 1
|
||||
if ind != 0:
|
||||
self.profile_i_minus_1.set_data(
|
||||
self.get_station(ind - 1),
|
||||
self.get_elevation(ind - 1)
|
||||
)
|
||||
else:
|
||||
self.profile_i_minus_1.set_data([], [])
|
||||
self.profile_i.set_data(
|
||||
self.get_station(ind),
|
||||
self.get_elevation(ind)
|
||||
)
|
||||
|
||||
# ind
|
||||
self.profile_i.set_data(
|
||||
self.get_station(ind),
|
||||
self.get_elevation(ind)
|
||||
)
|
||||
|
||||
# ind + 1
|
||||
if ind != self._tablemodel.rowCount() - 1:
|
||||
self.profile_i_plus_1.set_data(
|
||||
self.get_station(ind + 1),
|
||||
self.get_elevation(ind + 1)
|
||||
)
|
||||
elif ind == self.model.rowCount() - 1:
|
||||
self.profile_i_minus_1.set_data(
|
||||
self.get_station(ind - 1),
|
||||
self.get_elevation(ind - 1)
|
||||
)
|
||||
self.profile_i.set_data(
|
||||
self.get_station(ind),
|
||||
self.get_elevation(ind)
|
||||
)
|
||||
else:
|
||||
self.profile_i_plus_1.set_data([], [])
|
||||
elif 0 < ind < self.model.rowCount() - 1:
|
||||
self.profile_i_minus_1.set_data(
|
||||
self.get_station(ind - 1),
|
||||
self.get_elevation(ind - 1)
|
||||
)
|
||||
self.profile_i.set_data(
|
||||
self.get_station(ind),
|
||||
self.get_elevation(ind)
|
||||
)
|
||||
self.profile_i_plus_1.set_data(
|
||||
self.get_station(ind + 1),
|
||||
self.get_elevation(ind + 1)
|
||||
)
|
||||
|
||||
self.tableView.model().blockSignals(False)
|
||||
self.update_annotate_3(ind)
|
||||
|
||||
# Update graphic 3
|
||||
self.update_annotate_3(ind)
|
||||
self.ui.canvas_3.axes.relim()
|
||||
self.ui.canvas_3.axes.autoscale_view()
|
||||
self.ui.canvas_3.figure.canvas.draw_idle()
|
||||
|
|
@ -603,47 +585,48 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
def select_plot_graphic_1(self, ind: int):
|
||||
self.tableView.model().blockSignals(True)
|
||||
|
||||
if 0 <= ind < self.model.rowCount():
|
||||
self.plot_selected_1.set_data(self._reach.profile(ind).x,
|
||||
self._reach.profile(ind).y)
|
||||
if 0 <= ind < self._tablemodel.rowCount():
|
||||
self.plot_selected_1.set_data(self._reach.profile(ind).x(),
|
||||
self._reach.profile(ind).y())
|
||||
self.plot_selected_1.set_visible(True)
|
||||
|
||||
self.tableView.model().blockSignals(False)
|
||||
|
||||
def select_plot_graphic_2(self, ind: int):
|
||||
kp_i = self._reach.profile(ind).kp
|
||||
z_min_i = self._reach.profile(ind).z_min
|
||||
z_max_i = self._reach.profile(ind).z_max
|
||||
z_min_i = self._reach.profile(ind).z_min()
|
||||
z_max_i = self._reach.profile(ind).z_max()
|
||||
|
||||
if 0 <= ind < self.model.rowCount():
|
||||
if 0 <= ind < self._tablemodel.rowCount():
|
||||
self.plot_selected_2.set_data((kp_i, kp_i),
|
||||
(z_min_i, z_max_i))
|
||||
self.plot_selected_2.set_visible(True)
|
||||
|
||||
def select_before_plot_selected_1(self, ind: int):
|
||||
if 0 <= ind < self.model.rowCount():
|
||||
if 0 <= ind < self._tablemodel.rowCount():
|
||||
self.before_plot_selected_1.set_data(
|
||||
self._reach.profile(ind).x,
|
||||
self._reach.profile(ind).y
|
||||
self._reach.profile(ind).x(),
|
||||
self._reach.profile(ind).y()
|
||||
)
|
||||
|
||||
self.before_plot_selected_1.set_visible(True)
|
||||
self.ui.canvas_1.figure.canvas.draw_idle()
|
||||
|
||||
def select_after_plot_selected_1(self, ind: int):
|
||||
if 0 <= ind < self.model.rowCount():
|
||||
if 0 <= ind < self._tablemodel.rowCount():
|
||||
self.after_plot_selected_1.set_data(
|
||||
self._reach.profile(ind).x,
|
||||
self._reach.profile(ind).y
|
||||
self._reach.profile(ind).x(),
|
||||
self._reach.profile(ind).y()
|
||||
)
|
||||
|
||||
self.after_plot_selected_1.set_visible(True)
|
||||
self.ui.canvas_1.figure.canvas.draw_idle()
|
||||
|
||||
def select_before_plot_selected_2(self, ind: int):
|
||||
if 0 <= ind < self.model.rowCount():
|
||||
if 0 <= ind < self._tablemodel.rowCount():
|
||||
kp_i = self._reach.profile(ind).kp
|
||||
z_min_i = self._reach.profile(ind).z_min
|
||||
z_max_i = self._reach.profile(ind).z_max
|
||||
z_min_i = self._reach.profile(ind).z_min()
|
||||
z_max_i = self._reach.profile(ind).z_max()
|
||||
|
||||
self.before_plot_selected_2.set_data(
|
||||
(kp_i, kp_i),
|
||||
|
|
@ -654,10 +637,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.ui.canvas_2.figure.canvas.draw_idle()
|
||||
|
||||
def select_after_plot_selected_2(self, ind: int):
|
||||
if 0 <= ind < self.model.rowCount():
|
||||
if 0 <= ind < self._tablemodel.rowCount():
|
||||
kp_i = self._reach.profile(ind).kp
|
||||
z_min_i = self._reach.profile(ind).z_min
|
||||
z_max_i = self._reach.profile(ind).z_max
|
||||
z_min_i = self._reach.profile(ind).z_min()
|
||||
z_max_i = self._reach.profile(ind).z_max()
|
||||
|
||||
self.after_plot_selected_2.set_data(
|
||||
(kp_i, kp_i),
|
||||
|
|
@ -696,12 +679,12 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.select_after_plot_selected_1(row + 1)
|
||||
self.before_plot_selected_2.set_visible(False)
|
||||
self.select_after_plot_selected_2(row + 1)
|
||||
elif 0 < row < self.model.rowCount() - 1:
|
||||
elif 0 < row < self._tablemodel.rowCount() - 1:
|
||||
self.select_before_plot_selected_1(row - 1)
|
||||
self.select_after_plot_selected_1(row + 1)
|
||||
self.select_before_plot_selected_2(row - 1)
|
||||
self.select_after_plot_selected_2(row + 1)
|
||||
elif row == self.model.rowCount() - 1:
|
||||
elif row == self._tablemodel.rowCount() - 1:
|
||||
self.after_plot_selected_1.set_visible(False)
|
||||
self.select_before_plot_selected_1(row - 1)
|
||||
self.after_plot_selected_2.set_visible(False)
|
||||
|
|
@ -715,8 +698,8 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
def changed_slider_value(self):
|
||||
self.tableView.model().blockSignals(True)
|
||||
|
||||
if self.model.rowCount() != 0:
|
||||
self.ui.verticalSlider.setMaximum(self.model.rowCount() - 1)
|
||||
if self._tablemodel.rowCount() != 0:
|
||||
self.ui.verticalSlider.setMaximum(self._tablemodel.rowCount() - 1)
|
||||
|
||||
slider_value = self.ui.verticalSlider.value()
|
||||
kp = self._reach.profile(slider_value).kp
|
||||
|
|
@ -735,19 +718,19 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.tableView.model().blockSignals(False)
|
||||
|
||||
def increment_value_slider(self):
|
||||
if 0 <= self.ui.verticalSlider.value() < self.model.rowCount() - 1:
|
||||
if 0 <= self.ui.verticalSlider.value() < self._tablemodel.rowCount() - 1:
|
||||
self.ui.verticalSlider.setValue(self.ui.verticalSlider.value() + 1)
|
||||
|
||||
def decrement_value_slider(self):
|
||||
if 0 < self.ui.verticalSlider.value() < self.model.rowCount():
|
||||
if 0 < self.ui.verticalSlider.value() < self._tablemodel.rowCount():
|
||||
self.ui.verticalSlider.setValue(self.ui.verticalSlider.value() - 1)
|
||||
|
||||
def insert_row(self):
|
||||
if len(self.tableView.selectedIndexes()) == 0:
|
||||
self.model.insertRows(self.model.rowCount(), 1)
|
||||
self._tablemodel.insertRows(self._tablemodel.rowCount(), 1)
|
||||
else:
|
||||
row = self.index_selected_row
|
||||
self.model.insertRows(row + 1, 1)
|
||||
self._tablemodel.insertRows(row + 1, 1)
|
||||
|
||||
if self.filename is not None:
|
||||
self.graphic_1()
|
||||
|
|
@ -760,7 +743,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
))
|
||||
|
||||
if len(rows) > 0:
|
||||
self.model.remove_rows(rows)
|
||||
self._tablemodel.remove_rows(rows)
|
||||
|
||||
self.update_graphic_1()
|
||||
self.select_current_profile()
|
||||
|
|
@ -770,10 +753,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
|
||||
@property
|
||||
def index_selected_row(self):
|
||||
return [index.row() for index in self.tableView.selectedIndexes()][0]
|
||||
return self.tableView.selectedIndexes()[0].row()
|
||||
|
||||
def sort_ascending(self):
|
||||
self.model.sort_profiles(True)
|
||||
self._tablemodel.sort_profiles(True)
|
||||
self.select_current_profile()
|
||||
self.changed_slider_value()
|
||||
|
||||
|
|
@ -781,7 +764,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.update_graphic_3(self.index_selected_row)
|
||||
|
||||
def sort_descending(self):
|
||||
self.model.sort_profiles(False)
|
||||
self._tablemodel.sort_profiles(False)
|
||||
|
||||
self.select_current_profile()
|
||||
self.changed_slider_value()
|
||||
|
|
@ -792,22 +775,22 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
def move_row_down(self):
|
||||
row = self.index_selected_row
|
||||
|
||||
if row < self.model.rowCount() - 1:
|
||||
self.model.moveRowDown(row)
|
||||
if row < self._tablemodel.rowCount() - 1:
|
||||
self._tablemodel.moveRowDown(row)
|
||||
self.update_graphic_3(row + 1)
|
||||
self.ui.canvas_3.axes.relim()
|
||||
self.ui.canvas_3.axes.autoscale_view()
|
||||
|
||||
if row < self.model.rowCount() - 2:
|
||||
if row < self._tablemodel.rowCount() - 2:
|
||||
self.select_before_plot_selected_1(row)
|
||||
self.select_after_plot_selected_1(row + 2)
|
||||
self.select_before_plot_selected_2(row)
|
||||
self.select_after_plot_selected_2(row + 2)
|
||||
|
||||
if row == self.model.rowCount() - 2:
|
||||
self.select_before_plot_selected_1(self.model.rowCount() - 2)
|
||||
if row == self._tablemodel.rowCount() - 2:
|
||||
self.select_before_plot_selected_1(self._tablemodel.rowCount() - 2)
|
||||
self.after_plot_selected_1.set_visible(False)
|
||||
self.select_before_plot_selected_2(self.model.rowCount() - 2)
|
||||
self.select_before_plot_selected_2(self._tablemodel.rowCount() - 2)
|
||||
self.after_plot_selected_2.set_visible(False)
|
||||
|
||||
self.update_graphic_2()
|
||||
|
|
@ -815,8 +798,8 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
def move_row_up(self):
|
||||
row = self.index_selected_row
|
||||
|
||||
if 0 < row <= self.model.rowCount() - 1:
|
||||
self.model.moveRowUp(row)
|
||||
if 0 < row <= self._tablemodel.rowCount() - 1:
|
||||
self._tablemodel.moveRowUp(row)
|
||||
|
||||
if row == 1:
|
||||
self.select_after_plot_selected_1(row)
|
||||
|
|
@ -824,7 +807,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.select_after_plot_selected_2(row)
|
||||
self.before_plot_selected_2.set_visible(False)
|
||||
|
||||
elif row == self.model.rowCount() - 1:
|
||||
elif row == self._tablemodel.rowCount() - 1:
|
||||
self.select_before_plot_selected_1(row - 2)
|
||||
self.select_after_plot_selected_1(row)
|
||||
self.select_before_plot_selected_2(row - 2)
|
||||
|
|
@ -851,9 +834,9 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
filename, filters = QFileDialog.getSaveFileName(
|
||||
self,
|
||||
filter=_translate("MainWindow_reach",
|
||||
"Fichiers .ST(*.ST ou *.st)")
|
||||
"Files .ST(*.ST or *.st)")
|
||||
+ ";; " +
|
||||
_translate("MainWindow_reach", "Tous les fichiers "
|
||||
_translate("MainWindow_reach", "All files "
|
||||
"(*)"),
|
||||
options=options
|
||||
)
|
||||
|
|
@ -861,7 +844,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
current_dir = os.path.split(filename)[0] or DEFAULT_DIRECTORY
|
||||
|
||||
if filename != '':
|
||||
self.model.export_reach(filename)
|
||||
self._tablemodel.export_reach(filename)
|
||||
|
||||
def handleOpen(self):
|
||||
filename, filterName = QFileDialog.getOpenFileName(self)
|
||||
|
|
@ -875,7 +858,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
row[0] = QCheckBox("-")
|
||||
buf.append(row)
|
||||
|
||||
self.model = None
|
||||
self.model = qtableview_reach.PandasModelEditable(buf)
|
||||
self.tableView.setModel(self.model)
|
||||
self._tablemodel = None
|
||||
self._tablemodel = qtableview_reach.PandasModelEditable(buf)
|
||||
self.tableView.setModel(self._tablemodel)
|
||||
filename = ''
|
||||
|
|
|
|||
|
|
@ -46,31 +46,32 @@ class PandasModelEditable(QAbstractTableModel):
|
|||
return len(self.headers)
|
||||
|
||||
def data(self, index, role=Qt.DisplayRole):
|
||||
if index.isValid():
|
||||
if role == Qt.DisplayRole and index.column() == 0:
|
||||
return self._reach.profile(index.row()).name
|
||||
if not index.isValid():
|
||||
return QVariant()
|
||||
|
||||
if role == Qt.DisplayRole and index.column() == 1:
|
||||
kp = self._reach.profile(index.row()).kp
|
||||
return f"{kp:.4f}"
|
||||
if role == Qt.DisplayRole and index.column() == 0:
|
||||
return self._reach.profile(index.row()).name
|
||||
|
||||
if role == Qt.DisplayRole and index.column() == 2:
|
||||
return self._reach.profile(index.row()).profile_type
|
||||
if role == Qt.DisplayRole and index.column() == 1:
|
||||
kp = self._reach.profile(index.row()).kp
|
||||
return f"{kp:.4f}"
|
||||
|
||||
for column in range(0, self.columnCount()):
|
||||
if index.column() == column and role == Qt.TextAlignmentRole:
|
||||
return Qt.AlignHCenter | Qt.AlignVCenter
|
||||
if role == Qt.DisplayRole and index.column() == 2:
|
||||
return self._reach.profile(index.row()).profile_type
|
||||
|
||||
if role == Qt.ForegroundRole and index.column() == 0:
|
||||
name = self._reach.profile(index.row()).name\
|
||||
.strip()\
|
||||
.lower()
|
||||
if (name == "upstream" or name == "up" or
|
||||
name == _translate("Geometry", "upstream")):
|
||||
return QtGui.QColor("Green")
|
||||
elif (name == "downstream" or name == "down" or
|
||||
name == _translate("Geometry", "downstream")):
|
||||
return QtGui.QColor("Red")
|
||||
if role == Qt.TextAlignmentRole:
|
||||
return Qt.AlignHCenter | Qt.AlignVCenter
|
||||
|
||||
if role == Qt.ForegroundRole and index.column() == 0:
|
||||
name = self._reach.profile(index.row()).name\
|
||||
.strip()\
|
||||
.lower()
|
||||
if (name == "upstream" or name == "up" or
|
||||
name == _translate("Geometry", "upstream")):
|
||||
return QtGui.QColor("Green")
|
||||
elif (name == "downstream" or name == "down" or
|
||||
name == _translate("Geometry", "downstream")):
|
||||
return QtGui.QColor("Red")
|
||||
|
||||
return QVariant()
|
||||
|
||||
|
|
@ -89,11 +90,11 @@ class PandasModelEditable(QAbstractTableModel):
|
|||
column = index.column()
|
||||
|
||||
if role == Qt.EditRole and index.column() != 2:
|
||||
if role == Qt.EditRole and index.column() == 0:
|
||||
if index.column() == 0:
|
||||
self._reach.profile(index.row()).name = value
|
||||
|
||||
if role == Qt.EditRole and index.column() == 1:
|
||||
self._reach.profile(index.row()).pk = float(value)
|
||||
if index.column() == 1:
|
||||
self._reach.profile(index.row()).kp = value
|
||||
|
||||
self.dataChanged.emit(index, index)
|
||||
self.layoutChanged.emit()
|
||||
|
|
@ -173,27 +174,20 @@ class Delegate(QtWidgets.QStyledItemDelegate):
|
|||
self.setModelDataEvent = setModelDataEvent
|
||||
|
||||
def createEditor(self, parent, option, index):
|
||||
"""retourne le widget (éditeur) pour éditer l'item se trouvant à l'index index."""
|
||||
index.model().data(index, Qt.DisplayRole)
|
||||
return QtWidgets.QLineEdit(parent)
|
||||
|
||||
def setEditorData(self, editor, index):
|
||||
"""permet de transmettre à l'éditeur editor les données à afficher à partir du modèle se trouvant à l'index
|
||||
index. """
|
||||
value = index.model().data(index, Qt.DisplayRole) # DisplayRole
|
||||
editor.setText(str(value)) # récupère la valeur de la cellule applique la méthode définie dans setData
|
||||
print('Donnée éditée dans la case [{},{}] :'.format(index.row(), index.column()), value)
|
||||
|
||||
def setModelData(self, editor, model, index):
|
||||
"""permet de récupérer les données de l'éditeur et de les stocker à l'intérieur du modèle, à l'index identifié
|
||||
par le paramètre index """
|
||||
model.setData(index, editor.currentItem().text())
|
||||
model.setData(index, editor.text())
|
||||
|
||||
if not self.setModelDataEvent is None:
|
||||
self.setModelDataEvent()
|
||||
|
||||
def updateEditorGeometry(self, editor, option, index):
|
||||
"""permet de redimensionner l'éditeur à la bonne taille lorsque la taille de la vue change"""
|
||||
editor.setGeometry(option.rect)
|
||||
|
||||
class Delegate1(QtWidgets.QStyledItemDelegate):
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ def main():
|
|||
|
||||
application = ApplicationWindow(conf=conf)
|
||||
application.show()
|
||||
sys.exit(int(app.exec_()))
|
||||
sys.exit(app.exec_())
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
|
|||
Loading…
Reference in New Issue