@EnumEditor.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /******************************************************************************/
  2. /******************************************************************************/
  3. class EnumEditor : ClosableWindow
  4. {
  5. class Enum
  6. {
  7. bool removed;
  8. Color color;
  9. flt offset;
  10. UID enum_id;
  11. Str name;
  12. Button remove;
  13. void setColor();
  14. void operator=(C EditEnum&src);
  15. public:
  16. Enum();
  17. };
  18. class RenameWindow : ClosableWindow
  19. {
  20. UID enum_id;
  21. TextLine textline;
  22. void create();
  23. void activate(C UID &enum_id, C Str &name);
  24. virtual void update(C GuiPC &gpc)override;
  25. public:
  26. RenameWindow();
  27. };
  28. class ListEnum : List<Enum>
  29. {
  30. int getPos(C Vec2 &pos);
  31. virtual void draw(C GuiPC &gpc)override;
  32. };
  33. class Change : Edit::_Undo::Change
  34. {
  35. EditEnums enums;
  36. virtual void create(ptr user)override;
  37. virtual void apply(ptr user)override;
  38. };
  39. static cchar8 *Type_t[]
  40. ; ASSERT(EditEnums::DEFAULT==0 && EditEnums::TYPE_1==1 && EditEnums::TYPE_2==2 && EditEnums::TYPE_4==3);
  41. Region region;
  42. Memx<Enum> data; // Memx because of Button
  43. ListEnum list;
  44. Button undo, redo, locate, new_enum, show_removed;
  45. TextBlack ts;
  46. Text type_t;
  47. ComboBox type;
  48. UID elm_id;
  49. Elm *elm;
  50. bool changed;
  51. EditEnums enums;
  52. RenameWindow rename_window;
  53. Edit::Undo<Change> undos; void undoVis();
  54. static void NewEnum(EnumEditor &ee);
  55. void newEnum();
  56. bool rename(C UID &enum_id, C Str &name);
  57. static void Undo (EnumEditor &editor);
  58. static void Redo (EnumEditor &editor);
  59. static void Locate(EnumEditor &editor);
  60. static void ShowRemoved(EnumEditor &editor);
  61. static void TypeChanged(EnumEditor &editor);
  62. void create();
  63. virtual Rect sizeLimit( )C override;
  64. virtual EnumEditor& rect(C Rect &rect) override;
  65. void skinChanged();
  66. void flush();
  67. void setChanged();
  68. static void Remove(Enum &e);
  69. void remove(Enum &e);
  70. void toGui();
  71. void set(Elm *elm);
  72. void activate(Elm *elm);
  73. void toggle (Elm *elm);
  74. virtual EnumEditor& hide ( )override;
  75. static void DragEnums(EnumEditor &ee, GuiObj *obj, C Vec2&screen_pos);
  76. void dragEnums( GuiObj *obj, C Vec2&screen_pos);
  77. virtual void update(C GuiPC &gpc)override;
  78. void elmChanged(C UID &enum_id);
  79. void erasing(C UID &elm_id);
  80. public:
  81. EnumEditor();
  82. };
  83. /******************************************************************************/
  84. /******************************************************************************/
  85. extern EnumEditor EnumEdit;
  86. /******************************************************************************/