BsScriptContextMenu.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptObject.h"
  4. namespace BansheeEngine
  5. {
  6. /**
  7. * @brief Interop class between C++ & CLR for GUIContextMenu.
  8. */
  9. class BS_SCR_BE_EXPORT ScriptContextMenu : public ScriptObject < ScriptContextMenu >
  10. {
  11. public:
  12. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "ContextMenu")
  13. /**
  14. * @brief Returns the internal native context menu object.
  15. */
  16. GUIContextMenuPtr getInternal() const { return mContextMenu; }
  17. private:
  18. ScriptContextMenu(MonoObject* instance);
  19. /**
  20. * @brief Triggered when an item in the context menu is clicked.
  21. *
  22. * @param idx Sequential index of the item that was clicked.
  23. */
  24. void onContextMenuItemTriggered(UINT32 idx);
  25. GUIContextMenuPtr mContextMenu;
  26. /************************************************************************/
  27. /* CLR HOOKS */
  28. /************************************************************************/
  29. typedef void(__stdcall *OnEntryTriggeredThunkDef) (MonoObject*, UINT32 callbackIdx, MonoException**);
  30. static OnEntryTriggeredThunkDef onEntryTriggered;
  31. static void internal_CreateInstance(MonoObject* instance);
  32. static void internal_AddItem(ScriptContextMenu* instance, MonoString* path, UINT32 callbackIdx, ShortcutKey shortcut);
  33. static void internal_AddSeparator(ScriptContextMenu* instance, MonoString* path);
  34. static void internal_SetLocalizedName(ScriptContextMenu* instance, MonoString* label, ScriptHString* name);
  35. };
  36. }