lugre_widget_L.cpp

Go to the documentation of this file.
00001 #include "lugre_prefix.h"
00002 #include "lugre_scripting.h"
00003 #include "lugre_luabind.h"
00004 #include "lugre_widget.h"
00005 #include "lugre_gfx2D.h"
00006 #include "lugre_smartptr.h"
00007 
00008 using namespace Lugre;
00009 
00010 extern "C" {
00011     #include "lua.h"
00012     #include "lauxlib.h"
00013     #include "lualib.h"
00014 }
00015 
00016 namespace Lugre {
00017     
00018 class cDialog_L : public cLuaBind<cDialog> { public:
00020         virtual void RegisterMethods    (lua_State *L) { PROFILE
00021             // mlMethod.push_back((struct luaL_reg){"Meemba",       cDialog_L::Get});
00022             // lua_register(L,"MyGlobalFun",    MyGlobalFun);
00023             // lua_register(L,"MyStaticMethod", &cSomeClass::MyStaticMethod);
00024 
00025             lua_register(L,"MyCreateDialog",        &cDialog_L::MyCreateDialog);
00026             
00027             #define REGISTER_METHOD(methodname) mlMethod.push_back(make_luaL_reg(#methodname,&cDialog_L::methodname));
00028 
00029             REGISTER_METHOD(Destroy);
00030             REGISTER_METHOD(BringToFront);
00031             REGISTER_METHOD(SendToBack);
00032             REGISTER_METHOD(CreateWidget);
00033             REGISTER_METHOD(SetVisible);
00034             REGISTER_METHOD(GetVisible);
00035             
00036             #undef REGISTER_METHOD
00037         }
00038 
00040         virtual void RegisterMembers    () {
00041             cDialog* prototype = new cDialog(); // memory leak : never deleted, but better than side effekts
00042             cMemberVar_REGISTER(prototype,  kVarType_size_t,        miUID,              kVarFlag_Readonly);
00043             cMemberVar_REGISTER(prototype,  kVarType_bool,          mbVisible,          kVarFlag_Readonly);
00044         }
00045 
00047         
00048         static int  MyCreateDialog      (lua_State *L) { PROFILE
00049             cDialog* target = cDialogManager::GetSingleton().MyCreateDialog();
00050             return CreateUData(L,target);
00051         }
00052 
00053         static int  Destroy         (lua_State *L) { PROFILE
00054             cDialogManager::GetSingleton().DestroyDialog(checkudata_alive(L));
00055             return 0;
00056         }
00057         
00058         
00059         
00060         // cWidget* CreateWidget        (cWidget* pParent=0,const char* sID=0); ///< parent and id cannot change, see also cWidget::CreateChild()
00061         static int  CreateWidget        (lua_State *L) { PROFILE
00062             cWidget* target = checkudata_alive(L)->CreateWidget(0);
00063             return cLuaBind<cWidget>::CreateUData(L,target);
00064             return 0;
00065         }
00066         
00067         // void     BringToFront        (); 
00068         static int  BringToFront        (lua_State *L) { PROFILE
00069             checkudata_alive(L)->BringToFront();
00070             return 0;
00071         }
00072         
00073         // void     SendToBack      (); 
00074         static int  SendToBack      (lua_State *L) { PROFILE
00075             checkudata_alive(L)->SendToBack();
00076             return 0;
00077         }
00078         
00079         // void SetVisible              (const bool bVisible);
00080         static int  SetVisible          (lua_State *L) { PROFILE
00081             checkudata_alive(L)->SetVisible(lua_isboolean(L,2) ? lua_toboolean(L,2) : luaL_checkint(L,2));
00082             return 0;
00083         }
00084         
00085         // bool GetVisible              ()
00086         static int  GetVisible          (lua_State *L) { PROFILE
00087             lua_pushboolean(L,checkudata_alive(L)->GetVisible());
00088             return 1;
00089         }
00090         
00091         virtual const char* GetLuaTypeName () { return "lugre.widget.dialog"; }
00092 };
00093 
00094 class cWidget_L : public cLuaBind<cWidget> { public:
00096         virtual void RegisterMethods    (lua_State *L) { PROFILE
00097             // mlMethod.push_back((struct luaL_reg){"Meemba",       cWidget_L::Get});
00098             // lua_register(L,"MyGlobalFun",    MyGlobalFun);
00099             // lua_register(L,"MyStaticMethod", &cSomeClass::MyStaticMethod);
00100 
00101             lua_register(L,"GetWidgetUnderPos",     &cWidget_L::GetWidgetUnderPos);
00102 
00103             #define REGISTER_METHOD(methodname) mlMethod.push_back(make_luaL_reg(#methodname,&cWidget_L::methodname));
00104 
00105             REGISTER_METHOD(Destroy);
00106             REGISTER_METHOD(CreateChild);
00107             REGISTER_METHOD(UpdateClip);
00108             REGISTER_METHOD(SetBitMask);
00109             REGISTER_METHOD(IsUnderPos);
00110             
00111             #undef REGISTER_METHOD
00112         }
00113 
00115         virtual void RegisterMembers    () { PROFILE
00116             cWidget* prototype = new cWidget(); // memory leak : never deleted, but better than side effekts
00117             cMemberVar_REGISTER(prototype,  kVarType_size_t,        miUID,                  kVarFlag_Readonly);
00118             cMemberVar_REGISTER(prototype,  kVarType_bool,          mbIgnoreMouseOver,      0);
00119             cMemberVar_REGISTER(prototype,  kVarType_bool,          mbClipChildsHitTest,    0);
00120             cMemberVar_REGISTER(prototype,  kVarType_Gfx2D,         mpGfx2D,                kVarFlag_Readonly);
00121         }
00122 
00124         
00126         static int              GetWidgetUnderPos   (lua_State *L) { PROFILE
00127             cWidget* p = cDialogManager::GetSingleton().GetWidgetUnderPos(luaL_checkint(L,1),luaL_checkint(L,2));
00128             if (!p) return 0;
00129             lua_pushnumber(L,p->miUID);
00130             return 1;
00131         }
00132 
00134 
00135         //void      Destroy         (); ///< shortcut to cDialog::DestroyWidget(this)
00136         static int  Destroy         (lua_State *L) { PROFILE
00137             checkudata_alive(L)->Destroy();
00138             return 0;
00139         }
00140         
00141         //cWidget*  CreateChild     (const char* sID=0); ///< shortcut to cDialog::CreateWidget(this,sID);
00142         static int  CreateChild     (lua_State *L) { PROFILE
00143             cWidget* target = checkudata_alive(L)->CreateChild();
00144             return CreateUData(L,target);
00145         }
00146         
00147         static int  UpdateClip      (lua_State *L) { PROFILE
00148             checkudata_alive(L)->UpdateClip(luaL_checknumber(L, 2),luaL_checknumber(L, 3),luaL_checknumber(L, 4),luaL_checknumber(L, 5));
00149             return 0;
00150         }
00151         
00152         static int  SetBitMask      (lua_State *L) { PROFILE
00153             cBitMask* pBitMask = (lua_gettop(L) >= 2 && !lua_isnil(L,2)) ? cLuaBind<cBitMask>::checkudata(L,2) : 0;
00154             checkudata_alive(L)->mpBitMask = pBitMask;
00155             return 0;
00156         }
00157         
00159         static int          IsUnderPos  (lua_State *L) { PROFILE
00160             lua_pushboolean(L,checkudata_alive(L)->IsUnderPos(luaL_checkint(L,2),luaL_checkint(L,3)));
00161             return 1;
00162         }
00163 
00164         virtual const char* GetLuaTypeName () { return "lugre.widget"; }
00165 };
00166 
00168 void    cDialog::LuaRegister    (lua_State *L) { PROFILE
00169     cLuaBind<cDialog>::GetSingletonPtr(new cDialog_L())->LuaRegister(L);
00170 }
00171 
00173 void    cWidget::LuaRegister    (lua_State *L) { PROFILE
00174     cLuaBind<cWidget>::GetSingletonPtr(new cWidget_L())->LuaRegister(L);
00175 }
00176 
00177 };

Generated on Wed Feb 8 06:00:13 2012 for cpp by  doxygen 1.5.6