ElementDataGrid.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "precompiled.h"
  2. #include "ElementDataGrid.h"
  3. #include <Rocket/Core/Element.h>
  4. #include <Rocket/Controls/ElementDataGridRow.h>
  5. using Rocket::Controls::ElementDataGridRow;
  6. namespace Rocket {
  7. namespace Core {
  8. namespace Lua {
  9. //this will be used to "inherit" from Element
  10. template<> void LuaType<ElementDataGrid>::extra_init(lua_State* L, int metatable_index)
  11. {
  12. LuaType<Element>::extra_init(L,metatable_index);
  13. LuaType<Element>::_regfunctions(L,metatable_index,metatable_index-1);
  14. }
  15. //methods
  16. int ElementDataGridAddColumn(lua_State* L, ElementDataGrid* obj)
  17. {
  18. LUACHECKOBJ(obj);
  19. const char* fields = luaL_checkstring(L,1);
  20. const char* formatter = luaL_checkstring(L,2);
  21. float width = (float)luaL_checknumber(L,3);
  22. const char* rml = luaL_checkstring(L,4);
  23. obj->AddColumn(fields,formatter,width,rml);
  24. return 0;
  25. }
  26. int ElementDataGridSetDataSource(lua_State* L, ElementDataGrid* obj)
  27. {
  28. LUACHECKOBJ(obj);
  29. const char* source = luaL_checkstring(L,1);
  30. obj->SetDataSource(source);
  31. return 0;
  32. }
  33. //getter
  34. int ElementDataGridGetAttrrows(lua_State* L)
  35. {
  36. ElementDataGrid* obj = LuaType<ElementDataGrid>::check(L,1);
  37. LUACHECKOBJ(obj);
  38. lua_newtable(L);
  39. int tbl = lua_gettop(L);
  40. int numrows = obj->GetNumRows();
  41. ElementDataGridRow* row;
  42. for(int i = 0; i < numrows; i++)
  43. {
  44. row = obj->GetRow(i);
  45. LuaType<ElementDataGridRow>::push(L,row,false);
  46. lua_rawseti(L,tbl,i);
  47. }
  48. return 1;
  49. }
  50. RegType<ElementDataGrid> ElementDataGridMethods[] =
  51. {
  52. LUAMETHOD(ElementDataGrid,AddColumn)
  53. LUAMETHOD(ElementDataGrid,SetDataSource)
  54. { NULL, NULL },
  55. };
  56. luaL_reg ElementDataGridGetters[] =
  57. {
  58. LUAGETTER(ElementDataGrid,rows)
  59. { NULL, NULL },
  60. };
  61. luaL_reg ElementDataGridSetters[] =
  62. {
  63. { NULL, NULL },
  64. };
  65. template<> const char* GetTClassName<ElementDataGrid>() { return "ElementDataGrid"; }
  66. template<> RegType<ElementDataGrid>* GetMethodTable<ElementDataGrid>() { return ElementDataGridMethods; }
  67. template<> luaL_reg* GetAttrTable<ElementDataGrid>() { return ElementDataGridGetters; }
  68. template<> luaL_reg* SetAttrTable<ElementDataGrid>() { return ElementDataGridSetters; }
  69. }
  70. }
  71. }