#include "pch.h" #include "app.h" #include "node_dialog_open.h" #include "node_dialog_browse.h" #include "node_dialog_cloud.h" void App::dialog_newdoc() { if (canvas) { auto dialog = std::make_shared(); dialog->m_manager = &layout; dialog->init(); dialog->create(); dialog->loaded(); 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*) { std::string name = dialog->input->m_string; std::string path = data_path + "/" + name + ".pano"; auto action = [this, dialog, name] { doc_name = name; if (auto docname = layout[main_id]->find("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(); }; if (Asset::exist(path, false)) { // ask confirm is file already exist auto msgbox = new NodeMessageBox(); msgbox->m_manager = &layout; msgbox->init(); msgbox->m_title->set_text("Warning"); msgbox->m_message->set_text("A document with this name already exists, continue?"); msgbox->btn_ok->on_click = [this, msgbox, action](Node*) { action(); msgbox->destroy(); }; layout[main_id]->add_child(msgbox); } else { action(); } }; dialog->btn_cancel->on_click = [this, dialog](Node*) { dialog->destroy(); App::I.hideKeyboard(); }; } } void App::dialog_open() { if (canvas) { // load thumbnail test auto dialog = std::make_shared(); dialog->m_manager = &layout; dialog->data_path = data_path; dialog->init(); dialog->create(); dialog->loaded(); layout[main_id]->add_child(dialog); layout[main_id]->update(); dialog->btn_ok->on_click = [this, dialog](Node*) { canvas->reset_camera(); layers->clear(); canvas->m_canvas->project_open(dialog->selected_path); doc_name = dialog->selected_name; if (auto docname = layout[main_id]->find("txt-docname")) docname->set_text(("Panodoc: " + doc_name).c_str()); for (auto& i : canvas->m_canvas->m_order) layers->add_layer(canvas->m_canvas->m_layers[i].m_name.c_str()); dialog->destroy(); ActionManager::clear(); }; } } void App::dialog_browse() { if (canvas) { // load thumbnail test auto dialog = std::make_shared(); dialog->m_manager = &layout; dialog->data_path = data_path; dialog->init(); dialog->create(); dialog->loaded(); layout[main_id]->add_child(dialog); layout[main_id]->update(); dialog->btn_ok->on_click = [this, dialog](Node*) { canvas->reset_camera(); layers->clear(); canvas->m_canvas->project_open(dialog->selected_path); doc_name = dialog->selected_name; if (auto docname = layout[main_id]->find("txt-docname")) docname->set_text(("Panodoc: " + doc_name).c_str()); for (auto& i : canvas->m_canvas->m_order) layers->add_layer(canvas->m_canvas->m_layers[i].m_name.c_str()); dialog->destroy(); ActionManager::clear(); }; } } void App::dialog_save() { if (canvas) { auto dialog = std::make_shared(); dialog->m_manager = &layout; dialog->init(); dialog->create(); dialog->loaded(); dialog->input->set_text(doc_name); App::I.showKeyboard(); dialog->btn_ok->on_click = [this, dialog](Node*) { std::string name = dialog->input->m_string; std::string path = data_path + "/" + name + ".pano"; if (name.empty()) { auto msgbox = new NodeMessageBox(); msgbox->m_manager = &layout; msgbox->init(); msgbox->m_title->set_text("Warning"); msgbox->m_message->set_text("You need to specify a name to file."); layout[main_id]->add_child(msgbox); return; } auto action = [this, dialog, name, path] { doc_name = name; if (auto docname = layout[main_id]->find("txt-docname")) docname->set_text(("Panodoc: " + doc_name).c_str()); canvas->m_canvas->project_save(path); dialog->destroy(); App::I.hideKeyboard(); }; if (Asset::exist(path, false)) { // ask confirm is file already exist auto msgbox = new NodeMessageBox(); msgbox->m_manager = &layout; msgbox->init(); msgbox->m_title->set_text("Warning"); msgbox->m_message->set_text(("Are you sure you want to overwrite " + name + "?").c_str()); msgbox->btn_ok->on_click = [this, msgbox, action](Node*) { action(); msgbox->destroy(); }; layout[main_id]->add_child(msgbox); } else { action(); } }; dialog->btn_cancel->on_click = [this, dialog](Node*) { dialog->destroy(); App::I.hideKeyboard(); }; layout[main_id]->add_child(dialog); layout[main_id]->update(); } } void App::dialog_export() { if (canvas) { canvas->m_canvas->export_equirectangular(data_path + "/" + doc_name + ".jpg"); } } void App::dialog_layer_rename() { auto dialog = std::make_shared(); 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(); }