messagebox (not working yet)
This commit is contained in:
parent
a98f1d67db
commit
3960240b8e
|
@ -15,14 +15,14 @@ window#infoWindow:
|
|||
margin.left: 18
|
||||
|
||||
label#infoLabel:
|
||||
size: [208, 84]
|
||||
align: center
|
||||
text: |-
|
||||
OTClient
|
||||
Version 0.2.0
|
||||
Created by edubart
|
||||
anchors.left: parent.left
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.top: parent.top
|
||||
margin.top: 20
|
||||
|
||||
lineDecoration#bottomSeparator:
|
||||
size: [190,2]
|
||||
|
|
|
@ -28,6 +28,7 @@ panel#background:
|
|||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
margin.top: 46
|
||||
onClick: messageBox("Error", "Not implemented yet")
|
||||
|
||||
button#optionsButton:
|
||||
text: Options
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
function messageBox(title, text)
|
||||
local messageBoxWindow = loadUI("modules/messagebox/messagebox.yml")
|
||||
local messageBoxLabel = messageBoxWindow:getChildByID("messageBoxLabel")
|
||||
local messageBoxOkButton = messageBoxWindow:getChildByID("messageBoxOkButton")
|
||||
local uiRoot = messageBoxWindow:getParent()
|
||||
uiRoot:lock(messageBox)
|
||||
messageBoxWindow:setTitle(text)
|
||||
messageBoxLabel:setText(text)
|
||||
messageBoxWindow:setSize(messageBoxLabel:getSize() + Size{20, 20})
|
||||
messageBox:setOnDestroy(function() uiRoot:unlock() end)
|
||||
messageBoxOkButton:setOnClick(function() messageBoxWindow:destroy() end)
|
||||
end
|
|
@ -0,0 +1,18 @@
|
|||
window#messageBoxWindow:
|
||||
size: [236, 78]
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
|
||||
label#messageBoxLabel:
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.top: parent.top
|
||||
margin.top: 27
|
||||
|
||||
button#messageBoxOkButton:
|
||||
text: Ok
|
||||
size: [43, 20]
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 10
|
||||
margin.right: 10
|
|
@ -50,41 +50,3 @@ void Dispatcher::addTask(const SimpleCallback& callback)
|
|||
{
|
||||
m_taskList.push(new Task(callback));
|
||||
}
|
||||
|
||||
/*
|
||||
* #include <prerequisites.h>
|
||||
#include <core/dispatcher.h>
|
||||
#include <core/engine.h>
|
||||
#include <stack>
|
||||
|
||||
Dispatcher g_dispatcher;
|
||||
|
||||
void Dispatcher::poll()
|
||||
{
|
||||
if(!m_taskList.empty()) {
|
||||
auto it = m_taskList.begin();
|
||||
m_taskList.erase(it);
|
||||
(*it)();
|
||||
}
|
||||
|
||||
while(!m_scheduledTaskList.empty()) {
|
||||
ScheduledTask *task = m_scheduledTaskList.top();
|
||||
if(g_engine.getCurrentFrameTicks() < task->ticks)
|
||||
break;
|
||||
m_scheduledTaskList.pop();
|
||||
|
||||
task->callback();
|
||||
delete task;
|
||||
}
|
||||
}
|
||||
|
||||
void Dispatcher::scheduleTask(const SimpleCallback& callback, int delay)
|
||||
{
|
||||
m_scheduledTaskList.push(new ScheduledTask(g_engine.getCurrentFrameTicks() + delay, callback));
|
||||
}
|
||||
|
||||
void Dispatcher::addTask(const SimpleCallback& callback)
|
||||
{
|
||||
m_taskList.push_back(callback);
|
||||
}
|
||||
*/
|
|
@ -61,39 +61,4 @@ private:
|
|||
|
||||
extern Dispatcher g_dispatcher;
|
||||
|
||||
/*
|
||||
* class ScheduledTask {
|
||||
public:
|
||||
inline ScheduledTask(const SimpleCallback& _callback) : ticks(0), callback(_callback) { }
|
||||
inline ScheduledTask(int _ticks, const SimpleCallback& _callback) : ticks(_ticks), callback(_callback) { }
|
||||
inline bool operator<(const ScheduledTask& other) const { return ticks > other.ticks; }
|
||||
int ticks;
|
||||
SimpleCallback callback;
|
||||
};
|
||||
|
||||
class lessScheduledTask : public std::binary_function<ScheduledTask*&, ScheduledTask*&, bool> {
|
||||
public:
|
||||
bool operator()(ScheduledTask*& t1,ScheduledTask*& t2) { return (*t1) < (*t2); }
|
||||
};
|
||||
|
||||
class Dispatcher
|
||||
{
|
||||
public:
|
||||
Dispatcher() { }
|
||||
|
||||
/// Execute scheduled events
|
||||
void poll();
|
||||
|
||||
/// Add an event
|
||||
void addTask(const SimpleCallback& callback);
|
||||
|
||||
/// Schedula an event
|
||||
void scheduleTask(const SimpleCallback& callback, int delay);
|
||||
|
||||
private:
|
||||
std::vector<SimpleCallback> m_taskList;
|
||||
std::priority_queue<ScheduledTask*, std::vector<ScheduledTask*>, lessScheduledTask> m_scheduledTaskList;
|
||||
};
|
||||
|
||||
extern Dispatcher g_dispatcher;*/
|
||||
#endif // DISPATCHER_H
|
||||
|
|
|
@ -24,3 +24,10 @@
|
|||
|
||||
#include <prerequisites.h>
|
||||
#include <ui/uilabel.h>
|
||||
|
||||
void UILabel::setText(const std::string& text)
|
||||
{
|
||||
m_text = text;
|
||||
// text size changed, reaplly skin
|
||||
getSkin()->apply(this);
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public:
|
|||
m_align(ALIGN_TOP_LEFT),
|
||||
m_color(Color::white) { }
|
||||
|
||||
void setText(const std::string& text) { m_text = text; }
|
||||
void setText(const std::string& text);
|
||||
const std::string& getText() const { return m_text; }
|
||||
|
||||
void setAlign(int align) { m_align = align; }
|
||||
|
|
|
@ -151,24 +151,6 @@ void UILoader::loadElements(const UIElementPtr& parent, const YAML::Node& node)
|
|||
|
||||
void UILoader::loadElement(const UIElementPtr& element, const YAML::Node& node)
|
||||
{
|
||||
// load specific element type
|
||||
if(element->getElementType() == UI::Button)
|
||||
loadButton(boost::static_pointer_cast<UIButton>(element), node);
|
||||
else if(element->getElementType() == UI::Window) {
|
||||
UIWindowPtr window = boost::static_pointer_cast<UIWindow>(element);
|
||||
window->setTitle(node["title"].Read<std::string>());
|
||||
}
|
||||
else if(element->getElementType() == UI::Label) {
|
||||
UILabelPtr label = boost::static_pointer_cast<UILabel>(element);
|
||||
label->setText(node["text"].Read<std::string>());
|
||||
if(node.FindValue("align")) {
|
||||
std::string alignDesc;
|
||||
node["align"] >> alignDesc;
|
||||
if(alignDesc == "center")
|
||||
label->setAlign(ALIGN_CENTER);
|
||||
}
|
||||
}
|
||||
|
||||
// set element skin
|
||||
if(node.FindValue("skin")) {
|
||||
if(node["skin"].GetType() == YAML::CT_SCALAR) {
|
||||
|
@ -249,6 +231,26 @@ void UILoader::loadElement(const UIElementPtr& element, const YAML::Node& node)
|
|||
} else
|
||||
throw YAML::Exception(cnode.GetMark(), "failed to parse lua script");
|
||||
}
|
||||
|
||||
// load specific element type
|
||||
if(element->getElementType() == UI::Button)
|
||||
loadButton(boost::static_pointer_cast<UIButton>(element), node);
|
||||
else if(element->getElementType() == UI::Window) {
|
||||
UIWindowPtr window = boost::static_pointer_cast<UIWindow>(element);
|
||||
if(node.FindValue("title"))
|
||||
window->setTitle(node["title"].Read<std::string>());
|
||||
}
|
||||
else if(element->getElementType() == UI::Label) {
|
||||
UILabelPtr label = boost::static_pointer_cast<UILabel>(element);
|
||||
if(node.FindValue("text"))
|
||||
label->setText(node["text"].Read<std::string>());
|
||||
if(node.FindValue("align")) {
|
||||
std::string alignDesc;
|
||||
node["align"] >> alignDesc;
|
||||
if(alignDesc == "center")
|
||||
label->setAlign(ALIGN_CENTER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UILoader::loadElementAnchor(const UIElementPtr& element, EAnchorType type, const YAML::Node& node)
|
||||
|
|
Loading…
Reference in New Issue