summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.OCaml5
-rw-r--r--src/uimacnew/Bridge.h58
-rw-r--r--src/uimacnew/Bridge.m418
-rw-r--r--src/uimacnew/English.lproj/InfoPlist.stringsbin90 -> 0 bytes
-rw-r--r--src/uimacnew/English.lproj/MainMenu.nib/classes.nib267
-rw-r--r--src/uimacnew/English.lproj/MainMenu.nib/info.nib26
-rw-r--r--src/uimacnew/English.lproj/MainMenu.nib/keyedobjects.nibbin46733 -> 0 bytes
-rw-r--r--src/uimacnew/English.lproj/MainMenu.nib/objects.nibbin20020 -> 0 bytes
l---------src/uimacnew/Growl.framework/Growl1
l---------src/uimacnew/Growl.framework/Headers1
l---------src/uimacnew/Growl.framework/Resources1
-rwxr-xr-xsrc/uimacnew/Growl.framework/Versions/A/Growlbin139412 -> 0 bytes
-rw-r--r--src/uimacnew/Growl.framework/Versions/A/Headers/Growl.h6
-rw-r--r--src/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h758
-rw-r--r--src/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h556
-rw-r--r--src/uimacnew/Growl.framework/Versions/A/Headers/GrowlDefines.h307
-rw-r--r--src/uimacnew/Growl.framework/Versions/A/Resources/Info.plist24
l---------src/uimacnew/Growl.framework/Versions/Current1
-rw-r--r--src/uimacnew/ImageAndTextCell.h20
-rw-r--r--src/uimacnew/ImageAndTextCell.m130
-rw-r--r--src/uimacnew/Info.plist32
-rw-r--r--src/uimacnew/Info.plist.template34
-rw-r--r--src/uimacnew/MyController.h111
-rw-r--r--src/uimacnew/MyController.m1045
-rw-r--r--src/uimacnew/NotificationController.h23
-rw-r--r--src/uimacnew/NotificationController.m65
-rw-r--r--src/uimacnew/PreferencesController.h20
-rw-r--r--src/uimacnew/PreferencesController.m89
-rw-r--r--src/uimacnew/ProfileController.h19
-rw-r--r--src/uimacnew/ProfileController.m80
-rw-r--r--src/uimacnew/ProfileTableView.h11
-rw-r--r--src/uimacnew/ProfileTableView.m36
-rw-r--r--src/uimacnew/ProgressCell.h15
-rw-r--r--src/uimacnew/ProgressCell.m199
-rw-r--r--src/uimacnew/ReconItem.h80
-rw-r--r--src/uimacnew/ReconItem.m838
-rw-r--r--src/uimacnew/ReconTableView.h43
-rw-r--r--src/uimacnew/ReconTableView.m298
-rw-r--r--src/uimacnew/TrevorsUnison.icnsbin24548 -> 0 bytes
-rw-r--r--src/uimacnew/Unison.icnsbin44086 -> 0 bytes
-rw-r--r--src/uimacnew/UnisonToolbar.h33
-rw-r--r--src/uimacnew/UnisonToolbar.m215
-rw-r--r--src/uimacnew/cltool.c67
-rw-r--r--src/uimacnew/main.m53
-rw-r--r--src/uimacnew/progressicons/ProgressBarAdvanced.pngbin142 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarBlue.pngbin151 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarEndAdvanced.pngbin123 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarEndBlue.pngbin125 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarEndGray.pngbin123 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarEndGreen.pngbin125 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarEndWhite.pngbin125 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarGray.pngbin136 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarGreen.pngbin151 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarLightGreen.pngbin2836 -> 0 bytes
-rw-r--r--src/uimacnew/progressicons/ProgressBarWhite.pngbin152 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/Change_Absent.pngbin555 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/Change_Created.pngbin778 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/Change_Deleted.pngbin807 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/Change_Modified.pngbin773 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/Change_PropsChanged.pngbin799 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/Change_Unmodified.pngbin688 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/Outline-Deep.pngbin475 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/Outline-Flat.pngbin522 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/Outline-Flattened.pngbin503 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/table-conflict.tifbin5240 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/table-error.tifbin5254 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/table-left-blue.tifbin5240 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/table-left-green.tifbin5242 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/table-merge.tifbin5236 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/table-mixed.tifbin19536 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/table-right-blue.tifbin5242 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/table-right-green.tifbin5242 -> 0 bytes
-rw-r--r--src/uimacnew/tableicons/table-skip.tifbin5236 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/add.tifbin5488 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/diff.tifbin5490 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/go.tifbin5488 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/left.tifbin5490 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/merge.tifbin5490 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/quit.tifbin5490 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/rescan.tifbin5512 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/restart.tifbin5492 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/right.tifbin5490 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/save.tifbin5490 -> 0 bytes
-rw-r--r--src/uimacnew/toolbar/skip.tifbin5490 -> 0 bytes
-rw-r--r--src/uimacnew/uimacnew.xcodeproj/project.pbxproj746
85 files changed, 0 insertions, 6731 deletions
diff --git a/src/Makefile.OCaml b/src/Makefile.OCaml
index 3927c6c..9892471 100644
--- a/src/Makefile.OCaml
+++ b/src/Makefile.OCaml
@@ -174,10 +174,6 @@ ifeq ($(UISTYLE),mac)
buildexecutable:: macexecutable
UIMACDIR=uimac
else
-ifeq ($(UISTYLE),macnew)
- buildexecutable:: macexecutable
- UIMACDIR=uimacnew
-else
ifeq ($(UISTYLE),mac14)
buildexecutable:: macexecutable
UIMACDIR=uimac14
@@ -185,7 +181,6 @@ else
buildexecutable:: $(NAME)$(EXEC_EXT)
endif
endif
-endif
MINOSXVERSION=10.5
# XCODEFLAGS=-sdk macosx$(MINOSXVERSION)
diff --git a/src/uimacnew/Bridge.h b/src/uimacnew/Bridge.h
deleted file mode 100644
index 4c15602..0000000
--- a/src/uimacnew/Bridge.h
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// Bridge.h
-// uimac
-//
-// Created by Craig Federighi on 4/25/07.
-// Copyright 2007 __MyCompanyName__. All rights reserved.
-//
-#import <Cocoa/Cocoa.h>
-
-/*
- Bridge supports safe calling from C back to OCaml by using daemon threads
- spawned from OCaml to make the actual calls and converting all argument / return values
- in the OCaml thread (when in possession of the OCaml lock)
-*/
-@interface Bridge : NSObject {
-}
-+ (void)startup:(const char **)argv;
-@end
-
-/*
- ocamlCall(sig, funcName, [args...]);
-
- Call ocaml function (via safe thread handoff mechanism).
- Args/return values are converted to/from C/OCaml according to the
- supplied type signture string. Type codes are:
- x - void (for return type)
- i - long
- s - char *
- S - NSString *
- N - NSNumber *
- @ - OCamlValue (see below)
-
- Examples:
- long count = (long)ocamlCall("iS", "lengthOfString", @"Some String");
-
- (void)ocamlCall("x", "someVoidOCamlFunction");
-
- OCamlValue *v = (id)ocamlCall("@Si", "makeArray", @"Some String", 10);
- NSString s = [v getField:0 withType:'S'];
-*/
-extern void *ocamlCall(const char *argTypes, ...);
-
-// Wrapper/proxy for unconverted OCaml values
-@interface OCamlValue : NSObject {
- long _v;
-}
-- initWithValue:(long)v;
-
-- (void *)getField:(long)i withType:(char)t;
- // get value by position. See ocamlCall for list of type conversion codes
-
-- (long)count;
- // count of items in array
-
-- (long)value;
- // returns Ocaml value directly -- not safe to use except in direct callback from OCaml
- // (i.e. in the OCaml thread)
-@end
diff --git a/src/uimacnew/Bridge.m b/src/uimacnew/Bridge.m
deleted file mode 100644
index 3b8deb4..0000000
--- a/src/uimacnew/Bridge.m
+++ /dev/null
@@ -1,418 +0,0 @@
-//
-// Bridge.m
-// uimac
-//
-// Created by Craig Federighi on 4/25/07.
-// Copyright 1999-2008 (see COPYING for details)
-//
-
-#import "Bridge.h"
-
-/* The following two define are a workaround for an incompatibility between
- Ocaml 3.11.2 (and older) and the Mac OS X header files */
-#define uint64 uint64_caml
-#define int64 int64_caml
-
-#define CAML_NAME_SPACE
-#include <caml/callback.h>
-#include <caml/alloc.h>
-#include <caml/mlvalues.h>
-#include <caml/memory.h>
-#include <caml/signals.h>
-#import <ExceptionHandling/NSExceptionHandler.h>
-
-#include <pthread.h>
-#include <stdarg.h>
-
-/*
- CMF, April 2007: Alternate strategy for solving UI crashes based on
- http://alan.petitepomme.net/cwn/2005.03.08.html#9:
- 1) Run OCaml in a separate thread from the Cocoa main run loop.
- 2) Handle all calls to OCaml as callbacks -- have an OCaml thread
- hang in C-land and use mutexes and conditions to pass control from the
- C calling thread to the OCaml callback thread.
-
- Value Conversion Done in Bridge Thread:
- Value creation/conversion (like calls to caml_named_value or caml_copy_string)
- or access calls (like Field) need to occur in the OCaml thread. We do this by
- passing C args for conversion to the bridgeThreadWait() thread.
-
- Example of vulnerability:
- Field(caml_reconItems,j) could dereference caml_reconItems
- when the GC (running independently in an OCaml thread) could be moving it.
-*/
-
-pthread_mutex_t init_lock = PTHREAD_MUTEX_INITIALIZER;
-pthread_cond_t init_cond = PTHREAD_COND_INITIALIZER;
-static BOOL doneInit = NO;
-
-pthread_mutex_t global_call_lock = PTHREAD_MUTEX_INITIALIZER;
-pthread_cond_t global_call_cond = PTHREAD_COND_INITIALIZER;
-pthread_mutex_t global_res_lock = PTHREAD_MUTEX_INITIALIZER;
-pthread_cond_t global_res_cond = PTHREAD_COND_INITIALIZER;
-
-@implementation Bridge
-static Bridge *_instance = NULL;
-
-const char **the_argv;
-
-- (void)_ocamlStartup:(id)ignore
-{
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- pthread_mutex_lock(&init_lock);
-
- /* Initialize ocaml gc, etc. */
- caml_startup((char **)the_argv); // cast to avoid warning, caml_startup assumes non-const,
- // NSApplicationMain assumes const
-
- // Register these with the collector
- // NSLog(@"*** _ocamlStartup - back from startup; signalling! (%d)", pthread_self());
- doneInit = TRUE;
- pthread_cond_signal(&init_cond);
- pthread_mutex_unlock(&init_lock);
-
- // now start the callback thread
- // NSLog(@"*** _ocamlStartup - calling callbackThreadCreate (%d)", pthread_self());
- value *f = caml_named_value("callbackThreadCreate");
- (void)caml_callback_exn(*f,Val_unit);
- [pool release];
-}
-
-+ (void)startup:(const char **)argv
-{
- if (_instance) return;
-
- _instance = [[Bridge alloc] init];
-
- [[NSExceptionHandler defaultExceptionHandler] setDelegate:_instance];
- [[NSExceptionHandler defaultExceptionHandler] setExceptionHandlingMask:
- (NSLogUncaughtExceptionMask | NSLogTopLevelExceptionMask)];
-
- // Init OCaml in another thread and wait for it to be ready
- pthread_mutex_lock(&init_lock);
- the_argv = argv;
- [NSThread detachNewThreadSelector:@selector(_ocamlStartup:)
- toTarget:_instance withObject:nil];
-
- // NSLog(@"*** waiting for completion of caml_init");
- while (!doneInit) pthread_cond_wait(&init_cond, &init_lock);
- pthread_mutex_unlock(&init_lock);
- // NSLog(@"*** caml_init complete!");
-}
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
-typedef unsigned int NSUInteger;
-#endif
-- (BOOL)exceptionHandler:(NSExceptionHandler *)sender shouldLogException:(NSException *)exception mask:(NSUInteger)aMask
-{
- // if (![[exception name] isEqual:@"OCamlException"]) return YES;
-
- NSString *msg = [NSString stringWithFormat:@"Uncaught exception: %@", [exception reason]];
- msg = [[msg componentsSeparatedByString:@"\n"] componentsJoinedByString:@" "];
- NSLog(@"%@", msg);
- NSRunAlertPanel(@"Fatal error", msg, @"Exit", nil, nil);
- exit(1);
- return FALSE;
-}
-
-@end
-
-
-// CallState struct is allocated on the C thread stack and then handed
-// to the OCaml callback thread to perform value conversion and issue the call
-typedef struct {
- enum { SafeCall, OldCall, FieldAccess } opCode;
-
- // New style calls
- const char *argTypes;
- va_list args;
-
- // Field access
- value *valueP;
- long fieldIndex;
- char fieldType;
-
- // Return values
- char *exception;
- void *retV;
- BOOL _autorelease;
-
- // for old style (unsafe) calls
- value call, a1, a2, a3, ret;
- int argCount;
-} CallState;
-
-static CallState *_CallState = NULL;
-static CallState *_RetState = NULL;
-
-// Our OCaml callback server thread -- waits for call then makes them
-// Called from thread spawned from OCaml
-CAMLprim value bridgeThreadWait(value ignore)
-{
- CAMLparam0();
- CAMLlocal1 (args);
- args = caml_alloc_tuple(3);
-
- // NSLog(@"*** bridgeThreadWait init! (%d) Taking lock...", pthread_self());
- while (TRUE) {
- // unblock ocaml while we wait for work
- caml_enter_blocking_section();
-
- pthread_mutex_lock(&global_call_lock);
- while (!_CallState) pthread_cond_wait(&global_call_cond, &global_call_lock);
-
- // pick up our work and free up the call lock for other threads
- CallState *cs = _CallState;
- _CallState = NULL;
- pthread_mutex_unlock(&global_call_lock);
-
- // NSLog(@"*** bridgeThreadWait: have call -- leaving caml_blocking_section");
-
- // we have a call to do -- get the ocaml lock
- caml_leave_blocking_section();
-
- // NSLog(@"*** bridgeThreadWait: doing call");
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- char retType = 'v';
- value e = Val_unit;
- if (cs->opCode == SafeCall) {
- int i;
- char *fname = va_arg(cs->args, char *);
- value *f = caml_named_value(fname);
- // varargs with C-based args -- convert them to OCaml values based on type code string
- const char *p = cs->argTypes;
- retType = *p++;
- int argCount = 0;
- for(; *p != '\0'; p++) {
- const char *str;
- switch (*p) {
- case 's':
- str = va_arg(cs->args, const char *);
- Store_field (args, argCount, caml_copy_string(str));
- break;
- case 'S':
- str = [va_arg(cs->args, NSString *) UTF8String];
- Store_field (args, argCount, caml_copy_string(str));
- break;
- case 'i':
- Store_field (args, argCount, Val_long(va_arg(cs->args, long)));
- break;
- case '@':
- Store_field (args, argCount, [va_arg(cs->args, OCamlValue *) value]);
- break;
- default:
- NSCAssert1(0, @"Unknown input type '%c'", *p);
- break;
- }
- argCount++;
- NSCAssert(argCount <= 3, @"More than 3 arguments");
- }
- // Call OCaml -- TODO: add support for > 3 args
- if (argCount == 3) e = caml_callback3_exn(*f,Field(args,0),Field(args,1),Field(args,2));
- else if (argCount == 2) e = caml_callback2_exn(*f,Field(args,0),Field(args,1));
- else if (argCount == 1) e = caml_callback_exn(*f,Field(args,0));
- else e = caml_callback_exn(*f,Val_unit);
- for (i = 0; i < argCount; i++) Store_field (args, i, Val_unit);
- } else if (cs->opCode == OldCall) {
- // old style (unsafe) version where OCaml values were passed directly from C thread
- if (cs->argCount == 3) e = caml_callback3_exn(cs->call,cs->a1,cs->a2,cs->a3);
- else if (cs->argCount == 2) e = caml_callback2_exn(cs->call,cs->a1,cs->a2);
- else e = caml_callback_exn(cs->call,cs->a1);
- retType = 'v';
- } else if (cs->opCode == FieldAccess) {
- long index = cs->fieldIndex;
- e = (index == -1) ? Val_long(Wosize_val(*cs->valueP)) : Field(*cs->valueP, index);
- retType = cs->fieldType;
- }
-
- // Process return value
- cs->_autorelease = FALSE;
- cs->ret = e; // OCaml return type -- unsafe...
- if (!Is_exception_result(e)) {
- switch (retType) {
- case 'S':
- *((NSString **)&cs->retV) = (e == Val_unit) ? NULL : [[NSString alloc] initWithUTF8String:String_val(e)];
- cs->_autorelease = TRUE;
- break;
- case 'N':
- if (Is_long (e)) {
- *((NSNumber **)&cs->retV) = [[NSNumber alloc] initWithLong:Long_val(e)];
- } else {
- *((NSNumber **)&cs->retV) = [[NSNumber alloc] initWithDouble:Double_val(e)];
- }
- cs->_autorelease = TRUE;
- break;
- case '@':
- *((NSObject **)&cs->retV) = (e == Val_unit) ? NULL : [[OCamlValue alloc] initWithValue:e];
- cs->_autorelease = TRUE;
- break;
- case 'i':
- *((long *)&cs->retV) = Long_val(e);
- break;
- case 'x':
- break;
- default:
- NSCAssert1(0, @"Unknown return type '%c'", retType);
- break;
- }
- }
-
- if (Is_exception_result(e)) {
- // get exception string -- it will get thrown back in the calling thread
- value *f = caml_named_value("unisonExnInfo");
- // We leak memory here...
- cs->exception = strdup(String_val(caml_callback(*f,Extract_exception(e))));
- }
-
- [pool release];
-
- // NSLog(@"*** bridgeThreadWait: returning");
-
- // we're done, signal back
- pthread_mutex_lock(&global_res_lock);
- _RetState = cs;
- pthread_cond_signal(&global_res_cond);
- pthread_mutex_unlock(&global_res_lock);
- }
- // Never get here...
- CAMLreturn (Val_unit);
-}
-
-void *_passCall(CallState *cs)
-{
- pthread_mutex_lock(&global_call_lock);
- _CallState = cs;
-
- // signal so call can happen on other thread
- pthread_mutex_lock(&global_res_lock);
- pthread_cond_signal(&global_call_cond);
- pthread_mutex_unlock(&global_call_lock);
-
- // NSLog(@"*** _passCall (%d) -- performing signal and waiting", pthread_self());
-
- // wait until done -- make sure the result is for our call
- while (_RetState != cs) pthread_cond_wait(&global_res_cond, &global_res_lock);
- _RetState = NULL;
- pthread_mutex_unlock(&global_res_lock);
-
- // NSLog(@"*** doCallback -- back with result");
- if (cs->exception) {
- @throw [NSException exceptionWithName:@"OCamlException"
- reason:[NSString stringWithUTF8String:cs->exception]
- userInfo:nil];
- }
- if (cs->_autorelease) [((id)cs->retV) autorelease];
- return cs->retV;
-}
-
-void *ocamlCall(const char *argTypes, ...)
-{
- CallState cs;
- cs.opCode = SafeCall;
- cs.exception = NULL;
- cs.argTypes = argTypes;
- va_start(cs.args, argTypes);
- void * res = _passCall(&cs);
-
- va_end(cs.args);
- return res;
-}
-
-void *getField(value *vP, long index, char type)
-{
- CallState cs;
- cs.opCode = FieldAccess;
- cs.valueP = vP;
- cs.fieldIndex = index;
- cs.fieldType = type;
- cs.exception = NULL;
- return _passCall(&cs);
-}
-
-@implementation OCamlValue
-
-- initWithValue:(long)v
-{
- [super init];
- _v = v;
- caml_register_global_root((value *)&_v);
- return self;
-}
-
-- (long)count
-{
- return (long)getField((value *) &_v, -1, 'i');
-}
-
-- (void *)getField:(long)i withType:(char)t
-{
- return getField((value *)&_v, i, t);
-}
-
-- (long)value
-{
- // Unsafe to use!
- return _v;
-}
-
-- (void)dealloc
-{
- _v = Val_unit;
- caml_remove_global_root((value *)&_v);
- [super dealloc];
-}
-@end
-
-
-// Legacy OCaml call API -- no longer needed
-#if 0
-
-extern value doCallback (value c, int argcount, value v1, value v2, value v3, BOOL exitOnException);
-extern value Callback_checkexn(value c,value v);
-extern value Callback2_checkexn(value c,value v1,value v2);
-extern value Callback3_checkexn(value c,value v1,value v2,value v3);
-
-void reportExn(const char *msg) {
- NSString *s = [NSString stringWithFormat:@"Uncaught exception: %s", msg];
- s = [[s componentsSeparatedByString:@"\n"] componentsJoinedByString:@" "];
- NSLog(@"%@",s);
- NSRunAlertPanel(@"Fatal error",s,@"Exit",nil,nil);
-}
-
-// FIXME! Claim is that value conversion must also happen in the OCaml thread...
-value doCallback (value c, int argcount, value v1, value v2, value v3, BOOL exitOnException) {
- // NSLog(@"*** doCallback: (%d) -- trying to acquire global lock", pthread_self());
- CallState cs;
- cs.opCode = OldCall;
- cs.exception = NULL;
- cs.call = c;
- cs.a1 = v1;
- cs.a2 = v2;
- cs.a3 = v3;
- cs.argCount = argcount;
- @try {
- return _passCall(&cs);
- } @catch (NSException *ex) {
- if (exitOnException) {
- reportExn(cs.exception);
- exit(1);
- }
- @throw ex;
- }
-}
-
-value Callback_checkexn(value c,value v) {
- return doCallback(c, 1, v, 0, 0, TRUE);
-}
-
-value Callback2_checkexn(value c,value v1,value v2) {
- return doCallback(c, 2, v1, v2, 0, TRUE);
-}
-
-value Callback3_checkexn(value c,value v1,value v2,value v3) {
- return doCallback(c, 3, v1, v2, v3, TRUE);
-}
-#endif
diff --git a/src/uimacnew/English.lproj/InfoPlist.strings b/src/uimacnew/English.lproj/InfoPlist.strings
deleted file mode 100644
index f1eb09d..0000000
--- a/src/uimacnew/English.lproj/InfoPlist.strings
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/English.lproj/MainMenu.nib/classes.nib b/src/uimacnew/English.lproj/MainMenu.nib/classes.nib
deleted file mode 100644
index 1eb9865..0000000
--- a/src/uimacnew/English.lproj/MainMenu.nib/classes.nib
+++ /dev/null
@@ -1,267 +0,0 @@
-<?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>NSSegmentedControl</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSControl</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSOutlineView</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSTableView</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>ProfileTableView</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>OUTLETS</key>
- <dict>
- <key>myController</key>
- <string>MyController</string>
- </dict>
- <key>SUPERCLASS</key>
- <string>NSTableView</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>ProfileController</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>OUTLETS</key>
- <dict>
- <key>tableView</key>
- <string>NSTableView</string>
- </dict>
- <key>SUPERCLASS</key>
- <string>NSObject</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NotificationController</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSObject</string>
- </dict>
- <dict>
- <key>ACTIONS</key>
- <dict>
- <key>anyEnter</key>
- <string>id</string>
- <key>localClick</key>
- <string>id</string>
- <key>remoteClick</key>
- <string>id</string>
- </dict>
- <key>CLASS</key>
- <string>PreferencesController</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>OUTLETS</key>
- <dict>
- <key>firstRootText</key>
- <string>NSTextField</string>
- <key>localButtonCell</key>
- <string>NSButtonCell</string>
- <key>profileNameText</key>
- <string>NSTextField</string>
- <key>remoteButtonCell</key>
- <string>NSButtonCell</string>
- <key>secondRootHost</key>
- <string>NSTextField</string>
- <key>secondRootText</key>
- <string>NSTextField</string>
- <key>secondRootUser</key>
- <string>NSTextField</string>
- </dict>
- <key>SUPERCLASS</key>
- <string>NSObject</string>
- </dict>
- <dict>
- <key>ACTIONS</key>
- <dict>
- <key>copyLR</key>
- <string>id</string>
- <key>copyRL</key>
- <string>id</string>
- <key>forceNewer</key>
- <string>id</string>
- <key>forceOlder</key>
- <string>id</string>
- <key>ignoreExt</key>
- <string>id</string>
- <key>ignoreName</key>
- <string>id</string>
- <key>ignorePath</key>
- <string>id</string>
- <key>leaveAlone</key>
- <string>id</string>
- <key>merge</key>
- <string>id</string>
- <key>revert</key>
- <string>id</string>
- <key>selectConflicts</key>
- <string>id</string>
- <key>showDiff</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>MessageProgressIndicator</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSProgressIndicator</string>
- </dict>
- <dict>
- <key>ACTIONS</key>
- <dict>
- <key>cancelProfileButton</key>
- <string>id</string>
- <key>cltoolNoButton</key>
- <string>id</string>
- <key>cltoolYesButton</key>
- <string>id</string>
- <key>createButton</key>
- <string>id</string>
- <key>endPasswordWindow</key>
- <string>id</string>
- <key>installCommandLineTool</key>
- <string>id</string>
- <key>onlineHelp</key>
- <string>id</string>
- <key>openButton</key>
- <string>id</string>
- <key>raiseAboutWindow</key>
- <string>id</string>
- <key>raiseCltoolWindow</key>
- <string>id</string>
- <key>raiseWindow</key>
- <string>NSWindow</string>
- <key>rescan</key>
- <string>id</string>
- <key>restartButton</key>
- <string>id</string>
- <key>saveProfileButton</key>
- <string>id</string>
- <key>syncButton</key>
- <string>id</string>
- <key>tableModeChanged</key>
- <string>id</string>
- </dict>
- <key>CLASS</key>
- <string>MyController</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>OUTLETS</key>
- <dict>
- <key>ConnectingView</key>
- <string>NSView</string>
- <key>aboutWindow</key>
- <string>NSWindow</string>
- <key>chooseProfileView</key>
- <string>NSView</string>
- <key>cltoolPref</key>
- <string>NSButton</string>
- <key>cltoolWindow</key>
- <string>NSWindow</string>
- <key>detailsTextView</key>
- <string>NSTextView</string>
- <key>diffView</key>
- <string>NSTextView</string>
- <key>diffWindow</key>
- <string>NSWindow</string>
- <key>mainWindow</key>
- <string>NSWindow</string>
- <key>notificationController</key>
- <string>NotificationController</string>
- <key>passwordCancelButton</key>
- <string>NSButton</string>
- <key>passwordPrompt</key>
- <string>NSTextField</string>
- <key>passwordText</key>
- <string>NSTextField</string>
- <key>passwordWindow</key>
- <string>NSWindow</string>
- <key>preferencesController</key>
- <string>PreferencesController</string>
- <key>preferencesView</key>
- <string>NSView</string>
- <key>profileController</key>
- <string>ProfileController</string>
- <key>progressBar</key>
- <string>NSProgressIndicator</string>
- <key>statusText</key>
- <string>NSTextField</string>
- <key>tableModeSelector</key>
- <string>NSSegmentedControl</string>
- <key>tableView</key>
- <string>ReconTableView</string>
- <key>updatesText</key>
- <string>NSTextField</string>
- <key>updatesView</key>
- <string>NSView</string>
- <key>versionText</key>
- <string>NSTextField</string>
- </dict>
- <key>SUPERCLASS</key>
- <string>NSObject</string>
- </dict>
- <dict>
- <key>ACTIONS</key>
- <dict>
- <key>copyLR</key>
- <string>id</string>
- <key>copyRL</key>
- <string>id</string>
- <key>forceNewer</key>
- <string>id</string>
- <key>forceOlder</key>
- <string>id</string>
- <key>ignoreExt</key>
- <string>id</string>
- <key>ignoreName</key>
- <string>id</string>
- <key>ignorePath</key>
- <string>id</string>
- <key>leaveAlone</key>
- <string>id</string>
- <key>merge</key>
- <string>id</string>
- <key>revert</key>
- <string>id</string>
- <key>selectConflicts</key>
- <string>id</string>
- <key>showDiff</key>
- <string>id</string>
- </dict>
- <key>CLASS</key>
- <string>ReconTableView</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSOutlineView</string>
- </dict>
- </array>
- <key>IBVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/src/uimacnew/English.lproj/MainMenu.nib/info.nib b/src/uimacnew/English.lproj/MainMenu.nib/info.nib
deleted file mode 100644
index fa90620..0000000
--- a/src/uimacnew/English.lproj/MainMenu.nib/info.nib
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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>../uimacnew.xcodeproj</string>
- <key>IBOldestOS</key>
- <integer>5</integer>
- <key>IBOpenObjects</key>
- <array>
- <integer>198</integer>
- <integer>29</integer>
- <integer>197</integer>
- <integer>423</integer>
- <integer>2</integer>
- <integer>307</integer>
- <integer>402</integer>
- </array>
- <key>IBSystem Version</key>
- <string>9L30</string>
- <key>targetFramework</key>
- <string>IBCocoaFramework</string>
-</dict>
-</plist>
diff --git a/src/uimacnew/English.lproj/MainMenu.nib/keyedobjects.nib b/src/uimacnew/English.lproj/MainMenu.nib/keyedobjects.nib
deleted file mode 100644
index b32fce4..0000000
--- a/src/uimacnew/English.lproj/MainMenu.nib/keyedobjects.nib
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/English.lproj/MainMenu.nib/objects.nib b/src/uimacnew/English.lproj/MainMenu.nib/objects.nib
deleted file mode 100644
index a321a2a..0000000
--- a/src/uimacnew/English.lproj/MainMenu.nib/objects.nib
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/Growl.framework/Growl b/src/uimacnew/Growl.framework/Growl
deleted file mode 120000
index 85956e2..0000000
--- a/src/uimacnew/Growl.framework/Growl
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Growl \ No newline at end of file
diff --git a/src/uimacnew/Growl.framework/Headers b/src/uimacnew/Growl.framework/Headers
deleted file mode 120000
index a177d2a..0000000
--- a/src/uimacnew/Growl.framework/Headers
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Headers \ No newline at end of file
diff --git a/src/uimacnew/Growl.framework/Resources b/src/uimacnew/Growl.framework/Resources
deleted file mode 120000
index 953ee36..0000000
--- a/src/uimacnew/Growl.framework/Resources
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Resources \ No newline at end of file
diff --git a/src/uimacnew/Growl.framework/Versions/A/Growl b/src/uimacnew/Growl.framework/Versions/A/Growl
deleted file mode 100755
index 62cb342..0000000
--- a/src/uimacnew/Growl.framework/Versions/A/Growl
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/Growl.framework/Versions/A/Headers/Growl.h b/src/uimacnew/Growl.framework/Versions/A/Headers/Growl.h
deleted file mode 100644
index e2a4425..0000000
--- a/src/uimacnew/Growl.framework/Versions/A/Headers/Growl.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#include "GrowlDefines.h"
-
-#ifdef __OBJC__
-# include "GrowlApplicationBridge.h"
-#endif
-#include "GrowlApplicationBridge-Carbon.h"
diff --git a/src/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h b/src/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h
deleted file mode 100644
index 22ccf5e..0000000
--- a/src/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h
+++ /dev/null
@@ -1,758 +0,0 @@
-//
-// GrowlApplicationBridge-Carbon.h
-// Growl
-//
-// Created by Mac-arena the Bored Zo on Wed Jun 18 2004.
-// Based on GrowlApplicationBridge.h by Evan Schoenberg.
-// This source code is in the public domain. You may freely link it into any
-// program.
-//
-
-#ifndef _GROWLAPPLICATIONBRIDGE_CARBON_H_
-#define _GROWLAPPLICATIONBRIDGE_CARBON_H_
-
-#include <sys/cdefs.h>
-#include <Carbon/Carbon.h>
-
-/*! @header GrowlApplicationBridge-Carbon.h
- * @abstract Declares an API that Carbon applications can use to interact with Growl.
- * @discussion GrowlApplicationBridge uses a delegate to provide information //XXX
- * to Growl (such as your application's name and what notifications it may
- * post) and to provide information to your application (such as that Growl
- * is listening for notifications or that a notification has been clicked).
- *
- * You can set the Growldelegate with Growl_SetDelegate and find out the
- * current delegate with Growl_GetDelegate. See struct Growl_Delegate for more
- * information about the delegate.
- */
-
-__BEGIN_DECLS
-
-/*! @struct Growl_Delegate
- * @abstract Delegate to supply GrowlApplicationBridge with information and respond to events.
- * @discussion The Growl delegate provides your interface to
- * GrowlApplicationBridge. When GrowlApplicationBridge needs information about
- * your application, it looks for it in the delegate; when Growl or the user
- * does something that you might be interested in, GrowlApplicationBridge
- * looks for a callback in the delegate and calls it if present
- * (meaning, if it is not <code>NULL</code>).
- * XXX on all of that
- * @field size The size of the delegate structure.
- * @field applicationName The name of your application.
- * @field registrationDictionary A dictionary describing your application and the notifications it can send out.
- * @field applicationIconData Your application's icon.
- * @field growlInstallationWindowTitle The title of the installation window.
- * @field growlInstallationInformation Text to display in the installation window.
- * @field growlUpdateWindowTitle The title of the update window.
- * @field growlUpdateInformation Text to display in the update window.
- * @field referenceCount A count of owners of the delegate.
- * @field retain Called when GrowlApplicationBridge receives this delegate.
- * @field release Called when GrowlApplicationBridge no longer needs this delegate.
- * @field growlIsReady Called when GrowlHelperApp is listening for notifications.
- * @field growlNotificationWasClicked Called when a Growl notification is clicked.
- * @field growlNotificationTimedOut Called when a Growl notification timed out.
- */
-struct Growl_Delegate {
- /* @discussion This should be sizeof(struct Growl_Delegate).
- */
- size_t size;
-
- /*All of these attributes are optional.
- *Optional attributes can be NULL; required attributes that
- * are NULL cause setting the Growl delegate to fail.
- *XXX - move optional/required status into the discussion for each field
- */
-
- /* This name is used both internally and in the Growl preferences.
- *
- * This should remain stable between different versions and incarnations of
- * your application.
- * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and
- * "SurfWriter Lite" are not.
- *
- * This can be <code>NULL</code> if it is provided elsewhere, namely in an
- * auto-discoverable plist file in your app bundle
- * (XXX refer to more information on that) or in registrationDictionary.
- */
- CFStringRef applicationName;
-
- /*
- * Must contain at least these keys:
- * GROWL_NOTIFICATIONS_ALL (CFArray):
- * Contains the names of all notifications your application may post.
- *
- * Can also contain these keys:
- * GROWL_NOTIFICATIONS_DEFAULT (CFArray):
- * Names of notifications that should be enabled by default.
- * If omitted, GROWL_NOTIFICATIONS_ALL will be used.
- * GROWL_APP_NAME (CFString):
- * Same as the applicationName member of this structure.
- * If both are present, the applicationName member shall prevail.
- * If this key is present, you may omit applicationName (set it to <code>NULL</code>).
- * GROWL_APP_ICON (CFData):
- * Same as the iconData member of this structure.
- * If both are present, the iconData member shall prevail.
- * If this key is present, you may omit iconData (set it to <code>NULL</code>).
- *
- * If you change the contents of this dictionary after setting the delegate,
- * be sure to call Growl_Reregister.
- *
- * This can be <code>NULL</code> if you have an auto-discoverable plist file in your app
- * bundle. (XXX refer to more information on that)
- */
- CFDictionaryRef registrationDictionary;
-
- /* The data can be in any format supported by NSImage. As of
- * Mac OS X 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and
- * PICT formats.
- *
- * If this is not supplied, Growl will look up your application's icon by
- * its application name.
- */
- CFDataRef applicationIconData;
-
- /* Installer display attributes
- *
- * These four attributes are used by the Growl installer, if this framework
- * supports it.
- * For any of these being <code>NULL</code>, a localised default will be
- * supplied.
- */
-
- /* If this is <code>NULL</code>, Growl will use a default,
- * localized title.
- *
- * Only used if you're using Growl-WithInstaller.framework. Otherwise,
- * this member is ignored.
- */
- CFStringRef growlInstallationWindowTitle;
- /* This information may be as long or short as desired (the
- * window will be sized to fit it). If Growl is not installed, it will
- * be displayed to the user as an explanation of what Growl is and what
- * it can do in your application.
- * It should probably note that no download is required to install.
- *
- * If this is <code>NULL</code>, Growl will use a default, localized
- * explanation.
- *
- * Only used if you're using Growl-WithInstaller.framework. Otherwise,
- * this member is ignored.
- */
- CFStringRef growlInstallationInformation;
- /* If this is <code>NULL</code>, Growl will use a default,
- * localized title.
- *
- * Only used if you're using Growl-WithInstaller.framework. Otherwise,
- * this member is ignored.
- */
- CFStringRef growlUpdateWindowTitle;
- /* This information may be as long or short as desired (the
- * window will be sized to fit it). If an older version of Growl is
- * installed, it will be displayed to the user as an explanation that an
- * updated version of Growl is included in your application and
- * no download is required.
- *
- * If this is <code>NULL</code>, Growl will use a default, localized
- * explanation.
- *
- * Only used if you're using Growl-WithInstaller.framework. Otherwise,
- * this member is ignored.
- */
- CFStringRef growlUpdateInformation;
-
- /* This member is provided for use by your retain and release
- * callbacks (see below).
- *
- * GrowlApplicationBridge never directly uses this member. Instead, it
- * calls your retain callback (if non-<code>NULL</code>) and your release
- * callback (if non-<code>NULL</code>).
- */
- unsigned referenceCount;
-
- //Functions. Currently all of these are optional (any of them can be NULL).
-
- /* When you call Growl_SetDelegate(newDelegate), it will call
- * oldDelegate->release(oldDelegate), and then it will call
- * newDelegate->retain(newDelegate), and the return value from retain
- * is what will be set as the delegate.
- * (This means that this member works like CFRetain and -[NSObject retain].)
- * This member is optional (it can be <code>NULL</code>).
- * For a delegate allocated with malloc, this member would be
- * <code>NULL</code>.
- * @result A delegate to which GrowlApplicationBridge holds a reference.
- */
- void *(*retain)(void *);
- /* When you call Growl_SetDelegate(newDelegate), it will call
- * oldDelegate->release(oldDelegate), and then it will call
- * newDelegate->retain(newDelegate), and the return value from retain
- * is what will be set as the delegate.
- * (This means that this member works like CFRelease and
- * -[NSObject release].)
- * This member is optional (it can be NULL).
- * For a delegate allocated with malloc, this member might be
- * <code>free</code>(3).
- */
- void (*release)(void *);
-
- /* Informs the delegate that Growl (specifically, the GrowlHelperApp) was
- * launched successfully (or was already running). The application can
- * take actions with the knowledge that Growl is installed and functional.
- */
- void (*growlIsReady)(void);
-
- /* Informs the delegate that a Growl notification was clicked. It is only
- * sent for notifications sent with a non-<code>NULL</code> clickContext,
- * so if you want to receive a message when a notification is clicked,
- * clickContext must not be <code>NULL</code> when calling
- * Growl_PostNotification or
- * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.
- */
- void (*growlNotificationWasClicked)(CFPropertyListRef clickContext);
-
- /* Informs the delegate that a Growl notification timed out. It is only
- * sent for notifications sent with a non-<code>NULL</code> clickContext,
- * so if you want to receive a message when a notification is clicked,
- * clickContext must not be <code>NULL</code> when calling
- * Growl_PostNotification or
- * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext.
- */
- void (*growlNotificationTimedOut)(CFPropertyListRef clickContext);
-};
-
-/*! @struct Growl_Notification
- * @abstract Structure describing a Growl notification.
- * @discussion XXX
- * @field size The size of the notification structure.
- * @field name Identifies the notification.
- * @field title Short synopsis of the notification.
- * @field description Additional text.
- * @field iconData An icon for the notification.
- * @field priority An indicator of the notification's importance.
- * @field reserved Bits reserved for future usage.
- * @field isSticky Requests that a notification stay on-screen until dismissed explicitly.
- * @field clickContext An identifier to be passed to your click callback when a notification is clicked.
- * @field clickCallback A callback to call when the notification is clicked.
- */
-struct Growl_Notification {
- /* This should be sizeof(struct Growl_Notification).
- */
- size_t size;
-
- /* The notification name distinguishes one type of
- * notification from another. The name should be human-readable, as it
- * will be displayed in the Growl preference pane.
- *
- * The name is used in the GROWL_NOTIFICATIONS_ALL and
- * GROWL_NOTIFICATIONS_DEFAULT arrays in the registration dictionary, and
- * in this member of the Growl_Notification structure.
- */
- CFStringRef name;
-
- /* A notification's title describes the notification briefly.
- * It should be easy to read quickly by the user.
- */
- CFStringRef title;
-
- /* The description supplements the title with more
- * information. It is usually longer and sometimes involves a list of
- * subjects. For example, for a 'Download complete' notification, the
- * description might have one filename per line. GrowlMail in Growl 0.6
- * uses a description of '%d new mail(s)' (formatted with the number of
- * messages).
- */
- CFStringRef description;
-
- /* The notification icon usually indicates either what
- * happened (it may have the same icon as e.g. a toolbar item that
- * started the process that led to the notification), or what it happened
- * to (e.g. a document icon).
- *
- * The icon data is optional, so it can be <code>NULL</code>. In that
- * case, the application icon is used alone. Not all displays support
- * icons.
- *
- * The data can be in any format supported by NSImage. As of Mac OS X
- * 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT form
- * ats.
- */
- CFDataRef iconData;
-
- /* Priority is new in Growl 0.6, and is represented as a
- * signed integer from -2 to +2. 0 is Normal priority, -2 is Very Low
- * priority, and +2 is Very High priority.
- *
- * Not all displays support priority. If you do not wish to assign a
- * priority to your notification, assign 0.
- */
- signed int priority;
-
- /* These bits are not used in Growl 0.6. Set them to 0.
- */
- unsigned reserved: 31;
-
- /* When the sticky bit is clear, in most displays,
- * notifications disappear after a certain amount of time. Sticky
- * notifications, however, remain on-screen until the user dismisses them
- * explicitly, usually by clicking them.
- *
- * Sticky notifications were introduced in Growl 0.6. Most notifications
- * should not be sticky. Not all displays support sticky notifications,
- * and the user may choose in Growl's preference pane to force the
- * notification to be sticky or non-sticky, in which case the sticky bit
- * in the notification will be ignored.
- */
- unsigned isSticky: 1;
-
- /* If this is not <code>NULL</code>, and your click callback
- * is not <code>NULL</code> either, this will be passed to the callback
- * when your notification is clicked by the user.
- *
- * Click feedback was introduced in Growl 0.6, and it is optional. Not
- * all displays support click feedback.
- */
- CFPropertyListRef clickContext;
-
- /* If this is not <code>NULL</code>, it will be called instead
- * of the Growl delegate's click callback when clickContext is
- * non-<code>NULL</code> and the notification is clicked on by the user.
- *
- * Click feedback was introduced in Growl 0.6, and it is optional. Not
- * all displays support click feedback.
- *
- * The per-notification click callback is not yet supported as of Growl
- * 0.7.
- */
- void (*clickCallback)(CFPropertyListRef clickContext);
-};
-
-#pragma mark -
-#pragma mark Easy initialisers
-
-/*! @defined InitGrowlDelegate
- * @abstract Callable macro. Initializes a Growl delegate structure to defaults.
- * @discussion Call with a pointer to a struct Growl_Delegate. All of the
- * members of the structure will be set to 0 or <code>NULL</code>, except for
- * size (which will be set to <code>sizeof(struct Growl_Delegate)</code>) and
- * referenceCount (which will be set to 1).
- */
-#define InitGrowlDelegate(delegate) \
- do { \
- if (delegate) { \
- (delegate)->size = sizeof(struct Growl_Delegate); \
- (delegate)->applicationName = NULL; \
- (delegate)->registrationDictionary = NULL; \
- (delegate)->applicationIconData = NULL; \
- (delegate)->growlInstallationWindowTitle = NULL; \
- (delegate)->growlInstallationInformation = NULL; \
- (delegate)->growlUpdateWindowTitle = NULL; \
- (delegate)->growlUpdateInformation = NULL; \
- (delegate)->referenceCount = 1U; \
- (delegate)->retain = NULL; \
- (delegate)->release = NULL; \
- (delegate)->growlIsReady = NULL; \
- (delegate)->growlNotificationWasClicked = NULL; \
- (delegate)->growlNotificationTimedOut = NULL; \
- } \
- } while(0)
-
-/*! @defined InitGrowlNotification
- * @abstract Callable macro. Initializes a Growl notification structure to defaults.
- * @discussion Call with a pointer to a struct Growl_Notification. All of
- * the members of the structure will be set to 0 or <code>NULL</code>, except
- * for size (which will be set to
- * <code>sizeof(struct Growl_Notification)</code>).
- */
-#define InitGrowlNotification(notification) \
- do { \
- if (notification) { \
- (notification)->size = sizeof(struct Growl_Notification); \
- (notification)->name = NULL; \
- (notification)->title = NULL; \
- (notification)->description = NULL; \
- (notification)->iconData = NULL; \
- (notification)->priority = 0; \
- (notification)->reserved = 0U; \
- (notification)->isSticky = false; \
- (notification)->clickContext = NULL; \
- } \
- } while(0)
-
-#pragma mark -
-#pragma mark Public API
-
-// @functiongroup Managing the Growl delegate
-
-/*! @function Growl_SetDelegate
- * @abstract Replaces the current Growl delegate with a new one, or removes
- * the Growl delegate.
- * @param newDelegate
- * @result Returns false and does nothing else if a pointer that was passed in
- * is unsatisfactory (because it is non-<code>NULL</code>, but at least one
- * required member of it is <code>NULL</code>). Otherwise, sets or unsets the
- * delegate and returns true.
- * @discussion When <code>newDelegate</code> is non-<code>NULL</code>, sets
- * the delegate to <code>newDelegate</code>. When it is <code>NULL</code>,
- * the current delegate will be unset, and no delegate will be in place.
- *
- * It is legal for <code>newDelegate</code> to be the current delegate;
- * nothing will happen, and Growl_SetDelegate will return true. It is also
- * legal for it to be <code>NULL</code>, as described above; again, it will
- * return true.
- *
- * If there was a delegate in place before the call, Growl_SetDelegate will
- * call the old delegate's release member if it was non-<code>NULL</code>. If
- * <code>newDelegate</code> is non-<code>NULL</code>, Growl_SetDelegate will
- * call <code>newDelegate->retain</code>, and set the delegate to its return
- * value.
- *
- * If you are using Growl-WithInstaller.framework, and an older version of
- * Growl is installed on the user's system, the user will automatically be
- * prompted to update.
- *
- * GrowlApplicationBridge currently does not copy this structure, nor does it
- * retain any of the CF objects in the structure (it regards the structure as
- * a container that retains the objects when they are added and releases them
- * when they are removed or the structure is destroyed). Also,
- * GrowlApplicationBridge currently does not modify any member of the
- * structure, except possibly the referenceCount by calling the retain and
- * release members.
- */
-Boolean Growl_SetDelegate(struct Growl_Delegate *newDelegate);
-
-/*! @function Growl_GetDelegate
- * @abstract Returns the current Growl delegate, if any.
- * @result The current Growl delegate.
- * @discussion Returns the last pointer passed into Growl_SetDelegate, or
- * <code>NULL</code> if no such call has been made.
- *
- * This function follows standard Core Foundation reference-counting rules.
- * Because it is a Get function, not a Copy function, it will not retain the
- * delegate on your behalf. You are responsible for retaining and releasing
- * the delegate as needed.
- */
-struct Growl_Delegate *Growl_GetDelegate(void);
-
-#pragma mark -
-
-// @functiongroup Posting Growl notifications
-
-/*! @function Growl_PostNotification
- * @abstract Posts a Growl notification.
- * @param notification The notification to post.
- * @discussion This is the preferred means for sending a Growl notification.
- * The notification name and at least one of the title and description are
- * required (all three are preferred). All other parameters may be
- * <code>NULL</code> (or 0 or false as appropriate) to accept default values.
- *
- * If using the Growl-WithInstaller framework, if Growl is not installed the
- * user will be prompted to install Growl.
- * If the user cancels, this function will have no effect until the next
- * application session, at which time when it is called the user will be
- * prompted again. The user is also given the option to not be prompted again.
- * If the user does choose to install Growl, the requested notification will
- * be displayed once Growl is installed and running.
- */
-void Growl_PostNotification(const struct Growl_Notification *notification);
-
-/*! @function Growl_PostNotificationWithDictionary
-* @abstract Notifies using a userInfo dictionary suitable for passing to
-* CFDistributedNotificationCenter.
-* @param userInfo The dictionary to notify with.
-* @discussion Before Growl 0.6, your application would have posted
-* notifications using CFDistributedNotificationCenter by creating a userInfo
-* dictionary with the notification data. This had the advantage of allowing
-* you to add other data to the dictionary for programs besides Growl that
-* might be listening.
-*
-* This function allows you to use such dictionaries without being restricted
-* to using CFDistributedNotificationCenter. The keys for this dictionary
- * can be found in GrowlDefines.h.
-*/
-void Growl_PostNotificationWithDictionary(CFDictionaryRef userInfo);
-
-/*! @function Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext
- * @abstract Posts a Growl notification using parameter values.
- * @param title The title of the notification.
- * @param description The description of the notification.
- * @param notificationName The name of the notification as listed in the
- * registration dictionary.
- * @param iconData Data representing a notification icon. Can be <code>NULL</code>.
- * @param priority The priority of the notification (-2 to +2, with -2
- * being Very Low and +2 being Very High).
- * @param isSticky If true, requests that this notification wait for a
- * response from the user.
- * @param clickContext An object to pass to the clickCallback, if any. Can
- * be <code>NULL</code>, in which case the clickCallback is not called.
- * @discussion Creates a temporary Growl_Notification, fills it out with the
- * supplied information, and calls Growl_PostNotification on it.
- * See struct Growl_Notification and Growl_PostNotification for more
- * information.
- *
- * The icon data can be in any format supported by NSImage. As of Mac OS X
- * 10.3, this includes the .icns, TIFF, JPEG, GIF, PNG, PDF, and PICT formats.
- */
-void Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext(
- /*inhale*/
- CFStringRef title,
- CFStringRef description,
- CFStringRef notificationName,
- CFDataRef iconData,
- signed int priority,
- Boolean isSticky,
- CFPropertyListRef clickContext);
-
-#pragma mark -
-
-// @functiongroup Registering
-
-/*! @function Growl_RegisterWithDictionary
- * @abstract Register your application with Growl without setting a delegate.
- * @discussion When you call this function with a dictionary,
- * GrowlApplicationBridge registers your application using that dictionary.
- * If you pass <code>NULL</code>, GrowlApplicationBridge will ask the delegate
- * (if there is one) for a dictionary, and if that doesn't work, it will look
- * in your application's bundle for an auto-discoverable plist.
- * (XXX refer to more information on that)
- *
- * If you pass a dictionary to this function, it must include the
- * <code>GROWL_APP_NAME</code> key, unless a delegate is set.
- *
- * This function is mainly an alternative to the delegate system introduced
- * with Growl 0.6. Without a delegate, you cannot receive callbacks such as
- * <code>growlIsReady</code> (since they are sent to the delegate). You can,
- * however, set a delegate after registering without one.
- *
- * This function was introduced in Growl.framework 0.7.
- * @result <code>false</code> if registration failed (e.g. if Growl isn't installed).
- */
-Boolean Growl_RegisterWithDictionary(CFDictionaryRef regDict);
-
-/*! @function Growl_Reregister
- * @abstract Updates your registration with Growl.
- * @discussion If your application changes the contents of the
- * GROWL_NOTIFICATIONS_ALL key in the registrationDictionary member of the
- * Growl delegate, or if it changes the value of that member, or if it
- * changes the contents of its auto-discoverable plist, call this function
- * to have Growl update its registration information for your application.
- *
- * Otherwise, this function does not normally need to be called. If you're
- * using a delegate, your application will be registered when you set the
- * delegate if both the delegate and its registrationDictionary member are
- * non-<code>NULL</code>.
- *
- * This function is now implemented using
- * <code>Growl_RegisterWithDictionary</code>.
- */
-void Growl_Reregister(void);
-
-#pragma mark -
-
-/*! @function Growl_SetWillRegisterWhenGrowlIsReady
- * @abstract Tells GrowlApplicationBridge to register with Growl when Growl
- * launches (or not).
- * @discussion When Growl has started listening for notifications, it posts a
- * <code>GROWL_IS_READY</code> notification on the Distributed Notification
- * Center. GrowlApplicationBridge listens for this notification, using it to
- * perform various tasks (such as calling your delegate's
- * <code>growlIsReady</code> callback, if it has one). If this function is
- * called with <code>true</code>, one of those tasks will be to reregister
- * with Growl (in the manner of <code>Growl_Reregister</code>).
- *
- * This attribute is automatically set back to <code>false</code>
- * (the default) after every <code>GROWL_IS_READY</code> notification.
- * @param flag <code>true</code> if you want GrowlApplicationBridge to register with
- * Growl when next it is ready; <code>false</code> if not.
- */
-void Growl_SetWillRegisterWhenGrowlIsReady(Boolean flag);
-/*! @function Growl_WillRegisterWhenGrowlIsReady
- * @abstract Reports whether GrowlApplicationBridge will register with Growl
- * when Growl next launches.
- * @result <code>true</code> if GrowlApplicationBridge will register with
- * Growl when next it posts GROWL_IS_READY; <code>false</code> if not.
- */
-Boolean Growl_WillRegisterWhenGrowlIsReady(void);
-
-#pragma mark -
-
-// @functiongroup Obtaining registration dictionaries
-
-/*! @function Growl_CopyRegistrationDictionaryFromDelegate
- * @abstract Asks the delegate for a registration dictionary.
- * @discussion If no delegate is set, or if the delegate's
- * <code>registrationDictionary</code> member is <code>NULL</code>, this
- * function returns <code>NULL</code>.
- *
- * This function does not attempt to clean up the dictionary in any way - for
- * example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
- * will be missing it too. Use
- * <code>Growl_CreateRegistrationDictionaryByFillingInDictionary:</code> or
- * <code>Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys</code>
- * to try to fill in missing keys.
- *
- * This function was introduced in Growl.framework 0.7.
- * @result A registration dictionary.
- */
-CFDictionaryRef Growl_CopyRegistrationDictionaryFromDelegate(void);
-
-/*! @function Growl_CopyRegistrationDictionaryFromBundle
- * @abstract Looks in a bundle for a registration dictionary.
- * @discussion This function looks in a bundle for an auto-discoverable
- * registration dictionary file using <code>CFBundleCopyResourceURL</code>.
- * If it finds one, it loads the file using <code>CFPropertyList</code> and
- * returns the result.
- *
- * If you pass <code>NULL</code> as the bundle, the main bundle is examined.
- *
- * This function does not attempt to clean up the dictionary in any way - for
- * example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
- * will be missing it too. Use
- * <code>Growl_CreateRegistrationDictionaryByFillingInDictionary:</code> or
- * <code>Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys</code>
- * to try to fill in missing keys.
- *
- * This function was introduced in Growl.framework 0.7.
- * @result A registration dictionary.
- */
-CFDictionaryRef Growl_CopyRegistrationDictionaryFromBundle(CFBundleRef bundle);
-
-/*! @function Growl_CreateBestRegistrationDictionary
- * @abstract Obtains a registration dictionary, filled out to the best of
- * GrowlApplicationBridge's knowledge.
- * @discussion This function creates a registration dictionary as best
- * GrowlApplicationBridge knows how.
- *
- * First, GrowlApplicationBridge examines the Growl delegate (if there is
- * one) and gets the registration dictionary from that. If no such dictionary
- * was obtained, GrowlApplicationBridge looks in your application's main
- * bundle for an auto-discoverable registration dictionary file. If that
- * doesn't exist either, this function returns <code>NULL</code>.
- *
- * Second, GrowlApplicationBridge calls
- * <code>Growl_CreateRegistrationDictionaryByFillingInDictionary</code> with
- * whatever dictionary was obtained. The result of that function is the
- * result of this function.
- *
- * GrowlApplicationBridge uses this function when you call
- * <code>Growl_SetDelegate</code>, or when you call
- * <code>Growl_RegisterWithDictionary</code> with <code>NULL</code>.
- *
- * This function was introduced in Growl.framework 0.7.
- * @result A registration dictionary.
- */
-CFDictionaryRef Growl_CreateBestRegistrationDictionary(void);
-
-#pragma mark -
-
-// @functiongroup Filling in registration dictionaries
-
-/*! @function Growl_CreateRegistrationDictionaryByFillingInDictionary
- * @abstract Tries to fill in missing keys in a registration dictionary.
- * @param regDict The dictionary to fill in.
- * @result The dictionary with the keys filled in.
- * @discussion This function examines the passed-in dictionary for missing keys,
- * and tries to work out correct values for them. As of 0.7, it uses:
- *
- * Key Value
- * --- -----
- * <code>GROWL_APP_NAME</code> <code>CFBundleExecutableName</code>
- * <code>GROWL_APP_ICON</code> The icon of the application.
- * <code>GROWL_APP_LOCATION</code> The location of the application.
- * <code>GROWL_NOTIFICATIONS_DEFAULT</code> <code>GROWL_NOTIFICATIONS_ALL</code>
- *
- * Keys are only filled in if missing; if a key is present in the dictionary,
- * its value will not be changed.
- *
- * This function was introduced in Growl.framework 0.7.
- */
-CFDictionaryRef Growl_CreateRegistrationDictionaryByFillingInDictionary(CFDictionaryRef regDict);
-/*! @function Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys
- * @abstract Tries to fill in missing keys in a registration dictionary.
- * @param regDict The dictionary to fill in.
- * @param keys The keys to fill in. If <code>NULL</code>, any missing keys are filled in.
- * @result The dictionary with the keys filled in.
- * @discussion This function examines the passed-in dictionary for missing keys,
- * and tries to work out correct values for them. As of 0.7, it uses:
- *
- * Key Value
- * --- -----
- * <code>GROWL_APP_NAME</code> <code>CFBundleExecutableName</code>
- * <code>GROWL_APP_ICON</code> The icon of the application.
- * <code>GROWL_APP_LOCATION</code> The location of the application.
- * <code>GROWL_NOTIFICATIONS_DEFAULT</code> <code>GROWL_NOTIFICATIONS_ALL</code>
- *
- * Only those keys that are listed in <code>keys</code> will be filled in.
- * Other missing keys are ignored. Also, keys are only filled in if missing;
- * if a key is present in the dictionary, its value will not be changed.
- *
- * This function was introduced in Growl.framework 0.7.
- */
-CFDictionaryRef Growl_CreateRegistrationDictionaryByFillingInDictionaryRestrictedToKeys(CFDictionaryRef regDict, CFSetRef keys);
-
-#pragma mark -
-
-// @functiongroup Querying Growl's status
-
-/*! @function Growl_IsInstalled
- * @abstract Determines whether the Growl prefpane and its helper app are
- * installed.
- * @result Returns true if Growl is installed, false otherwise.
- */
-Boolean Growl_IsInstalled(void);
-
-/*! @function Growl_IsRunning
- * @abstract Cycles through the process list to find whether GrowlHelperApp
- * is running.
- * @result Returns true if Growl is running, false otherwise.
- */
-Boolean Growl_IsRunning(void);
-
-#pragma mark -
-
-// @functiongroup Launching Growl
-
-/*! @typedef GrowlLaunchCallback
- * @abstract Callback to notify you that Growl is running.
- * @param context The context pointer passed to Growl_LaunchIfInstalled.
- * @discussion Growl_LaunchIfInstalled calls this callback function if Growl
- * was already running or if it launched Growl successfully.
- */
-typedef void (*GrowlLaunchCallback)(void *context);
-
-/*! @function Growl_LaunchIfInstalled
- * @abstract Launches GrowlHelperApp if it is not already running.
- * @param callback A callback function which will be called if Growl was successfully
- * launched or was already running. Can be <code>NULL</code>.
- * @param context The context pointer to pass to the callback. Can be <code>NULL</code>.
- * @result Returns true if Growl was successfully launched or was already
- * running; returns false and does not call the callback otherwise.
- * @discussion Returns true and calls the callback (if the callback is not
- * <code>NULL</code>) if the Growl helper app began launching or was already
- * running. Returns false and performs no other action if Growl could not be
- * launched (e.g. because the Growl preference pane is not properly installed).
- *
- * If <code>Growl_CreateBestRegistrationDictionary</code> returns
- * non-<code>NULL</code>, this function will register with Growl atomically.
- *
- * The callback should take a single argument; this is to allow applications
- * to have context-relevant information passed back. It is perfectly
- * acceptable for context to be <code>NULL</code>. The callback itself can be
- * <code>NULL</code> if you don't want one.
- */
-Boolean Growl_LaunchIfInstalled(GrowlLaunchCallback callback, void *context);
-
-#pragma mark -
-#pragma mark Constants
-
-/*! @defined GROWL_PREFPANE_BUNDLE_IDENTIFIER
- * @abstract The CFBundleIdentifier of the Growl preference pane bundle.
- * @discussion GrowlApplicationBridge uses this to determine whether Growl is
- * currently installed, by searching for the Growl preference pane. Your
- * application probably does not need to use this macro itself.
- */
-#ifndef GROWL_PREFPANE_BUNDLE_IDENTIFIER
-#define GROWL_PREFPANE_BUNDLE_IDENTIFIER CFSTR("com.growl.prefpanel")
-#endif
-
-__END_DECLS
-
-#endif /* _GROWLAPPLICATIONBRIDGE_CARBON_H_ */
diff --git a/src/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h b/src/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h
deleted file mode 100644
index bb78756..0000000
--- a/src/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h
+++ /dev/null
@@ -1,556 +0,0 @@
-//
-// GrowlApplicationBridge.h
-// Growl
-//
-// Created by Evan Schoenberg on Wed Jun 16 2004.
-// Copyright 2004-2005 The Growl Project. All rights reserved.
-//
-
-/*!
- * @header GrowlApplicationBridge.h
- * @abstract Defines the GrowlApplicationBridge class.
- * @discussion This header defines the GrowlApplicationBridge class as well as
- * the GROWL_PREFPANE_BUNDLE_IDENTIFIER constant.
- */
-
-#ifndef __GrowlApplicationBridge_h__
-#define __GrowlApplicationBridge_h__
-
-#import <Foundation/Foundation.h>
-#import "GrowlDefines.h"
-
-//Forward declarations
-@protocol GrowlApplicationBridgeDelegate;
-
-/*!
- * @defined GROWL_PREFPANE_BUNDLE_IDENTIFIER
- * @discussion The bundle identifier for the Growl prefpane.
- */
-#define GROWL_PREFPANE_BUNDLE_IDENTIFIER @"com.growl.prefpanel"
-
-/*!
- * @defined GROWL_PREFPANE_NAME
- * @discussion The file name of the Growl prefpane.
- */
-#define GROWL_PREFPANE_NAME @"Growl.prefPane"
-
-//Internal notification when the user chooses not to install (to avoid continuing to cache notifications awaiting installation)
-#define GROWL_USER_CHOSE_NOT_TO_INSTALL_NOTIFICATION @"User chose not to install"
-
-//------------------------------------------------------------------------------
-#pragma mark -
-
-/*!
- * @class GrowlApplicationBridge
- * @abstract A class used to interface with Growl.
- * @discussion This class provides a means to interface with Growl.
- *
- * Currently it provides a way to detect if Growl is installed and launch the
- * GrowlHelperApp if it's not already running.
- */
-@interface GrowlApplicationBridge : NSObject {
-
-}
-
-/*!
- * @method isGrowlInstalled
- * @abstract Detects whether Growl is installed.
- * @discussion Determines if the Growl prefpane and its helper app are installed.
- * @result Returns YES if Growl is installed, NO otherwise.
- */
-+ (BOOL) isGrowlInstalled;
-
-/*!
- * @method isGrowlRunning
- * @abstract Detects whether GrowlHelperApp is currently running.
- * @discussion Cycles through the process list to find whether GrowlHelperApp is running and returns its findings.
- * @result Returns YES if GrowlHelperApp is running, NO otherwise.
- */
-+ (BOOL) isGrowlRunning;
-
-#pragma mark -
-
-/*!
- * @method setGrowlDelegate:
- * @abstract Set the object which will be responsible for providing and receiving Growl information.
- * @discussion This must be called before using GrowlApplicationBridge.
- *
- * The methods in the GrowlApplicationBridgeDelegate protocol are required
- * and return the basic information needed to register with Growl.
- *
- * The methods in the GrowlApplicationBridgeDelegate_InformalProtocol
- * informal protocol are individually optional. They provide a greater
- * degree of interaction between the application and growl such as informing
- * the application when one of its Growl notifications is clicked by the user.
- *
- * The methods in the GrowlApplicationBridgeDelegate_Installation_InformalProtocol
- * informal protocol are individually optional and are only applicable when
- * using the Growl-WithInstaller.framework which allows for automated Growl
- * installation.
- *
- * When this method is called, data will be collected from inDelegate, Growl
- * will be launched if it is not already running, and the application will be
- * registered with Growl.
- *
- * If using the Growl-WithInstaller framework, if Growl is already installed
- * but this copy of the framework has an updated version of Growl, the user
- * will be prompted to update automatically.
- *
- * @param inDelegate The delegate for the GrowlApplicationBridge. It must conform to the GrowlApplicationBridgeDelegate protocol.
- */
-+ (void) setGrowlDelegate:(NSObject<GrowlApplicationBridgeDelegate> *)inDelegate;
-
-/*!
- * @method growlDelegate
- * @abstract Return the object responsible for providing and receiving Growl information.
- * @discussion See setGrowlDelegate: for details.
- * @result The Growl delegate.
- */
-+ (NSObject<GrowlApplicationBridgeDelegate> *) growlDelegate;
-
-#pragma mark -
-
-/*!
- * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:
- * @abstract Send a Growl notification.
- * @discussion This is the preferred means for sending a Growl notification.
- * The notification name and at least one of the title and description are
- * required (all three are preferred). All other parameters may be
- * <code>nil</code> (or 0 or NO as appropriate) to accept default values.
- *
- * If using the Growl-WithInstaller framework, if Growl is not installed the
- * user will be prompted to install Growl. If the user cancels, this method
- * will have no effect until the next application session, at which time when
- * it is called the user will be prompted again. The user is also given the
- * option to not be prompted again. If the user does choose to install Growl,
- * the requested notification will be displayed once Growl is installed and
- * running.
- *
- * @param title The title of the notification displayed to the user.
- * @param description The full description of the notification displayed to the user.
- * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane.
- * @param iconData <code>NSData</code> object to show with the notification as its icon. If <code>nil</code>, the application's icon will be used instead.
- * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority.
- * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications.
- * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of <code>NSString</code>, <code>NSArray</code>, <code>NSNumber</code>, <code>NSDictionary</code>, and <code>NSData</code> types).
- */
-+ (void) notifyWithTitle:(NSString *)title
- description:(NSString *)description
- notificationName:(NSString *)notifName
- iconData:(NSData *)iconData
- priority:(signed int)priority
- isSticky:(BOOL)isSticky
- clickContext:(id)clickContext;
-
-/*!
- * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:identifier:
- * @abstract Send a Growl notification.
- * @discussion This is the preferred means for sending a Growl notification.
- * The notification name and at least one of the title and description are
- * required (all three are preferred). All other parameters may be
- * <code>nil</code> (or 0 or NO as appropriate) to accept default values.
- *
- * If using the Growl-WithInstaller framework, if Growl is not installed the
- * user will be prompted to install Growl. If the user cancels, this method
- * will have no effect until the next application session, at which time when
- * it is called the user will be prompted again. The user is also given the
- * option to not be prompted again. If the user does choose to install Growl,
- * the requested notification will be displayed once Growl is installed and
- * running.
- *
- * @param title The title of the notification displayed to the user.
- * @param description The full description of the notification displayed to the user.
- * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane.
- * @param iconData <code>NSData</code> object to show with the notification as its icon. If <code>nil</code>, the application's icon will be used instead.
- * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority.
- * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications.
- * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of <code>NSString</code>, <code>NSArray</code>, <code>NSNumber</code>, <code>NSDictionary</code>, and <code>NSData</code> types).
- * @param identifier An identifier for this notification. Notifications with equal identifiers are coalesced.
- */
-+ (void) notifyWithTitle:(NSString *)title
- description:(NSString *)description
- notificationName:(NSString *)notifName
- iconData:(NSData *)iconData
- priority:(signed int)priority
- isSticky:(BOOL)isSticky
- clickContext:(id)clickContext
- identifier:(NSString *)identifier;
-
-/*! @method notifyWithDictionary:
- * @abstract Notifies using a userInfo dictionary suitable for passing to
- * <code>NSDistributedNotificationCenter</code>.
- * @param userInfo The dictionary to notify with.
- * @discussion Before Growl 0.6, your application would have posted
- * notifications using <code>NSDistributedNotificationCenter</code> by
- * creating a userInfo dictionary with the notification data. This had the
- * advantage of allowing you to add other data to the dictionary for programs
- * besides Growl that might be listening.
- *
- * This method allows you to use such dictionaries without being restricted
- * to using <code>NSDistributedNotificationCenter</code>. The keys for this dictionary
- * can be found in GrowlDefines.h.
- */
-+ (void) notifyWithDictionary:(NSDictionary *)userInfo;
-
-#pragma mark -
-
-/*! @method registerWithDictionary:
- * @abstract Register your application with Growl without setting a delegate.
- * @discussion When you call this method with a dictionary,
- * GrowlApplicationBridge registers your application using that dictionary.
- * If you pass <code>nil</code>, GrowlApplicationBridge will ask the delegate
- * (if there is one) for a dictionary, and if that doesn't work, it will look
- * in your application's bundle for an auto-discoverable plist.
- * (XXX refer to more information on that)
- *
- * If you pass a dictionary to this method, it must include the
- * <code>GROWL_APP_NAME</code> key, unless a delegate is set.
- *
- * This method is mainly an alternative to the delegate system introduced
- * with Growl 0.6. Without a delegate, you cannot receive callbacks such as
- * <code>-growlIsReady</code> (since they are sent to the delegate). You can,
- * however, set a delegate after registering without one.
- *
- * This method was introduced in Growl.framework 0.7.
- */
-+ (BOOL) registerWithDictionary:(NSDictionary *)regDict;
-
-/*! @method reregisterGrowlNotifications
- * @abstract Reregister the notifications for this application.
- * @discussion This method does not normally need to be called. If your
- * application changes what notifications it is registering with Growl, call
- * this method to have the Growl delegate's
- * <code>-registrationDictionaryForGrowl</code> method called again and the
- * Growl registration information updated.
- *
- * This method is now implemented using <code>-registerWithDictionary:</code>.
- */
-+ (void) reregisterGrowlNotifications;
-
-#pragma mark -
-
-/*! @method setWillRegisterWhenGrowlIsReady:
- * @abstract Tells GrowlApplicationBridge to register with Growl when Growl
- * launches (or not).
- * @discussion When Growl has started listening for notifications, it posts a
- * <code>GROWL_IS_READY</code> notification on the Distributed Notification
- * Center. GrowlApplicationBridge listens for this notification, using it to
- * perform various tasks (such as calling your delegate's
- * <code>-growlIsReady</code> method, if it has one). If this method is
- * called with <code>YES</code>, one of those tasks will be to reregister
- * with Growl (in the manner of <code>-reregisterGrowlNotifications</code>).
- *
- * This attribute is automatically set back to <code>NO</code> (the default)
- * after every <code>GROWL_IS_READY</code> notification.
- * @param flag <code>YES</code> if you want GrowlApplicationBridge to register with
- * Growl when next it is ready; <code>NO</code> if not.
- */
-+ (void) setWillRegisterWhenGrowlIsReady:(BOOL)flag;
-/*! @method willRegisterWhenGrowlIsReady
- * @abstract Reports whether GrowlApplicationBridge will register with Growl
- * when Growl next launches.
- * @result <code>YES</code> if GrowlApplicationBridge will register with Growl
- * when next it posts GROWL_IS_READY; <code>NO</code> if not.
- */
-+ (BOOL) willRegisterWhenGrowlIsReady;
-
-#pragma mark -
-
-/*! @method registrationDictionaryFromDelegate
- * @abstract Asks the delegate for a registration dictionary.
- * @discussion If no delegate is set, or if the delegate's
- * <code>-registrationDictionaryForGrowl</code> method returns
- * <code>nil</code>, this method returns <code>nil</code>.
- *
- * This method does not attempt to clean up the dictionary in any way - for
- * example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
- * will be missing it too. Use <code>+[GrowlApplicationBridge
- * registrationDictionaryByFillingInDictionary:]</code> or
- * <code>+[GrowlApplicationBridge
- * registrationDictionaryByFillingInDictionary:restrictToKeys:]</code> to try
- * to fill in missing keys.
- *
- * This method was introduced in Growl.framework 0.7.
- * @result A registration dictionary.
- */
-+ (NSDictionary *) registrationDictionaryFromDelegate;
-
-/*! @method registrationDictionaryFromBundle:
- * @abstract Looks in a bundle for a registration dictionary.
- * @discussion This method looks in a bundle for an auto-discoverable
- * registration dictionary file using <code>-[NSBundle
- * pathForResource:ofType:]</code>. If it finds one, it loads the file using
- * <code>+[NSDictionary dictionaryWithContentsOfFile:]</code> and returns the
- * result.
- *
- * If you pass <code>nil</code> as the bundle, the main bundle is examined.
- *
- * This method does not attempt to clean up the dictionary in any way - for
- * example, if it is missing the <code>GROWL_APP_NAME</code> key, the result
- * will be missing it too. Use <code>+[GrowlApplicationBridge
- * registrationDictionaryByFillingInDictionary:]</code> or
- * <code>+[GrowlApplicationBridge
- * registrationDictionaryByFillingInDictionary:restrictToKeys:]</code> to try
- * to fill in missing keys.
- *
- * This method was introduced in Growl.framework 0.7.
- * @result A registration dictionary.
- */
-+ (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle;
-
-/*! @method bestRegistrationDictionary
- * @abstract Obtains a registration dictionary, filled out to the best of
- * GrowlApplicationBridge's knowledge.
- * @discussion This method creates a registration dictionary as best
- * GrowlApplicationBridge knows how.
- *
- * First, GrowlApplicationBridge contacts the Growl delegate (if there is
- * one) and gets the registration dictionary from that. If no such dictionary
- * was obtained, GrowlApplicationBridge looks in your application's main
- * bundle for an auto-discoverable registration dictionary file. If that
- * doesn't exist either, this method returns <code>nil</code>.
- *
- * Second, GrowlApplicationBridge calls
- * <code>+registrationDictionaryByFillingInDictionary:</code> with whatever
- * dictionary was obtained. The result of that method is the result of this
- * method.
- *
- * GrowlApplicationBridge uses this method when you call
- * <code>+setGrowlDelegate:</code>, or when you call
- * <code>+registerWithDictionary:</code> with <code>nil</code>.
- *
- * This method was introduced in Growl.framework 0.7.
- * @result A registration dictionary.
- */
-+ (NSDictionary *) bestRegistrationDictionary;
-
-#pragma mark -
-
-/*! @method registrationDictionaryByFillingInDictionary:
- * @abstract Tries to fill in missing keys in a registration dictionary.
- * @discussion This method examines the passed-in dictionary for missing keys,
- * and tries to work out correct values for them. As of 0.7, it uses:
- *
- * Key Value
- * --- -----
- * <code>GROWL_APP_NAME</code> <code>CFBundleExecutableName</code>
- * <code>GROWL_APP_ICON</code> The icon of the application.
- * <code>GROWL_APP_LOCATION</code> The location of the application.
- * <code>GROWL_NOTIFICATIONS_DEFAULT</code> <code>GROWL_NOTIFICATIONS_ALL</code>
- *
- * Keys are only filled in if missing; if a key is present in the dictionary,
- * its value will not be changed.
- *
- * This method was introduced in Growl.framework 0.7.
- * @param regDict The dictionary to fill in.
- * @result The dictionary with the keys filled in. This is an autoreleased
- * copy of <code>regDict</code>.
- */
-+ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict;
-/*! @method registrationDictionaryByFillingInDictionary:restrictToKeys:
- * @abstract Tries to fill in missing keys in a registration dictionary.
- * @discussion This method examines the passed-in dictionary for missing keys,
- * and tries to work out correct values for them. As of 0.7, it uses:
- *
- * Key Value
- * --- -----
- * <code>GROWL_APP_NAME</code> <code>CFBundleExecutableName</code>
- * <code>GROWL_APP_ICON</code> The icon of the application.
- * <code>GROWL_APP_LOCATION</code> The location of the application.
- * <code>GROWL_NOTIFICATIONS_DEFAULT</code> <code>GROWL_NOTIFICATIONS_ALL</code>
- *
- * Only those keys that are listed in <code>keys</code> will be filled in.
- * Other missing keys are ignored. Also, keys are only filled in if missing;
- * if a key is present in the dictionary, its value will not be changed.
- *
- * This method was introduced in Growl.framework 0.7.
- * @param regDict The dictionary to fill in.
- * @param keys The keys to fill in. If <code>nil</code>, any missing keys are filled in.
- * @result The dictionary with the keys filled in. This is an autoreleased
- * copy of <code>regDict</code>.
- */
-+ (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys;
-
-@end
-
-//------------------------------------------------------------------------------
-#pragma mark -
-
-/*!
- * @protocol GrowlApplicationBridgeDelegate
- * @abstract Required protocol for the Growl delegate.
- * @discussion The methods in this protocol are required and are called
- * automatically as needed by GrowlApplicationBridge. See
- * <code>+[GrowlApplicationBridge setGrowlDelegate:]</code>.
- * See also <code>GrowlApplicationBridgeDelegate_InformalProtocol</code>.
- */
-
-@protocol GrowlApplicationBridgeDelegate
-
-// -registrationDictionaryForGrowl has moved to the informal protocol as of 0.7.
-
-@end
-
-//------------------------------------------------------------------------------
-#pragma mark -
-
-/*!
- * @category NSObject(GrowlApplicationBridgeDelegate_InformalProtocol)
- * @abstract Methods which may be optionally implemented by the GrowlDelegate.
- * @discussion The methods in this informal protocol will only be called if implemented by the delegate.
- */
-@interface NSObject (GrowlApplicationBridgeDelegate_InformalProtocol)
-
-/*!
- * @method registrationDictionaryForGrowl
- * @abstract Return the dictionary used to register this application with Growl.
- * @discussion The returned dictionary gives Growl the complete list of
- * notifications this application will ever send, and it also specifies which
- * notifications should be enabled by default. Each is specified by an array
- * of <code>NSString</code> objects.
- *
- * For most applications, these two arrays can be the same (if all sent
- * notifications should be displayed by default).
- *
- * The <code>NSString</code> objects of these arrays will correspond to the
- * <code>notificationName:</code> parameter passed in
- * <code>+[GrowlApplicationBridge
- * notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]</code> calls.
- *
- * The dictionary should have 2 key object pairs:
- * key: GROWL_NOTIFICATIONS_ALL object: <code>NSArray</code> of <code>NSString</code> objects
- * key: GROWL_NOTIFICATIONS_DEFAULT object: <code>NSArray</code> of <code>NSString</code> objects
- *
- * You do not need to implement this method if you have an auto-discoverable
- * plist file in your app bundle. (XXX refer to more information on that)
- *
- * @result The <code>NSDictionary</code> to use for registration.
- */
-- (NSDictionary *) registrationDictionaryForGrowl;
-
-/*!
- * @method applicationNameForGrowl
- * @abstract Return the name of this application which will be used for Growl bookkeeping.
- * @discussion This name is used both internally and in the Growl preferences.
- *
- * This should remain stable between different versions and incarnations of
- * your application.
- * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and
- * "SurfWriter Lite" are not.
- *
- * You do not need to implement this method if you are providing the
- * application name elsewhere, meaning in an auto-discoverable plist file in
- * your app bundle (XXX refer to more information on that) or in the result
- * of -registrationDictionaryForGrowl.
- *
- * @result The name of the application using Growl.
- */
-- (NSString *) applicationNameForGrowl;
-
-/*!
- * @method applicationIconDataForGrowl
- * @abstract Return the <code>NSData</code> to treat as the application icon.
- * @discussion The delegate may optionally return an <code>NSData</code>
- * object to use as the application icon; if this is not implemented, the
- * application's own icon is used. This is not generally needed.
- * @result The <code>NSData</code> to treat as the application icon.
- */
-- (NSData *) applicationIconDataForGrowl;
-
-/*!
- * @method growlIsReady
- * @abstract Informs the delegate that Growl has launched.
- * @discussion Informs the delegate that Growl (specifically, the
- * GrowlHelperApp) was launched successfully or was already running. The
- * application can take actions with the knowledge that Growl is installed and
- * functional.
- */
-- (void) growlIsReady;
-
-/*!
- * @method growlNotificationWasClicked:
- * @abstract Informs the delegate that a Growl notification was clicked.
- * @discussion Informs the delegate that a Growl notification was clicked. It
- * is only sent for notifications sent with a non-<code>nil</code>
- * clickContext, so if you want to receive a message when a notification is
- * clicked, clickContext must not be <code>nil</code> when calling
- * <code>+[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]</code>.
- * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:].
- */
-- (void) growlNotificationWasClicked:(id)clickContext;
-
-/*!
- * @method growlNotificationTimedOut:
- * @abstract Informs the delegate that a Growl notification timed out.
- * @discussion Informs the delegate that a Growl notification timed out. It
- * is only sent for notifications sent with a non-<code>nil</code>
- * clickContext, so if you want to receive a message when a notification is
- * clicked, clickContext must not be <code>nil</code> when calling
- * <code>+[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]</code>.
- * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:].
- */
-- (void) growlNotificationTimedOut:(id)clickContext;
-
-@end
-
-#pragma mark -
-/*!
- * @category NSObject(GrowlApplicationBridgeDelegate_Installation_InformalProtocol)
- * @abstract Methods which may be optionally implemented by the Growl delegate when used with Growl-WithInstaller.framework.
- * @discussion The methods in this informal protocol will only be called if
- * implemented by the delegate. They allow greater control of the information
- * presented to the user when installing or upgrading Growl from within your
- * application when using Growl-WithInstaller.framework.
- */
-@interface NSObject (GrowlApplicationBridgeDelegate_Installation_InformalProtocol)
-
-/*!
- * @method growlInstallationWindowTitle
- * @abstract Return the title of the installation window.
- * @discussion If not implemented, Growl will use a default, localized title.
- * @result An NSString object to use as the title.
- */
-- (NSString *)growlInstallationWindowTitle;
-
-/*!
- * @method growlUpdateWindowTitle
- * @abstract Return the title of the upgrade window.
- * @discussion If not implemented, Growl will use a default, localized title.
- * @result An NSString object to use as the title.
- */
-- (NSString *)growlUpdateWindowTitle;
-
-/*!
- * @method growlInstallationInformation
- * @abstract Return the information to display when installing.
- * @discussion This information may be as long or short as desired (the window
- * will be sized to fit it). It will be displayed to the user as an
- * explanation of what Growl is and what it can do in your application. It
- * should probably note that no download is required to install.
- *
- * If this is not implemented, Growl will use a default, localized explanation.
- * @result An NSAttributedString object to display.
- */
-- (NSAttributedString *)growlInstallationInformation;
-
-/*!
- * @method growlUpdateInformation
- * @abstract Return the information to display when upgrading.
- * @discussion This information may be as long or short as desired (the window
- * will be sized to fit it). It will be displayed to the user as an
- * explanation that an updated version of Growl is included in your
- * application and no download is required.
- *
- * If this is not implemented, Growl will use a default, localized explanation.
- * @result An NSAttributedString object to display.
- */
-- (NSAttributedString *)growlUpdateInformation;
-
-@end
-
-//private
-@interface GrowlApplicationBridge (GrowlInstallationPrompt_private)
-+ (void) _userChoseNotToInstallGrowl;
-@end
-
-#endif /* __GrowlApplicationBridge_h__ */
diff --git a/src/uimacnew/Growl.framework/Versions/A/Headers/GrowlDefines.h b/src/uimacnew/Growl.framework/Versions/A/Headers/GrowlDefines.h
deleted file mode 100644
index 6ff6ee3..0000000
--- a/src/uimacnew/Growl.framework/Versions/A/Headers/GrowlDefines.h
+++ /dev/null
@@ -1,307 +0,0 @@
-//
-// GrowlDefines.h
-//
-
-#ifndef _GROWLDEFINES_H
-#define _GROWLDEFINES_H
-
-#ifdef __OBJC__
-#define XSTR(x) (@x)
-#define STRING NSString *
-#else
-#define XSTR CFSTR
-#define STRING CFStringRef
-#endif
-
-/*! @header GrowlDefines.h
- * @abstract Defines all the notification keys.
- * @discussion Defines all the keys used for registration with Growl and for
- * Growl notifications.
- *
- * Most applications should use the functions or methods of Growl.framework
- * instead of posting notifications such as those described here.
- * @updated 2004-01-25
- */
-
-// UserInfo Keys for Registration
-#pragma mark UserInfo Keys for Registration
-
-/*! @group Registration userInfo keys */
-/* @abstract Keys for the userInfo dictionary of a GROWL_APP_REGISTRATION distributed notification.
- * @discussion The values of these keys describe the application and the
- * notifications it may post.
- *
- * Your application must register with Growl before it can post Growl
- * notifications (and have them not be ignored). However, as of Growl 0.6,
- * posting GROWL_APP_REGISTRATION notifications directly is no longer the
- * preferred way to register your application. Your application should instead
- * use Growl.framework's delegate system.
- * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for
- * more information.
- */
-
-/*! @defined GROWL_APP_NAME
- * @abstract The name of your application.
- * @discussion The name of your application. This should remain stable between
- * different versions and incarnations of your application.
- * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and
- * "SurfWriter Lite" are not.
- */
-#define GROWL_APP_NAME XSTR("ApplicationName")
-/*! @defined GROWL_APP_ICON
- * @abstract The image data for your application's icon.
- * @discussion Image data representing your application's icon. This may be
- * superimposed on a notification icon as a badge, used as the notification
- * icon when a notification-specific icon is not supplied, or ignored
- * altogether, depending on the display. Must be in a format supported by
- * NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF.
- *
- * Optional. Not supported by all display plugins.
- */
-#define GROWL_APP_ICON XSTR("ApplicationIcon")
-/*! @defined GROWL_NOTIFICATIONS_DEFAULT
- * @abstract The array of notifications to turn on by default.
- * @discussion These are the names of the notifications that should be enabled
- * by default when your application registers for the first time. If your
- * application reregisters, Growl will look here for any new notification
- * names found in GROWL_NOTIFICATIONS_ALL, but ignore any others.
- */
-#define GROWL_NOTIFICATIONS_DEFAULT XSTR("DefaultNotifications")
-/*! @defined GROWL_NOTIFICATIONS_ALL
- * @abstract The array of all notifications your application can send.
- * @discussion These are the names of all of the notifications that your
- * application may post. See GROWL_NOTIFICATION_NAME for a discussion of good
- * notification names.
- */
-#define GROWL_NOTIFICATIONS_ALL XSTR("AllNotifications")
-/*! @defined GROWL_TICKET_VERSION
- * @abstract The version of your registration ticket.
- * @discussion Include this key in a ticket plist file that you put in your
- * application bundle for auto-discovery. The current ticket version is 1.
- */
-#define GROWL_TICKET_VERSION XSTR("TicketVersion")
-// UserInfo Keys for Notifications
-#pragma mark UserInfo Keys for Notifications
-
-/*! @group Notification userInfo keys */
-/* @abstract Keys for the userInfo dictionary of a GROWL_NOTIFICATION distributed notification.
- * @discussion The values of these keys describe the content of a Growl
- * notification.
- *
- * Not all of these keys are supported by all displays. Only the name, title,
- * and description of a notification are universal. Most of the built-in
- * displays do support all of these keys, and most other visual displays
- * probably will also. But, as of 0.6, the Log, MailMe, and Speech displays
- * support only textual data.
- */
-
-/*! @defined GROWL_NOTIFICATION_NAME
- * @abstract The name of the notification.
- * @discussion The name of the notification. This should be human-readable, as
- * it's shown in the prefpane, in the list of notifications your application
- * supports. */
-#define GROWL_NOTIFICATION_NAME XSTR("NotificationName")
-/*! @defined GROWL_NOTIFICATION_TITLE
- * @abstract The title to display in the notification.
- * @discussion The title of the notification. Should be very brief.
- * The title usually says what happened, e.g. "Download complete".
- */
-#define GROWL_NOTIFICATION_TITLE XSTR("NotificationTitle")
-/*! @defined GROWL_NOTIFICATION_DESCRIPTION
- * @abstract The description to display in the notification.
- * @discussion The description should be longer and more verbose than the title.
- * The description usually tells the subject of the action,
- * e.g. "Growl-0.6.dmg downloaded in 5.02 minutes".
- */
-#define GROWL_NOTIFICATION_DESCRIPTION XSTR("NotificationDescription")
-/*! @defined GROWL_NOTIFICATION_ICON
- * @discussion Image data for the notification icon. Must be in a format
- * supported by NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF.
- *
- * Optional. Not supported by all display plugins.
- */
-#define GROWL_NOTIFICATION_ICON XSTR("NotificationIcon")
-/*! @defined GROWL_NOTIFICATION_APP_ICON
- * @discussion Image data for the application icon, in case GROWL_APP_ICON does
- * not apply for some reason. Must be in a format supported by NSImage, such
- * as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF.
- *
- * Optional. Not supported by all display plugins.
- */
-#define GROWL_NOTIFICATION_APP_ICON XSTR("NotificationAppIcon")
-/*! @defined GROWL_NOTIFICATION_PRIORITY
- * @discussion The priority of the notification as an integer number from
- * -2 to +2 (+2 being highest).
- *
- * Optional. Not supported by all display plugins.
- */
-#define GROWL_NOTIFICATION_PRIORITY XSTR("NotificationPriority")
-/*! @defined GROWL_NOTIFICATION_STICKY
- * @discussion A Boolean number controlling whether the notification is sticky.
- *
- * Optional. Not supported by all display plugins.
- */
-#define GROWL_NOTIFICATION_STICKY XSTR("NotificationSticky")
-/*! @defined GROWL_NOTIFICATION_CLICK_CONTEXT
- * @abstract Identifies which notification was clicked.
- * @discussion An identifier for the notification for clicking purposes.
- *
- * This will be passed back to the application when the notification is
- * clicked. It must be plist-encodable (a data, dictionary, array, number, or
- * string object), and it should be unique for each notification you post.
- * A good click context would be a UUID string returned by NSProcessInfo or
- * CFUUID.
- *
- * Optional. Not supported by all display plugins.
- */
-#define GROWL_NOTIFICATION_CLICK_CONTEXT XSTR("NotificationClickContext")
-
-/*! @defined GROWL_DISPLAY_PLUGIN
- * @discussion The name of a display plugin which should be used for this notification.
- * Optional. If this key is not set or the specified display plugin does not
- * exist, the display plugin stored in the application ticket is used. This key
- * allows applications to use different default display plugins for their
- * notifications. The user can still override those settings in the preference
- * pane.
- */
-#define GROWL_DISPLAY_PLUGIN XSTR("NotificationDisplayPlugin")
-
-/*! @defined GROWL_NOTIFICATION_IDENTIFIER
- * @abstract An identifier for the notification for coalescing purposes.
- * Notifications with the same identifier fall into the same class; only
- * the last notification of a class is displayed on the screen. If a
- * notification of the same class is currently being displayed, it is
- * replaced by this notification.
- *
- * Optional. Not supported by all display plugins.
- */
-#define GROWL_NOTIFICATION_IDENTIFIER XSTR("GrowlNotificationIdentifier")
-
-/*! @defined GROWL_APP_PID
- * @abstract The process identifier of the process which sends this
- * notification. If this field is set, the application will only receive
- * clicked and timed out notifications which originate from this process.
- *
- * Optional.
- */
-#define GROWL_APP_PID XSTR("ApplicationPID")
-
-// Notifications
-#pragma mark Notifications
-
-/*! @group Notification names */
-/* @abstract Names of distributed notifications used by Growl.
- * @discussion These are notifications used by applications (directly or
- * indirectly) to interact with Growl, and by Growl for interaction between
- * its components.
- *
- * Most of these should no longer be used in Growl 0.6 and later, in favor of
- * Growl.framework's GrowlApplicationBridge APIs.
- */
-
-/*! @defined GROWL_APP_REGISTRATION
- * @abstract The distributed notification for registering your application.
- * @discussion This is the name of the distributed notification that can be
- * used to register applications with Growl.
- *
- * The userInfo dictionary for this notification can contain these keys:
- * <ul>
- * <li>GROWL_APP_NAME</li>
- * <li>GROWL_APP_ICON</li>
- * <li>GROWL_NOTIFICATIONS_ALL</li>
- * <li>GROWL_NOTIFICATIONS_DEFAULT</li>
- * </ul>
- *
- * No longer recommended as of Growl 0.6. An alternate method of registering
- * is to use Growl.framework's delegate system.
- * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for
- * more information.
- */
-#define GROWL_APP_REGISTRATION XSTR("GrowlApplicationRegistrationNotification")
-/*! @defined GROWL_APP_REGISTRATION_CONF
- * @abstract The distributed notification for confirming registration.
- * @discussion The name of the distributed notification sent to confirm the
- * registration. Used by the Growl preference pane. Your application probably
- * does not need to use this notification.
- */
-#define GROWL_APP_REGISTRATION_CONF XSTR("GrowlApplicationRegistrationConfirmationNotification")
-/*! @defined GROWL_NOTIFICATION
- * @abstract The distributed notification for Growl notifications.
- * @discussion This is what it all comes down to. This is the name of the
- * distributed notification that your application posts to actually send a
- * Growl notification.
- *
- * The userInfo dictionary for this notification can contain these keys:
- * <ul>
- * <li>GROWL_NOTIFICATION_NAME (required)</li>
- * <li>GROWL_NOTIFICATION_TITLE (required)</li>
- * <li>GROWL_NOTIFICATION_DESCRIPTION (required)</li>
- * <li>GROWL_NOTIFICATION_ICON</li>
- * <li>GROWL_NOTIFICATION_APP_ICON</li>
- * <li>GROWL_NOTIFICATION_PRIORITY</li>
- * <li>GROWL_NOTIFICATION_STICKY</li>
- * <li>GROWL_NOTIFICATION_CLICK_CONTEXT</li>
- * <li>GROWL_APP_NAME (required)</li>
- * </ul>
- *
- * No longer recommended as of Growl 0.6. Three alternate methods of posting
- * notifications are +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:],
- * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext, and
- * Growl_PostNotification.
- */
-#define GROWL_NOTIFICATION XSTR("GrowlNotification")
-/*! @defined GROWL_SHUTDOWN
-* @abstract The distributed notification name that tells Growl to shutdown.
-* @discussion The Growl preference pane posts this notification when the
-* "Stop Growl" button is clicked.
-*/
-#define GROWL_SHUTDOWN XSTR("GrowlShutdown")
-/*! @defined GROWL_PING
- * @abstract A distributed notification to check whether Growl is running.
- * @discussion This is used by the Growl preference pane. If it receives a
- * GROWL_PONG, the preference pane takes this to mean that Growl is running.
- */
-#define GROWL_PING XSTR("Honey, Mind Taking Out The Trash")
-/*! @defined GROWL_PONG
- * @abstract The distributed notification sent in reply to GROWL_PING.
- * @discussion GrowlHelperApp posts this in reply to GROWL_PING.
- */
-#define GROWL_PONG XSTR("What Do You Want From Me, Woman")
-/*! @defined GROWL_IS_READY
- * @abstract The distributed notification sent when Growl starts up.
- * @discussion GrowlHelperApp posts this when it has begin listening on all of
- * its sources for new notifications. GrowlApplicationBridge (in
- * Growl.framework), upon receiving this notification, reregisters using the
- * registration dictionary supplied by its delegate.
- */
-#define GROWL_IS_READY XSTR("Lend Me Some Sugar; I Am Your Neighbor!")
-/*! @defined GROWL_NOTIFICATION_CLICKED
- * @abstract The distributed notification sent when a supported notification is clicked.
- * @discussion When a Growl notification with a click context is clicked on by
- * the user, Growl posts this distributed notification.
- * The GrowlApplicationBridge responds to this notification by calling a
- * callback in its delegate.
- */
-#define GROWL_NOTIFICATION_CLICKED XSTR("GrowlClicked!")
-#define GROWL_NOTIFICATION_TIMED_OUT XSTR("GrowlTimedOut!")
-
-/*! @group Other symbols */
-/* Symbols which don't fit into any of the other categories. */
-
-/*! @defined GROWL_KEY_CLICKED_CONTEXT
- * @abstract Used internally as the key for the clickedContext passed over DNC.
- * @discussion This key is used in GROWL_NOTIFICATION_CLICKED, and contains the
- * click context that was supplied in the original notification.
- */
-#define GROWL_KEY_CLICKED_CONTEXT XSTR("ClickedContext")
-/*! @defined GROWL_REG_DICT_EXTENSION
- * @abstract The filename extension for registration dictionaries.
- * @discussion The GrowlApplicationBridge in Growl.framework registers with
- * Growl by creating a file with the extension of .(GROWL_REG_DICT_EXTENSION)
- * and opening it in the GrowlHelperApp. This happens whether or not Growl is
- * running; if it was stopped, it quits immediately without listening for
- * notifications.
- */
-#define GROWL_REG_DICT_EXTENSION XSTR("growlRegDict")
-
-#endif //ndef _GROWLDEFINES_H
diff --git a/src/uimacnew/Growl.framework/Versions/A/Resources/Info.plist b/src/uimacnew/Growl.framework/Versions/A/Resources/Info.plist
deleted file mode 100644
index 2442bea..0000000
--- a/src/uimacnew/Growl.framework/Versions/A/Resources/Info.plist
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>Growl</string>
- <key>CFBundleIdentifier</key>
- <string>com.growl.growlframework</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>0.7.3</string>
- <key>CFBundleSignature</key>
- <string>GRRR</string>
- <key>CFBundleVersion</key>
- <string>0.7.3</string>
- <key>NSPrincipalClass</key>
- <string>GrowlApplicationBridge</string>
-</dict>
-</plist>
diff --git a/src/uimacnew/Growl.framework/Versions/Current b/src/uimacnew/Growl.framework/Versions/Current
deleted file mode 120000
index 8c7e5a6..0000000
--- a/src/uimacnew/Growl.framework/Versions/Current
+++ /dev/null
@@ -1 +0,0 @@
-A \ No newline at end of file
diff --git a/src/uimacnew/ImageAndTextCell.h b/src/uimacnew/ImageAndTextCell.h
deleted file mode 100644
index 767e6e5..0000000
--- a/src/uimacnew/ImageAndTextCell.h
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-// ImageAndTextCell.h
-//
-// Copyright (c) 2001-2002, Apple. All rights reserved.
-//
-
-#import <Cocoa/Cocoa.h>
-
-@interface ImageAndTextCell : NSTextFieldCell {
-@private
- NSImage *image;
-}
-
-- (void)setImage:(NSImage *)anImage;
-- (NSImage *)image;
-
-- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView;
-- (NSSize)cellSize;
-
-@end
diff --git a/src/uimacnew/ImageAndTextCell.m b/src/uimacnew/ImageAndTextCell.m
deleted file mode 100644
index 0b88b00..0000000
--- a/src/uimacnew/ImageAndTextCell.m
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- ImageAndTextCell.m
- Copyright (c) 2001-2004, Apple Computer, Inc., all rights reserved.
- Author: Chuck Pisula
-
- Milestones:
- Initially created 3/1/01
-
- Subclass of NSTextFieldCell which can display text and an image simultaneously.
-*/
-
-/*
- IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
- consideration of your agreement to the following terms, and your use, installation,
- modification or redistribution of this Apple software constitutes acceptance of these
- terms. If you do not agree with these terms, please do not use, install, modify or
- redistribute this Apple software.
-
- In consideration of your agreement to abide by the following terms, and subject to these
- terms, Apple grants you a personal, non-exclusive license, under AppleÕs copyrights in
- this original Apple software (the "Apple Software"), to use, reproduce, modify and
- redistribute the Apple Software, with or without modifications, in source and/or binary
- forms; provided that if you redistribute the Apple Software in its entirety and without
- modifications, you must retain this notice and the following text and disclaimers in all
- such redistributions of the Apple Software. Neither the name, trademarks, service marks
- or logos of Apple Computer, Inc. may be used to endorse or promote products derived from
- the Apple Software without specific prior written permission from Apple. Except as expressly
- stated in this notice, no other rights or licenses, express or implied, are granted by Apple
- herein, including but not limited to any patent rights that may be infringed by your
- derivative works or by other works in which the Apple Software may be incorporated.
-
- The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO WARRANTIES,
- EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
- USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
- IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
- REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
- WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
- OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#import "ImageAndTextCell.h"
-
-@implementation ImageAndTextCell
-
-- (void)dealloc {
- [image release];
- image = nil;
- [super dealloc];
-}
-
-- copyWithZone:(NSZone *)zone {
- ImageAndTextCell *cell = (ImageAndTextCell *)[super copyWithZone:zone];
- cell->image = [image retain];
- return cell;
-}
-
-- (void)setImage:(NSImage *)anImage {
- if (anImage != image) {
- [image release];
- image = [anImage retain];
- }
-}
-
-- (NSImage *)image {
- return image;
-}
-
-- (NSRect)imageFrameForCellFrame:(NSRect)cellFrame {
- if (image != nil) {
- NSRect imageFrame;
- imageFrame.size = [image size];
- imageFrame.origin = cellFrame.origin;
- imageFrame.origin.x += 3;
- imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
- return imageFrame;
- }
- else
- return NSZeroRect;
-}
-
-- (void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject event:(NSEvent *)theEvent {
- NSRect textFrame, imageFrame;
- NSDivideRect (aRect, &imageFrame, &textFrame, 3 + [image size].width, NSMinXEdge);
- [super editWithFrame: textFrame inView: controlView editor:textObj delegate:anObject event: theEvent];
-}
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
-typedef int NSInteger;
-#endif
-- (void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject start:(NSInteger)selStart length:(NSInteger)selLength {
- NSRect textFrame, imageFrame;
- NSDivideRect (aRect, &imageFrame, &textFrame, 3 + [image size].width, NSMinXEdge);
- [super selectWithFrame: textFrame inView: controlView editor:textObj delegate:anObject start:selStart length:selLength];
-}
-
-- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
- if (image != nil) {
- NSSize imageSize;
- NSRect imageFrame;
-
- imageSize = [image size];
- NSDivideRect(cellFrame, &imageFrame, &cellFrame, 3 + imageSize.width, NSMinXEdge);
- if ([self drawsBackground]) {
- [[self backgroundColor] set];
- NSRectFill(imageFrame);
- }
- imageFrame.origin.x += 3;
- imageFrame.size = imageSize;
-
- if ([controlView isFlipped])
- imageFrame.origin.y += ceil((cellFrame.size.height + imageFrame.size.height) / 2);
- else
- imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2);
-
- [image compositeToPoint:imageFrame.origin operation:NSCompositeSourceOver];
- }
- [super drawWithFrame:cellFrame inView:controlView];
-}
-
-- (NSSize)cellSize {
- NSSize cellSize = [super cellSize];
- cellSize.width += (image ? [image size].width : 0) + 3;
- return cellSize;
-}
-
-@end
diff --git a/src/uimacnew/Info.plist b/src/uimacnew/Info.plist
deleted file mode 100644
index 0876dd0..0000000
--- a/src/uimacnew/Info.plist
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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>CFBundleName</key>
- <string>Unison</string>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>Unison</string>
- <key>CFBundleIconFile</key>
- <string>Unison.icns</string>
- <key>CFBundleIdentifier</key>
- <string>edu.upenn.cis.Unison</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleShortVersionString</key>
- <string>$(MARKETING_VERSION)</string>
- <key>CFBundleGetInfoString</key>
- <string>${MARKETING_VERSION}, ©1999-2007, licensed under GNU GPL.</string>
- <key>NSHumanReadableCopyright</key>
- <string>©1999-2010, licensed under GNU GPL v3.</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-</dict>
-</plist>
diff --git a/src/uimacnew/Info.plist.template b/src/uimacnew/Info.plist.template
deleted file mode 100644
index 2de3eff..0000000
--- a/src/uimacnew/Info.plist.template
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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>CFBundleName</key>
- <string>Unison</string>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleExecutable</key>
- <string>Unison</string>
- <key>CFBundleIconFile</key>
- <string>Unison.icns</string>
- <key>CFBundleIdentifier</key>
- <string>edu.upenn.cis.Unison</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>@@VERSION@@</string>
- <key>CFBundleShortVersionString</key>
- <string>@@VERSION@@</string>
- <key>CFBundleGetInfoString</key>
- <string>@@VERSION@@. ©1999-2014, licensed under GNU GPL.</string>
- <key>NSHumanReadableCopyright</key>
- <string>©1999-2014, licensed under GNU GPL.</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-</dict>
-</plist>
diff --git a/src/uimacnew/MyController.h b/src/uimacnew/MyController.h
deleted file mode 100644
index 0e21fe8..0000000
--- a/src/uimacnew/MyController.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/* MyController */
-/* Copyright (c) 2003, see file COPYING for details. */
-
-#import <Cocoa/Cocoa.h>
-
-@class ProfileController, PreferencesController, NotificationController,
- ReconItem, ParentReconItem, ReconTableView, UnisonToolbar, OCamlValue;
-
-@interface MyController : NSObject
-{
- IBOutlet NSWindow *mainWindow;
- UnisonToolbar *toolbar;
-
- IBOutlet NSWindow *cltoolWindow;
- IBOutlet NSButton *cltoolPref;
-
- IBOutlet ProfileController *profileController;
- IBOutlet NSView *chooseProfileView;
- NSString *myProfile;
-
- IBOutlet PreferencesController *preferencesController;
- IBOutlet NSView *preferencesView;
-
- IBOutlet NSView *updatesView;
- IBOutlet NSView *ConnectingView;
-
- NSView *blankView;
-
- IBOutlet ReconTableView *tableView;
- IBOutlet NSTextField *updatesText;
- IBOutlet NSTextView *detailsTextView;
- IBOutlet NSTextField *statusText;
-
- IBOutlet NSWindow *passwordWindow;
- IBOutlet NSTextField *passwordPrompt;
- IBOutlet NSTextField *passwordText;
- IBOutlet NSButton *passwordCancelButton;
- BOOL waitingForPassword;
-
- IBOutlet NSWindow *aboutWindow;
- IBOutlet NSTextField *versionText;
-
- IBOutlet NSProgressIndicator *progressBar;
-
- IBOutlet NotificationController *notificationController;
-
- BOOL syncable;
- BOOL duringSync;
- BOOL afterSync;
-
- NSMutableArray *reconItems;
- ParentReconItem *rootItem;
- OCamlValue *preconn;
-
- BOOL doneFirstDiff;
- IBOutlet NSWindow *diffWindow;
- IBOutlet NSTextView *diffView;
- IBOutlet NSSegmentedControl *tableModeSelector;
-}
-
-- (id)init;
-- (void)awakeFromNib;
-
-- (void)chooseProfiles;
-- (IBAction)createButton:(id)sender;
-- (IBAction)saveProfileButton:(id)sender;
-- (IBAction)cancelProfileButton:(id)sender;
-- (NSString *)profile;
-- (void)profileSelected:(NSString *)aProfile;
-
-- (IBAction)restartButton:(id)sender;
-- (IBAction)rescan:(id)sender;
-
-- (IBAction)openButton:(id)sender;
-- (void)connect:(NSString *)profileName;
-- (void)raisePasswordWindow:(NSString *)prompt;
-- (void)controlTextDidEndEditing:(NSNotification *)notification;
-- (IBAction)endPasswordWindow:(id)sender;
-- (void)afterOpen;
-
-- (IBAction)syncButton:(id)sender;
-- (IBAction)tableModeChanged:(id)sender;
-- (void)initTableMode;
-
-- (NSMutableArray *)reconItems;
-- (void)updateForChangedItems;
-- (void)updateReconItems:(OCamlValue *)items;
-- (id)updateForIgnore:(id)i;
-
-- (void)statusTextSet:(NSString *)s;
-- (void)diffViewTextSet:(NSString *)title bodyText:(NSString *)body;
-- (void)displayDetails:(ReconItem *)item;
-- (void)clearDetails;
-
-- (IBAction)raiseCltoolWindow:(id)sender;
-- (IBAction)cltoolYesButton:(id)sender;
-- (IBAction)cltoolNoButton:(id)sender;
-
-- (IBAction)raiseAboutWindow:(id)sender;
-- (IBAction)raiseWindow:(NSWindow *)theWindow;
-- (IBAction)onlineHelp:(id)sender;
-- (IBAction)installCommandLineTool:(id)sender;
-
-- (BOOL)validateItem:(IBAction *) action;
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
-- (BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem;
-
-- (void)resizeWindowToSize:(NSSize)newSize;
-- (float)toolbarHeightForWindow:(NSWindow *)window;
-
-@end
diff --git a/src/uimacnew/MyController.m b/src/uimacnew/MyController.m
deleted file mode 100644
index a966c93..0000000
--- a/src/uimacnew/MyController.m
+++ /dev/null
@@ -1,1045 +0,0 @@
-/* Copyright (c) 2003, see file COPYING for details. */
-
-#import "MyController.h"
-#import "ProfileController.h"
-#import "PreferencesController.h"
-#import "NotificationController.h"
-#import "ReconItem.h"
-#import "ReconTableView.h"
-#import "UnisonToolbar.h"
-#import "ImageAndTextCell.h"
-#import "ProgressCell.h"
-#import "Bridge.h"
-
-/* The following two define are a workaround for an incompatibility between
- Ocaml 3.11.2 (and older) and the Mac OS X header files */
-#define uint64 uint64_caml
-#define int64 int64_caml
-
-#define CAML_NAME_SPACE
-#include <caml/callback.h>
-#include <caml/alloc.h>
-#include <caml/mlvalues.h>
-#include <caml/memory.h>
-
-@interface NSString (_UnisonUtil)
-- (NSString *)trim;
-@end
-
-@implementation MyController
-
-static MyController *me; // needed by reloadTable and displayStatus, below
-
-static int unset = 0;
-static int dontAsk = 1;
-static int doAsk = 2;
-
-// BCP (11/09): Added per Onne Gorter:
-// if user closes main window, terminate app, instead of keeping an empty app around with no window
-- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
- return YES;
-}
-
-- (id)init
-{
- if (([super init])) {
-
- /* Initialize locals */
- me = self;
- doneFirstDiff = NO;
-
- /* By default, invite user to install cltool */
- int pref = [[NSUserDefaults standardUserDefaults]
- integerForKey:@"CheckCltool"];
- if (pref==unset)
- [[NSUserDefaults standardUserDefaults]
- setInteger:doAsk forKey:@"CheckCltool"];
- }
-
- return self;
-}
-
-- (void)awakeFromNib
-{
- // Window positioning
- NSRect screenFrame = [[mainWindow screen] visibleFrame];
- [mainWindow cascadeTopLeftFromPoint:
- NSMakePoint(screenFrame.origin.x,
- screenFrame.origin.y+screenFrame.size.height)];
-
- blankView = [[NSView alloc] init];
-
- /* Double clicking in the profile list will open the profile */
- [[profileController tableView] setTarget:self];
- [[profileController tableView] setDoubleAction:@selector(openButton:)];
-
- [tableView setAutoresizesOutlineColumn:NO];
-
- // use combo-cell for path
- [[tableView tableColumnWithIdentifier:@"path"] setDataCell:[[[ImageAndTextCell alloc] init] autorelease]];
-
- // Custom progress cell
- ProgressCell *progressCell = [[[ProgressCell alloc] init] autorelease];
- [[tableView tableColumnWithIdentifier:@"percentTransferred"] setDataCell:progressCell];
-
- /* Set up the version string in the about box. We use a custom
- about box just because PRCS doesn't seem capable of getting the
- version into the InfoPlist.strings file; otherwise we'd use the
- standard about box. */
- [versionText setStringValue:ocamlCall("S", "unisonGetVersion")];
-
- /* Command-line processing */
- OCamlValue *clprofile = (id)ocamlCall("@", "unisonInit0");
-
- /* Add toolbar */
- toolbar = [[[UnisonToolbar alloc]
- initWithIdentifier: @"unisonToolbar" :self :tableView] autorelease];
- [mainWindow setToolbar: toolbar];
- [toolbar takeTableModeView:tableModeSelector];
- [self initTableMode];
-
-
- /* Set up the first window the user will see */
- if (clprofile) {
- /* A profile name was given on the command line */
- NSString *profileName = [clprofile getField:0 withType:'S'];
- [self profileSelected:profileName];
-
- /* If invoked from terminal we need to bring the app to the front */
- [NSApp activateIgnoringOtherApps:YES];
-
- /* Start the connection */
- [self connect:profileName];
- }
- else {
- /* If invoked from terminal we need to bring the app to the front */
- [NSApp activateIgnoringOtherApps:YES];
- /* Bring up the dialog to choose a profile */
- [self chooseProfiles];
- }
-
- [mainWindow display];
- [mainWindow makeKeyAndOrderFront:nil];
-
- /* unless user has clicked Don't ask me again, ask about cltool */
- if ( ([[NSUserDefaults standardUserDefaults]
- integerForKey:@"CheckCltool"]==doAsk) &&
- (![[NSFileManager defaultManager]
- fileExistsAtPath:@"/usr/bin/unison"]) )
- [self raiseCltoolWindow:nil];
-}
-
-- (void)chooseProfiles
-{
- [mainWindow setContentView:blankView];
- [self resizeWindowToSize:[chooseProfileView frame].size];
- [mainWindow setContentMinSize:
- NSMakeSize(NSWidth([[mainWindow contentView] frame]),150)];
- [mainWindow setContentMaxSize:NSMakeSize(FLT_MAX, FLT_MAX)];
- [mainWindow setContentView:chooseProfileView];
- [toolbar setView:@"chooseProfileView"];
- [mainWindow setTitle:@"Unison"];
-
- // profiles get keyboard input
- [mainWindow makeFirstResponder:[profileController tableView]];
- [chooseProfileView display];
-}
-
-- (IBAction)createButton:(id)sender
-{
- [preferencesController reset];
- [mainWindow setContentView:blankView];
- [self resizeWindowToSize:[preferencesView frame].size];
- [mainWindow setContentMinSize:
- NSMakeSize(400,NSHeight([[mainWindow contentView] frame]))];
- [mainWindow setContentMaxSize:
- NSMakeSize(FLT_MAX,NSHeight([[mainWindow contentView] frame]))];
- [mainWindow setContentView:preferencesView];
- [toolbar setView:@"preferencesView"];
-}
-
-- (IBAction)saveProfileButton:(id)sender
-{
- if ([preferencesController validatePrefs]) {
- // so the list contains the new profile
- [profileController initProfiles];
- [self chooseProfiles];
- }
-}
-
-- (IBAction)cancelProfileButton:(id)sender
-{
- [self chooseProfiles];
-}
-
-/* Only valid once a profile has been selected */
-- (NSString *)profile {
- return myProfile;
-}
-
-- (void)profileSelected:(NSString *)aProfile
-{
- [aProfile retain];
- [myProfile release];
- myProfile = aProfile;
- [mainWindow setTitle: [NSString stringWithFormat:@"Unison: %@", myProfile]];
-}
-
-- (IBAction)restartButton:(id)sender
-{
- [tableView setEditable:NO];
- [self chooseProfiles];
-}
-
-- (IBAction)rescan:(id)sender
-{
- /* There is a delay between turning off the button and it
- actually being disabled. Make sure we don't respond. */
- if ([self validateItem:@selector(rescan:)]) {
- waitingForPassword = NO;
- [self afterOpen];
- }
-}
-
-- (IBAction)openButton:(id)sender
-{
- NSString *profile = [profileController selected];
- [self profileSelected:profile];
- [self connect:profile];
- return;
-}
-
-- (void)updateToolbar
-{
- [toolbar validateVisibleItems];
- [tableModeSelector setEnabled:((syncable && !duringSync) || afterSync)];
-
- // Why?
- [updatesView setNeedsDisplay:YES];
-}
-
-- (void)updateTableViewWithReset:(BOOL)shouldResetSelection
-{
- [tableView reloadData];
- if (shouldResetSelection) {
- [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:0] byExtendingSelection:NO];
- shouldResetSelection = NO;
- }
- [updatesView setNeedsDisplay:YES];
-}
-
-- (void)updateProgressBar:(NSNumber *)newProgress
-{
- // NSLog(@"Updating progress bar: %i - %i", (int)[newProgress doubleValue], (int)[progressBar doubleValue]);
- [progressBar incrementBy:([newProgress doubleValue] - [progressBar doubleValue])];
-}
-
-- (void)updateTableViewSelection
-{
- int n = [tableView numberOfSelectedRows];
- if (n == 1) [self displayDetails:[tableView itemAtRow:[tableView selectedRow]]];
- else [self clearDetails];
-}
-
-- (void)outlineViewSelectionDidChange:(NSNotification *)note
-{
- [self updateTableViewSelection];
-}
-
-- (void)connect:(NSString *)profileName
-{
- // contact server, propagate prefs
- NSLog(@"Connecting to %@...", profileName);
-
- // Switch to ConnectingView
- [mainWindow setContentView:blankView];
- [self resizeWindowToSize:[updatesView frame].size];
- [mainWindow setContentMinSize:NSMakeSize(150,150)];
- [mainWindow setContentMaxSize:NSMakeSize(FLT_MAX, FLT_MAX)];
- [mainWindow setContentView:ConnectingView];
- [toolbar setView:@"connectingView"];
-
- // Update (almost) immediately
- [ConnectingView display];
-
- syncable = NO;
- afterSync = NO;
-
- [self updateToolbar];
-
- // will spawn thread on OCaml side and callback when complete
- (void)ocamlCall("xS", "unisonInit1", profileName);
-}
-
-CAMLprim value unisonInit1Complete(value v)
-{
- id pool = [[NSAutoreleasePool alloc] init];
- if (v == Val_unit) {
- NSLog(@"Connected.");
- [me->preconn release];
- me->preconn = NULL;
- [me performSelectorOnMainThread:@selector(afterOpen:) withObject:nil waitUntilDone:FALSE];
- } else {
- // prompting required
- me->preconn = [[OCamlValue alloc] initWithValue:Field(v,0)]; // value of Some
- [me performSelectorOnMainThread:@selector(unisonInit1Complete:) withObject:nil waitUntilDone:FALSE];
- }
- [pool release];
- return Val_unit;
-}
-
-- (void)unisonInit1Complete:(id)ignore
-{
- @try {
- OCamlValue *prompt = ocamlCall("@@", "openConnectionPrompt", preconn);
- if (!prompt) {
- // turns out, no prompt needed, but must finish opening connection
- ocamlCall("x@", "openConnectionEnd", preconn);
- NSLog(@"Connected.");
- waitingForPassword = NO;
- [self afterOpen];
- return;
- }
- waitingForPassword = YES;
-
- [self raisePasswordWindow:[prompt getField:0 withType:'S']];
- } @catch (NSException *ex) {
- NSRunAlertPanel(@"Connection Error", [ex description], @"OK", nil, nil);
- [self chooseProfiles];
- return;
- }
-
- NSLog(@"Connected.");
-}
-
-- (void)raisePasswordWindow:(NSString *)prompt
-{
- // FIX: some prompts don't ask for password, need to look at it
- NSLog(@"Got the prompt: '%@'",prompt);
- if ((long)ocamlCall("iS", "unisonPasswordMsg", prompt)) {
- [passwordPrompt setStringValue:@"Please enter your password"];
- [NSApp beginSheet:passwordWindow
- modalForWindow:mainWindow
- modalDelegate:nil
- didEndSelector:nil
- contextInfo:nil];
- return;
- }
- if ((long)ocamlCall("iS", "unisonPassphraseMsg", prompt)) {
- [passwordPrompt setStringValue:@"Please enter your passphrase"];
- [NSApp beginSheet:passwordWindow
- modalForWindow:mainWindow
- modalDelegate:nil
- didEndSelector:nil
- contextInfo:nil];
- return;
- }
- if ((long)ocamlCall("iS", "unisonAuthenticityMsg", prompt)) {
- int i = NSRunAlertPanel(@"New host",prompt,@"Yes",@"No",nil);
- if (i == NSAlertDefaultReturn) {
- ocamlCall("x@s", "openConnectionReply", preconn, "yes");
- prompt = ocamlCall("S@", "openConnectionPrompt", preconn);
- if (!prompt) {
- // all done with prompts, finish opening connection
- ocamlCall("x@", "openConnectionEnd", preconn);
- waitingForPassword = NO;
- [self afterOpen];
- return;
- }
- else {
- [self raisePasswordWindow:[NSString
- stringWithUTF8String:String_val(Field(prompt,0))]];
- return;
- }
- }
- if (i == NSAlertAlternateReturn) {
- ocamlCall("x@", "openConnectionCancel", preconn);
- return;
- }
- else {
- NSLog(@"Unrecognized response '%d' from NSRunAlertPanel",i);
- ocamlCall("x@", "openConnectionCancel", preconn);
- return;
- }
- }
- NSLog(@"Unrecognized message from ssh: %@",prompt);
- ocamlCall("x@", "openConnectionCancel", preconn);
-}
-
-// The password window will invoke this when Enter occurs, b/c we
-// are the delegate.
-- (void)controlTextDidEndEditing:(NSNotification *)notification
-{
- NSNumber *reason = [[notification userInfo] objectForKey:@"NSTextMovement"];
- int code = [reason intValue];
- if (code == NSReturnTextMovement)
- [self endPasswordWindow:self];
-}
-// Or, the Continue button will invoke this when clicked
-- (IBAction)endPasswordWindow:(id)sender
-{
- [passwordWindow orderOut:self];
- [NSApp endSheet:passwordWindow];
- if ([sender isEqualTo:passwordCancelButton]) {
- ocamlCall("x@", "openConnectionCancel", preconn);
- [self chooseProfiles];
- return;
- }
- NSString *password = [passwordText stringValue];
- ocamlCall("x@S", "openConnectionReply", preconn, password);
-
- OCamlValue *prompt = ocamlCall("@@", "openConnectionPrompt", preconn);
- if (!prompt) {
- // all done with prompts, finish opening connection
- ocamlCall("x@", "openConnectionEnd", preconn);
- waitingForPassword = NO;
- [self afterOpen];
- }
- else {
- [self raisePasswordWindow:[prompt getField:0 withType:'S']];
- }
-}
-
-- (void)afterOpen:(id)ignore
-{
- [self afterOpen];
-}
-
-- (void)afterOpen
-{
- if (waitingForPassword) return;
- // move to updates window after clearing it
- [self updateReconItems:nil];
- [progressBar setDoubleValue:0.0];
- [progressBar stopAnimation:self];
- // [self clearDetails];
- [mainWindow setContentView:blankView];
- [self resizeWindowToSize:[updatesView frame].size];
- [mainWindow setContentMinSize:
- NSMakeSize(NSWidth([[mainWindow contentView] frame]),200)];
- [mainWindow setContentMaxSize:NSMakeSize(FLT_MAX, FLT_MAX)];
- [mainWindow setContentView:updatesView];
- [toolbar setView:@"updatesView"];
-
- syncable = NO;
- afterSync = NO;
-
- [tableView deselectAll:self];
- [self updateToolbar];
- [self updateProgressBar:[NSNumber numberWithDouble:0.0]];
-
- // this should depend on the number of reconitems, and is now done
- // in updateReconItems:
- // reconItems table gets keyboard input
- //[mainWindow makeFirstResponder:tableView];
- [tableView scrollRowToVisible:0];
-
- [preconn release];
- preconn = nil; // so old preconn can be garbage collected
- // This will run in another thread spawned in OCaml and will return immediately
- // We'll get a call back to unisonInit2Complete() when it is complete
- ocamlCall("x", "unisonInit2");
-}
-
-
-- (void)afterUpdate:(id)retainedReconItems
-{
- // NSLog(@"In afterUpdate:...");
- [self updateReconItems:retainedReconItems];
- [retainedReconItems release];
-
- [notificationController updateFinishedFor:[self profile]];
-
- // label the left and right columns with the roots
- NSString *leftHost = [(NSString *)ocamlCall("S", "unisonFirstRootString") trim];
- NSString *rightHost = [(NSString *)ocamlCall("S", "unisonSecondRootString") trim];
- /*
- [[[tableView tableColumnWithIdentifier:@"left"] headerCell] setObjectValue:lefthost];
- [[[tableView tableColumnWithIdentifier:@"right"] headerCell] setObjectValue:rightHost];
- */
- [mainWindow setTitle: [NSString stringWithFormat:@"Unison: %@ (%@ <-> %@)",
- [self profile], leftHost, rightHost]];
-
- // initial sort
- [tableView setSortDescriptors:[NSArray arrayWithObjects:
- [[tableView tableColumnWithIdentifier:@"fileSizeString"] sortDescriptorPrototype],
- [[tableView tableColumnWithIdentifier:@"path"] sortDescriptorPrototype],
- nil]];
-
- [self updateTableViewWithReset:([reconItems count] > 0)];
- [self updateToolbar];
-}
-
-CAMLprim value unisonInit2Complete(value v)
-{
- id pool = [[NSAutoreleasePool alloc] init];
- [me performSelectorOnMainThread:@selector(afterUpdate:) withObject:[[OCamlValue alloc] initWithValue:v] waitUntilDone:FALSE];
- [pool release];
- return Val_unit;
-}
-
-- (IBAction)syncButton:(id)sender
-{
- [tableView setEditable:NO];
- syncable = NO;
- duringSync = YES;
-
- [self updateToolbar];
-
- // This will run in another thread spawned in OCaml and will return immediately
- // We'll get a call back to syncComplete() when it is complete
- ocamlCall("x", "unisonSynchronize");
-}
-
-- (void)afterSync:(id)ignore
-{
- [notificationController syncFinishedFor:[self profile]];
- duringSync = NO;
- afterSync = YES;
- [self updateToolbar];
-
- int i;
- for (i = 0; i < [reconItems count]; i++) {
- [[reconItems objectAtIndex:i] resetProgress];
- }
-
- [self updateTableViewSelection];
-
- [self updateTableViewWithReset:FALSE];
-}
-
-CAMLprim value syncComplete()
-{
- id pool = [[NSAutoreleasePool alloc] init];
- [me performSelectorOnMainThread:@selector(afterSync:) withObject:nil waitUntilDone:FALSE];
- [pool release];
- return Val_unit;
-}
-
-// A function called from ocaml
-- (void)reloadTable:(NSNumber *)i
-{
- // NSLog(@"*** ReloadTable: %i", [i intValue]);
-
- [[reconItems objectAtIndex:[i intValue]] resetProgress];
- [self updateTableViewWithReset:FALSE];
-}
-
-CAMLprim value reloadTable(value row)
-{
- id pool = [[NSAutoreleasePool alloc] init];
- // NSLog(@"OCaml says... ReloadTable: %i", Int_val(row));
- NSNumber *num = [[NSNumber alloc] initWithInt:Int_val(row)];
- [me performSelectorOnMainThread:@selector(reloadTable:) withObject:num waitUntilDone:FALSE];
- [num release];
- [pool release];
- return Val_unit;
-}
-
-- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
- if (item == nil) item = rootItem;
- return [[item children] count];
-}
-
-- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
- return [item isKindOfClass:[ParentReconItem class]];
-}
-
-- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item {
- if (item == nil) item = rootItem;
- return [[item children] objectAtIndex:index];
-}
-
-- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
- NSString *identifier = [tableColumn identifier];
- if (item == nil) item = rootItem;
-
- if ([identifier isEqualToString:@"percentTransferred"] && (!duringSync && !afterSync)) return nil;
-
- return [item valueForKey:identifier];
-}
-
-static NSDictionary *_SmallGreyAttributes = nil;
-
-- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(NSCell *)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item {
- NSString *identifier = [tableColumn identifier];
- if ([identifier isEqualToString:@"path"]) {
- // The file icon
- [(ImageAndTextCell*)cell setImage:[item fileIcon]];
-
- // For parents, format the file count into the text
- long fileCount = [item fileCount];
- if (fileCount > 1) {
- NSString *countString = [NSString stringWithFormat:@" (%ld files)", fileCount];
- NSString *fullString = [(NSString *)[cell objectValue] stringByAppendingString:countString];
- NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithString:fullString];
-
- if (!_SmallGreyAttributes) {
- NSColor *txtColor = [NSColor grayColor];
- NSFont *txtFont = [NSFont systemFontOfSize:9.0];
- _SmallGreyAttributes = [[NSDictionary dictionaryWithObjectsAndKeys:txtFont,
- NSFontAttributeName, txtColor, NSForegroundColorAttributeName, nil] retain];
- }
- [as setAttributes:_SmallGreyAttributes range:NSMakeRange([fullString length] - [countString length], [countString length])];
- [cell setAttributedStringValue:as];
- [as release];
- }
- } else if ([identifier isEqualToString:@"percentTransferred"]) {
- [(ProgressCell*)cell setIcon:[item direction]];
- [(ProgressCell*)cell setStatusString:[item progressString]];
- [(ProgressCell*)cell setIsActive:[item isKindOfClass:[LeafReconItem class]]];
- }
-}
-
-- (void)outlineView:(NSOutlineView *)outlineView
- sortDescriptorsDidChange:(NSArray *)oldDescriptors {
- NSArray *originalSelection = [outlineView selectedObjects];
-
- // do we want to catch case of object changes to allow resort in same direction for progress / direction?
- // Could check if our objects change and if the first item at the head of new and old were the same
- [rootItem sortUsingDescriptors:[outlineView sortDescriptors]];
- [outlineView reloadData];
- [outlineView setSelectedObjects:originalSelection];
-}
-
-// Delegate methods
-
-- (BOOL)outlineView:(NSOutlineView *)outlineView shouldEditTableColumn:(NSTableColumn *)tableColumn item:(id)item {
- return NO;
-}
-
-- (NSMutableArray *)reconItems // used in ReconTableView only
-{
- return reconItems;
-}
-
-- (int)tableMode
-{
- return [tableModeSelector selectedSegment];
-}
-
-- (IBAction)tableModeChanged:(id)sender
-{
- [[NSUserDefaults standardUserDefaults] setInteger:[self tableMode]+1 forKey:@"TableLayout"];
- [self updateForChangedItems];
-}
-
-- (void)initTableMode
-{
- int mode = [[NSUserDefaults standardUserDefaults] integerForKey:@"TableLayout"] - 1;
- if (mode == -1) mode = 1;
- [tableModeSelector setSelectedSegment:mode];
-}
-
-- (void)updateReconItems:(OCamlValue *)caml_reconItems
-{
- [reconItems release];
- reconItems = [[NSMutableArray alloc] init];
- long i, n =[caml_reconItems count];
- for (i=0; i<n; i++) {
- LeafReconItem *item = [[LeafReconItem alloc] initWithRiAndIndex:(id)[caml_reconItems getField:i withType:'@'] index:i];
- [reconItems addObject:item];
- [item release];
- }
- [self updateForChangedItems];
-}
-
-- (void)expandConflictedParent:(ParentReconItem *)parent
-{
- if ([parent hasConflictedChildren]) {
- // NSLog(@"Expanding conflictedParent: %@", [parent fullPath]);
- [tableView expandItem:parent expandChildren:NO];
- NSArray *children = [parent children];
- int i = 0, count = [children count];
- for (;i < count; i++) {
- id child = [children objectAtIndex:i];
- if ([child isKindOfClass:[ParentReconItem class]]) [self expandConflictedParent:child];
- }
- }
-}
-
-- (void)updateForChangedItems
-{
- int tableMode = [self tableMode];
-
- [rootItem release];
- ParentReconItem *root = rootItem = [[ParentReconItem alloc] init];
-
- if (tableMode != 0 && [reconItems count]) {
- // Special roll-up root item for outline displays
- root = [[ParentReconItem alloc] init];
- [rootItem addChild:root nested:NO];
- [root setPath:@"All Changes..."];
- [root setFullPath:@""];
- [root release];
- }
-
- int j = 0, n =[reconItems count];
- for (; j<n; j++) {
- [root addChild:[reconItems objectAtIndex:j] nested:(tableMode != 0)];
- }
-
- if (tableMode == 1) [root collapseParentsWithSingleChildren:YES];
-
- [tableView reloadData];
-
- if (NO) {
- // Pre-expand entire tree
- int i = [[rootItem children] count];
- while (i--) {
- [tableView expandItem:[[rootItem children] objectAtIndex:i] expandChildren:YES];
- }
- } else if (tableMode != 0) {
- // Always open root node
- [tableView expandItem:rootItem expandChildren:NO];
-
- // then smart expand to reveal conflicts / changes in direction
- [self expandConflictedParent:root];
-
- // then open more levels if we can do so without causing scrolling
- [tableView expandChildrenIfSpace];
- }
-
- // Make sure details get updated (or cleared)
- [self updateTableViewSelection];
-
- // Only enable sync if there are reconitems
- if ([reconItems count]>0) {
- [tableView setEditable:YES];
-
- // reconItems table gets keyboard input
- [mainWindow makeFirstResponder:tableView];
-
- syncable = YES;
- }
- else {
- [tableView setEditable:NO];
- afterSync = YES; // rescan should be enabled
-
- // reconItems table no longer gets keyboard input
- [mainWindow makeFirstResponder:nil];
- }
- [self updateToolbar];
-}
-
-- (id)updateForIgnore:(id)item
-{
- long j = (long)ocamlCall("ii", "unisonUpdateForIgnore", [reconItems indexOfObjectIdenticalTo:item]);
- NSLog(@"Updating for ignore...");
- [self updateReconItems:(OCamlValue *)ocamlCall("@", "unisonState")];
- return [reconItems objectAtIndex:j];
-}
-
-// A function called from ocaml
-CAMLprim value displayStatus(value s)
-{
- id pool = [[NSAutoreleasePool alloc] init];
- NSString *str = [[NSString alloc] initWithUTF8String:String_val(s)];
- // NSLog(@"displayStatus: %@", str);
- [me performSelectorOnMainThread:@selector(statusTextSet:) withObject:str waitUntilDone:FALSE];
- [str release];
- [pool release];
- return Val_unit;
-}
-
-- (void)statusTextSet:(NSString *)s {
- /* filter out strings with # reconitems, and empty strings */
- if (!NSEqualRanges([s rangeOfString:@"reconitems"],
- NSMakeRange(NSNotFound,0))) return;
- [statusText setStringValue:s];
-}
-
-// Called from ocaml to dislpay progress bar
-CAMLprim value displayGlobalProgress(value p)
-{
- id pool = [[NSAutoreleasePool alloc] init];
- NSNumber *num = [[NSNumber alloc] initWithDouble:Double_val(p)];
- [me performSelectorOnMainThread:@selector(updateProgressBar:)
- withObject:num waitUntilDone:FALSE];
- [num release];
- [pool release];
- return Val_unit;
-}
-
-// Called from ocaml to display diff
-CAMLprim value displayDiff(value s, value s2)
-{
- id pool = [[NSAutoreleasePool alloc] init];
- [me performSelectorOnMainThread:@selector(diffViewTextSet:)
- withObject:[NSArray arrayWithObjects:[NSString stringWithUTF8String:String_val(s)],
- [NSString stringWithUTF8String:String_val(s2)], nil]
- waitUntilDone:FALSE];
- [pool release];
- return Val_unit;
-}
-
-// Called from ocaml to display diff error messages
-CAMLprim value displayDiffErr(value s)
-{
- id pool = [[NSAutoreleasePool alloc] init];
- NSString * str = [NSString stringWithUTF8String:String_val(s)];
- str = [[str componentsSeparatedByString:@"\n"] componentsJoinedByString:@" "];
- [me->statusText performSelectorOnMainThread:@selector(setStringValue:)
- withObject:str waitUntilDone:FALSE];
- [pool release];
- return Val_unit;
-}
-
-- (void)diffViewTextSet:(NSArray *)args
-{
- [self diffViewTextSet:[args objectAtIndex:0] bodyText:[args objectAtIndex:1]];
-}
-
-- (void)diffViewTextSet:(NSString *)title bodyText:(NSString *)body {
- if ([body length]==0) return;
- [diffWindow setTitle:title];
- [diffView setFont:[NSFont fontWithName:@"Monaco" size:10]];
- [diffView setString:body];
- if (!doneFirstDiff) {
- /* On first open, position the diff window to the right of
- the main window, but without going off the mainwindow's screen */
- float screenOriginX = [[mainWindow screen] visibleFrame].origin.x;
- float screenWidth = [[mainWindow screen] visibleFrame].size.width;
- float mainOriginX = [mainWindow frame].origin.x;
- float mainOriginY = [mainWindow frame].origin.y;
- float mainWidth = [mainWindow frame].size.width;
- float mainHeight = [mainWindow frame].size.height;
- float diffWidth = [diffWindow frame].size.width;
-
- float diffX = mainOriginX+mainWidth;
- float maxX = screenOriginX+screenWidth-diffWidth;
- if (diffX > maxX) diffX = maxX;
- float diffY = mainOriginY + mainHeight;
-
- NSPoint diffOrigin = NSMakePoint(diffX,diffY);
- [diffWindow cascadeTopLeftFromPoint:diffOrigin];
-
- doneFirstDiff = YES;
- }
- [diffWindow orderFront:nil];
-}
-
-- (void)displayDetails:(ReconItem *)item
-{
- [detailsTextView setFont:[NSFont fontWithName:@"Monaco" size:10]];
- NSString *text = [item details];
- if (!text) text = @"";
- [detailsTextView setString:text];
-}
-
-- (void)clearDetails
-{
- [detailsTextView setString:@""];
-}
-
-- (IBAction)raiseCltoolWindow:(id)sender
-{
- int pref = [[NSUserDefaults standardUserDefaults]
- integerForKey:@"CheckCltool"];
- if (pref==doAsk)
- [cltoolPref setState:NSOffState];
- else
- [cltoolPref setState:NSOnState];
-
- [self raiseWindow: cltoolWindow];
-}
-
-- (IBAction)cltoolYesButton:(id)sender;
-{
- if ([cltoolPref state]==NSOnState)
- [[NSUserDefaults standardUserDefaults]
- setInteger:dontAsk forKey:@"CheckCltool"];
- else
- [[NSUserDefaults standardUserDefaults]
- setInteger:doAsk forKey:@"CheckCltool"];
-
- [self installCommandLineTool:self];
- [cltoolWindow close];
-}
-
-- (IBAction)cltoolNoButton:(id)sender;
-{
- if ([cltoolPref state]==NSOnState)
- [[NSUserDefaults standardUserDefaults]
- setInteger:dontAsk forKey:@"CheckCltool"];
- else
- [[NSUserDefaults standardUserDefaults]
- setInteger:doAsk forKey:@"CheckCltool"];
-
- [cltoolWindow close];
-}
-
-- (IBAction)raiseAboutWindow:(id)sender
-{
- [self raiseWindow: aboutWindow];
-}
-
-- (void)raiseWindow:(NSWindow *)theWindow
-{
- NSRect screenFrame = [[mainWindow screen] visibleFrame];
- NSRect mainWindowFrame = [mainWindow frame];
- NSRect theWindowFrame = [theWindow frame];
-
- float winX = mainWindowFrame.origin.x +
- (mainWindowFrame.size.width - theWindowFrame.size.width)/2;
- float winY = mainWindowFrame.origin.y +
- (mainWindowFrame.size.height + theWindowFrame.size.height)/2;
-
- if (winX<screenFrame.origin.x) winX=screenFrame.origin.x;
- float maxX = screenFrame.origin.x+screenFrame.size.width-
- theWindowFrame.size.width;
- if (winX>maxX) winX=maxX;
- float minY = screenFrame.origin.y+theWindowFrame.size.height;
- if (winY<minY) winY=minY;
- float maxY = screenFrame.origin.y+screenFrame.size.height;
- if (winY>maxY) winY=maxY;
-
- [theWindow cascadeTopLeftFromPoint:
- NSMakePoint(winX,winY)];
-
- [theWindow makeKeyAndOrderFront:nil];
-}
-
-- (IBAction)onlineHelp:(id)sender
-{
- [[NSWorkspace sharedWorkspace]
- openURL:[NSURL URLWithString:@"http://www.cis.upenn.edu/~bcpierce/unison/docs.html"]];
-}
-
-/* from http://developer.apple.com/documentation/Security/Conceptual/authorization_concepts/index.html */
-#include <Security/Authorization.h>
-#include <Security/AuthorizationTags.h>
-- (IBAction)installCommandLineTool:(id)sender
-{
- /* Install the command-line tool in /usr/bin/unison.
- Requires root privilege, so we ask for it and
- pass the task off to /bin/sh. */
-
- OSStatus myStatus;
-
- AuthorizationFlags myFlags = kAuthorizationFlagDefaults;
- AuthorizationRef myAuthorizationRef;
- myStatus = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment,
- myFlags, &myAuthorizationRef);
- if (myStatus != errAuthorizationSuccess) return;
-
- {
- AuthorizationItem myItems = {kAuthorizationRightExecute, 0,
- NULL, 0};
- AuthorizationRights myRights = {1, &myItems};
- myFlags = kAuthorizationFlagDefaults |
- kAuthorizationFlagInteractionAllowed |
- kAuthorizationFlagPreAuthorize |
- kAuthorizationFlagExtendRights;
- myStatus =
- AuthorizationCopyRights(myAuthorizationRef,&myRights,NULL,myFlags,NULL);
- }
- if (myStatus == errAuthorizationSuccess) {
- NSBundle *bundle = [NSBundle mainBundle];
- NSString *bundle_path = [bundle bundlePath];
- NSString *exec_path =
- [bundle_path stringByAppendingString:@"/Contents/MacOS/cltool"];
- // Not sure why but this doesn't work:
- // [bundle pathForResource:@"cltool" ofType:nil];
-
- if (exec_path == nil) return;
- char *args[] = { "-f", (char *)[exec_path UTF8String],
- "/usr/bin/unison", NULL };
-
- myFlags = kAuthorizationFlagDefaults;
- myStatus = AuthorizationExecuteWithPrivileges
- (myAuthorizationRef, "/bin/cp", myFlags, args,
- NULL);
- }
- AuthorizationFree (myAuthorizationRef, kAuthorizationFlagDefaults);
-
- /*
- if (myStatus == errAuthorizationCanceled)
- NSLog(@"The attempt was canceled\n");
- else if (myStatus)
- NSLog(@"There was an authorization error: %ld\n", myStatus);
- */
-}
-
-- (BOOL)validateItem:(IBAction *) action
-{
- if (action == @selector(syncButton:)) return syncable;
- // FIXME Restarting during sync is disabled because it causes UI corruption
- else if (action == @selector(restartButton:)) return !duringSync;
- else if (action == @selector(rescan:)) return ((syncable && !duringSync) || afterSync);
- else return YES;
-}
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
-{
- return [self validateItem:[menuItem action]];
-}
-
-- (BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem
-{
- return [self validateItem:[toolbarItem action]];
-}
-
-- (void)resizeWindowToSize:(NSSize)newSize
-{
- NSRect aFrame;
-
- float newHeight = newSize.height+[self toolbarHeightForWindow:mainWindow];
- float newWidth = newSize.width;
-
- aFrame = [NSWindow contentRectForFrameRect:[mainWindow frame]
- styleMask:[mainWindow styleMask]];
-
- aFrame.origin.y += aFrame.size.height;
- aFrame.origin.y -= newHeight;
- aFrame.size.height = newHeight;
- aFrame.size.width = newWidth;
-
- aFrame = [NSWindow frameRectForContentRect:aFrame
- styleMask:[mainWindow styleMask]];
-
- [mainWindow setFrame:aFrame display:YES animate:YES];
-}
-
-- (float)toolbarHeightForWindow:(NSWindow *)window
-{
- NSToolbar *aToolbar;
- float toolbarHeight = 0.0;
- NSRect windowFrame;
-
- aToolbar = [window toolbar];
- if(aToolbar && [aToolbar isVisible])
- {
- windowFrame = [NSWindow contentRectForFrameRect:[window frame]
- styleMask:[window styleMask]];
- toolbarHeight = NSHeight(windowFrame)
- - NSHeight([[window contentView] frame]);
- }
- return toolbarHeight;
-}
-
-CAMLprim value fatalError(value s)
-{
- NSString *str = [[NSString alloc] initWithUTF8String:String_val(s)];
-
- [me performSelectorOnMainThread:@selector(fatalError:) withObject:str waitUntilDone:FALSE];
- [str release];
- return Val_unit;
-}
-
-- (void)fatalError:(NSString *)msg {
- NSRunAlertPanel(@"Fatal error", msg, @"Exit", nil, nil);
- exit(1);
-}
-
-@end
-
-@implementation NSString (_UnisonUtil)
-- (NSString *)trim
-{
- NSCharacterSet *ws = [NSCharacterSet whitespaceCharacterSet];
- int len = [self length], i = len;
- while (i && [ws characterIsMember:[self characterAtIndex:i-1]]) i--;
- return (i == len) ? self : [self substringToIndex:i];
-}
-@end
diff --git a/src/uimacnew/NotificationController.h b/src/uimacnew/NotificationController.h
deleted file mode 100644
index 899bf83..0000000
--- a/src/uimacnew/NotificationController.h
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// NotificationController.h
-// uimac
-//
-// Created by Alan Schmitt on 02/02/06.
-// Copyright 2006, see file COPYING for details. All rights reserved.
-//
-
-#import <Cocoa/Cocoa.h>
-#import <Growl/Growl.h>
-
-@interface NotificationController : NSObject <GrowlApplicationBridgeDelegate>
-{
-}
-
-- (void)updateFinishedFor: (NSString *)profile;
-- (void)syncFinishedFor: (NSString *)profile;
-
-/* Implement the GrowlApplicationBridgeDelegate protocol */
-- (NSDictionary *)registrationDictionaryForGrowl;
-- (NSString *)applicationNameForGrowl;
-
-@end
diff --git a/src/uimacnew/NotificationController.m b/src/uimacnew/NotificationController.m
deleted file mode 100644
index 7749534..0000000
--- a/src/uimacnew/NotificationController.m
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// NotificationController.m
-// uimac
-//
-// Created by Alan Schmitt on 02/02/06.
-// Copyright 2006, see file COPYING for details. All rights reserved.
-//
-
-#import "NotificationController.h"
-
-#define NOTIFY_UPDATE @"Scan finished"
-#define NOTIFY_SYNC @"Synchronization finished"
-
-/* Show a simple notification */
-static void simpleNotify(NSString *name, NSString *descFmt, NSString *profile);
-
-@implementation NotificationController
-
-- (void)awakeFromNib
-{
- [GrowlApplicationBridge setGrowlDelegate:self];
-}
-
-- (void)updateFinishedFor: (NSString *)profile
-{
- simpleNotify(NOTIFY_UPDATE,
- @"Profile '%@' is finished scanning for updates",
- profile);
-}
-
-- (void)syncFinishedFor: (NSString *)profile {
- simpleNotify(NOTIFY_SYNC,
- @"Profile '%@' is finished synchronizing",
- profile);
-}
-
-- (NSDictionary *)registrationDictionaryForGrowl
-{
- NSArray* notifications = [NSArray arrayWithObjects:
- NOTIFY_UPDATE,
- NOTIFY_SYNC,
- nil];
- return [NSDictionary dictionaryWithObjectsAndKeys:
- notifications, GROWL_NOTIFICATIONS_ALL,
- notifications, GROWL_NOTIFICATIONS_DEFAULT,
- nil];
-}
-
-- (NSString *)applicationNameForGrowl
-{
- return @"Unison";
-}
-
-@end
-
-static void simpleNotify(NSString *name, NSString *descFmt, NSString *profile)
-{
- [GrowlApplicationBridge notifyWithTitle:name
- description:[NSString stringWithFormat:descFmt, profile]
- notificationName:name
- iconData:nil
- priority:0
- isSticky:false
- clickContext:nil];
-} \ No newline at end of file
diff --git a/src/uimacnew/PreferencesController.h b/src/uimacnew/PreferencesController.h
deleted file mode 100644
index 4a4a330..0000000
--- a/src/uimacnew/PreferencesController.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* PreferencesController */
-
-#import <Cocoa/Cocoa.h>
-
-@interface PreferencesController : NSObject
-{
- IBOutlet NSTextField *firstRootText;
- IBOutlet NSButtonCell *localButtonCell;
- IBOutlet NSTextField *profileNameText;
- IBOutlet NSButtonCell *remoteButtonCell;
- IBOutlet NSTextField *secondRootHost;
- IBOutlet NSTextField *secondRootText;
- IBOutlet NSTextField *secondRootUser;
-}
-- (IBAction)anyEnter:(id)sender;
-- (IBAction)localClick:(id)sender;
-- (IBAction)remoteClick:(id)sender;
-- (BOOL)validatePrefs;
-- (void)reset;
-@end
diff --git a/src/uimacnew/PreferencesController.m b/src/uimacnew/PreferencesController.m
deleted file mode 100644
index f1e1ede..0000000
--- a/src/uimacnew/PreferencesController.m
+++ /dev/null
@@ -1,89 +0,0 @@
-#import "PreferencesController.h"
-#import "Bridge.h"
-
-@implementation PreferencesController
-
-- (void)reset
-{
- [profileNameText setStringValue:@""];
- [firstRootText setStringValue:@""];
- [secondRootUser setStringValue:@""];
- [secondRootHost setStringValue:@""];
- [secondRootText setStringValue:@""];
- [remoteButtonCell setState:NSOnState];
- [localButtonCell setState:NSOffState];
- [secondRootUser setSelectable:YES];
- [secondRootUser setEditable:YES];
- [secondRootHost setSelectable:YES];
- [secondRootHost setEditable:YES];
-}
-
-- (BOOL)validatePrefs
-{
- NSString *profileName = [profileNameText stringValue];
- if (profileName == nil | [profileName isEqualTo:@""]) {
- // FIX: should check for already existing names too
- NSRunAlertPanel(@"Error",@"You must enter a profile name",@"OK",nil,nil);
- return NO;
- }
- NSString *firstRoot = [firstRootText stringValue];
- if (firstRoot == nil | [firstRoot isEqualTo:@""]) {
- NSRunAlertPanel(@"Error",@"You must enter a first root",@"OK",nil,nil);
- return NO;
- }
- NSString *secondRoot;
- if ([remoteButtonCell state] == NSOnState) {
- NSString *user = [secondRootUser stringValue];
- if (user == nil | [user isEqualTo:@""]) {
- NSRunAlertPanel(@"Error",@"You must enter a user",@"OK",nil,nil);
- return NO;
- }
- NSString *host = [secondRootHost stringValue];
- if (host == nil | [host isEqualTo:@""]) {
- NSRunAlertPanel(@"Error",@"You must enter a host",@"OK",nil,nil);
- return NO;
- }
- NSString *file = [secondRootText stringValue];
- // OK for empty file, e.g., ssh://foo@bar/
- secondRoot = [NSString stringWithFormat:@"ssh://%@@%@/%@",user,host,file];
- }
- else {
- secondRoot = [secondRootText stringValue];
- if (secondRoot == nil | [secondRoot isEqualTo:@""]) {
- NSRunAlertPanel(@"Error",@"You must enter a second root file",@"OK",nil,nil);
- return NO;
- }
- }
- ocamlCall("xSSS", "unisonProfileInit", profileName, firstRoot, secondRoot);
- return YES;
-}
-
-/* The target when enter is pressed in any of the text fields */
-// FIX: this is broken, it takes tab, mouse clicks, etc.
-- (IBAction)anyEnter:(id)sender
-{
- NSLog(@"enter");
- [self validatePrefs];
-}
-
-- (IBAction)localClick:(id)sender
-{
- NSLog(@"local");
- [secondRootUser setStringValue:@""];
- [secondRootHost setStringValue:@""];
- [secondRootUser setSelectable:NO];
- [secondRootUser setEditable:NO];
- [secondRootHost setSelectable:NO];
- [secondRootHost setEditable:NO];
-}
-
-- (IBAction)remoteClick:(id)sender
-{
- NSLog(@"remote");
- [secondRootUser setSelectable:YES];
- [secondRootUser setEditable:YES];
- [secondRootHost setSelectable:YES];
- [secondRootHost setEditable:YES];
-}
-
-@end
diff --git a/src/uimacnew/ProfileController.h b/src/uimacnew/ProfileController.h
deleted file mode 100644
index 20bbc97..0000000
--- a/src/uimacnew/ProfileController.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* ProfileController */
-/* Copyright (c) 2003, see file COPYING for details. */
-
-#import <Cocoa/Cocoa.h>
-
-@interface ProfileController : NSObject
-{
- IBOutlet NSTableView *tableView;
- NSMutableArray *profiles;
- int defaultIndex; // -1 if no default, else the index in profiles of @"default"
-}
-- (void)initProfiles;
-- (int)numberOfRowsInTableView:(NSTableView *)aTableView;
-- (id)tableView:(NSTableView *)aTableView
- objectValueForTableColumn:(NSTableColumn *)aTableColumn
- row:(int)rowIndex;
-- (NSString *)selected;
-- (NSTableView *)tableView; // allows MyController to set up firstResponder
-@end
diff --git a/src/uimacnew/ProfileController.m b/src/uimacnew/ProfileController.m
deleted file mode 100644
index 94ec172..0000000
--- a/src/uimacnew/ProfileController.m
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Copyright (c) 2003, see file COPYING for details. */
-
-#import "ProfileController.h"
-#import "Bridge.h"
-
-@implementation ProfileController
-
-NSString *unisonDirectory()
-{
- return (NSString *)ocamlCall("S", "unisonDirectory");
-}
-
-- (void)initProfiles
-{
- NSString *directory = unisonDirectory();
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
- NSArray *files = [[NSFileManager defaultManager] directoryContentsAtPath:directory];
-#else
- NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:directory error:nil];
-#endif
- unsigned int count = [files count];
- unsigned int i,j;
-
- [profiles release];
- profiles = [[NSMutableArray alloc] init];
- defaultIndex = -1;
-
- for (i = j = 0; i < count; i++) {
- NSString *file = [files objectAtIndex:i];
- if ([[file pathExtension] isEqualTo:@"prf"]) {
- NSString *withoutExtension = [file stringByDeletingPathExtension];
- [profiles insertObject:withoutExtension atIndex:j];
- if ([@"default" isEqualTo:withoutExtension]) defaultIndex = j;
- j++;
- }
- }
- if (j > 0)
- [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:0] byExtendingSelection:NO];
-}
-
-- (void)awakeFromNib
-{
- // start with the default profile selected
- [self initProfiles];
- if (defaultIndex >= 0)
- [tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:defaultIndex] byExtendingSelection:NO];
- // on awake the scroll bar is inactive, but after adding profiles we might need it;
- // reloadData makes it happen. Q: is setNeedsDisplay more efficient?
- [tableView reloadData];
-}
-
-- (int)numberOfRowsInTableView:(NSTableView *)aTableView
-{
- if (!profiles) return 0;
- else return [profiles count];
-}
-
-- (id)tableView:(NSTableView *)aTableView
- objectValueForTableColumn:(NSTableColumn *)aTableColumn
- row:(int)rowIndex
-{
- if (rowIndex >= 0 && rowIndex < [profiles count])
- return [profiles objectAtIndex:rowIndex];
- else return @"[internal error!]";
-}
-
-- (NSString *)selected
-{
- int rowIndex = [tableView selectedRow];
- if (rowIndex >= 0 && rowIndex < [profiles count])
- return [profiles objectAtIndex:rowIndex];
- else return @"[internal error!]";
-}
-
-- (NSTableView *)tableView
-{
- return tableView;
-}
-
-@end
diff --git a/src/uimacnew/ProfileTableView.h b/src/uimacnew/ProfileTableView.h
deleted file mode 100644
index 2ff6a86..0000000
--- a/src/uimacnew/ProfileTableView.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* ProfileTableView */
-
-#import <Cocoa/Cocoa.h>
-
-@class MyController;
-
-@interface ProfileTableView : NSTableView
-{
- IBOutlet MyController *myController;
-}
-@end
diff --git a/src/uimacnew/ProfileTableView.m b/src/uimacnew/ProfileTableView.m
deleted file mode 100644
index eea7b91..0000000
--- a/src/uimacnew/ProfileTableView.m
+++ /dev/null
@@ -1,36 +0,0 @@
-#import "MyController.h"
-#import "ProfileTableView.h"
-
-@implementation ProfileTableView
-
-- (void)keyDown:(NSEvent *)event
-{
- /* some keys return zero-length strings */
- if ([[event characters] length] == 0) {
- [super keyDown:event];
- return;
- }
-
- unichar c = [[event characters] characterAtIndex:0];
- switch (c) {
- case '\r':
- [myController openButton:self];
- break;
- default:
- [super keyDown:event];
- break;
- }
-}
-
-/* Override default highlight colour to match ReconTableView */
-- (id)_highlightColorForCell:(NSCell *)cell
-{
- if(([[self window] firstResponder] == self) &&
- [[self window] isMainWindow] &&
- [[self window] isKeyWindow])
-
- return [NSColor colorWithCalibratedRed:0.7 green:0.75 blue:0.8 alpha:1.0];
- else return [NSColor colorWithCalibratedRed:0.8 green:0.8 blue:0.8 alpha:1.0];
-}
-
-@end
diff --git a/src/uimacnew/ProgressCell.h b/src/uimacnew/ProgressCell.h
deleted file mode 100644
index c2ef4ad..0000000
--- a/src/uimacnew/ProgressCell.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#import <Cocoa/Cocoa.h>
-
-@interface ProgressCell : NSCell
-{
- float _minVal, _maxVal; // defaults to 0.0, 100.0
- BOOL _isActive;
- BOOL _useFullView; // default: NO
- BOOL _isError; // default: NO
- NSImage *_icon;
- NSString *_statusString;
-}
-- (void)setStatusString:(NSString *)string;
-- (void)setIcon:(NSImage *)image;
-- (void)setIsActive:(BOOL)yn;
-@end
diff --git a/src/uimacnew/ProgressCell.m b/src/uimacnew/ProgressCell.m
deleted file mode 100644
index 011e164..0000000
--- a/src/uimacnew/ProgressCell.m
+++ /dev/null
@@ -1,199 +0,0 @@
-/******************************************************************************
- * Copyright 2008 (see file COPYING for more information)
- *
- * Loosely based on TorrentCell from Transmission (.png files are from
- * the original).
- *****************************************************************************/
-
-#import "ProgressCell.h"
-
-#define BAR_HEIGHT 12.0
-
-static NSImage *_ProgressWhite, *_ProgressBlue, *_ProgressGray, *_ProgressGreen,
- *_ProgressAdvanced, *_ProgressEndWhite, *_ProgressEndBlue,
- *_ProgressEndGray, *_ProgressEndGreen, *_ProgressLightGreen,
- *_ProgressEndAdvanced, * _ErrorImage;
-static NSSize ZeroSize;
-
-@implementation ProgressCell
-
-+ (void) initialize
-{
- NSSize startSize = NSMakeSize(100.0, BAR_HEIGHT);
- ZeroSize = NSMakeSize(0.0, 0.0);
-
- _ProgressWhite = [NSImage imageNamed: @"ProgressBarWhite.png"];
- [_ProgressWhite setScalesWhenResized: YES];
-
- _ProgressBlue = [NSImage imageNamed: @"ProgressBarBlue.png"];
- [_ProgressBlue setScalesWhenResized: YES];
- [_ProgressBlue setSize: startSize];
-
- _ProgressGray = [NSImage imageNamed: @"ProgressBarGray.png"];
- [_ProgressGray setScalesWhenResized: YES];
- [_ProgressGray setSize: startSize];
-
- _ProgressGreen = [NSImage imageNamed: @"ProgressBarGreen.png"];
- [_ProgressGreen setScalesWhenResized: YES];
-
- _ProgressLightGreen = [NSImage imageNamed: @"ProgressBarLightGreen.png"];
- [_ProgressLightGreen setScalesWhenResized: YES];
-
- _ProgressAdvanced = [NSImage imageNamed: @"ProgressBarAdvanced.png"];
- [_ProgressAdvanced setScalesWhenResized: YES];
-
- _ProgressEndWhite = [NSImage imageNamed: @"ProgressBarEndWhite.png"];
- _ProgressEndBlue = [NSImage imageNamed: @"ProgressBarEndBlue.png"];
- _ProgressEndGray = [NSImage imageNamed: @"ProgressBarEndGray.png"];
- _ProgressEndGreen = [NSImage imageNamed: @"ProgressBarEndGreen.png"];
- _ProgressEndAdvanced = [NSImage imageNamed: @"ProgressBarEndAdvanced.png"];
-
- _ErrorImage = [[NSImage imageNamed: @"Error.tiff"] copy];
- [_ErrorImage setFlipped: YES];
-}
-
-- (id)init
-{
- self = [super init];
- _minVal = 0.0;
- _maxVal = 100.0;
- _isActive = YES;
-
- return self;
-}
-
-// BCP: Removed (11/09) per Onne Gorter
-// - (void)dealloc
-// {
-// [_icon release];
-// [_statusString release];
-// [super dealloc];
-// }
-
-- (void)setStatusString:(NSString *)string
-{
- // BCP: Removed (11/09) per Onne Gorter
- // [_statusString autorelease];
- // _statusString = [string retain];
- // Added:
- _statusString = string;
-}
-
-- (void)setIcon:(NSImage *)image
-{
- // BCP: Removed (11/09) per Onne Gorter
- // [_icon autorelease];
- // _icon = [image retain];
- // Added:
- _icon = image;
-}
-
-- (void)setIsActive:(BOOL)yn
-{
- _isActive = yn;
-}
-
-- (void)drawBarImage:(NSImage *)barImage width:(float)width point:(NSPoint)point
-{
- if (width <= 0.0)
- return;
-
- if ([barImage size].width < width)
- [barImage setSize: NSMakeSize(width * 2.0, BAR_HEIGHT)];
-
- [barImage compositeToPoint: point fromRect: NSMakeRect(0, 0, width, BAR_HEIGHT) operation: NSCompositeSourceOver];
-}
-
-- (void)drawBar:(float)width point:(NSPoint)point
-{
- id objectValue = [self objectValue];
- if (!objectValue) return;
-
- float value = [objectValue floatValue];
- float progress = (value - _minVal)/ (_maxVal - _minVal);
-
- width -= 2.0;
- float completedWidth, remainingWidth = 0.0;
-
- //bar images and widths
- NSImage * barLeftEnd, * barRightEnd, * barComplete, * barRemaining;
- if (progress >= 1.0) {
- completedWidth = width;
- barLeftEnd = _ProgressEndGreen;
- barRightEnd = _ProgressEndGreen;
- barComplete = _ProgressGreen;
- barRemaining = _ProgressLightGreen;
- }
- else {
- completedWidth = progress * width;
- remainingWidth = width - completedWidth;
- barLeftEnd = (remainingWidth == width) ? _ProgressEndWhite
- : ((_isActive) ? _ProgressEndBlue : _ProgressEndGray);
- barRightEnd = (completedWidth < width) ? _ProgressEndWhite
- : ((_isActive) ? _ProgressEndBlue : _ProgressEndGray);
- barComplete = _isActive ? _ProgressBlue : _ProgressGray;
- barRemaining = _ProgressWhite;
- }
-
- [barLeftEnd compositeToPoint: point operation: NSCompositeSourceOver];
-
- point.x += 1.0;
- [self drawBarImage: barComplete width: completedWidth point: point];
-
- point.x += completedWidth;
- [self drawBarImage: barRemaining width: remainingWidth point: point];
-
- point.x += remainingWidth;
- [barRightEnd compositeToPoint: point operation: NSCompositeSourceOver];
-}
-
-- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)view
-{
- NSPoint pen = cellFrame.origin;
- const float PADDING = 3.0;
-
- // progress bar
- pen.y += PADDING + BAR_HEIGHT;
- float mainWidth = cellFrame.size.width;
- float barWidth = mainWidth;
- [self drawBar: barWidth point: pen];
-
- //icon
- NSImage * image = _isError ? _ErrorImage : _icon;
- if (image) {
- NSSize imageSize = [image size];
- NSRect imageFrame;
- imageFrame.origin = cellFrame.origin;
- imageFrame.size = imageSize;
- imageFrame.origin.x += ceil((cellFrame.size.width - imageSize.width) / 2);
- imageFrame.origin.y += [view isFlipped] ?
- ceil((cellFrame.size.height + imageSize.height) / 2)
- : ceil((cellFrame.size.height - imageSize.height) / 2);
- [image compositeToPoint:imageFrame.origin operation:NSCompositeSourceOver];
- }
-
- // status string
- if (_statusString) {
- BOOL highlighted = [self isHighlighted] && [[self highlightColorWithFrame: cellFrame inView: view]
- isEqual: [NSColor alternateSelectedControlColor]];
- NSMutableParagraphStyle * paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
- [paragraphStyle setLineBreakMode: NSLineBreakByTruncatingTail];
-
- NSDictionary * statusAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:
- highlighted ? [NSColor whiteColor] : [NSColor darkGrayColor], NSForegroundColorAttributeName,
- [NSFont boldSystemFontOfSize: 9.0], NSFontAttributeName,
- paragraphStyle, NSParagraphStyleAttributeName, nil];
- [paragraphStyle release];
-
- NSSize statusSize = [_statusString sizeWithAttributes: statusAttributes];
- pen = cellFrame.origin;
- pen.x += (cellFrame.size.width - statusSize.width) * 0.5;
- pen.y += (cellFrame.size.height - statusSize.height) * 0.5;
-
- [_statusString drawInRect: NSMakeRect(pen.x, pen.y, statusSize.width, statusSize.height)
- withAttributes: statusAttributes];
- [statusAttributes release];
- }
-}
-
-@end
diff --git a/src/uimacnew/ReconItem.h b/src/uimacnew/ReconItem.h
deleted file mode 100644
index fd9024b..0000000
--- a/src/uimacnew/ReconItem.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* ReconItem */
-
-#import <Cocoa/Cocoa.h>
-
-@class OCamlValue;
-
-@interface ReconItem : NSObject
-{
- ReconItem *parent;
- NSString *path;
- NSString *fullPath;
- BOOL selected;
- NSImage *direction;
- NSString *directionSortString;
- double fileSize;
- double bytesTransferred;
- BOOL resolved;
-}
-- (BOOL)selected;
-- (void)setSelected:(BOOL)x;
-- (NSString *)path;
-- (NSString *)fullPath;
-- (NSString *)left;
-- (NSString *)right;
-- (NSImage *)direction;
-- (NSImage *)fileIcon;
-- (long)fileCount;
-- (double)fileSize;
-- (NSString *)fileSizeString;
-- (double)bytesTransferred;
-- (NSString *)bytesTransferredString;
-- (void)setDirection:(char *)d;
-- (void) doAction:(unichar)action;
-- (void) doIgnore:(unichar)action;
-- (NSString *)progress;
-- (NSString *)progressString;
-- (void)resetProgress;
-- (NSString *)details;
-- (NSString *)updateDetails;
-- (BOOL)isConflict;
-- (BOOL)changedFromDefault;
-- (void)revertDirection;
-- (BOOL)canDiff;
-- (void)showDiffs;
-- (NSString *)leftSortKey;
-- (NSString *)rightSortKey;
-- (NSString *)replicaSortKey:(NSString *)sortString;
-- (NSString *)directionSortKey;
-- (NSString *)progressSortKey;
-- (NSString *)pathSortKey;
-- (NSArray *)children;
-- (ReconItem *)collapseParentsWithSingleChildren:(BOOL)isRoot;
-- (ReconItem *)parent;
-- (void)setPath:(NSString *)aPath;
-- (void)setFullPath:(NSString *)p;
-- (void)setParent:(ReconItem *)p;
-- (void)willChange;
-@end
-
-@interface LeafReconItem : ReconItem
-{
- NSString *left;
- NSString *right;
- NSString *progress;
- NSString *details;
- OCamlValue *ri; // an ocaml Common.reconItem
- long index; // index in Ri list
-}
-- initWithRiAndIndex:(OCamlValue *)v index:(long)i;
-@end
-
-@interface ParentReconItem : ReconItem
-{
- NSMutableArray *_children;
- long fileCount;
-}
-- (void)addChild:(ReconItem *)item nested:(BOOL)useNesting;
-- (void)sortUsingDescriptors:(NSArray *)sortDescriptors;
-- (BOOL)hasConflictedChildren;
-@end
diff --git a/src/uimacnew/ReconItem.m b/src/uimacnew/ReconItem.m
deleted file mode 100644
index 653bd3e..0000000
--- a/src/uimacnew/ReconItem.m
+++ /dev/null
@@ -1,838 +0,0 @@
-#import "ReconItem.h"
-#import "Bridge.h"
-
-#import <Carbon/Carbon.h>
-
-@implementation ReconItem
-
-- init {
- [super init];
- selected = NO; // NB only used/updated during sorts. Not a
- // reliable indicator of whether item is selected
- fileSize = -1.;
- bytesTransferred = -1.;
- return self;
-}
-
-- (void)dealloc
-{
- [path release];
- [fullPath release];
- // [direction release]; // assuming retained by cache, so not retained
- // [directionSortString release]; // no retain/release necessary because is constant
- [super dealloc];
-}
-
-- (ReconItem *)parent
-{
- return parent;
-}
-
-- (void)setParent:(ReconItem *)p
-{
- parent = p;
-}
-
-- (void)willChange
-{
- // propagate up parent chain
- [parent willChange];
-}
-
-- (NSArray *)children
-{
- return nil;
-}
-
-- (BOOL)selected
-{
- return selected;
-}
-
-- (void)setSelected:(BOOL)x
-{
- selected = x;
-}
-
-- (NSString *)path
-{
- return path;
-}
-
-- (void)setPath:(NSString *)aPath
-{
- [path autorelease];
- path = [aPath retain];
-
- // invalidate
- [fullPath autorelease];
- fullPath = nil;
-}
-
-- (NSString *)fullPath
-{
- if (!fullPath) {
- NSString *parentPath = [parent fullPath];
- [self setFullPath:(([parentPath length] > 0) ? [parentPath stringByAppendingFormat:@"/%@", path] : path)];
- }
-
- return fullPath;
-}
-
-- (void)setFullPath:(NSString *)p
-{
- [fullPath autorelease];
- fullPath = [p retain];
-}
-
-- (NSString *)left
-{
- return nil;
-}
-
-- (NSString *)right
-{
- return nil;
-}
-
-static NSMutableDictionary *_ChangeIconsByType = nil;
-
-- (NSImage *)changeIconFor:(NSString *)type other:(NSString *)other
-{
- if (![type length]) {
- if ([other isEqual:@"Created"]) {
- type = @"Absent";
- } else if ([other length]) {
- type = @"Unmodified";
- } else
- return nil;
- }
-
- NSImage *result = [_ChangeIconsByType objectForKey:type];
- if (!result) {
- NSString *imageName = [NSString stringWithFormat:@"Change_%@.png", type];
- result = [NSImage imageNamed:imageName];
- if (!_ChangeIconsByType) _ChangeIconsByType = [[NSMutableDictionary alloc] init];
- [_ChangeIconsByType setObject:result forKey:type];
- }
- return result;
-}
-
-- (NSImage *)leftIcon
-{
- return [self changeIconFor:[self left] other:[self right]];
-}
-
-- (NSImage *)rightIcon
-{
- return [self changeIconFor:[self right] other:[self left]];
-}
-
-
-- (double)computeFileSize
-{
- return 0.;
-}
-
-- (double)bytesTransferred
-{
- return 0.;
-}
-
-- (long)fileCount
-{
- return 1;
-}
-
-- (double)fileSize
-{
- if (fileSize == -1.) fileSize = [self computeFileSize];
- return fileSize;
-}
-
-- (NSString *)formatFileSize:(double)size
-{
- if (size == 0) return @"--";
- if (size < 1024) return @"< 1KB"; // return [NSString stringWithFormat:@"%i bytes", size];
- size /= 1024;
- if (size < 1024) return [NSString stringWithFormat:@"%i KB", (int)size];
- size /= 1024;
- if (size < 1024) return [NSString stringWithFormat:@"%1.1f MB", size];
- size = size / 1024;
- return [NSString stringWithFormat:@"%1.1f GB", size];
-}
-
-- (NSString *)fileSizeString
-{
- return [self formatFileSize:[self fileSize]];
-}
-
-- (NSString *)bytesTransferredString
-{
- return [self formatFileSize:[self bytesTransferred]];
-}
-
-- (NSNumber *)percentTransferred
-{
- double size = [self computeFileSize];
- return (size > 0) ? [NSNumber numberWithDouble:([self bytesTransferred] / (size) * 100.0)]
- : nil;
-}
-
-static NSMutableDictionary *_iconsByExtension = nil;
-
-- (NSImage *)iconForExtension:(NSString *)extension
-{
- NSImage *icon = [_iconsByExtension objectForKey:extension];
- if (!_iconsByExtension) _iconsByExtension = [[NSMutableDictionary alloc] init];
- if (!icon) {
- icon = [[NSWorkspace sharedWorkspace] iconForFileType:extension];
- [icon setSize:NSMakeSize(16.0, 16.0)];
- [_iconsByExtension setObject:icon forKey:extension];
- }
- return icon;
-}
-
-- (NSImage *)fileIcon
-{
- return [self iconForExtension:NSFileTypeForHFSTypeCode(kOpenFolderIcon)];
-}
-
-- (NSString *)dirString
-{
- return @"<-?->";
-}
-
-- (NSImage *)direction
-{
- if (direction) return direction;
- NSString * dirString = [self dirString];
-
- BOOL changedFromDefault = [self changedFromDefault];
-
- if ([dirString isEqual:@"<-?->"]) {
- if (changedFromDefault | resolved) {
- direction = [NSImage imageNamed: @"table-skip.tif"];
- directionSortString = @"3";
- }
- else {
- direction = [NSImage imageNamed: @"table-conflict.tif"];
- directionSortString = @"2";
- }
- }
-
- else if ([dirString isEqual:@"---->"]) {
- if (changedFromDefault) {
- direction = [NSImage imageNamed: @"table-right-blue.tif"];
- directionSortString = @"6";
- }
- else {
- direction = [NSImage imageNamed: @"table-right-green.tif"];
- directionSortString = @"8";
- }
- }
-
- else if ([dirString isEqual:@"<----"]) {
- if (changedFromDefault) {
- direction = [NSImage imageNamed: @"table-left-blue.tif"];
- directionSortString = @"5";
- }
- else {
- direction = [NSImage imageNamed: @"table-left-green.tif"];
- directionSortString = @"7";
- }
- }
-
- else if ([dirString isEqual:@"<-M->"]) {
- direction = [NSImage imageNamed: @"table-merge.tif"];
- directionSortString = @"4";
- }
-
- else if ([dirString isEqual:@"<--->"]) {
- direction = [NSImage imageNamed: @"table-mixed.tif"];
- directionSortString = @"9";
- }
-
- else {
- direction = [NSImage imageNamed: @"table-error.tif"];
- directionSortString = @"1";
- }
-
- [direction retain];
- return direction;
-}
-
-- (void)setDirection:(char *)d
-{
- [direction autorelease];
- direction = nil;
-}
-
-- (void)doAction:(unichar)action
-{
- switch (action) {
- case '>':
- [self setDirection:"unisonRiSetRight"];
- break;
- case '<':
- [self setDirection:"unisonRiSetLeft"];
- break;
- case '/':
- [self setDirection:"unisonRiSetConflict"];
- resolved = YES;
- break;
- case '-':
- [self setDirection:"unisonRiForceOlder"];
- break;
- case '+':
- [self setDirection:"unisonRiForceNewer"];
- break;
- case 'm':
- [self setDirection:"unisonRiSetMerge"];
- break;
- case 'd':
- [self showDiffs];
- break;
- case 'R':
- [self revertDirection];
- break;
- default:
- NSLog(@"ReconItem.doAction : unknown action");
- break;
- }
-}
-
-- (void)doIgnore:(unichar)action
-{
- switch (action) {
- case 'I':
- ocamlCall("xS", "unisonIgnorePath", [self fullPath]);
- break;
- case 'E':
- ocamlCall("xS", "unisonIgnoreExt", [self path]);
- break;
- case 'N':
- ocamlCall("xS", "unisonIgnoreName", [self path]);
- break;
- default:
- NSLog(@"ReconItem.doIgnore : unknown ignore");
- break;
- }
-}
-
-/* Sorting functions. These have names equal to
- column identifiers + "SortKey", and return NSStrings that
- can be automatically sorted with their compare method */
-
-- (NSString *) leftSortKey
-{
- return [self replicaSortKey:[self left]];
-}
-
-- (NSString *) rightSortKey
-{
- return [self replicaSortKey:[self right]];
-}
-
-- (NSString *) replicaSortKey:(NSString *)sortString
-{
- /* sort order for left and right replicas */
-
- if ([sortString isEqualToString:@"Created"]) return @"1";
- else if ([sortString isEqualToString:@"Deleted"]) return @"2";
- else if ([sortString isEqualToString:@"Modified"]) return @"3";
- else if ([sortString isEqualToString:@""]) return @"4";
- else return @"5";
-}
-
-- (NSString *) directionSortKey
-{
- /* Since the direction indicators are unsortable images, use
- directionSortString instead */
-
- if ([directionSortString isEqual:@""])
- [self direction];
- return directionSortString;
-}
-
-- (NSString *) progressSortKey
-{
- /* Percentages, "done" and "" are sorted OK without help,
- but "start " should be sorted after "" and before "0%" */
-
- NSString * progressString = [self progress];
- if ([progressString isEqualToString:@"start "]) progressString = @" ";
- return progressString;
-}
-
-- (NSString *) pathSortKey
-{
- /* default alphanumeric sort is fine for paths */
- return [self path];
-}
-
-- (NSString *)progress
-{
- return nil;
-}
-
-- (BOOL)transferInProgress
-{
- double soFar = [self bytesTransferred];
- return (soFar > 0) && (soFar < [self fileSize]);
-}
-
-- (void)resetProgress
-{
-}
-
-- (NSString *)progressString
-{
- NSString *progress = [self progress];
- if ([progress length] == 0. || [progress hasSuffix:@"%"])
- progress = [self transferInProgress] ? [self bytesTransferredString] : @"";
- else if ([progress isEqual:@"done"]) progress = @"";
- return progress;
-}
-
-- (NSString *)details
-{
- return nil;
-}
-
-- (NSString *)updateDetails
-{
- return [self details];
-}
-
-- (BOOL)isConflict
-{
- return NO;
-}
-
-- (BOOL)changedFromDefault
-{
- return NO;
-}
-
-- (void)revertDirection
-{
- [self willChange];
- [direction release];
- direction = nil;
- resolved = NO;
-}
-
-- (BOOL)canDiff
-{
- return NO;
-}
-
-- (void)showDiffs
-{
-}
-
-- (ReconItem *)collapseParentsWithSingleChildren:(BOOL)isRoot
-{
- return self;
-}
-@end
-
-
-// --- Leaf items -- actually corresponding to ReconItems in OCaml
-@implementation LeafReconItem
-
-- initWithRiAndIndex:(OCamlValue *)v index:(long)i
-{
- [super init];
- ri = [v retain];
- index = i;
- resolved = NO;
- directionSortString = @"";
- return self;
-}
-
--(void)dealloc
-{
- [ri release];
- [left release];
- [right release];
- [progress release];
- [details release];
-
- [super dealloc];
-}
-
-- (NSString *)path
-{
- if (!path) path = [(NSString *)ocamlCall("S@", "unisonRiToPath", ri) retain];
- return path;
-}
-
-- (NSString *)left
-{
- if (!left) left = [(NSString *)ocamlCall("S@", "unisonRiToLeft", ri) retain];
- return left;
-}
-
-- (NSString *)right
-{
- if (!right) right = [(NSString *)ocamlCall("S@", "unisonRiToRight", ri) retain];
- return right;
-}
-
-- (double)computeFileSize
-{
- return [(NSNumber *)ocamlCall("N@", "unisonRiToFileSize", ri) doubleValue];
-}
-
-- (double)bytesTransferred
-{
- if (bytesTransferred == -1.) {
- // need to force to fileSize if done, otherwise may not match up to 100%
- bytesTransferred = ([[self progress] isEqual:@"done"]) ? [self fileSize]
- : [(NSNumber*)ocamlCall("N@", "unisonRiToBytesTransferred", ri) doubleValue];
- }
- return bytesTransferred;
-}
-
-- (NSImage *)fileIcon
-{
- NSString *extension = [[self path] pathExtension];
-
- if ([@"" isEqual:extension]) {
- NSString *type = (NSString *)ocamlCall("S@", "unisonRiToFileType", ri);
- extension = [type isEqual:@"dir"]
- ? NSFileTypeForHFSTypeCode(kGenericFolderIcon)
- : NSFileTypeForHFSTypeCode(kGenericDocumentIcon);
- }
- return [self iconForExtension:extension];
-}
-
-- (NSString *)dirString
-{
- return (NSString *)ocamlCall("S@", "unisonRiToDirection", ri);
-}
-
-- (void)setDirection:(char *)d
-{
- [self willChange];
- [super setDirection:d];
- ocamlCall("x@", d, ri);
-}
-
-- (NSString *)progress
-{
- if (!progress) {
- progress = [(NSString *)ocamlCall("S@", "unisonRiToProgress", ri) retain];
- if ([progress isEqual:@"FAILED"]) [self updateDetails];
- }
- return progress;
-}
-
-- (void)resetProgress
-{
- // Get rid of the memoized progress because we expect it to change
- [self willChange];
- bytesTransferred = -1.;
- [progress release];
-
- // Force update now so we get the result while the OCaml thread is available
- // [self progress];
- // [self bytesTransferred];
- progress = nil;
-}
-
-- (NSString *)details
-{
- if (details) return details;
- return [self updateDetails];
-}
-
-- (NSString *)updateDetails
-{
- [details autorelease];
- details = [(NSString *)ocamlCall("S@", "unisonRiToDetails", ri) retain];
- return details;
-}
-
-- (BOOL)isConflict
-{
- return ((long)ocamlCall("i@", "unisonRiIsConflict", ri) ? YES : NO);
-}
-
-- (BOOL)changedFromDefault
-{
- return ((long)ocamlCall("i@", "changedFromDefault", ri) ? YES : NO);
-}
-
-- (void)revertDirection
-{
- ocamlCall("x@", "unisonRiRevert", ri);
- [super revertDirection];
-}
-
-- (BOOL)canDiff
-{
- return ((long)ocamlCall("i@", "canDiff", ri) ? YES : NO);
-}
-
-- (void)showDiffs
-{
- ocamlCall("x@i", "runShowDiffs", ri, index);
-}
-
-@end
-
-@interface NSImage (TintedImage)
-- (NSImage *)tintedImageWithColor:(NSColor *) tint operation:(NSCompositingOperation) op;
-@end
-
-@implementation NSImage (TintedImage)
-
-- (NSImage *)tintedImageWithColor:(NSColor *) tint operation:(NSCompositingOperation) op
-{
- NSSize size = [self size];
- NSRect imageBounds = NSMakeRect(0, 0, size.width, size.height);
- NSImage *newImage = [[NSImage alloc] initWithSize:size];
-
- [newImage lockFocus];
- [self compositeToPoint:NSZeroPoint operation:NSCompositeSourceOver];
- [tint set];
- NSRectFillUsingOperation(imageBounds, op);
- [newImage unlockFocus];
-
- return [newImage autorelease];
-}
-
-@end
-
-// ---- Parent nodes in grouped items
-@implementation ParentReconItem
-
-- init
-{
- [super init];
- _children = [[NSMutableArray alloc] init];
- return self;
-}
-
-- initWithPath:(NSString *)aPath
-{
- [self init];
- path = [aPath retain];
- return self;
-}
-
-- (void)dealloc
-{
- [_children release];
- [super dealloc];
-}
-
-- (NSArray *)children;
-{
- return _children;
-}
-
-- (void)addChild:(ReconItem *)item pathArray:(NSArray *)pathArray level:(int)level
-{
- NSString *element = [pathArray count] ? [pathArray objectAtIndex:level] : @"";
-
- // if we're at the leaf of the path, then add the item
- if (((0 == [pathArray count]) && (0 == level)) || (level == [pathArray count]-1)) {
- [item setParent:self];
- [item setPath:element];
- [_children addObject:item];
- return;
- }
-
- // find / add matching parent node
- ReconItem *last = [_children lastObject];
- if (last == nil || ![last isKindOfClass:[ParentReconItem class]] || ![[last path] isEqual:element]) {
- last = [[ParentReconItem alloc] initWithPath:element];
- [last setParent:self];
- [_children addObject:last];
- [last release];
- }
-
- [(ParentReconItem *)last addChild:item pathArray:pathArray level:level+1];
-}
-
-- (void)addChild:(ReconItem *)item nested:(BOOL)nested
-{
- [item setPath:nil]; // invalidate/reset
-
- if (nested) {
- [self addChild:item pathArray:[[item path] pathComponents] level:0];
- } else {
- [item setParent:self];
- [_children addObject:item];
- }
-}
-
-- (void)sortUsingDescriptors:(NSArray *)sortDescriptors
-{
- // sort our children
- [_children sortUsingDescriptors:sortDescriptors];
-
- // then have them sort theirs
- int i = [_children count];
- while (i--) {
- id child = [_children objectAtIndex:i];
- if ([child isKindOfClass:[ParentReconItem class]]) [child sortUsingDescriptors:sortDescriptors];
- }
-}
-
-- (ReconItem *)collapseParentsWithSingleChildren:(BOOL)isRoot
-{
- // replace ourselves?
- if (!isRoot && [_children count] == 1) {
- ReconItem *child = [_children lastObject];
- [child setPath:[path stringByAppendingFormat:@"/%@", [child path]]];
- return [child collapseParentsWithSingleChildren:NO];
- }
-
- // recurse
- int i = [_children count];
- while (i--) {
- ReconItem *child = [_children objectAtIndex:i];
- ReconItem *replacement = [child collapseParentsWithSingleChildren:NO];
- if (child != replacement) {
- [_children replaceObjectAtIndex:i withObject:replacement];
- [replacement setParent:self];
- }
- }
- return self;
-}
-
-- (void)willChange
-{
- // invalidate child-based state
- // Assuming caches / constant, so not retained / released
- // [direction autorelease];
- // [directionSortString autorelease];
- direction = nil;
- directionSortString = nil;
- bytesTransferred = -1.;
- // fileSize = -1;
- // resolved = NO;
-
- // propagate up parent chain
- [parent willChange];
-}
-
-// Propagation methods
-- (void)doAction:(unichar)action
-{
- int i = [_children count];
- while (i--) {
- ReconItem *child = [_children objectAtIndex:i];
- [child doAction:action];
- }
-}
-
-- (void)doIgnore:(unichar)action
-{
- // handle Path ignores at this level, name and extension at the child nodes
- if (action == 'I') {
- [super doIgnore:'I'];
- } else {
- int i = [_children count];
- while (i--) {
- ReconItem *child = [_children objectAtIndex:i];
- [child doIgnore:action];
- }
- }
-}
-
-// Rollup methods
-- (long)fileCount
-{
- if (fileCount == 0) {
- int i = [_children count];
- while (i--) {
- ReconItem *child = [_children objectAtIndex:i];
- fileCount += [child fileCount];
- }
- }
- return fileCount;
-}
-
-- (double)computeFileSize
-{
- double size = 0;
- int i = [_children count];
- while (i--) {
- ReconItem *child = [_children objectAtIndex:i];
- size += [child fileSize];
- }
- return size;
-}
-
-- (double)bytesTransferred
-{
- if (bytesTransferred == -1.) {
- bytesTransferred = 0.;
- int i = [_children count];
- while (i--) {
- ReconItem *child = [_children objectAtIndex:i];
- bytesTransferred += [child bytesTransferred];
- }
- }
- return bytesTransferred;
-}
-
-
-
-- (NSString *)dirString
-{
- NSString *rollup = nil;
- int i = [_children count];
- while (i--) {
- ReconItem *child = [_children objectAtIndex:i];
- NSString *dirString = [child dirString];
- if (!rollup || [dirString isEqual:rollup]) {
- rollup = dirString;
- } else {
- // conflict
- if ([dirString isEqual:@"---->"] || [dirString isEqual:@"<----"] || [dirString isEqual:@"<--->"]) {
- if ([rollup isEqual:@"---->"] || [rollup isEqual:@"<----"] || [rollup isEqual:@"<--->"]) {
- rollup = @"<--->";
- }
- } else {
- rollup = @"<-?->";
- }
- }
- }
- // NSLog(@"dirString for %@: %@", path, rollup);
- return rollup;
-}
-
-- (BOOL)hasConflictedChildren
-{
- NSString *dirString = [self dirString];
- BOOL result = [dirString isEqual:@"<--->"] || [dirString isEqual:@"<-?->"];
- // NSLog(@"hasConflictedChildren (%@): %@: %i", [self path], dirString, result);
- return result;
-}
-
-static NSMutableDictionary *_parentImages = nil;
-static NSColor *_veryLightGreyColor = nil;
-- (NSImage *)direction
-{
- if (!_parentImages) {
- _parentImages = [[NSMutableDictionary alloc] init];
- _veryLightGreyColor = [[NSColor colorWithCalibratedRed:0.7 green:0.7 blue:0.7 alpha:1.0] retain];
- }
- NSImage *baseImage = [super direction];
- NSImage *parentImage = [_parentImages objectForKey:baseImage];
- if (!parentImage) {
- // make parent images a grey version of the leaf images
- parentImage = [baseImage tintedImageWithColor:_veryLightGreyColor operation:NSCompositeSourceIn];
- [_parentImages setObject:parentImage forKey:baseImage];
- }
- return parentImage;
-}
-
-@end
diff --git a/src/uimacnew/ReconTableView.h b/src/uimacnew/ReconTableView.h
deleted file mode 100644
index 1fc5a66..0000000
--- a/src/uimacnew/ReconTableView.h
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// ReconTableView.h
-//
-// NSTableView extended to handle additional keyboard events for the reconcile window.
-// The keyDown: method is redefined.
-//
-// Created by Trevor Jim on Wed Aug 27 2003.
-// Copyright (c) 2003, licensed under GNU GPL.
-//
-
-#import <AppKit/AppKit.h>
-
-@interface ReconTableView : NSOutlineView {
- BOOL editable;
-}
-- (BOOL)editable;
-- (void)setEditable:(BOOL)x;
-- (BOOL)validateItem:(IBAction *) action;
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
-- (BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem;
-- (IBAction)ignorePath:(id)sender;
-- (IBAction)ignoreExt:(id)sender;
-- (IBAction)ignoreName:(id)sender;
-- (IBAction)copyLR:(id)sender;
-- (IBAction)copyRL:(id)sender;
-- (IBAction)leaveAlone:(id)sender;
-- (IBAction)forceOlder:(id)sender;
-- (IBAction)forceNewer:(id)sender;
-- (IBAction)selectConflicts:(id)sender;
-- (IBAction)revert:(id)sender;
-- (IBAction)merge:(id)sender;
-- (IBAction)showDiff:(id)sender;
-- (BOOL)canDiffSelection;
-@end
-
-@interface NSOutlineView (_UnisonExtras)
-- (NSArray *)selectedObjects;
-- (NSEnumerator *)selectedObjectEnumerator;
-- (void)setSelectedObjects:(NSArray *)selection;
-
-- (void)expandChildrenIfSpace;
-
-@end
diff --git a/src/uimacnew/ReconTableView.m b/src/uimacnew/ReconTableView.m
deleted file mode 100644
index a4df8b0..0000000
--- a/src/uimacnew/ReconTableView.m
+++ /dev/null
@@ -1,298 +0,0 @@
-//
-// ReconTableView.m
-// Unison
-//
-// Created by Trevor Jim on Wed Aug 27 2003.
-// Copyright (c) 2003. See file COPYING for details.
-//
-
-#import "ReconTableView.h"
-#import "ReconItem.h"
-#import "MyController.h"
-
-@implementation NSOutlineView (_UnisonExtras)
-
-- (NSArray *)selectedObjects
-{
- NSMutableArray *result = [NSMutableArray array];
- NSIndexSet *set = [self selectedRowIndexes];
- NSUInteger index = [set firstIndex];
- while (index != NSNotFound) {
- [result addObject:[self itemAtRow:index]];
- index = [set indexGreaterThanIndex: index];
- }
- return result;
-}
-
-- (void)setSelectedObjects:(NSArray *)selectedObjects
-{
- NSMutableIndexSet *set = [NSMutableIndexSet indexSet];
- int i = [selectedObjects count];
- while (i--) {
- int index = [self rowForItem:[selectedObjects objectAtIndex:i]];
- if (index >= 0) [set addIndex:index];
- }
- [self selectRowIndexes:set byExtendingSelection:NO];
-}
-
-- (NSEnumerator *)selectedObjectEnumerator
-{
- return [[self selectedObjects] objectEnumerator];
-}
-
-- (int)rowCapacityWithoutScrolling
-{
- float bodyHeight = [self visibleRect].size.height;
- bodyHeight -= [[self headerView] visibleRect].size.height;
- return bodyHeight / ([self rowHeight] + 2.0);
-}
-
-- (BOOL)_canAcceptRowCountWithoutScrolling:(int)rows
-{
- return ([self numberOfRows] + rows) <= [self rowCapacityWithoutScrolling];
-}
-
-- (BOOL)_expandChildrenIfSpace:(id)parent level:(int)level
-{
- BOOL didExpand = NO;
- id dataSource = [self dataSource];
- int count = [dataSource outlineView:self numberOfChildrenOfItem:parent];
- if (level == 0) {
- if (count && ([self isItemExpanded:parent] || [self _canAcceptRowCountWithoutScrolling:count])) {
- [self expandItem:parent expandChildren:NO];
- didExpand = YES;
- }
- } else {
- // try expanding each of our children. If all expand, then return YES,
- // indicating that it may be worth trying the next level
- int i;
- for (i=0; i < count; i++) {
- id child = [dataSource outlineView:self child:i ofItem:parent];
- didExpand = [self _expandChildrenIfSpace:child level:level-1] || didExpand;
- }
- }
-
- return didExpand;
-}
-
-- (void)expandChildrenIfSpace
-{
- int level = 1;
- while ([self _expandChildrenIfSpace:nil level:level]) level++;
-}
-
-@end
-
-@implementation ReconTableView
-
-- (BOOL)editable
-{
- return editable;
-}
-
-- (void)setEditable:(BOOL)x
-{
- editable = x;
-}
-
-- (BOOL)validateItem:(IBAction *) action
-{
- if (action == @selector(selectAll:)
- || action == @selector(selectConflicts:)
- || action == @selector(copyLR:)
- || action == @selector(copyRL:)
- || action == @selector(leaveAlone:)
- || action == @selector(forceNewer:)
- || action == @selector(forceOlder:)
- || action == @selector(revert:)
- || action == @selector(ignorePath:)
- || action == @selector(ignoreExt:)
- || action == @selector(ignoreName:))
- return editable;
- else if (action == @selector(merge:)) {
- if (!editable) return NO;
- else return [self canDiffSelection];
- }
- else if (action == @selector(showDiff:)) {
- if ((!editable) || (!([self numberOfSelectedRows]==1)))
- return NO;
- else return [self canDiffSelection];
- }
- else return YES;
-}
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
-{
- return [self validateItem:[menuItem action]];
-}
-
-- (BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem
-{
- return [self validateItem:[toolbarItem action]];
-}
-
-- (void)doIgnore:(unichar)c
-{
- NSEnumerator *e = [self selectedObjectEnumerator];
- ReconItem *item, *last = nil;
- while (item = [e nextObject]) {
- [item doIgnore:c];
- last = item;
- }
- if (last) { // something was selected
- MyController* controller = (MyController*) [self dataSource];
- last = [controller updateForIgnore:last];
- [self selectRowIndexes:[NSIndexSet indexSetWithIndex:[self rowForItem:last]] byExtendingSelection:NO];
- [self reloadData];
- }
-}
-
-- (IBAction)ignorePath:(id)sender
-{
- [self doIgnore:'I'];
-}
-
-- (IBAction)ignoreExt:(id)sender
-{
- [self doIgnore:'E'];
-}
-
-- (IBAction)ignoreName:(id)sender
-{
- [self doIgnore:'N'];
-}
-
-- (void)doAction:(unichar)c
-{
- int numSelected = 0;
- NSEnumerator *e = [self selectedObjectEnumerator];
- ReconItem *item, *last = nil;
- while (item = [e nextObject]) {
- numSelected++;
- [item doAction:c];
- last = item;
- }
- if (numSelected>0) {
- int nextRow = [self rowForItem:last] + 1;
- if (numSelected == 1 && [self numberOfRows] > nextRow && c!='d') {
- // Move to next row, unless already at last row, or if more than one row selected
- [self selectRowIndexes:[NSIndexSet indexSetWithIndex:nextRow] byExtendingSelection:NO];
- [self scrollRowToVisible:nextRow];
- }
- [self reloadData];
- }
-}
-
-- (IBAction)copyLR:(id)sender
-{
- [self doAction:'>'];
-}
-
-- (IBAction)copyRL:(id)sender
-{
- [self doAction:'<'];
-}
-
-- (IBAction)leaveAlone:(id)sender
-{
- [self doAction:'/'];
-}
-
-- (IBAction)forceOlder:(id)sender
-{
- [self doAction:'-'];
-}
-
-- (IBAction)forceNewer:(id)sender
-{
- [self doAction:'+'];
-}
-
-- (IBAction)selectConflicts:(id)sender
-{
- [self deselectAll:self];
- MyController* controller = (MyController*) [self dataSource];
- NSMutableArray *reconItems = [controller reconItems];
- int i = 0;
- for (; i < [reconItems count]; i++) {
- ReconItem *item = [reconItems objectAtIndex:i];
- if ([item isConflict])
- [self selectRowIndexes:[NSIndexSet indexSetWithIndex:[self rowForItem:item]] byExtendingSelection:YES];
- }
-}
-
-- (IBAction)revert:(id)sender
-{
- [self doAction:'R'];
-}
-
-- (IBAction)merge:(id)sender
-{
- [self doAction:'m'];
-}
-
-- (IBAction)showDiff:(id)sender
-{
- [self doAction:'d'];
-}
-
-/* There are menu commands for these, but we add some shortcuts so you don't
- have to press the Command key */
-- (void)keyDown:(NSEvent *)event
-{
- /* some keys return zero-length strings */
- if ([[event characters] length] == 0) {
- [super keyDown:event];
- return;
- }
-
- /* actions are disabled when when menu items are */
- if (!editable) {
- [super keyDown:event];
- return;
- }
-
- unichar c = [[event characters] characterAtIndex:0];
- switch (c) {
- case '>':
- case NSRightArrowFunctionKey:
- [self doAction:'>'];
- break;
- case '<':
- case NSLeftArrowFunctionKey:
- [self doAction:'<'];
- break;
- case '?':
- case '/':
- [self doAction:'/'];
- break;
- default:
- [super keyDown:event];
- break;
- }
-}
-
-- (BOOL)canDiffSelection
-{
- BOOL canDiff = YES;
- NSEnumerator *e = [self selectedObjectEnumerator];
- ReconItem *item;
- while (item = [e nextObject]) {
- if (![item canDiff]) canDiff= NO;
- }
- return canDiff;
-}
-
-/* Override default highlight colour because it's hard to see the
- conflict/resolution icons */
-- (id)_highlightColorForCell:(NSCell *)cell
-{
- if(([[self window] firstResponder] == self) &&
- [[self window] isMainWindow] &&
- [[self window] isKeyWindow])
-
- return [NSColor colorWithCalibratedRed:0.7 green:0.75 blue:0.8 alpha:1.0];
- else return [NSColor colorWithCalibratedRed:0.8 green:0.8 blue:0.8 alpha:1.0];
-}
-
-@end
diff --git a/src/uimacnew/TrevorsUnison.icns b/src/uimacnew/TrevorsUnison.icns
deleted file mode 100644
index e1fa6f8..0000000
--- a/src/uimacnew/TrevorsUnison.icns
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/Unison.icns b/src/uimacnew/Unison.icns
deleted file mode 100644
index b7a4e60..0000000
--- a/src/uimacnew/Unison.icns
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/UnisonToolbar.h b/src/uimacnew/UnisonToolbar.h
deleted file mode 100644
index ba67d6b..0000000
--- a/src/uimacnew/UnisonToolbar.h
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// UnisonToolbar.h
-//
-// Extended NSToolbar with several views
-//
-// Created by Ben Willmore on Sun March 12 2006.
-// Copyright (c) 2006, licensed under GNU GPL.
-//
-
-#import <AppKit/AppKit.h>
-
-@class ReconTableView, MyController;
-
-@interface UnisonToolbar : NSToolbar
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1060)
- <NSToolbarDelegate>
-#endif
-{
- ReconTableView* tableView;
- MyController* myController;
- NSString* currentView;
- NSView* tableModeView;
-}
-
-- initWithIdentifier:(NSString *) identifier :(MyController *) aController :(ReconTableView *) aTableView;
-- (NSToolbarItem *) toolbar: (NSToolbar *)toolbar itemForItemIdentifier: (NSString *) itemIdent willBeInsertedIntoToolbar:(BOOL) willBeInserted;
-- (NSArray *) itemIdentifiersForView: (NSString *) whichView;
-- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar;
-- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar;
-- (void) setView: (NSString *) whichView;
-- (void)takeTableModeView:(NSView *)view;
-
-@end
diff --git a/src/uimacnew/UnisonToolbar.m b/src/uimacnew/UnisonToolbar.m
deleted file mode 100644
index ab6ee91..0000000
--- a/src/uimacnew/UnisonToolbar.m
+++ /dev/null
@@ -1,215 +0,0 @@
-//
-// UnisonToolbar.h
-//
-// Extended NSToolbar with several views
-//
-// Created by Ben Willmore on Sun March 12 2006.
-// Copyright (c) 2006, licensed under GNU GPL.
-//
-
-#import "UnisonToolbar.h"
-#import "MyController.h"
-
-static NSString* QuitItemIdentifier = @"Quit";
-static NSString* OpenItemIdentifier = @"Open";
-static NSString* NewItemIdentifier = @"New";
-static NSString* GoItemIdentifier = @"Go";
-static NSString* CancelItemIdentifier = @"Cancel";
-static NSString* SaveItemIdentifier = @"Save";
-static NSString* RestartItemIdentifier = @"Restart";
-static NSString* RescanItemIdentifier = @"Rescan";
-static NSString* RToLItemIdentifier = @"RToL";
-static NSString* MergeItemIdentifier = @"Merge";
-static NSString* LToRItemIdentifier = @"LToR";
-static NSString* SkipItemIdentifier = @"Skip";
-static NSString* DiffItemIdentifier = @"Diff";
-static NSString* TableModeIdentifier = @"TableMode";
-
-@implementation UnisonToolbar
-
-- initWithIdentifier:(NSString *) identifier :(MyController *) aController :(ReconTableView *) aTableView {
-
- if ((self = [super initWithIdentifier: identifier])) {
- [self setAllowsUserCustomization: NO];
- [self setAutosavesConfiguration: NO];
- [self setDelegate: self];
- myController = aController;
- tableView = aTableView;
- currentView = @"";
- }
-
- return self;
-}
-
-- (void)takeTableModeView:(NSView *)view
-{
- tableModeView = [view retain];
- [view setHidden:YES];
-}
-
-- (NSToolbarItem *) toolbar: (NSToolbar *)toolbar itemForItemIdentifier: (NSString *) itemIdent willBeInsertedIntoToolbar:(BOOL) willBeInserted {
-
- NSToolbarItem *toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdent] autorelease];
- if ([itemIdent isEqual: QuitItemIdentifier]) {
- [toolbarItem setLabel: @"Quit"];
- [toolbarItem setImage: [NSImage imageNamed: @"quit.tif"]];
- [toolbarItem setTarget:NSApp];
- [toolbarItem setAction:@selector(terminate:)];
- }
- else if ([itemIdent isEqual: OpenItemIdentifier]) {
- [toolbarItem setLabel: @"Open"];
- [toolbarItem setImage: [NSImage imageNamed: @"go.tif"]];
- [toolbarItem setTarget:myController];
- [toolbarItem setAction:@selector(openButton:)];
- }
- else if ([itemIdent isEqual: NewItemIdentifier]) {
- [toolbarItem setLabel: @"New"];
- [toolbarItem setImage: [NSImage imageNamed: @"add.tif"]];
- [toolbarItem setTarget:myController];
- [toolbarItem setAction:@selector(createButton:)];
- }
- else if ([itemIdent isEqual: CancelItemIdentifier]) {
- [toolbarItem setLabel: @"Cancel"];
- [toolbarItem setImage: [NSImage imageNamed: @"restart.tif"]];
- [toolbarItem setTarget:myController];
- [toolbarItem setAction:@selector(chooseProfiles)];
- }
- else if ([itemIdent isEqual: SaveItemIdentifier]) {
- [toolbarItem setLabel: @"Save"];
- [toolbarItem setImage: [NSImage imageNamed: @"save.tif"]];
- [toolbarItem setTarget:myController];
- [toolbarItem setAction:@selector(saveProfileButton:)];
- }
- else if ([itemIdent isEqual: GoItemIdentifier]) {
- [toolbarItem setLabel: @"Go"];
- [toolbarItem setImage: [NSImage imageNamed: @"go.tif"]];
- [toolbarItem setTarget:myController];
- [toolbarItem setAction:@selector(syncButton:)];
- }
- else if ([itemIdent isEqual: RestartItemIdentifier]) {
- [toolbarItem setLabel: @"Restart"];
- [toolbarItem setImage: [NSImage imageNamed: @"restart.tif"]];
- [toolbarItem setTarget:myController];
- [toolbarItem setAction:@selector(restartButton:)];
- }
- else if ([itemIdent isEqual: RescanItemIdentifier]) {
- [toolbarItem setLabel: @"Rescan"];
- [toolbarItem setImage: [NSImage imageNamed: @"rescan.tif"]];
- [toolbarItem setTarget:myController];
- [toolbarItem setAction:@selector(rescan:)];
- }
- else if ([itemIdent isEqual: RToLItemIdentifier]) {
- [toolbarItem setLabel: @"Right to left"];
- [toolbarItem setImage: [NSImage imageNamed: @"left.tif"]];
- [toolbarItem setTarget:tableView];
- [toolbarItem setAction:@selector(copyRL:)];
- }
- else if ([itemIdent isEqual: MergeItemIdentifier]) {
- [toolbarItem setLabel: @"Merge"];
- [toolbarItem setImage: [NSImage imageNamed: @"merge.tif"]];
- [toolbarItem setTarget:tableView];
- [toolbarItem setAction:@selector(merge:)];
- }
- else if ([itemIdent isEqual: LToRItemIdentifier]) {
- [toolbarItem setLabel: @"Left to right"];
- [toolbarItem setImage: [NSImage imageNamed: @"right.tif"]];
- [toolbarItem setTarget:tableView];
- [toolbarItem setAction:@selector(copyLR:)];
- }
- else if ([itemIdent isEqual: SkipItemIdentifier]) {
- [toolbarItem setLabel: @"Skip"];
- [toolbarItem setImage: [NSImage imageNamed: @"skip.tif"]];
- [toolbarItem setTarget:tableView];
- [toolbarItem setAction:@selector(leaveAlone:)];
- }
- else if ([itemIdent isEqual: DiffItemIdentifier]) {
- [toolbarItem setLabel: @"Diff"];
- [toolbarItem setImage: [NSImage imageNamed: @"diff.tif"]];
- [toolbarItem setTarget:tableView];
- [toolbarItem setAction:@selector(showDiff:)];
- }
- else if ([itemIdent isEqual: TableModeIdentifier]) {
- [toolbarItem setLabel:@"Layout"];
- [toolbarItem setToolTip:@"Switch table nesting"];
- [tableModeView setHidden:NO];
- [toolbarItem setView:tableModeView];
- [toolbarItem setMinSize:NSMakeSize(NSWidth([tableModeView frame]),NSHeight([tableModeView frame])+10)];
- [toolbarItem setMaxSize:NSMakeSize(NSWidth([tableModeView frame]),NSHeight([tableModeView frame])+10)];
- }
-
- return toolbarItem;
-}
-
-- (NSArray *) itemIdentifiersForView: (NSString *) whichView {
- if ([whichView isEqual: @"chooseProfileView"]) {
- return [NSArray arrayWithObjects: QuitItemIdentifier, NewItemIdentifier, OpenItemIdentifier, nil];
- }
- else if ([whichView isEqual: @"preferencesView"]) {
- return [NSArray arrayWithObjects: QuitItemIdentifier, SaveItemIdentifier, CancelItemIdentifier, nil];
- }
- else if ([whichView isEqual: @"ConnectingView"]) {
- return [NSArray arrayWithObjects: QuitItemIdentifier, nil];
- }
- else if ([whichView isEqual: @"updatesView"]) {
- return [NSArray arrayWithObjects: QuitItemIdentifier,
- RestartItemIdentifier,
- NSToolbarSeparatorItemIdentifier,
- GoItemIdentifier,
- RescanItemIdentifier,
- NSToolbarSeparatorItemIdentifier,
- RToLItemIdentifier, MergeItemIdentifier, LToRItemIdentifier,
- SkipItemIdentifier, NSToolbarSeparatorItemIdentifier,
- DiffItemIdentifier,
- TableModeIdentifier, nil];
- }
- else {
- return [NSArray arrayWithObjects: QuitItemIdentifier, Nil];
- }
-}
-
-- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar {
- return [NSArray arrayWithObjects: QuitItemIdentifier, NewItemIdentifier, OpenItemIdentifier, nil];
-}
-
-- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar {
- return [NSArray arrayWithObjects: QuitItemIdentifier, OpenItemIdentifier, NewItemIdentifier,
- CancelItemIdentifier, SaveItemIdentifier,
- GoItemIdentifier, RestartItemIdentifier, RescanItemIdentifier,
- RToLItemIdentifier, MergeItemIdentifier, LToRItemIdentifier,
- SkipItemIdentifier, DiffItemIdentifier,
- NSToolbarSeparatorItemIdentifier, nil];
-}
-
-- (void) setView: (NSString *) whichView {
- if ([whichView isEqual:currentView]) return;
-
- currentView = whichView;
-
- int i;
- NSArray *identifiers;
- NSString *oldIdentifier;
- NSString *newIdentifier;
-
- identifiers=[self itemIdentifiersForView:whichView];
- for (i=0; i<[identifiers count]; i++) {
- newIdentifier = [identifiers objectAtIndex:i];
- if (i<[[self items] count]) {
- oldIdentifier = [[[self items] objectAtIndex:i] itemIdentifier];
- if ([newIdentifier isEqual: oldIdentifier] ) {
- [[[self items] objectAtIndex:i] setEnabled:YES];
- }
- else {
- [self removeItemAtIndex:i];
- [self insertItemWithItemIdentifier:newIdentifier atIndex:i];
- }
- }
- else {
- [self insertItemWithItemIdentifier:newIdentifier atIndex:i];
- }
- }
- while ([[self items] count] > [identifiers count]) {
- [self removeItemAtIndex:[identifiers count]];
- }
-}
-
-@end
diff --git a/src/uimacnew/cltool.c b/src/uimacnew/cltool.c
deleted file mode 100644
index dac3204..0000000
--- a/src/uimacnew/cltool.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* cltool.c
-
- This is a command-line tool for Mac OS X that looks up the unison
- application, where ever it has been installed, and runs it. This
- is intended to be installed in a standard place (e.g.,
- /usr/bin/unison) to make it easy to invoke unison as a server, or
- to use unison from the command line when it has been installed with
- a GUI.
-
- */
-
-#import <CoreServices/CoreServices.h>
-#import <ApplicationServices/ApplicationServices.h>
-#include <stdio.h>
-
-#define BUFSIZE 1024
-#define EXECPATH "/Contents/MacOS/Unison"
-
-int main(int argc, char **argv) {
-
- /* Look up the application by its bundle identifier, which is given
- in the Info.plist file. This will continue to work even if the
- user changes the name of the application, unlike
- fullPathForApplication. */
-
- FSRef fsref;
- OSStatus status;
- int len;
- char buf[BUFSIZE];
-
- status = LSFindApplicationForInfo(kLSUnknownCreator,CFSTR("edu.upenn.cis.Unison"),NULL,&fsref,NULL);
- if (status) {
- if (status == kLSApplicationNotFoundErr) {
- fprintf(stderr,"Error: can't find the Unison application using the Launch Services database.\n");
- fprintf(stderr,"Try launching Unison from the Finder, and then try this again.\n",status);
- }
- else fprintf(stderr,"Error: can't find Unison application (%ld).\n",status);
- exit(1);
- }
-
- status = FSRefMakePath(&fsref,(UInt8 *)buf,BUFSIZE);
- if (status) {
- fprintf(stderr,"Error: problem building path to Unison application (%ld).\n",status);
- exit(1);
- }
-
- len = strlen(buf);
- if (len + strlen(EXECPATH) + 1 > BUFSIZE) {
- fprintf(stderr,"Error: path to Unison application exceeds internal buffer size (%d).\n",BUFSIZE);
- exit(1);
- }
- strcat(buf,EXECPATH);
-
- /* It's important to pass the absolute path on to the GUI,
- that's how it knows where to find the bundle, e.g., the
- Info.plist file. */
- argv[0] = buf;
-
- // printf("The Unison executable is at %s\n",argv[0]);
- // printf("Running...\n");
-
- execv(argv[0],argv);
-
- /* If we get here the execv has failed; print an error message to stderr */
- perror("unison");
- exit(1);
-}
diff --git a/src/uimacnew/main.m b/src/uimacnew/main.m
deleted file mode 100644
index 668a287..0000000
--- a/src/uimacnew/main.m
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// main.m
-// uimac
-//
-// Created by Trevor Jim on Sun Aug 17 2003.
-// Copyright (c) 2003, see file COPYING for details.
-//
-
-#import <Cocoa/Cocoa.h>
-#import "Bridge.h"
-
-int main(int argc, const char *argv[])
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- int i;
-
- /* When you click-start or use the open command, the program is invoked with
- a command-line arg of the form -psn_XXXXXXXXX. The XXXXXXXX is a "process
- serial number" and it seems to be important for Carbon programs. We need
- to get rid of it if it's there so the ocaml code won't exit. Note, the
- extra arg is not added if the binary is invoked directly from the command
- line without using the open command. */
- if (argc == 2 && strncmp(argv[1],"-psn_",5) == 0) {
- argc--;
- argv[1] = NULL;
- }
-
- [Bridge startup:argv];
-
- /* Check for invocations that don't start up the gui */
- for (i=1; i<argc; i++) {
- if (!strcmp(argv[i],"-doc") ||
- !strcmp(argv[i],"-help") ||
- !strcmp(argv[i],"-version") ||
- !strcmp(argv[i],"-server") ||
- !strcmp(argv[i],"-socket") ||
- !strcmp(argv[i],"-ui")) {
- NSLog(@"Calling nonGuiStartup");
- @try {
- ocamlCall("x", "unisonNonGuiStartup");
- } @catch (NSException *ex) {
- NSLog(@"Uncaught exception: %@", [ex reason]);
- exit(1);
- }
- /* If we get here without exiting first, the non GUI startup detected a
- -ui graphic or command-line profile, and we should in fact start the GUI. */
- }
- }
-
- /* go! */
- [pool release];
- return NSApplicationMain(argc, argv);
-}
diff --git a/src/uimacnew/progressicons/ProgressBarAdvanced.png b/src/uimacnew/progressicons/ProgressBarAdvanced.png
deleted file mode 100644
index 98ae868..0000000
--- a/src/uimacnew/progressicons/ProgressBarAdvanced.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarBlue.png b/src/uimacnew/progressicons/ProgressBarBlue.png
deleted file mode 100644
index b4f4911..0000000
--- a/src/uimacnew/progressicons/ProgressBarBlue.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarEndAdvanced.png b/src/uimacnew/progressicons/ProgressBarEndAdvanced.png
deleted file mode 100644
index b1eeaff..0000000
--- a/src/uimacnew/progressicons/ProgressBarEndAdvanced.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarEndBlue.png b/src/uimacnew/progressicons/ProgressBarEndBlue.png
deleted file mode 100644
index 3621e32..0000000
--- a/src/uimacnew/progressicons/ProgressBarEndBlue.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarEndGray.png b/src/uimacnew/progressicons/ProgressBarEndGray.png
deleted file mode 100644
index 549efc1..0000000
--- a/src/uimacnew/progressicons/ProgressBarEndGray.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarEndGreen.png b/src/uimacnew/progressicons/ProgressBarEndGreen.png
deleted file mode 100644
index 721e258..0000000
--- a/src/uimacnew/progressicons/ProgressBarEndGreen.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarEndWhite.png b/src/uimacnew/progressicons/ProgressBarEndWhite.png
deleted file mode 100644
index 3eb87fb..0000000
--- a/src/uimacnew/progressicons/ProgressBarEndWhite.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarGray.png b/src/uimacnew/progressicons/ProgressBarGray.png
deleted file mode 100644
index af3bc9d..0000000
--- a/src/uimacnew/progressicons/ProgressBarGray.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarGreen.png b/src/uimacnew/progressicons/ProgressBarGreen.png
deleted file mode 100644
index c11fe3a..0000000
--- a/src/uimacnew/progressicons/ProgressBarGreen.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarLightGreen.png b/src/uimacnew/progressicons/ProgressBarLightGreen.png
deleted file mode 100644
index 18a1535..0000000
--- a/src/uimacnew/progressicons/ProgressBarLightGreen.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/progressicons/ProgressBarWhite.png b/src/uimacnew/progressicons/ProgressBarWhite.png
deleted file mode 100644
index ef368ae..0000000
--- a/src/uimacnew/progressicons/ProgressBarWhite.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/Change_Absent.png b/src/uimacnew/tableicons/Change_Absent.png
deleted file mode 100644
index 62c827f..0000000
--- a/src/uimacnew/tableicons/Change_Absent.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/Change_Created.png b/src/uimacnew/tableicons/Change_Created.png
deleted file mode 100644
index da60736..0000000
--- a/src/uimacnew/tableicons/Change_Created.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/Change_Deleted.png b/src/uimacnew/tableicons/Change_Deleted.png
deleted file mode 100644
index 7a19637..0000000
--- a/src/uimacnew/tableicons/Change_Deleted.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/Change_Modified.png b/src/uimacnew/tableicons/Change_Modified.png
deleted file mode 100644
index 3ae7761..0000000
--- a/src/uimacnew/tableicons/Change_Modified.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/Change_PropsChanged.png b/src/uimacnew/tableicons/Change_PropsChanged.png
deleted file mode 100644
index 721f78e..0000000
--- a/src/uimacnew/tableicons/Change_PropsChanged.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/Change_Unmodified.png b/src/uimacnew/tableicons/Change_Unmodified.png
deleted file mode 100644
index 4090504..0000000
--- a/src/uimacnew/tableicons/Change_Unmodified.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/Outline-Deep.png b/src/uimacnew/tableicons/Outline-Deep.png
deleted file mode 100644
index 74ecc68..0000000
--- a/src/uimacnew/tableicons/Outline-Deep.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/Outline-Flat.png b/src/uimacnew/tableicons/Outline-Flat.png
deleted file mode 100644
index b404acc..0000000
--- a/src/uimacnew/tableicons/Outline-Flat.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/Outline-Flattened.png b/src/uimacnew/tableicons/Outline-Flattened.png
deleted file mode 100644
index 55e9d37..0000000
--- a/src/uimacnew/tableicons/Outline-Flattened.png
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/table-conflict.tif b/src/uimacnew/tableicons/table-conflict.tif
deleted file mode 100644
index b84cd1b..0000000
--- a/src/uimacnew/tableicons/table-conflict.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/table-error.tif b/src/uimacnew/tableicons/table-error.tif
deleted file mode 100644
index 72ebafb..0000000
--- a/src/uimacnew/tableicons/table-error.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/table-left-blue.tif b/src/uimacnew/tableicons/table-left-blue.tif
deleted file mode 100644
index 9a2ad1b..0000000
--- a/src/uimacnew/tableicons/table-left-blue.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/table-left-green.tif b/src/uimacnew/tableicons/table-left-green.tif
deleted file mode 100644
index e5f2909..0000000
--- a/src/uimacnew/tableicons/table-left-green.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/table-merge.tif b/src/uimacnew/tableicons/table-merge.tif
deleted file mode 100644
index beb33ff..0000000
--- a/src/uimacnew/tableicons/table-merge.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/table-mixed.tif b/src/uimacnew/tableicons/table-mixed.tif
deleted file mode 100644
index 0fb64e6..0000000
--- a/src/uimacnew/tableicons/table-mixed.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/table-right-blue.tif b/src/uimacnew/tableicons/table-right-blue.tif
deleted file mode 100644
index 6cc7f30..0000000
--- a/src/uimacnew/tableicons/table-right-blue.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/table-right-green.tif b/src/uimacnew/tableicons/table-right-green.tif
deleted file mode 100644
index 6a8a420..0000000
--- a/src/uimacnew/tableicons/table-right-green.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/tableicons/table-skip.tif b/src/uimacnew/tableicons/table-skip.tif
deleted file mode 100644
index 4cc8b8c..0000000
--- a/src/uimacnew/tableicons/table-skip.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/add.tif b/src/uimacnew/toolbar/add.tif
deleted file mode 100644
index 7d1e413..0000000
--- a/src/uimacnew/toolbar/add.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/diff.tif b/src/uimacnew/toolbar/diff.tif
deleted file mode 100644
index c424403..0000000
--- a/src/uimacnew/toolbar/diff.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/go.tif b/src/uimacnew/toolbar/go.tif
deleted file mode 100644
index ed368e3..0000000
--- a/src/uimacnew/toolbar/go.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/left.tif b/src/uimacnew/toolbar/left.tif
deleted file mode 100644
index 0633aff..0000000
--- a/src/uimacnew/toolbar/left.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/merge.tif b/src/uimacnew/toolbar/merge.tif
deleted file mode 100644
index d41dc06..0000000
--- a/src/uimacnew/toolbar/merge.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/quit.tif b/src/uimacnew/toolbar/quit.tif
deleted file mode 100644
index f2911c2..0000000
--- a/src/uimacnew/toolbar/quit.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/rescan.tif b/src/uimacnew/toolbar/rescan.tif
deleted file mode 100644
index 5e9ac45..0000000
--- a/src/uimacnew/toolbar/rescan.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/restart.tif b/src/uimacnew/toolbar/restart.tif
deleted file mode 100644
index fe58a07..0000000
--- a/src/uimacnew/toolbar/restart.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/right.tif b/src/uimacnew/toolbar/right.tif
deleted file mode 100644
index 1391f49..0000000
--- a/src/uimacnew/toolbar/right.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/save.tif b/src/uimacnew/toolbar/save.tif
deleted file mode 100644
index bc1a468..0000000
--- a/src/uimacnew/toolbar/save.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/toolbar/skip.tif b/src/uimacnew/toolbar/skip.tif
deleted file mode 100644
index 7ca1bb9..0000000
--- a/src/uimacnew/toolbar/skip.tif
+++ /dev/null
Binary files differ
diff --git a/src/uimacnew/uimacnew.xcodeproj/project.pbxproj b/src/uimacnew/uimacnew.xcodeproj/project.pbxproj
deleted file mode 100644
index 1a75f2e..0000000
--- a/src/uimacnew/uimacnew.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,746 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXAggregateTarget section */
- 2A124E780DE1C48400524237 /* Create ExternalSettings */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = 2A124E7C0DE1C4A200524237 /* Build configuration list for PBXAggregateTarget "Create ExternalSettings" */;
- buildPhases = (
- 2A124E7E0DE1C4BE00524237 /* Run Script (version, ocaml lib dir) */,
- );
- dependencies = (
- );
- name = "Create ExternalSettings";
- productName = "Create ExternalSettings";
- };
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
- 2A3C3F3309922A8000E404E9 /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 2A3C3F3209922A8000E404E9 /* Growl.framework */; };
- 2A3C3F7D09922D4900E404E9 /* NotificationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A3C3F7B09922D4900E404E9 /* NotificationController.m */; };
- 2A3C3FAE0992323F00E404E9 /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A3C3F3209922A8000E404E9 /* Growl.framework */; };
- 2E282CC80D9AE2B000439D01 /* unison-blob.o in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E282CC70D9AE2B000439D01 /* unison-blob.o */; };
- 44042CB60BE4FC9B00A6BBB2 /* ProgressCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 44042CB40BE4FC9B00A6BBB2 /* ProgressCell.m */; };
- 44042D1B0BE52AED00A6BBB2 /* ProgressBarAdvanced.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D100BE52AED00A6BBB2 /* ProgressBarAdvanced.png */; };
- 44042D1C0BE52AEE00A6BBB2 /* ProgressBarBlue.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D110BE52AED00A6BBB2 /* ProgressBarBlue.png */; };
- 44042D1D0BE52AEE00A6BBB2 /* ProgressBarEndAdvanced.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D120BE52AED00A6BBB2 /* ProgressBarEndAdvanced.png */; };
- 44042D1E0BE52AEE00A6BBB2 /* ProgressBarEndBlue.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D130BE52AED00A6BBB2 /* ProgressBarEndBlue.png */; };
- 44042D1F0BE52AEE00A6BBB2 /* ProgressBarEndGray.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D140BE52AED00A6BBB2 /* ProgressBarEndGray.png */; };
- 44042D200BE52AEE00A6BBB2 /* ProgressBarEndGreen.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D150BE52AED00A6BBB2 /* ProgressBarEndGreen.png */; };
- 44042D210BE52AEE00A6BBB2 /* ProgressBarEndWhite.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D160BE52AED00A6BBB2 /* ProgressBarEndWhite.png */; };
- 44042D220BE52AEE00A6BBB2 /* ProgressBarGray.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D170BE52AED00A6BBB2 /* ProgressBarGray.png */; };
- 44042D230BE52AEE00A6BBB2 /* ProgressBarGreen.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D180BE52AED00A6BBB2 /* ProgressBarGreen.png */; };
- 44042D240BE52AEE00A6BBB2 /* ProgressBarLightGreen.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D190BE52AED00A6BBB2 /* ProgressBarLightGreen.png */; };
- 44042D250BE52AEE00A6BBB2 /* ProgressBarWhite.png in Resources */ = {isa = PBXBuildFile; fileRef = 44042D1A0BE52AED00A6BBB2 /* ProgressBarWhite.png */; };
- 440EEAF30C03EC3D00ACAAB0 /* Change_Created.png in Resources */ = {isa = PBXBuildFile; fileRef = 440EEAF20C03EC3D00ACAAB0 /* Change_Created.png */; };
- 440EEAF90C03F0B800ACAAB0 /* Change_Deleted.png in Resources */ = {isa = PBXBuildFile; fileRef = 440EEAF60C03F0B800ACAAB0 /* Change_Deleted.png */; };
- 440EEAFA0C03F0B800ACAAB0 /* Change_Modified.png in Resources */ = {isa = PBXBuildFile; fileRef = 440EEAF70C03F0B800ACAAB0 /* Change_Modified.png */; };
- 440EEAFB0C03F0B800ACAAB0 /* Change_PropsChanged.png in Resources */ = {isa = PBXBuildFile; fileRef = 440EEAF80C03F0B800ACAAB0 /* Change_PropsChanged.png */; };
- 445A291B0BFA5B3300E4E641 /* Outline-Deep.png in Resources */ = {isa = PBXBuildFile; fileRef = 445A291A0BFA5B3300E4E641 /* Outline-Deep.png */; };
- 445A29270BFA5C1200E4E641 /* Outline-Flat.png in Resources */ = {isa = PBXBuildFile; fileRef = 445A29260BFA5C1200E4E641 /* Outline-Flat.png */; };
- 445A29290BFA5C1B00E4E641 /* Outline-Flattened.png in Resources */ = {isa = PBXBuildFile; fileRef = 445A29280BFA5C1B00E4E641 /* Outline-Flattened.png */; };
- 445A2A5E0BFAB6C300E4E641 /* ImageAndTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 445A2A5D0BFAB6C300E4E641 /* ImageAndTextCell.m */; };
- 449F03E10BE00DE9003F15C8 /* Bridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 449F03DF0BE00DE9003F15C8 /* Bridge.m */; };
- 44A794A10BE16C380069680C /* ExceptionHandling.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44A794A00BE16C380069680C /* ExceptionHandling.framework */; };
- 44A797F40BE3F9B70069680C /* table-mixed.tif in Resources */ = {isa = PBXBuildFile; fileRef = 44A797F10BE3F9B70069680C /* table-mixed.tif */; };
- 44F472B10C0DB735006428EF /* Change_Absent.png in Resources */ = {isa = PBXBuildFile; fileRef = 44F472AF0C0DB735006428EF /* Change_Absent.png */; };
- 44F472B20C0DB735006428EF /* Change_Unmodified.png in Resources */ = {isa = PBXBuildFile; fileRef = 44F472B00C0DB735006428EF /* Change_Unmodified.png */; };
- 69C625E60664EC3300B3C46A /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
- 69C625E70664EC3300B3C46A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
- 69C625E80664EC3300B3C46A /* Unison.icns in Resources */ = {isa = PBXBuildFile; fileRef = 69C625CA0664E94E00B3C46A /* Unison.icns */; };
- 69C625EA0664EC3300B3C46A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
- 69C625EB0664EC3300B3C46A /* MyController.m in Sources */ = {isa = PBXBuildFile; fileRef = 69660DC704F08CC100CF23A4 /* MyController.m */; };
- 69C625EC0664EC3300B3C46A /* ProfileController.m in Sources */ = {isa = PBXBuildFile; fileRef = 690F564504F11EC300CF23A4 /* ProfileController.m */; };
- 69C625ED0664EC3300B3C46A /* ReconItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 69D3C6F904F1CC3700CF23A4 /* ReconItem.m */; };
- 69C625EE0664EC3300B3C46A /* ReconTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 69BA7DA904FD695200CF23A4 /* ReconTableView.m */; };
- 69C625EF0664EC3300B3C46A /* PreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 697985CE050CFA2D00CF23A4 /* PreferencesController.m */; };
- 69C625F00664EC3300B3C46A /* ProfileTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 691CE181051BB44A00CF23A4 /* ProfileTableView.m */; };
- 69C625F20664EC3300B3C46A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
- 69E407BA07EB95AA00D37AA1 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69E407B907EB95AA00D37AA1 /* Security.framework */; };
- B518071C09D6652100B1B21F /* add.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071209D6652100B1B21F /* add.tif */; };
- B518071D09D6652100B1B21F /* diff.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071309D6652100B1B21F /* diff.tif */; };
- B518071E09D6652100B1B21F /* go.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071409D6652100B1B21F /* go.tif */; };
- B518071F09D6652100B1B21F /* left.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071509D6652100B1B21F /* left.tif */; };
- B518072009D6652100B1B21F /* merge.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071609D6652100B1B21F /* merge.tif */; };
- B518072109D6652100B1B21F /* quit.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071709D6652100B1B21F /* quit.tif */; };
- B518072209D6652100B1B21F /* restart.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071809D6652100B1B21F /* restart.tif */; };
- B518072309D6652100B1B21F /* right.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071909D6652100B1B21F /* right.tif */; };
- B518072409D6652100B1B21F /* save.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071A09D6652100B1B21F /* save.tif */; };
- B518072509D6652100B1B21F /* skip.tif in Resources */ = {isa = PBXBuildFile; fileRef = B518071B09D6652100B1B21F /* skip.tif */; };
- B554004109C4E5AA0089E1C3 /* UnisonToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = B554004009C4E5AA0089E1C3 /* UnisonToolbar.m */; };
- B5B44C1909DF61A4000DC7AF /* table-conflict.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5B44C1109DF61A4000DC7AF /* table-conflict.tif */; };
- B5B44C1A09DF61A4000DC7AF /* table-error.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5B44C1209DF61A4000DC7AF /* table-error.tif */; };
- B5B44C1B09DF61A4000DC7AF /* table-left-blue.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5B44C1309DF61A4000DC7AF /* table-left-blue.tif */; };
- B5B44C1C09DF61A4000DC7AF /* table-left-green.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5B44C1409DF61A4000DC7AF /* table-left-green.tif */; };
- B5B44C1D09DF61A4000DC7AF /* table-merge.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5B44C1509DF61A4000DC7AF /* table-merge.tif */; };
- B5B44C1E09DF61A4000DC7AF /* table-right-blue.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5B44C1609DF61A4000DC7AF /* table-right-blue.tif */; };
- B5B44C1F09DF61A4000DC7AF /* table-right-green.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5B44C1709DF61A4000DC7AF /* table-right-green.tif */; };
- B5B44C2009DF61A4000DC7AF /* table-skip.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5B44C1809DF61A4000DC7AF /* table-skip.tif */; };
- B5E03B3909E38B9E0058C7B9 /* rescan.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5E03B3809E38B9E0058C7B9 /* rescan.tif */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 2A124E7F0DE1C4E400524237 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 2A124E780DE1C48400524237;
- remoteInfo = "Create ExternalSettings";
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- 2A3C3F3709922AA600E404E9 /* CopyFiles */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = "";
- dstSubfolderSpec = 10;
- files = (
- 2A3C3F3309922A8000E404E9 /* Growl.framework in CopyFiles */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
- 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- 29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = "<group>"; };
- 2A3C3F3209922A8000E404E9 /* Growl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Growl.framework; sourceTree = "<group>"; };
- 2A3C3F7A09922D4900E404E9 /* NotificationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotificationController.h; sourceTree = "<group>"; };
- 2A3C3F7B09922D4900E404E9 /* NotificationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotificationController.m; sourceTree = "<group>"; };
- 2E282CC70D9AE2B000439D01 /* unison-blob.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; name = "unison-blob.o"; path = "../unison-blob.o"; sourceTree = SOURCE_ROOT; };
- 2E282CCC0D9AE2E800439D01 /* ExternalSettings.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ExternalSettings.xcconfig; sourceTree = "<group>"; };
- 44042CB30BE4FC9B00A6BBB2 /* ProgressCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ProgressCell.h; sourceTree = "<group>"; };
- 44042CB40BE4FC9B00A6BBB2 /* ProgressCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ProgressCell.m; sourceTree = "<group>"; };
- 44042D100BE52AED00A6BBB2 /* ProgressBarAdvanced.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarAdvanced.png; path = progressicons/ProgressBarAdvanced.png; sourceTree = "<group>"; };
- 44042D110BE52AED00A6BBB2 /* ProgressBarBlue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarBlue.png; path = progressicons/ProgressBarBlue.png; sourceTree = "<group>"; };
- 44042D120BE52AED00A6BBB2 /* ProgressBarEndAdvanced.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndAdvanced.png; path = progressicons/ProgressBarEndAdvanced.png; sourceTree = "<group>"; };
- 44042D130BE52AED00A6BBB2 /* ProgressBarEndBlue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndBlue.png; path = progressicons/ProgressBarEndBlue.png; sourceTree = "<group>"; };
- 44042D140BE52AED00A6BBB2 /* ProgressBarEndGray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndGray.png; path = progressicons/ProgressBarEndGray.png; sourceTree = "<group>"; };
- 44042D150BE52AED00A6BBB2 /* ProgressBarEndGreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndGreen.png; path = progressicons/ProgressBarEndGreen.png; sourceTree = "<group>"; };
- 44042D160BE52AED00A6BBB2 /* ProgressBarEndWhite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndWhite.png; path = progressicons/ProgressBarEndWhite.png; sourceTree = "<group>"; };
- 44042D170BE52AED00A6BBB2 /* ProgressBarGray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarGray.png; path = progressicons/ProgressBarGray.png; sourceTree = "<group>"; };
- 44042D180BE52AED00A6BBB2 /* ProgressBarGreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarGreen.png; path = progressicons/ProgressBarGreen.png; sourceTree = "<group>"; };
- 44042D190BE52AED00A6BBB2 /* ProgressBarLightGreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarLightGreen.png; path = progressicons/ProgressBarLightGreen.png; sourceTree = "<group>"; };
- 44042D1A0BE52AED00A6BBB2 /* ProgressBarWhite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarWhite.png; path = progressicons/ProgressBarWhite.png; sourceTree = "<group>"; };
- 440EEAF20C03EC3D00ACAAB0 /* Change_Created.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Change_Created.png; sourceTree = "<group>"; };
- 440EEAF60C03F0B800ACAAB0 /* Change_Deleted.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Change_Deleted.png; sourceTree = "<group>"; };
- 440EEAF70C03F0B800ACAAB0 /* Change_Modified.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Change_Modified.png; sourceTree = "<group>"; };
- 440EEAF80C03F0B800ACAAB0 /* Change_PropsChanged.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Change_PropsChanged.png; sourceTree = "<group>"; };
- 445A291A0BFA5B3300E4E641 /* Outline-Deep.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Outline-Deep.png"; sourceTree = "<group>"; };
- 445A29260BFA5C1200E4E641 /* Outline-Flat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Outline-Flat.png"; sourceTree = "<group>"; };
- 445A29280BFA5C1B00E4E641 /* Outline-Flattened.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Outline-Flattened.png"; sourceTree = "<group>"; };
- 445A2A5B0BFAB6A100E4E641 /* ImageAndTextCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ImageAndTextCell.h; sourceTree = "<group>"; };
- 445A2A5D0BFAB6C300E4E641 /* ImageAndTextCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ImageAndTextCell.m; sourceTree = "<group>"; };
- 449F03DE0BE00DE9003F15C8 /* Bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bridge.h; sourceTree = "<group>"; };
- 449F03DF0BE00DE9003F15C8 /* Bridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Bridge.m; sourceTree = "<group>"; };
- 44A794A00BE16C380069680C /* ExceptionHandling.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ExceptionHandling.framework; path = /System/Library/Frameworks/ExceptionHandling.framework; sourceTree = "<absolute>"; };
- 44A797F10BE3F9B70069680C /* table-mixed.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-mixed.tif"; sourceTree = "<group>"; };
- 44F472AF0C0DB735006428EF /* Change_Absent.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Change_Absent.png; sourceTree = "<group>"; };
- 44F472B00C0DB735006428EF /* Change_Unmodified.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Change_Unmodified.png; sourceTree = "<group>"; };
- 690F564404F11EC300CF23A4 /* ProfileController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ProfileController.h; sourceTree = "<group>"; };
- 690F564504F11EC300CF23A4 /* ProfileController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ProfileController.m; sourceTree = "<group>"; };
- 691CE180051BB44A00CF23A4 /* ProfileTableView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ProfileTableView.h; sourceTree = "<group>"; };
- 691CE181051BB44A00CF23A4 /* ProfileTableView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ProfileTableView.m; sourceTree = "<group>"; };
- 69660DC604F08CC100CF23A4 /* MyController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MyController.h; sourceTree = "<group>"; };
- 69660DC704F08CC100CF23A4 /* MyController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MyController.m; sourceTree = "<group>"; };
- 697985CD050CFA2D00CF23A4 /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PreferencesController.h; sourceTree = "<group>"; };
- 697985CE050CFA2D00CF23A4 /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PreferencesController.m; sourceTree = "<group>"; };
- 69BA7DA804FD695200CF23A4 /* ReconTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReconTableView.h; sourceTree = "<group>"; };
- 69BA7DA904FD695200CF23A4 /* ReconTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReconTableView.m; sourceTree = "<group>"; };
- 69C625CA0664E94E00B3C46A /* Unison.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Unison.icns; sourceTree = "<group>"; };
- 69C625F40664EC3300B3C46A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- 69C625F50664EC3300B3C46A /* Unison.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Unison.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 69D3C6F904F1CC3700CF23A4 /* ReconItem.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ReconItem.m; sourceTree = "<group>"; };
- 69D3C6FA04F1CC3700CF23A4 /* ReconItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ReconItem.h; sourceTree = "<group>"; };
- 69E407B907EB95AA00D37AA1 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
- B518071209D6652100B1B21F /* add.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = add.tif; sourceTree = "<group>"; };
- B518071309D6652100B1B21F /* diff.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = diff.tif; sourceTree = "<group>"; };
- B518071409D6652100B1B21F /* go.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = go.tif; sourceTree = "<group>"; };
- B518071509D6652100B1B21F /* left.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = left.tif; sourceTree = "<group>"; };
- B518071609D6652100B1B21F /* merge.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = merge.tif; sourceTree = "<group>"; };
- B518071709D6652100B1B21F /* quit.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = quit.tif; sourceTree = "<group>"; };
- B518071809D6652100B1B21F /* restart.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = restart.tif; sourceTree = "<group>"; };
- B518071909D6652100B1B21F /* right.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = right.tif; sourceTree = "<group>"; };
- B518071A09D6652100B1B21F /* save.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = save.tif; sourceTree = "<group>"; };
- B518071B09D6652100B1B21F /* skip.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = skip.tif; sourceTree = "<group>"; };
- B554003E09C4E5A00089E1C3 /* UnisonToolbar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = UnisonToolbar.h; sourceTree = "<group>"; };
- B554004009C4E5AA0089E1C3 /* UnisonToolbar.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = UnisonToolbar.m; sourceTree = "<group>"; };
- B5B44C1109DF61A4000DC7AF /* table-conflict.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-conflict.tif"; sourceTree = "<group>"; };
- B5B44C1209DF61A4000DC7AF /* table-error.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-error.tif"; sourceTree = "<group>"; };
- B5B44C1309DF61A4000DC7AF /* table-left-blue.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-left-blue.tif"; sourceTree = "<group>"; };
- B5B44C1409DF61A4000DC7AF /* table-left-green.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-left-green.tif"; sourceTree = "<group>"; };
- B5B44C1509DF61A4000DC7AF /* table-merge.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-merge.tif"; sourceTree = "<group>"; };
- B5B44C1609DF61A4000DC7AF /* table-right-blue.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-right-blue.tif"; sourceTree = "<group>"; };
- B5B44C1709DF61A4000DC7AF /* table-right-green.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-right-green.tif"; sourceTree = "<group>"; };
- B5B44C1809DF61A4000DC7AF /* table-skip.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-skip.tif"; sourceTree = "<group>"; };
- B5E03B3809E38B9E0058C7B9 /* rescan.tif */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = rescan.tif; path = toolbar/rescan.tif; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 69C625F10664EC3300B3C46A /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 69C625F20664EC3300B3C46A /* Cocoa.framework in Frameworks */,
- 69E407BA07EB95AA00D37AA1 /* Security.framework in Frameworks */,
- 2A3C3FAE0992323F00E404E9 /* Growl.framework in Frameworks */,
- 44A794A10BE16C380069680C /* ExceptionHandling.framework in Frameworks */,
- 2E282CC80D9AE2B000439D01 /* unison-blob.o in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 19C28FACFE9D520D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 69C625F50664EC3300B3C46A /* Unison.app */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 29B97314FDCFA39411CA2CEA /* uimac */ = {
- isa = PBXGroup;
- children = (
- B5E03B3809E38B9E0058C7B9 /* rescan.tif */,
- 44042D0F0BE52AD700A6BBB2 /* progressicons */,
- B5B44C1009DF61A4000DC7AF /* tableicons */,
- B518071109D6652000B1B21F /* toolbar */,
- 44A795C90BE2B91B0069680C /* Classes */,
- 29B97315FDCFA39411CA2CEA /* Other Sources */,
- 29B97317FDCFA39411CA2CEA /* Resources */,
- 29B97323FDCFA39411CA2CEA /* Frameworks */,
- 19C28FACFE9D520D11CA2CBB /* Products */,
- 69C625F40664EC3300B3C46A /* Info.plist */,
- 2E282CCC0D9AE2E800439D01 /* ExternalSettings.xcconfig */,
- 2E282CB80D9AE16300439D01 /* External objects */,
- );
- name = uimac;
- sourceTree = "<group>";
- };
- 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
- isa = PBXGroup;
- children = (
- 29B97316FDCFA39411CA2CEA /* main.m */,
- );
- name = "Other Sources";
- sourceTree = "<group>";
- };
- 29B97317FDCFA39411CA2CEA /* Resources */ = {
- isa = PBXGroup;
- children = (
- 29B97318FDCFA39411CA2CEA /* MainMenu.nib */,
- 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
- 69C625CA0664E94E00B3C46A /* Unison.icns */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
- 44A794A00BE16C380069680C /* ExceptionHandling.framework */,
- 2A3C3F3209922A8000E404E9 /* Growl.framework */,
- 69E407B907EB95AA00D37AA1 /* Security.framework */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
- 2E282CB80D9AE16300439D01 /* External objects */ = {
- isa = PBXGroup;
- children = (
- 2E282CC70D9AE2B000439D01 /* unison-blob.o */,
- );
- name = "External objects";
- sourceTree = "<group>";
- };
- 44042D0F0BE52AD700A6BBB2 /* progressicons */ = {
- isa = PBXGroup;
- children = (
- 44042D100BE52AED00A6BBB2 /* ProgressBarAdvanced.png */,
- 44042D110BE52AED00A6BBB2 /* ProgressBarBlue.png */,
- 44042D120BE52AED00A6BBB2 /* ProgressBarEndAdvanced.png */,
- 44042D130BE52AED00A6BBB2 /* ProgressBarEndBlue.png */,
- 44042D140BE52AED00A6BBB2 /* ProgressBarEndGray.png */,
- 44042D150BE52AED00A6BBB2 /* ProgressBarEndGreen.png */,
- 44042D160BE52AED00A6BBB2 /* ProgressBarEndWhite.png */,
- 44042D170BE52AED00A6BBB2 /* ProgressBarGray.png */,
- 44042D180BE52AED00A6BBB2 /* ProgressBarGreen.png */,
- 44042D190BE52AED00A6BBB2 /* ProgressBarLightGreen.png */,
- 44042D1A0BE52AED00A6BBB2 /* ProgressBarWhite.png */,
- );
- name = progressicons;
- sourceTree = "<group>";
- };
- 44A795C90BE2B91B0069680C /* Classes */ = {
- isa = PBXGroup;
- children = (
- 69660DC604F08CC100CF23A4 /* MyController.h */,
- 69660DC704F08CC100CF23A4 /* MyController.m */,
- 2A3C3F7A09922D4900E404E9 /* NotificationController.h */,
- 2A3C3F7B09922D4900E404E9 /* NotificationController.m */,
- 69BA7DA804FD695200CF23A4 /* ReconTableView.h */,
- 69BA7DA904FD695200CF23A4 /* ReconTableView.m */,
- 69D3C6FA04F1CC3700CF23A4 /* ReconItem.h */,
- 69D3C6F904F1CC3700CF23A4 /* ReconItem.m */,
- 445A2A5B0BFAB6A100E4E641 /* ImageAndTextCell.h */,
- 445A2A5D0BFAB6C300E4E641 /* ImageAndTextCell.m */,
- 44042CB30BE4FC9B00A6BBB2 /* ProgressCell.h */,
- 44042CB40BE4FC9B00A6BBB2 /* ProgressCell.m */,
- 690F564404F11EC300CF23A4 /* ProfileController.h */,
- 690F564504F11EC300CF23A4 /* ProfileController.m */,
- 697985CD050CFA2D00CF23A4 /* PreferencesController.h */,
- 697985CE050CFA2D00CF23A4 /* PreferencesController.m */,
- 691CE180051BB44A00CF23A4 /* ProfileTableView.h */,
- 691CE181051BB44A00CF23A4 /* ProfileTableView.m */,
- B554003E09C4E5A00089E1C3 /* UnisonToolbar.h */,
- B554004009C4E5AA0089E1C3 /* UnisonToolbar.m */,
- 449F03DE0BE00DE9003F15C8 /* Bridge.h */,
- 449F03DF0BE00DE9003F15C8 /* Bridge.m */,
- );
- name = Classes;
- sourceTree = "<group>";
- };
- B518071109D6652000B1B21F /* toolbar */ = {
- isa = PBXGroup;
- children = (
- B518071209D6652100B1B21F /* add.tif */,
- B518071309D6652100B1B21F /* diff.tif */,
- B518071409D6652100B1B21F /* go.tif */,
- B518071509D6652100B1B21F /* left.tif */,
- B518071609D6652100B1B21F /* merge.tif */,
- B518071709D6652100B1B21F /* quit.tif */,
- B518071809D6652100B1B21F /* restart.tif */,
- B518071909D6652100B1B21F /* right.tif */,
- B518071A09D6652100B1B21F /* save.tif */,
- B518071B09D6652100B1B21F /* skip.tif */,
- );
- path = toolbar;
- sourceTree = "<group>";
- };
- B5B44C1009DF61A4000DC7AF /* tableicons */ = {
- isa = PBXGroup;
- children = (
- 44F472AF0C0DB735006428EF /* Change_Absent.png */,
- 44F472B00C0DB735006428EF /* Change_Unmodified.png */,
- 440EEAF60C03F0B800ACAAB0 /* Change_Deleted.png */,
- 440EEAF70C03F0B800ACAAB0 /* Change_Modified.png */,
- 440EEAF80C03F0B800ACAAB0 /* Change_PropsChanged.png */,
- 440EEAF20C03EC3D00ACAAB0 /* Change_Created.png */,
- 44A797F10BE3F9B70069680C /* table-mixed.tif */,
- B5B44C1109DF61A4000DC7AF /* table-conflict.tif */,
- B5B44C1209DF61A4000DC7AF /* table-error.tif */,
- B5B44C1309DF61A4000DC7AF /* table-left-blue.tif */,
- B5B44C1409DF61A4000DC7AF /* table-left-green.tif */,
- B5B44C1509DF61A4000DC7AF /* table-merge.tif */,
- B5B44C1609DF61A4000DC7AF /* table-right-blue.tif */,
- B5B44C1709DF61A4000DC7AF /* table-right-green.tif */,
- B5B44C1809DF61A4000DC7AF /* table-skip.tif */,
- 445A291A0BFA5B3300E4E641 /* Outline-Deep.png */,
- 445A29260BFA5C1200E4E641 /* Outline-Flat.png */,
- 445A29280BFA5C1B00E4E641 /* Outline-Flattened.png */,
- );
- path = tableicons;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 69C625DD0664EC3300B3C46A /* uimac */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 2A3C3F280992245300E404E9 /* Build configuration list for PBXNativeTarget "uimac" */;
- buildPhases = (
- 2E282CBA0D9AE17300439D01 /* Run Script (make unison-blob.o) */,
- 69C625E50664EC3300B3C46A /* Resources */,
- 69C625E90664EC3300B3C46A /* Sources */,
- 69C625F10664EC3300B3C46A /* Frameworks */,
- 2A3C3F3709922AA600E404E9 /* CopyFiles */,
- );
- buildRules = (
- );
- dependencies = (
- 2A124E800DE1C4E400524237 /* PBXTargetDependency */,
- );
- name = uimac;
- productInstallPath = "$(HOME)/Applications";
- productName = uimac;
- productReference = 69C625F50664EC3300B3C46A /* Unison.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 29B97313FDCFA39411CA2CEA /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = 2A3C3F2C0992245300E404E9 /* Build configuration list for PBXProject "uimacnew" */;
- compatibilityVersion = "Xcode 2.4";
- hasScannedForEncodings = 1;
- mainGroup = 29B97314FDCFA39411CA2CEA /* uimac */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 69C625DD0664EC3300B3C46A /* uimac */,
- 2A124E780DE1C48400524237 /* Create ExternalSettings */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 69C625E50664EC3300B3C46A /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 69C625E60664EC3300B3C46A /* MainMenu.nib in Resources */,
- 69C625E70664EC3300B3C46A /* InfoPlist.strings in Resources */,
- 69C625E80664EC3300B3C46A /* Unison.icns in Resources */,
- B518071C09D6652100B1B21F /* add.tif in Resources */,
- B518071D09D6652100B1B21F /* diff.tif in Resources */,
- B518071E09D6652100B1B21F /* go.tif in Resources */,
- B518071F09D6652100B1B21F /* left.tif in Resources */,
- B518072009D6652100B1B21F /* merge.tif in Resources */,
- B518072109D6652100B1B21F /* quit.tif in Resources */,
- B518072209D6652100B1B21F /* restart.tif in Resources */,
- B518072309D6652100B1B21F /* right.tif in Resources */,
- B518072409D6652100B1B21F /* save.tif in Resources */,
- B518072509D6652100B1B21F /* skip.tif in Resources */,
- B5B44C1909DF61A4000DC7AF /* table-conflict.tif in Resources */,
- B5B44C1A09DF61A4000DC7AF /* table-error.tif in Resources */,
- B5B44C1B09DF61A4000DC7AF /* table-left-blue.tif in Resources */,
- B5B44C1C09DF61A4000DC7AF /* table-left-green.tif in Resources */,
- B5B44C1D09DF61A4000DC7AF /* table-merge.tif in Resources */,
- B5B44C1E09DF61A4000DC7AF /* table-right-blue.tif in Resources */,
- B5B44C1F09DF61A4000DC7AF /* table-right-green.tif in Resources */,
- B5B44C2009DF61A4000DC7AF /* table-skip.tif in Resources */,
- B5E03B3909E38B9E0058C7B9 /* rescan.tif in Resources */,
- 44A797F40BE3F9B70069680C /* table-mixed.tif in Resources */,
- 44042D1B0BE52AED00A6BBB2 /* ProgressBarAdvanced.png in Resources */,
- 44042D1C0BE52AEE00A6BBB2 /* ProgressBarBlue.png in Resources */,
- 44042D1D0BE52AEE00A6BBB2 /* ProgressBarEndAdvanced.png in Resources */,
- 44042D1E0BE52AEE00A6BBB2 /* ProgressBarEndBlue.png in Resources */,
- 44042D1F0BE52AEE00A6BBB2 /* ProgressBarEndGray.png in Resources */,
- 44042D200BE52AEE00A6BBB2 /* ProgressBarEndGreen.png in Resources */,
- 44042D210BE52AEE00A6BBB2 /* ProgressBarEndWhite.png in Resources */,
- 44042D220BE52AEE00A6BBB2 /* ProgressBarGray.png in Resources */,
- 44042D230BE52AEE00A6BBB2 /* ProgressBarGreen.png in Resources */,
- 44042D240BE52AEE00A6BBB2 /* ProgressBarLightGreen.png in Resources */,
- 44042D250BE52AEE00A6BBB2 /* ProgressBarWhite.png in Resources */,
- 445A291B0BFA5B3300E4E641 /* Outline-Deep.png in Resources */,
- 445A29270BFA5C1200E4E641 /* Outline-Flat.png in Resources */,
- 445A29290BFA5C1B00E4E641 /* Outline-Flattened.png in Resources */,
- 440EEAF30C03EC3D00ACAAB0 /* Change_Created.png in Resources */,
- 440EEAF90C03F0B800ACAAB0 /* Change_Deleted.png in Resources */,
- 440EEAFA0C03F0B800ACAAB0 /* Change_Modified.png in Resources */,
- 440EEAFB0C03F0B800ACAAB0 /* Change_PropsChanged.png in Resources */,
- 44F472B10C0DB735006428EF /* Change_Absent.png in Resources */,
- 44F472B20C0DB735006428EF /* Change_Unmodified.png in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 2A124E7E0DE1C4BE00524237 /* Run Script (version, ocaml lib dir) */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Run Script (version, ocaml lib dir)";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "if [ -x /usr/libexec/path_helper ]; then\n eval `/usr/libexec/path_helper -s`\nfi\nif [ ! -x ${PROJECT_DIR}/../Makefile.ProjectInfo ]; then\n if [ ! -x ${PROJECT_DIR}/../mkProjectInfo ]; then\n cd ${PROJECT_DIR}/..; ocamlc -o mkProjectInfo unix.cma str.cma mkProjectInfo.ml\n fi\n cd ${PROJECT_DIR}/..; ./mkProjectInfo > Makefile.ProjectInfo\nfi\nOCAMLLIBDIR=`ocamlc -v | tail -n -1 | sed -e 's/.* //g' | sed -e 's/\\\\\\/\\\\//g' | tr -d '\\r'`\nsource ${PROJECT_DIR}/../Makefile.ProjectInfo\necho MARKETING_VERSION = $VERSION > ${PROJECT_DIR}/ExternalSettings.xcconfig\necho OCAMLLIBDIR = $OCAMLLIBDIR >> ${PROJECT_DIR}/ExternalSettings.xcconfig";
- };
- 2E282CBA0D9AE17300439D01 /* Run Script (make unison-blob.o) */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Run Script (make unison-blob.o)";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "echo \"Building unison-blob.o...\"\nif [ -x /usr/libexec/path_helper ]; then\n eval `/usr/libexec/path_helper -s`\nfi\ncd ${PROJECT_DIR}/..\nmake unison-blob.o\necho \"done\"";
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 69C625E90664EC3300B3C46A /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 69C625EA0664EC3300B3C46A /* main.m in Sources */,
- 69C625EB0664EC3300B3C46A /* MyController.m in Sources */,
- 69C625EC0664EC3300B3C46A /* ProfileController.m in Sources */,
- 69C625ED0664EC3300B3C46A /* ReconItem.m in Sources */,
- 69C625EE0664EC3300B3C46A /* ReconTableView.m in Sources */,
- 69C625EF0664EC3300B3C46A /* PreferencesController.m in Sources */,
- 69C625F00664EC3300B3C46A /* ProfileTableView.m in Sources */,
- 2A3C3F7D09922D4900E404E9 /* NotificationController.m in Sources */,
- B554004109C4E5AA0089E1C3 /* UnisonToolbar.m in Sources */,
- 449F03E10BE00DE9003F15C8 /* Bridge.m in Sources */,
- 44042CB60BE4FC9B00A6BBB2 /* ProgressCell.m in Sources */,
- 445A2A5E0BFAB6C300E4E641 /* ImageAndTextCell.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 2A124E800DE1C4E400524237 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 2A124E780DE1C48400524237 /* Create ExternalSettings */;
- targetProxy = 2A124E7F0DE1C4E400524237 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin PBXVariantGroup section */
- 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
- isa = PBXVariantGroup;
- children = (
- 089C165DFE840E0CC02AAC07 /* English */,
- );
- name = InfoPlist.strings;
- sourceTree = "<group>";
- };
- 29B97318FDCFA39411CA2CEA /* MainMenu.nib */ = {
- isa = PBXVariantGroup;
- children = (
- 29B97319FDCFA39411CA2CEA /* English */,
- );
- name = MainMenu.nib;
- sourceTree = "<group>";
- };
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
- 2A124E790DE1C48400524237 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = NO;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_OPTIMIZATION_LEVEL = 0;
- PRODUCT_NAME = "Create ExternalSettings";
- };
- name = Development;
- };
- 2A124E7A0DE1C48400524237 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- COPY_PHASE_STRIP = YES;
- DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- PRODUCT_NAME = "Create ExternalSettings";
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- 2A124E7B0DE1C48400524237 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "Create ExternalSettings";
- };
- name = Default;
- };
- 2A3C3F290992245300E404E9 /* Development */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)";
- ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64;
- COPY_PHASE_STRIP = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(FRAMEWORK_SEARCH_PATHS)",
- "$(SRCROOT)",
- );
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_ENABLE_FIX_AND_CONTINUE = YES;
- GCC_ENABLE_OBJC_EXCEPTIONS = YES;
- GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Applications";
- LIBRARY_SEARCH_PATHS = "";
- NSZombieEnabled = YES;
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = (
- "-L$(OCAMLLIBDIR)",
- "-lunix",
- "-lthreadsnat",
- "-lstr",
- "-lbigarray",
- "-lasmrun",
- );
- PREBINDING = NO;
- PRODUCT_NAME = Unison;
- SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- WRAPPER_EXTENSION = app;
- ZERO_LINK = YES;
- };
- name = Development;
- };
- 2A3C3F2A0992245300E404E9 /* Deployment */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)";
- ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64;
- COPY_PHASE_STRIP = YES;
- FRAMEWORK_SEARCH_PATHS = (
- "$(FRAMEWORK_SEARCH_PATHS)",
- "$(SRCROOT)",
- );
- GCC_ENABLE_FIX_AND_CONTINUE = NO;
- GCC_ENABLE_OBJC_EXCEPTIONS = YES;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Applications";
- LIBRARY_SEARCH_PATHS = "";
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = (
- "-L$(OCAMLLIBDIR)",
- "-lunix",
- "-lthreadsnat",
- "-lstr",
- "-lbigarray",
- "-lasmrun",
- );
- PREBINDING = NO;
- PRODUCT_NAME = Unison;
- SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- WRAPPER_EXTENSION = app;
- ZERO_LINK = NO;
- };
- name = Deployment;
- };
- 2A3C3F2B0992245300E404E9 /* Default */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ARCHS = "$(ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1)";
- ARCHS_STANDARD_64_BIT_PRE_XCODE_3_1 = x86_64;
- FRAMEWORK_SEARCH_PATHS = (
- "$(FRAMEWORK_SEARCH_PATHS)",
- "$(SRCROOT)",
- );
- GCC_ENABLE_OBJC_EXCEPTIONS = YES;
- GCC_PRECOMPILE_PREFIX_HEADER = YES;
- INFOPLIST_FILE = Info.plist;
- INSTALL_PATH = "$(HOME)/Applications";
- LIBRARY_SEARCH_PATHS = "";
- OTHER_CFLAGS = "";
- OTHER_LDFLAGS = (
- "-L$(OCAMLLIBDIR)",
- "-lunix",
- "-lthreadsnat",
- "-lstr",
- "-lbigarray",
- "-lasmrun",
- );
- PREBINDING = NO;
- PRODUCT_NAME = Unison;
- SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.6.sdk";
- SECTORDER_FLAGS = "";
- WARNING_CFLAGS = (
- "-Wmost",
- "-Wno-four-char-constants",
- "-Wno-unknown-pragmas",
- );
- WRAPPER_EXTENSION = app;
- ZERO_LINK = NO;
- };
- name = Default;
- };
- 2A3C3F2D0992245300E404E9 /* Development */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 2E282CCC0D9AE2E800439D01 /* ExternalSettings.xcconfig */;
- buildSettings = {
- LIBRARY_SEARCH_PATHS = "";
- SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
- USER_HEADER_SEARCH_PATHS = $OCAMLLIBDIR;
- };
- name = Development;
- };
- 2A3C3F2E0992245300E404E9 /* Deployment */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 2E282CCC0D9AE2E800439D01 /* ExternalSettings.xcconfig */;
- buildSettings = {
- LIBRARY_SEARCH_PATHS = "";
- SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
- USER_HEADER_SEARCH_PATHS = $OCAMLLIBDIR;
- };
- name = Deployment;
- };
- 2A3C3F2F0992245300E404E9 /* Default */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 2E282CCC0D9AE2E800439D01 /* ExternalSettings.xcconfig */;
- buildSettings = {
- LIBRARY_SEARCH_PATHS = "";
- SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
- USER_HEADER_SEARCH_PATHS = $OCAMLLIBDIR;
- };
- name = Default;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 2A124E7C0DE1C4A200524237 /* Build configuration list for PBXAggregateTarget "Create ExternalSettings" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 2A124E790DE1C48400524237 /* Development */,
- 2A124E7A0DE1C48400524237 /* Deployment */,
- 2A124E7B0DE1C48400524237 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- 2A3C3F280992245300E404E9 /* Build configuration list for PBXNativeTarget "uimac" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 2A3C3F290992245300E404E9 /* Development */,
- 2A3C3F2A0992245300E404E9 /* Deployment */,
- 2A3C3F2B0992245300E404E9 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
- 2A3C3F2C0992245300E404E9 /* Build configuration list for PBXProject "uimacnew" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 2A3C3F2D0992245300E404E9 /* Development */,
- 2A3C3F2E0992245300E404E9 /* Deployment */,
- 2A3C3F2F0992245300E404E9 /* Default */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Default;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}