mirror of https://gitlab.com/pamhyr/pamhyr2
geometry: Some minor fixes.
parent
a601e7f029
commit
726921af6a
|
|
@ -19,4 +19,4 @@ class Point(object):
|
|||
Returns:
|
||||
True if the point is named.
|
||||
"""
|
||||
return self._name.strip() == ""
|
||||
return self._name.strip() != ""
|
||||
|
|
|
|||
|
|
@ -188,7 +188,9 @@ class ProfileXYZ(Profile):
|
|||
Returns:
|
||||
Projection of the points of the profile on a plane.
|
||||
"""
|
||||
if self.nb_points >= 3:
|
||||
if self.nb_points < 3:
|
||||
return np.array(np.nan)
|
||||
else:
|
||||
first_named_point = None
|
||||
index_first_named_point = None
|
||||
last_named_point = None
|
||||
|
|
@ -227,8 +229,9 @@ class ProfileXYZ(Profile):
|
|||
station_i = (normalized_direction_vec[0] * xi +
|
||||
normalized_direction_vec[1] * yi)
|
||||
station.append(station_i)
|
||||
ret = np.array(station)
|
||||
constant = ret[index_first_named_point]
|
||||
|
||||
ret = np.array(station)
|
||||
constant = ret[index_first_named_point]
|
||||
elif first_named_point is None:
|
||||
vector = Vector1d(first_point_not_nan,
|
||||
last_point_not_nan)
|
||||
|
|
@ -246,8 +249,6 @@ class ProfileXYZ(Profile):
|
|||
constant = ret[index_profile_z_min]
|
||||
|
||||
return (ret - constant)
|
||||
else:
|
||||
return np.array(np.nan)
|
||||
|
||||
def _first_point_not_nan(self):
|
||||
first_point = self._points[0]
|
||||
|
|
|
|||
|
|
@ -230,6 +230,9 @@ class Reach:
|
|||
return (complete, incomplete)
|
||||
|
||||
def _map_guidelines_points(self, func, _filter=None):
|
||||
if len(self._guidelines) == 0:
|
||||
_ = compute_guidelines()
|
||||
|
||||
return list(
|
||||
# Map for each guideline
|
||||
map(
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.setup_model()
|
||||
self.setup_connections()
|
||||
self.setup_plot()
|
||||
self.changed_slider_value()
|
||||
|
||||
def setup_window(self):
|
||||
self.setWindowTitle(f"{self.ui.mainwindow_title} - {self._reach.name}")
|
||||
|
|
@ -55,9 +56,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.tableView.setItemDelegate(qtableview_reach.Delegate())
|
||||
|
||||
def setup_plot(self):
|
||||
self.graphic_1()
|
||||
self.graphic_2()
|
||||
self.graphic_3()
|
||||
if self._reach.number_profiles != 0:
|
||||
self.graphic_1()
|
||||
self.graphic_2()
|
||||
self.graphic_3()
|
||||
|
||||
def setup_connections(self):
|
||||
self.ui.btn_open.clicked.connect(self.open_file_dialog)
|
||||
|
|
@ -75,6 +77,22 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.ui.btn_slider_down.clicked.connect(self.increment_value_slider)
|
||||
self.ui.btn_move_up.clicked.connect(self.changed_profile_slot)
|
||||
|
||||
|
||||
# Profile selection when line change in table
|
||||
self.tableView.selectionModel()\
|
||||
.selectionChanged\
|
||||
.connect(self.select_current_profile)
|
||||
|
||||
# Update plot when profile data change
|
||||
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)
|
||||
self.tableView.selectionModel()\
|
||||
.selectionChanged\
|
||||
.connect(self.update_graphic_2)
|
||||
|
||||
def open_file_dialog(self):
|
||||
options = QFileDialog.Options()
|
||||
DEFAULT_DIRECTORY = os.getenv("HOME")
|
||||
|
|
@ -105,20 +123,6 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.graphic_2()
|
||||
self.graphic_3()
|
||||
|
||||
# Profile selection when line change in table
|
||||
self.tableView.selectionModel()\
|
||||
.selectionChanged\
|
||||
.connect(self.select_current_profile)
|
||||
|
||||
# Update plot when profile data change
|
||||
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)
|
||||
self.tableView.selectionModel()\
|
||||
.selectionChanged\
|
||||
.connect(self.update_graphic_2)
|
||||
|
||||
|
||||
def messagebox_profile_editing(self):
|
||||
|
|
@ -232,9 +236,13 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
for x, y in zip(self._reach.get_x(), self._reach.get_y())
|
||||
]
|
||||
|
||||
|
||||
self.x_complete = self._reach.get_guidelines_x()
|
||||
self.y_complete = self._reach.get_guidelines_y()
|
||||
|
||||
self.line_gl_1 = self.ui.canvas_1.axes.plot(
|
||||
self._reach.get_guidelines_x(),
|
||||
self._reach.get_guidelines_y()
|
||||
self.x_complete,
|
||||
self.y_complete
|
||||
)
|
||||
|
||||
self.plot_selected_1, = self.ui.canvas_1.axes.plot(
|
||||
|
|
@ -310,14 +318,18 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
)
|
||||
self.after_plot_selected_2.set_visible(False)
|
||||
|
||||
try:
|
||||
self.line_kp_zgl = [
|
||||
kp = self._reach.get_kp()
|
||||
self.line_kp_zgl = []
|
||||
for z in self._reach.get_guidelines_z():
|
||||
# Is incomplete guideline?
|
||||
if len(z) != len(kp):
|
||||
continue
|
||||
|
||||
self.line_kp_zgl.append(
|
||||
self.ui.canvas_2.axes.plot(
|
||||
self._reach.get_kp(), i, lw=1.
|
||||
) for i in self._reach.get_guidelines_z()
|
||||
]
|
||||
except:
|
||||
print("Graphic 2: Z guidelines failed")
|
||||
kp, z, lw=1.
|
||||
)
|
||||
)
|
||||
|
||||
self.line_kp_zmin, = self.ui.canvas_2.axes.plot(
|
||||
kp, z_min,
|
||||
|
|
@ -370,8 +382,8 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.line_kp_zgl[i][0].set_data(
|
||||
kp, self._tablemodel.z_complete_guideline()[i]
|
||||
)
|
||||
except:
|
||||
print("Failed to update graphic 2")
|
||||
except Exception as e:
|
||||
print(f"Failed to update graphic 2: {e}")
|
||||
|
||||
self.tableView.model().blockSignals(False)
|
||||
self.ui.canvas_2.axes.autoscale_view(True, True, True)
|
||||
|
|
@ -491,11 +503,12 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
gl = self._reach.profile(ind).name
|
||||
complete, incomplete = self._reach.compute_guidelines()
|
||||
|
||||
self.x_complete = []
|
||||
color_scat_complete = []
|
||||
self.x_incomplete = []
|
||||
color_scat_incomplete = []
|
||||
|
||||
try:
|
||||
x_complete = []
|
||||
color_scat_complete = []
|
||||
x_incomplete = []
|
||||
color_scat_incomplete = []
|
||||
for i, txt in enumerate(list(gl)):
|
||||
if txt in complete:
|
||||
annotate = self.ui.canvas_3.axes.annotate(
|
||||
|
|
@ -508,7 +521,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
size=10
|
||||
)
|
||||
self.annotation_3.append(annotate)
|
||||
x_complete.append([x[i], y[i]])
|
||||
self.x_complete.append([x[i], y[i]])
|
||||
color_scat_complete.append(
|
||||
self.color_complete[self.complete.index(txt)]
|
||||
)
|
||||
|
|
@ -523,7 +536,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
size=10
|
||||
)
|
||||
self.annotation_3.append(annotate)
|
||||
x_incomplete.append([x[i], y[i]])
|
||||
self.x_incomplete.append([x[i], y[i]])
|
||||
color_scat_incomplete.append(
|
||||
self.color_incomplete[incomplete.index(txt)]
|
||||
)
|
||||
|
|
@ -668,7 +681,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.tableView.model().blockSignals(True)
|
||||
|
||||
if len(self.tableView.selectedIndexes()) > 0:
|
||||
row = self.index_selected_row
|
||||
row = self.index_selected_row()
|
||||
|
||||
self.ui.verticalSlider.setValue(row)
|
||||
self.select_plot_graphic_1(row)
|
||||
|
|
@ -715,7 +728,8 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.select_plot_graphic_1(slider_value)
|
||||
self.select_plot_graphic_2(slider_value)
|
||||
self.select_row_profile_slider(slider_value)
|
||||
self.tableView.model().blockSignals(False)
|
||||
|
||||
self.tableView.model().blockSignals(False)
|
||||
|
||||
def increment_value_slider(self):
|
||||
if 0 <= self.ui.verticalSlider.value() < self._tablemodel.rowCount() - 1:
|
||||
|
|
@ -729,7 +743,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
if len(self.tableView.selectedIndexes()) == 0:
|
||||
self._tablemodel.insertRows(self._tablemodel.rowCount(), 1)
|
||||
else:
|
||||
row = self.index_selected_row
|
||||
row = self.index_selected_row()
|
||||
self._tablemodel.insertRows(row + 1, 1)
|
||||
|
||||
if self.filename is not None:
|
||||
|
|
@ -751,9 +765,12 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.graphic_2()
|
||||
self.changed_slider_value()
|
||||
|
||||
@property
|
||||
|
||||
def index_selected_row(self):
|
||||
return self.tableView.selectedIndexes()[0].row()
|
||||
return self.tableView\
|
||||
.selectionModel()\
|
||||
.selectedRows()[0]\
|
||||
.row()
|
||||
|
||||
def sort_ascending(self):
|
||||
self._tablemodel.sort_profiles(True)
|
||||
|
|
@ -761,7 +778,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.changed_slider_value()
|
||||
|
||||
self.update_graphic_2()
|
||||
self.update_graphic_3(self.index_selected_row)
|
||||
self.update_graphic_3(self.index_selected_row())
|
||||
|
||||
def sort_descending(self):
|
||||
self._tablemodel.sort_profiles(False)
|
||||
|
|
@ -770,10 +787,10 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.changed_slider_value()
|
||||
|
||||
self.update_graphic_2()
|
||||
self.update_graphic_3(self.index_selected_row)
|
||||
self.update_graphic_3(self.index_selected_row())
|
||||
|
||||
def move_row_down(self):
|
||||
row = self.index_selected_row
|
||||
row = self.index_selected_row()
|
||||
|
||||
if row < self._tablemodel.rowCount() - 1:
|
||||
self._tablemodel.moveRowDown(row)
|
||||
|
|
@ -796,7 +813,7 @@ class GeometryWindow(QMainWindow, WindowToolKit):
|
|||
self.update_graphic_2()
|
||||
|
||||
def move_row_up(self):
|
||||
row = self.index_selected_row
|
||||
row = self.index_selected_row()
|
||||
|
||||
if 0 < row <= self._tablemodel.rowCount() - 1:
|
||||
self._tablemodel.moveRowUp(row)
|
||||
|
|
|
|||
|
|
@ -159,8 +159,8 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
|
|||
self.close()
|
||||
|
||||
def edit_solver(self):
|
||||
indices = self.find(QTableView, "tableView_solver").selectionModel().selectedRows()
|
||||
for index in indices:
|
||||
indexes = self.find(QTableView, "tableView_solver").selectionModel().selectedRows()
|
||||
for index in indexes:
|
||||
self.edit_solver = ConfigureAddSolverWindow(
|
||||
data=self.solver_table_model.rows[index.row()],
|
||||
parent=self
|
||||
|
|
|
|||
Loading…
Reference in New Issue