mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
Merge branch 'scenarios' into dev_dylan
This commit is contained in:
commit
f86cd4602c
23 files changed
+207
-86
No files matched your search
@@ -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,
|
||||
|
||||
@@ -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
|
||||
)
|
||||
@@ -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())
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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()
|
||||
Reference in new issue
Block a user