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