Browse Source

More UI Work

Josh Engebretson 10 years ago
parent
commit
91d64e40cf

+ 11 - 0
Source/Atomic/UI/UI.cpp

@@ -8,6 +8,7 @@
 #include <TurboBadger/tb_node_tree.h>
 #include <TurboBadger/tb_node_tree.h>
 #include <TurboBadger/tb_widgets_reader.h>
 #include <TurboBadger/tb_widgets_reader.h>
 #include <TurboBadger/tb_window.h>
 #include <TurboBadger/tb_window.h>
+#include <TurboBadger/tb_editfield.h>
 
 
 void register_tbbf_font_renderer();
 void register_tbbf_font_renderer();
 void register_stb_font_renderer();
 void register_stb_font_renderer();
@@ -28,6 +29,7 @@ using namespace tb;
 #include "UI.h"
 #include "UI.h"
 #include "UIButton.h"
 #include "UIButton.h"
 #include "UITextField.h"
 #include "UITextField.h"
+#include "UIEditField.h"
 
 
 namespace tb
 namespace tb
 {
 {
@@ -394,6 +396,15 @@ UIWidget* UI::WrapWidget(tb::TBWidget* widget)
         return textfield;
         return textfield;
     }
     }
 
 
+    if (widget->IsOfType<TBEditField>())
+    {
+        UIEditField* editfield = new UIEditField(context_, false);
+        editfield->SetWidget(widget);
+        widgetWrap_[widget] = editfield;
+        return editfield;
+    }
+
+
     return 0;
     return 0;
 }
 }
 
 

+ 78 - 0
Source/Atomic/UI/UIEditField.cpp

@@ -0,0 +1,78 @@
+
+#include <TurboBadger/tb_widgets.h>
+#include <TurboBadger/tb_widgets_common.h>
+#include <TurboBadger/tb_editfield.h>
+
+#include "UIEvents.h"
+#include "UIEditField.h"
+
+using namespace tb;
+
+namespace Atomic
+{
+
+UIEditField::UIEditField(Context* context, bool createWidget) : UIWidget(context, false)
+{
+    if (createWidget)
+    {
+        widget_ = new TBEditField();
+        widget_->SetDelegate(this);
+    }
+}
+
+UIEditField::~UIEditField()
+{
+
+}
+
+void UIEditField::SetWrapping(bool wrap)
+{
+    if (!widget_)
+        return;
+
+    TBEditField* w = (TBEditField*) widget_;
+
+    w->SetWrapping(wrap);
+
+}
+
+bool UIEditField::GetWrapping()
+{
+    if (!widget_)
+        return false;
+
+    TBEditField* w = (TBEditField*) widget_;
+
+    return w->GetWrapping();
+
+}
+
+void UIEditField::SetTextAlign(TEXT_ALIGN align)
+{
+    if (!widget_)
+        return;
+
+    // safe cast?
+    TBEditField* w = (TBEditField*) widget_;
+
+    switch (align)
+    {
+        case TEXT_ALIGN_CENTER:
+            w->SetTextAlign(TB_TEXT_ALIGN_CENTER);
+            break;
+        case TEXT_ALIGN_LEFT:
+            w->SetTextAlign(TB_TEXT_ALIGN_LEFT);
+            break;
+        case TEXT_ALIGN_RIGHT:
+            w->SetTextAlign(TB_TEXT_ALIGN_RIGHT);
+            break;
+    }
+
+}
+
+bool UIEditField::OnEvent(const tb::TBWidgetEvent &ev)
+{
+    return false;
+}
+
+}

+ 39 - 0
Source/Atomic/UI/UIEditField.h

@@ -0,0 +1,39 @@
+
+#pragma once
+
+#include "UIWidget.h"
+
+namespace Atomic
+{
+
+enum TEXT_ALIGN
+{
+    TEXT_ALIGN_LEFT,		///< Aligned left
+    TEXT_ALIGN_RIGHT,	///< Aligned right
+    TEXT_ALIGN_CENTER	///< Aligned center
+};
+
+
+class UIEditField : public UIWidget
+{
+    OBJECT(UIEditField)
+
+public:
+
+    UIEditField(Context* context, bool createWidget = true);
+    virtual ~UIEditField();
+
+    void SetTextAlign(TEXT_ALIGN align);
+
+    void SetWrapping(bool wrap);
+    bool GetWrapping();
+
+protected:
+
+    virtual bool OnEvent(const tb::TBWidgetEvent &ev);
+
+private:
+
+};
+
+}

+ 4 - 6
Source/Atomic/UI/UIWidget.cpp

@@ -40,11 +40,9 @@ bool UIWidget::Load(const String& filename)
     eventData[WidgetLoaded::P_WIDGET] = this;
     eventData[WidgetLoaded::P_WIDGET] = this;
     SendEvent(E_WIDGETLOADED, eventData);
     SendEvent(E_WIDGETLOADED, eventData);
     return true;
     return true;
-
-    return true;
 }
 }
 
 
-UIWidget* UIWidget::GetWidgetByID(const String& id)
+UIWidget* UIWidget::GetWidget(const String& id)
 {
 {
     if (!widget_)
     if (!widget_)
         return 0;
         return 0;
@@ -95,12 +93,12 @@ void UIWidget::AddChild(UIWidget* child)
     widget_->AddChild(child->widget_);
     widget_->AddChild(child->widget_);
 }
 }
 
 
-bool UIWidget::SetText(const String& text)
+void UIWidget::SetText(const String& text)
 {
 {
     if (!widget_)
     if (!widget_)
-        return false;
+        return;
 
 
-    return widget_->SetText(text.CString());
+    widget_->SetText(text.CString());
 }
 }
 
 
 void UIWidget::SetPosition(int x, int y)
 void UIWidget::SetPosition(int x, int y)

+ 2 - 2
Source/Atomic/UI/UIWidget.h

@@ -29,11 +29,11 @@ public:
 
 
     void SetSize(int width, int height);
     void SetSize(int width, int height);
     void SetPosition(int x, int y);
     void SetPosition(int x, int y);
-    bool SetText(const String& text);
+    void SetText(const String& text);
 
 
     void Center();
     void Center();
 
 
-    UIWidget* GetWidgetByID(const String& id);
+    UIWidget* GetWidget(const String& id);
 
 
     void AddChild(UIWidget* child);
     void AddChild(UIWidget* child);
 
 

+ 1 - 1
Source/AtomicJS/JSBind/modules/UI.json

@@ -2,7 +2,7 @@
 	"name" : "UI",
 	"name" : "UI",
 	"sources" : ["UI"],
 	"sources" : ["UI"],
 	"includes" : ["<Atomic/Graphics/Material.h>", "<Atomic/Scene/Node.h>", "<Atomic/Scene/Scene.h>", "<Atomic/Graphics/Texture2D.h>"],
 	"includes" : ["<Atomic/Graphics/Material.h>", "<Atomic/Scene/Node.h>", "<Atomic/Scene/Scene.h>", "<Atomic/Graphics/Texture2D.h>"],
-	"classes" : ["UIWidget", "UIView", "UIWindow", "UIButton", "UITextField", "UISelectItem", "UISelectItemSource", "UIMenuWindow"],
+	"classes" : ["UIWidget", "UIView", "UIWindow", "UIButton", "UITextField", "UISelectItem", "UISelectItemSource", "UIMenuWindow", "UIEditField"],
 	"overloads" : {
 	"overloads" : {
 	}
 	}
 }
 }