interface.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # TODO Lot of hardcoded shizzle
  2. import sys
  3. from typing import List
  4. import arklog
  5. import dearpygui.dearpygui as dpg
  6. from dearpygui import demo
  7. from graph_exploring_tool.configuration import Configuration
  8. from graph_exploring_tool.graphical.constants import PRIMARY_WINDOW_TAG, MAIN_QUERY_GROUP_TAG, MAIN_DIAGRAM_GROUP_TAG
  9. from graph_exploring_tool.graphical.diagram_group import create_diagram_group
  10. from graph_exploring_tool.graphical.query_group import create_query_group
  11. from graph_exploring_tool.query import QueryTemplate
  12. arklog.set_config_logging()
  13. def switch_main_view(view: str):
  14. """Switch the current view to one of the options. This hides all but on group."""
  15. dpg.configure_item(MAIN_QUERY_GROUP_TAG, show=view == MAIN_QUERY_GROUP_TAG)
  16. dpg.configure_item(MAIN_DIAGRAM_GROUP_TAG, show=view == MAIN_DIAGRAM_GROUP_TAG)
  17. def add_main_menu() -> None:
  18. """Create the main menu for the application interface."""
  19. with dpg.menu_bar():
  20. with dpg.menu(label="Menu"):
  21. dpg.add_menu_item(label="Exit", callback=lambda _: sys.exit())
  22. with dpg.menu(label="View"):
  23. with dpg.menu(label="Switch main view"):
  24. dpg.add_menu_item(label="Query Explorer", callback=lambda _: switch_main_view(MAIN_QUERY_GROUP_TAG))
  25. dpg.add_menu_item(label="Diagram Explorer", callback=lambda _: switch_main_view(MAIN_DIAGRAM_GROUP_TAG))
  26. def interface(configuration: Configuration, palette: List[QueryTemplate], width=1200, height=900):
  27. """Show the initial state of the full user interface."""
  28. dpg.create_context()
  29. dpg.create_viewport(title="Graph Exploring Tool", width=width, height=height)
  30. with dpg.window(tag=PRIMARY_WINDOW_TAG, label="Graph Exploring Tool", menubar=True):
  31. add_main_menu()
  32. create_query_group(configuration, palette)
  33. create_diagram_group()
  34. # demo.show_demo()
  35. dpg.setup_dearpygui()
  36. dpg.show_viewport()
  37. dpg.set_primary_window(PRIMARY_WINDOW_TAG, True)
  38. dpg.start_dearpygui()
  39. dpg.destroy_context()