summaryrefslogtreecommitdiff
path: root/Editor/GUI
diff options
context:
space:
mode:
Diffstat (limited to 'Editor/GUI')
-rw-r--r--Editor/GUI/GUIWindow.cpp59
-rw-r--r--Editor/GUI/GUIWindow.h17
2 files changed, 50 insertions, 26 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;