prepare UI for release, disable unused features, rename file format to .ppi

This commit is contained in:
2018-09-20 13:25:56 +02:00
parent 27ab21ccdb
commit 4a6e69e182
10 changed files with 94 additions and 33 deletions

View File

@@ -27,7 +27,7 @@ void global_exception_handler(NSException* e)
[alert runModal];
if (App::I.canvas && App::I.canvas->m_canvas)
App::I.canvas->m_canvas->project_save_thread(App::I.data_path + "/recovery.pano");
App::I.canvas->m_canvas->project_save_thread(App::I.data_path + "/recovery.ppi");
std::terminate();
}
@@ -40,7 +40,7 @@ void global_signal_handler(int e)
[alert runModal];
if (App::I.canvas && App::I.canvas->m_canvas)
App::I.canvas->m_canvas->project_save_thread(App::I.data_path + "/recovery.pano");
App::I.canvas->m_canvas->project_save_thread(App::I.data_path + "/recovery.ppi");
std::terminate();
}

View File

@@ -9,10 +9,8 @@
/* Begin PBXBuildFile section */
AD02F0C31EDC457C00B2E692 /* sequencer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD02F0C01EDC456800B2E692 /* sequencer.cpp */; };
AD02F0C41EDC457C00B2E692 /* sequencer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD02F0C01EDC456800B2E692 /* sequencer.cpp */; };
AD06989720CC6C350010825F /* ZipArchive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD06989620CC6C350010825F /* ZipArchive.framework */; };
AD06989A20CC6C4C0010825F /* ZipArchive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD06989920CC6C4C0010825F /* ZipArchive.framework */; };
AD06989B20CC84DB0010825F /* ZipArchive.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = AD06989920CC6C4C0010825F /* ZipArchive.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
AD06989D20CC894B0010825F /* ZipArchive.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = AD06989620CC6C350010825F /* ZipArchive.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
AD0E119B1ECA215600CDA6BB /* node_scroll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11951ECA20F200CDA6BB /* node_scroll.cpp */; };
AD0E119C1ECA215600CDA6BB /* app_events.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11921ECA20F200CDA6BB /* app_events.cpp */; };
AD0E119D1ECA215600CDA6BB /* app_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AD0E11931ECA20F200CDA6BB /* app_layout.cpp */; };
@@ -119,8 +117,6 @@
AD787AEA20D4611100C4712A /* PanoQL.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = AD787ADD20D4611100C4712A /* PanoQL.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
AD787AF720D4637E00C4712A /* ThumbnailProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = AD787AF620D4637E00C4712A /* ThumbnailProvider.m */; };
AD787AFB20D4637E00C4712A /* PanoThumb.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = AD787AF320D4637E00C4712A /* PanoThumb.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
AD787AFF20D5AD1500C4712A /* ZipArchive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD06989620CC6C350010825F /* ZipArchive.framework */; };
AD787B0020D5AD1700C4712A /* ZipArchive.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD06989620CC6C350010825F /* ZipArchive.framework */; };
ADBC8C4E1FAE7D360094B339 /* node_dialog_browse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADBC8C471FAE7CC20094B339 /* node_dialog_browse.cpp */; };
ADBC8C4F1FAE7D370094B339 /* node_dialog_browse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADBC8C471FAE7CC20094B339 /* node_dialog_browse.cpp */; };
ADBC8C551FAFD0520094B339 /* app_cloud.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADBC8C511FAFD0360094B339 /* app_cloud.cpp */; };
@@ -214,7 +210,6 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
AD06989D20CC894B0010825F /* ZipArchive.framework in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -445,7 +440,6 @@
buildActionMask = 2147483647;
files = (
AD787ADF20D4611100C4712A /* QuickLook.framework in Frameworks */,
AD787B0020D5AD1700C4712A /* ZipArchive.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -453,7 +447,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
AD787AFF20D5AD1500C4712A /* ZipArchive.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -467,7 +460,6 @@
AD3087C82061D1CD009F9260 /* CoreGraphics.framework in Frameworks */,
AD3087C62061D1B4009F9260 /* CoreVideo.framework in Frameworks */,
AD3087C2205F016F009F9260 /* AVFoundation.framework in Frameworks */,
AD06989720CC6C350010825F /* ZipArchive.framework in Frameworks */,
AD30D8331F8049BD00B6A112 /* Photos.framework in Frameworks */,
AD759B691F279B3900211963 /* GLKit.framework in Frameworks */,
ADD7D2B31EBFA42C00D5A897 /* Security.framework in Frameworks */,
@@ -817,9 +809,11 @@
isa = PBXNativeTarget;
buildConfigurationList = AD787AEB20D4611100C4712A /* Build configuration list for PBXNativeTarget "PanoQL" */;
buildPhases = (
AD536B7221530A6C0033E46B /* Generate Version */,
AD787AD920D4611100C4712A /* Sources */,
AD787ADA20D4611100C4712A /* Frameworks */,
AD787ADB20D4611100C4712A /* Resources */,
AD536B7421530AA60033E46B /* Versioning Info.plist */,
);
buildRules = (
);
@@ -834,9 +828,11 @@
isa = PBXNativeTarget;
buildConfigurationList = AD787AFC20D4637F00C4712A /* Build configuration list for PBXNativeTarget "PanoThumb" */;
buildPhases = (
AD536B7321530A8A0033E46B /* Generate Version */,
AD787AEF20D4637E00C4712A /* Sources */,
AD787AF020D4637E00C4712A /* Frameworks */,
AD787AF120D4637E00C4712A /* Resources */,
AD536B7521530AB80033E46B /* Versioning Info.plist */,
);
buildRules = (
);
@@ -975,6 +971,62 @@
shellPath = /bin/sh;
shellScript = "# Use the commit count as CFBundleVersion\nGIT_COMMIT_COUNT=`git rev-list --count HEAD`\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion ${GIT_COMMIT_COUNT}\" \"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n\n## Use the last annotated tag as CFBundleShortVersionString\nGIT_TAG=`git describe --tags --abbrev=0`\n/usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString ${GIT_TAG}\" \"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n";
};
AD536B7221530A6C0033E46B /* Generate Version */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Generate Version";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "python scripts/pre-build.py $CONFIGURATION";
};
AD536B7321530A8A0033E46B /* Generate Version */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Generate Version";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "python scripts/pre-build.py $CONFIGURATION";
};
AD536B7421530AA60033E46B /* Versioning Info.plist */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Versioning Info.plist";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Use the commit count as CFBundleVersion\nGIT_COMMIT_COUNT=`git rev-list --count HEAD`\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion ${GIT_COMMIT_COUNT}\" \"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n\n## Use the last annotated tag as CFBundleShortVersionString\nGIT_TAG=`git describe --tags --abbrev=0`\n/usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString ${GIT_TAG}\" \"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n";
};
AD536B7521530AB80033E46B /* Versioning Info.plist */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Versioning Info.plist";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Use the commit count as CFBundleVersion\nGIT_COMMIT_COUNT=`git rev-list --count HEAD`\n/usr/libexec/PlistBuddy -c \"Set :CFBundleVersion ${GIT_COMMIT_COUNT}\" \"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n\n## Use the last annotated tag as CFBundleShortVersionString\nGIT_TAG=`git describe --tags --abbrev=0`\n/usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString ${GIT_TAG}\" \"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n";
};
ADB86F64214E9D0D004E7CB8 /* Generate Version */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -1443,7 +1495,7 @@
INFOPLIST_FILE = PanoQL/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios.PanoQL;
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios.ql;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos;
@@ -1485,7 +1537,7 @@
INFOPLIST_FILE = PanoQL/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios.PanoQL;
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios.ql;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos;
@@ -1528,7 +1580,7 @@
INFOPLIST_FILE = PanoThumb/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios.PanoThumb;
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios.thumb;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos;
@@ -1570,7 +1622,7 @@
INFOPLIST_FILE = PanoThumb/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.2;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios.PanoThumb;
PRODUCT_BUNDLE_IDENTIFIER = com.omixlab.panopainter.ios.thumb;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos;

View File

@@ -14,7 +14,7 @@
void global_exception_handler(NSException* e)
{
if (App::I.canvas && App::I.canvas->m_canvas)
App::I.canvas->m_canvas->project_save_thread(App::I.data_path + "/recovery.pano");
App::I.canvas->m_canvas->project_save_thread(App::I.data_path + "/recovery.ppi");
std::terminate();
}
@@ -22,7 +22,7 @@ void global_exception_handler(NSException* e)
void global_signal_handler(int e)
{
if (App::I.canvas && App::I.canvas->m_canvas)
App::I.canvas->m_canvas->project_save_thread(App::I.data_path + "/recovery.pano");
App::I.canvas->m_canvas->project_save_thread(App::I.data_path + "/recovery.ppi");
std::terminate();
}

View File

@@ -635,10 +635,12 @@
<icon icon="page_add" width="20"/>
<text text="Import" grow="1" margin="0 0 0 5" font-face="arial" font-size="11"/>
</button-custom>
<!--
<button-custom id="file-open" text="Menu" height="40" align="center" color=".2" pad="0 0 0 10" dir="row">
<icon icon="page_add" width="20"/>
<text text="Open" grow="1" margin="0 0 0 5" font-face="arial" font-size="11"/>
</button-custom>
-->
<button-custom id="file-browse" text="Menu" height="40" align="center" color=".2" pad="0 0 0 10" dir="row">
<icon icon="page_add" width="20"/>
<text text="Browse" grow="1" margin="0 0 0 5" font-face="arial" font-size="11"/>
@@ -662,10 +664,12 @@
<icon icon="disk" width="20"/>
<text text="Export JPG" grow="1" margin="0 0 0 5" font-face="arial" font-size="11"/>
</button-custom>
<!--
<button-custom id="file-export-cubes" text="Menu" height="40" align="center" color=".2" pad="0 0 0 10" dir="row">
<icon icon="page_white_stack" width="20"/>
<text text="Export Cubes" grow="1" margin="0 0 0 5" font-face="arial" font-size="11"/>
</button-custom>
-->
<button-custom id="file-cloud-upload" text="Menu" height="40" align="center" color=".2" pad="0 0 0 10" dir="row">
<icon icon="weather_clouds" width="20"/>
<text text="Cloud Upload" grow="1" margin="0 0 0 5" font-face="arial" font-size="11"/>
@@ -791,19 +795,20 @@
<button-custom id="menu-timelapse" width="80" height="100%" margin="0 0 0 0" justify="center" align="center" pad="8" color=".1">
<text text="Timelapse" font-face="arial" font-size="11"/>
</button-custom>
<!--
<button-custom id="menu-about" width="60" height="100%" margin="0 0 0 0" justify="center" align="center" pad="8" color=".1">
<text text="About" font-face="arial" font-size="11"/>
</button-custom>
<button id="btn-anim" width="70" height="100%" margin="1 0 0 10" text="Animate"/>
-->
<node dir="row" justify="center" grow="1">
<button id="btn-pen" width="50" height="100%" margin="0 0 0 0" text="Pen"/>
<button id="btn-pick" width="50" height="100%" margin="0 0 0 0" text="Pick"/>
<button id="btn-touchlock" width="50" height="100%" margin="0 0 0 0" text="Lock"/>
<button id="btn-erase" width="60" height="100%" margin="0 0 0 5" text="Erase"/>
<button id="btn-erase" width="60" height="100%" margin="0 0 0 5" text="Eraser"/>
<button id="btn-cam" width="70" height="100%" margin="0 0 0 5" text="Camera"/>
<button id="btn-cam" width="70" height="100%" margin="0 0 0 5" text="Parallax"/>
<button id="btn-line" width="50" height="100%" margin="0 0 0 5" text="Line"/>
<button id="btn-grid" width="50" height="100%" margin="0 0 0 0" text="Grid"/>
@@ -830,7 +835,9 @@
<button-custom id="btn-stroke" width="50" height="50" margin="0 0 5 0" thickness="1" border-color=".1" pad="2">
<image path="data/ui/stroke.png" width="100%" height="100%" align="center" justify="flex-end"/>
</button-custom>
<!--
<button id="btn-brush-preset" width="50" height="50" margin="0 0 5 0" text="Preset" thickness="1" border-color=".1" pad="2"/>
-->
<button-custom id="btn-brush" width="50" height="50" margin="0 0 5 0" thickness="1" border-color=".1" pad="2">
<image path="data/ui/brushes.png" width="100%" height="100%" align="center" justify="flex-end"/>
</button-custom>
@@ -840,9 +847,11 @@
<button-custom id="btn-layer" width="50" height="50" margin="0 0 5 0" thickness="1" border-color=".1" pad="2">
<image path="data/ui/layers.png" width="100%" height="100%" align="center" justify="flex-end"/>
</button-custom>
<!--
<button-custom id="btn-grids-panel" width="50" height="50" margin="0 0 5 0" thickness="1" border-color=".1" pad="2">
<image path="data/ui/grid.png" width="100%" height="100%" align="center" justify="flex-end" mips="true"/>
</button-custom>
-->
</border>
<!-- side bar -->
<node height="100%" dir="row" shrink="1">

View File

@@ -23,7 +23,7 @@ void App::cloud_upload()
else
{
std::thread([this] {
std::string path = data_path + "/" + doc_name + ".pano";
std::string path = data_path + "/" + doc_name + ".ppi";
if (ui::Canvas::I->m_unsaved)
{
Canvas::I->project_save_thread(path);
@@ -34,7 +34,7 @@ void App::cloud_upload()
async_redraw();
async_end();
upload(path, doc_name + ".pano", [this,pb](float p){
upload(path, doc_name + ".ppi", [this,pb](float p){
async_start();
pb->m_progress->SetWidthP(p * 100.f);
async_redraw();
@@ -59,7 +59,7 @@ void App::cloud_upload()
void App::cloud_upload_all()
{
std::thread([this] {
auto names = Asset::list_files(data_path, false, ".*\\.pano");
auto names = Asset::list_files(data_path, false, ".*\\.ppi");
gl_state gl;
std::shared_ptr<NodeProgressBar> pb;

View File

@@ -36,7 +36,7 @@ void App::dialog_newdoc()
dialog->btn_ok->on_click = [this, dialog](Node*)
{
std::string name = dialog->input->m_string;
std::string path = data_path + "/" + name + ".pano";
std::string path = data_path + "/" + name + ".ppi";
auto action = [this, dialog, name] {
std::array<int, 4> resolutions{ 512, 1024, 1536, 2048 };
@@ -255,14 +255,14 @@ void App::dialog_save_ver()
static char tmp_name[256];
sprintf(tmp_name, "%s.%02d", base.c_str(), i);
next = tmp_name;
if (Asset::exist(data_path + "/" + next + ".pano", false))
if (Asset::exist(data_path + "/" + next + ".ppi", false))
continue;
break;
}
doc_name = next;
title_update();
canvas->m_canvas->project_save(data_path + "/" + next + ".pano");
canvas->m_canvas->project_save(data_path + "/" + next + ".ppi");
}
void App::dialog_save()
@@ -281,7 +281,7 @@ void App::dialog_save()
dialog->btn_ok->on_click = [this, dialog](Node*)
{
std::string name = dialog->input->m_string;
std::string path = data_path + "/" + name + ".pano";
std::string path = data_path + "/" + name + ".ppi";
if (name.empty())
{

View File

@@ -1483,7 +1483,7 @@ void ui::Canvas::export_cubes(std::string data_path)
static char name[128];
sprintf(name, "%s.zip", data_path.c_str());
auto zip_path = [NSString stringWithUTF8String : name];
[SSZipArchive createZipFileAtPath:zip_path withFilesAtPaths:files];
//[SSZipArchive createZipFileAtPath:zip_path withFilesAtPaths:files];
for (NSString* f : files)
[[NSFileManager defaultManager] removeItemAtPath:f error:nil];
#endif
@@ -1494,7 +1494,7 @@ void ui::Canvas::project_save(std::function<void()> on_complete)
if (App::I.check_license())
{
std::thread t([=] {
project_save_thread(App::I.data_path + "/" + App::I.doc_name + ".pano");
project_save_thread(App::I.data_path + "/" + App::I.doc_name + ".ppi");
if (on_complete)
on_complete();
});
@@ -1524,7 +1524,7 @@ void ui::Canvas::project_save_thread(std::string file_path)
return;
// static char name[128];
// sprintf(name, "%s/latlong.pano", data_path.c_str());
// sprintf(name, "%s/latlong.ppi", data_path.c_str());
FILE* fp = fopen(file_path.c_str(), "wb");
if (!fp)
{
@@ -1836,7 +1836,7 @@ ui::Image ui::Canvas::thumbnail_generate(int w, int h)
ui::Image ui::Canvas::thumbnail_read(std::string data_path)
{
// static char name[128];
// sprintf(name, "%s/latlong.pano", data_path.c_str());
// sprintf(name, "%s/latlong.ppi", data_path.c_str());
FILE* fp = fopen(data_path.c_str(), "rb");
if (!fp)
{

View File

@@ -272,7 +272,7 @@ static void SetupExceptionHandler()
BT_SetPreErrHandler([](INT_PTR){
if (ui::Canvas::I)
{
auto path = App::I.data_path + "/recovery.pano";
auto path = App::I.data_path + "/recovery.ppi";
ui::Canvas::I->project_save_thread(path);
static char abspath[MAX_PATH];
GetFullPathNameA(path.c_str(), MAX_PATH, abspath, NULL);

View File

@@ -69,7 +69,7 @@ void NodeDialogBrowse::init_controls()
root()->update();
};
container = find<Node>("files-list");
auto names = Asset::list_files(data_path, false, ".*\\.pano");
auto names = Asset::list_files(data_path, false, ".*\\.ppi");
for (const auto& n : names)
{
auto node = new NodeDialogBrowseItem;

View File

@@ -69,7 +69,7 @@ void NodeDialogOpen::init_controls()
root()->update();
};
container = find<Node>("files-list");
auto names = Asset::list_files(data_path, false, ".*\\.pano");
auto names = Asset::list_files(data_path, false, ".*\\.ppi");
for (const auto& n : names)
{
auto node = new NodeDialogOpenItem;