Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[viewer] graphics items big refactor #105

Merged
merged 6 commits into from
Sep 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/lifeblood_viewer/connection_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class SchedulerConnectionWorker(PySide2.QtCore.QObject):
db_uid_update = Signal(object)
graph_full_update = Signal(object)
tasks_full_update = Signal(object)
tasks_events_arrived = Signal(object, bool)
tasks_events_arrived = Signal(object)
groups_full_update = Signal(object)
workers_full_update = Signal(object)
scheduler_connection_lost = Signal()
Expand Down Expand Up @@ -400,7 +400,7 @@ def _check_tasks(self):
if len(task_events) > 0:
first_time_getting_events = self.__last_known_event_id < 0
self.__last_known_event_id = task_events[-1].event_id
self.tasks_events_arrived.emit(task_events, first_time_getting_events)
self.tasks_events_arrived.emit(task_events)
else:
tasks_state = self.__client.get_ui_tasks_state(self.__task_group_filter or [], not self.__skip_dead)
self.tasks_full_update.emit(tasks_state)
Expand Down
4 changes: 2 additions & 2 deletions src/lifeblood_viewer/editor_scene_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@

from typing import Optional, TYPE_CHECKING
if TYPE_CHECKING:
from .graphics_scene import QGraphicsImguiScene
from .graphics_scene_with_data_controller import QGraphicsImguiSceneWithDataController


def fetch_and_open_log_viewer(scene: "QGraphicsImguiScene", invoc_id: int, parent_widget: QWidget, *, update_interval: Optional[float] = None):
def fetch_and_open_log_viewer(scene: "QGraphicsImguiSceneWithDataController", invoc_id: int, parent_widget: QWidget, *, update_interval: Optional[float] = None):
if update_interval is None:
scene.fetch_log_run_callback(invoc_id, _open_log_viewer, parent_widget)
else:
Expand Down
33 changes: 33 additions & 0 deletions src/lifeblood_viewer/fancy_scene_item_factory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from .graphics_items import Node, Task, NodeConnection, GraphicsSceneBase
from lifeblood.ui_protocol_data import TaskData

from .scene_data_controller import SceneDataController
from .scene_item_factory_base import SceneItemFactoryBase
from .graphics_items.pretty_items.fancy_items.scene_node import SceneNode
from .graphics_items.pretty_items.fancy_items.scene_node_connection import SceneNodeConnection
from .graphics_items.pretty_items.fancy_items.scene_task import SceneTask
from .graphics_items.pretty_items.fancy_items.implicit_split_visualizer import ImplicitSplitVisualizer
from .graphics_items.pretty_items.node_decorator_base import NodeDecoratorFactoryBase, NodeDecorator
from .graphics_items.pretty_items.drawable_node import DrawableNode


class FancyNodeDecoratorFactory(NodeDecoratorFactoryBase):
def make_decorator(self, node: DrawableNode) -> NodeDecorator:
return ImplicitSplitVisualizer(node)


class FancySceneItemFactory(SceneItemFactoryBase):
def __init__(self, data_controller: SceneDataController):
self.__data_controller = data_controller

def set_data_controller(self, data_controller: SceneDataController):
self.__data_controller = data_controller

def make_task(self, scene: GraphicsSceneBase, task_data: TaskData) -> Task:
return SceneTask(scene, task_data, self.__data_controller)

def make_node(self, scene: GraphicsSceneBase, id: int, type: str, name: str) -> Node:
return SceneNode(scene, id, type, name, self.__data_controller, [FancyNodeDecoratorFactory()])

def make_node_connection(self, scene: GraphicsSceneBase, id: int, nodeout: Node, nodein: Node, outname: str, inname: str) -> NodeConnection:
return SceneNodeConnection(scene, id, nodeout, nodein, outname, inname, self.__data_controller)
Loading
Loading