void SpriteInspector::onAppEvent(const ds::Event& in_e){ if(in_e.mWhat == InspectSpriteRequest::WHAT()){ const InspectSpriteRequest& e((const InspectSpriteRequest&)in_e); inspectSprite(e.mSprid); } else if(in_e.mWhat == RefreshLayoutRequest::WHAT() || in_e.mWhat == LoadLayoutRequest::WHAT()){ clearProperties(); } else if(in_e.mWhat == InputFieldTextInput::WHAT()){ if(mCurrentInputTreeItem && mLinkedSprite){ const InputFieldTextInput& e((const InputFieldTextInput&)in_e); std::string valueText = ds::utf8_from_wstr(e.mFullText); mCurrentInputTreeItem->setValueText(e.mFullText); ds::ui::XmlImporter::setSpriteProperty(*mLinkedSprite, mCurrentInputTreeItem->getPropertyName(), valueText, ""); mEngine.getNotifier().notify(LayoutLayoutRequest()); layout(); } } else if(in_e.mWhat == InputFieldCleared::WHAT()){ setInputField(nullptr); } else if (in_e.mWhat == MouseMoveEvent::WHAT()) { const MouseMoveEvent& e( (const MouseMoveEvent&)in_e ); if (this->contains(e.mMousePoint)) { mEngine.getNotifier().notify(ShowSpriteHighlightEvent(mLinkedSprite)); } } }
void TreeInspector::addTreeItem(ds::ui::Sprite* sprid, const int indent){ if(!mLayout) return; TreeItem* treeItem = new TreeItem(mGlobals, sprid); treeItem->mLayoutFudge.x = (float)(indent)* 15.0f; mLayout->addChildPtr(treeItem); mTreeItems.push_back(treeItem); mEngine.addToDragDestinationList(treeItem); treeItem->setDragDestinationCallback([this, treeItem](ds::ui::Sprite* sp, const ds::ui::DragDestinationInfo& di){ if(di.mPhase == ds::ui::DragDestinationInfo::Entered){ sp->setColor(ci::Color(0.6f, 0.2f, 0.2f)); } else if(di.mPhase == ds::ui::DragDestinationInfo::Exited){ sp->setColor(ci::Color(0.1f, 0.1f, 0.1f)); } if(di.mPhase == ds::ui::DragDestinationInfo::Released){ TreeItem* ti = dynamic_cast<TreeItem*>(di.mSprite); TreeItem* dest = dynamic_cast<TreeItem*>(sp); if(ti){ ti->setColor(ci::Color(0.1f, 0.1f, 0.1f)); } if(dest){ dest->setColor(ci::Color(0.1f, 0.1f, 0.1f)); } if(treeItem == dest) return; if(ti && dest){ if(ti == dest) return; if(dest->getLinkedSprite() == ti->getLinkedSprite()){ return; } // If the drag destination is already the parent of this sprite, then just move it to the end if(dest->getLinkedSprite() == ti->getLinkedSprite()->getParent()){ ti->getLinkedSprite()->sendToFront(); } else { dest->getLinkedSprite()->addChildPtr(ti->getLinkedSprite()); } callAfterDelay([this]{ inspectTree(mTreeRoot); mEngine.getNotifier().notify(LayoutLayoutRequest()); }, 0.01f); } } }); treeItem->setProcessTouchCallback([this](ds::ui::Sprite* sp, const ds::ui::TouchInfo& ti){ if(ti.mPhase == ds::ui::TouchInfo::Removed && ti.mNumberFingers == 0){ callAfterDelay([this]{ layout(); }, 0.05f); } }); }