From 94cb7a196e5ab070fc1ccad1d31e5434b7485f76 Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Fri, 28 Sep 2012 14:36:59 +0000 Subject: [PATCH] Initial commit SVN: 26850 --- openbis-ipad/.gitignore | 0 openbis-ipad/BisKit/Classes/CISDOBAsyncCall.h | 48 + openbis-ipad/BisKit/Classes/CISDOBAsyncCall.m | 36 + .../BisKit/Classes/CISDOBConnection.h | 85 + .../BisKit/Classes/CISDOBConnection.m | 189 + .../BisKit/Classes/CISDOBIpadService.h | 58 + .../BisKit/Classes/CISDOBIpadService.m | 145 + .../BisKit/Classes/CISDOBJsonRpcCall.h | 86 + .../BisKit/Classes/CISDOBJsonRpcCall.m | 202 + openbis-ipad/BisKit/Classes/CISDOBShared.h | 60 + openbis-ipad/BisKit/Tests/CISDOBAsyncTest.h | 31 + openbis-ipad/BisKit/Tests/CISDOBAsyncTest.m | 50 + .../BisKit/Tests/CISDOBIpadServiceTest.h | 36 + .../BisKit/Tests/CISDOBIpadServiceTest.m | 70 + .../BisKit/Tests/CISDOBJsonRpcCallTest.h | 42 + .../BisKit/Tests/CISDOBJsonRpcCallTest.m | 187 + .../BisKit/Tests/CISDOBLiveConnectionTest.h | 37 + .../BisKit/Tests/CISDOBLiveConnectionTest.m | 95 + openbis-ipad/BisKit/readme.md | 5 + openbis-ipad/BisMac.xcodeproj/project.pbxproj | 596 +++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 94743 bytes .../WorkspaceSettings.xcsettings | 10 + .../xcdebugger/Breakpoints.xcbkptlist | 5 + .../xcschemes/BisMac.xcscheme | 91 + .../xcschemes/BisMacImporter.xcscheme | 63 + .../xcschemes/xcschememanagement.plist | 37 + openbis-ipad/BisMac/BisMac-Info.plist | 103 + openbis-ipad/BisMac/BisMac-Prefix.pch | 7 + openbis-ipad/BisMac/BisMacDocument.h | 31 + openbis-ipad/BisMac/BisMacDocument.m | 77 + .../.xccurrentversion | 8 + .../BisMacDocument.xcdatamodel/elements | Bin 0 -> 1199 bytes .../BisMacDocument.xcdatamodel/layout | Bin 0 -> 475 bytes .../BisMac/en.lproj/BisMacDocument.xib | 252 ++ openbis-ipad/BisMac/en.lproj/Credits.rtf | 29 + .../BisMac/en.lproj/InfoPlist.strings | 2 + openbis-ipad/BisMac/en.lproj/MainMenu.xib | 4031 +++++++++++++++++ openbis-ipad/BisMac/main.m | 29 + .../BisMacTests/BisMacTests-Info.plist | 22 + .../BisMacTests/BisMacTests-Prefix.pch | 7 + openbis-ipad/BisMacTests/BisMacTests.h | 17 + openbis-ipad/BisMacTests/BisMacTests.m | 33 + .../BisMacTests/en.lproj/InfoPlist.strings | 2 + 44 files changed, 6921 insertions(+) delete mode 100644 openbis-ipad/.gitignore create mode 100644 openbis-ipad/BisKit/Classes/CISDOBAsyncCall.h create mode 100644 openbis-ipad/BisKit/Classes/CISDOBAsyncCall.m create mode 100644 openbis-ipad/BisKit/Classes/CISDOBConnection.h create mode 100644 openbis-ipad/BisKit/Classes/CISDOBConnection.m create mode 100644 openbis-ipad/BisKit/Classes/CISDOBIpadService.h create mode 100644 openbis-ipad/BisKit/Classes/CISDOBIpadService.m create mode 100644 openbis-ipad/BisKit/Classes/CISDOBJsonRpcCall.h create mode 100644 openbis-ipad/BisKit/Classes/CISDOBJsonRpcCall.m create mode 100644 openbis-ipad/BisKit/Classes/CISDOBShared.h create mode 100644 openbis-ipad/BisKit/Tests/CISDOBAsyncTest.h create mode 100644 openbis-ipad/BisKit/Tests/CISDOBAsyncTest.m create mode 100644 openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.h create mode 100644 openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.m create mode 100644 openbis-ipad/BisKit/Tests/CISDOBJsonRpcCallTest.h create mode 100644 openbis-ipad/BisKit/Tests/CISDOBJsonRpcCallTest.m create mode 100644 openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.h create mode 100644 openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.m create mode 100644 openbis-ipad/BisKit/readme.md create mode 100644 openbis-ipad/BisMac.xcodeproj/project.pbxproj create mode 100644 openbis-ipad/BisMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 openbis-ipad/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 openbis-ipad/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/BisMac.xcscheme create mode 100644 openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/BisMacImporter.xcscheme create mode 100644 openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 openbis-ipad/BisMac/BisMac-Info.plist create mode 100644 openbis-ipad/BisMac/BisMac-Prefix.pch create mode 100644 openbis-ipad/BisMac/BisMacDocument.h create mode 100644 openbis-ipad/BisMac/BisMacDocument.m create mode 100644 openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/.xccurrentversion create mode 100644 openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/BisMacDocument.xcdatamodel/elements create mode 100644 openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/BisMacDocument.xcdatamodel/layout create mode 100644 openbis-ipad/BisMac/en.lproj/BisMacDocument.xib create mode 100644 openbis-ipad/BisMac/en.lproj/Credits.rtf create mode 100644 openbis-ipad/BisMac/en.lproj/InfoPlist.strings create mode 100644 openbis-ipad/BisMac/en.lproj/MainMenu.xib create mode 100644 openbis-ipad/BisMac/main.m create mode 100644 openbis-ipad/BisMacTests/BisMacTests-Info.plist create mode 100644 openbis-ipad/BisMacTests/BisMacTests-Prefix.pch create mode 100644 openbis-ipad/BisMacTests/BisMacTests.h create mode 100644 openbis-ipad/BisMacTests/BisMacTests.m create mode 100644 openbis-ipad/BisMacTests/en.lproj/InfoPlist.strings diff --git a/openbis-ipad/.gitignore b/openbis-ipad/.gitignore deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/openbis-ipad/BisKit/Classes/CISDOBAsyncCall.h b/openbis-ipad/BisKit/Classes/CISDOBAsyncCall.h new file mode 100644 index 00000000000..b3d2872a2e1 --- /dev/null +++ b/openbis-ipad/BisKit/Classes/CISDOBAsyncCall.h @@ -0,0 +1,48 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBAsyncCall.h +// BisMac +// +// Created by Ramakrishnan Chandrasekhar on 9/25/12. +// +// + +#import <Foundation/Foundation.h> +#import "CISDOBShared.h" + +/** + * \brief An asynchronous call to a server. + * + * The call object is used to configure aspects of the asynchronous calls to servers. + * Users will want to usually want to configure at least the success block and probably the fail block as well. + */ +@interface CISDOBAsyncCall : NSObject { +@protected + // Exposed state + SuccessBlock _success; + FailBlock _fail; +} + +// Configuration +@property(copy) SuccessBlock success; //!< The block invoked if the invocation was successful. Can be nil. +@property(copy) FailBlock fail; //!< The block invoked if the invocation failed. Can be nil. + + +// Actions +- (void)start; //!< Make the call (asynchronously). + +@end \ No newline at end of file diff --git a/openbis-ipad/BisKit/Classes/CISDOBAsyncCall.m b/openbis-ipad/BisKit/Classes/CISDOBAsyncCall.m new file mode 100644 index 00000000000..9f72f1e2184 --- /dev/null +++ b/openbis-ipad/BisKit/Classes/CISDOBAsyncCall.m @@ -0,0 +1,36 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBAsyncCall.m +// BisMac +// +// Created by Ramakrishnan Chandrasekhar on 9/25/12. +// +// + +#import "CISDOBAsyncCall.h" + +@implementation CISDOBAsyncCall + +- (void)subclassResponsibility +{ + NSException* exception = [NSException exceptionWithName: NSInvalidArgumentException reason: @"Subclass Responsibility" userInfo: nil]; + @throw exception; +} + +- (void)start { [self subclassResponsibility]; } + +@end diff --git a/openbis-ipad/BisKit/Classes/CISDOBConnection.h b/openbis-ipad/BisKit/Classes/CISDOBConnection.h new file mode 100644 index 00000000000..0d0f19df750 --- /dev/null +++ b/openbis-ipad/BisKit/Classes/CISDOBConnection.h @@ -0,0 +1,85 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBConnection.h +// BisMac +// +// Created by cramakri on 27.08.12. +// +// + +#import <Foundation/Foundation.h> +#import "CISDOBShared.h" + + +/** + * \brief A connection to an openBIS server. + * + * The connection is an abstract superclass. + * There are two concrete subclasses: + * - CISDOBLiveConnection -- a connection that runs over the network + * - CISDOBPlaybackConnection -- a simulated connection that responds to requests + * by returning data that was previously saved to a file. Useful for testing. + * + * The methods on the connection do not immidiately execute the call. Instead, they return call objects that can be configured. + * Typical configuration will include setting the success and fail blocks. + */ +@class CISDOBAsyncCall; +@interface CISDOBConnection : NSObject { +@protected + // Internal state + NSString *_sessionToken; + NSTimeInterval _timeoutInterval; +} + +@property(readonly) NSString *sessionToken; //!< The session token for the connection +@property NSTimeInterval timeoutInterval; //!< Timeout interval for calls. Defaults to 10s. + +// Actions +- (CISDOBAsyncCall *)loginUser:(NSString *)user password:(NSString *)password; +- (CISDOBAsyncCall *)listAggregationServices; + // parameters may be nil +- (CISDOBAsyncCall *)createReportFromDataStore:(NSString *)dataStoreCode aggregationService:(NSString *)service parameters:(id)parameters; + +@end + + +/** + * \brief An actual, live connection to an openBIS server + * + */ +@interface CISDOBLiveConnection : CISDOBConnection { +@private + // Exposed state + NSURL *_url; + BOOL _trusted; +} + +@property(readonly) NSURL *url; //!< The URL for openBIS. This should just be the address and port. +@property(readonly, getter=isTrusted) BOOL trusted; //!< Is the server trusted? If so, self-signed certificates will be automatically accepted. By default, NO. + +// Initialization +- (id)initWithUrl:(NSURL *)url; //!< Initialize with trusted = NO +- (id)initWithUrl:(NSURL *)url trusted:(BOOL)trusted; //!< Designated initializer. + +@end + +@interface CISDOBPlaybackConnection : CISDOBConnection { +@private + +} + +@end diff --git a/openbis-ipad/BisKit/Classes/CISDOBConnection.m b/openbis-ipad/BisKit/Classes/CISDOBConnection.m new file mode 100644 index 00000000000..9fbc5ee99e0 --- /dev/null +++ b/openbis-ipad/BisKit/Classes/CISDOBConnection.m @@ -0,0 +1,189 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBConnection.m +// BisMac +// +// Created by cramakri on 27.08.12. +// +// + +#import "CISDOBConnection.h" +#import "CISDOBJsonRpcCall.h" +#import "CISDOBAsyncCall.h" + +// Internal connection call that includes the private state +@interface CISDOBConnectionCall : CISDOBAsyncCall { +@private + // Internal state + CISDOBConnection *__weak _connection; + NSString *_method; + NSArray *_params; + SuccessBlock _successWrapper; + FailBlock _failWrapper; +} +@property(weak) CISDOBConnection *connection; +@property(strong) NSString *method; +@property(strong) NSArray *params; +@property(copy) SuccessBlock successWrapper; +@property(copy) FailBlock failWrapper; + +// Initialization +- (id)initWithConnection:(CISDOBConnection *)aConnection method:(NSString *)aString params:(NSArray *)anArray; + +@end + +@interface CISDOBConnection (CISDOBConnectionPrivate) + +- (void)executeCall:(CISDOBConnectionCall *)call; + +@end + + + +@implementation CISDOBConnection + +- (id)init +{ + if (!(self = [super init])) return nil; + _timeoutInterval = 10.; + + return self; +} + + +- (void)subclassResponsibility +{ + NSException* exception = [NSException exceptionWithName: NSInvalidArgumentException reason: @"Subclass Responsibility" userInfo: nil]; + @throw exception; +} + +- (CISDOBConnectionCall *)callWithMethod:(NSString *)method params:(NSArray *)params +{ + return + [[CISDOBConnectionCall alloc] + initWithConnection: self method: method params: params]; +} + +- (CISDOBAsyncCall *)loginUser:(NSString *)user password:(NSString *)password +{ + NSString* method = @"tryToAuthenticateAtQueryServer"; + NSArray* params = [NSArray arrayWithObjects: user, password, nil]; + + CISDOBConnectionCall *call = [self callWithMethod: method params: params]; + call.successWrapper = ^(id result) { + if (!call.success) return; + _sessionToken = result; + call.success(result); + }; + + return call; +} + +- (CISDOBAsyncCall *)listAggregationServices +{ + NSString *method = @"listAggregationServices"; + NSArray *params = [NSArray arrayWithObjects: _sessionToken, nil]; + + return [self callWithMethod: method params: params]; +} + +- (CISDOBAsyncCall *)createReportFromDataStore:(NSString *)dataStoreCode aggregationService:(NSString *)service parameters:(id)parameters +{ + NSString *method = @"createReportFromAggregationService"; + NSDictionary *usedParameters = (parameters) ? parameters : [NSDictionary dictionary]; + NSArray *params = [NSArray arrayWithObjects: _sessionToken, dataStoreCode, service, usedParameters, nil]; + + return [self callWithMethod: method params: params]; +} + +- (void)executeCall:(CISDOBAsyncCall *)call { [self subclassResponsibility]; } + +@end + + + +@implementation CISDOBLiveConnection + +- (void)dealloc +{ + _url = nil; +} + +- (id)initWithUrl:(NSURL *)aUrl { return [self initWithUrl: aUrl trusted: NO]; } + +- (id)initWithUrl:(NSURL *)aUrl trusted:(BOOL)aBool +{ + if (!(self = [super init])) return nil; + + _url = aUrl; + _trusted = aBool; + + return self; +} + +- (void)executeCall:(CISDOBConnectionCall *)call +{ + // Convert the call into a JSON-RPC call and run it + CISDOBJsonRpcCall *jsonRpcCall = [[CISDOBJsonRpcCall alloc] init]; + jsonRpcCall.url = [_url URLByAppendingPathComponent: @"openbis/openbis/rmi-query-v1.json"]; + jsonRpcCall.timeoutInterval = _timeoutInterval; + jsonRpcCall.delegate = self; + jsonRpcCall.method = call.method; + jsonRpcCall.params = call.params; + jsonRpcCall.success = call.successWrapper; + jsonRpcCall.fail = call.failWrapper; + [jsonRpcCall start]; +} + +// CISDOBJsonRpcCallDelegate +- (BOOL)jsonRpcCall:(CISDOBJsonRpcCall *)call canTrustHost:(NSString *)host { return _trusted; } + +@end + +@implementation CISDOBPlaybackConnection + +@end + + +@implementation CISDOBConnectionCall + + +- (id)initWithConnection:(CISDOBConnection *)aConnection method:(NSString *)aString params:(NSArray *)anArray +{ + if (!(self = [super init])) return nil; + + self.connection = aConnection; + self.method = aString; + self.params = anArray; + + self.success = nil; + self.fail = nil; + + // The success and fail blocks are actually wrapped to give the call an opportunity to modify the result. These are the defaults. Clients may provide alternates + __weak CISDOBConnectionCall *lexicalParent = self; // weak reference to avoid a retain cycle + self.successWrapper = ^(id result) { if (lexicalParent.success) lexicalParent.success(result); }; + self.failWrapper = ^(NSError *error) { if (lexicalParent.fail) lexicalParent.fail(error); }; + + return self; +} + +- (void)start +{ + [_connection executeCall: self]; +} + +@end \ No newline at end of file diff --git a/openbis-ipad/BisKit/Classes/CISDOBIpadService.h b/openbis-ipad/BisKit/Classes/CISDOBIpadService.h new file mode 100644 index 00000000000..71d2e19f421 --- /dev/null +++ b/openbis-ipad/BisKit/Classes/CISDOBIpadService.h @@ -0,0 +1,58 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBIpadService.h +// BisMac +// +// Created by cramakri on 27.08.12. +// +// + +#import <Foundation/Foundation.h> +#import "CISDOBShared.h" + +//! The error domain for errors in the IpadService layer +FOUNDATION_EXPORT NSString *const CISDOBIpadServiceErrorDomain; + +enum CISOBIpadServiceErrorCode { + kCISOBIpadServiceError_NoIpadServiceAvailable = 1, +}; + +/** + * A facade for accessing openBIS iPad UI module. + * + * All calls to the connection are made asynchronously. Thus, the calls all return async call objects which can be configured. + */ +@class CISDOBConnection, CISDOBAsyncCall; +@interface CISDOBIpadService : NSObject { +@private + // Internal State + BOOL _isLoggedIn; + NSDictionary* _ipadReadService; +} + +@property(readonly) CISDOBConnection *connection; + +//! Designated initializer. +- (id)initWithConnection:(CISDOBConnection *)connection; + +//! Log the user into the openBIS instance +- (CISDOBAsyncCall *)loginUser:(NSString *)user password:(NSString *)password; + +//! Get all entities from the openBIS ipad service. +- (CISDOBAsyncCall *)listAllEntities; + +@end diff --git a/openbis-ipad/BisKit/Classes/CISDOBIpadService.m b/openbis-ipad/BisKit/Classes/CISDOBIpadService.m new file mode 100644 index 00000000000..e299ee667d5 --- /dev/null +++ b/openbis-ipad/BisKit/Classes/CISDOBIpadService.m @@ -0,0 +1,145 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBIpadService.m +// BisMac +// +// Created by cramakri on 27.08.12. +// +// + +#import "CISDOBIpadService.h" +#import "CISDOBConnection.h" +#import "CISDOBAsyncCall.h" + +NSString *const CISDOBIpadServiceErrorDomain = @"CISDOBIpadServiceErrorDomain"; + +// Internal service call that includes the private state +@interface CISDOBIpadServiceCall : CISDOBAsyncCall { +@private + // Internal state + CISDOBAsyncCall *_connectionCall; +} +@property(weak) CISDOBIpadService *service; +@property(nonatomic) CISDOBAsyncCall *connectionCall; + +// Initialization +- (id)initWithService:(CISDOBIpadService *)service connectionCall:(CISDOBAsyncCall *)call; + +@end + + +@implementation CISDOBIpadService + +- (id)init +{ + self = [super init]; + if (self) { + // Initialization code here. + } + + return self; +} + +- (id)initWithConnection:(CISDOBConnection *)aConn +{ + self = [super init]; + if (!self) return nil; + + _connection = aConn; + _isLoggedIn = NO; + + return self; +} + +- (BOOL)isIpadSupported { return _ipadReadService != nil; } + +- (void)rememberIpadService:(NSArray *)services notifying:(CISDOBIpadServiceCall *)iPadCall +{ + for (NSDictionary *service in services) { + if ([@"ipad-read-service" isEqualToString: [service objectForKey: @"serviceKey"]]) { + _ipadReadService = service; + break; + } + } + + if (_ipadReadService == nil) { + NSString *errorMessage = @"The iPad service is not installed on the selected server"; + NSDictionary *userInfo = + [NSDictionary dictionaryWithObjectsAndKeys: errorMessage, NSLocalizedDescriptionKey, nil]; + NSError *error = [NSError errorWithDomain: CISDOBIpadServiceErrorDomain code: kCISOBIpadServiceError_NoIpadServiceAvailable userInfo: userInfo]; + if (iPadCall.fail) iPadCall.fail(error); + return; + } + + if (iPadCall.success) iPadCall.success(_connection.sessionToken); + +} + +- (void)determineIsIpadSupported:(CISDOBIpadServiceCall *)iPadCall +{ + CISDOBAsyncCall *connectionCall = [_connection listAggregationServices]; + iPadCall.connectionCall = connectionCall; + connectionCall.success = ^(id result) { [self rememberIpadService: result notifying: iPadCall]; }; + connectionCall.fail = ^(NSError *error) { if (iPadCall.fail) iPadCall.fail(error); }; + [connectionCall start]; +} + +- (CISDOBAsyncCall *)loginUser:(NSString *)user password:(NSString *)password +{ + CISDOBAsyncCall *connectionCall = [_connection loginUser: user password: password]; + CISDOBIpadServiceCall *iPadCall = [[CISDOBIpadServiceCall alloc] initWithService: self connectionCall: connectionCall]; + + connectionCall.success = ^(id result) { + // Note that we are logged in, but wait until we figure out if the ipad is supported + // to notify the client. + _isLoggedIn = YES; + [self determineIsIpadSupported: iPadCall]; + }; + connectionCall.fail = ^(NSError *error) { if (iPadCall.fail) iPadCall.fail(error); }; + + return iPadCall; +} + +- (CISDOBAsyncCall *)listAllEntities; +{ + CISDOBAsyncCall *call = [_connection + createReportFromDataStore: [_ipadReadService objectForKey: @"dataStoreCode"] + aggregationService: [_ipadReadService objectForKey: @"serviceKey"] + parameters: nil]; + return call; +} + +@end + +@implementation CISDOBIpadServiceCall + +- (id)initWithService:(CISDOBIpadService *)service connectionCall:(CISDOBAsyncCall *)call +{ + if (!(self = [super init])) return nil; + + _service = service; + _connectionCall = call; + + return self; +} + +- (void)start +{ + [_connectionCall start]; +} + +@end diff --git a/openbis-ipad/BisKit/Classes/CISDOBJsonRpcCall.h b/openbis-ipad/BisKit/Classes/CISDOBJsonRpcCall.h new file mode 100644 index 00000000000..a7506acbe45 --- /dev/null +++ b/openbis-ipad/BisKit/Classes/CISDOBJsonRpcCall.h @@ -0,0 +1,86 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBJsonRpcCall.h +// BisMac +// +// Created by cramakri on 27.08.12. +// +// + +#import <Foundation/Foundation.h> +#import "CISDOBShared.h" +#import "CISDOBAsyncCall.h" + + +/** + * \brief A call to a JSON-RPC service. + * + * The design is based on the jquery ajaxRequest object. + * This object makes a call to a JSON-RPC service and invokes + * the success or fail block as a result as appropriate. + * + * The fail block is called when there are problems either + * with the invocation/transport or if the json-rpc call resulted + * in an error. If the problem was with the transport, the error + * will probably be in the NSURLErrorDomain. If the call returned + * an error, the error will be in the CISOBJsonRpcErrorDomain domain. + * See the documentation of the CISOBJsonRpcErrorCode enum to see what is + * in the userInfo dictionary. + * + * If the call was successful and returned a non-error result, the success block is called. + * + * All properties are expected to be non-nil before start is called, + * unless it is nil values are explicitly allowed. In particular, success, and fail are expected to be non-nil. + */ +@interface CISDOBJsonRpcCall : CISDOBAsyncCall { +@private + // Exposed state + NSURL *_url; + NSString *_method; + NSArray *_params; + NSTimeInterval _timeoutInterval; + id _delegate; + + // Internal state + NSMutableData *_responseData; + NSURLConnection *_connection; +} + +// JSON-RPC +@property(strong) NSURL *url; //!< The URL that implements the JSON-RPC service +@property(strong) NSString *method; //!< The method to call +@property(strong) NSArray *params; //!< The method parameters + +// Configuration +@property(assign) NSTimeInterval timeoutInterval; //!< The amount of time to wait for a response +@property(strong) id delegate; //!< The delegate to receive progress notifications. Can be nil. + +// Actions +- (void)start; //!< Make the JSON-RPC call (asynchronously). + +@end + +// +//! The interface that delegates implement +// +@interface NSObject (CISDOBJsonRpcCallDelegate) + +//! Called when the call is sent over https to a server with a self-signed certificate. +//! If the host can be trusted, the call will continue, otherwise it will fail +- (BOOL)jsonRpcCall:(CISDOBJsonRpcCall *)call canTrustHost:(NSString *)host; + +@end diff --git a/openbis-ipad/BisKit/Classes/CISDOBJsonRpcCall.m b/openbis-ipad/BisKit/Classes/CISDOBJsonRpcCall.m new file mode 100644 index 00000000000..d533292eff7 --- /dev/null +++ b/openbis-ipad/BisKit/Classes/CISDOBJsonRpcCall.m @@ -0,0 +1,202 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBJsonRpcCall.m +// BisMac +// +// Created by cramakri on 27.08.12. +// +// + +#import "CISDOBJsonRpcCall.h" + +#define SHOULD_CALL_DELEGATE_SELECTOR(_selector) (_delegate != nil && [_delegate respondsToSelector: @selector(_selector)]) + +NSString *const CISOBJsonRpcErrorDomain = @"CISOBJsonRpcErrorDomain"; +NSString *const CISOBJsonRpcErrorObjectKey = @"CISOBJsonRpcErrorObjectKey"; +NSString *const CISOBJsonRpcResponseObjectKey = @"CISOBJsonRpcResponseObjectKey"; + +@interface CISDOBJsonRpcCall (CISDOBJsonRpcCallPrivate) + +//! Call the failure block with an error that the connection could not be created +- (void)couldNotCreateConnection; + +//! Take the parameters and convert them into the body of the http invocation +- (NSData *)httpBody; + +@end + + +@implementation CISDOBJsonRpcCall + +- (id)init +{ + if (!(self = [super init])) return nil; + + // Default timeout interval to 60s + _timeoutInterval = 60.0; + _responseData = [[NSMutableData alloc] init]; + + return self; +} + +- (void)start +{ + // TODO: Validate the parameters and invoke the fail block if the parameters are not properly filled in. + NSMutableURLRequest *request = + [NSMutableURLRequest requestWithURL: self.url cachePolicy: NSURLRequestReloadIgnoringLocalCacheData timeoutInterval: self.timeoutInterval]; + + // Prepare the request + NSData* httpBody = [self httpBody]; + if (!httpBody) { + // The fail block has already been called + return; + } + + [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; + [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; + [request setHTTPMethod:@"POST"]; + [request setValue: [NSString stringWithFormat:@"%li", [httpBody length]] forHTTPHeaderField:@"Content-Legth"]; + [request setHTTPBody: httpBody]; + + // Check that the connection can be created + if (![NSURLConnection canHandleRequest: request]) { + [self couldNotCreateConnection]; + return; + } + + _connection = + [NSURLConnection connectionWithRequest: request delegate: self]; + + if (!_connection) { + [self couldNotCreateConnection]; + return; + } + +} + +- (void)couldNotCreateConnection +{ + NSDictionary *userInfo = + [NSDictionary dictionaryWithObjectsAndKeys: @"Could not connect to server", NSLocalizedDescriptionKey, nil]; + NSError *error = [NSError errorWithDomain: CISOBJsonRpcErrorDomain code: kCISOBJsonRpcError_CouldNotConnectToServer userInfo: userInfo]; + _fail(error); +} + +- (NSData *)httpBody +{ + NSDictionary *bodyDict = + [NSDictionary dictionaryWithObjectsAndKeys: + _method, @"method", + _params, @"params", + [NSNumber numberWithInt: 1], @"id", + @"2.0", @"version", + nil]; + NSError *error; + NSData *body = [NSJSONSerialization dataWithJSONObject: bodyDict options: 0 error: &error]; + if (!body) { + _fail(error); + } + + return body; +} + +@end + +@implementation CISDOBJsonRpcCall (NSURLConnectionDelegate) + +- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace +{ + return [protectionSpace.authenticationMethod isEqualToString: NSURLAuthenticationMethodServerTrust]; +} + +- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge +{ + if ([challenge.protectionSpace.authenticationMethod isEqualToString: NSURLAuthenticationMethodServerTrust]) + { + if (SHOULD_CALL_DELEGATE_SELECTOR(jsonRpcCall:canTrustHost:)) + { + // Tell the connection to trust this host + NSURLCredential *credential = [NSURLCredential credentialForTrust: challenge.protectionSpace.serverTrust]; + [challenge.sender useCredential: credential forAuthenticationChallenge: challenge]; + } + } + [challenge.sender continueWithoutCredentialForAuthenticationChallenge: challenge]; +} + +- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response +{ + [_responseData setLength: 0]; +} + +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data +{ + [_responseData appendData: data]; +} + + +- (void)handleResponseDictionary:(NSDictionary *)response +{ + // Extract the error or the result + NSDictionary *errorDict = [response objectForKey: @"error"]; + id result = [response objectForKey: @"result"]; + if (errorDict) { + NSString *errorMessage = [errorDict objectForKey: @"message"]; + NSDictionary *userInfo = + [NSDictionary dictionaryWithObjectsAndKeys: + errorMessage, NSLocalizedDescriptionKey, + errorDict, CISOBJsonRpcErrorObjectKey, + response, CISOBJsonRpcResponseObjectKey, + nil]; + NSError *error = [NSError errorWithDomain: CISOBJsonRpcErrorDomain code: kCISOBJsonRpcError_CallReturnedError userInfo: userInfo]; + _fail(error); + } else if (result && _success) { + _success(result); + } else { + NSDictionary *userInfo = + [NSDictionary dictionaryWithObjectsAndKeys: + @"The JSON-RPC response does not match the expected structure", NSLocalizedDescriptionKey, + response, CISOBJsonRpcResponseObjectKey, + nil]; + NSError *error = [NSError errorWithDomain: CISOBJsonRpcErrorDomain code: kCISOBJsonRpcError_UnknownResponse userInfo: userInfo]; + _fail(error); + } + +} +- (void)connectionDidFinishLoading:(NSURLConnection *)aConnection +{ + // Parse the data and call the appropriate block + NSError *error; + id response = [NSJSONSerialization JSONObjectWithData: _responseData options: 0 error: &error]; + if (!response && _fail) { + // Oops, couldn't parse the data -- call the fail block + _fail(error); + } else { + [self handleResponseDictionary: response]; + } + + _connection = nil; +} + + +- (void)connection:(NSURLConnection *)aConnection didFailWithError:(NSError *)error +{ + if (_fail) _fail(error); + _connection = nil; +} + + +@end diff --git a/openbis-ipad/BisKit/Classes/CISDOBShared.h b/openbis-ipad/BisKit/Classes/CISDOBShared.h new file mode 100644 index 00000000000..c87bfca93d2 --- /dev/null +++ b/openbis-ipad/BisKit/Classes/CISDOBShared.h @@ -0,0 +1,60 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBShared.h +// BisMac +// +// Created by cramakri on 28.08.12. +// +// + +// +// Shared declarations. +// + +//! A block that is invoked when the call succeeds +typedef void (^SuccessBlock)(id result); + +//! A block that is invoked when the call fails +typedef void (^FailBlock)(NSError* error); + +// +// Errors +// + +//! The error domain for errors in the JSON-RPC layer +FOUNDATION_EXPORT NSString *const CISOBJsonRpcErrorDomain; + +//! The key in the error userInfo dictionary that contains the JSON-RPC error object +FOUNDATION_EXPORT NSString *const CISOBJsonRpcErrorObjectKey; + +//! The key in the error userInfo dictionary that contains the JSON-RPC response object +FOUNDATION_EXPORT NSString *const CISOBJsonRpcResponseObjectKey; + +enum CISOBJsonRpcErrorCode { + kCISOBJsonRpcError_CouldNotConnectToServer = 1, + kCISOBJsonRpcError_CouldNotSerializeRequestToJson = 2, + kCISOBJsonRpcError_CouldNotParseResponse = 3, + + //! The userInfo dictionary of the error includes the key + //! CISOBJsonRpcResponseObjectKey -> the entire response object + kCISOBJsonRpcError_UnknownResponse = 4, + + //! The userInfo dictionary of the error includes the keys + //! CISOBJsonRpcResponseObjectKey -> the entire response object + //! CISOBJsonRpcErrorObjectKey -> the error object + kCISOBJsonRpcError_CallReturnedError = 5, +}; \ No newline at end of file diff --git a/openbis-ipad/BisKit/Tests/CISDOBAsyncTest.h b/openbis-ipad/BisKit/Tests/CISDOBAsyncTest.h new file mode 100644 index 00000000000..59b0237c404 --- /dev/null +++ b/openbis-ipad/BisKit/Tests/CISDOBAsyncTest.h @@ -0,0 +1,31 @@ +// +// CISDOBAsyncTest.h +// +// +// Created by Ramakrishnan Chandrasekhar on 9/26/12. +// +// + +#import <SenTestingKit/SenTestingKit.h> + +/** + * \brief Abstract superclass for tests that use asynchronous calls. + */ +@class CISDOBAsyncCall; +@interface CISDOBAsyncTest : SenTestCase { +@protected + BOOL _callCompleted; + BOOL _callSucceeded; + id _callResult; + NSError *_callError; +} + +// Utility methods for subclasses to use +- (void)configureCall:(CISDOBAsyncCall *)call; +- (void)waitSeconds:(int)seconds forCallToComplete:(CISDOBAsyncCall *)call; + +@end + +// Useful helper functions +NSString* GetDefaultUserName(); //<! Return the username used in tests +NSString* GetDefaultUserPassword(); //<! Return the password used in tests diff --git a/openbis-ipad/BisKit/Tests/CISDOBAsyncTest.m b/openbis-ipad/BisKit/Tests/CISDOBAsyncTest.m new file mode 100644 index 00000000000..ac3a306fcaf --- /dev/null +++ b/openbis-ipad/BisKit/Tests/CISDOBAsyncTest.m @@ -0,0 +1,50 @@ +// +// CISDOBAsyncTest.m +// +// +// Created by Ramakrishnan Chandrasekhar on 9/26/12. +// +// + +#import "CISDOBAsyncTest.h" +#import "CISDOBAsyncCall.h" + +NSString* GetDefaultUserName() { return @"admin"; } +NSString* GetDefaultUserPassword() { return @"password"; } + +@implementation CISDOBAsyncTest + +- (void)waitSeconds:(int)seconds forCallToComplete:(CISDOBAsyncCall *)call +{ + _callCompleted = NO; + _callSucceeded = NO; + + [call start]; + + for(int i = 0; i < seconds && !_callCompleted; ++i) { + // Run the runloop until an answer is returned + CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1, 0); + } + STAssertTrue(_callCompleted, @"Call did not complete"); +} + +- (void)configureCall:(CISDOBAsyncCall *)call +{ + SuccessBlock success = ^(id result) { + _callCompleted = YES, _callSucceeded = YES; + _callError = nil; + if (_callResult) [_callResult release]; + _callResult = [result retain]; + }; + + FailBlock fail = ^(NSError *error) { + _callCompleted = YES, _callSucceeded = NO; + _callResult = nil; + if (_callError) [_callError release]; + _callError = [error retain]; + }; + call.success = success; + call.fail = fail; +} + +@end diff --git a/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.h b/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.h new file mode 100644 index 00000000000..b0c04e093da --- /dev/null +++ b/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.h @@ -0,0 +1,36 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBIpadServiceTest.h +// BisMac +// +// Created by Ramakrishnan Chandrasekhar on 9/26/12. +// +// + +#import "CISDOBAsyncTest.h" +#import "CISDOBIpadService.h" + +/** + * Test the ipad service. This test is designed to run against an instance + * of openBIS that has the ipad-ui module installed. + */ +@interface CISDOBIpadServiceTest : CISDOBAsyncTest { +@private + CISDOBIpadService *_service; +} + +@end diff --git a/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.m b/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.m new file mode 100644 index 00000000000..905589cbbb8 --- /dev/null +++ b/openbis-ipad/BisKit/Tests/CISDOBIpadServiceTest.m @@ -0,0 +1,70 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBIpadServiceTest.m +// BisMac +// +// Created by Ramakrishnan Chandrasekhar on 9/26/12. +// +// + +#import "CISDOBIpadServiceTest.h" +#import "CISDOBConnection.h" +#import "CISDOBIpadService.h" + + +@implementation CISDOBIpadServiceTest + +- (void)setUp +{ + [super setUp]; + NSURL *url = [NSURL URLWithString: @"https://localhost:8443"]; + CISDOBLiveConnection *connection = [[CISDOBLiveConnection alloc] initWithUrl: url trusted: YES]; + _service = [[CISDOBIpadService alloc] initWithConnection: connection]; + [connection release]; +} + +- (void)tearDown +{ + // Tear-down code here. + [_service release], _service = nil; + [super tearDown]; +} + +- (void)configureAndRunCallSynchronously:(CISDOBAsyncCall *)call +{ + [self configureCall: call]; + + // The ipad service may make multiple calls, so take that into account. + int waitTime = ((int) _service.connection.timeoutInterval) * 2; + [self waitSeconds: waitTime forCallToComplete: call]; +} + +- (void)testListAllEntities +{ + CISDOBAsyncCall *call; + call = [_service loginUser: GetDefaultUserName() password: GetDefaultUserPassword()]; + [self configureAndRunCallSynchronously: call]; + +// call = [_service listAllEntities]; +// [self configureAndRunCallSynchronously: call]; + +// STAssertNotNil(_callResult, @"The iPad service should have returned some entities."); +// NSArray *rows = [_callResult objectForKey: @"rows"]; +// STAssertTrue([rows count] > 0, @"The Pad service should have returned some entities."); +} + +@end diff --git a/openbis-ipad/BisKit/Tests/CISDOBJsonRpcCallTest.h b/openbis-ipad/BisKit/Tests/CISDOBJsonRpcCallTest.h new file mode 100644 index 00000000000..15b0d3f3d68 --- /dev/null +++ b/openbis-ipad/BisKit/Tests/CISDOBJsonRpcCallTest.h @@ -0,0 +1,42 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBJsonRpcCallTest.h +// BisMac +// +// Created by cramakri on 28.08.12. +// +// + +#import "CISDOBAsyncTest.h" +#import "CISDOBJsonRpcCall.h" + +@interface CISDOBJsonRpcCallTest : CISDOBAsyncTest { +@protected + CISDOBJsonRpcCall *_jsonRpcCall; + NSUInteger _initialRetainCount; + +} + +@end + +@interface CISDOBJsonRpcCallGenericTest : CISDOBJsonRpcCallTest + +@end + +@interface CISDOBJsonRpcCallOpenBisTest : CISDOBJsonRpcCallTest + +@end diff --git a/openbis-ipad/BisKit/Tests/CISDOBJsonRpcCallTest.m b/openbis-ipad/BisKit/Tests/CISDOBJsonRpcCallTest.m new file mode 100644 index 00000000000..e5dda25eeec --- /dev/null +++ b/openbis-ipad/BisKit/Tests/CISDOBJsonRpcCallTest.m @@ -0,0 +1,187 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBJsonRpcCallTest.m +// BisMac +// +// Created by cramakri on 28.08.12. +// +// + +#import "CISDOBJsonRpcCallTest.h" +#import "CISDOBJsonRpcCall.h" + + +@implementation CISDOBJsonRpcCallTest + +- (void)setUp +{ + [super setUp]; + + _initialRetainCount = [self retainCount]; + + _jsonRpcCall = [[CISDOBJsonRpcCall alloc] init]; + _jsonRpcCall.timeoutInterval = 10.0; + _jsonRpcCall.delegate = self; + + [self configureCall: _jsonRpcCall]; +} + +- (void)tearDown +{ + // Check that we are not leaking memory + STAssertEquals([_jsonRpcCall retainCount], (NSUInteger) 1, @"jsonRpcCall retain count : %i", [_jsonRpcCall retainCount]); + + // Don't check the retain counts of NSNumbers -- they are strange + if (nil != _callResult && ![_callResult isKindOfClass: [NSNumber class]]) { + STAssertEquals([_callResult retainCount], (NSUInteger) 1, @"callResult retain count : %i", [_callResult retainCount]); + } + + if (nil != _callError) { + STAssertEquals([_callError retainCount], (NSUInteger) 1, @"callError retain count : %i", [_callError retainCount]); + } + + // Tear-down code here. + [_jsonRpcCall release], _jsonRpcCall = nil; + [_callResult release], _callResult = nil; + [_callError release], _callError = nil; + [super tearDown]; + + STAssertEquals([self retainCount], _initialRetainCount, @"self retain count : %i", [self retainCount]); +} + +- (void)waitForCallToComplete +{ + int waitTime = ((int) _jsonRpcCall.timeoutInterval) + 1; + [self waitSeconds: waitTime forCallToComplete: _jsonRpcCall]; +} + +- (void)assertErrorWasNetworkUnreachable +{ + STAssertEqualObjects([_callError domain] , NSURLErrorDomain, @"If there was an error, it should have been a network error : %@", _callError); + + NSInteger errorCode = [_callError code]; + // -1009 means no internet connection, -1004 is could not connect to server + STAssertTrue(errorCode == -1009 || errorCode == -1004, @"If there was an error, it should have been a network error, not %li : %@", errorCode, _callError); +} + +@end + +@implementation CISDOBJsonRpcCallTest (CISDOBJsonRpcCallDelegate) + +- (BOOL)jsonRpcCall:(CISDOBJsonRpcCall *)call canTrustHost:(NSString *)host +{ + // Allow local self-signed certificates + return [host isEqualToString: @"localhost"]; +} + +@end + +@implementation CISDOBJsonRpcCallGenericTest + +- (void)setUp +{ + [super setUp]; + _jsonRpcCall.url = [NSURL URLWithString: @"http://www.raboof.com/projects/jayrock/demo.ashx"]; + _jsonRpcCall.method = @"add"; +} + +- (void)testJsonRpcCall +{ + + _jsonRpcCall.params = [NSArray arrayWithObjects: @"1", @"2", nil]; + [self waitForCallToComplete]; + + if (_callSucceeded) { + STAssertEqualObjects(_callResult, [NSNumber numberWithInt: 3], @"1 + 2 = 3"); + } else { + [self assertErrorWasNetworkUnreachable]; + } + +} + +- (void)testJsonRpcCallWithError +{ + _jsonRpcCall.params = [NSArray arrayWithObjects: @"a", @"2", nil]; + [self waitForCallToComplete]; + + STAssertFalse(_callSucceeded, @"The call should have resulted in an error %@", _callResult); + if ([[_callError domain] isEqualToString: NSURLErrorDomain]) { + [self assertErrorWasNetworkUnreachable]; + } else { + STAssertEqualObjects([_callError domain], CISOBJsonRpcErrorDomain, @"The call should have resulted with an error in the JsonRpcErrorDomain : %@", _callError); + STAssertEquals([_callError code], (NSInteger) kCISOBJsonRpcError_CallReturnedError, @"The error code should equal kCISOBJsonRpcError_CallReturnedError : %@", _callError); + NSString *errorDesc = [[_callError userInfo] objectForKey: NSLocalizedDescriptionKey]; + STAssertEqualObjects(errorDesc, @"Input string was not in a correct format.", @"%@", errorDesc); + } +} + +@end + +@implementation CISDOBJsonRpcCallOpenBisTest + +- (void)setUp +{ + [super setUp]; + // This should be an instance of openBIS that includes the ipad core-plugin. + _jsonRpcCall.url = [NSURL URLWithString: @"https://localhost:8443/openbis/openbis/rmi-general-information-v1.json"]; +} + + +- (void)assertDataSetTypeUnknownExists:(NSArray *)dataSetTypes +{ + BOOL foundUnknown = NO; + for (NSDictionary *dataSetType in dataSetTypes) { + if ([@"UNKNOWN" isEqualToString: [dataSetType objectForKey: @"code"]]) { + foundUnknown = YES; + break; + } + } + + STAssertTrue(foundUnknown, @"There should be a data set type with code UNKNOWN. Types: %@", dataSetTypes); +} + +- (void)testOpenBisCalls +{ + + _jsonRpcCall.method = @"tryToAuthenticateForAllServices"; + _jsonRpcCall.params = [NSArray arrayWithObjects: @"admin", @"password", nil]; + [self waitForCallToComplete]; + + NSString *sessionToken = nil; + if (_callSucceeded) { + sessionToken = [_callResult retain]; + NSRange adminRange = [_callResult rangeOfString: @"admin-"]; + STAssertTrue(adminRange.length > 0, @"Result should match admin-* : %@", _callResult); + STAssertEquals(adminRange.location, (NSUInteger) 0, @"Result should match admin-* : %@", _callResult); + } else { + [self assertErrorWasNetworkUnreachable]; + // Stop doing any more tests if the server is not reachable + return; + } + + _jsonRpcCall.method = @"listDataSetTypes"; + _jsonRpcCall.params = [NSArray arrayWithObjects: sessionToken, nil]; + [self waitForCallToComplete]; + + STAssertTrue(_callSucceeded, @"listDataSetTypes should have succeeded"); + STAssertTrue([_callResult count] > 0, @"The server should have at least 1 data set type"); + [self assertDataSetTypeUnknownExists: _callResult]; + + [sessionToken release]; +} + +@end diff --git a/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.h b/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.h new file mode 100644 index 00000000000..1f759bbbd3a --- /dev/null +++ b/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.h @@ -0,0 +1,37 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBLiveConnectionTest.h +// BisMac +// +// Created by cramakri on 19.09.12. +// +// + +#import "CISDOBAsyncTest.h" +#import "CISDOBConnection.h" + + +/** + * Test the live connection. This test is designed to run against an instance + * of openBIS that has the ipad-ui module installed. + */ +@interface CISDOBLiveConnectionTest : CISDOBAsyncTest { +@private + CISDOBLiveConnection *_connection; +} + +@end diff --git a/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.m b/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.m new file mode 100644 index 00000000000..a0834427297 --- /dev/null +++ b/openbis-ipad/BisKit/Tests/CISDOBLiveConnectionTest.m @@ -0,0 +1,95 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// CISDOBLive_connectionTest.m +// BisMac +// +// Created by cramakri on 19.09.12. +// +// + +#import "CISDOBLiveConnectionTest.h" +#import "CISDOBAsyncCall.h" + + +@implementation CISDOBLiveConnectionTest + +- (void)setUp +{ + [super setUp]; + NSURL *url = [NSURL URLWithString: @"https://localhost:8443"]; + _connection = [[CISDOBLiveConnection alloc] initWithUrl: url trusted: YES]; +} + +- (void)tearDown +{ + // Tear-down code here. + [_connection release], _connection = nil; + [super tearDown]; +} + +- (void)configureAndRunCallSynchronously:(CISDOBAsyncCall *)call +{ + [self configureCall: call]; + + int waitTime = ((int) _connection.timeoutInterval) + 1; + [self waitSeconds: waitTime forCallToComplete: call]; +} + +- (NSDictionary *)extractIpadService:(NSArray *)services +{ + for (NSDictionary *service in services) { + if ([@"ipad-read-service" isEqualToString: [service objectForKey: @"serviceKey"]]) { + return service; + } + } + + return nil; +} + +- (void)assertServiceDataRowIsParsable:(NSArray *)row +{ + // The only column we need to check is the properties column, which is the last one. + NSDictionary *jsonProperties = [row objectAtIndex: [row count] - 1]; + STAssertNotNil(jsonProperties, @"Properties should have been parsed"); +} + +- (void)testLoginAndListServices +{ + CISDOBAsyncCall *call; + call = [_connection loginUser: GetDefaultUserName() password: GetDefaultUserPassword()]; + [self configureAndRunCallSynchronously: call]; + + call = [_connection listAggregationServices]; + [self configureAndRunCallSynchronously: call]; + STAssertNotNil(_callResult, @"There should be some aggregation services on the server"); + NSDictionary *service = [self extractIpadService: _callResult]; + STAssertNotNil(service, @"There should be a service with key \"ipad-read-service\". Services: %@", _callResult); + + call = + [_connection + createReportFromDataStore: [service objectForKey: @"dataStoreCode"] + aggregationService: [service objectForKey: @"serviceKey"] + parameters: nil]; + [self configureAndRunCallSynchronously: call]; + STAssertNotNil(_callResult, @"The ipad-read-service should have returned some data."); + NSArray *rows = [_callResult objectForKey: @"rows"]; + STAssertTrue([rows count] > 0, @"The ipad-read-service should have returned some data."); + for (NSArray* row in rows) + [self assertServiceDataRowIsParsable: row]; +} + +@end diff --git a/openbis-ipad/BisKit/readme.md b/openbis-ipad/BisKit/readme.md new file mode 100644 index 00000000000..6a2a2414163 --- /dev/null +++ b/openbis-ipad/BisKit/readme.md @@ -0,0 +1,5 @@ + +Overview +======== + +BisKit is a framework for interacting with openBIS. diff --git a/openbis-ipad/BisMac.xcodeproj/project.pbxproj b/openbis-ipad/BisMac.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..70e22bebd04 --- /dev/null +++ b/openbis-ipad/BisMac.xcodeproj/project.pbxproj @@ -0,0 +1,596 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 3649C8AA15EBB2950019AC55 /* CISDOBConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 3649C8A915EBB2950019AC55 /* CISDOBConnection.m */; }; + 3649C8AE15EC17D80019AC55 /* CISDOBJsonRpcCall.m in Sources */ = {isa = PBXBuildFile; fileRef = 3649C8AD15EC17D80019AC55 /* CISDOBJsonRpcCall.m */; }; + 3649C8E315ED13540019AC55 /* CISDOBJsonRpcCallTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3649C8E215ED13540019AC55 /* CISDOBJsonRpcCallTest.m */; }; + 368077A515D0F78700843AD5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 368077A415D0F78700843AD5 /* Cocoa.framework */; }; + 368077AF15D0F78700843AD5 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 368077AD15D0F78700843AD5 /* InfoPlist.strings */; }; + 368077B215D0F78700843AD5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 368077B115D0F78700843AD5 /* main.m */; }; + 368077B515D0F78700843AD5 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 368077B315D0F78700843AD5 /* Credits.rtf */; }; + 368077B815D0F78700843AD5 /* BisMacDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 368077B715D0F78700843AD5 /* BisMacDocument.m */; }; + 368077BB15D0F78700843AD5 /* BisMacDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 368077B915D0F78700843AD5 /* BisMacDocument.xib */; }; + 368077BE15D0F78700843AD5 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 368077BC15D0F78700843AD5 /* MainMenu.xib */; }; + 368077C115D0F78700843AD5 /* BisMacDocument.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 368077BF15D0F78700843AD5 /* BisMacDocument.xcdatamodeld */; }; + 368077C815D0F78700843AD5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 368077A415D0F78700843AD5 /* Cocoa.framework */; }; + 368077D015D0F78700843AD5 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 368077CE15D0F78700843AD5 /* InfoPlist.strings */; }; + 368077D315D0F78700843AD5 /* BisMacTests.h in Resources */ = {isa = PBXBuildFile; fileRef = 368077D215D0F78700843AD5 /* BisMacTests.h */; }; + 368077D515D0F78700843AD5 /* BisMacTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 368077D415D0F78700843AD5 /* BisMacTests.m */; }; + 3680B1341611B5CE008BA207 /* CISDOBIpadService.m in Sources */ = {isa = PBXBuildFile; fileRef = 3680B1331611B5CE008BA207 /* CISDOBIpadService.m */; }; + 3680B13716120319008BA207 /* CISDOBAsyncCall.m in Sources */ = {isa = PBXBuildFile; fileRef = 3680B13616120319008BA207 /* CISDOBAsyncCall.m */; }; + 3680B13A1612E832008BA207 /* CISDOBIpadServiceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3680B1391612E832008BA207 /* CISDOBIpadServiceTest.m */; }; + 3680B13D1612E8B6008BA207 /* CISDOBAsyncTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 3680B13C1612E8B6008BA207 /* CISDOBAsyncTest.m */; }; + 3687CF5815DD4FE4009E3019 /* readme.md in Resources */ = {isa = PBXBuildFile; fileRef = 3687CF5715DD4FE4009E3019 /* readme.md */; }; + 36F108C6160A103E00D7B142 /* CISDOBLiveConnectionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 36F108C4160A04CA00D7B142 /* CISDOBLiveConnectionTest.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 368077C915D0F78700843AD5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3680779715D0F78600843AD5 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3680779F15D0F78700843AD5; + remoteInfo = BisMac; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3649C8A815EBB2950019AC55 /* CISDOBConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CISDOBConnection.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; + 3649C8A915EBB2950019AC55 /* CISDOBConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CISDOBConnection.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; + 3649C8AC15EC17D80019AC55 /* CISDOBJsonRpcCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBJsonRpcCall.h; sourceTree = "<group>"; }; + 3649C8AD15EC17D80019AC55 /* CISDOBJsonRpcCall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CISDOBJsonRpcCall.m; sourceTree = "<group>"; }; + 3649C8AF15ECA4EA0019AC55 /* CISDOBShared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBShared.h; sourceTree = "<group>"; }; + 3649C8E115ED13540019AC55 /* CISDOBJsonRpcCallTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBJsonRpcCallTest.h; sourceTree = "<group>"; }; + 3649C8E215ED13540019AC55 /* CISDOBJsonRpcCallTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CISDOBJsonRpcCallTest.m; sourceTree = "<group>"; }; + 368077A015D0F78700843AD5 /* BisMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BisMac.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 368077A415D0F78700843AD5 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 368077A715D0F78700843AD5 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 368077A815D0F78700843AD5 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 368077A915D0F78700843AD5 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 368077AC15D0F78700843AD5 /* BisMac-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BisMac-Info.plist"; sourceTree = "<group>"; }; + 368077AE15D0F78700843AD5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; + 368077B015D0F78700843AD5 /* BisMac-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BisMac-Prefix.pch"; sourceTree = "<group>"; }; + 368077B115D0F78700843AD5 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; + 368077B415D0F78700843AD5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; }; + 368077B615D0F78700843AD5 /* BisMacDocument.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BisMacDocument.h; sourceTree = "<group>"; }; + 368077B715D0F78700843AD5 /* BisMacDocument.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BisMacDocument.m; sourceTree = "<group>"; }; + 368077BA15D0F78700843AD5 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/BisMacDocument.xib; sourceTree = "<group>"; }; + 368077BD15D0F78700843AD5 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; }; + 368077C015D0F78700843AD5 /* BisMacDocument.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = BisMacDocument.xcdatamodel; sourceTree = "<group>"; }; + 368077C715D0F78700843AD5 /* BisMacTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BisMacTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + 368077CD15D0F78700843AD5 /* BisMacTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BisMacTests-Info.plist"; sourceTree = "<group>"; }; + 368077CF15D0F78700843AD5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; + 368077D115D0F78700843AD5 /* BisMacTests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BisMacTests-Prefix.pch"; sourceTree = "<group>"; }; + 368077D215D0F78700843AD5 /* BisMacTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BisMacTests.h; sourceTree = "<group>"; }; + 368077D415D0F78700843AD5 /* BisMacTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BisMacTests.m; sourceTree = "<group>"; }; + 368077DE15D0F78700843AD5 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; }; + 368077E015D0F78700843AD5 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; + 368077E215D0F78700843AD5 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 368077E415D0F78700843AD5 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 3680B1321611B5CE008BA207 /* CISDOBIpadService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBIpadService.h; sourceTree = "<group>"; }; + 3680B1331611B5CE008BA207 /* CISDOBIpadService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CISDOBIpadService.m; sourceTree = "<group>"; }; + 3680B13516120319008BA207 /* CISDOBAsyncCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBAsyncCall.h; sourceTree = "<group>"; }; + 3680B13616120319008BA207 /* CISDOBAsyncCall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CISDOBAsyncCall.m; sourceTree = "<group>"; }; + 3680B1381612E832008BA207 /* CISDOBIpadServiceTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBIpadServiceTest.h; sourceTree = "<group>"; }; + 3680B1391612E832008BA207 /* CISDOBIpadServiceTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CISDOBIpadServiceTest.m; sourceTree = "<group>"; }; + 3680B13B1612E8B6008BA207 /* CISDOBAsyncTest.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBAsyncTest.h; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; wrapsLines = 1; }; + 3680B13C1612E8B6008BA207 /* CISDOBAsyncTest.m */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = CISDOBAsyncTest.m; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; wrapsLines = 1; }; + 3687CF5715DD4FE4009E3019 /* readme.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = readme.md; sourceTree = "<group>"; }; + 36F108C3160A04CA00D7B142 /* CISDOBLiveConnectionTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CISDOBLiveConnectionTest.h; sourceTree = "<group>"; }; + 36F108C4160A04CA00D7B142 /* CISDOBLiveConnectionTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = CISDOBLiveConnectionTest.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3680779D15D0F78700843AD5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 368077A515D0F78700843AD5 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 368077C315D0F78700843AD5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 368077C815D0F78700843AD5 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3649C8B015ECAB2A0019AC55 /* ThirdParty */ = { + isa = PBXGroup; + children = ( + ); + path = ThirdParty; + sourceTree = "<group>"; + }; + 3680779515D0F78600843AD5 = { + isa = PBXGroup; + children = ( + 3687CF5515DD4FA1009E3019 /* BisKit */, + 368077AA15D0F78700843AD5 /* BisMac */, + 368077CB15D0F78700843AD5 /* BisMacTests */, + 368077A315D0F78700843AD5 /* Frameworks */, + 368077A115D0F78700843AD5 /* Products */, + ); + sourceTree = "<group>"; + }; + 368077A115D0F78700843AD5 /* Products */ = { + isa = PBXGroup; + children = ( + 368077A015D0F78700843AD5 /* BisMac.app */, + 368077C715D0F78700843AD5 /* BisMacTests.octest */, + ); + name = Products; + sourceTree = "<group>"; + }; + 368077A315D0F78700843AD5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 368077A415D0F78700843AD5 /* Cocoa.framework */, + 368077DE15D0F78700843AD5 /* CoreServices.framework */, + 368077E015D0F78700843AD5 /* CoreFoundation.framework */, + 368077E215D0F78700843AD5 /* CoreData.framework */, + 368077E415D0F78700843AD5 /* Foundation.framework */, + 368077A615D0F78700843AD5 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = "<group>"; + }; + 368077A615D0F78700843AD5 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 368077A715D0F78700843AD5 /* AppKit.framework */, + 368077A815D0F78700843AD5 /* CoreData.framework */, + 368077A915D0F78700843AD5 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = "<group>"; + }; + 368077AA15D0F78700843AD5 /* BisMac */ = { + isa = PBXGroup; + children = ( + 368077B615D0F78700843AD5 /* BisMacDocument.h */, + 368077B715D0F78700843AD5 /* BisMacDocument.m */, + 368077B915D0F78700843AD5 /* BisMacDocument.xib */, + 368077BC15D0F78700843AD5 /* MainMenu.xib */, + 368077BF15D0F78700843AD5 /* BisMacDocument.xcdatamodeld */, + 368077AB15D0F78700843AD5 /* Supporting Files */, + ); + path = BisMac; + sourceTree = "<group>"; + }; + 368077AB15D0F78700843AD5 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 368077AC15D0F78700843AD5 /* BisMac-Info.plist */, + 368077AD15D0F78700843AD5 /* InfoPlist.strings */, + 368077B015D0F78700843AD5 /* BisMac-Prefix.pch */, + 368077B115D0F78700843AD5 /* main.m */, + 368077B315D0F78700843AD5 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = "<group>"; + }; + 368077CB15D0F78700843AD5 /* BisMacTests */ = { + isa = PBXGroup; + children = ( + 368077D215D0F78700843AD5 /* BisMacTests.h */, + 368077D415D0F78700843AD5 /* BisMacTests.m */, + 368077CC15D0F78700843AD5 /* Supporting Files */, + ); + path = BisMacTests; + sourceTree = "<group>"; + }; + 368077CC15D0F78700843AD5 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 368077CD15D0F78700843AD5 /* BisMacTests-Info.plist */, + 368077CE15D0F78700843AD5 /* InfoPlist.strings */, + 368077D115D0F78700843AD5 /* BisMacTests-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = "<group>"; + }; + 3687CF5515DD4FA1009E3019 /* BisKit */ = { + isa = PBXGroup; + children = ( + 3649C8B015ECAB2A0019AC55 /* ThirdParty */, + 3687CF5915DD50AE009E3019 /* Classes */, + 3687CF5A15DD50BF009E3019 /* Tests */, + 3687CF5715DD4FE4009E3019 /* readme.md */, + ); + path = BisKit; + sourceTree = "<group>"; + }; + 3687CF5915DD50AE009E3019 /* Classes */ = { + isa = PBXGroup; + children = ( + 3649C8AF15ECA4EA0019AC55 /* CISDOBShared.h */, + 3680B13516120319008BA207 /* CISDOBAsyncCall.h */, + 3680B13616120319008BA207 /* CISDOBAsyncCall.m */, + 3649C8A815EBB2950019AC55 /* CISDOBConnection.h */, + 3649C8A915EBB2950019AC55 /* CISDOBConnection.m */, + 3649C8AC15EC17D80019AC55 /* CISDOBJsonRpcCall.h */, + 3649C8AD15EC17D80019AC55 /* CISDOBJsonRpcCall.m */, + 3680B1321611B5CE008BA207 /* CISDOBIpadService.h */, + 3680B1331611B5CE008BA207 /* CISDOBIpadService.m */, + ); + path = Classes; + sourceTree = "<group>"; + }; + 3687CF5A15DD50BF009E3019 /* Tests */ = { + isa = PBXGroup; + children = ( + 3680B13B1612E8B6008BA207 /* CISDOBAsyncTest.h */, + 3680B13C1612E8B6008BA207 /* CISDOBAsyncTest.m */, + 3649C8E115ED13540019AC55 /* CISDOBJsonRpcCallTest.h */, + 3649C8E215ED13540019AC55 /* CISDOBJsonRpcCallTest.m */, + 36F108C3160A04CA00D7B142 /* CISDOBLiveConnectionTest.h */, + 36F108C4160A04CA00D7B142 /* CISDOBLiveConnectionTest.m */, + 3680B1381612E832008BA207 /* CISDOBIpadServiceTest.h */, + 3680B1391612E832008BA207 /* CISDOBIpadServiceTest.m */, + ); + path = Tests; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3680779F15D0F78700843AD5 /* BisMac */ = { + isa = PBXNativeTarget; + buildConfigurationList = 368077FA15D0F78700843AD5 /* Build configuration list for PBXNativeTarget "BisMac" */; + buildPhases = ( + 3680779C15D0F78700843AD5 /* Sources */, + 3680779D15D0F78700843AD5 /* Frameworks */, + 3680779E15D0F78700843AD5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = BisMac; + productName = BisMac; + productReference = 368077A015D0F78700843AD5 /* BisMac.app */; + productType = "com.apple.product-type.application"; + }; + 368077C615D0F78700843AD5 /* BisMacTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 368077FD15D0F78700843AD5 /* Build configuration list for PBXNativeTarget "BisMacTests" */; + buildPhases = ( + 368077C215D0F78700843AD5 /* Sources */, + 368077C315D0F78700843AD5 /* Frameworks */, + 368077C415D0F78700843AD5 /* Resources */, + 368077C515D0F78700843AD5 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 368077CA15D0F78700843AD5 /* PBXTargetDependency */, + ); + name = BisMacTests; + productName = BisMacTests; + productReference = 368077C715D0F78700843AD5 /* BisMacTests.octest */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3680779715D0F78600843AD5 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0450; + }; + buildConfigurationList = 3680779A15D0F78600843AD5 /* Build configuration list for PBXProject "BisMac" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 3680779515D0F78600843AD5; + productRefGroup = 368077A115D0F78700843AD5 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3680779F15D0F78700843AD5 /* BisMac */, + 368077C615D0F78700843AD5 /* BisMacTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3680779E15D0F78700843AD5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 368077AF15D0F78700843AD5 /* InfoPlist.strings in Resources */, + 368077B515D0F78700843AD5 /* Credits.rtf in Resources */, + 368077BB15D0F78700843AD5 /* BisMacDocument.xib in Resources */, + 368077BE15D0F78700843AD5 /* MainMenu.xib in Resources */, + 3687CF5815DD4FE4009E3019 /* readme.md in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 368077C415D0F78700843AD5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 368077D015D0F78700843AD5 /* InfoPlist.strings in Resources */, + 368077D315D0F78700843AD5 /* BisMacTests.h in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 368077C515D0F78700843AD5 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3680779C15D0F78700843AD5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 368077B215D0F78700843AD5 /* main.m in Sources */, + 368077B815D0F78700843AD5 /* BisMacDocument.m in Sources */, + 368077C115D0F78700843AD5 /* BisMacDocument.xcdatamodeld in Sources */, + 3649C8AA15EBB2950019AC55 /* CISDOBConnection.m in Sources */, + 3649C8AE15EC17D80019AC55 /* CISDOBJsonRpcCall.m in Sources */, + 3680B1341611B5CE008BA207 /* CISDOBIpadService.m in Sources */, + 3680B13716120319008BA207 /* CISDOBAsyncCall.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 368077C215D0F78700843AD5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 36F108C6160A103E00D7B142 /* CISDOBLiveConnectionTest.m in Sources */, + 368077D515D0F78700843AD5 /* BisMacTests.m in Sources */, + 3649C8E315ED13540019AC55 /* CISDOBJsonRpcCallTest.m in Sources */, + 3680B13A1612E832008BA207 /* CISDOBIpadServiceTest.m in Sources */, + 3680B13D1612E8B6008BA207 /* CISDOBAsyncTest.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 368077CA15D0F78700843AD5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3680779F15D0F78700843AD5 /* BisMac */; + targetProxy = 368077C915D0F78700843AD5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 368077AD15D0F78700843AD5 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 368077AE15D0F78700843AD5 /* en */, + ); + name = InfoPlist.strings; + sourceTree = "<group>"; + }; + 368077B315D0F78700843AD5 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 368077B415D0F78700843AD5 /* en */, + ); + name = Credits.rtf; + sourceTree = "<group>"; + }; + 368077B915D0F78700843AD5 /* BisMacDocument.xib */ = { + isa = PBXVariantGroup; + children = ( + 368077BA15D0F78700843AD5 /* en */, + ); + name = BisMacDocument.xib; + sourceTree = "<group>"; + }; + 368077BC15D0F78700843AD5 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 368077BD15D0F78700843AD5 /* en */, + ); + name = MainMenu.xib; + sourceTree = "<group>"; + }; + 368077CE15D0F78700843AD5 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 368077CF15D0F78700843AD5 /* en */, + ); + name = InfoPlist.strings; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 368077F515D0F78700843AD5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_OBJCPP_ARC_ABI = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 368077F615D0F78700843AD5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_OBJCPP_ARC_ABI = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + SDKROOT = macosx; + }; + name = Release; + }; + 368077FB15D0F78700843AD5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "BisMac/BisMac-Prefix.pch"; + INFOPLIST_FILE = "BisMac/BisMac-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 368077FC15D0F78700843AD5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "BisMac/BisMac-Prefix.pch"; + INFOPLIST_FILE = "BisMac/BisMac-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 368077FE15D0F78700843AD5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/BisMac.app/Contents/MacOS/BisMac"; + CLANG_ENABLE_OBJC_ARC = NO; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "BisMacTests/BisMacTests-Prefix.pch"; + INFOPLIST_FILE = "BisMacTests/BisMacTests-Info.plist"; + OTHER_LDFLAGS = ( + "-framework", + SenTestingKit, + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Debug; + }; + 368077FF15D0F78700843AD5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/BisMac.app/Contents/MacOS/BisMac"; + CLANG_ENABLE_OBJC_ARC = NO; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "BisMacTests/BisMacTests-Prefix.pch"; + INFOPLIST_FILE = "BisMacTests/BisMacTests-Info.plist"; + OTHER_LDFLAGS = ( + "-framework", + SenTestingKit, + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = octest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3680779A15D0F78600843AD5 /* Build configuration list for PBXProject "BisMac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 368077F515D0F78700843AD5 /* Debug */, + 368077F615D0F78700843AD5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 368077FA15D0F78700843AD5 /* Build configuration list for PBXNativeTarget "BisMac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 368077FB15D0F78700843AD5 /* Debug */, + 368077FC15D0F78700843AD5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 368077FD15D0F78700843AD5 /* Build configuration list for PBXNativeTarget "BisMacTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 368077FE15D0F78700843AD5 /* Debug */, + 368077FF15D0F78700843AD5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 368077BF15D0F78700843AD5 /* BisMacDocument.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 368077C015D0F78700843AD5 /* BisMacDocument.xcdatamodel */, + ); + currentVersion = 368077C015D0F78700843AD5 /* BisMacDocument.xcdatamodel */; + path = BisMacDocument.xcdatamodeld; + sourceTree = "<group>"; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = 3680779715D0F78600843AD5 /* Project object */; +} diff --git a/openbis-ipad/BisMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/openbis-ipad/BisMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..23678b27b21 --- /dev/null +++ b/openbis-ipad/BisMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "self:BisMac.xcodeproj"> + </FileRef> +</Workspace> diff --git a/openbis-ipad/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate b/openbis-ipad/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..e191a08b936bdb0d47652537cdb1b5ef9f1d4f86 GIT binary patch literal 94743 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ƉI?D+Q!$LHD!;Pc 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 Obz1e<_5OEQ-uyp<1wz39 literal 0 HcmV?d00001 diff --git a/openbis-ipad/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/WorkspaceSettings.xcsettings b/openbis-ipad/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100644 index 00000000000..6ff33e6031a --- /dev/null +++ b/openbis-ipad/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IDEWorkspaceUserSettings_HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges</key> + <true/> + <key>IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges</key> + <true/> +</dict> +</plist> diff --git a/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 00000000000..05301bc2538 --- /dev/null +++ b/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Bucket + type = "1" + version = "1.0"> +</Bucket> diff --git a/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/BisMac.xcscheme b/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/BisMac.xcscheme new file mode 100644 index 00000000000..b479a1bac51 --- /dev/null +++ b/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/BisMac.xcscheme @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "0450" + version = "1.8"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "3680779F15D0F78700843AD5" + BuildableName = "BisMac.app" + BlueprintName = "BisMac" + ReferencedContainer = "container:BisMac.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + shouldUseLaunchSchemeArgsEnv = "YES" + buildConfiguration = "Debug"> + <Testables> + <TestableReference + skipped = "NO"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "368077C615D0F78700843AD5" + BuildableName = "BisMacTests.octest" + BlueprintName = "BisMacTests" + ReferencedContainer = "container:BisMac.xcodeproj"> + </BuildableReference> + </TestableReference> + </Testables> + </TestAction> + <LaunchAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + displayScaleIsEnabled = "NO" + displayScale = "1.00" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Debug" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + allowLocationSimulation = "YES"> + <BuildableProductRunnable> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "3680779F15D0F78700843AD5" + BuildableName = "BisMac.app" + BlueprintName = "BisMac" + ReferencedContainer = "container:BisMac.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + displayScaleIsEnabled = "NO" + displayScale = "1.00" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Release" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "3680779F15D0F78700843AD5" + BuildableName = "BisMac.app" + BlueprintName = "BisMac" + ReferencedContainer = "container:BisMac.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/BisMacImporter.xcscheme b/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/BisMacImporter.xcscheme new file mode 100644 index 00000000000..ff73167ff84 --- /dev/null +++ b/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/BisMacImporter.xcscheme @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "0450" + version = "1.8"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "368077D915D0F78700843AD5" + BuildableName = "BisMacImporter.mdimporter" + BlueprintName = "BisMacImporter" + ReferencedContainer = "container:BisMac.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + shouldUseLaunchSchemeArgsEnv = "YES" + buildConfiguration = "Debug"> + <Testables> + </Testables> + </TestAction> + <LaunchAction + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB" + displayScaleIsEnabled = "NO" + displayScale = "1.00" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Debug" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + allowLocationSimulation = "YES"> + <AdditionalOptions> + </AdditionalOptions> + </LaunchAction> + <ProfileAction + displayScaleIsEnabled = "NO" + displayScale = "1.00" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + buildConfiguration = "Release" + debugDocumentVersioning = "YES"> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/xcschememanagement.plist b/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000000..a063d393c93 --- /dev/null +++ b/openbis-ipad/BisMac.xcodeproj/xcuserdata/cramakri.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>SchemeUserState</key> + <dict> + <key>BisMac.xcscheme</key> + <dict> + <key>orderHint</key> + <integer>0</integer> + </dict> + <key>BisMacImporter.xcscheme</key> + <dict> + <key>orderHint</key> + <integer>1</integer> + </dict> + </dict> + <key>SuppressBuildableAutocreation</key> + <dict> + <key>3680779F15D0F78700843AD5</key> + <dict> + <key>primary</key> + <true/> + </dict> + <key>368077C615D0F78700843AD5</key> + <dict> + <key>primary</key> + <true/> + </dict> + <key>368077D915D0F78700843AD5</key> + <dict> + <key>primary</key> + <true/> + </dict> + </dict> +</dict> +</plist> diff --git a/openbis-ipad/BisMac/BisMac-Info.plist b/openbis-ipad/BisMac/BisMac-Info.plist new file mode 100644 index 00000000000..8b571d6af21 --- /dev/null +++ b/openbis-ipad/BisMac/BisMac-Info.plist @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleDocumentTypes</key> + <array> + <dict> + <key>CFBundleTypeExtensions</key> + <array> + <string>binary</string> + </array> + <key>CFBundleTypeMIMETypes</key> + <array> + <string>application/octet-stream</string> + </array> + <key>CFBundleTypeName</key> + <string>Binary</string> + <key>CFBundleTypeRole</key> + <string>Editor</string> + <key>LSTypeIsPackage</key> + <false/> + <key>NSDocumentClass</key> + <string>BisMacDocument</string> + <key>NSPersistentStoreTypeKey</key> + <string>Binary</string> + </dict> + <dict> + <key>CFBundleTypeExtensions</key> + <array> + <string>sqlite</string> + </array> + <key>CFBundleTypeMIMETypes</key> + <array> + <string>application/octet-stream</string> + </array> + <key>CFBundleTypeName</key> + <string>SQLite</string> + <key>CFBundleTypeRole</key> + <string>Editor</string> + <key>LSTypeIsPackage</key> + <false/> + <key>NSDocumentClass</key> + <string>BisMacDocument</string> + <key>NSPersistentStoreTypeKey</key> + <string>SQLite</string> + </dict> + <dict> + <key>CFBundleTypeExtensions</key> + <array> + <string>xml</string> + </array> + <key>CFBundleTypeIconFile</key> + <string></string> + <key>CFBundleTypeMIMETypes</key> + <array> + <string>text/xml</string> + </array> + <key>CFBundleTypeName</key> + <string>XML</string> + <key>CFBundleTypeOSTypes</key> + <array> + <string>????</string> + </array> + <key>CFBundleTypeRole</key> + <string>Editor</string> + <key>LSTypeIsPackage</key> + <false/> + <key>NSDocumentClass</key> + <string>BisMacDocument</string> + <key>NSPersistentStoreTypeKey</key> + <string>XML</string> + </dict> + </array> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleIdentifier</key> + <string>ch.ethz.cisd.${PRODUCT_NAME:rfc1034identifier}</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1</string> + <key>LSApplicationCategoryType</key> + <string>public.app-category.productivity</string> + <key>LSMinimumSystemVersion</key> + <string>${MACOSX_DEPLOYMENT_TARGET}</string> + <key>NSMainNibFile</key> + <string>MainMenu</string> + <key>NSPrincipalClass</key> + <string>NSApplication</string> +</dict> +</plist> diff --git a/openbis-ipad/BisMac/BisMac-Prefix.pch b/openbis-ipad/BisMac/BisMac-Prefix.pch new file mode 100644 index 00000000000..d8fc76b2058 --- /dev/null +++ b/openbis-ipad/BisMac/BisMac-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'BisMac' target in the 'BisMac' project +// + +#ifdef __OBJC__ + #import <Cocoa/Cocoa.h> +#endif diff --git a/openbis-ipad/BisMac/BisMacDocument.h b/openbis-ipad/BisMac/BisMacDocument.h new file mode 100644 index 00000000000..4b7209a8c07 --- /dev/null +++ b/openbis-ipad/BisMac/BisMacDocument.h @@ -0,0 +1,31 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// BisMacDocument.h +// BisMac +// +// Created by cramakri on 07.08.12. +// +// + +#import <Cocoa/Cocoa.h> + +@interface BisMacDocument : NSPersistentDocument { +@private + +} + +@end diff --git a/openbis-ipad/BisMac/BisMacDocument.m b/openbis-ipad/BisMac/BisMacDocument.m new file mode 100644 index 00000000000..b44415f9469 --- /dev/null +++ b/openbis-ipad/BisMac/BisMacDocument.m @@ -0,0 +1,77 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// BisMacDocument.m +// BisMac +// +// Created by cramakri on 07.08.12. +// +// + +#import "BisMacDocument.h" +#import "CISDOBJsonRpcCall.h" + +@implementation BisMacDocument + +- (id)init +{ + self = [super init]; + if (self) { + // Add your subclass-specific initialization here. + // If an error occurs here, send a [self release] message and return nil. + } + return self; +} + +- (NSString *)windowNibName +{ + // Override returning the nib file name of the document + // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. + return @"BisMacDocument"; +} + +- (void)testCall +{ + + CISDOBJsonRpcCall *generalInfoServiceCall = [[CISDOBJsonRpcCall alloc] init]; + generalInfoServiceCall.url = [NSURL URLWithString: @"http://www.raboof.com/projects/jayrock/demo.ashx"]; + generalInfoServiceCall.method = @"add"; + generalInfoServiceCall.params = [NSArray arrayWithObjects: @"1", @"2", nil]; + generalInfoServiceCall.timeoutInterval = 10.0; + SuccessBlock success = ^(id result) { + NSLog(@"Call returned result : %@", result); + }; + + FailBlock fail = ^(NSError *error) { + NSLog(@"Call failed : %@", error); + }; + generalInfoServiceCall.success = success; + generalInfoServiceCall.fail = fail; + [generalInfoServiceCall start]; +} + + +- (void)windowControllerDidLoadNib:(NSWindowController *)aController +{ + [super windowControllerDidLoadNib:aController]; + // Add any code here that needs to be executed once the windowController has loaded the document's window. + + [self testCall]; + +} + + +@end diff --git a/openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/.xccurrentversion b/openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/.xccurrentversion new file mode 100644 index 00000000000..895842c8ba1 --- /dev/null +++ b/openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>_XCCurrentVersionName</key> + <string>BisMacDocument.xcdatamodel</string> +</dict> +</plist> diff --git a/openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/BisMacDocument.xcdatamodel/elements b/openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/BisMacDocument.xcdatamodel/elements new file mode 100644 index 0000000000000000000000000000000000000000..220906294d688e73c149bb405efded1c4412c636 GIT binary patch literal 1199 zcmYjP-ES0C6u)yW(3S#ww=D`3T7^Yfm0Cez6|l5S3k%()Fx__gK`*njw`J(;%rY}e zyM%`uG-x!DM@@X$xB=cU@c|x4cmrPS1H~AP3LymWuQ1-39kw$M_sluxch32pk9^5A zT(7tHHwo~n)oYs8P9!u(KWAKIj+zjUYuMIk!m~?i!p@&(y5~|7%PJ>Wg%$ckU>lOI zRv$IDj5@aMap`B$-nwq{mc1W;^6B9LdFa@Q)2*WuXL1RvY?{BX-w-45w)T#VZ@jrl zWTJ}&>PL-e`n)#BrhQ$vi$!Mng@~^f?E*71nkC#0B^!m?nl<Lij^+t!?m#8071>xq zH#OHi)4=;ij`;>2<Ak?yproU0d4^}QLeHXJ&^#?j`;^2ww{Gj|e(UY+I}$tJd3RSl z`Cdyh`F`?)-8~=f?)_*FC0(jKP}b*}H)K1qh#Rexn7g34gO)Cc6>`)PrNU0^1<SDJ zGCpBSwnYNN_9AhVY>oJj`0S%;r|3n)HS&gOcoj;zBha+vF=tlOqi9MtM-X8$*Rvfl zvoR`I`IC#*TS*e4DCvx3X!P0e5?Z#53uQKFGJiK|nUXD$fY<$nc$Er*qI`v~=Bo(e zYdGS~yoImjt$h86GBKzu?~CtGO=gvz@TjW1Y5B7Q2M?+BMKX7?{^Jj~cIflInXHm2 zds^OP{f?tm#<NNw)vR(dxJr?)KUEd)k>DLnRUgHV@^vC-`uI=B`vSJP%&^R6wX*4j zT@2Mp3ea%oMkaf5<W%2`DhKNe8xng}Wf2#u>0*hJcwq4l%q@vE1h$Tbt?+t6KC~XZ zViEk5RQ2(`TzqU?6+QIKvx-}-^0=TdIaQmQ7DU?{oyvyppSb2!rnAb5BCs>GM$h(5 zsPafAU^^bNM$IUWI#B{8(H<nDG#W;ykb(?kqs!<!^dq{39-t-k7y1W1MbFT4^a8y? z|4H4_VQENGrA6s`sV3c*o=N{g6YPW(<X{HQLLLe*3+LcGm|#H(9B^R)F2h&wHGBit z;0LI|O}GvB;3519ORx-&;Scx|{)Q*;9A09Kn{f<x;a)7`DO|)3cJU>A1%H9R#8>gR a_!_>Bf5CU~U3?z}A4qkHv`~fuFZ~Y>$%iHY literal 0 HcmV?d00001 diff --git a/openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/BisMacDocument.xcdatamodel/layout b/openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/BisMacDocument.xcdatamodel/layout new file mode 100644 index 0000000000000000000000000000000000000000..85196a8596c9469c3bf60d37cca28830751a035e GIT binary patch literal 475 zcmYLEO;1xn6g^W46e_fU3W}nXhk^<=gcvs_8oM#-GiE@Zm86+IC*|SvO*1pqbj7Sl z2r)6nxV5PZ7bIxhux0PUsQd;009!YXw2`~G=YE}g&n?$Pq)k45KoVWa?w;QMryf(` zTJ(~uz;jMVGG6kGtOcGduk+C8Qa0n$`@F%Q-{}kvgKRc`r23YWl*W>s^oh~2Gv~c@ z`s)0$7uSXOH87aTj+`#~biT7>#f2|;LqG9C!L)7-4cnycX`MV}6Sm9t2US+9MR7&1 zXd@M?@P8Z5j-P8bZTHWK3l}GYHjnFKJBV48f1J!sm9ir~eONcFEO;RbjZ@E5W7Vg} zN#N5*N1q%_U&>sbnY}Vo3<?D<c!e46_%4Z9MX~B#85<>q;A+*?m|;}bRmg41_S!zD z;@Vtm&K=DDC(yQ5*Sel-<))Cr5XRwQ77Hlg9v<K^C`#ZEc!dpYVhh`NjW>9UcX*Ev y_=H`2#ut3W9`^AK-|-uV_(PH;L#D|BStK{eO>&FeCX@s?vIJ=(@*V5|dG;5wQHSgR literal 0 HcmV?d00001 diff --git a/openbis-ipad/BisMac/en.lproj/BisMacDocument.xib b/openbis-ipad/BisMac/en.lproj/BisMacDocument.xib new file mode 100644 index 00000000000..e9f9503c147 --- /dev/null +++ b/openbis-ipad/BisMac/en.lproj/BisMacDocument.xib @@ -0,0 +1,252 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.06"> + <data> + <int key="IBDocument.SystemTarget">1060</int> + <string key="IBDocument.SystemVersion">10A261</string> + <string key="IBDocument.InterfaceBuilderVersion">710</string> + <string key="IBDocument.AppKitVersion">1005.2</string> + <string key="IBDocument.HIToolboxVersion">409.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">710</string> + </object> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="5"/> + </object> + <object class="NSArray" key="IBDocument.PluginDependencies"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableArray" key="IBDocument.RootObjects" id="580458321"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="512844837"> + <string key="NSClassName">BisMacDocument</string> + </object> + <object class="NSCustomObject" id="613418571"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSWindowTemplate" id="275939982"> + <int key="NSWindowStyleMask">15</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{133, 235}, {507, 413}}</string> + <int key="NSWTFlags">1886912512</int> + <string key="NSWindowTitle">Window</string> + <string key="NSWindowClass">NSWindow</string> + <string key="NSViewClass">View</string> + <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> + <string key="NSWindowContentMinSize">{94, 86}</string> + <object class="NSView" key="NSWindowView" id="568628114"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTextField" id="433022199"> + <reference key="NSNextResponder" ref="568628114"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{119, 195}, {269, 22}}</string> + <reference key="NSSuperview" ref="568628114"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="566561048"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">138412032</int> + <string key="NSContents">Your document contents here</string> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">18</double> + <int key="NSfFlags">16</int> + </object> + <reference key="NSControlView" ref="433022199"/> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </object> + </object> + </object> + <string key="NSFrameSize">{507, 413}</string> + <reference key="NSSuperview"/> + </object> + <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> + <string key="NSMinSize">{94, 108}</string> + <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string> + </object> + <object class="NSCustomObject" id="796877042"> + <string key="NSClassName">NSApplication</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="275939982"/> + <reference key="destination" ref="512844837"/> + </object> + <int key="connectionID">17</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">window</string> + <reference key="source" ref="512844837"/> + <reference key="destination" ref="275939982"/> + </object> + <int key="connectionID">18</int> + </object> + </object> + <object class="IBMutableOrderedSet" key="objectRecords"> + <object class="NSArray" key="orderedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <reference key="object" ref="0"/> + <reference key="children" ref="580458321"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="512844837"/> + <reference key="parent" ref="0"/> + <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="613418571"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="275939982"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="568628114"/> + </object> + <reference key="parent" ref="0"/> + <string key="objectName">Window</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">6</int> + <reference key="object" ref="568628114"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="433022199"/> + </object> + <reference key="parent" ref="275939982"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">20</int> + <reference key="object" ref="433022199"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="566561048"/> + </object> + <reference key="parent" ref="568628114"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">100020</int> + <reference key="object" ref="566561048"/> + <reference key="parent" ref="433022199"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="796877042"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>100020.IBPluginDependency</string> + <string>20.IBPluginDependency</string> + <string>20.ImportedFromIB2</string> + <string>5.IBEditorWindowLastContentRect</string> + <string>5.IBPluginDependency</string> + <string>5.IBWindowTemplateEditedContentRect</string> + <string>5.ImportedFromIB2</string> + <string>5.editorWindowContentRectSynchronizationRect</string> + <string>5.windowTemplate.hasMinSize</string> + <string>5.windowTemplate.minSize</string> + <string>6.IBPluginDependency</string> + <string>6.ImportedFromIB2</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{133, 170}, {507, 413}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{133, 170}, {507, 413}}</string> + <integer value="1"/> + <string>{{201, 387}, {507, 413}}</string> + <integer value="1"/> + <string>{94, 86}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + </object> + </object> + <object class="NSMutableDictionary" key="unlocalizedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="activeLocalization"/> + <object class="NSMutableDictionary" key="localizations"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">100020</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">BisMacDocument</string> + <string key="superclassName">NSDocument</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">BisMacDocument.h</string> + </object> + </object> + </object> + </object> + <int key="IBDocument.localizationMode">0</int> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <string key="IBDocument.LastKnownRelativeProjectPath">../CocoaDocApp.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> diff --git a/openbis-ipad/BisMac/en.lproj/Credits.rtf b/openbis-ipad/BisMac/en.lproj/Credits.rtf new file mode 100644 index 00000000000..46576ef211d --- /dev/null +++ b/openbis-ipad/BisMac/en.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/openbis-ipad/BisMac/en.lproj/InfoPlist.strings b/openbis-ipad/BisMac/en.lproj/InfoPlist.strings new file mode 100644 index 00000000000..477b28ff8f8 --- /dev/null +++ b/openbis-ipad/BisMac/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/openbis-ipad/BisMac/en.lproj/MainMenu.xib b/openbis-ipad/BisMac/en.lproj/MainMenu.xib new file mode 100644 index 00000000000..3a384cd8b52 --- /dev/null +++ b/openbis-ipad/BisMac/en.lproj/MainMenu.xib @@ -0,0 +1,4031 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> + <data> + <int key="IBDocument.SystemTarget">1060</int> + <string key="IBDocument.SystemVersion">10A313</string> + <string key="IBDocument.InterfaceBuilderVersion">718</string> + <string key="IBDocument.AppKitVersion">1013</string> + <string key="IBDocument.HIToolboxVersion">415.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">718</string> + </object> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="29"/> + </object> + <object class="NSArray" key="IBDocument.PluginDependencies"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="1021"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSCustomObject" id="1014"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1050"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSMenu" id="649796088"> + <string key="NSTitle">AMainMenu</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="694149608"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">BisMac</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <object class="NSCustomResource" key="NSOnImage" id="1033313550"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuCheckmark</string> + </object> + <object class="NSCustomResource" key="NSMixedImage" id="310636482"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuMixedState</string> + </object> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="110575045"> + <string key="NSTitle">BisMac</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="238522557"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">About BisMac</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="304266470"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="609285721"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Preferences…</string> + <string key="NSKeyEquiv">,</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="481834944"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="1046388886"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Services</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="752062318"> + <string key="NSTitle">Services</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <string key="NSName">_NSServicesMenu</string> + </object> + </object> + <object class="NSMenuItem" id="646227648"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="755159360"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Hide BisMac</string> + <string key="NSKeyEquiv">h</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="342932134"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Hide Others</string> + <string key="NSKeyEquiv">h</string> + <int key="NSKeyEquivModMask">1572864</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="908899353"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Show All</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="1056857174"> + <reference key="NSMenu" ref="110575045"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="632727374"> + <reference key="NSMenu" ref="110575045"/> + <string key="NSTitle">Quit BisMac</string> + <string key="NSKeyEquiv">q</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + <string key="NSName">_NSAppleMenu</string> + </object> + </object> + <object class="NSMenuItem" id="379814623"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">File</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="720053764"> + <string key="NSTitle">File</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="705341025"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">New</string> + <string key="NSKeyEquiv">n</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="722745758"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Open…</string> + <string key="NSKeyEquiv">o</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="1025936716"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Open Recent</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="1065607017"> + <string key="NSTitle">Open Recent</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="759406840"> + <reference key="NSMenu" ref="1065607017"/> + <string key="NSTitle">Clear Menu</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + <string key="NSName">_NSRecentDocumentsMenu</string> + </object> + </object> + <object class="NSMenuItem" id="425164168"> + <reference key="NSMenu" ref="720053764"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="776162233"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Close</string> + <string key="NSKeyEquiv">w</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="1023925487"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Save</string> + <string key="NSKeyEquiv">s</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="117038363"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Save As…</string> + <string key="NSKeyEquiv">S</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="579971712"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Revert to Saved</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="1010469920"> + <reference key="NSMenu" ref="720053764"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="294629803"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Page Setup...</string> + <string key="NSKeyEquiv">P</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSToolTip"/> + </object> + <object class="NSMenuItem" id="49223823"> + <reference key="NSMenu" ref="720053764"/> + <string key="NSTitle">Print…</string> + <string key="NSKeyEquiv">p</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="952259628"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Edit</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="789758025"> + <string key="NSTitle">Edit</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="1058277027"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Undo</string> + <string key="NSKeyEquiv">z</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="790794224"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Redo</string> + <string key="NSKeyEquiv">Z</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="1040322652"> + <reference key="NSMenu" ref="789758025"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="296257095"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Cut</string> + <string key="NSKeyEquiv">x</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="860595796"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Copy</string> + <string key="NSKeyEquiv">c</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="29853731"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Paste</string> + <string key="NSKeyEquiv">v</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="763435172"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Paste and Match Style</string> + <string key="NSKeyEquiv">V</string> + <int key="NSKeyEquivModMask">1572864</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="437104165"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Delete</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="583158037"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Select All</string> + <string key="NSKeyEquiv">a</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="212016141"> + <reference key="NSMenu" ref="789758025"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="892235320"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Find</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="963351320"> + <string key="NSTitle">Find</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="447796847"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Find…</string> + <string key="NSKeyEquiv">f</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">1</int> + </object> + <object class="NSMenuItem" id="326711663"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Find Next</string> + <string key="NSKeyEquiv">g</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">2</int> + </object> + <object class="NSMenuItem" id="270902937"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Find Previous</string> + <string key="NSKeyEquiv">G</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">3</int> + </object> + <object class="NSMenuItem" id="159080638"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Use Selection for Find</string> + <string key="NSKeyEquiv">e</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">7</int> + </object> + <object class="NSMenuItem" id="88285865"> + <reference key="NSMenu" ref="963351320"/> + <string key="NSTitle">Jump to Selection</string> + <string key="NSKeyEquiv">j</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="972420730"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Spelling and Grammar</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="769623530"> + <string key="NSTitle">Spelling and Grammar</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="679648819"> + <reference key="NSMenu" ref="769623530"/> + <string key="NSTitle">Show Spelling and Grammar</string> + <string key="NSKeyEquiv">:</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="96193923"> + <reference key="NSMenu" ref="769623530"/> + <string key="NSTitle">Check Document Now</string> + <string key="NSKeyEquiv">;</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="292991471"> + <reference key="NSMenu" ref="769623530"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="948374510"> + <reference key="NSMenu" ref="769623530"/> + <string key="NSTitle">Check Spelling While Typing</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="967646866"> + <reference key="NSMenu" ref="769623530"/> + <string key="NSTitle">Check Grammar With Spelling</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="817901857"> + <reference key="NSMenu" ref="769623530"/> + <string key="NSTitle">Correct Spelling Automatically</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="507821607"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Substitutions</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="698887838"> + <string key="NSTitle">Substitutions</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="63225254"> + <reference key="NSMenu" ref="698887838"/> + <string key="NSTitle">Show Substitutions</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="430156352"> + <reference key="NSMenu" ref="698887838"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="605118523"> + <reference key="NSMenu" ref="698887838"/> + <string key="NSTitle">Smart Copy/Paste</string> + <string key="NSKeyEquiv">f</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">1</int> + </object> + <object class="NSMenuItem" id="197661976"> + <reference key="NSMenu" ref="698887838"/> + <string key="NSTitle">Smart Quotes</string> + <string key="NSKeyEquiv">g</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">2</int> + </object> + <object class="NSMenuItem" id="618524225"> + <reference key="NSMenu" ref="698887838"/> + <string key="NSTitle">Smart Dashes</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="708854459"> + <reference key="NSMenu" ref="698887838"/> + <string key="NSTitle">Smart Links</string> + <string key="NSKeyEquiv">G</string> + <int key="NSKeyEquivModMask">1179648</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">3</int> + </object> + <object class="NSMenuItem" id="511468581"> + <reference key="NSMenu" ref="698887838"/> + <string key="NSTitle">Text Replacement</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="981774355"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Transformations</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="769264466"> + <string key="NSTitle">Transformations</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="372238911"> + <reference key="NSMenu" ref="769264466"/> + <string key="NSTitle">Make Upper Case</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="740446531"> + <reference key="NSMenu" ref="769264466"/> + <string key="NSTitle">Make Lower Case</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="1063332286"> + <reference key="NSMenu" ref="769264466"/> + <string key="NSTitle">Capitalize</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="676164635"> + <reference key="NSMenu" ref="789758025"/> + <string key="NSTitle">Speech</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="785027613"> + <string key="NSTitle">Speech</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="731782645"> + <reference key="NSMenu" ref="785027613"/> + <string key="NSTitle">Start Speaking</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="680220178"> + <reference key="NSMenu" ref="785027613"/> + <string key="NSTitle">Stop Speaking</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="470804886"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Format</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="892078337"> + <string key="NSTitle">Format</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="417081885"> + <reference key="NSMenu" ref="892078337"/> + <string key="NSTitle">Font</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="1063883570"> + <string key="NSTitle">Font</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="174638318"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Show Fonts</string> + <string key="NSKeyEquiv">t</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="481459203"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Bold</string> + <string key="NSKeyEquiv">b</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">2</int> + </object> + <object class="NSMenuItem" id="275470842"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Italic</string> + <string key="NSKeyEquiv">i</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">1</int> + </object> + <object class="NSMenuItem" id="319949941"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Underline</string> + <string key="NSKeyEquiv">u</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="692549729"> + <reference key="NSMenu" ref="1063883570"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="410574898"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Bigger</string> + <string key="NSKeyEquiv">+</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">3</int> + </object> + <object class="NSMenuItem" id="234445462"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Smaller</string> + <string key="NSKeyEquiv">-</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <int key="NSTag">4</int> + </object> + <object class="NSMenuItem" id="364585565"> + <reference key="NSMenu" ref="1063883570"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="53157584"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Kern</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="249492784"> + <string key="NSTitle">Kern</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="621871957"> + <reference key="NSMenu" ref="249492784"/> + <string key="NSTitle">Use Default</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="287782986"> + <reference key="NSMenu" ref="249492784"/> + <string key="NSTitle">Use None</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="1054746601"> + <reference key="NSMenu" ref="249492784"/> + <string key="NSTitle">Tighten</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="927944004"> + <reference key="NSMenu" ref="249492784"/> + <string key="NSTitle">Loosen</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="29382803"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Ligature</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="481842979"> + <string key="NSTitle">Ligature</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="1023090053"> + <reference key="NSMenu" ref="481842979"/> + <string key="NSTitle">Use Default</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="592961422"> + <reference key="NSMenu" ref="481842979"/> + <string key="NSTitle">Use None</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="1070261725"> + <reference key="NSMenu" ref="481842979"/> + <string key="NSTitle">Use All</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="1035117790"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Baseline</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="228490898"> + <string key="NSTitle">Baseline</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="897580362"> + <reference key="NSMenu" ref="228490898"/> + <string key="NSTitle">Use Default</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="78871505"> + <reference key="NSMenu" ref="228490898"/> + <string key="NSTitle">Superscript</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="17354335"> + <reference key="NSMenu" ref="228490898"/> + <string key="NSTitle">Subscript</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="670533225"> + <reference key="NSMenu" ref="228490898"/> + <string key="NSTitle">Raise</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="654494087"> + <reference key="NSMenu" ref="228490898"/> + <string key="NSTitle">Lower</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="707650671"> + <reference key="NSMenu" ref="1063883570"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="871758183"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Show Colors</string> + <string key="NSKeyEquiv">C</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="750501226"> + <reference key="NSMenu" ref="1063883570"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="721121421"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Copy Style</string> + <string key="NSKeyEquiv">c</string> + <int key="NSKeyEquivModMask">1572864</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="331522238"> + <reference key="NSMenu" ref="1063883570"/> + <string key="NSTitle">Paste Style</string> + <string key="NSKeyEquiv">v</string> + <int key="NSKeyEquivModMask">1572864</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + <string key="NSName">_NSFontMenu</string> + </object> + </object> + <object class="NSMenuItem" id="236885983"> + <reference key="NSMenu" ref="892078337"/> + <string key="NSTitle">Text</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="832896799"> + <string key="NSTitle">Text</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="322518776"> + <reference key="NSMenu" ref="832896799"/> + <string key="NSTitle">Align Left</string> + <string key="NSKeyEquiv">{</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="184724819"> + <reference key="NSMenu" ref="832896799"/> + <string key="NSTitle">Center</string> + <string key="NSKeyEquiv">|</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="8380150"> + <reference key="NSMenu" ref="832896799"/> + <string key="NSTitle">Justify</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="631715353"> + <reference key="NSMenu" ref="832896799"/> + <string key="NSTitle">Align Right</string> + <string key="NSKeyEquiv">}</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="602033965"> + <reference key="NSMenu" ref="832896799"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="14288410"> + <reference key="NSMenu" ref="832896799"/> + <string key="NSTitle">Writing Direction</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="546157535"> + <string key="NSTitle">Writing Direction</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="982064965"> + <reference key="NSMenu" ref="546157535"/> + <bool key="NSIsDisabled">YES</bool> + <string key="NSTitle">Paragraph</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="996409883"> + <reference key="NSMenu" ref="546157535"/> + <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="891995539"> + <reference key="NSMenu" ref="546157535"/> + <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="966562699"> + <reference key="NSMenu" ref="546157535"/> + <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="840271773"> + <reference key="NSMenu" ref="546157535"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="330651237"> + <reference key="NSMenu" ref="546157535"/> + <bool key="NSIsDisabled">YES</bool> + <string key="NSTitle">Selection</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="435535051"> + <reference key="NSMenu" ref="546157535"/> + <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="50065340"> + <reference key="NSMenu" ref="546157535"/> + <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="838497762"> + <reference key="NSMenu" ref="546157535"/> + <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="844247483"> + <reference key="NSMenu" ref="832896799"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="905923487"> + <reference key="NSMenu" ref="832896799"/> + <string key="NSTitle">Show Ruler</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="366255619"> + <reference key="NSMenu" ref="832896799"/> + <string key="NSTitle">Copy Ruler</string> + <string key="NSKeyEquiv">c</string> + <int key="NSKeyEquivModMask">1310720</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="483902452"> + <reference key="NSMenu" ref="832896799"/> + <string key="NSTitle">Paste Ruler</string> + <string key="NSKeyEquiv">v</string> + <int key="NSKeyEquivModMask">1310720</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="586577488"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">View</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="466310130"> + <string key="NSTitle">View</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="102151532"> + <reference key="NSMenu" ref="466310130"/> + <string key="NSTitle">Show Toolbar</string> + <string key="NSKeyEquiv">t</string> + <int key="NSKeyEquivModMask">1572864</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="237841660"> + <reference key="NSMenu" ref="466310130"/> + <string key="NSTitle">Customize Toolbar…</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + </object> + </object> + <object class="NSMenuItem" id="713487014"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Window</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="835318025"> + <string key="NSTitle">Window</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="1011231497"> + <reference key="NSMenu" ref="835318025"/> + <string key="NSTitle">Minimize</string> + <string key="NSKeyEquiv">m</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="575023229"> + <reference key="NSMenu" ref="835318025"/> + <string key="NSTitle">Zoom</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="299356726"> + <reference key="NSMenu" ref="835318025"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + <object class="NSMenuItem" id="625202149"> + <reference key="NSMenu" ref="835318025"/> + <string key="NSTitle">Bring All to Front</string> + <string key="NSKeyEquiv"/> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + <string key="NSName">_NSWindowsMenu</string> + </object> + </object> + <object class="NSMenuItem" id="1050483726"> + <reference key="NSMenu" ref="649796088"/> + <string key="NSTitle">Help</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + <string key="NSAction">submenuAction:</string> + <object class="NSMenu" key="NSSubmenu" id="388842427"> + <string key="NSTitle">Help</string> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="253952766"> + <reference key="NSMenu" ref="388842427"/> + <string key="NSTitle">BisMac Help</string> + <string key="NSKeyEquiv">?</string> + <int key="NSKeyEquivModMask">1048576</int> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="1033313550"/> + <reference key="NSMixedImage" ref="310636482"/> + </object> + </object> + <string key="NSName">_NSHelpMenu</string> + </object> + </object> + </object> + <string key="NSName">_NSMainMenu</string> + </object> + <object class="NSCustomObject" id="739804602"> + <string key="NSClassName">NSFontManager</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performMiniaturize:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1011231497"/> + </object> + <int key="connectionID">37</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">arrangeInFront:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="625202149"/> + </object> + <int key="connectionID">39</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">runPageLayout:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="294629803"/> + </object> + <int key="connectionID">87</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">clearRecentDocuments:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="759406840"/> + </object> + <int key="connectionID">127</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">orderFrontStandardAboutPanel:</string> + <reference key="source" ref="1021"/> + <reference key="destination" ref="238522557"/> + </object> + <int key="connectionID">142</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performClose:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="776162233"/> + </object> + <int key="connectionID">193</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleContinuousSpellChecking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="948374510"/> + </object> + <int key="connectionID">222</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">undo:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1058277027"/> + </object> + <int key="connectionID">223</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">copy:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="860595796"/> + </object> + <int key="connectionID">224</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">checkSpelling:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="96193923"/> + </object> + <int key="connectionID">225</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">paste:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="29853731"/> + </object> + <int key="connectionID">226</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">stopSpeaking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="680220178"/> + </object> + <int key="connectionID">227</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">cut:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="296257095"/> + </object> + <int key="connectionID">228</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">showGuessPanel:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="679648819"/> + </object> + <int key="connectionID">230</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">redo:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="790794224"/> + </object> + <int key="connectionID">231</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">selectAll:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="583158037"/> + </object> + <int key="connectionID">232</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">startSpeaking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="731782645"/> + </object> + <int key="connectionID">233</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">delete:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="437104165"/> + </object> + <int key="connectionID">235</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performZoom:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="575023229"/> + </object> + <int key="connectionID">240</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performFindPanelAction:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="447796847"/> + </object> + <int key="connectionID">241</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">centerSelectionInVisibleArea:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="88285865"/> + </object> + <int key="connectionID">245</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleGrammarChecking:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="967646866"/> + </object> + <int key="connectionID">347</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleSmartInsertDelete:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="605118523"/> + </object> + <int key="connectionID">355</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleAutomaticQuoteSubstitution:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="197661976"/> + </object> + <int key="connectionID">356</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleAutomaticLinkDetection:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="708854459"/> + </object> + <int key="connectionID">357</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">saveDocument:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1023925487"/> + </object> + <int key="connectionID">362</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">saveDocumentAs:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="117038363"/> + </object> + <int key="connectionID">363</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">revertDocumentToSaved:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="579971712"/> + </object> + <int key="connectionID">364</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">runToolbarCustomizationPalette:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="237841660"/> + </object> + <int key="connectionID">365</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleToolbarShown:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="102151532"/> + </object> + <int key="connectionID">366</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hide:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="755159360"/> + </object> + <int key="connectionID">367</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hideOtherApplications:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="342932134"/> + </object> + <int key="connectionID">368</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">unhideAllApplications:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="908899353"/> + </object> + <int key="connectionID">370</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">newDocument:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="705341025"/> + </object> + <int key="connectionID">371</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">openDocument:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="722745758"/> + </object> + <int key="connectionID">372</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">printDocument:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="49223823"/> + </object> + <int key="connectionID">373</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">addFontTrait:</string> + <reference key="source" ref="739804602"/> + <reference key="destination" ref="481459203"/> + </object> + <int key="connectionID">420</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">addFontTrait:</string> + <reference key="source" ref="739804602"/> + <reference key="destination" ref="275470842"/> + </object> + <int key="connectionID">421</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">modifyFont:</string> + <reference key="source" ref="739804602"/> + <reference key="destination" ref="234445462"/> + </object> + <int key="connectionID">422</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">orderFrontFontPanel:</string> + <reference key="source" ref="739804602"/> + <reference key="destination" ref="174638318"/> + </object> + <int key="connectionID">423</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">modifyFont:</string> + <reference key="source" ref="739804602"/> + <reference key="destination" ref="410574898"/> + </object> + <int key="connectionID">424</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">raiseBaseline:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="670533225"/> + </object> + <int key="connectionID">425</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">lowerBaseline:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="654494087"/> + </object> + <int key="connectionID">426</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">copyFont:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="721121421"/> + </object> + <int key="connectionID">427</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">subscript:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="17354335"/> + </object> + <int key="connectionID">428</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">superscript:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="78871505"/> + </object> + <int key="connectionID">429</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">tightenKerning:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1054746601"/> + </object> + <int key="connectionID">430</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">underline:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="319949941"/> + </object> + <int key="connectionID">431</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">orderFrontColorPanel:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="871758183"/> + </object> + <int key="connectionID">432</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">useAllLigatures:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1070261725"/> + </object> + <int key="connectionID">433</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">loosenKerning:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="927944004"/> + </object> + <int key="connectionID">434</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">pasteFont:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="331522238"/> + </object> + <int key="connectionID">435</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">unscript:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="897580362"/> + </object> + <int key="connectionID">436</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">useStandardKerning:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="621871957"/> + </object> + <int key="connectionID">437</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">useStandardLigatures:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1023090053"/> + </object> + <int key="connectionID">438</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">turnOffLigatures:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="592961422"/> + </object> + <int key="connectionID">439</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">turnOffKerning:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="287782986"/> + </object> + <int key="connectionID">440</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">terminate:</string> + <reference key="source" ref="1050"/> + <reference key="destination" ref="632727374"/> + </object> + <int key="connectionID">448</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">capitalizeWord:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="1063332286"/> + </object> + <int key="connectionID">454</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">lowercaseWord:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="740446531"/> + </object> + <int key="connectionID">455</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">uppercaseWord:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="372238911"/> + </object> + <int key="connectionID">456</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleAutomaticDashSubstitution:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="618524225"/> + </object> + <int key="connectionID">460</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">orderFrontSubstitutionsPanel:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="63225254"/> + </object> + <int key="connectionID">461</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleAutomaticTextReplacement:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="511468581"/> + </object> + <int key="connectionID">463</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleAutomaticSpellingCorrection:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="817901857"/> + </object> + <int key="connectionID">466</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performFindPanelAction:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="326711663"/> + </object> + <int key="connectionID">467</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performFindPanelAction:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="270902937"/> + </object> + <int key="connectionID">468</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">performFindPanelAction:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="159080638"/> + </object> + <int key="connectionID">469</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">pasteAsPlainText:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="763435172"/> + </object> + <int key="connectionID">471</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">showHelp:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="253952766"/> + </object> + <int key="connectionID">494</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">alignCenter:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="184724819"/> + </object> + <int key="connectionID">517</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">pasteRuler:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="483902452"/> + </object> + <int key="connectionID">518</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">toggleRuler:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="905923487"/> + </object> + <int key="connectionID">519</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">alignRight:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="631715353"/> + </object> + <int key="connectionID">520</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">copyRuler:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="366255619"/> + </object> + <int key="connectionID">521</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">alignJustified:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="8380150"/> + </object> + <int key="connectionID">522</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">alignLeft:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="322518776"/> + </object> + <int key="connectionID">523</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">makeBaseWritingDirectionNatural:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="996409883"/> + </object> + <int key="connectionID">524</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">makeBaseWritingDirectionLeftToRight:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="891995539"/> + </object> + <int key="connectionID">525</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">makeBaseWritingDirectionRightToLeft:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="966562699"/> + </object> + <int key="connectionID">526</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">makeTextWritingDirectionNatural:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="435535051"/> + </object> + <int key="connectionID">527</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">makeTextWritingDirectionLeftToRight:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="50065340"/> + </object> + <int key="connectionID">528</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">makeTextWritingDirectionRightToLeft:</string> + <reference key="source" ref="1014"/> + <reference key="destination" ref="838497762"/> + </object> + <int key="connectionID">529</int> + </object> + </object> + <object class="IBMutableOrderedSet" key="objectRecords"> + <object class="NSArray" key="orderedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <reference key="object" ref="0"/> + <reference key="children" ref="1048"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1021"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1014"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1050"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">29</int> + <reference key="object" ref="649796088"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="713487014"/> + <reference ref="694149608"/> + <reference ref="952259628"/> + <reference ref="379814623"/> + <reference ref="586577488"/> + <reference ref="470804886"/> + <reference ref="1050483726"/> + </object> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">19</int> + <reference key="object" ref="713487014"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="835318025"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">56</int> + <reference key="object" ref="694149608"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="110575045"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">217</int> + <reference key="object" ref="952259628"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="789758025"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">83</int> + <reference key="object" ref="379814623"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="720053764"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">81</int> + <reference key="object" ref="720053764"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1023925487"/> + <reference ref="117038363"/> + <reference ref="49223823"/> + <reference ref="722745758"/> + <reference ref="705341025"/> + <reference ref="1025936716"/> + <reference ref="294629803"/> + <reference ref="776162233"/> + <reference ref="425164168"/> + <reference ref="579971712"/> + <reference ref="1010469920"/> + </object> + <reference key="parent" ref="379814623"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">75</int> + <reference key="object" ref="1023925487"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">80</int> + <reference key="object" ref="117038363"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">78</int> + <reference key="object" ref="49223823"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">72</int> + <reference key="object" ref="722745758"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">82</int> + <reference key="object" ref="705341025"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">124</int> + <reference key="object" ref="1025936716"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1065607017"/> + </object> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">77</int> + <reference key="object" ref="294629803"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">73</int> + <reference key="object" ref="776162233"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">79</int> + <reference key="object" ref="425164168"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">112</int> + <reference key="object" ref="579971712"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">74</int> + <reference key="object" ref="1010469920"/> + <reference key="parent" ref="720053764"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">125</int> + <reference key="object" ref="1065607017"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="759406840"/> + </object> + <reference key="parent" ref="1025936716"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">126</int> + <reference key="object" ref="759406840"/> + <reference key="parent" ref="1065607017"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">205</int> + <reference key="object" ref="789758025"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="437104165"/> + <reference ref="583158037"/> + <reference ref="1058277027"/> + <reference ref="212016141"/> + <reference ref="296257095"/> + <reference ref="29853731"/> + <reference ref="860595796"/> + <reference ref="1040322652"/> + <reference ref="790794224"/> + <reference ref="892235320"/> + <reference ref="972420730"/> + <reference ref="676164635"/> + <reference ref="507821607"/> + <reference ref="981774355"/> + <reference ref="763435172"/> + </object> + <reference key="parent" ref="952259628"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">202</int> + <reference key="object" ref="437104165"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">198</int> + <reference key="object" ref="583158037"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">207</int> + <reference key="object" ref="1058277027"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">214</int> + <reference key="object" ref="212016141"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">199</int> + <reference key="object" ref="296257095"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">203</int> + <reference key="object" ref="29853731"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">197</int> + <reference key="object" ref="860595796"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">206</int> + <reference key="object" ref="1040322652"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">215</int> + <reference key="object" ref="790794224"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">218</int> + <reference key="object" ref="892235320"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="963351320"/> + </object> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">216</int> + <reference key="object" ref="972420730"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="769623530"/> + </object> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">200</int> + <reference key="object" ref="769623530"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="948374510"/> + <reference ref="96193923"/> + <reference ref="679648819"/> + <reference ref="967646866"/> + <reference ref="292991471"/> + <reference ref="817901857"/> + </object> + <reference key="parent" ref="972420730"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">219</int> + <reference key="object" ref="948374510"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">201</int> + <reference key="object" ref="96193923"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">204</int> + <reference key="object" ref="679648819"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">220</int> + <reference key="object" ref="963351320"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="270902937"/> + <reference ref="88285865"/> + <reference ref="159080638"/> + <reference ref="326711663"/> + <reference ref="447796847"/> + </object> + <reference key="parent" ref="892235320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">213</int> + <reference key="object" ref="270902937"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">210</int> + <reference key="object" ref="88285865"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">221</int> + <reference key="object" ref="159080638"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">208</int> + <reference key="object" ref="326711663"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">209</int> + <reference key="object" ref="447796847"/> + <reference key="parent" ref="963351320"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">57</int> + <reference key="object" ref="110575045"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="238522557"/> + <reference ref="755159360"/> + <reference ref="908899353"/> + <reference ref="632727374"/> + <reference ref="646227648"/> + <reference ref="609285721"/> + <reference ref="481834944"/> + <reference ref="304266470"/> + <reference ref="1046388886"/> + <reference ref="1056857174"/> + <reference ref="342932134"/> + </object> + <reference key="parent" ref="694149608"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">58</int> + <reference key="object" ref="238522557"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">134</int> + <reference key="object" ref="755159360"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">150</int> + <reference key="object" ref="908899353"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">136</int> + <reference key="object" ref="632727374"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">144</int> + <reference key="object" ref="646227648"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">129</int> + <reference key="object" ref="609285721"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">143</int> + <reference key="object" ref="481834944"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">236</int> + <reference key="object" ref="304266470"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">131</int> + <reference key="object" ref="1046388886"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="752062318"/> + </object> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">149</int> + <reference key="object" ref="1056857174"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">145</int> + <reference key="object" ref="342932134"/> + <reference key="parent" ref="110575045"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">130</int> + <reference key="object" ref="752062318"/> + <reference key="parent" ref="1046388886"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">24</int> + <reference key="object" ref="835318025"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="299356726"/> + <reference ref="625202149"/> + <reference ref="575023229"/> + <reference ref="1011231497"/> + </object> + <reference key="parent" ref="713487014"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">92</int> + <reference key="object" ref="299356726"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="625202149"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">239</int> + <reference key="object" ref="575023229"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">23</int> + <reference key="object" ref="1011231497"/> + <reference key="parent" ref="835318025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">295</int> + <reference key="object" ref="586577488"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="466310130"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">296</int> + <reference key="object" ref="466310130"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="102151532"/> + <reference ref="237841660"/> + </object> + <reference key="parent" ref="586577488"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">297</int> + <reference key="object" ref="102151532"/> + <reference key="parent" ref="466310130"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">298</int> + <reference key="object" ref="237841660"/> + <reference key="parent" ref="466310130"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">211</int> + <reference key="object" ref="676164635"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="785027613"/> + </object> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">212</int> + <reference key="object" ref="785027613"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="680220178"/> + <reference ref="731782645"/> + </object> + <reference key="parent" ref="676164635"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">195</int> + <reference key="object" ref="680220178"/> + <reference key="parent" ref="785027613"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">196</int> + <reference key="object" ref="731782645"/> + <reference key="parent" ref="785027613"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">346</int> + <reference key="object" ref="967646866"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">348</int> + <reference key="object" ref="507821607"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="698887838"/> + </object> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">349</int> + <reference key="object" ref="698887838"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="605118523"/> + <reference ref="197661976"/> + <reference ref="708854459"/> + <reference ref="618524225"/> + <reference ref="63225254"/> + <reference ref="430156352"/> + <reference ref="511468581"/> + </object> + <reference key="parent" ref="507821607"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">350</int> + <reference key="object" ref="605118523"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">351</int> + <reference key="object" ref="197661976"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">354</int> + <reference key="object" ref="708854459"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">374</int> + <reference key="object" ref="470804886"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="892078337"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">375</int> + <reference key="object" ref="892078337"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="417081885"/> + <reference ref="236885983"/> + </object> + <reference key="parent" ref="470804886"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">376</int> + <reference key="object" ref="417081885"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1063883570"/> + </object> + <reference key="parent" ref="892078337"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">387</int> + <reference key="object" ref="1063883570"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="174638318"/> + <reference ref="481459203"/> + <reference ref="275470842"/> + <reference ref="319949941"/> + <reference ref="692549729"/> + <reference ref="410574898"/> + <reference ref="234445462"/> + <reference ref="364585565"/> + <reference ref="53157584"/> + <reference ref="29382803"/> + <reference ref="1035117790"/> + <reference ref="707650671"/> + <reference ref="871758183"/> + <reference ref="750501226"/> + <reference ref="721121421"/> + <reference ref="331522238"/> + </object> + <reference key="parent" ref="417081885"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">388</int> + <reference key="object" ref="174638318"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">389</int> + <reference key="object" ref="481459203"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">390</int> + <reference key="object" ref="275470842"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">391</int> + <reference key="object" ref="319949941"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">392</int> + <reference key="object" ref="692549729"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">393</int> + <reference key="object" ref="410574898"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">394</int> + <reference key="object" ref="234445462"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">395</int> + <reference key="object" ref="364585565"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">396</int> + <reference key="object" ref="53157584"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="249492784"/> + </object> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">397</int> + <reference key="object" ref="29382803"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="481842979"/> + </object> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">398</int> + <reference key="object" ref="1035117790"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="228490898"/> + </object> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">399</int> + <reference key="object" ref="707650671"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">400</int> + <reference key="object" ref="871758183"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">401</int> + <reference key="object" ref="750501226"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">402</int> + <reference key="object" ref="721121421"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">403</int> + <reference key="object" ref="331522238"/> + <reference key="parent" ref="1063883570"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">404</int> + <reference key="object" ref="228490898"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="897580362"/> + <reference ref="78871505"/> + <reference ref="17354335"/> + <reference ref="670533225"/> + <reference ref="654494087"/> + </object> + <reference key="parent" ref="1035117790"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">405</int> + <reference key="object" ref="897580362"/> + <reference key="parent" ref="228490898"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">406</int> + <reference key="object" ref="78871505"/> + <reference key="parent" ref="228490898"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">407</int> + <reference key="object" ref="17354335"/> + <reference key="parent" ref="228490898"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">408</int> + <reference key="object" ref="670533225"/> + <reference key="parent" ref="228490898"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">409</int> + <reference key="object" ref="654494087"/> + <reference key="parent" ref="228490898"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">410</int> + <reference key="object" ref="481842979"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1023090053"/> + <reference ref="592961422"/> + <reference ref="1070261725"/> + </object> + <reference key="parent" ref="29382803"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">411</int> + <reference key="object" ref="1023090053"/> + <reference key="parent" ref="481842979"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">412</int> + <reference key="object" ref="592961422"/> + <reference key="parent" ref="481842979"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">413</int> + <reference key="object" ref="1070261725"/> + <reference key="parent" ref="481842979"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">414</int> + <reference key="object" ref="249492784"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="621871957"/> + <reference ref="287782986"/> + <reference ref="1054746601"/> + <reference ref="927944004"/> + </object> + <reference key="parent" ref="53157584"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">415</int> + <reference key="object" ref="621871957"/> + <reference key="parent" ref="249492784"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">416</int> + <reference key="object" ref="287782986"/> + <reference key="parent" ref="249492784"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">417</int> + <reference key="object" ref="1054746601"/> + <reference key="parent" ref="249492784"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">418</int> + <reference key="object" ref="927944004"/> + <reference key="parent" ref="249492784"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">419</int> + <reference key="object" ref="739804602"/> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">449</int> + <reference key="object" ref="981774355"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="769264466"/> + </object> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">450</int> + <reference key="object" ref="769264466"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="372238911"/> + <reference ref="740446531"/> + <reference ref="1063332286"/> + </object> + <reference key="parent" ref="981774355"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">451</int> + <reference key="object" ref="372238911"/> + <reference key="parent" ref="769264466"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">452</int> + <reference key="object" ref="740446531"/> + <reference key="parent" ref="769264466"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">453</int> + <reference key="object" ref="1063332286"/> + <reference key="parent" ref="769264466"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">457</int> + <reference key="object" ref="618524225"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">458</int> + <reference key="object" ref="63225254"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">459</int> + <reference key="object" ref="430156352"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">462</int> + <reference key="object" ref="511468581"/> + <reference key="parent" ref="698887838"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">464</int> + <reference key="object" ref="292991471"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">465</int> + <reference key="object" ref="817901857"/> + <reference key="parent" ref="769623530"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">470</int> + <reference key="object" ref="763435172"/> + <reference key="parent" ref="789758025"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">491</int> + <reference key="object" ref="1050483726"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="388842427"/> + </object> + <reference key="parent" ref="649796088"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">492</int> + <reference key="object" ref="388842427"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="253952766"/> + </object> + <reference key="parent" ref="1050483726"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">493</int> + <reference key="object" ref="253952766"/> + <reference key="parent" ref="388842427"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">495</int> + <reference key="object" ref="236885983"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="832896799"/> + </object> + <reference key="parent" ref="892078337"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">496</int> + <reference key="object" ref="832896799"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="322518776"/> + <reference ref="184724819"/> + <reference ref="8380150"/> + <reference ref="631715353"/> + <reference ref="602033965"/> + <reference ref="14288410"/> + <reference ref="844247483"/> + <reference ref="905923487"/> + <reference ref="366255619"/> + <reference ref="483902452"/> + </object> + <reference key="parent" ref="236885983"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">497</int> + <reference key="object" ref="322518776"/> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">498</int> + <reference key="object" ref="184724819"/> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">499</int> + <reference key="object" ref="8380150"/> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">500</int> + <reference key="object" ref="631715353"/> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">501</int> + <reference key="object" ref="602033965"/> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">502</int> + <reference key="object" ref="14288410"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="546157535"/> + </object> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">503</int> + <reference key="object" ref="844247483"/> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">504</int> + <reference key="object" ref="905923487"/> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">505</int> + <reference key="object" ref="366255619"/> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">506</int> + <reference key="object" ref="483902452"/> + <reference key="parent" ref="832896799"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">507</int> + <reference key="object" ref="546157535"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="982064965"/> + <reference ref="996409883"/> + <reference ref="891995539"/> + <reference ref="966562699"/> + <reference ref="840271773"/> + <reference ref="330651237"/> + <reference ref="435535051"/> + <reference ref="50065340"/> + <reference ref="838497762"/> + </object> + <reference key="parent" ref="14288410"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">508</int> + <reference key="object" ref="982064965"/> + <reference key="parent" ref="546157535"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">509</int> + <reference key="object" ref="996409883"/> + <reference key="parent" ref="546157535"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">510</int> + <reference key="object" ref="891995539"/> + <reference key="parent" ref="546157535"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">511</int> + <reference key="object" ref="966562699"/> + <reference key="parent" ref="546157535"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">512</int> + <reference key="object" ref="840271773"/> + <reference key="parent" ref="546157535"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">513</int> + <reference key="object" ref="330651237"/> + <reference key="parent" ref="546157535"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">514</int> + <reference key="object" ref="435535051"/> + <reference key="parent" ref="546157535"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">515</int> + <reference key="object" ref="50065340"/> + <reference key="parent" ref="546157535"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">516</int> + <reference key="object" ref="838497762"/> + <reference key="parent" ref="546157535"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>-3.IBPluginDependency</string> + <string>112.IBPluginDependency</string> + <string>112.ImportedFromIB2</string> + <string>124.IBPluginDependency</string> + <string>124.ImportedFromIB2</string> + <string>125.IBPluginDependency</string> + <string>125.ImportedFromIB2</string> + <string>125.editorWindowContentRectSynchronizationRect</string> + <string>126.IBPluginDependency</string> + <string>126.ImportedFromIB2</string> + <string>129.IBPluginDependency</string> + <string>129.ImportedFromIB2</string> + <string>130.IBPluginDependency</string> + <string>130.ImportedFromIB2</string> + <string>130.editorWindowContentRectSynchronizationRect</string> + <string>131.IBPluginDependency</string> + <string>131.ImportedFromIB2</string> + <string>134.IBPluginDependency</string> + <string>134.ImportedFromIB2</string> + <string>136.IBPluginDependency</string> + <string>136.ImportedFromIB2</string> + <string>143.IBPluginDependency</string> + <string>143.ImportedFromIB2</string> + <string>144.IBPluginDependency</string> + <string>144.ImportedFromIB2</string> + <string>145.IBPluginDependency</string> + <string>145.ImportedFromIB2</string> + <string>149.IBPluginDependency</string> + <string>149.ImportedFromIB2</string> + <string>150.IBPluginDependency</string> + <string>150.ImportedFromIB2</string> + <string>19.IBPluginDependency</string> + <string>19.ImportedFromIB2</string> + <string>195.IBPluginDependency</string> + <string>195.ImportedFromIB2</string> + <string>196.IBPluginDependency</string> + <string>196.ImportedFromIB2</string> + <string>197.IBPluginDependency</string> + <string>197.ImportedFromIB2</string> + <string>198.IBPluginDependency</string> + <string>198.ImportedFromIB2</string> + <string>199.IBPluginDependency</string> + <string>199.ImportedFromIB2</string> + <string>200.IBEditorWindowLastContentRect</string> + <string>200.IBPluginDependency</string> + <string>200.ImportedFromIB2</string> + <string>200.editorWindowContentRectSynchronizationRect</string> + <string>201.IBPluginDependency</string> + <string>201.ImportedFromIB2</string> + <string>202.IBPluginDependency</string> + <string>202.ImportedFromIB2</string> + <string>203.IBPluginDependency</string> + <string>203.ImportedFromIB2</string> + <string>204.IBPluginDependency</string> + <string>204.ImportedFromIB2</string> + <string>205.IBEditorWindowLastContentRect</string> + <string>205.IBPluginDependency</string> + <string>205.ImportedFromIB2</string> + <string>205.editorWindowContentRectSynchronizationRect</string> + <string>206.IBPluginDependency</string> + <string>206.ImportedFromIB2</string> + <string>207.IBPluginDependency</string> + <string>207.ImportedFromIB2</string> + <string>208.IBPluginDependency</string> + <string>208.ImportedFromIB2</string> + <string>209.IBPluginDependency</string> + <string>209.ImportedFromIB2</string> + <string>210.IBPluginDependency</string> + <string>210.ImportedFromIB2</string> + <string>211.IBPluginDependency</string> + <string>211.ImportedFromIB2</string> + <string>212.IBEditorWindowLastContentRect</string> + <string>212.IBPluginDependency</string> + <string>212.ImportedFromIB2</string> + <string>212.editorWindowContentRectSynchronizationRect</string> + <string>213.IBPluginDependency</string> + <string>213.ImportedFromIB2</string> + <string>214.IBPluginDependency</string> + <string>214.ImportedFromIB2</string> + <string>215.IBPluginDependency</string> + <string>215.ImportedFromIB2</string> + <string>216.IBPluginDependency</string> + <string>216.ImportedFromIB2</string> + <string>217.IBPluginDependency</string> + <string>217.ImportedFromIB2</string> + <string>218.IBPluginDependency</string> + <string>218.ImportedFromIB2</string> + <string>219.IBPluginDependency</string> + <string>219.ImportedFromIB2</string> + <string>220.IBEditorWindowLastContentRect</string> + <string>220.IBPluginDependency</string> + <string>220.ImportedFromIB2</string> + <string>220.editorWindowContentRectSynchronizationRect</string> + <string>221.IBPluginDependency</string> + <string>221.ImportedFromIB2</string> + <string>23.IBPluginDependency</string> + <string>23.ImportedFromIB2</string> + <string>236.IBPluginDependency</string> + <string>236.ImportedFromIB2</string> + <string>239.IBPluginDependency</string> + <string>239.ImportedFromIB2</string> + <string>24.IBEditorWindowLastContentRect</string> + <string>24.IBPluginDependency</string> + <string>24.ImportedFromIB2</string> + <string>24.editorWindowContentRectSynchronizationRect</string> + <string>29.IBEditorWindowLastContentRect</string> + <string>29.IBPluginDependency</string> + <string>29.ImportedFromIB2</string> + <string>29.WindowOrigin</string> + <string>29.editorWindowContentRectSynchronizationRect</string> + <string>295.IBPluginDependency</string> + <string>296.IBPluginDependency</string> + <string>296.editorWindowContentRectSynchronizationRect</string> + <string>297.IBPluginDependency</string> + <string>298.IBPluginDependency</string> + <string>346.IBPluginDependency</string> + <string>346.ImportedFromIB2</string> + <string>348.IBPluginDependency</string> + <string>348.ImportedFromIB2</string> + <string>349.IBEditorWindowLastContentRect</string> + <string>349.IBPluginDependency</string> + <string>349.ImportedFromIB2</string> + <string>349.editorWindowContentRectSynchronizationRect</string> + <string>350.IBPluginDependency</string> + <string>350.ImportedFromIB2</string> + <string>351.IBPluginDependency</string> + <string>351.ImportedFromIB2</string> + <string>354.IBPluginDependency</string> + <string>354.ImportedFromIB2</string> + <string>374.IBPluginDependency</string> + <string>375.IBEditorWindowLastContentRect</string> + <string>375.IBPluginDependency</string> + <string>376.IBPluginDependency</string> + <string>387.IBPluginDependency</string> + <string>388.IBPluginDependency</string> + <string>389.IBPluginDependency</string> + <string>390.IBPluginDependency</string> + <string>391.IBPluginDependency</string> + <string>392.IBPluginDependency</string> + <string>393.IBPluginDependency</string> + <string>394.IBPluginDependency</string> + <string>395.IBPluginDependency</string> + <string>396.IBPluginDependency</string> + <string>397.IBPluginDependency</string> + <string>398.IBPluginDependency</string> + <string>399.IBPluginDependency</string> + <string>400.IBPluginDependency</string> + <string>401.IBPluginDependency</string> + <string>402.IBPluginDependency</string> + <string>403.IBPluginDependency</string> + <string>404.IBPluginDependency</string> + <string>405.IBPluginDependency</string> + <string>406.IBPluginDependency</string> + <string>407.IBPluginDependency</string> + <string>408.IBPluginDependency</string> + <string>409.IBPluginDependency</string> + <string>410.IBPluginDependency</string> + <string>411.IBPluginDependency</string> + <string>412.IBPluginDependency</string> + <string>413.IBPluginDependency</string> + <string>414.IBPluginDependency</string> + <string>415.IBPluginDependency</string> + <string>416.IBPluginDependency</string> + <string>417.IBPluginDependency</string> + <string>418.IBPluginDependency</string> + <string>449.IBPluginDependency</string> + <string>450.IBEditorWindowLastContentRect</string> + <string>450.IBPluginDependency</string> + <string>451.IBPluginDependency</string> + <string>452.IBPluginDependency</string> + <string>453.IBPluginDependency</string> + <string>457.IBPluginDependency</string> + <string>458.IBPluginDependency</string> + <string>459.IBPluginDependency</string> + <string>462.IBPluginDependency</string> + <string>464.IBPluginDependency</string> + <string>465.IBPluginDependency</string> + <string>470.IBPluginDependency</string> + <string>491.IBPluginDependency</string> + <string>492.IBEditorWindowLastContentRect</string> + <string>492.IBPluginDependency</string> + <string>493.IBPluginDependency</string> + <string>495.IBPluginDependency</string> + <string>496.IBEditorWindowLastContentRect</string> + <string>496.IBPluginDependency</string> + <string>497.IBPluginDependency</string> + <string>498.IBPluginDependency</string> + <string>499.IBPluginDependency</string> + <string>5.IBPluginDependency</string> + <string>5.ImportedFromIB2</string> + <string>500.IBPluginDependency</string> + <string>501.IBPluginDependency</string> + <string>502.IBPluginDependency</string> + <string>503.IBPluginDependency</string> + <string>504.IBPluginDependency</string> + <string>505.IBPluginDependency</string> + <string>506.IBPluginDependency</string> + <string>507.IBEditorWindowLastContentRect</string> + <string>507.IBPluginDependency</string> + <string>508.IBPluginDependency</string> + <string>509.IBPluginDependency</string> + <string>510.IBPluginDependency</string> + <string>511.IBPluginDependency</string> + <string>512.IBPluginDependency</string> + <string>513.IBPluginDependency</string> + <string>514.IBPluginDependency</string> + <string>515.IBPluginDependency</string> + <string>516.IBPluginDependency</string> + <string>56.IBPluginDependency</string> + <string>56.ImportedFromIB2</string> + <string>57.IBEditorWindowLastContentRect</string> + <string>57.IBPluginDependency</string> + <string>57.ImportedFromIB2</string> + <string>57.editorWindowContentRectSynchronizationRect</string> + <string>58.IBPluginDependency</string> + <string>58.ImportedFromIB2</string> + <string>72.IBPluginDependency</string> + <string>72.ImportedFromIB2</string> + <string>73.IBPluginDependency</string> + <string>73.ImportedFromIB2</string> + <string>74.IBPluginDependency</string> + <string>74.ImportedFromIB2</string> + <string>75.IBPluginDependency</string> + <string>75.ImportedFromIB2</string> + <string>77.IBPluginDependency</string> + <string>77.ImportedFromIB2</string> + <string>78.IBPluginDependency</string> + <string>78.ImportedFromIB2</string> + <string>79.IBPluginDependency</string> + <string>79.ImportedFromIB2</string> + <string>80.IBPluginDependency</string> + <string>80.ImportedFromIB2</string> + <string>81.IBEditorWindowLastContentRect</string> + <string>81.IBPluginDependency</string> + <string>81.ImportedFromIB2</string> + <string>81.editorWindowContentRectSynchronizationRect</string> + <string>82.IBPluginDependency</string> + <string>82.ImportedFromIB2</string> + <string>83.IBPluginDependency</string> + <string>83.ImportedFromIB2</string> + <string>92.IBPluginDependency</string> + <string>92.ImportedFromIB2</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{522, 812}, {146, 23}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{436, 809}, {64, 6}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{656, 201}, {275, 113}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{608, 612}, {275, 83}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{624, 103}, {254, 283}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{197, 734}, {243, 243}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{656, 211}, {164, 43}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{608, 612}, {167, 43}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{642, 251}, {238, 103}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{608, 612}, {241, 103}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{784, 313}, {194, 73}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{525, 802}, {197, 73}}</string> + <string>{{404, 386}, {512, 20}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{74, 862}</string> + <string>{{11, 977}, {478, 20}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{475, 832}, {234, 43}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{642, 181}, {220, 133}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{608, 612}, {215, 63}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{668, 343}, {83, 43}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{786, 257}, {170, 63}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{855, 363}, {246, 23}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{751, 183}, {204, 183}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{955, 103}, {164, 173}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{416, 203}, {275, 183}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{23, 794}, {245, 183}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{582, 183}, {196, 203}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>{{155, 774}, {199, 203}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <integer value="1"/> + </object> + </object> + <object class="NSMutableDictionary" key="unlocalizedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="activeLocalization"/> + <object class="NSMutableDictionary" key="localizations"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">529</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <string key="superclassName">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="792844335"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="991670291"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="257558826"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSBrowser</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSControl</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="627707158"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSControl.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSDocument</string> + <string key="superclassName">NSObject</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>printDocument:</string> + <string>revertDocumentToSaved:</string> + <string>runPageLayout:</string> + <string>saveDocument:</string> + <string>saveDocumentAs:</string> + <string>saveDocumentTo:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDocument.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSDocument</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDocumentScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSDocumentController</string> + <string key="superclassName">NSObject</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>clearRecentDocuments:</string> + <string>newDocument:</string> + <string>openDocument:</string> + <string>saveAllDocuments:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDocumentController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSFontManager</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="261055306"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSFormatter</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMatrix</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMenu</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="425330748"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMenuItem</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="773997640"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMovieView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMovieView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="792844335"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="991670291"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="257558826"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="627707158"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="261055306"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="425330748"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="689122037"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="473051448"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSError.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSObject.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSThread.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURL.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTableView</string> + <string key="superclassName">NSControl</string> + <reference key="sourceIdentifier" ref="689122037"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSText</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSText.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTextView</string> + <string key="superclassName">NSText</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <reference key="sourceIdentifier" ref="773997640"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <string key="superclassName">NSResponder</string> + <reference key="sourceIdentifier" ref="473051448"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <string key="superclassName">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string> + </object> + </object> + </object> + </object> + <int key="IBDocument.localizationMode">0</int> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer value="1060" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> + <integer value="3000" key="NS.object.0"/> + </object> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <string key="IBDocument.LastKnownRelativeProjectPath">../../CocoaDocApp.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> diff --git a/openbis-ipad/BisMac/main.m b/openbis-ipad/BisMac/main.m new file mode 100644 index 00000000000..152e3a8c525 --- /dev/null +++ b/openbis-ipad/BisMac/main.m @@ -0,0 +1,29 @@ +/* + * Copyright 2012 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// +// main.m +// BisMac +// +// Created by cramakri on 07.08.12. +// +// + +#import <Cocoa/Cocoa.h> + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/openbis-ipad/BisMacTests/BisMacTests-Info.plist b/openbis-ipad/BisMacTests/BisMacTests-Info.plist new file mode 100644 index 00000000000..97998e7372a --- /dev/null +++ b/openbis-ipad/BisMacTests/BisMacTests-Info.plist @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIdentifier</key> + <string>ch.ethz.cisd.${PRODUCT_NAME:rfc1034identifier}</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>BNDL</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1</string> +</dict> +</plist> diff --git a/openbis-ipad/BisMacTests/BisMacTests-Prefix.pch b/openbis-ipad/BisMacTests/BisMacTests-Prefix.pch new file mode 100644 index 00000000000..3bbcb84c330 --- /dev/null +++ b/openbis-ipad/BisMacTests/BisMacTests-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'BisMacTests' target in the 'BisMacTests' project +// + +#ifdef __OBJC__ + #import <Cocoa/Cocoa.h> +#endif diff --git a/openbis-ipad/BisMacTests/BisMacTests.h b/openbis-ipad/BisMacTests/BisMacTests.h new file mode 100644 index 00000000000..d11386c486e --- /dev/null +++ b/openbis-ipad/BisMacTests/BisMacTests.h @@ -0,0 +1,17 @@ +// +// BisMacTests.h +// BisMacTests +// +// Created by cramakri on 07.08.12. +// +// + +#import <SenTestingKit/SenTestingKit.h> + + +@interface BisMacTests : SenTestCase { +@private + +} + +@end diff --git a/openbis-ipad/BisMacTests/BisMacTests.m b/openbis-ipad/BisMacTests/BisMacTests.m new file mode 100644 index 00000000000..307f2312e7f --- /dev/null +++ b/openbis-ipad/BisMacTests/BisMacTests.m @@ -0,0 +1,33 @@ +// +// BisMacTests.m +// BisMacTests +// +// Created by cramakri on 07.08.12. +// +// + +#import "BisMacTests.h" + + +@implementation BisMacTests + +- (void)setUp +{ + [super setUp]; + + // Set-up code here. +} + +- (void)tearDown +{ + // Tear-down code here. + + [super tearDown]; +} + +- (void)testExample +{ + +} + +@end diff --git a/openbis-ipad/BisMacTests/en.lproj/InfoPlist.strings b/openbis-ipad/BisMacTests/en.lproj/InfoPlist.strings new file mode 100644 index 00000000000..477b28ff8f8 --- /dev/null +++ b/openbis-ipad/BisMacTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + -- GitLab