diff --git a/openbis-ipad/.gitignore b/openbis-ipad/.gitignore deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/openbis-ipad/BisKit/Classes/CISDOBAsyncCall.h b/openbis-ipad/BisKit/Classes/CISDOBAsyncCall.h new file mode 100644 index 0000000000000000000000000000000000000000..b3d2872a2e16bf51a0e2270e42ff613b490dc6c8 --- /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 0000000000000000000000000000000000000000..9f72f1e2184fc09fe00c04f6d29d7975f66a2585 --- /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 0000000000000000000000000000000000000000..0d0f19df750bc5346eccca30195adba587b494c2 --- /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 0000000000000000000000000000000000000000..9fbc5ee99e022183c30cb850d64f6ebccdf2b851 --- /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 0000000000000000000000000000000000000000..71d2e19f421303d8830c5a2264ffe043002d1bae --- /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 0000000000000000000000000000000000000000..e299ee667d5b102702a72a15f3e61517907fe865 --- /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 0000000000000000000000000000000000000000..a7506acbe45172111d54072c2c6566061a58499c --- /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 0000000000000000000000000000000000000000..d533292eff797d739134c946df075a0a14be6b2d --- /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 0000000000000000000000000000000000000000..c87bfca93d2aad1b93c6124c5bb0d47c4a89d67e --- /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 0000000000000000000000000000000000000000..59b0237c40457f22571a5a53162cafbe12b2c659 --- /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 0000000000000000000000000000000000000000..ac3a306fcafb5059c0cac7d0832290fbcd99a74d --- /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 0000000000000000000000000000000000000000..b0c04e093daec28a833efbfcf1c4d041cb9dc863 --- /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 0000000000000000000000000000000000000000..905589cbbb807655d33529e5b0c3d1db2860aec7 --- /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 0000000000000000000000000000000000000000..15b0d3f3d6890fff0b208061827b6d5f35bba050 --- /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 0000000000000000000000000000000000000000..e5dda25eeeca67f1e6906a87ab53b12debbc555e --- /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 0000000000000000000000000000000000000000..1f759bbbd3adda82c29c6488835691572ee3fea1 --- /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 0000000000000000000000000000000000000000..a08344272975fb5335cac93e2faa288f4aa3321a --- /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 0000000000000000000000000000000000000000..6a2a2414163cf9bbd591789dfbc58481bcba0bb5 --- /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 0000000000000000000000000000000000000000..70e22bebd04b0df8632ef1e7b77add2ec6c5edd0 --- /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 0000000000000000000000000000000000000000..23678b27b212e539fe08dc8cbaca7084e5a19df1 --- /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 Binary files /dev/null and b/openbis-ipad/BisMac.xcodeproj/project.xcworkspace/xcuserdata/cramakri.xcuserdatad/UserInterfaceState.xcuserstate differ 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 0000000000000000000000000000000000000000..6ff33e6031ab04c443a8d439adb83f67eb5f4385 --- /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 0000000000000000000000000000000000000000..05301bc253830381195ba116901612a8e115bfa7 --- /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 0000000000000000000000000000000000000000..b479a1bac517f9e55ccb61a777dd91952356d595 --- /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 0000000000000000000000000000000000000000..ff73167ff84a687dc45d8213addc318d29c1d44c --- /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 0000000000000000000000000000000000000000..a063d393c93d21768d2c7add675db36f2558ed20 --- /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 0000000000000000000000000000000000000000..8b571d6af211a5e0fbbe81723a7f6f0deabfc310 --- /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 0000000000000000000000000000000000000000..d8fc76b205853fbb2581a0f5eea2eb1f4ef02b43 --- /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 0000000000000000000000000000000000000000..4b7209a8c077df01222821b6311763f6d4755ea5 --- /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 0000000000000000000000000000000000000000..b44415f94695676c373abfaf123e5cd66b38fb12 --- /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 0000000000000000000000000000000000000000..895842c8ba17914b37f60c2e852e17d1cdc19dca --- /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 Binary files /dev/null and b/openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/BisMacDocument.xcdatamodel/elements differ 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 Binary files /dev/null and b/openbis-ipad/BisMac/BisMacDocument.xcdatamodeld/BisMacDocument.xcdatamodel/layout differ diff --git a/openbis-ipad/BisMac/en.lproj/BisMacDocument.xib b/openbis-ipad/BisMac/en.lproj/BisMacDocument.xib new file mode 100644 index 0000000000000000000000000000000000000000..e9f9503c14735758699cc1c2b4c5717e09c6cda6 --- /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 0000000000000000000000000000000000000000..46576ef211d18155ae1997e26c209a97ff1ec7ec --- /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 0000000000000000000000000000000000000000..477b28ff8f86a3158a71c4934fbd3a2456717d7a --- /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 0000000000000000000000000000000000000000..3a384cd8b52ebc21ad4761f51d6d30cb046c38ed --- /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 0000000000000000000000000000000000000000..152e3a8c52588fe5f76958462b53ddd95418a970 --- /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 0000000000000000000000000000000000000000..97998e7372aad1daae50d895994b58d3ad792df7 --- /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 0000000000000000000000000000000000000000..3bbcb84c330d905f616fea0e50e7a6f722ec2f17 --- /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 0000000000000000000000000000000000000000..d11386c486e1147fe8c97b382926ea4b40964dac --- /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 0000000000000000000000000000000000000000..307f2312e7f5272aa12d8172bf8ddcd43a02fb0f --- /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 0000000000000000000000000000000000000000..477b28ff8f86a3158a71c4934fbd3a2456717d7a --- /dev/null +++ b/openbis-ipad/BisMacTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ +