Logo

omni.kit.menu.utils

  • Overview
  • Update menus
  • Layouts & Hooks
  • Menu Helpers
  • Examples
  • API (python)
    • Modules
      • omni.kit.menu.utils
        • Submodules
          • scripts
            • Submodules
              • actions
                • Classes
                • Functions
              • app_menu
                • Classes
                • Functions
              • builder_utils
                • Classes
                • Functions
              • debug_window
                • Classes
              • extension_window_helper
                • Classes
              • extension_window_helper_full
                • Classes
              • layout
                • Classes
                • Functions
              • utils
                • Classes
                • Functions
            • Classes
              • ActionMenuSubscription
              • IconMenuDelegate
              • LayoutSourceSearch
              • MenuActionControl
              • MenuAlignment
              • MenuHelperExtension
              • MenuHelperExtensionFull
              • MenuHelperWindow
              • MenuItemDescription
              • MenuItemOrder
              • MenuLayout
              • MenuState
              • MenuUtilsDebugExtension
              • MenuUtilsExtension
              • PrebuiltItemOrder
            • Functions
              • add_action_to_menu
              • add_hook
              • add_layout
              • add_menu_items
              • build_submenu_dict
              • get_action_path
              • get_debug_stats
              • get_instance
              • get_menu_layout
              • get_merged_menus
              • rebuild_menus
              • refresh_menu_items
              • remove_hook
              • remove_layout
              • remove_menu_items
              • replace_menu_items
              • set_default_menu_proirity
        • Classes
          • ActionMenuSubscription
          • IconMenuDelegate
          • LayoutSourceSearch
          • MenuActionControl
          • MenuAlignment
          • MenuHelperExtension
          • MenuHelperExtensionFull
          • MenuHelperWindow
          • MenuItemDescription
          • MenuItemOrder
          • MenuLayout
          • MenuState
          • MenuUtilsDebugExtension
          • MenuUtilsExtension
          • PrebuiltItemOrder
        • Functions
          • add_action_to_menu
          • add_hook
          • add_layout
          • add_menu_items
          • build_submenu_dict
          • get_action_path
          • get_debug_stats
          • get_instance
          • get_menu_layout
          • get_merged_menus
          • rebuild_menus
          • refresh_menu_items
          • remove_hook
          • remove_layout
          • remove_menu_items
          • replace_menu_items
          • set_default_menu_proirity
  • Changelog
Omniverse Kit
  • »
  • Menu Helpers
  •  

Menu Helpers

Requires omni.kit.menu.utils version 1.5.8 or above

MenuHelperExtension

  • This helper assists with menu creation but minimal window creation help, adds menu_startup(), menu_shutdown() & menu_refresh() functions by MenuHelperExtension subclass. Allowing user to control window open/closing. But does require ui.Workspace.set_show_window_fn to be set as it uses this to open/close/get state for the window

from omni.kit.menu.utils import MenuHelperExtension

class ActionsExtension(omni.ext.IExt, MenuHelperExtension):
    def on_startup(self):
        self._actions_window = None
        ui.Workspace.set_show_window_fn(ActionsExtension.WINDOW_NAME, self.show_window)
        self.menu_startup(ActionsExtension.WINDOW_NAME, ActionsExtension.WINDOW_NAME, ActionsExtension.MENU_GROUP)
        ui.Workspace.show_window(ActionsExtension.WINDOW_NAME, False)

    def on_shutdown(self):
        self.menu_shutdown()
        ui.Workspace.set_show_window_fn(ActionsExtension.WINDOW_NAME, None)
        if self._actions_window:
            self._actions_window.destroy()
            self._actions_window = None

    def show_window(self, visible: bool):
        if visible:
            self._actions_window = ui.Window(ActionsExtension.WINDOW_NAME)
            self._actions_window.set_visibility_changed_fn(self._visiblity_changed_fn)
            self.menu_refresh()
        elif self._actions_window:
            self._actions_window.visible = False

    def _visiblity_changed_fn(self, visible):
        # tell omni.kit.menu.utils that actions window menu open/close state needs updating
        self.menu_refresh()

Building window widgets can be done by sub-classing _show function, although it’s recommended that this should be done by sub-classing ui.Window and adding a frame build_fn via self.frame.set_build_fn(self._build_ui)

    def _show(self):
        super()._show()

        if self._window:
            with self._window.frame:
                with ui.VStack(height=0, spacing=8):
                    with ui.HStack(height=460):
                        ui.Label("myWindow")

MenuHelperExtensionFull

  • This helper assists with menu creation and window creation, handles show/hide and menu state updating. Adds menu_startup(), menu_shutdown() & menu_refresh() functions by MenuHelperExtensionFull subclass, all user has-to provide a function call to create the window.

from omni.kit.menu.utils import MenuHelperExtensionFull

class OscilloscopeWindowExtension(omni.ext.IExt, MenuHelperExtensionFull):
    def on_startup(self):
        self.menu_startup(lambda: ui.Window("Audio Oscilloscope", width=512, height=540), "Audio Oscilloscope", "Oscilloscope", "Window")
        ui.Workspace.show_window("Audio Oscilloscope", True)

    def on_shutdown(self):
        self.menu_shutdown()

or

from omni.kit.menu.utils import MenuHelperExtensionFull, MenuHelperWindow

class OscilloscopeWindowExtension(omni.ext.IExt, MenuHelperExtensionFull):
    def on_startup(self):
        self.menu_startup(lambda: MenuHelperWindow("Audio Oscilloscope", width=512, height=540), "Audio Oscilloscope", "Oscilloscope", "Window")
        ui.Workspace.show_window("Audio Oscilloscope", True)

    def on_shutdown(self):
        self.menu_shutdown()

© Copyright 2019-2024, NVIDIA. Last updated on May 28, 2024.