summaryrefslogtreecommitdiff
path: root/source/Asura.Editor/controls/button.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/Asura.Editor/controls/button.h')
-rw-r--r--source/Asura.Editor/controls/button.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/source/Asura.Editor/controls/button.h b/source/Asura.Editor/controls/button.h
new file mode 100644
index 0000000..14cd041
--- /dev/null
+++ b/source/Asura.Editor/controls/button.h
@@ -0,0 +1,79 @@
+#ifndef __ASURA_EDITOR_BUTTON_H__
+#define __ASURA_EDITOR_BUTTON_H__
+
+#include <vector>
+
+#include <asura-lib-utils/scripting/portable.hpp>
+#include <asura-lib-core/graphics/image.h>
+
+#include "../core/signal.h"
+#include "widget.h"
+
+namespace AsuraEditor
+{
+
+ enum ButtonStatus
+ {
+ BUTTON_STATUS_NORMAL = 0,
+ BUTTON_STATUS_PUSHED = 1,
+ BUTTON_STATUS_HOVER = 2,
+ BUTTON_STATUS_DISABLED = 3,
+ BUTTON_STATUS_FOCUSED = 4,
+ _BUTTON_STATUS_COUNT = 5,
+ };
+
+ enum ButtonMessage
+ {
+ BUTTON_MSG_CLICK = 0,
+ BUTTON_MSG_HOVER = 1,
+ BUTTON_MSG_KILLFOCUS = 2,
+ _BUTTON_MSG_COUNT = 3,
+ };
+
+ class Button
+ : public Widget
+ , public AEScripting::Portable<Button>
+ {
+ public:
+
+ LUAX_DECL_FACTORY(Button);
+
+ Button();
+ ~Button();
+
+ void OnEvent(AEInput::Event& e) override;
+ void OnPaint() override;
+
+ void Connect(int msg, Slot callback);
+ void Disconnect(int msg);
+ void DisconnectAll(int msg);
+ void DisconnectAllMsg();
+
+ int GetStatus();
+ void SetImage(int status, AEGraphics::Image* image);
+
+ private:
+
+ //------------------------------------------------------------------------------//
+
+ LUAX_DECL_ENUM(ButtonStatus);
+ LUAX_DECL_ENUM(ButtonMessage);
+
+ LUAX_DECL_METHOD(_Connect);
+ LUAX_DECL_METHOD(_Disconnect);
+ LUAX_DECL_METHOD(_SetImage);
+
+ //------------------------------------------------------------------------------//
+
+ int mStatus; // ǰ״̬
+ Signal mSignals[_BUTTON_MSG_COUNT]; // 3Ϣsignal
+ AEGraphics::Image* mImage[_BUTTON_STATUS_COUNT]; // 5״̬ͼ
+
+ Luax::LuaxMemberRef mImageRef[_BUTTON_STATUS_COUNT];// ͼ
+ std::vector<Luax::LuaxMemberRef> mCallbacksRef; // ص
+
+ };
+
+}
+
+#endif \ No newline at end of file