Browse Source

Create experimental diagram view

Arkadiusz Ryś 2 years ago
parent
commit
3eb6bfd928

+ 54 - 0
graph_exploring_tool/graphical/diagram_group.py

@@ -0,0 +1,54 @@
+import dearpygui.dearpygui as dpg
+
+from graph_exploring_tool.graphical.constants import MAIN_DIAGRAM_GROUP_TAG
+
+
+def create_palette():
+    with dpg.child_window(width=220, menubar=True):
+        with dpg.menu_bar():
+            dpg.add_menu(label="Palette", enabled=False)
+        with dpg.tree_node(label="Example", default_open=True):
+            dpg.add_button(label="Test")
+            dpg.add_text("Test")
+            with dpg.tooltip(dpg.last_item()):
+                dpg.add_text("Testing")
+
+
+def create_diagram():
+    with dpg.child_window(autosize_x=True, autosize_y=True, menubar=True):
+        with dpg.menu_bar():
+            dpg.add_menu(label="Diagram View", enabled=False)
+        with dpg.node_editor(
+            callback=lambda sender, app_data: dpg.add_node_link(app_data[0], app_data[1], parent=sender),
+            delink_callback=lambda sender, app_data: dpg.delete_item(app_data),
+            minimap=True,
+            minimap_location=dpg.mvNodeMiniMap_Location_BottomRight,
+            tag="__diagram_view"
+        ):
+            pass
+
+def populate_node_test():
+    with dpg.node(label="Node 1", pos=[10, 10], parent="__diagram_view"):
+        with dpg.node_attribute():
+            dpg.add_input_float(label="F1", width=150)
+        with dpg.node_attribute(attribute_type=dpg.mvNode_Attr_Output):
+            dpg.add_input_float(label="F2", width=150)
+
+    with dpg.node(label="Node 2", pos=[300, 10], parent="__diagram_view"):
+        with dpg.node_attribute():
+            dpg.add_input_float(label="F3", width=200)
+        with dpg.node_attribute(attribute_type=dpg.mvNode_Attr_Output):
+            dpg.add_input_float(label="F4", width=200)
+
+    with dpg.node(label="Node 3", pos=[10, 150], parent="__diagram_view"):
+        with dpg.node_attribute():
+            dpg.add_input_text(label="T5", width=200)
+        with dpg.node_attribute(attribute_type=dpg.mvNode_Attr_Static):
+            dpg.add_simple_plot(label="Node Plot", default_value=(0.3, 0.9, 2.5, 8.9), width=200, height=80, histogram=True)
+
+def create_diagram_group():
+    with dpg.group(horizontal=True, label="Diagram", tag=MAIN_DIAGRAM_GROUP_TAG, show=False):
+        create_palette()
+        with dpg.group(horizontal=False):
+            create_diagram()
+    populate_node_test()

+ 6 - 12
graph_exploring_tool/graphical/interface.py

@@ -4,10 +4,12 @@ from typing import List
 
 import arklog
 import dearpygui.dearpygui as dpg
+from dearpygui import demo
 
 from graph_exploring_tool.configuration import Configuration
 from graph_exploring_tool.graphical.constants import PRIMARY_WINDOW_TAG, MAIN_QUERY_GROUP_TAG, MAIN_DIAGRAM_GROUP_TAG
-from graph_exploring_tool.graphical.query_group import create_query_palette, create_query_options, create_query_editor_visual, create_query_editor_textual, create_status_console, create_query_results
+from graph_exploring_tool.graphical.diagram_group import create_diagram_group
+from graph_exploring_tool.graphical.query_group import create_query_group
 from graph_exploring_tool.query import QueryTemplate
 
 arklog.set_config_logging()
@@ -30,21 +32,13 @@ def add_main_menu() -> None:
 
 
 def interface(configuration: Configuration, palette: List[QueryTemplate], width=1200, height=900):
-    """Show the full user interface."""
+    """Show the initial state of the full user interface."""
     dpg.create_context()
     dpg.create_viewport(title="Graph Exploring Tool", width=width, height=height)
     with dpg.window(tag=PRIMARY_WINDOW_TAG, label="Graph Exploring Tool", menubar=True):
         add_main_menu()
-        with dpg.group(horizontal=True, label="Main", tag=MAIN_QUERY_GROUP_TAG, show=True):
-            create_query_palette(palette)
-            with dpg.group(horizontal=False):
-                create_query_options(configuration.endpoint_sparql)
-                create_query_editor_visual(configuration.example_prefix, configuration.example_query, show=True)
-                create_query_editor_textual(configuration.example_prefix, configuration.example_query, show=False)
-                create_status_console()
-                create_query_results()
-        with dpg.group(horizontal=True, label="Diagram", tag=MAIN_DIAGRAM_GROUP_TAG, show=False):
-            dpg.add_text("Diagram explorer")
+        create_query_group(configuration, palette)
+        create_diagram_group()
     # demo.show_demo()
     dpg.setup_dearpygui()
     dpg.show_viewport()

+ 13 - 1
graph_exploring_tool/graphical/query_group.py

@@ -7,9 +7,10 @@ from urllib.error import URLError
 from dearpygui import dearpygui as dpg
 
 from graph_exploring_tool import query
+from graph_exploring_tool.configuration import Configuration
 from graph_exploring_tool.graphical.constants import STATUS_CONSOLE_TAG, QUERY_FILTER_TAG, EDITOR_SELECTOR_TAG, \
     ENDPOINT_TEXTINPUT_TAG, QUERY_EDITOR_VISUAL_TAG, POST_METHOD_CHECKBOX_TAG, QUERY_EDITOR_TEXTUAL_TAG, \
-    QUERY_RESULT_WINDOW_TAG, QUERY_RESULT_TAB_TAG, RESULT_TABLE_TAG, RADIO_BUTTON_TYPE
+    QUERY_RESULT_WINDOW_TAG, QUERY_RESULT_TAB_TAG, RESULT_TABLE_TAG, RADIO_BUTTON_TYPE, MAIN_QUERY_GROUP_TAG
 from graph_exploring_tool.query import QueryTemplate
 
 class StatusMessageType(enum.Enum):
@@ -266,3 +267,14 @@ def _select_file(sender: int, app_data: str, user_data: Optional[dict]):
     cwd = dpg.get_value("file_text")
     selected_file = cwd + "/" + selected_file
     dpg.set_value("file_info_n", "file :" + selected_file)
+
+
+def create_query_group(configuration: Configuration, palette: List[QueryTemplate]):
+    with dpg.group(horizontal=True, label="Main", tag=MAIN_QUERY_GROUP_TAG, show=True):
+        create_query_palette(palette)
+        with dpg.group(horizontal=False):
+            create_query_options(configuration.endpoint_sparql)
+            create_query_editor_visual(configuration.example_prefix, configuration.example_query, show=True)
+            create_query_editor_textual(configuration.example_prefix, configuration.example_query, show=False)
+            create_status_console()
+            create_query_results()