summaryrefslogtreecommitdiff
path: root/Editor
diff options
context:
space:
mode:
Diffstat (limited to 'Editor')
-rw-r--r--Editor/GUI/GUIWindow.cpp59
-rw-r--r--Editor/GUI/GUIWindow.h17
-rw-r--r--Editor/Scripting/Window/GUIWindow.bind.cpp17
3 files changed, 59 insertions, 34 deletions
diff --git a/Editor/GUI/GUIWindow.cpp b/Editor/GUI/GUIWindow.cpp
index 028a654..fe19a95 100644
--- a/Editor/GUI/GUIWindow.cpp
+++ b/Editor/GUI/GUIWindow.cpp
@@ -12,7 +12,6 @@ using namespace std;
GUIWindowProxy::GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script)
{
-
}
void GUIWindowProxy::OnGUI(LuaBind::State& state)
@@ -24,13 +23,41 @@ void GUIWindowProxy::OnGUI(LuaBind::State& state)
invoker.Invoke(0);
}
-void GUIWindowProxy::DoGUI()
+void GUIWindowProxy::OnFocus(LuaBind::State& state)
{
- LuaBind::State state = owner->GetVM()->GetCurThread();
+ LuaBind::MemberInvoker invoker = MemberInvoker(state, owner);
+ invoker.member = script;
+ invoker.method = "OnFocus";
+ invoker.AddMember(script);
+ invoker.Invoke(0);
+}
+void GUIWindowProxy::DoGUI(LuaBind::State& state)
+{
+ OnGUI(state);
+}
+void GUIWindowProxy::DoClean(LuaBind::State& state)
+{
- OnGUI(state);
+}
+
+void GUIWindowProxy::Start(LuaBind::State& state)
+{
+ LuaBind::MemberInvoker invoker = MemberInvoker(state, owner);
+ invoker.member = script;
+ invoker.method = "Start";
+ invoker.AddMember(script);
+ invoker.Invoke(0);
+}
+
+void GUIWindowProxy::Destroy(LuaBind::State& state)
+{
+ LuaBind::MemberInvoker invoker = MemberInvoker(state, owner);
+ invoker.member = script;
+ invoker.method = "Destroy";
+ invoker.AddMember(script);
+ invoker.Invoke(0);
}
//------------------------------------------------------------------------------------
@@ -232,8 +259,6 @@ void GUIWindow::RepaintAll()
{
}
-////////////////////////////////////////////////////////////
-
GUIWindow::GUIWindow(LuaBind::VM* vm, std::string name)
: LuaBind::NativeClass<GUIWindow>(vm)
{
@@ -292,19 +317,15 @@ void GUIWindow::ProcessEventMessages(UINT message, WPARAM wParam, LPARAM lParam)
LuaBind::State state = GetVM()->GetCurThread();
SCRIPT_GLOBAL.setCurrentEvent.AddTable(state, ie);
- SCRIPT_GLOBAL.setCurrentEvent.Invoke(state, 0);
+ SCRIPT_GLOBAL.setCurrentEvent.Invoke(state);
- SCRIPT_GLOBAL.guiBeginOnGUI.Invoke(state, 0);
+ SCRIPT_GLOBAL.guiBeginOnGUI.Invoke(state);
SetAsRenderContext();
- LuaBind::MemberInvoker invoker = LuaBind::MemberInvoker(state, this);
- invoker.member = m_Script;
- invoker.method = "OnGUI";
- invoker.AddMember(m_Script);
- invoker.Invoke(0);
+ m_Script.DoGUI(state);
- SCRIPT_GLOBAL.guiEndOnGUI.Invoke(state, 0);
+ SCRIPT_GLOBAL.guiEndOnGUI.Invoke(state);
}
bool GUIWindow::SetRenderContext()
@@ -371,7 +392,8 @@ void GUIWindow::DoPaint()
void GUIWindow::OnFocus()
{
- InvokeLuaCallback(m_Script, "OnFocus");
+ LuaBind::State state = GetVM()->GetCurThread();
+ m_Script.OnFocus(state);
}
void GUIWindow::OnLostFocus()
@@ -380,11 +402,8 @@ void GUIWindow::OnLostFocus()
void GUIWindow::OnPaint()
{
- LuaBind::MemberInvoker invoker = MemberInvoker(GetVM()->GetCurThread(), this);
- invoker.member = m_Script;
- invoker.method = "OnGUI";
- invoker.AddMember(m_Script);
- invoker.Invoke(0);
+ LuaBind::State state = GetVM()->GetCurThread();
+ m_Script.OnGUI(state);
}
void GUIWindow::SetPosition(Rect position)
diff --git a/Editor/GUI/GUIWindow.h b/Editor/GUI/GUIWindow.h
index bbf2687..ed79f26 100644
--- a/Editor/GUI/GUIWindow.h
+++ b/Editor/GUI/GUIWindow.h
@@ -25,11 +25,17 @@ public:
GUIWindowProxy() {}
GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script);
- void DoGUI();
- void DoClean();
+ void DoGUI(LuaBind::State& state);
+ void DoClean(LuaBind::State& state);
-private:
- void OnGUI(LuaBind::State& state);
+ //------------------------------------------------------
+ // callbacks
+ //------------------------------------------------------
+
+ void Start(LuaBind::State& state);
+ void Destroy(LuaBind::State& state);
+ void OnGUI(LuaBind::State& state);
+ void OnFocus(LuaBind::State& state);
};
@@ -65,8 +71,7 @@ private:
std::string m_Name;
- LuaBind::MemberRef m_Script;
- GUIWindowProxy m_Instance;
+ GUIWindowProxy m_Script;
BOOL m_MouseTracking;
DWORD m_MouseHoverTime;
diff --git a/Editor/Scripting/Window/GUIWindow.bind.cpp b/Editor/Scripting/Window/GUIWindow.bind.cpp
index 7fc0d4d..5a61592 100644
--- a/Editor/Scripting/Window/GUIWindow.bind.cpp
+++ b/Editor/Scripting/Window/GUIWindow.bind.cpp
@@ -4,11 +4,11 @@
LUA_BIND_REGISTRY(GUIWindow)
{
LUA_BIND_REGISTER_METHODS(state,
- { "DoPaint", _DoPaint },
- { "Focus", _Focus },
+ { "New", _New },
+ { "DoPaint", _DoPaint },
+ { "Focus", _Focus },
{ "SetContainerWindow", _SetContainerWindow },
- { "SetPosition", _SetPosition },
- { "New", _New }
+ { "SetPosition", _SetPosition }
);
}
@@ -16,7 +16,7 @@ LUA_BIND_POSTPROCESS(GUIWindow)
{
}
-// GUIWindow.New([script])
+// GUIWindow.New(script)
LUA_BIND_IMPL_METHOD(GUIWindow, _New)
{
LUA_BIND_STATE(L, GUIWindow);
@@ -30,9 +30,10 @@ LUA_BIND_IMPL_METHOD(GUIWindow, _New)
GUIWindow* wnd = new GUIWindow(state.GetVM());
- wnd->SetMemberRef(state, wnd->m_Script, -1);
- wnd->m_Instance.owner = wnd;
- wnd->m_Instance.script = wnd->m_Script;
+ LuaBind::MemberRef script;
+ wnd->SetMemberRef(state, script, -1);
+ wnd->m_Script.owner = wnd;
+ wnd->m_Script.script = script;
wnd->PushUserdata(state);