Browse Source

Initial inspector fields for Node showing up

Josh Engebretson 10 years ago
parent
commit
06c412d0c3

+ 49 - 7
Data/AtomicEditor/Resources/EditorData/AtomicEditor/typescript/ui/inspector/NodeInspector.ts

@@ -13,13 +13,6 @@ class NodeInspector extends ScriptWidget {
 
   inspect(node:Atomic.Node) {
 
-    var attrs = node.getAttributes();
-
-    for (var i in attrs) {
-        var attr = attrs[i];
-        print(attr);
-    }
-
     var fd = new Atomic.UIFontDescription();
     fd.id = "Vera";
     fd.size = 11;
@@ -38,6 +31,55 @@ class NodeInspector extends ScriptWidget {
     nodeContainer.gravity = Atomic.UI_GRAVITY_ALL;
     nodeContainer.skinBg = "InspectorTopLayout";
 
+    // node attr layout
+
+    var attrsVerticalLayout = new Atomic.UILayout(Atomic.UI_AXIS_Y);
+    attrsVerticalLayout.gravity = Atomic.UI_GRAVITY_ALL;
+    attrsVerticalLayout.layoutPosition = Atomic.UI_LAYOUT_POSITION_LEFT_TOP;
+    nodeContainer.addChild(attrsVerticalLayout);
+
+    var nodeLabel = new Atomic.UITextField();
+    nodeLabel.textAlign = Atomic.UI_TEXT_ALIGN_LEFT;
+    nodeLabel.text = "Node";
+    nodeLabel.skinBg = "InspectorTextLabel";
+
+    attrsVerticalLayout.addChild(nodeLabel);
+
+    var attrs = node.getAttributes();
+
+    for (var i in attrs) {
+
+      var attr = attrs[i];
+
+      if (attr.mode & Atomic.AM_NOEDIT)
+        continue;
+
+      var attrLayout = new Atomic.UILayout();
+
+      attrLayout.layoutDistribution = Atomic.UI_LAYOUT_DISTRIBUTION_GRAVITY;
+
+      var name = new Atomic.UITextField();
+      name.textAlign = Atomic.UI_TEXT_ALIGN_LEFT;
+      name.skinBg = "InspectorTextAttrName";
+
+      var bname = attr.name;
+      if (bname == "Is Enabled")
+          bname = "Enabled";
+
+      name.text = bname;
+      name.fontDescription = fd;
+
+      attrLayout.addChild(name);
+
+      //TBWidget* bwidget = binding->GetWidget();
+      //attrLayout->AddChild(bwidget);
+
+      attrsVerticalLayout.addChild(attrLayout);
+
+
+
+    }
+
     nodeLayout.addChild(nodeContainer);
 
     this.addChild(nodeLayout);

+ 1 - 1
Source/Atomic/UI/UI.cpp

@@ -566,7 +566,7 @@ UIWidget* UI::WrapWidget(tb::TBWidget* widget)
 
     if (widget->IsOfType<TBLayout>())
     {
-        UILayout* layout = new UILayout(context_, false);
+        UILayout* layout = new UILayout(context_, (UI_AXIS) widget->GetAxis(), false);
         layout->SetWidget(widget);
         widgetWrap_[widget] = layout;
         return layout;

+ 2 - 1
Source/Atomic/UI/UILayout.cpp

@@ -22,13 +22,14 @@ UILayoutParams::~UILayoutParams()
 }
 
 
-UILayout::UILayout(Context* context, bool createWidget) : UIWidget(context, false)
+UILayout::UILayout(Context* context, UI_AXIS axis, bool createWidget) : UIWidget(context, false)
 {
     if (createWidget)
     {
         widget_ = new TBLayout();
         widget_->SetDelegate(this);
         widget_->SetGravity(WIDGET_GRAVITY_ALL);
+        widget_->SetAxis((AXIS) axis);
         GetSubsystem<UI>()->WrapWidget(this, widget_);
     }
 }

+ 1 - 1
Source/Atomic/UI/UILayout.h

@@ -99,7 +99,7 @@ class UILayout : public UIWidget
 
 public:
 
-    UILayout(Context* context, bool createWidget = true);
+    UILayout(Context* context, UI_AXIS axis = UI_AXIS_X, bool createWidget = true);
     virtual ~UILayout();
 
     void SetSpacing(int spacing);

+ 9 - 0
Source/Atomic/UI/UITextField.cpp

@@ -26,6 +26,15 @@ UITextField::~UITextField()
 
 }
 
+void UITextField::SetTextAlign(UI_TEXT_ALIGN align)
+{
+    if (!widget_)
+        return;
+
+    ((TBTextField*)widget_)->SetTextAlign((TB_TEXT_ALIGN) align);
+
+}
+
 bool UITextField::OnEvent(const tb::TBWidgetEvent &ev)
 {
     return false;

+ 10 - 0
Source/Atomic/UI/UITextField.h

@@ -6,6 +6,14 @@
 namespace Atomic
 {
 
+/// TB_TEXT_ALIGN specifies horizontal text alignment
+enum UI_TEXT_ALIGN
+{
+    UI_TEXT_ALIGN_LEFT = tb::TB_TEXT_ALIGN_LEFT,
+    UI_TEXT_ALIGN_RIGHT = tb::TB_TEXT_ALIGN_RIGHT,
+    UI_TEXT_ALIGN_CENTER = tb::TB_TEXT_ALIGN_CENTER
+};
+
 class UITextField : public UIWidget
 {
     OBJECT(UITextField)
@@ -15,6 +23,8 @@ public:
     UITextField(Context* context, bool createWidget = true);
     virtual ~UITextField();
 
+    void SetTextAlign(UI_TEXT_ALIGN align);
+
 protected:
 
     virtual bool OnEvent(const tb::TBWidgetEvent &ev);

+ 1 - 0
Source/Atomic/UI/UIWidget.h

@@ -2,6 +2,7 @@
 #pragma once
 
 #include <ThirdParty/TurboBadger/tb_widgets.h>
+#include <ThirdParty/TurboBadger/tb_widgets_common.h>
 
 #include "../Core/Object.h"