void HelloGUI::CreateDraggableFish() { ResourceCache* cache = GetSubsystem<ResourceCache>(); Graphics* graphics = GetSubsystem<Graphics>(); // Create a draggable Fish button Button* draggableFish = new Button(context_); draggableFish->SetTexture(cache->GetResource<Texture2D>("Textures/UrhoDecal.dds")); // Set texture draggableFish->SetBlendMode(BLEND_ADD); draggableFish->SetSize(128, 128); draggableFish->SetPosition((graphics->GetWidth() - draggableFish->GetWidth()) / 2, 200); draggableFish->SetName("Fish"); uiRoot_->AddChild(draggableFish); // Add a tooltip to Fish button ToolTip* toolTip = new ToolTip(context_); draggableFish->AddChild(toolTip); toolTip->SetPosition(IntVector2(draggableFish->GetWidth() + 5, draggableFish->GetWidth() / 2)); // slightly offset from close button BorderImage* textHolder = new BorderImage(context_); toolTip->AddChild(textHolder); textHolder->SetStyle("ToolTipBorderImage"); Text* toolTipText = new Text(context_); textHolder->AddChild(toolTipText); toolTipText->SetStyle("ToolTipText"); toolTipText->SetText("Please drag me!"); // Subscribe draggableFish to Drag Events (in order to make it draggable) // See "Event list" in documentation's Main Page for reference on available Events and their eventData SubscribeToEvent(draggableFish, E_DRAGBEGIN, HANDLER(HelloGUI, HandleDragBegin)); SubscribeToEvent(draggableFish, E_DRAGMOVE, HANDLER(HelloGUI, HandleDragMove)); SubscribeToEvent(draggableFish, E_DRAGEND, HANDLER(HelloGUI, HandleDragEnd)); }
void UIDrag::CreateGUI() { ResourceCache* cache = GetSubsystem<ResourceCache>(); UI* ui = GetSubsystem<UI>(); UIElement* root = ui->GetRoot(); // Load the style sheet from xml root->SetDefaultStyle(cache->GetResource<XMLFile>("UI/DefaultStyle.xml")); for (int i=0; i < 10; i++) { Button* b = new Button(context_); root->AddChild(b); // Reference a style from the style sheet loaded earlier: b->SetStyle("Button"); b->SetSize(300, 100); b->SetPosition(IntVector2(50*i, 50*i)); if (i % 2 == 0) b->AddTag("SomeTag"); SubscribeToEvent(b, E_DRAGMOVE, URHO3D_HANDLER(UIDrag, HandleDragMove)); SubscribeToEvent(b, E_DRAGBEGIN, URHO3D_HANDLER(UIDrag, HandleDragBegin)); SubscribeToEvent(b, E_DRAGCANCEL, URHO3D_HANDLER(UIDrag, HandleDragCancel)); SubscribeToEvent(b, E_DRAGEND, URHO3D_HANDLER(UIDrag, HandleDragEnd)); { Text* t = new Text(context_); b->AddChild(t); t->SetStyle("Text"); t->SetHorizontalAlignment(HA_CENTER); t->SetVerticalAlignment(VA_CENTER); t->SetName("Text"); } { Text* t = new Text(context_); b->AddChild(t); t->SetStyle("Text"); t->SetName("Event Touch"); t->SetHorizontalAlignment(HA_CENTER); t->SetVerticalAlignment(VA_BOTTOM); } { Text* t = new Text(context_); b->AddChild(t); t->SetStyle("Text"); t->SetName("Num Touch"); t->SetHorizontalAlignment(HA_CENTER); t->SetVerticalAlignment(VA_TOP); } } for (int i = 0; i < 10; i++) { Text* t = new Text(context_); root->AddChild(t); t->SetStyle("Text"); t->SetName("Touch "+ String(i)); t->SetVisible(false); } }