Browse Source

Support for setting ListView text color, prefab nodes now show a separate color in hierarchy frame

Josh Engebretson 10 years ago
parent
commit
20601582be

+ 5 - 0
Resources/EditorData/AtomicEditor/editor/skin/skin.tb.txt

@@ -178,3 +178,8 @@ elements
 		text-color #aaaaaa
 		text-color #aaaaaa
 		min-width 140
 		min-width 140
 		max-width 140
 		max-width 140
+
+	HierarchyPrefabText
+		text-color #11aaaa
+	HierarchyPrefabText.selected
+		text-color #11ffff

+ 37 - 0
Script/AtomicEditor/ui/frames/HierarchyFrame.ts

@@ -56,6 +56,37 @@ class HierarchyFrame extends Atomic.UIWidget {
 
 
         });
         });
 
 
+        this.subscribeToEvent("ComponentAdded", (ev: Atomic.ComponentAddedEvent) => {
+
+            if (!ev.component || ev.component.typeName != "PrefabComponent") return;
+
+            var node = ev.node;
+
+            var itemID = this.nodeIDToItemID[node.id];
+
+            if (itemID) {
+
+                this.hierList.setItemTextSkin(node.id.toString(), "HierarchyPrefabText");
+
+            }
+
+        });
+
+        this.subscribeToEvent("ComponentRemoved", (ev: Atomic.ComponentRemovedEvent) => {
+
+            if (!ev.component || ev.component.typeName != "PrefabComponent") return;
+
+            var node = ev.node;
+
+            var itemID = this.nodeIDToItemID[node.id];
+
+            if (itemID) {
+
+                this.hierList.setItemTextSkin(node.id.toString(), "Folder");
+            }
+
+        });
+
         this.subscribeToEvent("TemporaryChanged", (ev: Atomic.TemporaryChangedEvent) => {
         this.subscribeToEvent("TemporaryChanged", (ev: Atomic.TemporaryChangedEvent) => {
 
 
             // this can happen on a temporary status change on a non-scripted class instance
             // this can happen on a temporary status change on a non-scripted class instance
@@ -299,6 +330,12 @@ class HierarchyFrame extends Atomic.UIWidget {
 
 
         var childItemID = this.hierList.addChildItem(parentID, name, icon, node.id.toString());
         var childItemID = this.hierList.addChildItem(parentID, name, icon, node.id.toString());
 
 
+        if (node.getComponent("PrefabComponent")) {
+
+            this.hierList.setItemTextSkin(node.id.toString(), "HierarchyPrefabText");
+
+        }
+
         this.nodeIDToItemID[node.id] = childItemID;
         this.nodeIDToItemID[node.id] = childItemID;
 
 
         for (var i = 0; i < node.getNumChildren(false); i++) {
         for (var i = 0; i < node.getNumChildren(false); i++) {

+ 22 - 0
Script/TypeScript/AtomicWork.d.ts

@@ -127,6 +127,28 @@ declare module Atomic {
 
 
     }
     }
 
 
+    export interface ComponentAddedEvent {
+
+        scene: Atomic.Scene;
+        node: Atomic.Node;
+        component: Atomic.Component;
+
+    }
+
+    export interface ComponentRemovedEvent {
+
+        scene: Atomic.Scene;
+        node: Atomic.Node;
+        component: Atomic.Component;
+
+    }
+
+    export interface ComponentRemovedEvent {
+
+        serializable: Atomic.Serializable;
+
+    }
+
     export interface IPCJSErrorEvent {
     export interface IPCJSErrorEvent {
 
 
         errorName: string;
         errorName: string;

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

@@ -61,6 +61,7 @@ public:
     }
     }
 
 
     void UpdateText(const String& text);
     void UpdateText(const String& text);
+    void UpdateTextSkin(const String& skin);
     void UpdateIcon(const String& icon);
     void UpdateIcon(const String& icon);
 
 
     ListViewItemSource* source_;
     ListViewItemSource* source_;
@@ -69,6 +70,7 @@ public:
     PODVector<ListViewItem*> children_;
     PODVector<ListViewItem*> children_;
     ListViewItemWidget* widget_;
     ListViewItemWidget* widget_;
     String icon_;
     String icon_;
+    String textSkin_;
 };
 };
 
 
 class ListViewItemWidget : public TBLayout
 class ListViewItemWidget : public TBLayout
@@ -89,6 +91,12 @@ public:
             icon_->SetSkinBg(TBIDC(icon.CString()));
             icon_->SetSkinBg(TBIDC(icon.CString()));
     }
     }
 
 
+    void UpdateTextSkin(const String& skin)
+    {
+        if (textField_)
+            textField_->SetSkinBg(TBIDC(skin.CString()));
+    }
+
 
 
 private:
 private:
     TBCheckBox* expandBox_;
     TBCheckBox* expandBox_;
@@ -126,6 +134,14 @@ void ListViewItem::UpdateIcon(const String& icon)
         widget_->UpdateIcon(icon);
         widget_->UpdateIcon(icon);
 }
 }
 
 
+void ListViewItem::UpdateTextSkin(const String& skin)
+{
+    textSkin_ = skin;
+    if (widget_)
+        widget_->UpdateTextSkin(skin);
+}
+
+
 ListViewItem* ListViewItem::AddChild(const char *text, const char* icon, const TBID &id)
 ListViewItem* ListViewItem::AddChild(const char *text, const char* icon, const TBID &id)
 {
 {
     ListViewItem* child = new ListViewItem(text, id, icon, source_);
     ListViewItem* child = new ListViewItem(text, id, icon, source_);
@@ -237,7 +253,8 @@ ListViewItemWidget::ListViewItemWidget(ListViewItem *item, ListViewItemSource *s
 
 
     TBTextField* tfield = textField_ = new TBTextField();
     TBTextField* tfield = textField_ = new TBTextField();
     tfield->SetIgnoreInput(true);
     tfield->SetIgnoreInput(true);
-    tfield->SetSkinBg(TBIDC("Folder"));
+
+    tfield->SetSkinBg(item->textSkin_.Length() ? TBIDC(item->textSkin_.CString()) : TBIDC("Folder"));
     tfield->SetText(item->str);
     tfield->SetText(item->str);
     tfield->SetFontDescription(fd);
     tfield->SetFontDescription(fd);
 
 
@@ -385,6 +402,22 @@ void UIListView::SetItemText(const String& id, const String& text)
 
 
 }
 }
 
 
+void UIListView::SetItemTextSkin(const String& id, const String& skin)
+{
+    TBID tbid(id.CString());
+
+    for (int i = 0; i <  source_->GetNumItems(); i++)
+    {
+        if (source_->GetItemID(i) == tbid)
+        {
+            ListViewItem* item = source_->GetItem(i);
+            item->UpdateTextSkin(skin);
+            return;
+        }
+    }
+
+}
+
 void UIListView::SetItemIcon(const String& id, const String& icon)
 void UIListView::SetItemIcon(const String& id, const String& icon)
 {
 {
     TBID tbid(id.CString());
     TBID tbid(id.CString());

+ 2 - 1
Source/Atomic/UI/UIListView.h

@@ -27,7 +27,8 @@ public:
 
 
 
 
     void SetItemText(const String& id, const String& text);
     void SetItemText(const String& id, const String& text);
-    void SetItemIcon(const String& id, const String& icon);
+    void SetItemTextSkin(const String& id, const String& skin);
+    void SetItemIcon(const String& id, const String& icon);    
     void DeleteItemByID(const String& id);
     void DeleteItemByID(const String& id);
 
 
     void SetExpanded(unsigned itemID, bool value);
     void SetExpanded(unsigned itemID, bool value);