BsScriptEditorWindow.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #pragma once
  2. #include "BsScriptEditorPrerequisites.h"
  3. #include "BsScriptObject.h"
  4. #include "BsEditorWidget.h"
  5. namespace BansheeEditor
  6. {
  7. class ScriptEditorWidget;
  8. class BS_SCR_BED_EXPORT ScriptEditorWindow : public BansheeEngine::ScriptObject<ScriptEditorWindow>
  9. {
  10. struct EditorWindowHandle
  11. {
  12. uint32_t gcHandle;
  13. ScriptEditorWindow* nativeObj;
  14. };
  15. public:
  16. ~ScriptEditorWindow();
  17. EditorWidgetBase* getEditorWidget() const { return mEditorWidget; }
  18. static void initMetaData();
  19. static void registerManagedEditorWindows();
  20. private:
  21. friend class ScriptEditorWidget;
  22. ScriptEditorWindow(const CM::String& windowName, const CM::String& displayName, EditorWidgetBase* editorWidget);
  23. static MonoObject* internal_createOrGetInstance(MonoString* ns, MonoString* typeName);
  24. static void internal_destroyInstance(ScriptEditorWindow* thisPtr);
  25. static void initRuntimeData();
  26. static CM::UINT32 internal_getWidth(ScriptEditorWindow* thisPtr);
  27. static CM::UINT32 internal_getHeight(ScriptEditorWindow* thisPtr);
  28. static void internal_initializeGUIPanel(ScriptEditorWindow* thisPtr, MonoObject* panel);
  29. void onWidgetMoved(CM::INT32 x, CM::INT32 y);
  30. void onWidgetResized(CM::UINT32 width, CM::UINT32 height);
  31. void onWidgetParentChanged(EditorWidgetContainer* newParent);
  32. CM::String mName;
  33. EditorWidgetBase* mEditorWidget;
  34. CM::Vector<BS::ScriptGUIPanel*>::type mPanels;
  35. boost::signals::connection mOnWidgetMovedConn;
  36. boost::signals::connection mOnWidgetResizedConn;
  37. boost::signals::connection mOnParentChangedConn;
  38. static BS::MonoMethod* onResizedMethod;
  39. // Global editor window management methods
  40. static void registerScriptEditorWindow(ScriptEditorWindow* editorWindow);
  41. static void unregisterScriptEditorWindow(const CM::String& windowTypeName);
  42. static CM::UnorderedMap<CM::String, EditorWindowHandle>::type OpenScriptEditorWindows;
  43. static EditorWidgetBase* openEditorWidgetCallback(CM::String ns, CM::String type, EditorWidgetContainer& parentContainer);
  44. };
  45. class BS_SCR_BED_EXPORT ScriptEditorWidget : public EditorWidgetBase
  46. {
  47. public:
  48. ScriptEditorWidget(const CM::String& windowTypeName, const CM::HString& displayName, EditorWidgetContainer& parentContainer);
  49. ~ScriptEditorWidget();
  50. private:
  51. CM::String mWindowTypeName;
  52. };
  53. }