diff --git a/README b/README index e69de29..f21eee3 100644 --- a/README +++ b/README @@ -0,0 +1,67 @@ +sc3ctrl +======= + +************************************************************************** +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +************************************************************************** + + +Introduction +============ + +sc3ctrl is a command line utility which uses OpenSoundControl to control +the SuperCollider3.app in OSX. + +Source code/downloads: http://github.com/rfwatson/sc3ctrl + + +Installation +============ + +1) Drag the bundle into a suitable location on your machine + (such as /Application/Utilities/) + +2) Double click "install.rb". (This will create an executable script in +/usr/local/lib. This allows sc3ctrl to be run from the command-line. It also +copies the required SuperCollider class file to ~/Application\ +Support/SuperCollider/Extensions/). + +3) Start SuperCollider.app + + +Usage +===== + +sc3ctrl -x Execute the SC code in environment variable SC_INTERPRET_TEXT + +sc3ctrl -x VARIABLE_NAME Execute the SC code in environment variable VARIABLE_NAME + +sc3ctrl -d classname Open the help file for classname + +sc3ctrl -j classname Open the class definition for classname + +sc3ctrl -y methodname Examine implementations of methodname + +sc3ctrl -Y methodname Examine references to methodname + +sc3ctrl -s Stop server (CMD-PERIOD) + +sc3ctrl -c Clear post window + +sc3ctrl -p Post window to front + +sc3ctrl -k Recompile class library (requires recent build) + diff --git a/SC3Controller.m b/SC3Controller.m index 0072989..d172aa0 100644 --- a/SC3Controller.m +++ b/SC3Controller.m @@ -19,7 +19,6 @@ return self; } - - (void)interpretContentsOfEnvironmentVariable:(const char *)var { char *utf8cmd = getenv(var); diff --git a/build/Release/README b/build/Release/README new file mode 100644 index 0000000..a11d57f --- /dev/null +++ b/build/Release/README @@ -0,0 +1,66 @@ +************************************************************************** +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +************************************************************************** + + +Introduction +============ + +sc3ctrl is a command line utility which uses OpenSoundControl to control +the SuperCollider3.app in OSX. + +Consists of a small CoreFoundation bundle written in Objective-C and a +single SuperCollider class. + +Source code: http://github.com/rfwatson/sc3ctrl + + +Installation +============ + +1) Drag the bundle into a suitable location on your machine + (e.g. /Application/Utilities/) + +2) cd /Application/Utilities/sc3ctrl/ + +3) sudo install.rb + +4) Start SuperCollider.app + + +Usage +===== + +sc3ctrl -x Execute the SC code in environment variable SC_INTERPRET_TEXT + +sc3ctrl -x VARIABLE_NAME Execute the SC code in environment variable VARIABLE_NAME + +sc3ctrl -d classname Open help file for classname + +sc3ctrl -j classname Open class definition for classname + +sc3ctrl -y methodname Examine implementations of methodname + +sc3ctrl -Y methodname Examine references to methodname + +sc3ctrl -s Stop server (CMD-PERIOD) + +sc3ctrl -c Clear post window + +sc3ctrl -p Post window to front + +sc3ctrl -k Recompile class library (requires recent build) + diff --git a/build/Release/SC3Controller.sc b/build/Release/SC3Controller.sc new file mode 100644 index 0000000..f2c66c8 --- /dev/null +++ b/build/Release/SC3Controller.sc @@ -0,0 +1,140 @@ +// http://github.com/rfwatson/sc3ctrl + +SC3Controller { + classvar nodes; + + *addListeners { + var node; + if(nodes.isEmpty) { + node = OSCresponderNode(nil, '/sc3ctrl/cmd') { |t, r, msg| + msg[1].asString.interpretPrint; + { postToFront.() }.defer; + }.add; + nodes.add(node); + + node = OSCresponderNode(nil, '/sc3ctrl/help') { |t, r, msg| + { msg[1].asString.openHelpFile }.defer + }.add; + nodes.add(node); + + node = OSCresponderNode(nil, '/sc3ctrl/class') { |t, r, msg| + { msg[1].asString.interpret.openCodeFile }.defer + }.add; + nodes.add(node); + + node = OSCresponderNode(nil, '/sc3ctrl/implementations') { |t, r, msg| + { SC3Controller.methodTemplates(msg[1]) }.defer + }.add; + nodes.add(node); + + node = OSCresponderNode(nil, '/sc3ctrl/references') { |t, r, msg| + { SC3Controller.methodReferences(msg[1]) }.defer + }.add; + nodes.add(node); + + node = OSCresponderNode(nil, '/sc3ctrl/stop') { |t, r, msg| + thisProcess.stop; + }.add; + nodes.add(node); + + node = OSCresponderNode(nil, '/sc3ctrl/clear') { |t, r, msg| + { + Document.listener.string = ""; ""; + postToFront.(); + }.defer; + }.add; + nodes.add(node); + + node = OSCresponderNode(nil, '/sc3ctrl/postfront') { |t, r, msg| + { postToFront.() }.defer; + }.add; + nodes.add(node); + + node = OSCresponderNode(nil, '/sc3ctrl/recompile') { |t, r, msg| + { + thisProcess.recompile; + postToFront.(); + }.defer; + }.add; + nodes.add(node); + } + } + + *removeAllListeners { + nodes.do(_.remove); + } + + *initClass { + var postToFront; + nodes = List[]; + + Platform.case(\osx) { + postToFront = { + Document.listener.front; + }; + + StartUp.add { + this.addListeners; + } + } + } + + // adapated from Kernel.sc + *methodTemplates { |name| + var out, found = 0, namestring; + out = CollStream.new; + out << "Implementations of '" << name << "' :\n"; + Class.allClasses.do({ arg class; + class.methods.do({ arg method; + if (method.name == name, { + found = found + 1; + namestring = class.name ++ ":" ++ name; + out << " " << namestring << " : "; + if (method.argNames.isNil or: { method.argNames.size == 1 }, { + out << "this." << name; + if (name.isSetter, { out << "(val)"; }); + },{ + out << method.argNames.at(0); + if (name.asString.at(0).isAlpha, { + out << "." << name << "("; + method.argNames.do({ arg argName, i; + if (i > 0, { + if (i != 1, { out << ", " }); + out << argName; + }); + }); + out << ")"; + },{ + out << " " << name << " "; + out << method.argNames.at(1); + }); + }); + out.nl; + }); + }); + }); + if(found == 0) + { + Post << "\nNo implementations of '" << name << "'.\n"; + } + { + out.collection.newTextWindow(name.asString); + }; + } + + // adapted from Kernel.sc + *methodReferences { |name| + var out, references; + name = name.asSymbol; + out = CollStream.new; + references = Class.findAllReferences(name); + + if (references.notNil, { + out << "References to '" << name << "' :\n"; + references.do({ arg ref; out << " " << ref.asString << "\n"; }); + out.collection.newTextWindow(name.asString); + },{ + Post << "\nNo references to '" << name << "'.\n"; + }); + } +} \ No newline at end of file diff --git a/build/Release/VVOSC.framework/Headers b/build/Release/VVOSC.framework/Headers new file mode 120000 index 0000000..a177d2a --- /dev/null +++ b/build/Release/VVOSC.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/build/Release/VVOSC.framework/Resources b/build/Release/VVOSC.framework/Resources new file mode 120000 index 0000000..953ee36 --- /dev/null +++ b/build/Release/VVOSC.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/build/Release/VVOSC.framework/VVOSC b/build/Release/VVOSC.framework/VVOSC new file mode 120000 index 0000000..c6a43b0 --- /dev/null +++ b/build/Release/VVOSC.framework/VVOSC @@ -0,0 +1 @@ +Versions/Current/VVOSC \ No newline at end of file diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/AddressValPair.h b/build/Release/VVOSC.framework/Versions/A/Headers/AddressValPair.h new file mode 100644 index 0000000..e8ab9ca --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/AddressValPair.h @@ -0,0 +1,28 @@ +// +// AddressValPair.h +// VVOSC +// +// Created by bagheera on 12/11/08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#if IPHONE +#import +#else +#import +#endif + + + +@interface AddressValPair : NSObject { + NSString *address; + id val; +} + ++ (id) createWithAddress:(NSString *)a val:(id)v; +- (id) initWithAddress:(NSString *)a val:(id)v; + +- (NSString *) address; +- (id) val; + +@end diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/OSCBundle.h b/build/Release/VVOSC.framework/Versions/A/Headers/OSCBundle.h new file mode 100644 index 0000000..712f13a --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/OSCBundle.h @@ -0,0 +1,34 @@ +// +// OSCBundle.h +// OSC +// +// Created by bagheera on 9/20/08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#if IPHONE +#import +#else +#import +#endif + +#import "OSCMessage.h" + + + + +@interface OSCBundle : NSObject { + NSMutableArray *elementArray; // array of messages or bundles +} + ++ (void) parseRawBuffer:(unsigned char *)b ofMaxLength:(int)l toInPort:(id)p; + ++ (id) create; + +- (void) addElement:(id)n; +- (void) addElementArray:(NSArray *)a; + +- (int) bufferLength; +- (void) writeToBuffer:(unsigned char *)b; + +@end diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/OSCInPort.h b/build/Release/VVOSC.framework/Versions/A/Headers/OSCInPort.h new file mode 100644 index 0000000..3f1fa83 --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/OSCInPort.h @@ -0,0 +1,93 @@ +// +// OSCInPort.h +// OSC +// +// Created by bagheera on 9/20/08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#if IPHONE +#import +#else +#import +#endif + + +//#import +//#import +#import + +#import +#import "AddressValPair.h" +#import "OSCPacket.h" +#import "OSCBundle.h" +#import "OSCMessage.h" + + +@protocol OSCInPortDelegateProtocol +- (void) oscMessageReceived:(NSDictionary *)d; +- (void) receivedOSCVal:(id)v forAddress:(NSString *)a; +@end + +@protocol OSCDelegateProtocol +- (void) oscMessageReceived:(NSDictionary *)d; +- (void) receivedOSCVal:(id)v forAddress:(NSString *)a; +@end + + +@interface OSCInPort : NSObject { + BOOL deleted; // whether or not i'm deleted- ensures that socket gets closed + BOOL bound; // whether or not the socket is bound + int sock; // socket file descriptor. remember, everything in unix is files! + struct sockaddr_in addr; // struct that describes *my* address (this is an in port) + unsigned short port; // the port number i'm receiving from + BOOL running; // whether or not i should keep running + BOOL busy; + unsigned char buf[8192]; // the socket gets data and dumps it here immediately + + pthread_mutex_t lock; + NSTimer *threadTimer; + int threadTimerCount; + NSAutoreleasePool *threadPool; + + NSString *portLabel; // the "name" of the port (added to distinguish multiple osc input ports for bonjour) + NSNetService *zeroConfDest; // bonjour service for publishing this input's address...only active if there's a portLabel! + + NSMutableDictionary *scratchDict; // key of dict is address port; object at key is a mut. array. coalesced messaging. + NSMutableArray *scratchArray; // array of AddressValPair objects. used for serial messaging. + id delegate; // my delegate gets notified of incoming messages +} + ++ (id) createWithPort:(unsigned short)p; ++ (id) createWithPort:(unsigned short)p labelled:(NSString *)n; +- (id) initWithPort:(unsigned short)p; +- (id) initWithPort:(unsigned short)p labelled:(NSString *)n; + +- (void) prepareToBeDeleted; + +- (NSDictionary *) createSnapshot; + +- (BOOL) createSocket; +- (void) start; +- (void) stop; +- (void) launchOSCLoop:(id)o; +- (void) OSCThreadProc:(NSTimer *)t; +- (void) parseRawBuffer:(unsigned char *)b ofMaxLength:(int)l; + +// if the delegate im +- (void) handleParsedScratchDict:(NSDictionary *)d; +- (void) handleScratchArray:(NSArray *)a; + +- (void) addValue:(id)val toAddressPath:(NSString *)p; + +- (unsigned short) port; +- (void) setPort:(unsigned short)n; +- (NSString *) portLabel; +- (void) setPortLabel:(NSString *)n; +- (NSNetService *) zeroConfDest; +- (BOOL) bound; + +- (id) delegate; +- (void) setDelegate:(id)n; + +@end diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/OSCManager.h b/build/Release/VVOSC.framework/Versions/A/Headers/OSCManager.h new file mode 100644 index 0000000..5673296 --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/OSCManager.h @@ -0,0 +1,144 @@ +// +// OSCManager.h +// OSC +// +// Created by bagheera on 9/20/08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#if IPHONE +#import +#else +#import +#endif + +#import "OSCZeroConfManager.h" +#import "OSCInPort.h" +#import "OSCOutPort.h" +#import + +/* + TOP-LEVEL OVERVIEW + + this osc manager class is all you need to add to your app. it has methods for + adding and removing ports. you can have as many osc managers as you like, but + you should really only need one instance. + + input ports have a delegate- delegate methods are called as the port receives data. + it's important to note that the delegate methods must be thread-safe: each input + port is running on its own (non-main) thread. + + data is sent via the output ports (convenience methods for doing this are built + into the osc manager). + + + + + GENERAL OSC STRUCTURE AND OVERVIEW + + this framework was written from the OSC spec found here: + http://opensoundcontrol.org/spec-1_0 + + - an OSC packet is the basic unit of transmitting OSC data. + - an OSC packet consists of: + - contents- contiguous block of binary data (either a bundle or a message), and then the + - size- number of 8-bit bytes that comprise 'contents'- ALWAYS multiple of 4! + - an OSC message consists of: + - an OSC address pattern (starting with '/'), followed by + - an OSC type tag string, followed by + - zero or more 'OSC arguments' + - an OSC bundle consists of: + - the OSC-string "#bundle", followed by + - an OSC time tag, followed by + - zero or more 'OSC bundle elements' + - an OSC bundle element consists of: + - 'size' (int32)- number of 8-bit bytes in the contents- ALWAYS multiple of 4! + - 'contents'- either another OSC bundle, or an OSC message + + + + + PORTS- SENDING AND RECEIVING UDP/TCP DATA + + some basic information, gleaned from: + http://beej.us/guide/bgnet/output/html/multipage/index.html + + struct sockaddr { + unsigned short sa_family; // address family, AF_xxx + char sa_data[14]; // 14 bytes of protocol address + } + struct sockaddr_in { + short int sin_family; // address family + unsigned short int sin_port; // port number + struct in_addr sin_addr; // internet address + unsigned char sin_zero[8]; // exists so sockaddr_in has same length as sockaddr + } + + recv(int sockfd, void *buf, int len, unsigned int flags); + - sockfd is the socket descriptor to read from + - buf is the buffer to read the information into + - len is the max length of the buffer + - flags can be set to 0 + recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen); + - from is a pointer to a local struct sockaddr that will be filled with the IP & port of the originating machine + - fromlen is a pointer to a local int that should be initialized to a sizeof(struct sockaddr)- contains length of address actually stored in from on return + ...as well as the 4 params listed above in recv() + + int select(int numfds, fd_set *readrds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); +*/ + +@interface OSCManager : NSObject { + NSMutableArray *inPortArray; + NSMutableArray *outPortArray; + + pthread_rwlock_t inPortLock; + pthread_rwlock_t outPortLock; + + id delegate; + + OSCZeroConfManager *zeroConfManager; // bonjour/zero-configuration manager +} + +- (void) deleteAllInputs; +- (void) deleteAllOutputs; +// methods for creating input ports +- (OSCInPort *) createNewInputFromSnapshot:(NSDictionary *)s; +- (OSCInPort *) createNewInputForPort:(int)p withLabel:(NSString *)l; +- (OSCInPort *) createNewInputForPort:(int)p; +- (OSCInPort *) createNewInput; +// methods for creating output ports +- (OSCOutPort *) createNewOutputFromSnapshot:(NSDictionary *)s; +- (OSCOutPort *) createNewOutputToAddress:(NSString *)a atPort:(int)p withLabel:(NSString *)l; +- (OSCOutPort *) createNewOutputToAddress:(NSString *)a atPort:(int)p; +- (OSCOutPort *) createNewOutput; + +// typically, the manager is the input port's delegate- input ports tell delegates when they receive data +// this method is called and contains coalesced messages (grouped by address path) +- (void) oscMessageReceived:(NSDictionary *)d; +// this method is called every time any osc val is processed +- (void) receivedOSCVal:(id)v forAddress:(NSString *)a; + +// methods for working with ports +- (NSString *) getUniqueInputLabel; +- (NSString *) getUniqueOutputLabel; +- (OSCInPort *) findInputWithLabel:(NSString *)n; +- (OSCOutPort *) findOutputWithLabel:(NSString *)n; +- (OSCOutPort *) findOutputWithAddress:(NSString *)a andPort:(int)p; +- (OSCOutPort *) findOutputForIndex:(int)i; +- (OSCInPort *) findInputWithZeroConfName:(NSString *)n; +- (void) removeInput:(id)p; +- (void) removeOutput:(id)p; +- (NSArray *) outPortLabelArray; + +// subclassable methods for customizing +- (id) inPortClass; +- (NSString *) inPortLabelBase; +- (id) outPortClass; + +// misc +- (id) delegate; +- (void) setDelegate:(id)n; +- (NSMutableArray *) inPortArray; +- (NSMutableArray *) outPortArray; + +@end diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/OSCMessage.h b/build/Release/VVOSC.framework/Versions/A/Headers/OSCMessage.h new file mode 100644 index 0000000..e86444c --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/OSCMessage.h @@ -0,0 +1,43 @@ +// +// OSCMessage.h +// OSC +// +// Created by bagheera on 9/20/08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#if IPHONE +#import +#else +#import +#endif + +#import + + + +@interface OSCMessage : NSObject { + NSString *address; + NSMutableArray *typeArray; + NSMutableArray *argArray; + pthread_rwlock_t lock; +} + ++ (void) parseRawBuffer:(unsigned char *)b ofMaxLength:(int)l toInPort:(id)p; ++ (id) createMessageToAddress:(NSString *)a; +- (id) initWithAddress:(NSString *)a; + +- (void) addInt:(int)n; +- (void) addFloat:(float)n; +#if IPHONE +- (void) addColor:(UIColor *)c; +#else +- (void) addColor:(NSColor *)c; +#endif +- (void) addBOOL:(BOOL)n; +- (void) addString:(NSString *)n; + +- (int) bufferLength; +- (void) writeToBuffer:(unsigned char *)b; + +@end diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/OSCOutPort.h b/build/Release/VVOSC.framework/Versions/A/Headers/OSCOutPort.h new file mode 100644 index 0000000..859b046 --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/OSCOutPort.h @@ -0,0 +1,58 @@ +// +// OSCOutPort.h +// OSC +// +// Created by bagheera on 9/20/08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#if IPHONE +#import +#else +#import +#endif + + +#include + +#import "OSCPacket.h" +#import "OSCBundle.h" +#import "OSCMessage.h" + + + + +@interface OSCOutPort : NSObject { + BOOL deleted; + int sock; + struct sockaddr_in addr; + unsigned short port; + NSString *addressString; + NSString *portLabel; // used it to distinguish between multiple osc outputs +} + ++ (id) createWithAddress:(NSString *)a andPort:(unsigned short)p; ++ (id) createWithAddress:(NSString *)a andPort:(unsigned short)p labelled:(NSString *)l; +- (id) initWithAddress:(NSString *)a andPort:(unsigned short)p; +- (id) initWithAddress:(NSString *)a andPort:(unsigned short)p labelled:(NSString *)l; +- (void) prepareToBeDeleted; + +- (NSDictionary *) createSnapshot; + +- (BOOL) createSocket; + +- (void) sendThisBundle:(OSCBundle *)b; +- (void) sendThisMessage:(OSCMessage *)m; +- (void) sendThisPacket:(OSCPacket *)p; + +- (void) setAddressString:(NSString *)n; +- (void) setPort:(unsigned short)p; +- (void) setAddressString:(NSString *)n andPort:(unsigned short)p; + +- (NSString *) portLabel; +- (void) setPortLabel:(NSString *)n; + +- (unsigned short) port; +- (NSString *) addressString; + +@end diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/OSCPacket.h b/build/Release/VVOSC.framework/Versions/A/Headers/OSCPacket.h new file mode 100644 index 0000000..4d79674 --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/OSCPacket.h @@ -0,0 +1,37 @@ +// +// OSCPacket.h +// OSC +// +// Created by bagheera on 9/20/08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#if IPHONE +#import +#else +#import +#endif + +#include +#import "OSCBundle.h" +#import "OSCMessage.h" + +/* + this class requires a bundle or message on create/init. the buffer/msg + is NOT retained by this class in any way- it's used to immediately create + the buffer which will be sent. +*/ + +@interface OSCPacket : NSObject { + int bufferLength; + unsigned char *payload; +} + ++ (void) parseRawBuffer:(unsigned char *)b ofMaxLength:(int)l toInPort:(id)p; ++ (id) createWithContent:(id)c; +- (id) initWithContent:(id)c; + +- (int) bufferLength; +- (unsigned char *) payload; + +@end diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/OSCZeroConfDomain.h b/build/Release/VVOSC.framework/Versions/A/Headers/OSCZeroConfDomain.h new file mode 100644 index 0000000..22a94bc --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/OSCZeroConfDomain.h @@ -0,0 +1,44 @@ +// +// OSCZeroConfDomain.h +// VVOSC +// +// Created by bagheera on 12/9/08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#if IPHONE +#import +#else +#import +#endif + +#import +#import +#include + + + + +@interface OSCZeroConfDomain : NSObject { + NSString *domainString; + NSNetServiceBrowser *serviceBrowser; + + NSMutableArray *servicesArray; + pthread_rwlock_t servicesLock; + + id domainManager; +} + ++ (id) createWithDomain:(NSString *)d andDomainManager:(id)m; +- (id) initWithDomain:(NSString *)d andDomainManager:(id)m; + +// NSNetServiceBrowser delegate methods +- (void)netServiceBrowser:(NSNetServiceBrowser *)n didFindService:(NSNetService *)x moreComing:(BOOL)m; +- (void)netServiceBrowser:(NSNetServiceBrowser *)n didNotSearch:(NSDictionary *)err; +- (void)netServiceBrowser:(NSNetServiceBrowser *)n didRemoveService:(NSNetService *)s moreComing:(BOOL)m; + +// NSNetService delegate methods +- (void)netService:(NSNetService *)n didNotResolve:(NSDictionary *)err; +- (void)netServiceDidResolveAddress:(NSNetService *)n; + +@end diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/OSCZeroConfManager.h b/build/Release/VVOSC.framework/Versions/A/Headers/OSCZeroConfManager.h new file mode 100644 index 0000000..21ddd7f --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/OSCZeroConfManager.h @@ -0,0 +1,39 @@ +// +// OSCZeroConfManager.h +// VVOSC +// +// Created by bagheera on 12/9/08. +// Copyright 2008 __MyCompanyName__. All rights reserved. +// + +#if IPHONE +#import +#else +#import +#endif + +#import "OSCZeroConfDomain.h" +#import + + + + +@interface OSCZeroConfManager : NSObject { + NSNetServiceBrowser *domainBrowser; + + NSMutableDictionary *domainDict; + pthread_rwlock_t domainLock; + + id oscManager; +} + +- (id) initWithOSCManager:(id)m; + +- (void) serviceRemoved:(NSNetService *)s; +- (void) serviceResolved:(NSNetService *)s; + +// NSNetServiceBrowser delegate methods +- (void)netServiceBrowser:(NSNetServiceBrowser *)n didFindDomain:(NSString *)d moreComing:(BOOL)m; +- (void)netServiceBrowser:(NSNetServiceBrowser *)n didNotSearch:(NSDictionary *)err; + +@end diff --git a/build/Release/VVOSC.framework/Versions/A/Headers/VVOSC.h b/build/Release/VVOSC.framework/Versions/A/Headers/VVOSC.h new file mode 100644 index 0000000..0248ef1 --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Headers/VVOSC.h @@ -0,0 +1,9 @@ + + +#import "AddressValPair.h" +#import "OSCManager.h" +#import "OSCZeroConfManager.h" +#import "OSCPacket.h" +#import "OSCBundle.h" +#import "OSCMessage.h" + diff --git a/build/Release/VVOSC.framework/Versions/A/Resources/English.lproj/InfoPlist.strings b/build/Release/VVOSC.framework/Versions/A/Resources/English.lproj/InfoPlist.strings new file mode 100644 index 0000000..dea12de Binary files /dev/null and b/build/Release/VVOSC.framework/Versions/A/Resources/English.lproj/InfoPlist.strings differ diff --git a/build/Release/VVOSC.framework/Versions/A/Resources/Info.plist b/build/Release/VVOSC.framework/Versions/A/Resources/Info.plist new file mode 100644 index 0000000..5dfb179 --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + VVOSC + CFBundleGetInfoString + 0.1.2 + CFBundleIdentifier + com.vidvox.VVOSC + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + VVOSC + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + 0.1.2 + + diff --git a/build/Release/VVOSC.framework/Versions/A/VVOSC b/build/Release/VVOSC.framework/Versions/A/VVOSC new file mode 100755 index 0000000..878f6e1 Binary files /dev/null and b/build/Release/VVOSC.framework/Versions/A/VVOSC differ diff --git a/build/Release/VVOSC.framework/Versions/Current b/build/Release/VVOSC.framework/Versions/Current new file mode 120000 index 0000000..8c7e5a6 --- /dev/null +++ b/build/Release/VVOSC.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/build/Release/install.rb b/build/Release/install.rb new file mode 100755 index 0000000..c052a9a --- /dev/null +++ b/build/Release/install.rb @@ -0,0 +1,17 @@ +#!/usr/bin/env ruby + +puts "Ready to install sc3ctrl." +puts "Press ENTER to continue." +gets + +puts "Creating executable in /usr/local/bin .." +%x{echo "`pwd`/sc3ctrl \\$1 \\$2" > /usr/local/bin/sc3ctrl} +%x{chmod a+x /usr/local/bin/sc3ctrl} +puts "Done." + +puts +puts "Copying SuperCollider class to Extensions folder .." +system 'cp SC3Controller.sc ~/Library/Application\ Support/SuperCollider/Extensions/' +puts "Done." + +puts \ No newline at end of file diff --git a/build/Release/sc3ctrl b/build/Release/sc3ctrl new file mode 100755 index 0000000..251521d Binary files /dev/null and b/build/Release/sc3ctrl differ diff --git a/install.rb b/install.rb new file mode 100644 index 0000000..a2122fa --- /dev/null +++ b/install.rb @@ -0,0 +1,3 @@ +#!/usr/bin/env ruby + +echo "This script will " \ No newline at end of file diff --git a/sc3ctrl.xcodeproj/project.pbxproj b/sc3ctrl.xcodeproj/project.pbxproj index f0eb206..620453f 100644 --- a/sc3ctrl.xcodeproj/project.pbxproj +++ b/sc3ctrl.xcodeproj/project.pbxproj @@ -8,13 +8,30 @@ /* Begin PBXBuildFile section */ 5671631B0EFE70500047EA2B /* SC3Controller.m in Sources */ = {isa = PBXBuildFile; fileRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; }; - 567164C90EFE933D0047EA2B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB779EFE84155DC02AAC07 /* Foundation.framework */; }; 567165410EFE98A90047EA2B /* VVOSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 567165400EFE98A90047EA2B /* VVOSC.framework */; }; + 567167160EFECB0A0047EA2B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 567167150EFECB0A0047EA2B /* Foundation.framework */; }; + 5671672F0EFECD9B0047EA2B /* VVOSC.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 567165400EFE98A90047EA2B /* VVOSC.framework */; }; + 567167640EFECFDC0047EA2B /* SC3Controller.sc in CopyFiles */ = {isa = PBXBuildFile; fileRef = 567167630EFECFD80047EA2B /* SC3Controller.sc */; }; + 5671676B0EFEDC6E0047EA2B /* README in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5671676A0EFEDC650047EA2B /* README */; }; + 567167770EFEDCBC0047EA2B /* install.rb in CopyFiles */ = {isa = PBXBuildFile; fileRef = 567167760EFEDCB50047EA2B /* install.rb */; }; 8DD76F9A0486AA7600D96B5E /* sc3ctrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* sc3ctrl.m */; settings = {ATTRIBUTES = (); }; }; 8DD76F9F0486AA7600D96B5E /* sc3ctrl.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6859EA3029092ED04C91782 /* sc3ctrl.1 */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ + 567167310EFECD9C0047EA2B /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 567167770EFEDCBC0047EA2B /* install.rb in CopyFiles */, + 5671676B0EFEDC6E0047EA2B /* README in CopyFiles */, + 567167640EFECFDC0047EA2B /* SC3Controller.sc in CopyFiles */, + 5671672F0EFECD9B0047EA2B /* VVOSC.framework in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8DD76F9E0486AA7600D96B5E /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 8; @@ -29,13 +46,16 @@ /* Begin PBXFileReference section */ 08FB7796FE84155DC02AAC07 /* sc3ctrl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = sc3ctrl.m; sourceTree = ""; }; - 08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32A70AAB03705E1F00C91783 /* sc3ctrl_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sc3ctrl_Prefix.pch; sourceTree = ""; }; 567162BF0EFE62AD0047EA2B /* sc3ctrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sc3ctrl.h; path = Projects/sc3ctrl/sc3ctrl.h; sourceTree = DEVELOPER_DIR; }; 567163190EFE70500047EA2B /* SC3Controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SC3Controller.h; path = Projects/sc3ctrl/SC3Controller.h; sourceTree = DEVELOPER_DIR; }; 5671631A0EFE70500047EA2B /* SC3Controller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SC3Controller.m; path = Projects/sc3ctrl/SC3Controller.m; sourceTree = DEVELOPER_DIR; }; 567163FE0EFE87020047EA2B /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = debug.h; path = Projects/sc3ctrl/debug.h; sourceTree = DEVELOPER_DIR; }; 567165400EFE98A90047EA2B /* VVOSC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = VVOSC.framework; path = ../vvosc/build/Release/VVOSC.framework; sourceTree = SOURCE_ROOT; }; + 567167150EFECB0A0047EA2B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = ../../../System/Library/Frameworks/Foundation.framework; sourceTree = SOURCE_ROOT; }; + 567167630EFECFD80047EA2B /* SC3Controller.sc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = SC3Controller.sc; path = supercollider/SC3Controller.sc; sourceTree = SOURCE_ROOT; }; + 5671676A0EFEDC650047EA2B /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README; path = Projects/sc3ctrl/README; sourceTree = DEVELOPER_DIR; }; + 567167760EFEDCB50047EA2B /* install.rb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.ruby; name = install.rb; path = Projects/sc3ctrl/install.rb; sourceTree = DEVELOPER_DIR; }; 8DD76FA10486AA7600D96B5E /* sc3ctrl */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = sc3ctrl; sourceTree = BUILT_PRODUCTS_DIR; }; C6859EA3029092ED04C91782 /* sc3ctrl.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = sc3ctrl.1; sourceTree = ""; }; /* End PBXFileReference section */ @@ -45,8 +65,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 567164C90EFE933D0047EA2B /* Foundation.framework in Frameworks */, 567165410EFE98A90047EA2B /* VVOSC.framework in Frameworks */, + 567167160EFECB0A0047EA2B /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -67,6 +87,7 @@ 08FB7795FE84155DC02AAC07 /* Source */ = { isa = PBXGroup; children = ( + 567167630EFECFD80047EA2B /* SC3Controller.sc */, 567163190EFE70500047EA2B /* SC3Controller.h */, 5671631A0EFE70500047EA2B /* SC3Controller.m */, 567162BF0EFE62AD0047EA2B /* sc3ctrl.h */, @@ -80,8 +101,8 @@ 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = { isa = PBXGroup; children = ( + 567167150EFECB0A0047EA2B /* Foundation.framework */, 567165400EFE98A90047EA2B /* VVOSC.framework */, - 08FB779EFE84155DC02AAC07 /* Foundation.framework */, ); name = "External Frameworks and Libraries"; sourceTree = ""; @@ -90,6 +111,7 @@ isa = PBXGroup; children = ( 8DD76FA10486AA7600D96B5E /* sc3ctrl */, + 567167760EFEDCB50047EA2B /* install.rb */, ); name = Products; sourceTree = ""; @@ -97,6 +119,7 @@ C6859EA2029092E104C91782 /* Documentation */ = { isa = PBXGroup; children = ( + 5671676A0EFEDC650047EA2B /* README */, C6859EA3029092ED04C91782 /* sc3ctrl.1 */, ); name = Documentation; @@ -112,6 +135,7 @@ 8DD76F990486AA7600D96B5E /* Sources */, 8DD76F9B0486AA7600D96B5E /* Frameworks */, 8DD76F9E0486AA7600D96B5E /* CopyFiles */, + 567167310EFECD9C0047EA2B /* CopyFiles */, ); buildRules = ( ); @@ -216,7 +240,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; INSTALL_PATH = "@executable_path/../Frameworks"; LD_DYLIB_INSTALL_NAME = ""; - LD_RUNPATH_SEARCH_PATHS = "@executable_path"; + LD_RUNPATH_SEARCH_PATHS = ""; PREBINDING = NO; SDKROOT = macosx10.4; }; diff --git a/sc3ctrl.xcodeproj/rfw21.pbxuser b/sc3ctrl.xcodeproj/rfw21.pbxuser index c4f54f6..b2a1e8f 100644 --- a/sc3ctrl.xcodeproj/rfw21.pbxuser +++ b/sc3ctrl.xcodeproj/rfw21.pbxuser @@ -3,19 +3,41 @@ 08FB7793FE84155DC02AAC07 /* Project object */ = { activeBuildConfigurationName = Release; activeExecutable = 567161F40EFD3E560047EA2B /* sc3ctrl */; - activeSDKPreference = macosx10.5; + activeSDKPreference = macosx10.4; activeTarget = 8DD76F960486AA7600D96B5E /* sc3ctrl */; addToTargets = ( - 8DD76F960486AA7600D96B5E /* sc3ctrl */, ); breakpoints = ( - 567165B70EFEA7440047EA2B /* SC3Controller.m:93 */, ); codeSenseManager = 567161FA0EFD3E860047EA2B /* Code sense */; executables = ( 567161F40EFD3E560047EA2B /* sc3ctrl */, ); perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA23EDF0692099D00951B8B" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 429, + 20, + 329, + 329, + 257, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID; @@ -141,6 +163,7 @@ 567165BF0EFEA76C0047EA2B /* PBXTextBookmark */ = 567165BF0EFEA76C0047EA2B /* PBXTextBookmark */; 567165C30EFEA79E0047EA2B /* PBXTextBookmark */ = 567165C30EFEA79E0047EA2B /* PBXTextBookmark */; 567165C40EFEA7A70047EA2B /* PBXTextBookmark */ = 567165C40EFEA7A70047EA2B /* PBXTextBookmark */; + 567165C60EFEA7B60047EA2B /* PBXTextBookmark */ = 567165C60EFEA7B60047EA2B /* PBXTextBookmark */; 567165C90EFEA7BB0047EA2B /* PBXTextBookmark */ = 567165C90EFEA7BB0047EA2B /* PBXTextBookmark */; 567165CA0EFEA7C00047EA2B /* PBXTextBookmark */ = 567165CA0EFEA7C00047EA2B /* PBXTextBookmark */; 567165D00EFEA7DD0047EA2B /* PBXTextBookmark */ = 567165D00EFEA7DD0047EA2B /* PBXTextBookmark */; @@ -284,6 +307,39 @@ 5671670E0EFEC8B00047EA2B /* PBXTextBookmark */ = 5671670E0EFEC8B00047EA2B /* PBXTextBookmark */; 5671670F0EFEC8B00047EA2B /* PBXTextBookmark */ = 5671670F0EFEC8B00047EA2B /* PBXTextBookmark */; 567167100EFEC8B00047EA2B /* PBXTextBookmark */ = 567167100EFEC8B00047EA2B /* PBXTextBookmark */; + 567167110EFECA5F0047EA2B /* PBXTextBookmark */ = 567167110EFECA5F0047EA2B /* PBXTextBookmark */; + 567167190EFECB150047EA2B /* PBXTextBookmark */ = 567167190EFECB150047EA2B /* PBXTextBookmark */; + 5671671A0EFECB1E0047EA2B /* PBXTextBookmark */ = 5671671A0EFECB1E0047EA2B /* PBXTextBookmark */; + 5671671E0EFECB9C0047EA2B /* PBXTextBookmark */ = 5671671E0EFECB9C0047EA2B /* PBXTextBookmark */; + 567167200EFECC180047EA2B /* PBXTextBookmark */ = 567167200EFECC180047EA2B /* PBXTextBookmark */; + 567167210EFECC1E0047EA2B /* PBXTextBookmark */ = 567167210EFECC1E0047EA2B /* PBXTextBookmark */; + 567167250EFECCC90047EA2B /* PBXTextBookmark */ = 567167250EFECCC90047EA2B /* PBXTextBookmark */; + 567167270EFECCE60047EA2B /* PBXTextBookmark */ = 567167270EFECCE60047EA2B /* PBXTextBookmark */; + 567167280EFECD490047EA2B /* PBXTextBookmark */ = 567167280EFECD490047EA2B /* PBXTextBookmark */; + 567167290EFECD490047EA2B /* PBXTextBookmark */ = 567167290EFECD490047EA2B /* PBXTextBookmark */; + 5671672A0EFECD490047EA2B /* PBXTextBookmark */ = 5671672A0EFECD490047EA2B /* PBXTextBookmark */; + 5671672B0EFECD490047EA2B /* PBXTextBookmark */ = 5671672B0EFECD490047EA2B /* PBXTextBookmark */; + 5671672C0EFECD490047EA2B /* PBXTextBookmark */ = 5671672C0EFECD490047EA2B /* PBXTextBookmark */; + 5671672D0EFECD490047EA2B /* PBXTextBookmark */ = 5671672D0EFECD490047EA2B /* PBXTextBookmark */; + 567167300EFECD9C0047EA2B /* PBXTextBookmark */ = 567167300EFECD9C0047EA2B /* PBXTextBookmark */; + 567167510EFECEEE0047EA2B /* PBXTextBookmark */ = 567167510EFECEEE0047EA2B /* PBXTextBookmark */; + 567167570EFECF330047EA2B /* PBXTextBookmark */ = 567167570EFECF330047EA2B /* PBXTextBookmark */; + 5671675B0EFECF5A0047EA2B /* PBXTextBookmark */ = 5671675B0EFECF5A0047EA2B /* PBXTextBookmark */; + 567167610EFECF820047EA2B /* PBXTextBookmark */ = 567167610EFECF820047EA2B /* PBXTextBookmark */; + 567167660EFECFE10047EA2B /* PBXTextBookmark */ = 567167660EFECFE10047EA2B /* PBXTextBookmark */; + 567167690EFECFF50047EA2B /* PBXTextBookmark */ = 567167690EFECFF50047EA2B /* PBXTextBookmark */; + 5671676D0EFEDC740047EA2B /* PBXTextBookmark */ = 5671676D0EFEDC740047EA2B /* PBXTextBookmark */; + 5671676E0EFEDC740047EA2B /* PBXTextBookmark */ = 5671676E0EFEDC740047EA2B /* PBXTextBookmark */; + 5671676F0EFEDC740047EA2B /* PBXTextBookmark */ = 5671676F0EFEDC740047EA2B /* PBXTextBookmark */; + 567167700EFEDC740047EA2B /* PBXTextBookmark */ = 567167700EFEDC740047EA2B /* PBXTextBookmark */; + 567167710EFEDC740047EA2B /* PBXTextBookmark */ = 567167710EFEDC740047EA2B /* PBXTextBookmark */; + 567167720EFEDC740047EA2B /* PBXTextBookmark */ = 567167720EFEDC740047EA2B /* PBXTextBookmark */; + 567167730EFEDC740047EA2B /* PBXTextBookmark */ = 567167730EFEDC740047EA2B /* PBXTextBookmark */; + 567167740EFEDC740047EA2B /* PBXTextBookmark */ = 567167740EFEDC740047EA2B /* PBXTextBookmark */; + 567167790EFEDCBF0047EA2B /* PBXTextBookmark */ = 567167790EFEDCBF0047EA2B /* PBXTextBookmark */; + 5671677A0EFEDCBF0047EA2B /* PBXTextBookmark */ = 5671677A0EFEDCBF0047EA2B /* PBXTextBookmark */; + 5671677B0EFEDCBF0047EA2B /* PBXTextBookmark */ = 5671677B0EFEDCBF0047EA2B /* PBXTextBookmark */; + 5671677C0EFEDCBF0047EA2B /* PBXTextBookmark */ = 5671677C0EFEDCBF0047EA2B /* PBXTextBookmark */; }; sourceControlManager = 567161F90EFD3E860047EA2B /* Source Control */; userBuildSettings = { @@ -344,7 +400,7 @@ }; 567162BF0EFE62AD0047EA2B /* sc3ctrl.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1412, 589}}"; + sepNavIntBoundsRect = "{{0, 0}, {1412, 612}}"; sepNavSelRange = "{168, 0}"; sepNavVisRange = "{0, 168}"; }; @@ -448,7 +504,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 99"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 848; vrLoc = 1473; @@ -458,7 +514,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 111"; rLen = 5; - rLoc = 2619; + rLoc = 2618; rType = 0; vrLen = 848; vrLoc = 1473; @@ -498,7 +554,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 25"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 647; vrLoc = 0; @@ -538,7 +594,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 118"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 801; vrLoc = 1700; @@ -558,7 +614,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 25"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 667; vrLoc = 207; @@ -635,7 +691,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 45"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 367; vrLoc = 299; @@ -662,7 +718,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 45"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 635; vrLoc = 208; @@ -682,7 +738,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 45"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 635; vrLoc = 208; @@ -732,7 +788,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 31"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 900; vrLoc = 1019; @@ -792,7 +848,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 31"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 900; vrLoc = 1019; @@ -812,7 +868,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 104"; rLen = 0; - rLoc = 1609; + rLoc = 1608; rType = 0; vrLen = 706; vrLoc = 1947; @@ -822,7 +878,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 104"; rLen = 0; - rLoc = 1609; + rLoc = 1608; rType = 0; vrLen = 706; vrLoc = 1947; @@ -832,34 +888,17 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 104"; rLen = 0; - rLoc = 1609; + rLoc = 1608; rType = 0; vrLen = 347; vrLoc = 1947; }; - 567165B70EFEA7440047EA2B /* SC3Controller.m:93 */ = { - isa = PBXFileBreakpoint; - actions = ( - ); - breakpointStyle = 0; - continueAfterActions = 0; - countType = 0; - delayBeforeContinue = 0; - fileReference = 5671631A0EFE70500047EA2B /* SC3Controller.m */; - functionName = "-retrieveHelpFile:"; - hitCount = 0; - ignoreCount = 0; - lineNumber = 93; - location = sc3ctrl; - modificationTime = 251570273.464183; - state = 0; - }; 567165BB0EFEA7520047EA2B /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 706; vrLoc = 1947; @@ -869,7 +908,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 347; vrLoc = 1947; @@ -879,7 +918,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 909; vrLoc = 1658; @@ -889,7 +928,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 851; vrLoc = 1658; @@ -899,17 +938,25 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 347; vrLoc = 1947; }; + 567165C60EFEA7B60047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; + name = "-retrieveHelpFile:"; + rLen = 0; + rLoc = 91; + rType = 1; + }; 567165C90EFEA7BB0047EA2B /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 873; vrLoc = 1689; @@ -919,7 +966,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 301; vrLoc = 1531; @@ -941,7 +988,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 805; vrLoc = 1286; @@ -961,7 +1008,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 805; vrLoc = 1286; @@ -991,7 +1038,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 803; vrLoc = 1288; @@ -1021,7 +1068,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 805; vrLoc = 1286; @@ -1041,7 +1088,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 803; vrLoc = 1288; @@ -1061,7 +1108,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 301; vrLoc = 1531; @@ -1085,6 +1132,7 @@ }; 567165E60EFEA86E0047EA2B /* asm __CFToUTF8 0x919147c0 */ = { isa = PBXFileReference; + lastKnownFileType = text; path = "asm __CFToUTF8 0x919147c0"; sourceTree = ""; }; @@ -1148,7 +1196,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 119"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 803; vrLoc = 1288; @@ -1224,7 +1272,7 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1412, 1152}}"; sepNavSelRange = "{1954, 0}"; - sepNavVisRange = "{1059, 969}"; + sepNavVisRange = "{1045, 1001}"; }; }; 5671660C0EFEAA810047EA2B /* PBXTextBookmark */ = { @@ -1262,7 +1310,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 122"; rLen = 5; - rLoc = 2619; + rLoc = 2618; rType = 0; vrLen = 701; vrLoc = 1817; @@ -1292,7 +1340,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 31"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 780; vrLoc = 35; @@ -1312,7 +1360,7 @@ fRef = 5671631A0EFE70500047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 31"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 775; vrLoc = 35; @@ -1332,7 +1380,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 122"; rLen = 5; - rLoc = 2619; + rLoc = 2618; rType = 0; vrLen = 607; vrLoc = 1911; @@ -1382,7 +1430,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 29"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 771; vrLoc = 150; @@ -1392,7 +1440,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 30"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 754; vrLoc = 150; @@ -1412,7 +1460,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 27"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 754; vrLoc = 150; @@ -1422,7 +1470,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 27"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 754; vrLoc = 150; @@ -1442,7 +1490,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 114"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 648; vrLoc = 1931; @@ -1452,7 +1500,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 116"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 648; vrLoc = 1931; @@ -1472,7 +1520,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 116"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 648; vrLoc = 1931; @@ -1522,7 +1570,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 116"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 699; vrLoc = 1880; @@ -1552,7 +1600,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 130"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 648; vrLoc = 2003; @@ -1562,7 +1610,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 130"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 699; vrLoc = 1952; @@ -1582,7 +1630,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 130"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 699; vrLoc = 1952; @@ -1622,7 +1670,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 130"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 699; vrLoc = 1952; @@ -1672,7 +1720,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 48"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 645; vrLoc = 331; @@ -1682,7 +1730,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 25"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 709; vrLoc = 0; @@ -1702,7 +1750,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 25"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 709; vrLoc = 0; @@ -1742,7 +1790,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 22"; rLen = 0; - rLoc = 407; + rLoc = 406; rType = 0; vrLen = 553; vrLoc = 424; @@ -1782,7 +1830,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 25"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 709; vrLoc = 0; @@ -1802,7 +1850,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 22"; rLen = 0; - rLoc = 407; + rLoc = 406; rType = 0; vrLen = 418; vrLoc = 424; @@ -1852,7 +1900,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 22"; rLen = 0; - rLoc = 407; + rLoc = 406; rType = 0; vrLen = 553; vrLoc = 424; @@ -1904,9 +1952,9 @@ path = /Developer/Projects/sc3ctrl/SC3Controller.m; sourceTree = ""; uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1412, 2000}}"; - sepNavSelRange = "{2552, 0}"; - sepNavVisRange = "{1765, 811}"; + sepNavIntBoundsRect = "{{0, 0}, {1412, 1984}}"; + sepNavSelRange = "{175, 0}"; + sepNavVisRange = "{0, 849}"; }; }; 567166740EFEAFD20047EA2B /* PBXTextBookmark */ = { @@ -1934,7 +1982,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 85"; rLen = 0; - rLoc = 2018; + rLoc = 2017; rType = 0; vrLen = 603; vrLoc = 1303; @@ -1984,7 +2032,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 23"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 803; vrLoc = 1114; @@ -2004,7 +2052,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 23"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 780; vrLoc = 1114; @@ -2024,7 +2072,7 @@ fRef = 567166010EFEAA300047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 23"; rLen = 0; - rLoc = 408; + rLoc = 407; rType = 0; vrLen = 780; vrLoc = 1114; @@ -2044,7 +2092,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 85"; rLen = 0; - rLoc = 2018; + rLoc = 2017; rType = 0; vrLen = 603; vrLoc = 1303; @@ -2114,7 +2162,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 94"; rLen = 0; - rLoc = 2576; + rLoc = 2575; rType = 0; vrLen = 759; vrLoc = 1308; @@ -2124,7 +2172,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 92"; rLen = 0; - rLoc = 2018; + rLoc = 2017; rType = 0; vrLen = 755; vrLoc = 1308; @@ -2134,7 +2182,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 92"; rLen = 0; - rLoc = 2018; + rLoc = 2017; rType = 0; vrLen = 755; vrLoc = 1308; @@ -2164,7 +2212,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 93"; rLen = 0; - rLoc = 2019; + rLoc = 2018; rType = 0; vrLen = 723; vrLoc = 1346; @@ -2174,7 +2222,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 93"; rLen = 0; - rLoc = 2019; + rLoc = 2018; rType = 0; vrLen = 723; vrLoc = 1346; @@ -2204,7 +2252,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 100"; rLen = 0; - rLoc = 2164; + rLoc = 2163; rType = 0; vrLen = 732; vrLoc = 1516; @@ -2244,7 +2292,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 100"; rLen = 0; - rLoc = 2164; + rLoc = 2163; rType = 0; vrLen = 681; vrLoc = 1572; @@ -2254,7 +2302,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 100"; rLen = 0; - rLoc = 2164; + rLoc = 2163; rType = 0; vrLen = 732; vrLoc = 1516; @@ -2284,7 +2332,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 100"; rLen = 0; - rLoc = 2164; + rLoc = 2163; rType = 0; vrLen = 681; vrLoc = 1572; @@ -2304,7 +2352,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 109"; rLen = 0; - rLoc = 2575; + rLoc = 2574; rType = 0; vrLen = 710; vrLoc = 1737; @@ -2314,7 +2362,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 109"; rLen = 0; - rLoc = 2575; + rLoc = 2574; rType = 0; vrLen = 710; vrLoc = 1737; @@ -2344,7 +2392,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 109"; rLen = 0; - rLoc = 2575; + rLoc = 2574; rType = 0; vrLen = 710; vrLoc = 1737; @@ -2354,7 +2402,7 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 109"; rLen = 0; - rLoc = 2575; + rLoc = 2574; rType = 0; vrLen = 710; vrLoc = 1737; @@ -2384,15 +2432,366 @@ fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; name = "SC3Controller.m: 116"; rLen = 0; - rLoc = 2552; + rLoc = 2551; rType = 0; vrLen = 811; vrLoc = 1765; }; + 567167110EFECA5F0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 43"; + rLen = 0; + rLoc = 895; + rType = 0; + vrLen = 811; + vrLoc = 582; + }; + 567167190EFECB150047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 4"; + rLen = 0; + rLoc = 37; + rType = 0; + vrLen = 809; + vrLoc = 0; + }; + 5671671A0EFECB1E0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 4"; + rLen = 0; + rLoc = 37; + rType = 0; + vrLen = 849; + vrLoc = 0; + }; + 5671671E0EFECB9C0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 4"; + rLen = 0; + rLoc = 37; + rType = 0; + vrLen = 849; + vrLoc = 0; + }; + 567167200EFECC180047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 4"; + rLen = 0; + rLoc = 37; + rType = 0; + vrLen = 280; + vrLoc = 0; + }; + 567167210EFECC1E0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 4"; + rLen = 0; + rLoc = 37; + rType = 0; + vrLen = 849; + vrLoc = 0; + }; + 567167250EFECCC90047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 8"; + rLen = 0; + rLoc = 149; + rType = 0; + vrLen = 849; + vrLoc = 0; + }; + 567167270EFECCE60047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 8"; + rLen = 0; + rLoc = 149; + rType = 0; + vrLen = 849; + vrLoc = 0; + }; + 567167280EFECD490047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567162BF0EFE62AD0047EA2B /* sc3ctrl.h */; + name = "sc3ctrl.h: 12"; + rLen = 0; + rLoc = 168; + rType = 0; + vrLen = 168; + vrLoc = 0; + }; + 567167290EFECD490047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = C6859EA3029092ED04C91782 /* sc3ctrl.1 */; + name = "sc3ctrl.1: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1737; + vrLoc = 0; + }; + 5671672A0EFECD490047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 100"; + rLen = 0; + rLoc = 2203; + rType = 0; + vrLen = 911; + vrLoc = 604; + }; + 5671672B0EFECD490047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567162BF0EFE62AD0047EA2B /* sc3ctrl.h */; + name = "sc3ctrl.h: 12"; + rLen = 0; + rLoc = 168; + rType = 0; + vrLen = 168; + vrLoc = 0; + }; + 5671672C0EFECD490047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = C6859EA3029092ED04C91782 /* sc3ctrl.1 */; + name = "sc3ctrl.1: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1737; + vrLoc = 0; + }; + 5671672D0EFECD490047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 92"; + rLen = 0; + rLoc = 2018; + rType = 0; + vrLen = 813; + vrLoc = 1606; + }; + 567167300EFECD9C0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 92"; + rLen = 0; + rLoc = 2018; + rType = 0; + vrLen = 813; + vrLoc = 1606; + }; + 567167510EFECEEE0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 92"; + rLen = 0; + rLoc = 2018; + rType = 0; + vrLen = 813; + vrLoc = 1606; + }; + 567167570EFECF330047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 92"; + rLen = 0; + rLoc = 2018; + rType = 0; + vrLen = 813; + vrLoc = 1606; + }; + 5671675B0EFECF5A0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 92"; + rLen = 0; + rLoc = 2018; + rType = 0; + vrLen = 813; + vrLoc = 1606; + }; + 567167610EFECF820047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 92"; + rLen = 0; + rLoc = 2018; + rType = 0; + vrLen = 813; + vrLoc = 1606; + }; + 567167660EFECFE10047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 92"; + rLen = 0; + rLoc = 2018; + rType = 0; + vrLen = 813; + vrLoc = 1606; + }; + 567167690EFECFF50047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 92"; + rLen = 0; + rLoc = 2018; + rType = 0; + vrLen = 813; + vrLoc = 1606; + }; + 5671676A0EFEDC650047EA2B /* README */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1412, 1088}}"; + sepNavSelRange = "{2116, 0}"; + sepNavVisRange = "{0, 1390}"; + }; + }; + 5671676D0EFEDC740047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 9"; + rLen = 0; + rLoc = 175; + rType = 0; + vrLen = 849; + vrLoc = 0; + }; + 5671676E0EFEDC740047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166080EFEAA3D0047EA2B /* sc3ctrl.m */; + name = "sc3ctrl.m: 63"; + rLen = 0; + rLoc = 1954; + rType = 0; + vrLen = 1001; + vrLoc = 1045; + }; + 5671676F0EFEDC740047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5671676A0EFEDC650047EA2B /* README */; + name = "README: 68"; + rLen = 0; + rLoc = 2116; + rType = 0; + vrLen = 1390; + vrLoc = 0; + }; + 567167700EFEDC740047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567162BF0EFE62AD0047EA2B /* sc3ctrl.h */; + name = "sc3ctrl.h: 12"; + rLen = 0; + rLoc = 168; + rType = 0; + vrLen = 168; + vrLoc = 0; + }; + 567167710EFEDC740047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166710EFEAFC10047EA2B /* SC3Controller.m */; + name = "SC3Controller.m: 9"; + rLen = 0; + rLoc = 175; + rType = 0; + vrLen = 849; + vrLoc = 0; + }; + 567167720EFEDC740047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567166080EFEAA3D0047EA2B /* sc3ctrl.m */; + name = "sc3ctrl.m: 63"; + rLen = 0; + rLoc = 1954; + rType = 0; + vrLen = 1001; + vrLoc = 1045; + }; + 567167730EFEDC740047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5671676A0EFEDC650047EA2B /* README */; + name = "README: 68"; + rLen = 0; + rLoc = 2116; + rType = 0; + vrLen = 1390; + vrLoc = 0; + }; + 567167740EFEDC740047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567162BF0EFE62AD0047EA2B /* sc3ctrl.h */; + name = "sc3ctrl.h: 12"; + rLen = 0; + rLoc = 168; + rType = 0; + vrLen = 168; + vrLoc = 0; + }; + 567167760EFEDCB50047EA2B /* install.rb */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1412, 612}}"; + sepNavSelRange = "{45, 0}"; + sepNavVisRange = "{0, 45}"; + }; + }; + 567167790EFEDCBF0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567162BF0EFE62AD0047EA2B /* sc3ctrl.h */; + name = "sc3ctrl.h: 12"; + rLen = 0; + rLoc = 168; + rType = 0; + vrLen = 168; + vrLoc = 0; + }; + 5671677A0EFEDCBF0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567167760EFEDCB50047EA2B /* install.rb */; + name = "install.rb: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 0; + vrLoc = 0; + }; + 5671677B0EFEDCBF0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567162BF0EFE62AD0047EA2B /* sc3ctrl.h */; + name = "sc3ctrl.h: 12"; + rLen = 0; + rLoc = 168; + rType = 0; + vrLen = 168; + vrLoc = 0; + }; + 5671677C0EFEDCBF0047EA2B /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 567167760EFEDCB50047EA2B /* install.rb */; + name = "install.rb: 3"; + rLen = 0; + rLoc = 45; + rType = 0; + vrLen = 45; + vrLoc = 0; + }; 8DD76F960486AA7600D96B5E /* sc3ctrl */ = { activeExec = 0; executables = ( 567161F40EFD3E560047EA2B /* sc3ctrl */, ); }; + C6859EA3029092ED04C91782 /* sc3ctrl.1 */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1412, 1264}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1737}"; + }; + }; } diff --git a/sc3ctrl.xcodeproj/rfw21.perspectivev3 b/sc3ctrl.xcodeproj/rfw21.perspectivev3 index cc31b1f..a1bdcb7 100644 --- a/sc3ctrl.xcodeproj/rfw21.perspectivev3 +++ b/sc3ctrl.xcodeproj/rfw21.perspectivev3 @@ -231,6 +231,8 @@ Layout + BecomeActive + ContentConfiguration PBXBottomSmartGroupGIDs @@ -271,9 +273,11 @@ 08FB7795FE84155DC02AAC07 C6859EA2029092E104C91782 08FB779DFE84155DC02AAC07 - 08FB779EFE84155DC02AAC07 1AB674ADFE9D54B511CA2CBB 1C37FBAC04509CD000000102 + 5671655C0EFE9A030047EA2B + 5671676C0EFEDC740047EA2B + 5671672E0EFECD7F0047EA2B 1C37FAAC04509CD000000102 1C77FABC04509CD000000102 1C3E0DCA080725EA00A55177 @@ -281,8 +285,7 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 2 - 1 + 15 0 @@ -315,14 +318,12 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID 567162000EFD3EA50047EA2B PBXProjectModuleLabel - SC3Controller.m + install.rb PBXSplitModuleInNavigatorKey Split0 @@ -330,20 +331,23 @@ PBXProjectModuleGUID 567162010EFD3EA50047EA2B PBXProjectModuleLabel - SC3Controller.m + install.rb _historyCapacity 0 bookmark - 567167100EFEC8B00047EA2B + 5671677C0EFEDCBF0047EA2B history 567164430EFE8E370047EA2B 567165460EFE996B0047EA2B - 567166740EFEAFD20047EA2B 567166FD0EFEC78D0047EA2B - 5671670A0EFEC8B00047EA2B 5671670B0EFEC8B00047EA2B - 5671670C0EFEC8B00047EA2B + 567167290EFECD490047EA2B + 5671676D0EFEDC740047EA2B + 5671676E0EFEDC740047EA2B + 5671676F0EFEDC740047EA2B + 567167790EFEDCBF0047EA2B + 5671677A0EFEDCBF0047EA2B prevStack @@ -421,6 +425,13 @@ 5671670D0EFEC8B00047EA2B 5671670E0EFEC8B00047EA2B 5671670F0EFEC8B00047EA2B + 5671672A0EFECD490047EA2B + 5671672B0EFECD490047EA2B + 5671672C0EFECD490047EA2B + 567167710EFEDC740047EA2B + 567167720EFEDC740047EA2B + 567167730EFEDC740047EA2B + 5671677B0EFEDCBF0047EA2B SplitCount @@ -515,7 +526,7 @@ GeometryConfiguration Frame - {{10, 27}, {1473, 180}} + {{10, 27}, {1473, 218}} Module PBXBuildResultsModule @@ -731,8 +742,6 @@ 5 WindowOrderList - 567165EC0EFEA8780047EA2B - 567165ED0EFEA8780047EA2B 567165D60EFEA7DD0047EA2B 567165D70EFEA7DD0047EA2B /Developer/Projects/sc3ctrl/sc3ctrl.xcodeproj