ElementFormControlInput.cpp 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. #include "ElementFormControlInput.h"
  2. #include "ElementFormControl.h"
  3. #include <RmlUi/Core/Elements/ElementFormControl.h>
  4. #include <RmlUi/Lua/Utilities.h>
  5. namespace Rml {
  6. namespace Lua {
  7. // methods
  8. int ElementFormControlInputSelect(lua_State* /*L*/, ElementFormControlInput* obj)
  9. {
  10. obj->Select();
  11. return 0;
  12. }
  13. int ElementFormControlInputSetSelection(lua_State* L, ElementFormControlInput* obj)
  14. {
  15. int start = (int)GetIndex(L, 1);
  16. int end = (int)GetIndex(L, 2);
  17. obj->SetSelectionRange(start, end);
  18. return 0;
  19. }
  20. int ElementFormControlInputGetSelection(lua_State* L, ElementFormControlInput* obj)
  21. {
  22. int selection_start = 0, selection_end = 0;
  23. String selected_text;
  24. obj->GetSelection(&selection_start, &selection_end, &selected_text);
  25. PushIndex(L, selection_start);
  26. PushIndex(L, selection_end);
  27. lua_pushstring(L, selected_text.c_str());
  28. return 3;
  29. }
  30. // getters
  31. int ElementFormControlInputGetAttrchecked(lua_State* L)
  32. {
  33. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  34. RMLUI_CHECK_OBJ(obj);
  35. lua_pushboolean(L, obj->HasAttribute("checked"));
  36. return 1;
  37. }
  38. int ElementFormControlInputGetAttrmaxlength(lua_State* L)
  39. {
  40. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  41. RMLUI_CHECK_OBJ(obj);
  42. lua_pushinteger(L, obj->GetAttribute<int>("maxlength", -1));
  43. return 1;
  44. }
  45. int ElementFormControlInputGetAttrsize(lua_State* L)
  46. {
  47. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  48. RMLUI_CHECK_OBJ(obj);
  49. lua_pushinteger(L, obj->GetAttribute<int>("size", 20));
  50. return 1;
  51. }
  52. int ElementFormControlInputGetAttrmax(lua_State* L)
  53. {
  54. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  55. RMLUI_CHECK_OBJ(obj);
  56. lua_pushinteger(L, obj->GetAttribute<int>("max", 100));
  57. return 1;
  58. }
  59. int ElementFormControlInputGetAttrmin(lua_State* L)
  60. {
  61. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  62. RMLUI_CHECK_OBJ(obj);
  63. lua_pushinteger(L, obj->GetAttribute<int>("min", 0));
  64. return 1;
  65. }
  66. int ElementFormControlInputGetAttrstep(lua_State* L)
  67. {
  68. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  69. RMLUI_CHECK_OBJ(obj);
  70. lua_pushinteger(L, obj->GetAttribute<int>("step", 1));
  71. return 1;
  72. }
  73. // setters
  74. int ElementFormControlInputSetAttrchecked(lua_State* L)
  75. {
  76. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  77. RMLUI_CHECK_OBJ(obj);
  78. bool checked = RMLUI_CHECK_BOOL(L, 2);
  79. if (checked)
  80. obj->SetAttribute("checked", true);
  81. else
  82. obj->RemoveAttribute("checked");
  83. return 0;
  84. }
  85. int ElementFormControlInputSetAttrmaxlength(lua_State* L)
  86. {
  87. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  88. RMLUI_CHECK_OBJ(obj);
  89. int maxlength = (int)luaL_checkinteger(L, 2);
  90. obj->SetAttribute("maxlength", maxlength);
  91. return 0;
  92. }
  93. int ElementFormControlInputSetAttrsize(lua_State* L)
  94. {
  95. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  96. RMLUI_CHECK_OBJ(obj);
  97. int size = (int)luaL_checkinteger(L, 2);
  98. obj->SetAttribute("size", size);
  99. return 0;
  100. }
  101. int ElementFormControlInputSetAttrmax(lua_State* L)
  102. {
  103. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  104. RMLUI_CHECK_OBJ(obj);
  105. int max = (int)luaL_checkinteger(L, 2);
  106. obj->SetAttribute("max", max);
  107. return 0;
  108. }
  109. int ElementFormControlInputSetAttrmin(lua_State* L)
  110. {
  111. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  112. RMLUI_CHECK_OBJ(obj);
  113. int min = (int)luaL_checkinteger(L, 2);
  114. obj->SetAttribute("min", min);
  115. return 0;
  116. }
  117. int ElementFormControlInputSetAttrstep(lua_State* L)
  118. {
  119. ElementFormControlInput* obj = LuaType<ElementFormControlInput>::check(L, 1);
  120. RMLUI_CHECK_OBJ(obj);
  121. int step = (int)luaL_checkinteger(L, 2);
  122. obj->SetAttribute("step", step);
  123. return 0;
  124. }
  125. RegType<ElementFormControlInput> ElementFormControlInputMethods[] = {
  126. RMLUI_LUAMETHOD(ElementFormControlInput, Select),
  127. RMLUI_LUAMETHOD(ElementFormControlInput, SetSelection),
  128. RMLUI_LUAMETHOD(ElementFormControlInput, GetSelection),
  129. {nullptr, nullptr},
  130. };
  131. luaL_Reg ElementFormControlInputGetters[] = {
  132. RMLUI_LUAGETTER(ElementFormControlInput, checked),
  133. RMLUI_LUAGETTER(ElementFormControlInput, maxlength),
  134. RMLUI_LUAGETTER(ElementFormControlInput, size),
  135. RMLUI_LUAGETTER(ElementFormControlInput, max),
  136. RMLUI_LUAGETTER(ElementFormControlInput, min),
  137. RMLUI_LUAGETTER(ElementFormControlInput, step),
  138. {nullptr, nullptr},
  139. };
  140. luaL_Reg ElementFormControlInputSetters[] = {
  141. RMLUI_LUASETTER(ElementFormControlInput, checked),
  142. RMLUI_LUASETTER(ElementFormControlInput, maxlength),
  143. RMLUI_LUASETTER(ElementFormControlInput, size),
  144. RMLUI_LUASETTER(ElementFormControlInput, max),
  145. RMLUI_LUASETTER(ElementFormControlInput, min),
  146. RMLUI_LUASETTER(ElementFormControlInput, step),
  147. {nullptr, nullptr},
  148. };
  149. template <>
  150. void ExtraInit<ElementFormControlInput>(lua_State* L, int metatable_index)
  151. {
  152. ExtraInit<ElementFormControl>(L, metatable_index);
  153. LuaType<ElementFormControl>::_regfunctions(L, metatable_index, metatable_index - 1);
  154. AddTypeToElementAsTable<ElementFormControlInput>(L);
  155. }
  156. RMLUI_LUATYPE_DEFINE(ElementFormControlInput)
  157. } // namespace Lua
  158. } // namespace Rml