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):
|
class DefaultMenu(AbstractMenu):
|
||||||
def run(self):
|
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()
|
action = self._exec()
|
||||||
if action == add_node:
|
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):
|
def run(self):
|
||||||
item = self._items[0]
|
item = self._items[0]
|
||||||
node = item.node
|
|
||||||
|
|
||||||
delete = self._menu.addAction(self._trad["menu_del_node"])
|
select = self._menu.addAction(self._trad["menu_select_scenario"])
|
||||||
|
# delete = self._menu.addAction(self._trad["menu_del_scenario"])
|
||||||
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
|
|
||||||
|
|
||||||
action = self._exec()
|
action = self._exec()
|
||||||
if action == delete:
|
if action == select:
|
||||||
self._parent.del_node(item)
|
self._parent.select_scenario(item)
|
||||||
elif is_internal:
|
# if action == delete:
|
||||||
if res_edit:
|
# self._parent.del_node(item)
|
||||||
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)
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ from PyQt5.QtWidgets import (
|
||||||
|
|
||||||
from View.Scenarios.UndoCommand import *
|
from View.Scenarios.UndoCommand import *
|
||||||
from View.Scenarios.ContextMenu import (
|
from View.Scenarios.ContextMenu import (
|
||||||
DefaultMenu, NodeMenu,
|
DefaultMenu, ScenarioMenu,
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
@ -85,7 +85,7 @@ class ScenarioItem(QGraphicsTextItem):
|
||||||
extra = 2
|
extra = 2
|
||||||
pcolor = QColor(Qt.black)
|
pcolor = QColor(Qt.black)
|
||||||
color = QColor("#aac3d7")
|
color = QColor("#aac3d7")
|
||||||
if self.graph.graph.status.scenario is self.scenario:
|
if self.graph._study.status.scenario is self.scenario:
|
||||||
color = QColor("#eeaba5")
|
color = QColor("#eeaba5")
|
||||||
elif self.scenario.id == 0:
|
elif self.scenario.id == 0:
|
||||||
color = QColor("#d3c1d8")
|
color = QColor("#d3c1d8")
|
||||||
|
|
@ -210,27 +210,23 @@ class GraphWidget(QGraphicsView):
|
||||||
changeEdge = pyqtSignal(object)
|
changeEdge = pyqtSignal(object)
|
||||||
changeNode = pyqtSignal(object)
|
changeNode = pyqtSignal(object)
|
||||||
|
|
||||||
def __init__(self, graph, parent=None,
|
def __init__(self, study, parent=None,
|
||||||
min_size=(400, 400), max_size=None,
|
min_size=(400, 400), max_size=None,
|
||||||
size=None, undo=None, trad=None):
|
size=None, undo=None, trad=None):
|
||||||
super(GraphWidget, self).__init__(parent=parent)
|
super(GraphWidget, self).__init__(parent=parent)
|
||||||
|
|
||||||
|
self._study = study
|
||||||
|
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self._undo = undo
|
self._undo = undo
|
||||||
self._trad = trad
|
self._trad = trad
|
||||||
|
|
||||||
self.graph = graph
|
self.m_origin_x = 0.0
|
||||||
|
self.m_origin_y = 0.0
|
||||||
self._selected_item = None
|
|
||||||
self._current_moved_node = None
|
|
||||||
|
|
||||||
self.scenarios_items = {}
|
self.scenarios_items = {}
|
||||||
self.edge_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)
|
self.setup_scene(min_size, max_size, size)
|
||||||
|
|
||||||
def setup_scene(self, 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.scenarios_items = {}
|
||||||
self.edge_items = []
|
self.edge_items = []
|
||||||
|
|
||||||
for scenar in self.graph.scenarios.lst:
|
for scenar in self._study.scenarios.lst:
|
||||||
iscenar = ScenarioItem(scenar, self)
|
iscenar = ScenarioItem(scenar, self)
|
||||||
self.scene().addItem(iscenar)
|
self.scene().addItem(iscenar)
|
||||||
self.scenarios_items[scenar] = iscenar
|
self.scenarios_items[scenar] = iscenar
|
||||||
|
|
@ -295,7 +291,7 @@ class GraphWidget(QGraphicsView):
|
||||||
self.create_items()
|
self.create_items()
|
||||||
|
|
||||||
def scenario_has_child(self, scenario):
|
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:
|
if scenar.parent is scenario:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
@ -346,8 +342,8 @@ class GraphWidget(QGraphicsView):
|
||||||
items = self.items(event.pos())
|
items = self.items(event.pos())
|
||||||
selectable_items = list(
|
selectable_items = list(
|
||||||
filter(
|
filter(
|
||||||
lambda i: (type(i) is ScenarioItem
|
lambda i: (type(i) is ScenarioItem or
|
||||||
or type(i) is EdgeItem),
|
type(i) is EdgeItem),
|
||||||
items
|
items
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -356,7 +352,8 @@ class GraphWidget(QGraphicsView):
|
||||||
if len(selectable_items) == 0:
|
if len(selectable_items) == 0:
|
||||||
if event.buttons() & Qt.LeftButton:
|
if event.buttons() & Qt.LeftButton:
|
||||||
old_p = self.mapToScene(
|
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())
|
new_p = self.mapToScene(event.pos())
|
||||||
translation = new_p - old_p
|
translation = new_p - old_p
|
||||||
|
|
@ -376,26 +373,35 @@ class GraphWidget(QGraphicsView):
|
||||||
pos = self.mapToScene(event.pos())
|
pos = self.mapToScene(event.pos())
|
||||||
items = self.items(event.pos())
|
items = self.items(event.pos())
|
||||||
|
|
||||||
# # Select current menu
|
items = list(
|
||||||
# while len(items) > 0:
|
filter(
|
||||||
# if type(items[0]) in [NodeItem, EdgeItem]:
|
lambda i: (type(i) is ScenarioItem or
|
||||||
# break
|
type(i) is EdgeItem),
|
||||||
# else:
|
items
|
||||||
# items = items[1:]
|
)
|
||||||
|
)
|
||||||
|
|
||||||
# if len(items) == 0:
|
m_type = DefaultMenu
|
||||||
# m_type = DefaultMenu
|
if len(items) != 0:
|
||||||
# elif type(items[0]) is NodeItem:
|
if type(items[0]) is ScenarioItem:
|
||||||
# m_type = NodeMenu
|
m_type = ScenarioMenu
|
||||||
# elif type(items[0]) is EdgeItem:
|
|
||||||
# m_type = EdgeMenu
|
|
||||||
# else:
|
|
||||||
# m_type = DefaultMenu
|
|
||||||
|
|
||||||
# # Create and exec menu
|
# Create and exec menu
|
||||||
# m = m_type(
|
m = m_type(
|
||||||
# event=event, pos=pos, items=items,
|
event=event, pos=pos, items=items,
|
||||||
# graph=self.graph, trad=self._trad, parent=self
|
graph=self._study, trad=self._trad, parent=self
|
||||||
# )
|
)
|
||||||
# m.run()
|
m.run()
|
||||||
# self.clicked = False
|
|
||||||
|
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"
|
"Scenarios", "Scenarios"
|
||||||
)
|
)
|
||||||
|
|
||||||
self._dict["menu_del_scenario"] = _translate(
|
self._dict["menu_select_scenario"] = _translate(
|
||||||
"Scenarios", "Delete the scenario"
|
"Scenarios", "Select this scenario"
|
||||||
)
|
)
|
||||||
self._dict["menu_add_scenario"] = _translate(
|
self._dict["menu_add_scenario"] = _translate(
|
||||||
"Scenarios", "Create new derived scenario"
|
"Scenarios", "Create new scenario from current scenario"
|
||||||
)
|
)
|
||||||
|
|
||||||
self._sub_dict["table_headers_scenarios"] = {
|
self._sub_dict["table_headers_scenarios"] = {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue