From f8987e223652415b47d2f08568a640fced4cd9b3 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Wed, 27 Feb 2019 16:43:57 +0100 Subject: [PATCH] associate abr files to panopainter on iOS and fix import menu --- PanoPainter/Info.plist | 42 +++++++++++++++++++++++++--- src/app.cpp | 62 +++++++++++++++++++++++++----------------- src/app_events.cpp | 3 +- 3 files changed, 77 insertions(+), 30 deletions(-) diff --git a/PanoPainter/Info.plist b/PanoPainter/Info.plist index b0febed..d214d7e 100644 --- a/PanoPainter/Info.plist +++ b/PanoPainter/Info.plist @@ -18,6 +18,16 @@ com.panopainter.image + + CFBundleTypeIconFiles + + CFBundleTypeName + ABR + LSItemContentTypes + + com.panopainter.abr + + CFBundleExecutable $(EXECUTABLE_NAME) @@ -70,6 +80,30 @@ UTExportedTypeDeclarations + + + UTTypeConformsTo + + public.data + public.content + + UTTypeDescription + PanoPainter Image + UTTypeIconFiles + + UTTypeIdentifier + com.panopainter.image + UTTypeTagSpecification + + public.filename-extension + + ppi + + public.mime-type + image/ppi + + + UTTypeConformsTo @@ -77,19 +111,19 @@ public.content UTTypeDescription - PanoPainter Image + ABR UTTypeIconFiles UTTypeIdentifier - com.panopainter.image + com.panopainter.abr UTTypeTagSpecification public.filename-extension - ppi + abr public.mime-type - image/ppi + preset/abr diff --git a/src/app.cpp b/src/app.cpp index 3d29290..2a32f4a 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -31,33 +31,45 @@ void App::create() void App::open_document(std::string path) { - auto start = path.rfind('/') + 1; - doc_name = path.substr(start, path.length() - start - strlen(".ppi")); - doc_dir = path.substr(0, start - 1); - doc_path = path; - canvas->reset_camera(); - layers->clear(); - canvas->m_canvas->project_open(path, [this](bool success){ - // on complete - if (success) - { - async_start(); - title_update(); - for (auto& i : canvas->m_canvas->m_order) + std::regex r(R"((.*)[\\/]([^\\/]+)\.(\w+)$)"); + std::smatch m; + if (!std::regex_search(path, m, r)) + return; + std::string ext = m[3].str(); + + if (str_iequals(m[3].str(), "abr")) + { + std::thread(&NodePanelStroke::import_abr, stroke, path).detach(); + } + else + { + doc_name = m[2].str(); + doc_dir = m[1].str(); + doc_path = path; + canvas->reset_camera(); + layers->clear(); + canvas->m_canvas->project_open(path, [this](bool success){ + // on complete + if (success) { - auto l = layers->add_layer(canvas->m_canvas->m_layers[i]->m_name.c_str()); - l->m_visibility->set_value(canvas->m_canvas->m_layers[i]->m_visible); + async_start(); + title_update(); + for (auto& i : canvas->m_canvas->m_order) + { + auto l = layers->add_layer(canvas->m_canvas->m_layers[i]->m_name.c_str()); + l->m_visibility->set_value(canvas->m_canvas->m_layers[i]->m_visible); + } + async_end(); } - async_end(); - } - else - { - message_box("Open Document Error", - "There was an error opening the document.\n" - "It may be inaccessible or corrupted."); - } - }); - ActionManager::clear(); + else + { + message_box("Open Document Error", + "There was an error opening the document.\n" + "It may be inaccessible or corrupted."); + } + }); + ActionManager::clear(); + } } bool App::request_close() diff --git a/src/app_events.cpp b/src/app_events.cpp index befa88f..f1c1d40 100644 --- a/src/app_events.cpp +++ b/src/app_events.cpp @@ -86,7 +86,8 @@ void App::pick_file(std::vector types, std::function