omni::ui::Workspace

Defined in omni/ui/Workspace.h

class Workspace

Workspace object provides access to the windows in Kit.

TODO: It’s more like a namespace because all the methods are static. But the idea is to have it as a singleton, and it will allow using it as the abstract factory for many systems (Kit full and Kit mini for example).

Public Functions

Workspace() = delete

Public Static Functions

static float getDpiScale()

Returns current DPI Scale.

static std::vector<std::shared_ptr<WindowHandle>> getWindows()

Returns the list of windows ordered from back to front.

If the window is a Omni::UI window, it can be upcasted.

static std::shared_ptr<WindowHandle> getWindow(const std::string &title)

Find Window by name.

static std::shared_ptr<WindowHandle> getWindowFromCallback(const windowmanager::IWindowCallback *callback)

Find Window by window callback.

static std::vector<std::shared_ptr<WindowHandle>> getDockedNeighbours(const std::shared_ptr<WindowHandle> &member)

Get all the windows that docked with the given widow.

static uint32_t getSelectedWindowIndex(uint32_t dockId)

Get currently selected window inedx from the given dock id.

static void clear()

Undock all.

static float getMainWindowWidth()

Get the width in points of the current main window.

static float getMainWindowHeight()

Get the height in points of the current main window.

static std::vector<std::shared_ptr<WindowHandle>> getDockedWindows(uint32_t dockId)

Get all the windows of the given dock ID.

static uint32_t getParentDockId(uint32_t dockId)

Return the parent Dock Node ID.

Parameters

dockId – the child Dock Node ID to get parent

static bool getDockNodeChildrenId(uint32_t dockId, uint32_t &first, uint32_t &second)

Get two dock children of the given dock ID.

Parameters
  • dockId – the given dock ID

  • first – output. the first child dock ID

  • second – output. the second child dock ID

Returns

true if the given dock ID has children

static WindowHandle::DockPosition getDockPosition(uint32_t dockId)

Returns the position of the given dock ID.

Left/Right/Top/Bottom

static float getDockIdWidth(uint32_t dockId)

Returns the width of the docking node.

Parameters

dockId – the given dock ID

static float getDockIdHeight(uint32_t dockId)

Returns the height of the docking node.

It’s different from the window height because it considers dock tab bar.

Parameters

dockId – the given dock ID

static void setDockIdWidth(uint32_t dockId, float width)

Set the width of the dock node.

It also sets the width of parent nodes if necessary and modifies the width of siblings.

Parameters
  • dockId – the given dock ID

  • width – the given width

static void setDockIdHeight(uint32_t dockId, float height)

Set the height of the dock node.

It also sets the height of parent nodes if necessary and modifies the height of siblings.

Parameters
  • dockId – the given dock ID

  • height – the given height

static bool showWindow(const std::string &title, bool show = true)

Makes the window visible or create the window with the callback provided with set_show_window_fn.

Parameters
  • title – the given window title

  • show – true to show, false to hide

Returns

true if the window is already created, otherwise it’s necessary to wait one frame

static void setWindowCreatedCallback(std::function<void(const std::shared_ptr<WindowHandle> &window)> windowCreatedCallbackFn)

Addd the callback that is triggered when a new window is created.

static void setShowWindowFn(const std::string &title, std::function<void(bool)> showWindowFn)

Add the callback to create a window with the given title.

When the callback’s argument is true, it’s necessary to create the window. Otherwise remove.

static uint32_t setWindowVisibilityChangedCallback(std::function<void(const std::string &title, bool visible)> windowVisibilityChangedCallbackFn)

Add the callback that is triggered when a window’s visibility changed.

static void removeWindowVisibilityChangedCallback(uint32_t id)

Remove the callback that is triggered when a window’s visibility changed.

static void onWindowVisibilityChanged(const std::string &title, bool visible)

Call it from inside each windows’ setVisibilityChangedFn to triggered VisibilityChangedCallback.

class AppWindow

Singleton that tracks the current application window.

Public Functions

omni::kit::IAppWindow *getCurrent()

Public Static Functions

static AppWindow &instance()
class AppWindowGuard

Guard that pushes the current application window to class AppWindow when created and pops when destroyed.

Public Functions

AppWindowGuard(omni::kit::IAppWindow *window)
~AppWindowGuard()