Extension: omni.kit.viewport.menubar.camera-107.0.2 |
Documentation Generated: Dec 17, 2024 |
Usage Examples#
Register Custom Widgets to Camera Button and Menu Item#
from typing import Optional
import weakref
from omni.kit.viewport.menubar.camera import AbstractCameraButtonDelegate, AbstractCameraMenuItemDelegate
from omni import ui
from pxr import Sdf
class MyButtonDelegate(AbstractCameraButtonDelegate):
def build_widget(self, parent_id: int, viewport_api: "ViewportAPI", camera_path: Sdf.Path) -> Optional[ui.Widget]:
widget = ui.HStack()
with widget:
ui.Spacer(width=4)
ui.Label("Custom", style={"color": 0xFFFF00FF})
return widget
def on_parent_destroyed(self, parent_id: int) -> None:
return
def on_camera_path_changed(self, parent_id: int, camera_path: Sdf.Path):
return
class MyItemDelegate(AbstractCameraMenuItemDelegate):
def build_widget(self, parent_id: int, viewport_api: "ViewportAPI", camera_path: Sdf.Path) -> Optional[ui.Widget]:
widget = ui.HStack()
with widget:
ui.Spacer(width=4)
ui.Label("Custom", style={"color": 0xFF0000FF})
return widget
def on_parent_destroyed(self, parent_id: int) -> None:
return
def on_camera_path_changed(self, parent_id: int, camera_path: Sdf.Path):
return
# Define delegates before camera menu bar display
button_delegate = MyButtonDelegate()
item_delegate = MyItemDelegate()
# Clean delegates if not use anymore
# button_delegate.destroy()
# item_delegate.destroy()
Register Custom Menu Item#
from omni import ui
def __create_first(viewport_context, root):
ui.MenuItem("This is first custom menu item")
def __create_second(viewport_context, root):
ui.MenuItem("This is second custom menu item")
# Get the viewport camera menu bar extension instance
extension = get_instance()
# Register new enu items
extension.register_menu_item(__create_second, order=20)
extension.register_menu_item(__create_first, order=10)
# Deregister menu items if not use anymore
# extension.deregister_menu_item(__create_first)
# extension.deregister_menu_item(__create_second)
Register Custom Menu Item Type#
from omni.kit.viewport.menubar.camera import get_instance, SingleCameraMenuItemBase
# Define a custom menu item type
def custom_single_camera_menu_item(*args, **kwargs):
class CustomSingleCameraMenuItem(SingleCameraMenuItemBase):
def _option_clicked(self):
# Do something when clicking the option icon on the right of this menu item
return
return CustomSingleCameraMenuItem(*args, **kwargs)
# Get the viewport camera menu bar extension instance
extension = get_instance()
# Register the custom menu item type
extension.register_menu_item_type(custom_single_camera_menu_item)