input boxes UI, keyboard animation

This commit is contained in:
2017-08-13 12:41:10 +01:00
parent 6d3c9380b2
commit 060e08a891
12 changed files with 132 additions and 41 deletions

View File

@@ -121,7 +121,7 @@ void App::update(float dt)
if (canvas && canvas->m_canvas)
canvas->m_canvas->stroke_draw();
if (!redraw)
if (!(redraw || animate))
return;
//glClearColor(.1f, .1f, .1f, 1.f);
@@ -146,7 +146,8 @@ void App::update(float dt)
if (n && n->m_display)
{
auto box = n->m_clip;
glm::ivec4 c = glm::vec4((int)box.x - 1, (int)(height / zoom - box.y - box.w) - 1, (int)box.z + 2, (int)box.w + 2) * zoom;
//glm::ivec4 c = glm::vec4((int)box.x - 1, (int)(height / zoom - box.y - box.w) - 1, (int)box.z + 2, (int)box.w + 2) * zoom;
glm::ivec4 c = glm::vec4((int)box.x, (int)(height / zoom - box.y - box.w), (int)box.z, (int)box.w) * zoom;
glScissor(c.x, c.y, c.z, c.w);
n->draw();
}

View File

@@ -53,6 +53,7 @@ public:
float height;
bool keys[256];
bool redraw = true;
bool animate = false;
glm::vec2 gesture_p0;
glm::vec2 gesture_p1;
#ifdef __ANDROID__
@@ -101,4 +102,5 @@ public:
void dialog_save();
void dialog_open();
void dialog_export();
void dialog_layer_rename();
};

View File

@@ -11,22 +11,35 @@ void App::dialog_newdoc()
dialog->init();
dialog->create();
dialog->loaded();
dialog->input->set_text("");
dialog->input->set_text("name");
layout[main_id]->add_child(dialog);
layout[main_id]->update();
App::I.showKeyboard();
dialog->btn_ok->on_click = [this, dialog](Node*)
{
doc_name = dialog->input->m_string;
if (auto docname = layout[main_id]->find<NodeText>("txt-docname"))
docname->set_text(("Panodoc: " + doc_name).c_str());
layers->clear();
canvas->m_canvas->m_layers.clear();
canvas->m_canvas->m_order.clear();
canvas->reset_camera();
ActionManager::clear();
canvas->m_canvas->layer_add("Default");
layers->add_layer("Default");
dialog->destroy();
App::I.hideKeyboard();
};
dialog->btn_cancel->on_click = [this, dialog](Node*)
{
dialog->destroy();
App::I.hideKeyboard();
};
}
}
@@ -73,6 +86,8 @@ void App::dialog_save()
dialog->loaded();
dialog->input->set_text(doc_name);
App::I.showKeyboard();
layout[main_id]->add_child(dialog);
layout[main_id]->update();
@@ -83,6 +98,12 @@ void App::dialog_save()
docname->set_text(("Panodoc: " + doc_name).c_str());
canvas->m_canvas->project_save(data_path + "/" + doc_name + ".pano");
dialog->destroy();
App::I.hideKeyboard();
};
dialog->btn_cancel->on_click = [this, dialog](Node*)
{
dialog->destroy();
App::I.hideKeyboard();
};
}
}
@@ -94,3 +115,35 @@ void App::dialog_export()
canvas->m_canvas->export_equirectangular(data_path);
}
}
void App::dialog_layer_rename()
{
auto dialog = std::make_shared<NodeDialogLayerRename>();
dialog->m_manager = &layout;
dialog->data_path = data_path;
dialog->init();
dialog->create();
dialog->loaded();
dialog->input->set_text(layers->m_current_layer->m_label_text);
App::I.showKeyboard();
layout[main_id]->add_child(dialog);
layout[main_id]->update();
dialog->btn_ok->on_click = [this,dialog](Node*)
{
layers->m_current_layer->set_name(dialog->get_name().c_str());
canvas->m_canvas->m_layers[canvas->m_canvas->m_current_layer_idx].m_name = dialog->get_name();
dialog->destroy();
App::I.hideKeyboard();
};
dialog->btn_cancel->on_click = [this, dialog](Node*)
{
dialog->destroy();
App::I.hideKeyboard();
};
popup->mouse_release();
popup->destroy();
}

View File

@@ -390,25 +390,7 @@ void App::init_menu_layer()
};
popup->find<NodeButtonCustom>("layer-rename")->on_click = [this](Node*) {
auto open_dialog = std::make_shared<NodeDialogLayerRename>();
open_dialog->m_manager = &layout;
open_dialog->data_path = data_path;
open_dialog->init();
open_dialog->create();
open_dialog->loaded();
layout[main_id]->add_child(open_dialog);
layout[main_id]->update();
open_dialog->btn_ok->on_click = [this,open_dialog](Node*)
{
layers->m_current_layer->set_name(open_dialog->get_name().c_str());
canvas->m_canvas->m_layers[canvas->m_canvas->m_current_layer_idx].m_name = open_dialog->get_name();
open_dialog->destroy();
};
popup->mouse_release();
popup->destroy();
dialog_layer_rename();
};
if (layers->m_current_layer)
popup->find<NodeButtonCustom>("layer-rename")->
@@ -482,6 +464,7 @@ void App::initLayout()
canvas->m_canvas->layer_add("Default");
layers->add_layer("Default");
init_toolbar_draw();
init_toolbar_main();
init_menu_file();

View File

@@ -553,7 +553,7 @@ void Node::update_internal(const glm::vec2& origin, const glm::mat4& proj)
float pl = 0;//YGNodeLayoutGetPadding(parent->y_node, YGEdgeLeft);
glm::vec2 off_p(pl, pt);
glm::vec2 off_s(pr, pb);
m_clip_uncut = glm::vec4(m_pos - off_p, m_size + off_p + off_s);
m_clip_uncut = glm::vec4(m_pos - off_p - glm::vec2(1), m_size + off_p + off_s + glm::vec2(2));
m_clip = rect_intersection(m_clip_uncut, parent->m_clip);
}
else

View File

@@ -112,6 +112,9 @@ kEventResult NodeButton::handle_event(Event* e)
if (m_mouse_inside && on_click != nullptr)
on_click(this);
break;
case kEventType::MouseCancel:
m_border->m_color = color_normal;
break;
default:
return kEventResult::Available;
break;

View File

@@ -49,12 +49,17 @@ kEventResult NodeButtonCustom::handle_event(Event* e)
mouse_capture();
break;
case kEventType::MouseUpL:
m_color = m_mouse_inside ? color_hover : color_normal;
#ifdef __IOS__
m_color = color_normal;
#else
m_color = m_mouse_inside ? color_hover : color_normal;
#endif
if (m_mouse_inside && on_click != nullptr)
on_click(this);
mouse_release();
break;
case kEventType::MouseCancel:
m_color = color_normal;
mouse_release();
break;
default:

View File

@@ -101,7 +101,7 @@ void NodeDialogOpenItem::loaded()
void NodeDialogOpenItem::draw()
{
auto c = m_selected ? m_color_selected : m_color_normal;
//m_thinkness = m_selected ? 1.f : 0.f;
m_thinkness = m_selected ? 1.f : 0.f;
m_color = m_mouse_inside ? m_color_hover : c;
NodeBorder::draw();
}