Esempio n. 1
0
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));
		}
	}

}
Esempio n. 2
0
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);
		}
	});

}