From eb8330a4207ce94df27f3af61099dffdb7fc945d Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Thu, 18 Aug 2016 23:53:25 +0100 Subject: [PATCH] New: test which demonstrates an iOS virtual keyboard bug. --- Tests/Manual/MobileTest/AppController.j | 48 +++++ Tests/Manual/MobileTest/Info.plist | 16 ++ Tests/Manual/MobileTest/Jakefile | 172 +++++++++++++++ .../Manual/MobileTest/Resources/MainMenu.cib | 1 + .../Manual/MobileTest/Resources/MainMenu.xib | 59 +++++ .../Manual/MobileTest/Resources/Test1View.cib | 1 + .../Manual/MobileTest/Resources/Test1View.xib | 92 ++++++++ Tests/Manual/MobileTest/Test1Controller.j | 19 ++ Tests/Manual/MobileTest/index-debug.html | 204 ++++++++++++++++++ Tests/Manual/MobileTest/index.html | 166 ++++++++++++++ Tests/Manual/MobileTest/main.j | 18 ++ 11 files changed, 796 insertions(+) create mode 100644 Tests/Manual/MobileTest/AppController.j create mode 100644 Tests/Manual/MobileTest/Info.plist create mode 100644 Tests/Manual/MobileTest/Jakefile create mode 100644 Tests/Manual/MobileTest/Resources/MainMenu.cib create mode 100644 Tests/Manual/MobileTest/Resources/MainMenu.xib create mode 100644 Tests/Manual/MobileTest/Resources/Test1View.cib create mode 100644 Tests/Manual/MobileTest/Resources/Test1View.xib create mode 100644 Tests/Manual/MobileTest/Test1Controller.j create mode 100644 Tests/Manual/MobileTest/index-debug.html create mode 100644 Tests/Manual/MobileTest/index.html create mode 100644 Tests/Manual/MobileTest/main.j diff --git a/Tests/Manual/MobileTest/AppController.j b/Tests/Manual/MobileTest/AppController.j new file mode 100644 index 000000000..6cbb1082b --- /dev/null +++ b/Tests/Manual/MobileTest/AppController.j @@ -0,0 +1,48 @@ +/* + * AppController.j + * MobileTest + * + * Created by You on August 18, 2016. + * Copyright 2016, Your Company All rights reserved. + */ + +@import +@import +@import "Test1Controller.j" + + +@implementation AppController : CPObject +{ + @outlet CPWindow theWindow; + @outlet CPButton nextButton; + @outlet CPView testView; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullPlatformWindow:YES]; + + var test1Controller = [Test1Controller new], + viewFrame = [testView frame], + resizingMask = [testView autoresizingMask]; + [test1Controller loadViewWithCompletionHandler:function(aView, error) + { + [aView setFrame:viewFrame]; + [aView setAutoresizingMask:resizingMask]; + [[theWindow contentView] replaceSubview:testView with:aView]; + testView = aView; + [theWindow makeFirstResponder:[aView nextValidKeyView]]; + }]; +} + +@end diff --git a/Tests/Manual/MobileTest/Info.plist b/Tests/Manual/MobileTest/Info.plist new file mode 100644 index 000000000..12bb51220 --- /dev/null +++ b/Tests/Manual/MobileTest/Info.plist @@ -0,0 +1,16 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + MobileTest + CPBundleVersion + 1.0 + CPHumanReadableCopyright + Copyright © 2016, Your Company All rights reserved. + CPTheme + Aristo2 + + diff --git a/Tests/Manual/MobileTest/Jakefile b/Tests/Manual/MobileTest/Jakefile new file mode 100644 index 000000000..b40d57510 --- /dev/null +++ b/Tests/Manual/MobileTest/Jakefile @@ -0,0 +1,172 @@ +/* + * Jakefile + * MobileTest + * + * Created by You on August 18, 2016. + * Copyright 2016, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"), + projectName = "MobileTest"; + +app (projectName, function(task) +{ + ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks"; + + if (configuration === "Debug") + ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration); + + task.setBuildIntermediatesPath(FILE.join("Build", "MobileTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("MobileTest"); + task.setIdentifier("com.yourcompany.MobileTest"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("MobileTest"); + task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O2"); +}); + +task ("default", [projectName], function() +{ + printResults(configuration); +}); + +task ("build", ["default"], function() +{ + updateApplicationSize(); +}); + +task ("debug", function() +{ + configuration = ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + configuration = ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", projectName, "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", projectName, "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", projectName)); + OS.system(["press", "-f", FILE.join("Build", "Release", projectName), FILE.join("Build", "Deployment", projectName)]); + printResults("Deployment") +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, projectName)); + print("----------------------------"); +} + +function updateApplicationSize() +{ + print("Calculating application file sizes..."); + + var contents = FILE.read(FILE.join("Build", configuration, projectName, "Info.plist"), { charset:"UTF-8" }), + format = CFPropertyList.sniffedFormatOfString(contents), + plist = CFPropertyList.propertyListFromString(contents), + totalBytes = {executable:0, data:0, mhtml:0}; + + // Get the size of all framework executables and sprite data + var frameworksDir = "Frameworks"; + + if (configuration === "Debug") + frameworksDir = FILE.join(frameworksDir, "Debug"); + + var frameworks = FILE.list(frameworksDir); + + frameworks.forEach(function(framework) + { + if (framework !== "Source") + addBundleFileSizes(FILE.join(frameworksDir, framework), totalBytes); + }); + + // Read in the default theme name, and attempt to get its size + var themeName = plist.valueForKey("CPDefaultTheme") || "Aristo2", + themePath = nil; + + if (themeName === "Aristo" || themeName === "Aristo2") + themePath = FILE.join(frameworksDir, "AppKit", "Resources", themeName + ".blend"); + else + themePath = FILE.join("Frameworks", "Resources", themeName + ".blend"); + + if (FILE.isDirectory(themePath)) + addBundleFileSizes(themePath, totalBytes); + + // Add sizes for the app + addBundleFileSizes(FILE.join("Build", configuration, projectName), totalBytes); + + print("Executables: " + totalBytes.executable + ", sprite data: " + totalBytes.data + ", total: " + (totalBytes.executable + totalBytes.data)); + + var dict = new CFMutableDictionary(); + + dict.setValueForKey("executable", totalBytes.executable); + dict.setValueForKey("data", totalBytes.data); + dict.setValueForKey("mhtml", totalBytes.mhtml); + + plist.setValueForKey("CPApplicationSize", dict); + + FILE.write(FILE.join("Build", configuration, projectName, "Info.plist"), CFPropertyList.stringFromPropertyList(plist, format), { charset:"UTF-8" }); +} + +function addBundleFileSizes(bundlePath, totalBytes) +{ + var bundleName = FILE.basename(bundlePath), + environment = bundleName === "Foundation" ? "Objj" : "Browser", + bundlePath = FILE.join(bundlePath, environment + ".environment"); + + if (FILE.isDirectory(bundlePath)) + { + var filename = bundleName + ".sj", + filePath = new FILE.Path(FILE.join(bundlePath, filename)); + + if (filePath.exists()) + totalBytes.executable += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "dataURLs.txt")); + + if (filePath.exists()) + totalBytes.data += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLData.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + + filePath = new FILE.Path(FILE.join(bundlePath, "MHTMLPaths.txt")); + + if (filePath.exists()) + totalBytes.mhtml += filePath.size(); + } +} diff --git a/Tests/Manual/MobileTest/Resources/MainMenu.cib b/Tests/Manual/MobileTest/Resources/MainMenu.cib new file mode 100644 index 000000000..5d11531b1 --- /dev/null +++ b/Tests/Manual/MobileTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;29E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;30E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;31E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;29E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;32E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;29E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;33E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;29E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;24E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;34E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;29E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;21E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;35E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;30E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;36E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;37E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;2;38E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;39E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;2;40E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;41E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;42E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;23E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;43E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;44E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;44E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;45E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;47E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;47E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;48E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;49E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;43E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;50E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;51E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;52E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;47E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;47E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;48E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;53E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;43E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;54E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;55E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;56E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;57E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;58E;K;6;$afontD;K;6;CP$UIDd;2;60E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;61E;K;11;$aalignmentD;K;6;CP$UIDd;2;61E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;47E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;47E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;48E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;62E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;63E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;64E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;65E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;43E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;2;66E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;48E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;48E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;48E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;68E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;61E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;61E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;48E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;48E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;2;63E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;27E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;43E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;69E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;70E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;71E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;73E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;43E;K;6;$afontD;K;6;CP$UIDd;2;74E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;43E;K;11;$aalignmentD;K;6;CP$UIDd;2;61E;K;7;$aimageD;K;6;CP$UIDd;2;76E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;47E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;47E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;48E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;43E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;65E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;43E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;2;66E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;78E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;2;79E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;48E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;2;80E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;2;43E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;2;63E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;61E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;43E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;81E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;21E;E;E;S;8;delegateS;10;nextButtonS;8;testViewS;9;theWindowS;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1879048192S;25;{{335, -179}, {375, 667}}S;21;{{0, 0}, {1440, 878}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {375, 667}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;28E;E;E;S;6;normalS;6;{1, 1}F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;20;{{0, 0}, {375, 632}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;26E;E;E;d;2;37D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;23;{{133, 307}, {108, 17}}S;19;{{0, 0}, {108, 17}}d;2;36S;9;textfieldS;18;controlSizeRegularD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;82E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;66E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;48E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;48E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;63E;E;d;1;2D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;T;S;10;Loading...d;1;4d;2;-1D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;83E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;84E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;46E;E;S;22;{{159, 632}, {57, 25}}S;18;{{0, 0}, {57, 25}}d;2;13S;6;buttonS;27;bordered+controlSizeRegularD;K;6;$classD;K;6;CP$UIDd;2;59E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;82E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;66E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;63E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;48E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;63E;E;D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;75E;K;4;nameD;K;6;CP$UIDd;2;85E;K;12;defaultValueD;K;6;CP$UIDd;2;87E;K;5;stateD;K;6;CP$UIDd;2;88E;K;5;valueD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;4;NextS;0;d;2;14S;13;AppControllerS;28;_CPFontSystemFacePlaceholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;E;E;S;5;colorS;5;imageD;K;10;$classnameS;6;CPNullK;8;$classesA;S;6;CPNullS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;86E;E;S;11;highlightedD;K;6;$classD;K;6;CP$UIDd;2;59E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;92E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;71E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;48E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;48E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;48E;E;f;18;0.6862745098039216d;1;1S;18;.AppleSystemUIFontE;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/MobileTest/Resources/MainMenu.xib b/Tests/Manual/MobileTest/Resources/MainMenu.xib new file mode 100644 index 000000000..0e016b93e --- /dev/null +++ b/Tests/Manual/MobileTest/Resources/MainMenu.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tests/Manual/MobileTest/Resources/Test1View.cib b/Tests/Manual/MobileTest/Resources/Test1View.cib new file mode 100644 index 000000000..d6c1ffdf9 --- /dev/null +++ b/Tests/Manual/MobileTest/Resources/Test1View.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;30E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;31E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;32E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;22E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;33E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;22E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;26E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;34E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;26E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;30E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;35E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;36E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;37E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;39E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;25E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;30E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;40E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;41E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;37E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;43E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;44E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;45E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;45E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;46E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;47E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;48E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;49E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;49E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;50E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;51E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;44E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;52E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;53E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;54E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;55E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;56E;K;6;$afontD;K;6;CP$UIDd;2;58E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;44E;K;11;$aalignmentD;K;6;CP$UIDd;2;59E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;49E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;49E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;50E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;60E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;61E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;62E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;59E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;44E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;2;63E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;50E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;65E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;44E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;59E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;50E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;61E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;2;50E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;44E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;66E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;53E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;67E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;55E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;56E;K;6;$afontD;K;6;CP$UIDd;2;58E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;59E;K;11;$aalignmentD;K;6;CP$UIDd;2;59E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;49E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;49E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;50E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;68E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;61E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;69E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;59E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;44E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;2;63E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;50E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;65E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;59E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;59E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;50E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;50E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;2;50E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;44E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;70E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;71E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;54E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;55E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;72E;K;6;$afontD;K;6;CP$UIDd;2;58E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;73E;K;11;$aalignmentD;K;6;CP$UIDd;2;59E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;49E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;49E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;50E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;74E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;61E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;75E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;59E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;44E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;2;63E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;61E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;61E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;61E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;76E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;73E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;59E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;50E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;50E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;44E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;77E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;78E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;54E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;55E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;56E;K;6;$afontD;K;6;CP$UIDd;2;58E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;44E;K;11;$aalignmentD;K;6;CP$UIDd;2;59E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;49E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;49E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;50E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;79E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;61E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;80E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;59E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;44E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;2;63E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;50E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;65E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;44E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;59E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;50E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;61E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;2;50E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;44E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;81E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;78E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;67E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;55E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;56E;K;6;$afontD;K;6;CP$UIDd;2;58E;K;12;$atext-colorD;K;6;CP$UIDd;2;83E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;44E;K;11;$aalignmentD;K;6;CP$UIDd;2;59E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;49E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;49E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;50E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;84E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;61E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;85E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;59E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;2;44E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;2;63E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;50E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;65E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;44E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;59E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldUsesSingleLineModeD;K;6;CP$UIDd;2;50E;K;16;CPTextFieldWrapsD;K;6;CP$UIDd;2;61E;K;18;CPTextFieldScrollsD;K;6;CP$UIDd;2;50E;E;D;K;10;$classnameS;18;CPObjectControllerK;8;$classesA;S;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;2;86E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;2;61E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;2;61E;K;37;CPObjectControllerUsesLazyFetchingKeyD;K;6;CP$UIDd;2;50E;K;40;CPObjectControllerIsUsingManagedProxyKeyD;K;6;CP$UIDd;2;50E;K;33;CPObjectControllerManagedProxyKeyD;K;6;CP$UIDd;2;88E;E;S;16;CPViewControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;4;viewS;11;nextKeyViewS;23;value: selection.field1S;5;valueS;16;selection.field1D;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;10;CP.objectsD;K;26;CPContinuouslyUpdatesValueD;K;6;CP$UIDd;2;61E;E;E;S;38;displayPatternValue1: selection.field1S;20;displayPatternValue1D;K;6;$classD;K;6;CP$UIDd;2;38E;K;10;CP.objectsD;K;16;CPDisplayPatternD;K;6;CP$UIDd;2;89E;E;E;S;13;CPApplicationd;1;0S;20;{{0, 0}, {375, 632}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;E;E;d;2;18S;6;normalS;6;{1, 1}F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;21;{{20, 20}, {335, 17}}S;19;{{0, 0}, {335, 17}}d;2;36S;9;textfieldS;18;controlSizeRegularD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;57E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;90E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;63E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;50E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;50E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;61E;E;d;1;4D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;T;S;54;1. The text field below should be the first responder.d;2;-1D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;64E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;91E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;92E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;48E;E;S;22;{{20, 151}, {335, 17}}d;2;34D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;10;You typed:S;21;{{16, 42}, {343, 22}}S;19;{{0, 0}, {343, 22}}S;47;bezeled+controlSizeRegular+editable+placeholderd;1;2D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;94E;E;E;S;0;D;K;6;$classD;K;6;CP$UIDd;2;64E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;95E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;92E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;48E;E;S;21;{{20, 75}, {335, 68}}S;19;{{0, 0}, {335, 68}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;160;2. Using the iOS virtual keyboard, type something and then tap "Done". The text field should resign first responder status. The virtual keyboard should dismiss.S;22;{{20, 176}, {335, 68}}D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;82E;K;4;nameD;K;6;CP$UIDd;2;96E;K;12;defaultValueD;K;6;CP$UIDd;2;97E;K;6;valuesD;K;6;CP$UIDd;2;98E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;179;It should not be possible to unfocus the field by tapping outside of it. Neither should tab on a hardware keyboard or return on the virtual keyboard cause the field to lose focus.S;19;CPMutableDictionaryD;K;10;$classnameS;15;_CPManagedProxyK;8;$classesA;S;15;_CPManagedProxyS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;87E;K;27;CPManagedProxyEntityNameKeyD;K;6;CP$UIDd;1;0E;K;31;CPManagedProxyFetchPredicateKeyD;K;6;CP$UIDd;1;0E;E;S;21;You typed: %{value1}@S;28;_CPFontSystemFacePlaceholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;E;E;S;5;colorD;K;10;$classnameS;14;CPTrackingAreaK;8;$classesA;S;14;CPTrackingAreaS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;93E;K;25;CPTrackinkAreaViewRectKeyD;K;6;CP$UIDd;3;102E;K;24;CPTrackingAreaOptionsKeyD;K;6;CP$UIDd;3;103E;K;22;CPTrackingAreaOwnerKeyD;K;6;CP$UIDd;2;26E;K;25;CPTrackingAreaUserInfoKeyD;K;6;CP$UIDd;1;0E;K;32;CPTrackingAreaReferencingViewKeyD;K;6;CP$UIDd;2;26E;K;24;CPTrackingAreaWindowRectD;K;6;CP$UIDd;3;104E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;100E;E;E;S;10;text-colorD;K;6;$classD;K;6;CP$UIDd;2;64E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;105E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;92E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;48E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;10;CP.objectsD;K;11;placeholderD;K;6;CP$UIDd;2;97E;K;6;normalD;K;6;CP$UIDd;3;106E;E;E;f;18;0.6862745098039216d;1;1D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;107E;E;d;2;42D;K;6;$classD;K;6;CP$UIDd;3;101E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;108E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;3;100E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;64E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;92E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;48E;E;S;57;{"origin":{"x":0,"y":1},"size":{"width":343,"height":21}}S;59;{"origin":{"x":16,"y":43},"size":{"width":343,"height":21}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;E;E;f;4;0.25f;4;0.85E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/MobileTest/Resources/Test1View.xib b/Tests/Manual/MobileTest/Resources/Test1View.xib new file mode 100644 index 000000000..6c4fc4f5a --- /dev/null +++ b/Tests/Manual/MobileTest/Resources/Test1View.xib @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + You typed: %{value1}@ + + + + + + + + + + + + + + + + + + + + + + + + + + 2. Using the iOS virtual keyboard, type something and then tap "Done". The text field should resign first responder status. The virtual keyboard should dismiss. + + + + + + + + + + It should not be possible to unfocus the field by tapping outside of it. Neither should tab on a hardware keyboard or return on the virtual keyboard cause the field to lose focus. + + + + + + + + + + + + + field1 + + + + diff --git a/Tests/Manual/MobileTest/Test1Controller.j b/Tests/Manual/MobileTest/Test1Controller.j new file mode 100644 index 000000000..020197e39 --- /dev/null +++ b/Tests/Manual/MobileTest/Test1Controller.j @@ -0,0 +1,19 @@ +@import +@import "Test1Controller.j" + + +@implementation Test1Controller : CPViewController +{ +} + +- (id)init +{ + return [super initWithCibName:@"Test1View" bundle:nil]; +} + +- (void)viewDidLoad +{ + CPLog("Loaded %@ view %@", self, [self view]); +} + +@end diff --git a/Tests/Manual/MobileTest/index-debug.html b/Tests/Manual/MobileTest/index-debug.html new file mode 100644 index 000000000..dd81cdff7 --- /dev/null +++ b/Tests/Manual/MobileTest/index-debug.html @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + MobileTest + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/MobileTest/index.html b/Tests/Manual/MobileTest/index.html new file mode 100644 index 000000000..56bfc77c6 --- /dev/null +++ b/Tests/Manual/MobileTest/index.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + MobileTest + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ + diff --git a/Tests/Manual/MobileTest/main.j b/Tests/Manual/MobileTest/main.j new file mode 100644 index 000000000..66b702a49 --- /dev/null +++ b/Tests/Manual/MobileTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPTextField + * + * Created by Alexander Ljungberg on August 2, 2010. + * Copyright 2010, WireLoad, LLC All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +}