Merge branch 'scenarios' into dev_dylan

This commit is contained in:
Dylan Jeannin committed 2026-05-22 14:38:52 +02:00
commit f86cd4602c
23 files changed
+207 -86

No files matched your search

-4
View File
@@ -251,7 +251,6 @@ class GeometryReachTableModel(PamhyrTableModel):
self.layoutChanged.emit()
def meshing(self, mesher, data, tableView):
new_profiles = mesher.meshing(
self._data,
**data
@@ -287,7 +286,6 @@ class GeometryReachTableModel(PamhyrTableModel):
self.layoutChanged.emit()
def purge(self, np_purge):
self._undo.push(
PurgeCommand(
self._data, np_purge
@@ -296,7 +294,6 @@ class GeometryReachTableModel(PamhyrTableModel):
self.layoutChanged.emit()
def shift(self, rows, dx, dy, dz):
self._undo.push(
ShiftCommand(
self._data, rows, dx, dy, dz
@@ -305,7 +302,6 @@ class GeometryReachTableModel(PamhyrTableModel):
self.layoutChanged.emit()
def change_reach(self, new_reach, parent):
self._undo.push(
ChangeReachCommand(
new_reach,
+2 -2
View File
@@ -411,13 +411,13 @@ class ShiftCommand(QUndoCommand):
def undo(self):
for i in self._rows:
profile = self._reach.profiles[i]
self._reach.profiles[i].shift(
profile.shift(
-self._dx, -self._dy, -self._dz
)
def redo(self):
for i in self._rows:
profile = self._reach.profiles[i]
self._reach.profiles[i].shift(
profile.shift(
self._dx, self._dy, self._dz
)
+39 -38
View File
@@ -925,9 +925,11 @@ class GraphWidget(QGraphicsView):
self.scale(scaleFactor, scaleFactor)
def mousePressEvent(self, event):
if self._only_display or self.graph._status.is_read_only():
if self._only_display:
return
locked = self.graph._status.is_read_only()
pos = self.mapToScene(event.pos())
self.clicked = True
@@ -936,9 +938,6 @@ class GraphWidget(QGraphicsView):
super(GraphWidget, self).mousePressEvent(event)
return
if self.graph._status.is_read_only():
return
# Move item and select edge item
if self._state == "move":
self._selected_new_edge_src_node = None
@@ -948,39 +947,41 @@ class GraphWidget(QGraphicsView):
edge = items[0]
if edge:
self.set_current_edge(edge)
elif items and type(items[0]) is NodeItem:
self._mouse_origin_x = pos.x()
self._mouse_origin_y = pos.y()
self._current_moved_node = items[0]
if not locked:
if items and type(items[0]) is NodeItem:
self._mouse_origin_x = pos.x()
self._mouse_origin_y = pos.y()
self._current_moved_node = items[0]
# Add nodes and edges
elif self._state == "add":
items = self.items(event.pos())
nodes = list(filter(lambda i: type(i) is NodeItem, items))
if not nodes:
self.add_node(pos)
self.set_selected_new_edge_src_node(None)
else:
if self.selected_new_edge_src_node() is None:
self.set_selected_new_edge_src_node(nodes[0])
if not locked:
# Add nodes and edges
if self._state == "add":
items = self.items(event.pos())
nodes = list(filter(lambda i: type(i) is NodeItem, items))
if not nodes:
self.add_node(pos)
self.set_selected_new_edge_src_node(None)
else:
self.add_edge(self.selected_new_edge_src_node(), nodes[0])
if self.selected_new_edge_src_node() is None:
self.set_selected_new_edge_src_node(nodes[0])
else:
self.add_edge(self.selected_new_edge_src_node(), nodes[0])
# Delete nodes and edges
elif self._state == "del":
self._selected_new_edge_src_node = None
items = list(
filter(
lambda i: type(i) is NodeItem or type(i) is EdgeItem,
self.items(event.pos())
# Delete nodes and edges
elif self._state == "del":
self._selected_new_edge_src_node = None
items = list(
filter(
lambda i: type(i) is NodeItem or type(i) is EdgeItem,
self.items(event.pos())
)
)
)
if len(items) > 0:
item = items[0]
if type(item) is NodeItem:
self.del_node(item)
elif type(item) is EdgeItem:
self.del_edge(item)
if len(items) > 0:
item = items[0]
if type(item) is NodeItem:
self.del_node(item)
elif type(item) is EdgeItem:
self.del_edge(item)
self.update()
super(GraphWidget, self).mousePressEvent(event)
@@ -988,10 +989,12 @@ class GraphWidget(QGraphicsView):
def mouseReleaseEvent(self, event):
self.clicked = False
if self._only_display or self.graph._status.is_read_only():
if self._only_display:
return
if self._state == "move":
locked = self.graph._status.is_read_only()
if not locked and self._state == "move":
if self._current_moved_node is not None:
pos = self.mapToScene(event.pos())
self._undo.push(
@@ -1007,10 +1010,8 @@ class GraphWidget(QGraphicsView):
super(GraphWidget, self).mouseReleaseEvent(event)
def mouseMoveEvent(self, event):
if self.graph._status.is_read_only():
return
pos = self.mapToScene(event.pos())
locked = self.graph._status.is_read_only()
# Selecte item on the fly
items = self.items(event.pos())
+5 -1
View File
@@ -57,6 +57,8 @@ class DefaultMenu(AbstractMenu):
class ScenarioMenu(AbstractMenu):
def run(self):
item = self._items[0]
scenarios = item.graph._study.scenarios
current_scenario = item.graph._study.status.scenario.id
select = self._menu.addAction(self._trad["menu_select_scenario"])
@@ -64,7 +66,9 @@ class ScenarioMenu(AbstractMenu):
delete = None
if item.scenario.id != 0:
delete = self._menu.addAction(self._trad["menu_del_scenario"])
if scenarios.is_leaf(item.scenario):
delete = self._menu.addAction(self._trad["menu_del_scenario"])
if item.scenario.id == current_scenario:
duplicate = self._menu.addAction(
self._trad["menu_dup_scenario"]
+26 -7
View File
@@ -426,30 +426,35 @@ class GraphWidget(QGraphicsView):
dlg.setWindowTitle(self._trad["mb_save_title"])
dlg.setText(self._trad["mb_save_msg"])
opt = QMessageBox.Save | QMessageBox.Cancel
opt = QMessageBox.Cancel | QMessageBox.Save | QMessageBox.Discard
dlg.setStandardButtons(opt)
dlg.setIcon(QMessageBox.Warning)
dlg.button(QMessageBox.Save).setText(self._trad["Save"])
dlg.button(QMessageBox.Discard).setText(self._trad["Don't save"])
dlg.button(QMessageBox.Cancel).setText(self._trad["Cancel"])
res = dlg.exec()
if res == QMessageBox.Save:
return True
return "Save"
elif res == QMessageBox.Cancel:
return False
return "Cancel"
else:
return "Discard"
def select_scenario(self, item):
if type(item) is not ScenarioItem:
return
must_saved = self.dialog_save()
must_save = self.dialog_save()
if must_save == "Cancel":
return
def fn():
self._close_other_window()
if must_saved:
if must_save == "Save":
self._study.save()
self._undo.push(
@@ -465,9 +470,16 @@ class GraphWidget(QGraphicsView):
self.changeScenario.emit(self.sender())
def new_scenario(self, pos):
must_save = self.dialog_save()
if must_save == "Cancel":
return
def fn():
self._close_other_window()
self._study.save()
if must_save == "Save":
self._study.save()
self._undo.push(
AddScenariosCommand(
self._study,
@@ -495,9 +507,16 @@ class GraphWidget(QGraphicsView):
self.changeScenario.emit(self.sender())
def duplicate_scenario(self, item):
must_save = self.dialog_save()
if must_save == "Cancel":
return
def fn():
self._close_other_window()
# self._study.save()
if must_save == "Save":
self._study.save()
self._undo.push(
DuplicateScenariosCommand(
self._study,
+1
View File
@@ -281,6 +281,7 @@ class MainTranslate(UnitTranslate):
self._dict["No"] = _translate("MainWindow", "No")
self._dict["Cancel"] = _translate("MainWindow", "Cancel")
self._dict["Save"] = _translate("MainWindow", "Save")
self._dict["Don't save"] = _translate("MainWindow", "Don't save")
self._dict["Close"] = _translate("MainWindow", "Close")
self._dict["Solver"] = _translate("MainWindow", "Solver")
+10 -1
View File
@@ -90,6 +90,7 @@ class WaitingDialog(PamhyrDialog):
options=[],
parent=parent
)
self._to_close = False
self._payload_fn = payload_fn
@@ -131,7 +132,7 @@ class WaitingDialog(PamhyrDialog):
)
def end_worker(self):
self._worker_thread.terminate()
self._worker_thread.quit()
self._worker_thread.wait()
def close(self):
@@ -141,4 +142,12 @@ class WaitingDialog(PamhyrDialog):
except Exception as e:
logger_exception(e)
self._to_close = True
super().close()
def closeEvent(self, event):
if self._to_close:
super().closeEvent(event)
else:
event.ignore()