summaryrefslogtreecommitdiff
path: root/Editor/GUI
diff options
context:
space:
mode:
Diffstat (limited to 'Editor/GUI')
-rw-r--r--Editor/GUI/GUIWindow.cpp27
-rw-r--r--Editor/GUI/GUIWindow.h20
2 files changed, 46 insertions, 1 deletions
diff --git a/Editor/GUI/GUIWindow.cpp b/Editor/GUI/GUIWindow.cpp
index 19ceb85..028a654 100644
--- a/Editor/GUI/GUIWindow.cpp
+++ b/Editor/GUI/GUIWindow.cpp
@@ -8,6 +8,32 @@
#include "Editor/Scripting/EditorScriptingManager.h"
using namespace LuaBind;
+using namespace std;
+
+GUIWindowProxy::GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script)
+{
+
+}
+
+void GUIWindowProxy::OnGUI(LuaBind::State& state)
+{
+ MemberInvoker invoker = MemberInvoker(state, owner);
+ invoker.member = script;
+ invoker.method = "OnGUI";
+ invoker.AddMember(script);
+ invoker.Invoke(0);
+}
+
+void GUIWindowProxy::DoGUI()
+{
+ LuaBind::State state = owner->GetVM()->GetCurThread();
+
+
+
+ OnGUI(state);
+}
+
+//------------------------------------------------------------------------------------
static bool RedirectMouseWheel(HWND window, WPARAM wParam, LPARAM lParam)
{
@@ -210,7 +236,6 @@ void GUIWindow::RepaintAll()
GUIWindow::GUIWindow(LuaBind::VM* vm, std::string name)
: LuaBind::NativeClass<GUIWindow>(vm)
- , m_Script()
{
log_info("Init GUIWindow");
diff --git a/Editor/GUI/GUIWindow.h b/Editor/GUI/GUIWindow.h
index aed38d9..bbf2687 100644
--- a/Editor/GUI/GUIWindow.h
+++ b/Editor/GUI/GUIWindow.h
@@ -14,6 +14,25 @@
#include "Runtime/Utilities/Exception.h"
#include "WindowUtil.h"
+class GUIWindow;
+
+class GUIWindowProxy : public LuaObjectProxy
+{
+public:
+ GUIWindow * owner;
+ LuaBind::MemberRef script;
+
+ GUIWindowProxy() {}
+ GUIWindowProxy(GUIWindow *owner, LuaBind::MemberRef script);
+
+ void DoGUI();
+ void DoClean();
+
+private:
+ void OnGUI(LuaBind::State& state);
+
+};
+
// GUI窗口,事件相应、绘制、布局的单元
class GUIWindow
: public WindowBase
@@ -47,6 +66,7 @@ private:
std::string m_Name;
LuaBind::MemberRef m_Script;
+ GUIWindowProxy m_Instance;
BOOL m_MouseTracking;
DWORD m_MouseHoverTime;