Skip to content
Browse files

Initial commit

  • Loading branch information...
0 parents commit c808c7d56ba2dc26ce195e3df7024efbbd6b4012 @pmougin pmougin committed Jun 28, 2009
Showing with 20,832 additions and 0 deletions.
  1. +1 −0 .gitattributes
  2. +11 −0 .gitignore
  3. +2,371 −0 F-Script/DemoAssistant.xib
  4. +161 −0 F-Script/English.lproj/fs.nib/classes.nib
  5. +20 −0 F-Script/English.lproj/fs.nib/info.nib
  6. BIN F-Script/English.lproj/fs.nib/keyedobjects.nib
  7. +48 −0 F-Script/English.lproj/fs~.nib/classes.nib
  8. +24 −0 F-Script/English.lproj/fs~.nib/info.nib
  9. BIN F-Script/English.lproj/fs~.nib/keyedobjects.nib
  10. +33 −0 F-Script/FSDemoAssistant.h
  11. +65 −0 F-Script/FSDemoAssistant.m
  12. +43 −0 F-Script/FScriptAppController.h
  13. +474 −0 F-Script/FScriptAppController.m
  14. +100 −0 F-Script/FScriptAppPreference.nib/classes.nib
  15. +20 −0 F-Script/FScriptAppPreference.nib/info.nib
  16. BIN F-Script/FScriptAppPreference.nib/keyedobjects.nib
  17. BIN F-Script/fs.icns
  18. +10 −0 F-Script/fs_main.m
  19. +14 −0 FSTest1/DOCustom.h
  20. +73 −0 FSTest1/DOCustom.m
  21. +4 −0 FSTest1/MainMenu.nib/classes.nib
  22. +18 −0 FSTest1/MainMenu.nib/info.nib
  23. BIN FSTest1/MainMenu.nib/objects.nib
  24. +29 −0 FSTest1/main.m
  25. +14 −0 FSTest2/DOCustom.h
  26. +73 −0 FSTest2/DOCustom.m
  27. +4 −0 FSTest2/MainMenu.nib/classes.nib
  28. +18 −0 FSTest2/MainMenu.nib/info.nib
  29. BIN FSTest2/MainMenu.nib/objects.nib
  30. +29 −0 FSTest2/main.m
  31. 0 FScript.xcodeproj/Icon
  32. +1,535 −0 FScript.xcodeproj/philippemougin.perspectivev3
  33. +1,557 −0 FScript.xcodeproj/pmo.mode1
  34. +1,414 −0 FScript.xcodeproj/pmougin.mode1
  35. +1,468 −0 FScript.xcodeproj/pmougin.perspective
  36. +1,629 −0 FScript.xcodeproj/pmougin.perspectivev3
  37. +4,067 −0 FScript.xcodeproj/project.pbxproj
  38. +70 −0 FScriptFramework/Array.h
  39. +380 −0 FScriptFramework/Array.m
  40. +24 −0 FScriptFramework/ArrayPrivate.h
  41. +31 −0 FScriptFramework/ArrayRep.h
  42. +30 −0 FScriptFramework/ArrayRepBoolean.h
  43. +324 −0 FScriptFramework/ArrayRepBoolean.m
  44. +33 −0 FScriptFramework/ArrayRepBooleanAltivec.h
  45. +394 −0 FScriptFramework/ArrayRepBooleanAltivec.m
  46. +29 −0 FScriptFramework/ArrayRepBooleanPacked.h
  47. +432 −0 FScriptFramework/ArrayRepBooleanPacked.m
  48. +36 −0 FScriptFramework/ArrayRepDouble.h
  49. +1,295 −0 FScriptFramework/ArrayRepDouble.m
  50. +28 −0 FScriptFramework/ArrayRepEmpty.h
  51. +88 −0 FScriptFramework/ArrayRepEmpty.m
  52. +22 −0 FScriptFramework/ArrayRepFetchRequest.h
  53. +55 −0 FScriptFramework/ArrayRepFetchRequest.m
  54. +62 −0 FScriptFramework/ArrayRepId.h
  55. +764 −0 FScriptFramework/ArrayRepId.m
  56. +32 −0 FScriptFramework/ArrayTableView.nib/classes.nib
  57. +16 −0 FScriptFramework/ArrayTableView.nib/info.nib
  58. BIN FScriptFramework/ArrayTableView.nib/keyedobjects.nib
  59. +321 −0 FScriptFramework/BigBrowserToolbar.m
  60. +77 −0 FScriptFramework/Block.h
  61. +430 −0 FScriptFramework/Block.m
  62. +35 −0 FScriptFramework/BlockInspector.h
  63. +387 −0 FScriptFramework/BlockInspector.m
  64. +22 −0 FScriptFramework/BlockPrivate.h
  65. +88 −0 FScriptFramework/BlockRep.h
Sorry, we could not display the entire diff because too many files (439) changed.
1 .gitattributes
@@ -0,0 +1 @@
+*.pbxproj -crlf -diff -merge
11 .gitignore
@@ -0,0 +1,11 @@
+# xcode noise
+build/*
+*.pbxuser
+*.mode1v3
+
+# old skool
+.svn
+
+# osx noise
+.DS_Store
+profile
2,371 F-Script/DemoAssistant.xib
2,371 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
161 F-Script/English.lproj/fs.nib/classes.nib
@@ -0,0 +1,161 @@
+<?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>IBClasses</key>
+ <array>
+ <dict>
+ <key>CLASS</key>
+ <string>FSInterpreterView</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>object1</key>
+ <string>id</string>
+ <key>object2</key>
+ <string>id</string>
+ <key>object3</key>
+ <string>id</string>
+ <key>object4</key>
+ <string>id</string>
+ <key>object5</key>
+ <string>id</string>
+ <key>object6</key>
+ <string>id</string>
+ <key>object7</key>
+ <string>id</string>
+ <key>object8</key>
+ <string>id</string>
+ <key>object9</key>
+ <string>id</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSView</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
+ <string>NSObject</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ </dict>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>executeCurrentCommand</key>
+ <string>id</string>
+ <key>moveDown</key>
+ <string>id</string>
+ <key>moveLeft</key>
+ <string>id</string>
+ <key>moveToBeginningOfLine</key>
+ <string>id</string>
+ <key>moveToBeginningOfParagraph</key>
+ <string>id</string>
+ <key>moveToEndOfLine</key>
+ <string>id</string>
+ <key>moveToEndOfParagraph</key>
+ <string>id</string>
+ <key>moveUp</key>
+ <string>id</string>
+ <key>parenthesizeCommand</key>
+ <string>id</string>
+ <key>paste</key>
+ <string>id</string>
+ <key>saveEditedCommand</key>
+ <string>id</string>
+ <key>switchParserMode</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>ShellView</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>commandHandler</key>
+ <string>id</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>FScriptTextView</string>
+ </dict>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>enterSelection</key>
+ <string>id</string>
+ <key>findNext</key>
+ <string>id</string>
+ <key>findPrevious</key>
+ <string>id</string>
+ <key>newBigBrowser</key>
+ <string>id</string>
+ <key>orderFrontFindPanel</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>FirstResponder</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
+ <string>FScriptTextView</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSTextView</string>
+ </dict>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>newDemoAssistant</key>
+ <string>id</string>
+ <key>newKVBrowser</key>
+ <string>id</string>
+ <key>newObjectBrowser</key>
+ <string>id</string>
+ <key>showConsole</key>
+ <string>id</string>
+ <key>showInfoPanel</key>
+ <string>id</string>
+ <key>showPreferencePanel</key>
+ <string>id</string>
+ <key>updatePreference</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>FScriptAppController</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>automaticallyIntrospectDeclaredPropertiesUI</key>
+ <string>NSButton</string>
+ <key>confirmWhenQuittingUI</key>
+ <string>NSButton</string>
+ <key>displayObjectBrowserAtLaunchTimeUI</key>
+ <string>NSButton</string>
+ <key>fontSizeUI</key>
+ <string>NSTextField</string>
+ <key>infoPanel</key>
+ <string>NSPanel</string>
+ <key>interpreterView</key>
+ <string>FSInterpreterView</string>
+ <key>preferencePanel</key>
+ <string>NSPanel</string>
+ <key>runWithObjCAutomaticGarbageCollectionUI</key>
+ <string>NSButton</string>
+ <key>shouldJournalUI</key>
+ <string>NSButton</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ </array>
+ <key>IBVersion</key>
+ <string>1</string>
+</dict>
+</plist>
20 F-Script/English.lproj/fs.nib/info.nib
@@ -0,0 +1,20 @@
+<?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>IBFramework Version</key>
+ <string>677</string>
+ <key>IBLastKnownRelativeProjectPath</key>
+ <string>../../FScript.xcodeproj</string>
+ <key>IBOldestOS</key>
+ <integer>5</integer>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>869</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>9G55</string>
+ <key>targetFramework</key>
+ <string>IBCocoaFramework</string>
+</dict>
+</plist>
BIN F-Script/English.lproj/fs.nib/keyedobjects.nib
Binary file not shown.
48 F-Script/English.lproj/fs~.nib/classes.nib
@@ -0,0 +1,48 @@
+{
+ IBClasses = (
+ {CLASS = FSInterpreterView; LANGUAGE = ObjC; SUPERCLASS = NSView; },
+ {
+ ACTIONS = {
+ myAction = id;
+ newBigBrowser = id;
+ newKVBrowser = id;
+ showConsole = id;
+ showInfoPanel = id;
+ showPreferencePanel = id;
+ updatePreference = id;
+ };
+ CLASS = FScriptAppControler;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ confirmWhenQuittingUI = NSButton;
+ displayObjectBrowserAtLaunchTimeUI = NSButton;
+ fontSizeUI = NSTextField;
+ infoPanel = NSPanel;
+ interpreterView = FSInterpreterView;
+ preferencePanel = NSPanel;
+ shouldJournalUI = NSButton;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {
+ ACTIONS = {
+ enterSelection = id;
+ findNext = id;
+ findPrevious = id;
+ newBigBrowser = id;
+ orderFrontFindPanel = id;
+ };
+ CLASS = FirstResponder;
+ LANGUAGE = ObjC;
+ SUPERCLASS = NSObject;
+ },
+ {
+ ACTIONS = {test = id; };
+ CLASS = Test;
+ LANGUAGE = ObjC;
+ OUTLETS = {field = id; };
+ SUPERCLASS = NSObject;
+ }
+ );
+ IBVersion = 1;
+}
24 F-Script/English.lproj/fs~.nib/info.nib
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>116 30 540 350 0 0 1440 878 </string>
+ <key>IBEditorPositions</key>
+ <dict>
+ <key>44</key>
+ <string>60 754 398 44 0 0 1440 878 </string>
+ </dict>
+ <key>IBFramework Version</key>
+ <string>428.0</string>
+ <key>IBOldestOS</key>
+ <integer>2</integer>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>44</integer>
+ <integer>21</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8A369</string>
+</dict>
+</plist>
BIN F-Script/English.lproj/fs~.nib/keyedobjects.nib
Binary file not shown.
33 F-Script/FSDemoAssistant.h
@@ -0,0 +1,33 @@
+/* FSDemoController.h Copyright (c) 2007 Philippe Mougin. */
+/* This software is open source. See the license. */
+
+#import <Cocoa/Cocoa.h>
+#import "FSInterpreterView.h"
+
+
+@interface FSDemoAssistant : NSObject
+{
+ IBOutlet FSInterpreterView *interpreterView;
+ NSTextView *loadImage;
+ NSTextView *displayImage;
+ NSTextView *lockFocus;
+ NSTextView *perspective;
+ NSTextView *hueAdjust;
+ NSTextView *bump;
+ NSTextView *bumpAnimate;
+}
+
+@property (retain) IBOutlet NSTextView *loadImage;
+@property (retain) IBOutlet NSTextView *displayImage;
+@property (retain) IBOutlet NSTextView *lockFocus;
+@property (retain) IBOutlet NSTextView *perspective;
+@property (retain) IBOutlet NSTextView *hueAdjust;
+@property (retain) IBOutlet NSTextView *bump;
+@property (retain) IBOutlet NSTextView *bumpAnimate;
+
+- (void)activate;
+- (id)initWithInterpreterView:(FSInterpreterView *)theInterpreterView;
+- (IBAction)loadCode:sender;
+- (void)putCommand:(NSString *)command;
+
+@end
65 F-Script/FSDemoAssistant.m
@@ -0,0 +1,65 @@
+/* FSDemoController.m Copyright (c) 2007 Philippe Mougin. */
+/* This software is open source. See the license. */
+
+#import "FSDemoAssistant.h"
+#import "FSNSString.h"
+
+
+@implementation FSDemoAssistant
+
+@synthesize loadImage;
+@synthesize displayImage;
+@synthesize lockFocus;
+@synthesize perspective;
+@synthesize hueAdjust;
+@synthesize bump;
+@synthesize bumpAnimate;
+
+- (void)activate
+{
+ if (![NSBundle loadNibNamed:@"DemoAssistant" owner:self])
+ {
+ NSLog(@"Failed to load DemoAssistant nib file");
+ NSBeep();
+ return;
+ }
+}
+
+- (void) dealloc
+{
+ [interpreterView release];
+ [super dealloc];
+}
+
+- (id)initWithInterpreterView:(FSInterpreterView *)theInterpreterView
+{
+ self = [super init];
+ if (self != nil)
+ {
+ interpreterView = [theInterpreterView retain];
+ }
+ return self;
+}
+
+
+
+- (IBAction)loadCode:sender
+{
+ [self putCommand:[[self performSelector:NSSelectorFromString([sender title])] string]];
+}
+
+- (void)putCommand:(NSString *)command
+{
+ NSArray *fragments = [command componentsSeparatedByString:@" "];
+
+ for (unsigned int i = 0, n = [fragments count]; i < n; i++)
+ {
+ [interpreterView putCommand:[fragments objectAtIndex:i]];
+ [interpreterView putCommand:@" "];
+ [interpreterView display];
+ [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.05]];
+ }
+ [[interpreterView window] makeKeyWindow];
+}
+
+@end
43 F-Script/FScriptAppController.h
@@ -0,0 +1,43 @@
+/* FScriptAppController.h Copyright 1998-2006 Philippe Mougin. */
+/* This software is open source. See the license. */
+
+#import <Cocoa/Cocoa.h>
+
+@class FSInterpreterView;
+@class NSPanel;
+@class NSTextField;
+@class NSButton;
+@class NSApplication;
+
+void RestartWithCorrectGarbageCollectionSettingIfNecessary();
+
+@interface FScriptAppController : NSObject
+{
+ IBOutlet FSInterpreterView *interpreterView;
+ IBOutlet NSPanel *infoPanel;
+ IBOutlet NSPanel *preferencePanel;
+ IBOutlet NSTextField *fontSizeUI;
+ IBOutlet NSButton *shouldJournalUI;
+ IBOutlet NSButton *confirmWhenQuittingUI;
+ IBOutlet NSButton *runWithObjCAutomaticGarbageCollectionUI;
+ IBOutlet NSButton *displayObjectBrowserAtLaunchTimeUI;
+ IBOutlet NSButton *automaticallyIntrospectDeclaredPropertiesUI;
+
+ NSMenuItem *showConsoleMenuItem;
+
+ BOOL quitConfirmed;
+}
+
+- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename;
+- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender;
+
+- (void)newObjectBrowser:sender;
+- (void)showConsole:(id)sender;
+- (void)newDemoAssistant:(id)sender;
+- (void)showInfoPanel:(id)sender;
+- (void)showPreferencePanel:(id)sender;
+- (void)updatePreference:(id)sender;
+
+- (void)windowWillClose:(NSNotification *)aNotification;
+
+@end
474 F-Script/FScriptAppController.m
@@ -0,0 +1,474 @@
+/* FScriptAppController.m Copyright 1998-2009 Philippe Mougin. */
+/* This software is open source. See the license. */
+
+#import "FScriptAppController.h"
+#import <AppKit/AppKit.h>
+#import <Foundation/Foundation.h>
+#import "FSInterpreter.h"
+#import "FSInterpreterView.h"
+#import "FSSystem.h"
+#import "FSBlock.h"
+#import "FSArray.h"
+#import "FSNSString.h"
+#import <ExceptionHandling/NSExceptionHandler.h>
+#import "FSServicesProvider.h"
+#import "FSMiscTools.h"
+#import "FSDemoAssistant.h"
+#import <spawn.h>
+#import <crt_externs.h>
+
+extern char **environ;
+
+void RestartWithCorrectGarbageCollectionSettingIfNecessary()
+{
+ /* Inspired by code provided by Scotty of the Mac Developer Network. */
+ /* See http://www.mac-developer-network.com/podcasts/lnc/lnc036/ */
+
+ // NSLog(@"Entering in RestartWithCorrectGarbageCollectionSettingIfNecessary()");
+
+ NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
+
+ NSDictionary* garbageCollectionUserDefaults = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"FScriptRunWithObjCAutomaticGarbageCollection", nil];
+ [[NSUserDefaults standardUserDefaults] registerDefaults:garbageCollectionUserDefaults];
+
+ BOOL requireRestart = NO;
+
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptRunWithObjCAutomaticGarbageCollection"] == YES && [NSGarbageCollector defaultCollector] == nil)
+ {
+ // NSLog(@"unsetenv OBJC_DISABLE_GC");
+ unsetenv("OBJC_DISABLE_GC");
+ requireRestart = YES;
+ }
+ else if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptRunWithObjCAutomaticGarbageCollection"] == NO && [NSGarbageCollector defaultCollector])
+ {
+ // NSLog(@"setenv OBJC_DISABLE_GC");
+ setenv("OBJC_DISABLE_GC", "YES", 1);
+ requireRestart = YES;
+ }
+
+ if (requireRestart)
+ {
+ // NSLog(@"Require restart");
+
+ cpu_type_t cpuTypes[2];
+
+#ifdef __ppc__
+ // 32-bit PowerPC code
+ cpuTypes[0] = CPU_TYPE_POWERPC;
+#else
+#ifdef __ppc64__
+ cpuTypes[0] = CPU_TYPE_POWERPC64;
+#else
+#ifdef __i386__
+// 32-bit Intel code
+ cpuTypes[0] = CPU_TYPE_I386;
+#else
+#ifdef __x86_64__
+// 64-bit Intel code
+ cpuTypes[0] = CPU_TYPE_X86_64;
+#else
+#error UNKNOWN ARCHITECTURE
+#endif
+#endif
+#endif
+#endif
+
+ cpuTypes[1] = CPU_TYPE_ANY; // Things should work without this entry, but we use it just in case of an unforeseen problem
+
+ size_t ocount;
+ posix_spawnattr_t attribute;
+ posix_spawnattr_init(&attribute);
+ posix_spawnattr_setbinpref_np(&attribute, 2, cpuTypes, &ocount);
+
+ const int spawnReturnValue = posix_spawn(NULL, (*_NSGetArgv())[0], NULL, &attribute, *_NSGetArgv(), environ);
+
+ if(spawnReturnValue == 0)
+ {
+ exit(0);
+ }
+ else
+ {
+ perror("posix_spawn() failed, continuing...");
+ }
+ }
+
+ [pool release];
+}
+
+
+NSString *findPathToFileInLibraryWithinUserDomain(NSString *fileName)
+/*" Retuns the path to the first occurrence of fileName in a Library
+directory within the User domain. "*/
+{
+ NSString *result = nil; // the returned path
+ NSString *candidate; // candidate paths
+ NSArray *pathArray; // array of standard locations
+ NSEnumerator *pathEnumerator; // used to enumerate pathArray
+
+ pathArray = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
+ pathEnumerator = [pathArray objectEnumerator];
+
+ while(nil == result && (nil != (candidate = [pathEnumerator nextObject])))
+ {
+ result = [candidate stringByAppendingPathComponent:fileName];
+ if(![[NSFileManager defaultManager] fileExistsAtPath:result])
+ {
+ result = nil;
+ }
+ }
+ return result;
+}
+
+NSString *findPathToFileInLibraryWithinSystemDomain(NSString *fileName)
+/*" Retuns the path to the first occurrence of fileName in a Library
+directory within the System domain. "*/
+{
+ NSString *result = nil; // the returned path
+ NSString *candidate; // candidate paths
+ NSArray *pathArray; // array of standard locations
+ NSEnumerator *pathEnumerator; // used to enumerate pathArray
+
+ pathArray = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSSystemDomainMask, YES);
+ pathEnumerator = [pathArray objectEnumerator];
+
+ while(nil == result && (nil != (candidate = [pathEnumerator nextObject])))
+ {
+ result = [candidate stringByAppendingPathComponent:fileName];
+ if(![[NSFileManager defaultManager] fileExistsAtPath:result])
+ {
+ result = nil;
+ }
+ }
+ return result;
+}
+
+@interface NSUserDefaults(FSNSUserDefaults)
+- (void)setObject:(id)value forKey:(NSString *)defaultName inDomain:(NSString *)domainName;
+@end
+
+@implementation FScriptAppController
+
++ (void)initialize
+{
+ NSMutableDictionary *registrationDict = [NSMutableDictionary dictionary];
+
+ [registrationDict setObject:[NSNumber numberWithDouble:[[NSFont userFixedPitchFontOfSize:-1] pointSize]] forKey:@"FScriptFontSize"];
+ [registrationDict setObject:@"NO" forKey:@"FScriptShouldJournal"];
+ [registrationDict setObject:@"NO" forKey:@"FScriptConfirmWhenQuitting"];
+ [registrationDict setObject:@"YES" forKey:@"FScriptDisplayObjectBrowserAtLaunchTime"];
+ [registrationDict setObject:@"YES" forKey:@"FScriptRunWithObjCAutomaticGarbageCollection"];
+ [registrationDict setObject:@"YES" forKey:@"FScriptAutomaticallyIntrospectDeclaredProperties"];
+
+ [[NSUserDefaults standardUserDefaults] registerDefaults:registrationDict];
+}
+
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
+{
+ NSFileManager *fileManager = [NSFileManager defaultManager];
+ BOOL b = NO;
+ NSString *latent;
+ NSString *latentPath;
+ NSString *repositoryPath = [[NSUserDefaults standardUserDefaults] stringForKey:@"FScriptRepositoryPath"];
+ FSServicesProvider *servicesProvider;
+
+ if (!repositoryPath || ![fileManager fileExistsAtPath:repositoryPath isDirectory:&b])
+ {
+ NSString *applicationSupportDirectoryPath = findPathToFileInLibraryWithinUserDomain(@"Application Support");
+
+ if (!applicationSupportDirectoryPath)
+ {
+ NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
+
+ if ([pathArray count] > 0)
+ [fileManager createDirectoryAtPath:[[pathArray objectAtIndex:0] stringByAppendingPathComponent:@"Application Support"] attributes:nil];
+ }
+
+ applicationSupportDirectoryPath = findPathToFileInLibraryWithinUserDomain(@"Application Support");
+
+ if (applicationSupportDirectoryPath)
+ {
+ repositoryPath = [applicationSupportDirectoryPath stringByAppendingPathComponent:@"F-Script"];
+ [fileManager createDirectoryAtPath:repositoryPath attributes:nil];
+ [fileManager createDirectoryAtPath:[repositoryPath stringByAppendingPathComponent:@"classes"] attributes:nil];
+ if ([[NSUserDefaults standardUserDefaults] respondsToSelector:@selector(setObject:forKey:inDomain:)])
+ [[NSUserDefaults standardUserDefaults] setObject:repositoryPath forKey:@"FScriptRepositoryPath" inDomain:NSGlobalDomain]; // This is an undocumented Cocoa API in Mac OS X 10.1
+ else
+ [[NSUserDefaults standardUserDefaults] setObject:repositoryPath forKey:@"FScriptRepositoryPath"];
+ [[NSUserDefaults standardUserDefaults] setObject:[repositoryPath stringByAppendingPathComponent:@"journal.txt"] forKey:@"FScriptJournalName"];
+ [[NSUserDefaults standardUserDefaults] synchronize];
+ }
+ else
+ {
+ NSLog(@"Failed to create the repository in the user's \"Application Support\" directory.");
+ NSInteger choice = NSRunAlertPanel(@"Instalation" , @"F-Script is about to create a directory named \"FScriptRepository\" in your home directory. This directory will be used as a repository for things like extension bundles for F-Script and a journal file.", @"create the repository", @"don't create the repository", @"create the repository elsewhere...");
+
+ if (choice == NSAlertOtherReturn || choice == NSAlertDefaultReturn)
+ {
+ if (choice == NSAlertOtherReturn)
+ {
+ NSOpenPanel *openPanel = [NSOpenPanel openPanel];
+ [openPanel setCanChooseFiles:NO];
+ [openPanel setCanChooseDirectories:YES];
+ [openPanel setTitle:@"Choose the directory that will become the F-Script repository"];
+
+ if([openPanel runModal] == NSOKButton) repositoryPath = [openPanel filename];
+ else repositoryPath = nil;
+ }
+ else repositoryPath = [NSHomeDirectory() stringByAppendingPathComponent:@"FScriptRepository"];
+
+ if (repositoryPath)
+ {
+
+ if ([[NSUserDefaults standardUserDefaults] respondsToSelector:@selector(setObject:forKey:inDomain:)])
+ [[NSUserDefaults standardUserDefaults] setObject:repositoryPath forKey:@"FScriptRepositoryPath" inDomain:NSGlobalDomain]; // This is an undocumented Cocoa API in Mac OS X 10.1
+ else
+ [[NSUserDefaults standardUserDefaults] setObject:repositoryPath forKey:@"FScriptRepositoryPath"];
+
+ //[[NSUserDefaults standardUserDefaults] setObject:repositoryPath forKey:@"FScriptRepositoryPath"];
+ [fileManager createDirectoryAtPath:repositoryPath attributes:nil];
+ [fileManager createDirectoryAtPath:[repositoryPath stringByAppendingPathComponent:@"classes"] attributes:nil];
+
+ [[NSUserDefaults standardUserDefaults] setObject:[repositoryPath stringByAppendingPathComponent:@"journal.txt"] forKey:@"FScriptJournalName"];
+ }
+ }
+ }
+ }
+ else if (!(b && [fileManager isWritableFileAtPath:repositoryPath])) // partial consistency check
+ {
+ NSLog([NSString stringWithFormat:@"fatal problem: the repository file \"%@\" is not a directory or is not writable", repositoryPath]);
+ exit(1);
+ }
+
+ // Initialize the random number generator with random seeds
+ srandomdev();
+ srand48(random());
+
+ // We will catch most unhandled run-time error with this.
+ [[NSExceptionHandler defaultExceptionHandler] setExceptionHandlingMask:63];
+
+ // We initialize the journaling system
+ [[interpreterView interpreter] setShouldJournal:[[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptShouldJournal"]];
+ if (repositoryPath) [[NSUserDefaults standardUserDefaults] setObject:[repositoryPath stringByAppendingPathComponent:@"journal.txt"] forKey:@"FScriptJournalName"];
+ [[interpreterView interpreter] setJournalName:[[NSUserDefaults standardUserDefaults] stringForKey:@"FScriptJournalName"]];
+
+ // JG
+ servicesProvider = [[FSServicesProvider alloc] initWithFScriptInterpreterViewProvider:self];
+ [servicesProvider registerExports];
+
+ // Latent block processing
+ latentPath = [[[NSUserDefaults standardUserDefaults] stringForKey:@"FScriptRepositoryPath"] stringByAppendingPathComponent:@"fs_latent"];
+
+ if (latentPath && [[NSFileManager defaultManager] fileExistsAtPath:latentPath] && (latent = [NSString stringWithContentsOfFile:latentPath]))
+ {
+ BOOL found;
+ FSInterpreter *interpreter = [interpreterView interpreter];
+ FSSystem *sys = [interpreter objectForIdentifier:@"sys" found:&found];
+ FSBlock *bl;
+
+ NSAssert(found,@"F-Script internal error: symbol \"sys\" not defined");
+
+ @try
+ {
+ bl = [sys blockFromString:latent];
+ [bl value];
+ }
+ @catch (id exception)
+ {
+ [interpreterView notifyUser:[NSString stringWithFormat:@"Error in the latent block (file %@): %@",latentPath, FSErrorMessageFromException(exception)]];
+ }
+ }
+ //----------
+
+ [[interpreterView window] makeKeyAndOrderFront:nil];
+
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDisplayObjectBrowserAtLaunchTime"])
+ [[interpreterView interpreter] browse];
+}
+
+- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
+{
+ [self performSelector:@selector(openFile:) withObject:filename afterDelay:0];
+ return YES;
+}
+
+- (void)openFile:(NSString *)filename
+{
+ { // generates a filename with a unix style path separator
+ FSArray *elems = [filename asArray];
+ NSUInteger i, nb;
+ for (i = 0, nb = [elems count]; i < nb; i++)
+ if ([[elems objectAtIndex:i] isEqual:@"\\"]) [elems replaceObjectAtIndex:i withObject:@"/"];
+ filename = [elems operator_backslash:[@"#++" asBlock]];
+ }
+
+ if ([[filename pathExtension] isEqualToString:@"space"])
+ [interpreterView putCommand:[NSString stringWithFormat:@"sys loadSpace:%@\n",filename]];
+ else
+ {
+ NSString *fname = [filename lastPathComponent];
+ NSUInteger nb = [fname length];
+
+ while (nb != ([fname = [fname stringByDeletingPathExtension] length]))
+ nb = [fname length]; // remove all the extentions
+ [interpreterView putCommand:[NSString stringWithFormat:@"%@ := sys load:%@",fname,filename]];
+ }
+}
+
+- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
+{
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptConfirmWhenQuitting"] && !quitConfirmed)
+ {
+ NSInteger choice = NSRunAlertPanel(@"QUIT", @"Are you sure you want to quit F-Script?", @"Quit", @"Cancel", nil,nil);
+
+ if (choice == NSAlertDefaultReturn) return NSTerminateNow;
+ else return NSTerminateCancel; // don't quit
+ }
+ else return NSTerminateNow;
+}
+
+- (void)dealloc
+{
+ if ([[NSApplication sharedApplication] delegate] == self)
+ [[NSApplication sharedApplication] setDelegate:nil];
+ // since we don't retain outlets infoPanel and interpreterView, we don't have to release them here.
+ [showConsoleMenuItem release];
+ [super dealloc];
+}
+
+- (id) init
+{
+ self = [super init];
+ if (self != nil)
+ {
+ showConsoleMenuItem = [[NSMenuItem alloc] initWithTitle:@"F-Script" action:@selector(showConsole:) keyEquivalent:@""];
+ quitConfirmed = NO;
+ }
+ return self;
+}
+
+
+- (id)interpreterView // For use by JG FSServiceProvider
+{
+ return interpreterView;
+}
+
+- (void)newDemoAssistant:(id)sender
+{
+ [[[FSDemoAssistant alloc] initWithInterpreterView:interpreterView] activate];
+}
+
+- (void)newObjectBrowser:sender
+{
+ [[interpreterView interpreter] browse];
+}
+
+- (void)showConsole:(id)sender
+{
+ NSMenu *windowMenu = [[[NSApp mainMenu] itemWithTitle:@"Window"] submenu];
+
+ [[interpreterView window] makeKeyAndOrderFront:nil];
+ [windowMenu removeItem:showConsoleMenuItem];
+}
+
+- (void)showInfoPanel:(id)sender
+{
+ /*if (!infoPanel)
+ {
+ if (![NSBundle loadNibNamed:@"FScriptAppInfo" owner:self]) {
+ NSLog(@"Failed to load FScriptAppInfo.nib");
+ NSBeep();
+ return;
+ }
+ [infoPanel center];
+ }
+ [infoPanel makeKeyAndOrderFront:nil];
+ */
+ NSMutableAttributedString *s = [[[NSMutableAttributedString alloc] initWithString:@"http://www.fscript.org" attributes:[NSDictionary dictionaryWithObject:@"http://www.fscript.org" forKey:NSLinkAttributeName]] autorelease];
+ [NSApp orderFrontStandardAboutPanelWithOptions:[NSDictionary dictionaryWithObject:s forKey:@"Credits"]];
+}
+
+- (void)showPreferencePanel:(id)sender
+{
+ if (!preferencePanel)
+ {
+ if (![NSBundle loadNibNamed:@"FScriptAppPreference" owner:self])
+ {
+ NSLog(@"Failed to load FScriptAppPreference.nib");
+ NSBeep();
+ return;
+ }
+ [preferencePanel center];
+ }
+ [fontSizeUI setDoubleValue:[interpreterView fontSize]];
+ [shouldJournalUI setState:[[interpreterView interpreter] shouldJournal]];
+ [confirmWhenQuittingUI setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptConfirmWhenQuitting"]];
+ [runWithObjCAutomaticGarbageCollectionUI setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptRunWithObjCAutomaticGarbageCollection"]];
+ [displayObjectBrowserAtLaunchTimeUI setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptDisplayObjectBrowserAtLaunchTime"]];
+ [automaticallyIntrospectDeclaredPropertiesUI setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptAutomaticallyIntrospectDeclaredProperties"]];
+
+ [preferencePanel makeKeyAndOrderFront:nil];
+}
+
+- (void)updatePreference:(id)sender // action
+{
+ //NSLog(@"** updatePreference");
+ if (sender == fontSizeUI)
+ {
+ [[NSUserDefaults standardUserDefaults] setFloat:[fontSizeUI doubleValue] forKey:@"FScriptFontSize"];
+ [interpreterView setFontSize:[fontSizeUI doubleValue]];
+ }
+ else if (sender == shouldJournalUI)
+ {
+ [[NSUserDefaults standardUserDefaults] setBool:[shouldJournalUI state] forKey:@"FScriptShouldJournal"];
+ [[interpreterView interpreter] setShouldJournal:[shouldJournalUI state]];
+ }
+ else if (sender == confirmWhenQuittingUI)
+ {
+ [[NSUserDefaults standardUserDefaults] setBool:[confirmWhenQuittingUI state] forKey:@"FScriptConfirmWhenQuitting"];
+ }
+ else if (sender == displayObjectBrowserAtLaunchTimeUI)
+ {
+ [[NSUserDefaults standardUserDefaults] setBool:[displayObjectBrowserAtLaunchTimeUI state] forKey:@"FScriptDisplayObjectBrowserAtLaunchTime"];
+ }
+ else if (sender == automaticallyIntrospectDeclaredPropertiesUI)
+ {
+ [[NSUserDefaults standardUserDefaults] setBool:[automaticallyIntrospectDeclaredPropertiesUI state] forKey:@"FScriptAutomaticallyIntrospectDeclaredProperties"];
+ }
+ else if (sender == runWithObjCAutomaticGarbageCollectionUI)
+ {
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert addButtonWithTitle:@"Restart"];
+ [alert addButtonWithTitle:@"Cancel"];
+ [alert setMessageText:@"Restart F-Script?"];
+ [alert setInformativeText:@"F-Script needs to be restarted to change the memory management mode"];
+ [alert setAlertStyle:NSWarningAlertStyle];
+
+ if ([alert runModal] == NSAlertFirstButtonReturn)
+ {
+ // Restart clicked
+
+ [[NSUserDefaults standardUserDefaults] setBool:[runWithObjCAutomaticGarbageCollectionUI state] forKey:@"FScriptRunWithObjCAutomaticGarbageCollection"];
+ [[NSUserDefaults standardUserDefaults] synchronize];
+
+ RestartWithCorrectGarbageCollectionSettingIfNecessary();
+ }
+ else
+ {
+ // Cancel clicked
+
+ [runWithObjCAutomaticGarbageCollectionUI setState:[[NSUserDefaults standardUserDefaults] boolForKey:@"FScriptRunWithObjCAutomaticGarbageCollection"]];
+ }
+
+ [alert release];
+ }
+}
+
+////////// Window delegate methods (I'm the delegate of the the console window)
+
+- (void)windowWillClose:(NSNotification *)aNotification
+{
+ NSMenu *windowMenu = [[[NSApp mainMenu] itemWithTitle:@"Window"] submenu];
+ [windowMenu insertItem:showConsoleMenuItem atIndex:[windowMenu numberOfItems]];
+}
+
+@end
100 F-Script/FScriptAppPreference.nib/classes.nib
@@ -0,0 +1,100 @@
+<?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>IBClasses</key>
+ <array>
+ <dict>
+ <key>CLASS</key>
+ <string>FSInterpreterView</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>object1</key>
+ <string>id</string>
+ <key>object2</key>
+ <string>id</string>
+ <key>object3</key>
+ <string>id</string>
+ <key>object4</key>
+ <string>id</string>
+ <key>object5</key>
+ <string>id</string>
+ <key>object6</key>
+ <string>id</string>
+ <key>object7</key>
+ <string>id</string>
+ <key>object8</key>
+ <string>id</string>
+ <key>object9</key>
+ <string>id</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSView</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
+ <string>NSObject</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ </dict>
+ <dict>
+ <key>CLASS</key>
+ <string>FirstResponder</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ <dict>
+ <key>ACTIONS</key>
+ <dict>
+ <key>newDemoAssistant</key>
+ <string>id</string>
+ <key>newKVBrowser</key>
+ <string>id</string>
+ <key>newObjectBrowser</key>
+ <string>id</string>
+ <key>showConsole</key>
+ <string>id</string>
+ <key>showInfoPanel</key>
+ <string>id</string>
+ <key>showPreferencePanel</key>
+ <string>id</string>
+ <key>updatePreference</key>
+ <string>id</string>
+ </dict>
+ <key>CLASS</key>
+ <string>FScriptAppController</string>
+ <key>LANGUAGE</key>
+ <string>ObjC</string>
+ <key>OUTLETS</key>
+ <dict>
+ <key>automaticallyIntrospectDeclaredPropertiesUI</key>
+ <string>NSButton</string>
+ <key>confirmWhenQuittingUI</key>
+ <string>NSButton</string>
+ <key>displayObjectBrowserAtLaunchTimeUI</key>
+ <string>NSButton</string>
+ <key>fontSizeUI</key>
+ <string>NSTextField</string>
+ <key>infoPanel</key>
+ <string>NSPanel</string>
+ <key>interpreterView</key>
+ <string>FSInterpreterView</string>
+ <key>preferencePanel</key>
+ <string>NSPanel</string>
+ <key>runWithObjCAutomaticGarbageCollectionUI</key>
+ <string>NSButton</string>
+ <key>shouldJournalUI</key>
+ <string>NSButton</string>
+ </dict>
+ <key>SUPERCLASS</key>
+ <string>NSObject</string>
+ </dict>
+ </array>
+ <key>IBVersion</key>
+ <string>1</string>
+</dict>
+</plist>
20 F-Script/FScriptAppPreference.nib/info.nib
@@ -0,0 +1,20 @@
+<?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>IBFramework Version</key>
+ <string>677</string>
+ <key>IBLastKnownRelativeProjectPath</key>
+ <string>../FScript.xcodeproj</string>
+ <key>IBOldestOS</key>
+ <integer>5</integer>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>25</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>9G55</string>
+ <key>targetFramework</key>
+ <string>IBCocoaFramework</string>
+</dict>
+</plist>
BIN F-Script/FScriptAppPreference.nib/keyedobjects.nib
Binary file not shown.
BIN F-Script/fs.icns
Binary file not shown.
10 F-Script/fs_main.m
@@ -0,0 +1,10 @@
+#import <AppKit/AppKit.h>
+#import "FScriptAppController.h"
+
+int main(int argc, const char **argv)
+{
+ RestartWithCorrectGarbageCollectionSettingIfNecessary();
+
+ return NSApplicationMain(argc, argv);
+}
+
14 FSTest1/DOCustom.h
@@ -0,0 +1,14 @@
+/* DOCustom.h Copyright (c) 1998-2006 Philippe Mougin. */
+/* This software is open source. See the license. */
+
+#import <Foundation/Foundation.h>
+
+
+@interface DOCustom : NSObject
+{
+ NSInteger i;
+}
+
+- (NSInteger) getValue;
+
+@end
73 FSTest1/DOCustom.m
@@ -0,0 +1,73 @@
+
+#import <Foundation/Foundation.h>
+#import "DOCustom.h"
+
+@implementation DOCustom : NSObject
+
+-(NSInteger)echoInt:(NSInteger)arg
+{
+ return arg;
+}
+
+- (NSInteger) getValue
+{
+ return i;
+}
+
+- (byref NSArray*)getNSArrayByRef
+{
+ return [NSArray arrayWithObjects:[NSScanner scannerWithString:@"hello"], [NSProcessInfo processInfo], nil];
+}
+
+- (byref NSNumber*)getNSNumberByRef
+{
+ return [NSNumber numberWithDouble:30];
+}
+
+- (byref NSString*)getNSStringByRef
+{
+ return @"I am an NSString passed by ref";
+}
+
+- (void) incr
+{
+ i++;
+}
+
+-(BOOL)isEqual:(id)object
+{
+ return [object isKindOfClass:[DOCustom class]] && i == [object getValue];
+}
+
+-(id)perform:(SEL)selector on:(id)target with:(id)argument
+{
+ return [target performSelector:selector withObject:argument];
+}
+
+-(oneway void) quit
+{
+ exit(0);
+}
+
+-(void) setValue:(NSInteger)value
+{
+ i = value;
+}
+
+- testTimeout
+{
+ while(1);
+}
+
+- (id) testStr
+{
+ return @"toto";
+}
+
+-(SEL) test2
+{
+ return @selector(class);
+}
+
+@end
+
4 FSTest1/MainMenu.nib/classes.nib
@@ -0,0 +1,4 @@
+{
+ IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; });
+ IBVersion = 1;
+}
18 FSTest1/MainMenu.nib/info.nib
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>IBFramework Version</key>
+ <string>205.0</string>
+ <key>IBUserGuides</key>
+ <dict>
+ <key>Window</key>
+ <dict>
+ <key>guideLocations</key>
+ <array/>
+ <key>guidesLocked</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+</dict>
+</plist>
BIN FSTest1/MainMenu.nib/objects.nib
Binary file not shown.
29 FSTest1/main.m
@@ -0,0 +1,29 @@
+#import <Cocoa/Cocoa.h>
+#import "DOCustom.h"
+
+int main(int argc, const char *argv[])
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ NSString *o1 = @"hello";
+ DOCustom *o2 = [[DOCustom alloc] init];
+ NSConnection *connection1 = [[NSConnection alloc] init];
+ NSConnection *connection2 = [[NSConnection alloc] init];
+
+ [connection1 setRootObject:o1];
+ if ([connection1 registerName:@"FSTest1_o1"] == NO)
+ {
+ [connection1 release];
+ NSLog(@"FSTest1 error: unable to register the object");
+ }
+
+ [connection2 setRootObject:o2];
+ if ([connection2 registerName:@"FSTest1_o2"] == NO)
+ {
+ [connection2 release];
+ NSLog(@"FSTest1 error: unable to register the object");
+ }
+
+ [pool release];
+
+ return NSApplicationMain(argc, argv);
+}
14 FSTest2/DOCustom.h
@@ -0,0 +1,14 @@
+/* DOCustom.h Copyright (c) 1998-2006 Philippe Mougin. */
+/* This software is open source. See the license. */
+
+#import <Foundation/Foundation.h>
+
+
+@interface DOCustom : NSObject
+{
+ NSInteger i;
+}
+
+- (NSInteger) getValue;
+
+@end
73 FSTest2/DOCustom.m
@@ -0,0 +1,73 @@
+
+#import <Foundation/Foundation.h>
+#import "DOCustom.h"
+
+@implementation DOCustom : NSObject
+
+-(NSInteger)echoInt:(NSInteger)arg
+{
+ return arg;
+}
+
+- (NSInteger) getValue
+{
+ return i;
+}
+
+- (byref NSArray*)getNSArrayByRef
+{
+ return [NSArray arrayWithObjects:[NSScanner scannerWithString:@"hello"], [NSProcessInfo processInfo], nil];
+}
+
+- (byref NSNumber*)getNSNumberByRef
+{
+ return [NSNumber numberWithDouble:30];
+}
+
+- (byref NSString*)getNSStringByRef
+{
+ return @"I am an NSString passed by ref";
+}
+
+- (void) incr
+{
+ i++;
+}
+
+-(BOOL)isEqual:(id)object
+{
+ return [object isKindOfClass:[DOCustom class]] && i == [object getValue];
+}
+
+-(id)perform:(SEL)selector on:(id)target with:(id)argument
+{
+ return [target performSelector:selector withObject:argument];
+}
+
+-(oneway void) quit
+{
+ exit(0);
+}
+
+-(void) setValue:(NSInteger)value
+{
+ i = value;
+}
+
+- testTimeout
+{
+ while(1);
+}
+
+- (id) testStr
+{
+ return @"toto";
+}
+
+-(SEL) test2
+{
+ return @selector(class);
+}
+
+@end
+
4 FSTest2/MainMenu.nib/classes.nib
@@ -0,0 +1,4 @@
+{
+ IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; });
+ IBVersion = 1;
+}
18 FSTest2/MainMenu.nib/info.nib
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>IBFramework Version</key>
+ <string>205.0</string>
+ <key>IBUserGuides</key>
+ <dict>
+ <key>Window</key>
+ <dict>
+ <key>guideLocations</key>
+ <array/>
+ <key>guidesLocked</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+</dict>
+</plist>
BIN FSTest2/MainMenu.nib/objects.nib
Binary file not shown.
29 FSTest2/main.m
@@ -0,0 +1,29 @@
+#import <Cocoa/Cocoa.h>
+#import "DOCustom.h"
+
+int main(int argc, const char *argv[])
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ NSString *o1 = @"hello";
+ DOCustom *o2 = [[DOCustom alloc] init];
+ NSConnection *connection1 = [[NSConnection alloc] init];
+ NSConnection *connection2 = [[NSConnection alloc] init];
+
+ [connection1 setRootObject:o1];
+ if ([connection1 registerName:@"FSTest2_o1"] == NO)
+ {
+ [connection1 release];
+ NSLog(@"FSTest2 error: unable to register the object");
+ }
+
+ [connection2 setRootObject:o2];
+ if ([connection2 registerName:@"FSTest2_o2"] == NO)
+ {
+ [connection2 release];
+ NSLog(@"FSTest2 error: unable to register the object");
+ }
+
+ [pool release];
+
+ return NSApplicationMain(argc, argv);
+}
0 FScript.xcodeproj/Icon
No changes.
1,535 FScript.xcodeproj/philippemougin.perspectivev3
1,535 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
1,557 FScript.xcodeproj/pmo.mode1
1,557 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
1,414 FScript.xcodeproj/pmougin.mode1
@@ -0,0 +1,1414 @@
+<?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>ActivePerspectiveName</key>
+ <string>Project</string>
+ <key>AllowedModules</key>
+ <array>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Name</key>
+ <string>Groups and Files Outline View</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Name</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCTaskListModule</string>
+ <key>Name</key>
+ <string>Task List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Name</key>
+ <string>File and Smart Group Detail Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Name</key>
+ <string>Detailed Build Results Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Name</key>
+ <string>Project Batch Find Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXRunSessionModule</string>
+ <key>Name</key>
+ <string>Run Log</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Name</key>
+ <string>Bookmarks Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Name</key>
+ <string>Class Browser</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Name</key>
+ <string>Source Code Control Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXDebugBreakpointsModule</string>
+ <key>Name</key>
+ <string>Debug Breakpoints Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDockableInspector</string>
+ <key>Name</key>
+ <string>Inspector</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXOpenQuicklyModule</string>
+ <key>Name</key>
+ <string>Open Quickly Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Name</key>
+ <string>Debugger</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Name</key>
+ <string>Debug Console</string>
+ </dict>
+ </array>
+ <key>Description</key>
+ <string>DefaultDescriptionKey</string>
+ <key>DockingSystemVisible</key>
+ <false/>
+ <key>Extension</key>
+ <string>mode1</string>
+ <key>FavBarConfig</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>8F9ECC140825284500F7ED73</string>
+ <key>XCBarModuleItemNames</key>
+ <dict/>
+ <key>XCBarModuleItems</key>
+ <array/>
+ </dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>com.apple.perspectives.project.mode1</string>
+ <key>MajorVersion</key>
+ <integer>31</integer>
+ <key>MinorVersion</key>
+ <integer>1</integer>
+ <key>Name</key>
+ <string>Default</string>
+ <key>Notifications</key>
+ <array/>
+ <key>OpenEditors</key>
+ <array/>
+ <key>PerspectiveWidths</key>
+ <array>
+ <integer>-1</integer>
+ <integer>-1</integer>
+ </array>
+ <key>Perspectives</key>
+ <array>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>active-target-popup</string>
+ <string>active-buildstyle-popup</string>
+ <string>action</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>buildOrClean</string>
+ <string>build-and-runOrDebug</string>
+ <string>run</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>get-info</string>
+ <string>servicesModulefind</string>
+ <string>servicesModulebuild</string>
+ <string>servicesModuledebug</string>
+ <string>servicesModulerun</string>
+ <string>toggle-editor</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>com.apple.pbx.toolbar.searchfield</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProjectWithEditor</string>
+ <key>Identifier</key>
+ <string>perspective.project</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C08E77C0454961000C914BD</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>306</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>0CD4E2FB00D7DD4D7BE9C1BD</string>
+ <string>0CD4E30D00D7DFE17BE9C1BD</string>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>277</integer>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 3735}, {306, 677}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <true/>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {323, 695}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>306</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>-4 142 1630 736 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>323pt</string>
+ </dict>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20306471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Info-FSTest2_2.plist</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20406471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Info-FSTest2_2.plist</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {1302, 470}}</string>
+ <key>RubberWindowFrame</key>
+ <string>-4 142 1630 736 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>470pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20506471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 475}, {1302, 220}}</string>
+ <key>RubberWindowFrame</key>
+ <string>-4 142 1630 736 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>220pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>1302pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCModuleDock</string>
+ <string>PBXNavigatorGroup</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>8F3426620C20BFCD0062A4FD</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>8F3426630C20BFCD0062A4FD</string>
+ <string>1CE0B20306471E060097A5F4</string>
+ <string>1CE0B20506471E060097A5F4</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.default</string>
+ </dict>
+ <dict>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProject</string>
+ <key>Identifier</key>
+ <string>perspective.morph</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C08E77C0454961000C914BD</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>29B97314FDCFA39411CA2CEA</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 337}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>1</integer>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 355}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>373 269 690 397 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Morph</string>
+ <key>PreferredWidth</key>
+ <integer>300</integer>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.default.short</string>
+ </dict>
+ </array>
+ <key>PerspectivesBarVisible</key>
+ <false/>
+ <key>ShelfIsVisible</key>
+ <false/>
+ <key>SourceDescription</key>
+ <string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TimeStamp</key>
+ <real>0.0</real>
+ <key>ToolbarDisplayMode</key>
+ <integer>1</integer>
+ <key>ToolbarIsVisible</key>
+ <true/>
+ <key>ToolbarSizeMode</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Perspectives</string>
+ <key>UpdateMessage</key>
+ <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
+ <key>WindowJustification</key>
+ <integer>5</integer>
+ <key>WindowOrderList</key>
+ <array>
+ <string>8F9ECC040825284100F7ED73</string>
+ <string>8F34265F0C20BFCA0062A4FD</string>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>1C0AD2B3069F1EA900FABCE6</string>
+ <string>/Volumes/Sans titre 2/Users/pmougin/FScript/FScript.xcodeproj</string>
+ </array>
+ <key>WindowString</key>
+ <string>-4 142 1630 736 0 0 1440 878 </string>
+ <key>WindowTools</key>
+ <array>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.build</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528F0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string></string>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {1154, 267}}</string>
+ <key>RubberWindowFrame</key>
+ <string>184 144 1154 734 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>267pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBuildLogShowsTranscriptDefaultKey</key>
+ <string>{{0, 417}, {1154, 104}}</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build</string>
+ <key>XCBuildResultsTrigger_Collapse</key>
+ <integer>1021</integer>
+ <key>XCBuildResultsTrigger_Open</key>
+ <integer>1011</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 272}, {1154, 521}}</string>
+ <key>RubberWindowFrame</key>
+ <string>184 144 1154 734 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Proportion</key>
+ <string>521pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>693pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Build Results</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>8F9ECC040825284100F7ED73</string>
+ <string>8F3426580C20BFCA0062A4FD</string>
+ <string>1CD0528F0623707200166675</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.build</string>
+ <key>WindowString</key>
+ <string>184 144 1154 734 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>8F9ECC040825284100F7ED73</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.debugger</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {536, 438}}</string>
+ <string>{{536, 0}, {694, 438}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {1230, 438}}</string>
+ <string>{{0, 438}, {1230, 466}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C162984064C10D400B95A72</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug - GLUTExamples (Underwater)</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleDrawerSize</key>
+ <string>{100, 120}</string>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 0}, {1230, 904}}</string>
+ <key>RubberWindowFrame</key>
+ <string>169 143 1230 735 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>904pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>694pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>8F3426590C20BFCA0062A4FD</string>
+ <string>1C162984064C10D400B95A72</string>
+ <string>8F34265A0C20BFCA0062A4FD</string>
+ <string>8F34265B0C20BFCA0062A4FD</string>
+ <string>8F34265C0C20BFCA0062A4FD</string>
+ <string>8F34265D0C20BFCA0062A4FD</string>
+ <string>8F34265E0C20BFCA0062A4FD</string>
+ <string>8F34265F0C20BFCA0062A4FD</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debug</string>
+ <key>WindowString</key>
+ <string>169 143 1230 735 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <key>WindowToolIsVisible</key>
+ <true/>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.find</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CDD528C0622207200134675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>BigBrowserViewObjectInfo.m</string>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {1237, 616}}</string>
+ <key>RubberWindowFrame</key>
+ <string>292 10 1237 1018 0 0 1680 1028 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>1237pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>616pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528E0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 621}, {1237, 356}}</string>
+ <key>RubberWindowFrame</key>
+ <string>292 10 1237 1018 0 0 1680 1028 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Proportion</key>
+ <string>356pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>977pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Find</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXProjectFindModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>8FE913E30B2F136F006AE09B</string>
+ <string>8FE913E40B2F136F006AE09B</string>
+ <string>1CDD528C0622207200134675</string>
+ <string>1CD0528E0623707200166675</string>
+ </array>
+ <key>WindowString</key>
+ <string>292 10 1237 1018 0 0 1680 1028 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <true/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>MENUSEPARATOR</string>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.debuggerConsole</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAAC065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {633, 489}}</string>
+ <key>RubberWindowFrame</key>
+ <string>903 60 633 530 0 0 1680 1028 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>489pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>489pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger Console</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugCLIModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>8FE7E08E082ABCBE008231E8</string>
+ <string>8FE914440B2F3AE0006AE09B</string>
+ <string>1C78EAAC065D492600B07095</string>
+ </array>
+ <key>WindowString</key>
+ <string>903 60 633 530 0 0 1680 1028 </string>
+ <key>WindowToolGUID</key>
+ <string>8FE7E08E082ABCBE008231E8</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.run</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>LauncherConfigVersion</key>
+ <string>3</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528B0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Run</string>
+ <key>Runner</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {367, 168}}</string>
+ <string>{{0, 173}, {367, 270}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {406, 443}}</string>
+ <string>{{411, 0}, {517, 443}}</string>
+ </array>
+ </dict>
+ </dict>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {816, 343}}</string>
+ <key>RubberWindowFrame</key>
+ <string>552 168 816 384 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXRunSessionModule</string>
+ <key>Proportion</key>
+ <string>343pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>343pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Run Log</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXRunSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C0AD2B3069F1EA900FABCE6</string>
+ <string>8F3426600C20BFCA0062A4FD</string>
+ <string>1CD0528B0623707200166675</string>
+ <string>8F3426610C20BFCA0062A4FD</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.run</string>
+ <key>WindowString</key>
+ <string>552 168 816 384 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C0AD2B3069F1EA900FABCE6</string>
+ <key>WindowToolIsVisible</key>
+ <true/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.scm</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB2065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>&lt;No Editor&gt;</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB3065D492600B07095</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {452, 0}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>0pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052920623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ConsoleFrame</key>
+ <string>{{0, 259}, {452, 0}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {452, 259}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ <key>TableConfiguration</key>
+ <array>
+ <string>Status</string>
+ <real>30</real>
+ <string>FileName</string>
+ <real>199</real>
+ <string>Path</string>
+ <real>197.09500122070312</real>
+ </array>
+ <key>TableFrame</key>
+ <string>{{0, 0}, {452, 250}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Proportion</key>
+ <string>262pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>266pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>SCM</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXCVSModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAB4065D492600B07095</string>
+ <string>1C78EAB5065D492600B07095</string>
+ <string>1C78EAB2065D492600B07095</string>
+ <string>1CD052920623707200166675</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.scm</string>
+ <key>WindowString</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.breakpoints</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>