mirror of https://gitlab.com/pamhyr/pamhyr2
Scenario: Add context menu with add scenario and select senario action.
parent
4ff81a0b63
commit
cc84b96024
|
|
@ -47,44 +47,22 @@ class AbstractMenu(object):
|
|||
|
||||
class DefaultMenu(AbstractMenu):
|
||||
def run(self):
|
||||
add_node = self._menu.addAction(self._trad["menu_add_node"])
|
||||
add_node = self._menu.addAction(self._trad["menu_add_scenario"])
|
||||
|
||||
action = self._exec()
|
||||
if action == add_node:
|
||||
self._parent.add_node(self._pos)
|
||||
self._parent.new_scenario(self._pos)
|
||||
|
||||
|
||||
class NodeMenu(AbstractMenu):
|
||||
class ScenarioMenu(AbstractMenu):
|
||||
def run(self):
|
||||
item = self._items[0]
|
||||
node = item.node
|
||||
|
||||
delete = self._menu.addAction(self._trad["menu_del_node"])
|
||||
|
||||
is_internal = self._graph.is_internal_node(node)
|
||||
if is_internal:
|
||||
res = self._graph.reservoir.get_assoc_to_node(node)
|
||||
if res is not None:
|
||||
edt_res = self._menu.addAction(
|
||||
self._trad["menu_edit_res_node"]
|
||||
)
|
||||
del_res = self._menu.addAction(
|
||||
self._trad["menu_del_res_node"]
|
||||
)
|
||||
res_edit = True
|
||||
else:
|
||||
add_res = self._menu.addAction(self._trad["menu_add_res_node"])
|
||||
res_edit = False
|
||||
select = self._menu.addAction(self._trad["menu_select_scenario"])
|
||||
# delete = self._menu.addAction(self._trad["menu_del_scenario"])
|
||||
|
||||
action = self._exec()
|
||||
if action == delete:
|
||||
self._parent.del_node(item)
|
||||
elif is_internal:
|
||||
if res_edit:
|
||||
if action == edt_res:
|
||||
self._parent.edit_node_reservoir(node)
|
||||
elif action == del_res:
|
||||
self._parent.del_node_reservoir(node)
|
||||
else:
|
||||
if action == add_res:
|
||||
self._parent.add_node_reservoir(node)
|
||||
if action == select:
|
||||
self._parent.select_scenario(item)
|
||||
# if action == delete:
|
||||
# self._parent.del_node(item)
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ from PyQt5.QtWidgets import (
|
|||
|
||||
from View.Scenarios.UndoCommand import *
|
||||
from View.Scenarios.ContextMenu import (
|
||||
DefaultMenu, NodeMenu,
|
||||
DefaultMenu, ScenarioMenu,
|
||||
)
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
|
@ -85,7 +85,7 @@ class ScenarioItem(QGraphicsTextItem):
|
|||
extra = 2
|
||||
pcolor = QColor(Qt.black)
|
||||
color = QColor("#aac3d7")
|
||||
if self.graph.graph.status.scenario is self.scenario:
|
||||
if self.graph._study.status.scenario is self.scenario:
|
||||
color = QColor("#eeaba5")
|
||||
elif self.scenario.id == 0:
|
||||
color = QColor("#d3c1d8")
|
||||
|
|
@ -210,27 +210,23 @@ class GraphWidget(QGraphicsView):
|
|||
changeEdge = pyqtSignal(object)
|
||||
changeNode = pyqtSignal(object)
|
||||
|
||||
def __init__(self, graph, parent=None,
|
||||
def __init__(self, study, parent=None,
|
||||
min_size=(400, 400), max_size=None,
|
||||
size=None, undo=None, trad=None):
|
||||
super(GraphWidget, self).__init__(parent=parent)
|
||||
|
||||
self._study = study
|
||||
|
||||
self.parent = parent
|
||||
self._undo = undo
|
||||
self._trad = trad
|
||||
|
||||
self.graph = graph
|
||||
|
||||
self._selected_item = None
|
||||
self._current_moved_node = None
|
||||
self.m_origin_x = 0.0
|
||||
self.m_origin_y = 0.0
|
||||
|
||||
self.scenarios_items = {}
|
||||
self.edge_items = []
|
||||
|
||||
self.m_origin_x = 0.0
|
||||
self.m_origin_y = 0.0
|
||||
self.clicked = False
|
||||
|
||||
self.setup_scene(min_size, max_size, size)
|
||||
|
||||
def setup_scene(self, min_size, max_size, size):
|
||||
|
|
@ -267,7 +263,7 @@ class GraphWidget(QGraphicsView):
|
|||
self.scenarios_items = {}
|
||||
self.edge_items = []
|
||||
|
||||
for scenar in self.graph.scenarios.lst:
|
||||
for scenar in self._study.scenarios.lst:
|
||||
iscenar = ScenarioItem(scenar, self)
|
||||
self.scene().addItem(iscenar)
|
||||
self.scenarios_items[scenar] = iscenar
|
||||
|
|
@ -295,7 +291,7 @@ class GraphWidget(QGraphicsView):
|
|||
self.create_items()
|
||||
|
||||
def scenario_has_child(self, scenario):
|
||||
for scenar in self.graph.scenarios.lst:
|
||||
for scenar in self._study.scenarios.lst:
|
||||
if scenar.parent is scenario:
|
||||
return True
|
||||
|
||||
|
|
@ -346,8 +342,8 @@ class GraphWidget(QGraphicsView):
|
|||
items = self.items(event.pos())
|
||||
selectable_items = list(
|
||||
filter(
|
||||
lambda i: (type(i) is ScenarioItem
|
||||
or type(i) is EdgeItem),
|
||||
lambda i: (type(i) is ScenarioItem or
|
||||
type(i) is EdgeItem),
|
||||
items
|
||||
)
|
||||
)
|
||||
|
|
@ -356,7 +352,8 @@ class GraphWidget(QGraphicsView):
|
|||
if len(selectable_items) == 0:
|
||||
if event.buttons() & Qt.LeftButton:
|
||||
old_p = self.mapToScene(
|
||||
int(self.m_origin_x), int(self.m_origin_y)
|
||||
int(self.m_origin_x),
|
||||
int(self.m_origin_y)
|
||||
)
|
||||
new_p = self.mapToScene(event.pos())
|
||||
translation = new_p - old_p
|
||||
|
|
@ -376,26 +373,35 @@ class GraphWidget(QGraphicsView):
|
|||
pos = self.mapToScene(event.pos())
|
||||
items = self.items(event.pos())
|
||||
|
||||
# # Select current menu
|
||||
# while len(items) > 0:
|
||||
# if type(items[0]) in [NodeItem, EdgeItem]:
|
||||
# break
|
||||
# else:
|
||||
# items = items[1:]
|
||||
items = list(
|
||||
filter(
|
||||
lambda i: (type(i) is ScenarioItem or
|
||||
type(i) is EdgeItem),
|
||||
items
|
||||
)
|
||||
)
|
||||
|
||||
# if len(items) == 0:
|
||||
# m_type = DefaultMenu
|
||||
# elif type(items[0]) is NodeItem:
|
||||
# m_type = NodeMenu
|
||||
# elif type(items[0]) is EdgeItem:
|
||||
# m_type = EdgeMenu
|
||||
# else:
|
||||
# m_type = DefaultMenu
|
||||
m_type = DefaultMenu
|
||||
if len(items) != 0:
|
||||
if type(items[0]) is ScenarioItem:
|
||||
m_type = ScenarioMenu
|
||||
|
||||
# # Create and exec menu
|
||||
# m = m_type(
|
||||
# event=event, pos=pos, items=items,
|
||||
# graph=self.graph, trad=self._trad, parent=self
|
||||
# )
|
||||
# m.run()
|
||||
# self.clicked = False
|
||||
# Create and exec menu
|
||||
m = m_type(
|
||||
event=event, pos=pos, items=items,
|
||||
graph=self._study, trad=self._trad, parent=self
|
||||
)
|
||||
m.run()
|
||||
|
||||
def select_scenario(self, item):
|
||||
if type(item) is not ScenarioItem:
|
||||
return
|
||||
|
||||
self._study.reload_from_scenario(item.scenario)
|
||||
self.display_update()
|
||||
|
||||
def new_scenario(self, pos):
|
||||
scenario = self._study.new_scenario_from_current()
|
||||
scenario.set_pos(pos.x(), pos.y())
|
||||
|
||||
self.display_update()
|
||||
|
|
|
|||
|
|
@ -31,11 +31,11 @@ class ScenariosTranslate(MainTranslate):
|
|||
"Scenarios", "Scenarios"
|
||||
)
|
||||
|
||||
self._dict["menu_del_scenario"] = _translate(
|
||||
"Scenarios", "Delete the scenario"
|
||||
self._dict["menu_select_scenario"] = _translate(
|
||||
"Scenarios", "Select this scenario"
|
||||
)
|
||||
self._dict["menu_add_scenario"] = _translate(
|
||||
"Scenarios", "Create new derived scenario"
|
||||
"Scenarios", "Create new scenario from current scenario"
|
||||
)
|
||||
|
||||
self._sub_dict["table_headers_scenarios"] = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue