ModalWindow.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Runtime.CompilerServices;
  4. using BansheeEngine;
  5. namespace BansheeEditor
  6. {
  7. public class ModalWindow : ScriptObject
  8. {
  9. public int Width
  10. {
  11. get { return Internal_GetWidth(mCachedPtr); }
  12. set { Internal_SetWidth(mCachedPtr, value); }
  13. }
  14. public int Height
  15. {
  16. get { return Internal_GetHeight(mCachedPtr); }
  17. set { Internal_SetHeight(mCachedPtr, value); }
  18. }
  19. protected GUIPanel GUI;
  20. protected ModalWindow()
  21. {
  22. Internal_CreateInstance(this, false);
  23. }
  24. protected ModalWindow(bool allowCloseButton)
  25. {
  26. Internal_CreateInstance(this, allowCloseButton);
  27. }
  28. private void OnInitializeInternal()
  29. {
  30. GUI = new GUIPanel();
  31. Internal_InitializeGUIPanel(mCachedPtr, GUI);
  32. GUI.Initialize();
  33. GUI.SetArea(0, 0, Width, Height);
  34. }
  35. private void OnDestroyInternal()
  36. {
  37. GUI.Destroy();
  38. Internal_DestroyGUIPanel(mCachedPtr, GUI);
  39. }
  40. protected virtual void OnWindowResized(int width, int height)
  41. {
  42. GUI.SetArea(0, 0, width, height);
  43. }
  44. protected void Close()
  45. {
  46. Internal_Close(mCachedPtr);
  47. }
  48. public LocString Title
  49. {
  50. set { Internal_SetTitle(mCachedPtr, value); }
  51. }
  52. [MethodImpl(MethodImplOptions.InternalCall)]
  53. private static extern void Internal_CreateInstance(ModalWindow instance, bool allowCloseButton);
  54. [MethodImpl(MethodImplOptions.InternalCall)]
  55. private static extern void Internal_Close(IntPtr nativeInstance);
  56. [MethodImpl(MethodImplOptions.InternalCall)]
  57. private static extern void Internal_SetTitle(IntPtr nativeInstance, LocString title);
  58. [MethodImpl(MethodImplOptions.InternalCall)]
  59. private static extern void Internal_InitializeGUIPanel(IntPtr nativeInstance, GUIPanel panel);
  60. [MethodImpl(MethodImplOptions.InternalCall)]
  61. private static extern void Internal_DestroyGUIPanel(IntPtr nativeInstance, GUIPanel panel);
  62. [MethodImpl(MethodImplOptions.InternalCall)]
  63. private static extern int Internal_GetWidth(IntPtr nativeInstance);
  64. [MethodImpl(MethodImplOptions.InternalCall)]
  65. private static extern int Internal_SetWidth(IntPtr nativeInstance, int value);
  66. [MethodImpl(MethodImplOptions.InternalCall)]
  67. private static extern int Internal_GetHeight(IntPtr nativeInstance);
  68. [MethodImpl(MethodImplOptions.InternalCall)]
  69. private static extern int Internal_SetHeight(IntPtr nativeInstance, int value);
  70. }
  71. }