Merge remote branch laullon/master into integration
@@ -1,8 +1,5 @@
|
||||
build
|
||||
build/revision
|
||||
*.xcodeproj/*.pbxuser
|
||||
*.xcodeproj/*.perspectivev3
|
||||
*.xcodeproj/*.mode1v3
|
||||
*.xcodeproj/*.tm_build_errors
|
||||
*.tmproj
|
||||
*.xcodeproj/
|
||||
!*.xcodeproj/project.pbxproj
|
||||
Nightly.app.zip
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
[submodule "libgit2"]
|
||||
path = libgit2
|
||||
url = git://github.com/pieter/libgit2.git
|
||||
path = libgit2
|
||||
url = git://repo.or.cz/libgit2.git
|
||||
@@ -9,7 +9,7 @@
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "PBGitRepository.h"
|
||||
|
||||
@class PBCLIProxy;
|
||||
@class PBCloneRepositoryPanel;
|
||||
|
||||
@interface ApplicationController : NSObject
|
||||
{
|
||||
@@ -19,9 +19,8 @@
|
||||
NSManagedObjectModel *managedObjectModel;
|
||||
NSManagedObjectContext *managedObjectContext;
|
||||
|
||||
PBCLIProxy *cliProxy;
|
||||
PBCloneRepositoryPanel *cloneRepositoryPanel;
|
||||
}
|
||||
@property (retain) PBCLIProxy* cliProxy;
|
||||
|
||||
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator;
|
||||
- (NSManagedObjectModel *)managedObjectModel;
|
||||
@@ -33,6 +32,8 @@
|
||||
- (IBAction)installCliTool:(id)sender;
|
||||
|
||||
- (IBAction)saveAction:sender;
|
||||
- (IBAction) showHelp:(id) sender;
|
||||
- (IBAction)showHelp:(id)sender;
|
||||
- (IBAction)reportAProblem:(id)sender;
|
||||
|
||||
- (IBAction)showCloneRepository:(id)sender;
|
||||
@end
|
||||
|
||||
@@ -10,16 +10,15 @@
|
||||
#import "PBGitRevisionCell.h"
|
||||
#import "PBGitWindowController.h"
|
||||
#import "PBRepositoryDocumentController.h"
|
||||
#import "PBCLIProxy.h"
|
||||
#import "PBServicesController.h"
|
||||
#import "PBGitXProtocol.h"
|
||||
#import "PBPrefsWindowController.h"
|
||||
#import "PBNSURLPathUserDefaultsTransfomer.h"
|
||||
#import "PBGitDefaults.h"
|
||||
#import "PBCloneRepositoryPanel.h"
|
||||
#import "Sparkle/SUUpdater.h"
|
||||
|
||||
@implementation ApplicationController
|
||||
@synthesize cliProxy;
|
||||
|
||||
- (ApplicationController*)init
|
||||
{
|
||||
@@ -27,13 +26,13 @@
|
||||
[NSApp activateIgnoringOtherApps:YES];
|
||||
#endif
|
||||
|
||||
if(self = [super init]) {
|
||||
if(!(self = [super init]))
|
||||
return nil;
|
||||
|
||||
if(![[NSBundle bundleWithPath:@"/System/Library/Frameworks/Quartz.framework/Frameworks/QuickLookUI.framework"] load])
|
||||
if(![[NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/QuickLookUI.framework"] load])
|
||||
NSLog(@"Could not load QuickLook");
|
||||
|
||||
self.cliProxy = [PBCLIProxy new];
|
||||
}
|
||||
|
||||
/* Value Transformers */
|
||||
NSValueTransformer *transformer = [[PBNSURLPathUserDefaultsTransfomer alloc] init];
|
||||
[NSValueTransformer setValueTransformer:transformer forName:@"PBNSURLPathUserDefaultsTransfomer"];
|
||||
@@ -65,34 +64,55 @@
|
||||
- (void)applicationDidFinishLaunching:(NSNotification*)notification
|
||||
{
|
||||
[[SUUpdater sharedUpdater] setSendsSystemProfile:YES];
|
||||
[[SUUpdater sharedUpdater] setDelegate:self];
|
||||
|
||||
// Make sure Git's SSH password requests get forwarded to our little UI tool:
|
||||
setenv( "SSH_ASKPASS", [[[NSBundle mainBundle] pathForResource: @"gitx_askpasswd" ofType: @""] UTF8String], 1 );
|
||||
setenv( "DISPLAY", "localhost:0", 1 );
|
||||
|
||||
[self registerServices];
|
||||
|
||||
BOOL hasOpenedDocuments = NO;
|
||||
NSArray *launchedDocuments = [[[PBRepositoryDocumentController sharedDocumentController] documents] copy];
|
||||
|
||||
// Only try to open a default document if there are no documents open already.
|
||||
// For example, the application might have been launched by double-clicking a .git repository,
|
||||
// or by dragging a folder to the app icon
|
||||
if ([[[PBRepositoryDocumentController sharedDocumentController] documents] count])
|
||||
return;
|
||||
if ([launchedDocuments count])
|
||||
hasOpenedDocuments = YES;
|
||||
|
||||
// open any documents that were open the last time the app quit
|
||||
if ([PBGitDefaults openPreviousDocumentsOnLaunch]) {
|
||||
for (NSString *path in [PBGitDefaults previousDocumentPaths]) {
|
||||
NSURL *url = [NSURL fileURLWithPath:path isDirectory:YES];
|
||||
NSError *error = nil;
|
||||
if (url && [[PBRepositoryDocumentController sharedDocumentController] openDocumentWithContentsOfURL:url display:YES error:&error])
|
||||
hasOpenedDocuments = YES;
|
||||
}
|
||||
}
|
||||
|
||||
// Try to find the current directory, to open that as a repository
|
||||
if ([PBGitDefaults openCurDirOnLaunch] && !hasOpenedDocuments) {
|
||||
NSString *curPath = [[[NSProcessInfo processInfo] environment] objectForKey:@"PWD"];
|
||||
NSURL *url = nil;
|
||||
if (curPath)
|
||||
url = [NSURL fileURLWithPath:curPath];
|
||||
// Try to open the found URL
|
||||
NSError *error = nil;
|
||||
if (url && [[PBRepositoryDocumentController sharedDocumentController] openDocumentWithContentsOfURL:url display:YES error:&error])
|
||||
hasOpenedDocuments = YES;
|
||||
}
|
||||
|
||||
// to bring the launched documents to the front
|
||||
for (PBGitRepository *document in launchedDocuments)
|
||||
[document showWindows];
|
||||
|
||||
if (![[NSApplication sharedApplication] isActive])
|
||||
return;
|
||||
|
||||
NSURL *url = nil;
|
||||
|
||||
// Try to find the current directory, to open that as a repository
|
||||
if ([PBGitDefaults openCurDirOnLaunch]) {
|
||||
NSString *curPath = [[[NSProcessInfo processInfo] environment] objectForKey:@"PWD"];
|
||||
if (curPath)
|
||||
url = [NSURL fileURLWithPath:curPath];
|
||||
}
|
||||
|
||||
// Try to open the found URL
|
||||
NSError *error = nil;
|
||||
if (url && [[PBRepositoryDocumentController sharedDocumentController] openDocumentWithContentsOfURL:url display:YES error:&error])
|
||||
return;
|
||||
|
||||
// The current directory was not enabled or could not be opened (most likely it’s not a git repository).
|
||||
// show an open panel for the user to select a repository to view
|
||||
if ([PBGitDefaults showOpenPanelOnLaunch])
|
||||
if ([PBGitDefaults showOpenPanelOnLaunch] && !hasOpenedDocuments)
|
||||
[[PBRepositoryDocumentController sharedDocumentController] openDocument:self];
|
||||
}
|
||||
|
||||
@@ -120,6 +140,14 @@
|
||||
[NSApp orderFrontStandardAboutPanelWithOptions:dict];
|
||||
}
|
||||
|
||||
- (IBAction) showCloneRepository:(id)sender
|
||||
{
|
||||
if (!cloneRepositoryPanel)
|
||||
cloneRepositoryPanel = [PBCloneRepositoryPanel panel];
|
||||
|
||||
[cloneRepositoryPanel showWindow:self];
|
||||
}
|
||||
|
||||
- (IBAction)installCliTool:(id)sender;
|
||||
{
|
||||
BOOL success = NO;
|
||||
@@ -169,11 +197,6 @@
|
||||
former cannot be found), the system's temporary directory.
|
||||
*/
|
||||
|
||||
- (IBAction) showHelp:(id) sender
|
||||
{
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://gitx.frim.nl/user_manual.html"]];
|
||||
}
|
||||
|
||||
- (NSString *)applicationSupportFolder {
|
||||
|
||||
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
|
||||
@@ -326,6 +349,21 @@
|
||||
return reply;
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(NSNotification *)aNotification
|
||||
{
|
||||
[PBGitDefaults removePreviousDocumentPaths];
|
||||
|
||||
if ([PBGitDefaults openPreviousDocumentsOnLaunch]) {
|
||||
NSArray *documents = [[PBRepositoryDocumentController sharedDocumentController] documents];
|
||||
if ([documents count] > 0) {
|
||||
NSMutableArray *paths = [NSMutableArray array];
|
||||
for (PBGitRepository *repository in documents)
|
||||
[paths addObject:[repository workingDirectory]];
|
||||
|
||||
[PBGitDefaults setPreviousDocumentPaths:paths];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Implementation of dealloc, to release the retained variables.
|
||||
@@ -338,4 +376,44 @@
|
||||
[managedObjectModel release], managedObjectModel = nil;
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Sparkle delegate methods
|
||||
|
||||
- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile
|
||||
{
|
||||
NSArray *keys = [NSArray arrayWithObjects:@"key", @"displayKey", @"value", @"displayValue", nil];
|
||||
NSMutableArray *feedParameters = [NSMutableArray array];
|
||||
|
||||
// only add parameters if the profile is being sent this time
|
||||
if (sendingProfile) {
|
||||
NSString *CFBundleGitVersion = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleGitVersion"];
|
||||
if (CFBundleGitVersion)
|
||||
[feedParameters addObject:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"CFBundleGitVersion", @"Full Version", CFBundleGitVersion, CFBundleGitVersion, nil]
|
||||
forKeys:keys]];
|
||||
|
||||
NSString *gitVersion = [PBGitBinary version];
|
||||
if (gitVersion)
|
||||
[feedParameters addObject:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"gitVersion", @"git Version", gitVersion, gitVersion, nil]
|
||||
forKeys:keys]];
|
||||
}
|
||||
|
||||
return feedParameters;
|
||||
}
|
||||
|
||||
|
||||
#pragma mark Help menu
|
||||
|
||||
- (IBAction)showHelp:(id)sender
|
||||
{
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://gitx.frim.nl/user_manual.html"]];
|
||||
}
|
||||
|
||||
- (IBAction)reportAProblem:(id)sender
|
||||
{
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://gitx.lighthouseapp.com/tickets"]];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,298 @@
|
||||
//
|
||||
// BMDefines.h
|
||||
// BMScriptTest
|
||||
//
|
||||
// Created by Andre Berg on 27.09.09.
|
||||
// Copyright 2009 Berg Media. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
/*!
|
||||
* @file BMDefines.h
|
||||
*
|
||||
* Provides defines mostly for debugging.
|
||||
* This file may be included by any project as it does not really contain project-specific symbols.
|
||||
* Consists mainly of stuff I have gathered from multiple sources or defined in my own work to help
|
||||
* ease debugging and/or cross-platform development.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <objc/objc.h>
|
||||
#import <objc/objc-runtime.h>
|
||||
#include <TargetConditionals.h>
|
||||
|
||||
/// @cond HIDDEN
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef _BM_DEFINES_H_
|
||||
#define _BM_DEFINES_H_ 1
|
||||
/// @endcond
|
||||
|
||||
|
||||
/*!
|
||||
* @addtogroup project_defines Project Defines
|
||||
* @{
|
||||
*/
|
||||
|
||||
// Determine runtine environment
|
||||
#if !defined(__MACOSX_RUNTIME__) && !defined(__GNUSTEP_RUNTIME__)
|
||||
#if defined(__APPLE__) && defined(__MACH__) && !defined(GNUSTEP)
|
||||
/*!
|
||||
* @def MACOSX_RUNTIME
|
||||
* Determine runtime environment.
|
||||
* Defined if running on Mac OS X. GNUStep will not have this defined.
|
||||
*/
|
||||
#define __MACOSX_RUNTIME__
|
||||
#endif // If not Mac OS X, GNUstep?
|
||||
#if defined(GNUSTEP) && !defined(__MACOSX_RUNTIME__)
|
||||
/*!
|
||||
* @def __GNUSTEP_RUNTIME__
|
||||
* Determine runtime environment.
|
||||
* Defined if running GNUStep. Mac OS X will not have this defined.
|
||||
*/
|
||||
#define __GNUSTEP_RUNTIME__
|
||||
#endif // Not Mac OS X or GNUstep, that's a problem.
|
||||
#endif // !defined(__MACOSX_RUNTIME__) && !defined(__GNUSTEP_RUNTIME__)
|
||||
|
||||
// If the above did not set the run time environment, error out.
|
||||
#if !defined(__MACOSX_RUNTIME__) && !defined(__GNUSTEP_RUNTIME__)
|
||||
#error Unable to determine run time environment, automatic Mac OS X and GNUstep detection failed
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @def ENABLE_MACOSX_GARBAGE_COLLECTION
|
||||
* Preprocessor definition to enable Mac OS X 10.5 (Leopard) Garbage Collection.
|
||||
* This preprocessor define enables support for Garbage Collection on Mac OS X 10.5 (Leopard).
|
||||
*
|
||||
* Traditional retain / release functionality remains allowing the framework to be used in either
|
||||
* Garbage Collected enabled applications or reference counting applications.
|
||||
*
|
||||
* The framework dynamically picks which mode to use at run-time base on whether or not the
|
||||
* Garbage Collection system is active.
|
||||
*
|
||||
* @sa <a href="http://developer.apple.com/documentation/Cocoa/Conceptual/GarbageCollection/index.html" class="external">Garbage Collection Programming Guide</a>
|
||||
* @sa <a href="http://developer.apple.com/documentation/Cocoa/Reference/NSGarbageCollector_class/index.html" class="external">NSGarbageCollector Class Reference</a>
|
||||
*/
|
||||
#if defined(__MACOSX_RUNTIME__) && defined(MAC_OS_X_VERSION_10_5) && defined(__OBJC_GC__)
|
||||
#define ENABLE_MACOSX_GARBAGE_COLLECTION
|
||||
#define BM_STRONG_REF __strong
|
||||
#define BM_WEAK_REF __weak
|
||||
#else
|
||||
#define BM_STRONG_REF
|
||||
#define BM_WEAK_REF
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_MACOSX_GARBAGE_COLLECTION) && !defined(MAC_OS_X_VERSION_10_5)
|
||||
#error The Mac OS X Garbage Collection feature requires at least Mac OS X 10.5
|
||||
#endif
|
||||
|
||||
|
||||
/*!
|
||||
* A note to Clang's static analyzer.
|
||||
* It tells about the returning onwnership intentions of methods.
|
||||
* The header documentation of Apple follows:
|
||||
* "Marks methods and functions which return an object that needs to be released by the caller but whose names are not consistent with Cocoa naming rules. The recommended fix to this is the rename the methods or functions, but this macro can be used to let the clang static analyzer know of any exceptions that cannot be fixed."
|
||||
*
|
||||
*/
|
||||
#ifndef NS_RETURNS_RETAINED
|
||||
#if defined(__clang__)
|
||||
#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
|
||||
#else
|
||||
#define NS_RETURNS_RETAINED
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
// To simplify support for 64bit (and Leopard in general),
|
||||
// provide the type defines for non Leopard SDKs
|
||||
#if !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
|
||||
// NSInteger/NSUInteger and Max/Mins
|
||||
#ifndef NSINTEGER_DEFINED
|
||||
#if __LP64__ || NS_BUILD_32_LIKE_64
|
||||
typedef long NSInteger;
|
||||
typedef unsigned long NSUInteger;
|
||||
#else
|
||||
typedef int NSInteger;
|
||||
typedef unsigned int NSUInteger;
|
||||
#endif
|
||||
#define NSIntegerMax LONG_MAX
|
||||
#define NSIntegerMin LONG_MIN
|
||||
#define NSUIntegerMax ULONG_MAX
|
||||
#define NSINTEGER_DEFINED 1
|
||||
#endif // NSINTEGER_DEFINED
|
||||
|
||||
// CGFloat
|
||||
#ifndef CGFLOAT_DEFINED
|
||||
#if defined(__LP64__) && __LP64__
|
||||
// This really is an untested path (64bit on Tiger?)
|
||||
typedef double CGFloat;
|
||||
#define CGFLOAT_MIN DBL_MIN
|
||||
#define CGFLOAT_MAX DBL_MAX
|
||||
#define CGFLOAT_IS_DOUBLE 1
|
||||
#else /* !defined(__LP64__) || !__LP64__ */
|
||||
typedef float CGFloat;
|
||||
#define CGFLOAT_MIN FLT_MIN
|
||||
#define CGFLOAT_MAX FLT_MAX
|
||||
#define CGFLOAT_IS_DOUBLE 0
|
||||
#endif /* !defined(__LP64__) || !__LP64__ */
|
||||
#define CGFLOAT_DEFINED 1
|
||||
#endif // CGFLOAT_DEFINED
|
||||
|
||||
// NS_INLINE
|
||||
#if !defined(NS_INLINE)
|
||||
#if defined(__GNUC__)
|
||||
#define NS_INLINE static __inline__ __attribute__((always_inline))
|
||||
#elif defined(__MWERKS__) || defined(__cplusplus)
|
||||
#define NS_INLINE static inline
|
||||
#elif defined(_MSC_VER)
|
||||
#define NS_INLINE static __inline
|
||||
#elif defined(__WIN32__)
|
||||
#define NS_INLINE static __inline__
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
|
||||
|
||||
/*!
|
||||
* @def BM_C99(keyword)
|
||||
* C99 conformance defines.
|
||||
* Make it possible to safely use keywords and features of the C99 standard.
|
||||
* @param keyword a C99 keyword (e.g. restrict)
|
||||
*/
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
#define BM_C99(keyword) keyword
|
||||
#else
|
||||
#define BM_C99(keyword)
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @def BM_REQUIRES_NIL_TERMINATION
|
||||
* Used to mark variadic methods and functions as requiring nil termination.
|
||||
* Nil termination means the last argument of their variable argument list must be nil.
|
||||
*/
|
||||
#if !defined(BM_REQUIRES_NIL_TERMINATION)
|
||||
#if TARGET_OS_WIN32
|
||||
#define BM_REQUIRES_NIL_TERMINATION
|
||||
#else
|
||||
#if defined(__APPLE_CC__) && (__APPLE_CC__ >= 5549)
|
||||
#define BM_REQUIRES_NIL_TERMINATION __attribute__((sentinel(0,1)))
|
||||
#else
|
||||
#define BM_REQUIRES_NIL_TERMINATION __attribute__((sentinel))
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @def BM_EXTERN
|
||||
* Defines for the extern keyword.
|
||||
* Makes it possible to use extern in the proper sense in C++ context included.
|
||||
*/
|
||||
/*!
|
||||
* @def BM_PRIVATE_EXTERN
|
||||
* Defines for the __private_extern__ Apple compiler directive.
|
||||
* Makes a symbol public in the binrary (e.g. a library), but hidden outside of it.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
#define BM_EXTERN extern "C"
|
||||
#define BM_PRIVATE_EXTERN __private_extern__
|
||||
#else
|
||||
#define BM_EXTERN extern
|
||||
#define BM_PRIVATE_EXTERN __private_extern__
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @def BM_ATTRIBUTES
|
||||
* Macro wrapper around GCC <a href="http://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/Attribute-Syntax.html#Attribute-Syntax" class="external">__attribute__</a> syntax.
|
||||
* @note When a compiler other than GCC 4+ is used, #BM_ATTRIBUTES evaluates to an empty string, removing itself and its arguments from the code to be compiled.</p>
|
||||
*/
|
||||
/*!
|
||||
* @def BM_EXPECTED
|
||||
* Macro wrapper around GCC <a href="http://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/Other-Builtins.html#index-g_t_005f_005fbuiltin_005fexpect-2284" class="external">__builtin_expect</a> syntax.
|
||||
*
|
||||
* From GCC docs: "You may use __builtin_expect to provide the compiler with branch prediction information. In general, you should prefer to use actual profile feedback for this (-fprofile-arcs), as programmers are notoriously bad at predicting how their programs actually perform. However, there are applications in which this data is hard to collect.
|
||||
*
|
||||
* The return value is the value of exp, which should be an integral expression. The value of c must be a compile-time constant. The semantics of the built-in are that it is expected that exp == c."
|
||||
*
|
||||
* And from <a href="http://regexkit.sourceforge.net" class="external">RegexKit Framework</a> docs (the origin of this macro):
|
||||
*
|
||||
* <div class="box important"><div class="table"><div class="row"><div class="label cell">Important:</div><div class="message cell"><span class="code">BM_EXPECTED</span> should only be used when the likelihood of the prediction is nearly certain. <b><i>DO NOT GUESS</i></b>.</div></div></div></div>
|
||||
*
|
||||
* BM_EXPECTED [...] is used to provide the compiler with branch prediction information for conditional statements.
|
||||
*
|
||||
* An example of an appropriate use is parameter validation checks at the start of a function, such as <span class="code nobr">(aPtr == NULL)</span>. Since callers are always expected to pass a valid pointer, the likelihood of the conditional evaluating to true is extremely unlikely. This allows the compiler to schedule instructions to minimize branch miss-prediction penalties. For example:
|
||||
<div class="sourcecode">if(BM_EXPECTED((aPtr == NULL), 0)) { abort(); }</div>
|
||||
*
|
||||
* @note If a compiler other than GCC 4+ is used then the macro leaves the conditional expression unaltered.
|
||||
*/
|
||||
#if defined (__GNUC__) && (__GNUC__ >= 4)
|
||||
#define BM_STATIC_INLINE static __inline__ __attribute__((always_inline))
|
||||
#define BM_STATIC_PURE_INLINE static __inline__ __attribute__((always_inline, pure))
|
||||
#define BM_EXPECTED(cond, expect) __builtin_expect(cond, expect)
|
||||
#define BM_ALIGNED(boundary) __attribute__ ((aligned(boundary)))
|
||||
#define BM_ATTRIBUTES(attr, ...) __attribute__((attr, ##__VA_ARGS__))
|
||||
#else
|
||||
#define BM_STATIC_INLINE static __inline__
|
||||
#define BM_STATIC_PURE_INLINE static __inline__
|
||||
#define BM_EXPECTED(cond, expect) cond
|
||||
#define BM_ALIGNED(boundary)
|
||||
#define BM_ATTRIBUTES(attr, ...)
|
||||
#endif
|
||||
|
||||
|
||||
/*!
|
||||
* @def BM_DEBUG_RETAIN_INIT
|
||||
* Defines a macro which supplies replacement methods for -[retain] and -[release].
|
||||
* This macro is normally used in a global context (e.g. outside main) and followed by BM_DEBUG_RETAIN_SWIZZLE(className) in a local context, which then actually registers the replacement for the Class 'className' with the runtime.
|
||||
* @attention This is only intended for <b>debugging purposes</b>. Has no effect if Garbage Collection is enabled.
|
||||
*/
|
||||
#define BM_DEBUG_RETAIN_INIT \
|
||||
IMP oldRetain;\
|
||||
IMP oldRelease;\
|
||||
id newRetain(id self, SEL _cmd) {\
|
||||
NSUInteger rc = [self retainCount];\
|
||||
NSLog(@"%s[0x%x]: retain, rc = %d -> %d",\
|
||||
class_getName([self class]), self, rc, rc + 1);\
|
||||
return (*oldRetain)(self, _cmd);\
|
||||
}\
|
||||
void newRelease(id self, SEL _cmd) {\
|
||||
NSUInteger rc = [self retainCount];\
|
||||
NSLog(@"%s[0x%x]: retain, rc = %d -> %d", \
|
||||
class_getName([self class]), self, rc, rc - 1);\
|
||||
(*oldRetain)(self, _cmd);\
|
||||
}
|
||||
|
||||
/*!
|
||||
* @def BM_DEBUG_RETAIN_SWIZZLE(className)
|
||||
* Swizzles (or replaces) the methods defined by #BM_DEBUG_RETAIN_INIT for className.
|
||||
* This macro is normally used in a (function) local scope, provided a #BM_DEBUG_RETAIN_INIT declaration at the beginning of the file (in global context). BM_DEBUG_RETAIN_SWIZZLE(className) then actually registers the replacements defined by #BM_DEBUG_RETAIN_INIT for the Class 'className' with the runtime.
|
||||
* @attention This is only intended for <b>debugging purposes</b>. Has no effect if Garbage Collection is enabled.
|
||||
* @param className the name of the class to replace the methods for (e.g. <span class="sourcecode darkgray">[SomeClass class]</span>).
|
||||
*/
|
||||
#define BM_DEBUG_RETAIN_SWIZZLE(className) \
|
||||
oldRetain = class_getMethodImplementation((className), @selector(retain));\
|
||||
class_replaceMethod((className), @selector(retain), (IMP)&newRetain, "@@:");\
|
||||
oldRelease = class_getMethodImplementation((className), @selector(release));\
|
||||
class_replaceMethod((className), @selector(release), (IMP)&newRelease, "v@:");
|
||||
|
||||
/*!
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif // _BM_DEFINES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
@@ -0,0 +1,998 @@
|
||||
//
|
||||
// BMScript.h
|
||||
// BMScriptTest
|
||||
//
|
||||
// Created by Andre Berg on 11.09.09.
|
||||
// Copyright 2009 Berg Media. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// MARK: Docs: Mainpage
|
||||
|
||||
/*!
|
||||
* @mainpage BMScript: Harness The Power Of Shell Scripts
|
||||
* <hr>
|
||||
* @par Introduction
|
||||
*
|
||||
* BMScript is an Objective-C class set to make it easier to utilize the
|
||||
* power and flexibility of a whole range of scripting languages that already
|
||||
* come with modern Macs. BMScript does not favor any particular scripting
|
||||
* language or UNIX™ command line tool for that matter, instead it was written
|
||||
* as an abstraction layer to NSTask, and as such supports any command line tool,
|
||||
* provided that it is available on the target system.
|
||||
*
|
||||
* @par Usage
|
||||
*
|
||||
* BMScript can be used in two ways:
|
||||
*
|
||||
* -# Use it directly
|
||||
* -# Guided by the BMScriptLanguageProtocol, make a subclass from it
|
||||
*
|
||||
* The easiest way to use BMScript is, of course, to instanciate it directly:
|
||||
*
|
||||
* @include bmScriptCreationMethods.m
|
||||
*
|
||||
* You typically use the designated initializer for which you supply the script
|
||||
* source and script options yourself.<br>
|
||||
* The options dictionary then looks like this:
|
||||
*
|
||||
* @include bmScriptOptionsDictionary.m
|
||||
*
|
||||
* There's two constant keys. These are the only keys you need to define values for.
|
||||
* #BMScriptOptionsTaskLaunchPathKey stores the path to the tool's executable and
|
||||
* #BMScriptOptionsTaskArgumentsKey is a nil-terminated variable list of parameters
|
||||
* to be used as arguments to the task which will load and execute the tool found at
|
||||
* the launch path specified for the other key.
|
||||
*
|
||||
* It is very important to note that the script source string should <b>NOT</b> be
|
||||
* supplied in the array for the #BMScriptOptionsTaskArgumentsKey, as it will be added
|
||||
* later by the class after performing tests and delegation which could alter the script
|
||||
* in ways needed to safely execute it. This is in the delegate object's responsibility.
|
||||
*
|
||||
* A macro function called #BMSynthesizeOptions(path, args) is available to ease
|
||||
* the declaration of the options.<br>
|
||||
* Here is the definition:
|
||||
*
|
||||
* @include bmScriptSynthesizeOptions.m
|
||||
*
|
||||
* <div class="box important">
|
||||
* <div class="table">
|
||||
* <div class="row">
|
||||
* <div class="label cell">Important:</div>
|
||||
* <div class="message cell">
|
||||
* Don't forget the <b>nil</b> at the end even
|
||||
* if you don't need to supply any task arguments.
|
||||
* </div>
|
||||
* </div>
|
||||
* </div>
|
||||
* </div>
|
||||
*
|
||||
* If you initialize BMScript directly without specifying options and script source
|
||||
* (e.g. using <span class="sourcecode">[[%BMScript alloc] init]</span>) the options
|
||||
* will default to <span class="sourcecode">BMSynthesizeOptions(@"/bin/echo", @"")</span>
|
||||
* and the script source will default to <span class="sourcecode">@"'<script source placeholder>'"</span>.
|
||||
*
|
||||
* <div class="box warning">
|
||||
* <div class="table">
|
||||
* <div class="row">
|
||||
* <div class="label cell">Warning:</div>
|
||||
* <div class="message cell">
|
||||
* If you let your end-users, the consumers of your application, supply the
|
||||
* script source without defining exact task options this can be very dangerous as anything
|
||||
* passed to <span class="sourcecode">/bin/echo</span> is not checked by default! This is a
|
||||
* good reason to use the BMScriptDelegateProtocol methods for error/security checking or to
|
||||
* subclass BMScript instead of using it directly.
|
||||
* </div>
|
||||
* </div>
|
||||
* </div>
|
||||
* </div>
|
||||
*
|
||||
* There are also convenience methods for the most common scripting languages, which have
|
||||
* their options set to OS default values:
|
||||
*
|
||||
* @include bmScriptConvenienceMethods.m
|
||||
*
|
||||
* As you can see loading scripts from source files is also supported, including a small
|
||||
* and lightweight template system.
|
||||
*
|
||||
* @par Templates
|
||||
*
|
||||
* Using templates can be a good way to add domain-specific problem solving to a class.
|
||||
* To utilize the template system, three steps are required:
|
||||
*
|
||||
* -# Initialize a BMScript instance with a template
|
||||
* -# Saturate template with values ("fill in the blanks")
|
||||
* -# Execute BMScript instance
|
||||
*
|
||||
* Here are the methods you use to saturate a BMScript template with values:
|
||||
*
|
||||
* @include bmScriptSaturateTemplate.m
|
||||
*
|
||||
* So how does a template look like then? We use standard text files which have special
|
||||
* token strings bound to get replaced. If you are familiar with Ruby, the magic template token
|
||||
* looks a lot like Ruby's double quoted string literal:
|
||||
*
|
||||
* @verbatim %{} @endverbatim
|
||||
*
|
||||
* If this pattern structure is empty it will be replaced in the order of occurrence. The first
|
||||
* two saturate methods are good for this.
|
||||
* If the magic tokens wrap other values, a more flexible dictionary based system can be used
|
||||
* with the third saturate method. There, the magic tokens must wrap names of keys defined in the
|
||||
* dictionary. The keys will correspond to what the replacement value will be. <br>
|
||||
*
|
||||
* Here is an example of a Ruby script template, which converts octal or hexadecimal values to their decimal representation:
|
||||
*
|
||||
* @include convertToDecimalTemplate.rb
|
||||
*
|
||||
* Here's a short example how you'd use keyword based templates:
|
||||
*
|
||||
* @include TemplateKeywordSaturationExample.m
|
||||
*
|
||||
* @par Subclassing BMScript
|
||||
*
|
||||
* You can also see BMScript as a sort of abstract superclass and customize its
|
||||
* behaviour by making a subclass which knows about the details of the particular
|
||||
* command line tool that you want to use. Your subclass must implement the
|
||||
* BMScriptLanguageProtocol. It only has one required and one optional method:
|
||||
*
|
||||
* @include bmScriptLanguageProtocol.m
|
||||
*
|
||||
* The first method should return default values, e.g. for launch path and task arguments,
|
||||
* which are sensible and specific to the command line tool your subclass wants to utilize.
|
||||
* Here you may again use #BMSynthesizeOptions(path, args) as the options dictionary has the
|
||||
* same format as shown above.
|
||||
*
|
||||
* The second (optional) method should provide a default script source containing commands to execute
|
||||
* by the command line tool. If you do not implement this method the script source will be set
|
||||
* to the default script source of BMScript (see above).
|
||||
*
|
||||
* If you subclass BMScript and do not use the designated initializer through which
|
||||
* you supply options and script source yourself, the BMScriptLanguageProtocol-p.defaultOptionsForLanguage
|
||||
* method will be called on your subclass. If it is missing an exception of type
|
||||
* #BMScriptLanguageProtocolMethodMissingException is thrown.
|
||||
*
|
||||
* @par Execution
|
||||
*
|
||||
* After you have obtained and configured a BMScript instance, you need to tell it to execute.
|
||||
* This can be done by telling it to excute synchroneously (blocking), or asynchroneously (non-blocking):
|
||||
*
|
||||
* @include bmScriptExecution.m
|
||||
*
|
||||
* Using the blocking execution model you can either pass a pointer to NSString where the result will be
|
||||
* written to (including NSError if needed), or just use plain BMScript.execute.
|
||||
* This will return the TerminationStatus, or the return value the underlying process exited with.
|
||||
* You can then obtain the script execution result by accessing BMScript.lastResult.
|
||||
*
|
||||
* The non-blocking execution model works by means of <a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html#//apple_ref/doc/uid/TP40002974-CH7-SW7" class="external">notifications</a>.
|
||||
* You register your class as observer with the default notification center for a notification called
|
||||
* #BMScriptTaskDidEndNotification passing a selector to execute once the notification arrives. If you have
|
||||
* multiple BMScript instances you can also pass the instance you want to register the notification for as
|
||||
* the object paramater (see inline example below).
|
||||
*
|
||||
* Then you tell the BMScript instance to BMScript.executeInBackgroundAndNotify. When execution finishes and your
|
||||
* selector is called it will be passed an NSNotification object which encapsulates an NSDictionary with two keys:
|
||||
*
|
||||
* <div class="box hasRows noshadow">
|
||||
* <div class="row odd firstRow">
|
||||
* <span class="cell left firstCell">#BMScriptNotificationTaskResults</span>
|
||||
* <span class="cell rightCell lastCell">contains the results returned by the execution as NSString.</span>
|
||||
* </div>
|
||||
* <div class="row even">
|
||||
* <span class="cell left firstCell">#BMScriptNotificationTaskTerminationStatus</span>
|
||||
* <span class="cell rightCell lastCell">contains the termination status (aka return/exit code)</span>
|
||||
* </div>
|
||||
* </div>
|
||||
*
|
||||
* To make that clearer here's an example with the relevant parts thrown together:
|
||||
*
|
||||
* @include NonBlockingExecutionExample.m
|
||||
*
|
||||
* It is important to note at this point that the blocking and non-blocking tasks are tracked by seperate instance variables.
|
||||
* This was done to minimize the risk of race conditions when BMScript would be used in a multi-threaded environment.
|
||||
*
|
||||
* @par On The Topic Of Concurrency
|
||||
*
|
||||
* All access to global data, shared variables and mutable objects has been
|
||||
* locked with <a href="x-man-page://pthread" class="external">pthread_mutex_locks</a>
|
||||
* (in Xcode: right-click and choose "Open Link in Browser").
|
||||
* This is done by a macro wrapper which will avaluate to nothing if #BMSCRIPT_THREAD_SAFE is not 1.
|
||||
* #BMSCRIPT_THREAD_SAFE will also set #BM_ATOMIC to 1 which will make all accessor methods atomic.
|
||||
* Note that there haven't been enough tests yet to say that BMScript is thread-safe.
|
||||
*
|
||||
* It is likely thread-safe enough, but still, care has to be taken when two different threads want to access
|
||||
* internal state of the same BMScript instance.
|
||||
*
|
||||
* BMScript was also designed such that re-use is possible. Unfortunately this does not automatically mean it's
|
||||
* intrinsically thread-safe or that it does promote re-entrant code.
|
||||
* You are encouraged to look through the source in order to determine if it may be thread-safe enough for your purpose.
|
||||
*
|
||||
* @par Delegate Methods
|
||||
*
|
||||
* BMScript also features a delegate protocol (BMScriptDelegateProtocol) providing descriptions for methods
|
||||
* your subclass or another class posing as delegate can implement:
|
||||
*
|
||||
* @include bmScriptDelegateMethods.m
|
||||
*
|
||||
* @par Instance Local Execution History
|
||||
*
|
||||
* And last but not least, BMScript features an execution cache, called its history. This works like the Shell history
|
||||
* in that it will keep script sources as well as the results of the execution of those sources.
|
||||
* To access the history you may use the following methods:
|
||||
*
|
||||
* @include bmScriptHistory.m
|
||||
*
|
||||
*/
|
||||
|
||||
// MARK: Docs: Examples
|
||||
|
||||
/*!
|
||||
* @example SubclassingExample.m
|
||||
*
|
||||
* Example of subclassing BMScript.
|
||||
*
|
||||
* This subclass provides specifics about executing Ruby scripts.
|
||||
* Of course this example is a bit of a moot point because BMScript
|
||||
* already comes with convenience constructors for all the major
|
||||
* scripting languages. Nevertheless, it nicely illustrates the bare minimum
|
||||
* needed to subclass BMScript. From a somewhat more realistic
|
||||
* and practical point of view, reasons to subclass BMScript may include:
|
||||
*
|
||||
* - You need to give your end-users the ability to supply script sources
|
||||
* and want to employ much more robust error checking than the delegation
|
||||
* system around BMScriptDelegateProtocol-p can provide to you.
|
||||
*
|
||||
* - You want to be able to also make use of NSTask's environment dictionary
|
||||
* as this is currently unused by BMScript.
|
||||
*
|
||||
* - You want to initialize BMScript's ivars based on different criteria.
|
||||
*
|
||||
*/
|
||||
|
||||
/*!
|
||||
* @example BlockingExecutionExamples3.m
|
||||
* Usage examples for the blocking execution model.
|
||||
*
|
||||
* This is the default way of using BMScript:
|
||||
* Initialize with the designated initializer and supply script and options
|
||||
*
|
||||
* @include BlockingExecutionExamples1.m
|
||||
*
|
||||
* Here are a couple of other examples of the blocking execution model:
|
||||
*
|
||||
* @include BlockingExecutionExamples2.m
|
||||
*
|
||||
* You can of course change the script source of an instance after the fact.
|
||||
* Normally NSTasks are one-shot (not for re-use), so it is convenient that
|
||||
* BMScript handles all the boilerplate setup for you in an opaque way.
|
||||
*
|
||||
* Any execution and its corresponding result are stored in the instance local
|
||||
* execution cache, also called its history.
|
||||
*
|
||||
*/
|
||||
|
||||
/*!
|
||||
* @example NonBlockingExecutionExample.m
|
||||
* Shows how to setup the non-blocking execution model. <br>
|
||||
* This shows just one possible way out of many to utilize the notification send from the async execution.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
* @file BMScript.h
|
||||
* Class interface of BMScript.
|
||||
* Also includes the documentation mainpage.
|
||||
*/
|
||||
#import "BMDefines.h"
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#include <AvailabilityMacros.h>
|
||||
|
||||
/*!
|
||||
* @addtogroup defines Defines
|
||||
* @{
|
||||
*/
|
||||
|
||||
#ifndef BMSCRIPT_THREAD_SAFE
|
||||
/*!
|
||||
* @def BMSCRIPT_THREAD_SAFE
|
||||
* Enables synchronization locks and toggles the atomicity attribute of property declarations.
|
||||
* If set to 0, synchronization locks will be noop and properties will be nonatomic.
|
||||
*/
|
||||
#define BMSCRIPT_THREAD_SAFE 0
|
||||
#ifndef BMSCRIPT_FAST_LOCK
|
||||
/*!
|
||||
* @def BMSCRIPT_FAST_LOCK
|
||||
* Toggles usage of <a href="x-man-page://pthread_mutex_lock" class="external">pthread_mutex_lock(3)</a>* as opposed to <a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocThreading.html" class="external">\@synchronized(self)</a>.
|
||||
*
|
||||
%*) In Xcode right-click and choose "Open Link in Browser"
|
||||
*
|
||||
* Set this to 1 to use the pthread library directly instead of Cocoa's \@synchronized directive which is reported to live a bit on the slow side.
|
||||
* @see <a href="http://googlemac.blogspot.com/2006/10/synchronized-swimming.html" class="external">Synchronized Swimming (Google Mac Blog)</a>
|
||||
*
|
||||
* You'd have to evaluate yourself if the article still holds true. I'm mearly pointing you to it. <br>
|
||||
* (Though utilizing the locking DTrace probes, I couldn't find much of difference between the two)
|
||||
*/
|
||||
#define BMSCRIPT_FAST_LOCK 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef BMSCRIPT_ENABLE_DTRACE
|
||||
/*! Toggle for DTrace probes. */
|
||||
#define BMSCRIPT_ENABLE_DTRACE 0
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
* @def BM_ATOMIC
|
||||
* Toggles the atomicity attribute for Objective-C 2.0 properties.
|
||||
* Will be set to <span class="sourcecode">nonatomic,</span> if #BMSCRIPT_THREAD_SAFE is 0, otherwise noop.
|
||||
*/
|
||||
|
||||
#ifdef ENABLE_MACOSX_GARBAGE_COLLECTION
|
||||
#define BM_ATOMIC nonatomic,
|
||||
#else
|
||||
#if BMSCRIPT_THREAD_SAFE
|
||||
#define BM_ATOMIC
|
||||
#else
|
||||
#define BM_ATOMIC nonatomic,
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @def BM_PROBE(name, ...)
|
||||
* DTrace probe macro. Combines testing if a probe is enabled and actually calling this probe.
|
||||
* If #BMSCRIPT_ENABLE_DTRACE is not set to 1 this macro evaluates to nothing.
|
||||
*/
|
||||
#ifdef BMSCRIPT_ENABLE_DTRACE
|
||||
#define BM_PROBE(name, ...) \
|
||||
if (BMSCRIPT_ ## name ## _ENABLED()) BMSCRIPT_ ## name(__VA_ARGS__)
|
||||
#else
|
||||
#define BM_PROBE(name, ...)
|
||||
#endif
|
||||
/*!
|
||||
* @def BMSynthesizeOptions(path, ...)
|
||||
* Used to synthesize a valid options dictionary.
|
||||
* You can use this convenience macro to generate the boilerplate code for the options dictionary
|
||||
* containing both the #BMScriptOptionsTaskLaunchPathKey and #BMScriptOptionsTaskArgumentsKey keys.
|
||||
*
|
||||
* The variadic parameter (...) is passed directly to <span class="sourcecode">[NSArray arrayWithObjects:...]</span>
|
||||
* <div class="box important">
|
||||
<div class="table">
|
||||
<div class="row">
|
||||
<div class="label cell">Important:</div>
|
||||
<div class="message cell">
|
||||
The macro will terminate the variable argument list with <b>nil</b>, which means you need to make sure
|
||||
you always pass some value for it. If you don't, you will create <span class="sourcecode">__NSArray0</span> pseudo objects which are
|
||||
not released in a Garbage Collection enabled environment. If you do not want to set any task args
|
||||
simply pass an empty string, e.g. <span class="sourcecode">BMSynthesizeOptions(@"/bin/echo", @"")</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
* </div>
|
||||
*
|
||||
*/
|
||||
#define BMSynthesizeOptions(path, ...) \
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:(path), BMScriptOptionsTaskLaunchPathKey, \
|
||||
[NSArray arrayWithObjects:__VA_ARGS__, nil], BMScriptOptionsTaskArgumentsKey, nil]
|
||||
/*!
|
||||
* @}
|
||||
*/
|
||||
|
||||
/// @cond HIDDEN
|
||||
#define BMSCRIPT_UNIT_TEST (int) (getenv("BMScriptUnitTestsEnabled") || getenv("BMSCRIPT_UNIT_TEST_ENABLED"))
|
||||
/// @endcond
|
||||
|
||||
/*! Provides a clearer indication of the task's termination status than simple integers. */
|
||||
typedef NSInteger TerminationStatus;
|
||||
|
||||
enum {
|
||||
/*! task not executed yet */
|
||||
BMScriptNotExecuted = -(NSIntegerMax-1),
|
||||
/*! task finished successfully */
|
||||
BMScriptFinishedSuccessfully = 0,
|
||||
/*! task failed */
|
||||
BMScriptFailed,
|
||||
/*! task failed with an exception */
|
||||
BMScriptFailedWithException = (NSIntegerMax-1)
|
||||
};
|
||||
|
||||
/*!
|
||||
* @addtogroup functions Functions and Global Variables
|
||||
* @{
|
||||
*/
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
/*!
|
||||
* Creates an NSString representaton from a BOOL.
|
||||
* @param b the boolean to convert
|
||||
*/
|
||||
NS_INLINE NSString * BMStringFromBOOL(BOOL b) { return (b ? @"YES" : @"NO"); }
|
||||
/*!
|
||||
* Converts a TerminationStatus to a human-readable form.
|
||||
* @param status the TerminationStatus to convert
|
||||
*/
|
||||
NS_INLINE NSString * BMStringFromTerminationStatus(TerminationStatus status) {
|
||||
switch (status) {
|
||||
case BMScriptNotExecuted:
|
||||
return @"task not executed";
|
||||
break;
|
||||
case BMScriptFinishedSuccessfully:
|
||||
return @"task finished successfully";
|
||||
break;
|
||||
case BMScriptFailedWithException:
|
||||
return @"task failed with an exception. check if launch path and/or arguments are appropriate";
|
||||
break;
|
||||
default:
|
||||
return [NSString stringWithFormat:@"task finished with return code %d", status];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* @}
|
||||
*/
|
||||
|
||||
/*!
|
||||
* @addtogroup constants Constants
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*! Notficiation sent when the background task has ended */
|
||||
OBJC_EXPORT NSString * const BMScriptTaskDidEndNotification;
|
||||
/*! Key incorporated by the notification's userInfo dictionary. Contains the result string of the finished task */
|
||||
OBJC_EXPORT NSString * const BMScriptNotificationTaskResults;
|
||||
/*! Key incorporated by the notification's userInfo dictionary. Contains the termination status of the finished task */
|
||||
OBJC_EXPORT NSString * const BMScriptNotificationTaskTerminationStatus;
|
||||
|
||||
/*! Key incorporated by the options dictionary. Contains the launch path string for the task */
|
||||
OBJC_EXPORT NSString * const BMScriptOptionsTaskLaunchPathKey;
|
||||
/*! Key incorporated by the options dictionary. Contains the arguments array for the task */
|
||||
OBJC_EXPORT NSString * const BMScriptOptionsTaskArgumentsKey;
|
||||
/*! Currently unused. */
|
||||
OBJC_EXPORT NSString * const BMScriptOptionsVersionKey; /* currently unused */
|
||||
|
||||
/*!
|
||||
* Thrown when the template is not saturated with an argument.
|
||||
* Call BMScript.saturateTemplateWithArgument: before calling BMScript.execute or one of its variants
|
||||
*/
|
||||
OBJC_EXPORT NSString * const BMScriptTemplateArgumentMissingException;
|
||||
/*!
|
||||
* Thrown when the template is not saturated with arguments.
|
||||
* Call BMScript.saturateTemplateWithArguments: before calling BMScript.execute or one of its variants
|
||||
*/
|
||||
OBJC_EXPORT NSString * const BMScriptTemplateArgumentsMissingException;
|
||||
|
||||
/*!
|
||||
* Thrown when a subclass promises to conform to the BMScriptLanguageProtocol
|
||||
* but consequently fails to declare the proper header.
|
||||
*/
|
||||
OBJC_EXPORT NSString * const BMScriptLanguageProtocolDoesNotConformException;
|
||||
/*!
|
||||
* Thrown when a subclass promises to conform to the BMScriptLanguageProtocol
|
||||
* but consequently fails to implement all required methods.
|
||||
*/
|
||||
OBJC_EXPORT NSString * const BMScriptLanguageProtocolMethodMissingException;
|
||||
/*!
|
||||
* Thrown when a subclass accesses implemention details in an improper way.
|
||||
* Currently unused.
|
||||
*/
|
||||
OBJC_EXPORT NSString * const BMScriptLanguageProtocolIllegalAccessException;
|
||||
|
||||
/*!
|
||||
* @}
|
||||
*/
|
||||
|
||||
/*!
|
||||
* @addtogroup protocols Protocols
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*!
|
||||
* @protocol BMScriptLanguageProtocol
|
||||
* Must be implemented by subclasses to provide sensible defaults for language or tool specific values.
|
||||
*/
|
||||
@protocol BMScriptLanguageProtocol
|
||||
@required
|
||||
/*!
|
||||
* Returns the options dictionary. This is required.
|
||||
* @see #BMSynthesizeOptions and bmScriptOptionsDictionary.m
|
||||
*/
|
||||
- (NSDictionary *) defaultOptionsForLanguage NS_RETURNS_RETAINED;
|
||||
@optional
|
||||
/*!
|
||||
* Returns the default script source. This is optional and will be set to a placeholder if absent.
|
||||
* You might want to implement this if you plan on using plain alloc/init with your subclass a lot since
|
||||
* alloc/init will pull this in as default script if no script source was supplied to the designated initalizer.
|
||||
*/
|
||||
- (NSString *) defaultScriptSourceForLanguage NS_RETURNS_RETAINED;
|
||||
@end
|
||||
|
||||
/*!
|
||||
* @protocol BMScriptDelegateProtocol
|
||||
* Objects conforming to this protocol may pose as delegates for BMScript.
|
||||
*/
|
||||
@protocol BMScriptDelegateProtocol
|
||||
@optional
|
||||
/*!
|
||||
* If implemented, called whenever a history item is about to be added to the history.
|
||||
* Delegation methods beginning with <i>should</i> give the delegate the power to abort the operation by returning NO.
|
||||
*
|
||||
* @param historyItem a history item is an NSArray with two entries: the script and the result when that script was executed.
|
||||
*/
|
||||
- (BOOL) shouldAddItemToHistory:(NSArray *)historyItem;
|
||||
/*!
|
||||
* If implemented, called whenever a history item is about to be returned from the history.
|
||||
* Delegation methods beginning with <i>should</i> give the delegate the power to abort the operation by returning NO.
|
||||
*
|
||||
* @param historyItem a history item is an NSArray with two entries: the script and the result when that script was executed.
|
||||
*/
|
||||
- (BOOL) shouldReturnItemFromHistory:(NSString *)historyItem;
|
||||
/*!
|
||||
* If implemented, called whenever BMScript.result is about to change.
|
||||
* Delegation methods beginning with <i>should</i> give the delegate the power to abort the operation by returning NO.
|
||||
*
|
||||
* @param aString the string that will be used as new value if this method returns YES.
|
||||
*/
|
||||
- (BOOL) shouldSetResult:(NSString *)aString;
|
||||
/*!
|
||||
* If implemented, called during execution in background (non-blocking) whenever new data is available.
|
||||
* Delegation methods beginning with <i>should</i> give the delegate the power to abort the operation by returning NO.
|
||||
* @param string the string that will be used as new value if this method returns YES.
|
||||
*/
|
||||
- (BOOL) shouldAppendPartialResult:(NSString *)string;
|
||||
/*!
|
||||
* If implemented, called whenever BMScript.script is set to a new value.
|
||||
* Delegation methods beginning with <i>should</i> give the delegate the power to abort the operation by returning NO.
|
||||
* Can be used to guard against malicious cases if the script comes directly from the end-user.
|
||||
* @note This delegate is not called during initialization of a new instance. It is only triggered when changing BMScript.script after initialization is complete.
|
||||
* @param aScript the script that will be used as new value if this method returns YES.
|
||||
*/
|
||||
- (BOOL) shouldSetScript:(NSString *)aScript;
|
||||
/*!
|
||||
* If implemented, called whenever BMScript.options is set to a new value.
|
||||
* Delegation methods beginning with <i>should</i> give the delegate the power to abort the operation by returning NO.
|
||||
* Can be used to guard against malicious cases if the options come directly from the end-user.
|
||||
* @param opts the dictionary that will be used as new value if this method returns YES.
|
||||
*/
|
||||
- (BOOL) shouldSetOptions:(NSDictionary *)opts;
|
||||
/*!
|
||||
* If implemented, called before right before a new item is finally added to the history.
|
||||
* Delegation methods beginning with <i>will</i> give the delegate the power to change the value that will be used for the set/get operation by mutating the value passed in.
|
||||
* @param anItem the string that will be added
|
||||
*/
|
||||
- (NSString *) willAddItemToHistory:(NSString *)anItem;
|
||||
/*!
|
||||
* If implemented, called before right before an item is finally returned from the history.
|
||||
* Delegation methods beginning with <i>will</i> give the delegate the power to change the value that will be used for the set/get operation by mutating the value passed in.
|
||||
* @param anItem the string that will be returned
|
||||
*/
|
||||
- (NSString *) willReturnItemFromHistory:(NSString *)anItem;
|
||||
/*!
|
||||
* If implemented, called before right before a string is appended to BMScript.partialResult.
|
||||
* Delegation methods beginning with <i>will</i> give the delegate the power to change the value that will be used for the set/get operation by mutating the value passed in.
|
||||
* @param string the string that will be appended
|
||||
*/
|
||||
- (NSString *) willAppendPartialResult:(NSString *)string;
|
||||
/*!
|
||||
* If implemented, called before right before BMScript.result is set to a new value.
|
||||
* Delegation methods beginning with <i>will</i> give the delegate the power to change the value that will be used for the set/get operation by mutating the value passed in.
|
||||
* @param aString the string that will be used as result
|
||||
*/
|
||||
- (NSString *) willSetResult:(NSString *)aString;
|
||||
/*!
|
||||
* If implemented, called before right before BMScript.script is set to a new value.
|
||||
* Delegation methods beginning with <i>will</i> give the delegate the power to change the value that will be used for the set/get operation by mutating the value passed in.
|
||||
* @param aScript the string that will be used as script
|
||||
*/
|
||||
- (NSString *) willSetScript:(NSString *)aScript;
|
||||
/*!
|
||||
* If implemented, called before right before BMScript.options is set to a new value.
|
||||
* Delegation methods beginning with <i>will</i> give the delegate the power to change the value that will be used for the set/get operation by mutating the value passed in.
|
||||
* @param opts the dictionary that will be used as options
|
||||
*/
|
||||
- (NSDictionary *) willSetOptions:(NSDictionary *)opts;
|
||||
|
||||
@end
|
||||
|
||||
/*! @} */
|
||||
|
||||
/*!
|
||||
* @class BMScript
|
||||
* A decorator class to NSTask providing elegant and easy access to the shell.
|
||||
*/
|
||||
@interface BMScript : NSObject <NSCoding, NSCopying, NSMutableCopying, BMScriptDelegateProtocol> {
|
||||
@protected
|
||||
NSString * script;
|
||||
NSDictionary * options;
|
||||
id delegate;
|
||||
@private
|
||||
NSString * result;
|
||||
NSString * partialResult;
|
||||
BOOL isTemplate;
|
||||
NSMutableArray * history;
|
||||
NSTask * task;
|
||||
NSPipe * pipe;
|
||||
NSTask * bgTask;
|
||||
NSPipe * bgPipe;
|
||||
NSInteger returnValue;
|
||||
NSInteger bgTaskReturnValue;
|
||||
}
|
||||
|
||||
// Doxygen seems to "swallow" the first property item and not generate any documentation for it
|
||||
// even if we put a proper documentation comment in front of it. It is unclear if that is the case
|
||||
// only for this particular file or if there is a bug that globally causes it. As a workaround
|
||||
// we take one of the hidden properties and put it up front to be swallowed since we don't want it
|
||||
// to appear in the docs anyway.
|
||||
@property (BM_ATOMIC retain) NSMutableArray * history;
|
||||
|
||||
/*! Gets or sets the script to execute. It's safe to change the script after a preceeding execution. */
|
||||
@property (BM_ATOMIC copy) NSString * script;
|
||||
/*!
|
||||
* Gets or sets options for the command line tool used to execute the script.
|
||||
* The options consist of a dictionary with two keys:
|
||||
* - #BMScriptOptionsTaskLaunchPathKey which is used to set the path to the executable of the tool, and
|
||||
* - #BMScriptOptionsTaskArgumentsKey an NSArray of strings to supply as the arguments to the tool
|
||||
*
|
||||
* <div class="box important">
|
||||
<div class="table">
|
||||
<div class="row">
|
||||
<div class="label cell">Important:</div>
|
||||
<div class="message cell">
|
||||
<b>DO NOT</b> supply the script source as part of the task arguments, as it
|
||||
will be added later by the class. If you add the script source directly with
|
||||
the task arguments you rob the delegate of a chance to review the script and
|
||||
change it or abort in case of problems.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
* </div>
|
||||
*
|
||||
* @sa #BMSynthesizeOptions(path, args)
|
||||
*/
|
||||
@property (BM_ATOMIC retain) NSDictionary * options;
|
||||
/*!
|
||||
* Gets and sets the delegate for BMScript. It is not enforced that the object passed to the accessor conforms
|
||||
* to the BMScriptLanguageProtocol. A compiler warning however should be issued.
|
||||
*/
|
||||
@property (BM_ATOMIC assign) id<BMScriptDelegateProtocol> delegate;
|
||||
|
||||
/*! Gets the last execution result. May return nil if the script hasn't been executed yet. */
|
||||
@property (BM_ATOMIC copy, readonly, getter=lastResult) NSString * result;
|
||||
|
||||
// MARK: Initializer Methods
|
||||
|
||||
|
||||
/*!
|
||||
* Initialize a new BMScript instance. If no options are specified and the class is a descendant of BMScript it will call the class'
|
||||
* implementations of BMScriptLanguageProtocol-p.defaultOptionsForLanguage and, if implemented, BMScriptLanguageProtocol-p.defaultScriptSourceForLanguage.
|
||||
* BMScript on the other hand defaults to <span class="sourcecode">@"/bin/echo"</span> and <span class="sourcecode">@"<script source placeholder>"</span>.
|
||||
*/
|
||||
- (id) init;
|
||||
/*!
|
||||
* Initialize a new BMScript instance with a script source. This is the designated initializer.
|
||||
* @throw BMScriptLanguageProtocolDoesNotConformException Thrown when a subclass of BMScript does not conform to the BMScriptLanguageProtocol
|
||||
* @throw BMScriptLanguageProtocolMethodMissingException Thrown when a subclass of BMScript does not implement all required methods of the BMScriptLanguageProtocol
|
||||
* @param scriptSource a string containing commands to execute
|
||||
* @param scriptOptions a dictionary containing the task options
|
||||
*/
|
||||
- (id) initWithScriptSource:(NSString *)scriptSource options:(NSDictionary *)scriptOptions; /* designated initializer */
|
||||
/*!
|
||||
* Initialize a new BMScript instance with a template source.
|
||||
* A template needs to be saturated before it can be used.
|
||||
* @param templateSource a string containing a template with magic tokens to saturate resulting in commands to execute.
|
||||
* @param scriptOptions a dictionary containing the task options
|
||||
* @see saturateTemplateWithArgument: and variants.
|
||||
*/
|
||||
- (id) initWithTemplateSource:(NSString *)templateSource options:(NSDictionary *)scriptOptions;
|
||||
/*!
|
||||
* Initialize a new BMScript instance.
|
||||
* @param path a string pointing to a file on disk. The contents of this file will be used as source script.
|
||||
* @param scriptOptions a dictionary containing the task options
|
||||
*/
|
||||
- (id) initWithContentsOfFile:(NSString *)path options:(NSDictionary *)scriptOptions;
|
||||
/*!
|
||||
* Initialize a new BMScript instance.
|
||||
* @param path a string pointing to a <i>template</i> file on disk.
|
||||
* The contents of this file will be used as template which must be <b>saturated</b> before calling BMScript.execute or one of its variants.
|
||||
* @param scriptOptions a dictionary containing the task options
|
||||
* @see #saturateTemplateWithArgument: et al.
|
||||
*/
|
||||
- (id) initWithContentsOfTemplateFile:(NSString *)path options:(NSDictionary *)scriptOptions;
|
||||
|
||||
|
||||
// MARK: Factory Methods
|
||||
|
||||
|
||||
/*!
|
||||
* Returns an autoreleased instance of BMScript.
|
||||
* @see #initWithScriptSource:options: et al.
|
||||
*/
|
||||
+ (id) scriptWithSource:(NSString *)scriptSource options:(NSDictionary *)scriptOptions;
|
||||
/*!
|
||||
* Returns an autoreleased instance of BMScript.
|
||||
* @see #initWithScriptSource:options: et al.
|
||||
*/
|
||||
+ (id) scriptWithContentsOfFile:(NSString *)path options:(NSDictionary *)scriptOptions;
|
||||
/*!
|
||||
* Returns an autoreleased instance of BMScript.
|
||||
*
|
||||
* If you use this method you need to saturate the script template with values in order to
|
||||
* turn it into an executable script source.
|
||||
*
|
||||
* @see #saturateTemplateWithArgument: at al.
|
||||
* @see #initWithScriptSource:options: et al.
|
||||
*/
|
||||
+ (id) scriptWithContentsOfTemplateFile:(NSString *)path options:(NSDictionary *)scriptOptions;
|
||||
|
||||
|
||||
// MARK: Execution
|
||||
|
||||
|
||||
/*!
|
||||
* Executes the script with a synchroneous (blocking) task. You get the result with BMScript.lastResult.
|
||||
* @return YES if the execution was successful, NO on error
|
||||
*/
|
||||
- (TerminationStatus) execute;
|
||||
/*!
|
||||
* Executes the script with a synchroneous (blocking) task and stores the result in &result.
|
||||
* @param results a pointer to an NSString where the result should be written to
|
||||
* @return YES if the execution was successful, NO on error
|
||||
*/
|
||||
- (TerminationStatus) executeAndReturnResult:(NSString **)results;
|
||||
/*!
|
||||
* Executes the script with a synchroneous (blocking) task. To get the result call BMScript.lastResult.
|
||||
* @param results a pointer to an NSString where the result should be written to
|
||||
* @param error a pointer to an NSError where errors should be written to
|
||||
* @return YES if the execution was successful, NO on error
|
||||
*/
|
||||
- (TerminationStatus) executeAndReturnResult:(NSString **)results error:(NSError **)error;
|
||||
/*!
|
||||
* Executes the script with a asynchroneous (non-blocking) task. The result will be posted with the help of a notifcation item.
|
||||
* @see @link NonBlockingExecutionExample.m @endlink
|
||||
*/
|
||||
- (void) executeInBackgroundAndNotify;
|
||||
|
||||
|
||||
// MARK: Templates
|
||||
|
||||
|
||||
/*!
|
||||
* Replaces a single %{} construct in the template.
|
||||
* @param tArg the value that should be inserted
|
||||
* @return YES if the replacement was successful, NO on error
|
||||
*/
|
||||
- (BOOL) saturateTemplateWithArgument:(NSString *)tArg;
|
||||
/*!
|
||||
* Replaces multiple %{} constructs in the template in the order of occurrence.
|
||||
* @param firstArg the first value which should be inserted
|
||||
* @param ... the remaining values to be inserted in order of occurrence
|
||||
* @return YES if the replacements were successful, NO on error
|
||||
*/
|
||||
- (BOOL) saturateTemplateWithArguments:(NSString *)firstArg, ...;
|
||||
/*!
|
||||
* Replaces multiple %{<i>KEY</i>} constructs in the template.
|
||||
* The <i>KEY</i> phrase is a variant and describes the name of a key in the dictionary passed to this method.
|
||||
* If the key is found in the dictionary its corresponding value will be used to replace the magic token in the template.
|
||||
* @param dictionary a dictionary with keys and their values which should be inserted
|
||||
* @return YES if the replacements were successful, NO on error
|
||||
*/
|
||||
- (BOOL) saturateTemplateWithDictionary:(NSDictionary *)dictionary;
|
||||
|
||||
// MARK: History
|
||||
|
||||
/*!
|
||||
* Returns a cached script source from the history.
|
||||
* @param index index of the item to return. May return nil if the history does not contain any objects.
|
||||
*/
|
||||
- (NSString *) scriptSourceFromHistoryAtIndex:(NSInteger)index;
|
||||
/*!
|
||||
* Returns a cached result from the history.
|
||||
* @param index index of the item to return. May return nil if the history does not contain any objects.
|
||||
*/
|
||||
- (NSString *) resultFromHistoryAtIndex:(NSInteger)index;
|
||||
/*!
|
||||
* Returns the last cached script source from the history.
|
||||
* May return nil if the history does not contain any objects.
|
||||
*/
|
||||
- (NSString *) lastScriptSourceFromHistory;
|
||||
/*!
|
||||
* Returns the last cached result from the history.
|
||||
* May return nil if the history does not contain any objects.
|
||||
*/
|
||||
- (NSString *) lastResultFromHistory;
|
||||
|
||||
// MARK: Equality
|
||||
|
||||
/*!
|
||||
* Returns YES if the source script and launch path are equal.
|
||||
*/
|
||||
- (BOOL) isEqual:(BMScript *)other;
|
||||
/*!
|
||||
* Returns YES if both script sources are equal.
|
||||
*/
|
||||
- (BOOL) isEqualToScript:(BMScript *)other;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
* A category on BMScript adding default factory methods for Ruby, Python and Perl.
|
||||
* The task options use default paths (for 10.5 and 10.6) for the task launch path.
|
||||
*/
|
||||
@interface BMScript(CommonScriptLanguagesFactories)
|
||||
/*!
|
||||
* Returns an autoreleased Ruby script ready for execution.
|
||||
* @param scriptSource the script source containing the commands to execute.
|
||||
*/
|
||||
+ (id) rubyScriptWithSource:(NSString *)scriptSource;
|
||||
/*!
|
||||
* Returns an autoreleased Ruby script from a file ready for execution.
|
||||
* @param path path to a file containing the commands to execute.
|
||||
*/
|
||||
+ (id) rubyScriptWithContentsOfFile:(NSString *)path;
|
||||
/*!
|
||||
* Returns an autoreleased Ruby script template ready for saturation.
|
||||
* @param path path to a template file containing the tokens to replace.
|
||||
*/
|
||||
+ (id) rubyScriptWithContentsOfTemplateFile:(NSString *)path;
|
||||
/*!
|
||||
* Returns an autoreleased Python script ready for execution.
|
||||
* @param scriptSource the script source containing the commands to execute.
|
||||
*/
|
||||
+ (id) pythonScriptWithSource:(NSString *)scriptSource;
|
||||
/*!
|
||||
* Returns an autoreleased Python script from a file ready for execution.
|
||||
* @param path path to a file containing the commands to execute.
|
||||
*/
|
||||
+ (id) pythonScriptWithContentsOfFile:(NSString *)path;
|
||||
/*!
|
||||
* Returns an autoreleased Python script template ready for saturation.
|
||||
* @param path path to a template file containing the tokens to replace.
|
||||
*/
|
||||
+ (id) pythonScriptWithContentsOfTemplateFile:(NSString *)path;
|
||||
/*!
|
||||
* Returns an autoreleased Perl script ready for execution.
|
||||
* @param scriptSource the script source containing the commands to execute.
|
||||
*/
|
||||
+ (id) perlScriptWithSource:(NSString *)scriptSource;
|
||||
/*!
|
||||
* Returns an autoreleased Perl script from a file ready for execution.
|
||||
* @param path path to a file containing the commands to execute.
|
||||
*/
|
||||
+ (id) perlScriptWithContentsOfFile:(NSString *)path;
|
||||
/*!
|
||||
* Returns an autoreleased Perl script template ready for saturation.
|
||||
* @param path path to a template file containing the tokens to replace.
|
||||
*/
|
||||
+ (id) perlScriptWithContentsOfTemplateFile:(NSString *)path;
|
||||
/*!
|
||||
* Returns an autoreleased Shell script ready for execution.
|
||||
* @param scriptSource the script source containing the commands to execute.
|
||||
*/
|
||||
+ (id) shellScriptWithSource:(NSString *)scriptSource;
|
||||
/*!
|
||||
* Returns an autoreleased Shell script from a file ready for execution.
|
||||
* @param path path to a file containing the commands to execute.
|
||||
*/
|
||||
+ (id) shellScriptWithContentsOfFile:(NSString *)path;
|
||||
/*!
|
||||
* Returns an autoreleased Shell script template ready for saturation.
|
||||
* @param path path to a template file containing the tokens to replace.
|
||||
*/
|
||||
+ (id) shellScriptWithContentsOfTemplateFile:(NSString *)path;
|
||||
|
||||
@end
|
||||
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
|
||||
/*!A category on NSString providing compatibility for missing methods on 10.4 (Tiger). */
|
||||
@interface NSString (BMScriptNSString10_4Compatibility)
|
||||
/*!
|
||||
* An implementation of the 10.5 (Leopard) method of NSString.
|
||||
* Replaces all occurrences of a string with another string with the ability to define the search range and other comparison options.
|
||||
* @param target the string to replace
|
||||
* @param replacement the string to replace target with
|
||||
* @param options on 10.5 this parameter is of type NSStringCompareOptions an untagged enum. On 10.4 you can use the following options:
|
||||
* - 1 (NSCaseInsensitiveSearch)
|
||||
* - 2 (NSLiteralSearch: Exact character-by-character equivalence)
|
||||
* - 4 (NSBackwardsSearch: Search from end of source string)
|
||||
* - 8 (NSAnchoredSearch: Search is limited to start (or end, if NSBackwardsSearch) of source string)
|
||||
* - 64 (NSNumericSearch: Numbers within strings are compared using numeric value, that is, Foo2.txt < Foo7.txt < Foo25.txt)
|
||||
* @param searchRange an NSRange defining the location and length the search should be limited to
|
||||
* @deprecated Deprecated in 10.5 (Leopard) in favor of NSString's own implementation.
|
||||
*/
|
||||
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(unsigned)options range:(NSRange)searchRange; DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER
|
||||
/*!
|
||||
* An implementation of the 10.5 (Leopard) method of NSString. Replaces all occurrences of a string with another string.
|
||||
* Calls stringByReplacingOccurrencesOfString:withString:options:range: with default options 0 and searchRange the full length of the searched string.
|
||||
* @deprecated Deprecated in 10.5 (Leopard) in favor of NSString's own implementation.
|
||||
*/
|
||||
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement; DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER
|
||||
@end
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* A category on NSString providing some handy utility functions
|
||||
* for end user display of strings.
|
||||
*/
|
||||
@interface NSString (BMScriptStringUtilities)
|
||||
/*!
|
||||
* Replaces all occurrences of newlines, carriage returns, backslashes, single/double quotes and percentage signs with their escaped versions
|
||||
* @return the quoted string
|
||||
*/
|
||||
- (NSString *) quote;
|
||||
/*!
|
||||
* Truncates a string to 20 characters and adds an ellipsis ("...").
|
||||
* @return the truncated string
|
||||
*/
|
||||
- (NSString *) truncate;
|
||||
/*!
|
||||
* Truncates a string to len characters plus ellipsis.
|
||||
* @param len new length. ellipsis will be added.
|
||||
* @return the truncated string
|
||||
*/
|
||||
- (NSString *) truncateToLength:(NSUInteger)len;
|
||||
/*!
|
||||
* Counts the number of occurrences of a string in another string
|
||||
* @param aString the string to count occurrences of
|
||||
* @return NSInteger with the amount of occurrences
|
||||
*/
|
||||
- (NSInteger) countOccurrencesOfString:(NSString *)aString;
|
||||
/*!
|
||||
* Returns a string wrapped with single quotes.
|
||||
*/
|
||||
- (NSString *) wrapSingleQuotes;
|
||||
/*!
|
||||
* Returns a string wrapped with double quotes.
|
||||
*/
|
||||
- (NSString *) wrapDoubleQuotes;
|
||||
@end
|
||||
|
||||
/*! A category on NSDictionary providing handy utility and convenience functions. */
|
||||
@interface NSDictionary (BMScriptUtilities)
|
||||
/*!
|
||||
* Returns a new dictionary by adding another object.
|
||||
* @param object the object to add
|
||||
* @param key the key to add it for
|
||||
* @return the modified dictionary
|
||||
*/
|
||||
- (NSDictionary *) dictionaryByAddingObject:(id)object forKey:(id)key;
|
||||
@end
|
||||
|
||||
/*! A category on NSObject. Provides introspection and other utility methods. */
|
||||
@interface NSObject (BMScriptUtilities)
|
||||
|
||||
/*!
|
||||
* Returns YES if self is a descendant of another class.
|
||||
* This differs from <span class="sourcecode">-[NSObject isMemberOfClass:someClass]</span>
|
||||
* and <span class="sourcecode">-[NSObject isKindOfClass:someClass]</span> in that it
|
||||
* excludes anotherClass (the parent) in the comparison. Normally -isKindOfClass: returns
|
||||
* YES for all instances, and -isMemberOfClass: for all instances plus inherited subclasses,
|
||||
* both including their parent class anotherClass. Here we return NO if <span class="sourcecode">[self class]</span>
|
||||
* is equal to <span class="sourcecode">[anotherClass class]</span>.
|
||||
* @param anotherClass the class type to check against
|
||||
*/
|
||||
- (BOOL) isDescendantOfClass:(Class)anotherClass;
|
||||
|
||||
@end
|
||||
|
||||
/*! A category on NSArray. Provides introspection and other utility methods. */
|
||||
@interface NSArray (BMScriptUtilities)
|
||||
/*! Returny YES if the array consists only of empty strings. */
|
||||
- (BOOL) isEmptyStringArray;
|
||||
/*! Returns YES if the array was created with no objects. <span class="sourcecode">[NSArray arrayWithObjects:nil]</span> for example can do this. */
|
||||
- (BOOL) isZeroArray;
|
||||
@end
|
||||
@@ -1,5 +1,12 @@
|
||||
@interface QLPreviewPanel : NSPanel
|
||||
+ (id)sharedPreviewPanel;
|
||||
|
||||
// part of the public QL API
|
||||
+ (BOOL)sharedPreviewPanelExists;
|
||||
- (void)reloadData;
|
||||
- (void)setDataSource:(id)source;
|
||||
|
||||
// the private QL API
|
||||
+ (id)_previewPanel;
|
||||
+ (BOOL)isSharedPreviewPanelLoaded;
|
||||
- (id)initWithContentRect:(struct _NSRect)fp8 styleMask:(unsigned int)fp24 backing:(unsigned int)fp28 defer:(BOOL)fp32;
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// Common.xcconfig
|
||||
// GitX
|
||||
//
|
||||
// Created by Andre Berg on 25.03.10.
|
||||
// Copyright 2010 Berg Media. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// Archs and Target SDKs
|
||||
|
||||
ARCHS = ppc i386 x86_64
|
||||
SDKROOT = macosx10.5
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.5
|
||||
|
||||
// Search Paths
|
||||
|
||||
HEADER_SEARCH_PATHS = libgit2/src
|
||||
LIBRARY_SEARCH_PATHS = libgit2
|
||||
FRAMEWORK_SEARCH_PATHS = $(inherited) "$(SRCROOT)"
|
||||
|
||||
// Info.plist
|
||||
|
||||
INFOPLIST_PREPROCESS = YES
|
||||
INFOPLIST_OTHER_PREPROCESSOR_FLAGS = -traditional
|
||||
INFOPLIST_FILE = Info.plist
|
||||
INFOPLIST_PREFIX_HEADER = $PROJECT_TEMP_DIR/revision // needed for the `git describe --long` output in the about dialog
|
||||
|
||||
// Compiler
|
||||
|
||||
GCC_ENABLE_OBJC_GC = required
|
||||
// GCC_VERSION = // System Default (GCC 4.2)
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42 // LLVM GCC 4.2
|
||||
// GCC_VERSION = com.apple.compilers.llvm.clang.1_0 // Clang LLVM 1.0
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99
|
||||
|
||||
// Prefix Header
|
||||
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES
|
||||
GCC_PREFIX_HEADER = GitX_Prefix.pch
|
||||
|
||||
// Linking
|
||||
|
||||
PREBINDING = NO
|
||||
ZERO_LINK = NO // this is no longer needed
|
||||
|
||||
// Other
|
||||
|
||||
LLVM_LTO = NO // Link-Time Optimization causes a Rel32 address space error when linking (since we now target x86_64 inclusively)
|
||||
|
||||
@@ -71,5 +71,6 @@
|
||||
- (void)crossFadeView:(NSView *)oldView withView:(NSView *)newView;
|
||||
- (NSRect)frameForView:(NSView *)view;
|
||||
|
||||
- (NSString *)defaultViewIdentifier;
|
||||
|
||||
@end
|
||||
|
||||
@@ -74,13 +74,13 @@ static DBPrefsWindowController *_sharedPrefsWindowController = nil;
|
||||
// Create a new window to display the preference views.
|
||||
// If the developer attached a window to this controller
|
||||
// in Interface Builder, it gets replaced with this one.
|
||||
NSWindow *window = [[[NSWindow alloc] initWithContentRect:NSMakeRect(0,0,1000,1000)
|
||||
NSPanel *panel = [[[NSPanel alloc] initWithContentRect:NSMakeRect(0,0,1000,1000)
|
||||
styleMask:(NSTitledWindowMask |
|
||||
NSClosableWindowMask |
|
||||
NSMiniaturizableWindowMask)
|
||||
backing:NSBackingStoreBuffered
|
||||
defer:YES] autorelease];
|
||||
[self setWindow:window];
|
||||
[self setWindow:panel];
|
||||
contentSubview = [[[NSView alloc] initWithFrame:[[[self window] contentView] frame]] autorelease];
|
||||
[contentSubview setAutoresizingMask:(NSViewMinYMargin | NSViewWidthSizable)];
|
||||
[[[self window] contentView] addSubview:contentSubview];
|
||||
@@ -211,9 +211,9 @@ static DBPrefsWindowController *_sharedPrefsWindowController = nil;
|
||||
[toolbar release];
|
||||
}
|
||||
|
||||
NSString *firstIdentifier = [toolbarIdentifiers objectAtIndex:0];
|
||||
[[[self window] toolbar] setSelectedItemIdentifier:firstIdentifier];
|
||||
[self displayViewForIdentifier:firstIdentifier animate:NO];
|
||||
NSString *identifier = [self defaultViewIdentifier];
|
||||
[[[self window] toolbar] setSelectedItemIdentifier:identifier];
|
||||
[self displayViewForIdentifier:identifier animate:NO];
|
||||
|
||||
[[self window] center];
|
||||
|
||||
@@ -370,7 +370,7 @@ static DBPrefsWindowController *_sharedPrefsWindowController = nil;
|
||||
NSEnumerator *subviewsEnum = [[contentSubview subviews] reverseObjectEnumerator];
|
||||
|
||||
// This is our visible view. Just get past it.
|
||||
subview = [subviewsEnum nextObject];
|
||||
[subviewsEnum nextObject];
|
||||
|
||||
// Remove everything else. There should be just one, but
|
||||
// if the user does a lot of fast clicking, we might have
|
||||
@@ -406,4 +406,16 @@ static DBPrefsWindowController *_sharedPrefsWindowController = nil;
|
||||
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark Default View
|
||||
|
||||
|
||||
- (NSString *)defaultViewIdentifier
|
||||
{
|
||||
return [toolbarIdentifiers objectAtIndex:0];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
//
|
||||
// Debug.xcconfig
|
||||
// GitX
|
||||
//
|
||||
// Created by Andre Berg on 25.03.10.
|
||||
// Copyright 2010 Berg Media. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "Common.xcconfig"
|
||||
|
||||
// Macros
|
||||
|
||||
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = DEBUG_BUILD
|
||||
|
||||
OTHER_CFLAGS = -fdiagnostics-show-option
|
||||
|
||||
// Warnings
|
||||
|
||||
GCC_WARN_UNUSED_VARIABLE = YES
|
||||
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES
|
||||
@@ -0,0 +1,818 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1050</int>
|
||||
<string key="IBDocument.SystemVersion">10C540</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">759</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.25</string>
|
||||
<string key="IBDocument.HIToolboxVersion">458.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">759</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="3"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSCustomObject" id="1001">
|
||||
<string key="NSClassName">PBCloneRepsitoryToSheet</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1003">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1004">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="302983545">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSTextField" id="470406788">
|
||||
<reference key="NSNextResponder" ref="302983545"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 36}, {283, 17}}</string>
|
||||
<reference key="NSSuperview" ref="302983545"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="238493634">
|
||||
<int key="NSCellFlags">68288064</int>
|
||||
<int key="NSCellFlags2">138413056</int>
|
||||
<string key="NSContents">Select a folder to clone into</string>
|
||||
<object class="NSFont" key="NSSupport" id="451842987">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="470406788"/>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="762546328">
|
||||
<reference key="NSNextResponder" ref="302983545"/>
|
||||
<int key="NSvFlags">269</int>
|
||||
<string key="NSFrame">{{77, 12}, {163, 18}}</string>
|
||||
<reference key="NSSuperview" ref="302983545"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="799312909">
|
||||
<int key="NSCellFlags">-2080244224</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Create bare repository</string>
|
||||
<reference key="NSSupport" ref="451842987"/>
|
||||
<reference key="NSControlView" ref="762546328"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSSwitch</string>
|
||||
</object>
|
||||
<object class="NSButtonImageSource" key="NSAlternateImage">
|
||||
<string key="NSImageName">NSSwitch</string>
|
||||
</object>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{317, 63}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">cloneToAccessoryView</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="302983545"/>
|
||||
</object>
|
||||
<int key="connectionID">6</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">value: isBare</string>
|
||||
<reference key="source" ref="762546328"/>
|
||||
<reference key="destination" ref="1001"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="762546328"/>
|
||||
<reference key="NSDestination" ref="1001"/>
|
||||
<string key="NSLabel">value: isBare</string>
|
||||
<string key="NSBinding">value</string>
|
||||
<string key="NSKeyPath">isBare</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">8</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">message</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="470406788"/>
|
||||
</object>
|
||||
<int key="connectionID">11</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="1001"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="1003"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="1004"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">3</int>
|
||||
<reference key="object" ref="302983545"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="762546328"/>
|
||||
<reference ref="470406788"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">4</int>
|
||||
<reference key="object" ref="762546328"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="799312909"/>
|
||||
</object>
|
||||
<reference key="parent" ref="302983545"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">5</int>
|
||||
<reference key="object" ref="799312909"/>
|
||||
<reference key="parent" ref="762546328"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">9</int>
|
||||
<reference key="object" ref="470406788"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="238493634"/>
|
||||
</object>
|
||||
<reference key="parent" ref="302983545"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10</int>
|
||||
<reference key="object" ref="238493634"/>
|
||||
<reference key="parent" ref="470406788"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>10.IBPluginDependency</string>
|
||||
<string>3.IBEditorWindowLastContentRect</string>
|
||||
<string>3.IBPluginDependency</string>
|
||||
<string>4.IBPluginDependency</string>
|
||||
<string>5.IBPluginDependency</string>
|
||||
<string>9.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{758, 1074}, {317, 63}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">11</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">PBCloneRepsitoryToSheet</string>
|
||||
<string key="superclassName">NSWindowController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>cloneToAccessoryView</string>
|
||||
<string>message</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>NSView</string>
|
||||
<string>NSTextField</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">PBCloneRepsitoryToSheet.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSActionCell</string>
|
||||
<string key="superclassName">NSCell</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="1014545486">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="550502967">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="937524086">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSButton</string>
|
||||
<string key="superclassName">NSControl</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSButtonCell</string>
|
||||
<string key="superclassName">NSActionCell</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSCell</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSControl</string>
|
||||
<string key="superclassName">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="785954635">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSFormatter</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSMenu</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="674909843">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="1014545486"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="550502967"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="937524086"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="785954635"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="674909843"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="1023986861">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Sparkle.framework/Headers/SUUpdater.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebDownload.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebEditingDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebFrameLoadDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebJavaPlugIn.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebPlugin.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebPluginContainer.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebPolicyDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebResourceLoadDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebScriptObject.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebUIDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSResponder</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSTextField</string>
|
||||
<string key="superclassName">NSControl</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSTextFieldCell</string>
|
||||
<string key="superclassName">NSActionCell</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<reference key="sourceIdentifier" ref="1023986861"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSWindow</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSWindow</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSWindow</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSWindowController</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<object class="NSMutableDictionary" key="actions">
|
||||
<string key="NS.key.0">showWindow:</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<integer value="1050" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3000" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">../GitX.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -0,0 +1,883 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1050</int>
|
||||
<string key="IBDocument.SystemVersion">10F569</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">788</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.29</string>
|
||||
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">788</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="2"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSCustomObject" id="1001">
|
||||
<string key="NSClassName">PBRemoteProgressSheet</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1003">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1004">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="1005">
|
||||
<int key="NSWindowStyleMask">1</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{196, 417}, {397, 93}}</string>
|
||||
<int key="NSWTFlags">544736256</int>
|
||||
<string key="NSWindowTitle">Window</string>
|
||||
<string key="NSWindowClass">NSWindow</string>
|
||||
<nil key="NSViewClass"/>
|
||||
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||
<object class="NSView" key="NSWindowView" id="1006">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSProgressIndicator" id="214375840">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">1314</int>
|
||||
<object class="NSPSMatrix" key="NSDrawMatrix"/>
|
||||
<string key="NSFrame">{{18, 16}, {361, 20}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<int key="NSpiFlags">16394</int>
|
||||
<double key="NSMaxValue">100</double>
|
||||
</object>
|
||||
<object class="NSTextField" id="939163389">
|
||||
<reference key="NSNextResponder" ref="1006"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<string key="NSFrame">{{17, 56}, {363, 17}}</string>
|
||||
<reference key="NSSuperview" ref="1006"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="476186767">
|
||||
<int key="NSCellFlags">67239424</int>
|
||||
<int key="NSCellFlags2">272891904</int>
|
||||
<string key="NSContents">Operation in progress.</string>
|
||||
<object class="NSFont" key="NSSupport">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="939163389"/>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{397, 93}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
|
||||
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">window</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="1005"/>
|
||||
</object>
|
||||
<int key="connectionID">21</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">progressIndicator</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="214375840"/>
|
||||
</object>
|
||||
<int key="connectionID">22</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">progressDescription</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="939163389"/>
|
||||
</object>
|
||||
<int key="connectionID">33</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="1001"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="1003"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="1004"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1</int>
|
||||
<reference key="object" ref="1005"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="1006"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Progress Window (Window)</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">2</int>
|
||||
<reference key="object" ref="1006"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="939163389"/>
|
||||
<reference ref="214375840"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">16</int>
|
||||
<reference key="object" ref="214375840"/>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">31</int>
|
||||
<reference key="object" ref="939163389"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="476186767"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1006"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">32</int>
|
||||
<reference key="object" ref="476186767"/>
|
||||
<reference key="parent" ref="939163389"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>1.IBEditorWindowLastContentRect</string>
|
||||
<string>1.IBPluginDependency</string>
|
||||
<string>1.IBWindowTemplateEditedContentRect</string>
|
||||
<string>1.NSWindowTemplate.visibleAtLaunch</string>
|
||||
<string>1.WindowOrigin</string>
|
||||
<string>1.editorWindowContentRectSynchronizationRect</string>
|
||||
<string>1.windowTemplate.hasMinSize</string>
|
||||
<string>1.windowTemplate.minSize</string>
|
||||
<string>16.IBPluginDependency</string>
|
||||
<string>2.IBPluginDependency</string>
|
||||
<string>31.IBPluginDependency</string>
|
||||
<string>32.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>{{814, 835}, {397, 93}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{814, 835}, {397, 93}}</string>
|
||||
<boolean value="NO"/>
|
||||
<string>{196, 240}</string>
|
||||
<string>{{202, 428}, {480, 270}}</string>
|
||||
<boolean value="NO"/>
|
||||
<string>{420, 170}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">33</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">PBRemoteProgressSheet</string>
|
||||
<string key="superclassName">NSWindowController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>progressDescription</string>
|
||||
<string>progressIndicator</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>NSTextField</string>
|
||||
<string>NSProgressIndicator</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>progressDescription</string>
|
||||
<string>progressIndicator</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">progressDescription</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">progressIndicator</string>
|
||||
<string key="candidateClassName">NSProgressIndicator</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">PBRemoteProgressSheet.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSActionCell</string>
|
||||
<string key="superclassName">NSCell</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="410402024">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="1064883922">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="307820401">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSCell</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSControl</string>
|
||||
<string key="superclassName">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="436732488">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSFormatter</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSMenu</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="1058558911">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="410402024"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="1064883922"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="307820401"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="436732488"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="1058558911"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="76980010">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">ImageKit.framework/Headers/IKImageBrowserView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">ImageKit.framework/Headers/ImageKitDeprecated.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">PDFKit.framework/Headers/PDFDocument.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">PDFKit.framework/Headers/PDFView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuartzComposer.framework/Headers/QCCompositionParameterView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuartzComposer.framework/Headers/QCCompositionPickerView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuartzFilters.framework/Headers/QuartzFilterManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Sparkle.framework/Headers/SUUpdater.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebDownload.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebEditingDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebFrameLoadDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebJavaPlugIn.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebPlugin.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebPluginContainer.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebPolicyDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebResourceLoadDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebScriptObject.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebUIDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSProgressIndicator</string>
|
||||
<string key="superclassName">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSProgressIndicator.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSResponder</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSTextField</string>
|
||||
<string key="superclassName">NSControl</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSTextFieldCell</string>
|
||||
<string key="superclassName">NSActionCell</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<reference key="sourceIdentifier" ref="76980010"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSWindow</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSWindow</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSWindow</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSWindowController</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<object class="NSMutableDictionary" key="actions">
|
||||
<string key="NS.key.0">showWindow:</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||
<string key="NS.key.0">showWindow:</string>
|
||||
<object class="IBActionInfo" key="NS.object.0">
|
||||
<string key="name">showWindow:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<integer value="1050" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3000" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">../GitX.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -2,19 +2,16 @@
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1050</int>
|
||||
<string key="IBDocument.SystemVersion">10A432</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">732</string>
|
||||
<string key="IBDocument.AppKitVersion">1038</string>
|
||||
<string key="IBDocument.HIToolboxVersion">437.00</string>
|
||||
<string key="IBDocument.SystemVersion">10H574</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">804</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.35</string>
|
||||
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="NS.object.0">732</string>
|
||||
<string key="NS.object.0">804</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="87"/>
|
||||
<integer value="4"/>
|
||||
<integer value="62"/>
|
||||
<integer value="1"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
@@ -46,22 +43,22 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSTextField" id="441589300">
|
||||
<object class="NSTextField" id="63761450">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 54}, {99, 17}}</string>
|
||||
<string key="NSFrame">{{17, 22}, {166, 17}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="31526941">
|
||||
<object class="NSTextFieldCell" key="NSCell" id="467740597">
|
||||
<int key="NSCellFlags">68288064</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents">Git Executable:</string>
|
||||
<string key="NSContents">Reset all dialog warnings:</string>
|
||||
<object class="NSFont" key="NSSupport" id="734450335">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="441589300"/>
|
||||
<reference key="NSControlView" ref="63761450"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="124675276">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
@@ -75,13 +72,123 @@
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<object class="NSColor" key="NSColor" id="367847822">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="83909567">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{182, 12}, {137, 32}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="265220935">
|
||||
<int key="NSCellFlags">-2080244224</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Reset Warnings</string>
|
||||
<reference key="NSSupport" ref="734450335"/>
|
||||
<reference key="NSControlView" ref="83909567"/>
|
||||
<int key="NSButtonFlags">-2038021889</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<reference key="NSAlternateImage" ref="734450335"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="25030403">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{248, 118}, {41, 22}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1045854608">
|
||||
<int key="NSCellFlags">-1804468671</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="734450335"/>
|
||||
<reference key="NSControlView" ref="25030403"/>
|
||||
<bool key="NSDrawsBackground">YES</bool>
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">textBackgroundColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">textColor</string>
|
||||
<reference key="NSColor" ref="367847822"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="258144035">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{121, 120}, {122, 17}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1031567029">
|
||||
<int key="NSCellFlags">68288064</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents">Display at column:</string>
|
||||
<reference key="NSSupport" ref="734450335"/>
|
||||
<reference key="NSControlView" ref="258144035"/>
|
||||
<reference key="NSBackgroundColor" ref="124675276"/>
|
||||
<reference key="NSTextColor" ref="716218002"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="968361983">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 143}, {273, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="782438225">
|
||||
<int key="NSCellFlags">-2080244224</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Show column guide in commit message</string>
|
||||
<reference key="NSSupport" ref="734450335"/>
|
||||
<reference key="NSControlView" ref="968361983"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage" id="114317419">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSSwitch</string>
|
||||
</object>
|
||||
<object class="NSButtonImageSource" key="NSAlternateImage" id="690089052">
|
||||
<string key="NSImageName">NSSwitch</string>
|
||||
</object>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSTextField" id="441589300">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 92}, {99, 17}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="31526941">
|
||||
<int key="NSCellFlags">68288064</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents">Git Executable:</string>
|
||||
<reference key="NSSupport" ref="734450335"/>
|
||||
<reference key="NSControlView" ref="441589300"/>
|
||||
<reference key="NSBackgroundColor" ref="124675276"/>
|
||||
<reference key="NSTextColor" ref="716218002"/>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSPathControl" id="525163949">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
@@ -93,7 +200,7 @@
|
||||
<string>NSFilenamesPboardType</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{121, 50}, {179, 22}}</string>
|
||||
<string key="NSFrame">{{121, 88}, {179, 22}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPathCell" key="NSCell" id="331807888">
|
||||
@@ -115,7 +222,7 @@
|
||||
<object class="NSTextField" id="617839596">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{118, 0}, {192, 42}}</string>
|
||||
<string key="NSFrame">{{118, 52}, {192, 28}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="453728129">
|
||||
@@ -131,7 +238,7 @@
|
||||
<object class="NSButton" id="1032928366">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{306, 54}, {54, 14}}</string>
|
||||
<string key="NSFrame">{{306, 92}, {54, 14}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="806993456">
|
||||
@@ -156,7 +263,7 @@
|
||||
<object class="NSButton" id="910887184">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 127}, {203, 18}}</string>
|
||||
<string key="NSFrame">{{18, 168}, {203, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="709654045">
|
||||
@@ -167,13 +274,30 @@
|
||||
<reference key="NSControlView" ref="910887184"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage" id="495198475">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSSwitch</string>
|
||||
</object>
|
||||
<object class="NSButtonImageSource" key="NSAlternateImage" id="690089052">
|
||||
<string key="NSImageName">NSSwitch</string>
|
||||
</object>
|
||||
<reference key="NSNormalImage" ref="114317419"/>
|
||||
<reference key="NSAlternateImage" ref="690089052"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSButton" id="160081910">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 193}, {279, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="876763316">
|
||||
<int key="NSCellFlags">-2080244224</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Reopen all repositories from last session</string>
|
||||
<reference key="NSSupport" ref="734450335"/>
|
||||
<reference key="NSControlView" ref="160081910"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="114317419"/>
|
||||
<reference key="NSAlternateImage" ref="690089052"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
@@ -205,7 +329,7 @@
|
||||
<object class="NSButton" id="68472633">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 102}, {207, 18}}</string>
|
||||
<string key="NSFrame">{{18, 218}, {207, 18}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="456188813">
|
||||
@@ -216,7 +340,7 @@
|
||||
<reference key="NSControlView" ref="68472633"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="495198475"/>
|
||||
<reference key="NSNormalImage" ref="114317419"/>
|
||||
<reference key="NSAlternateImage" ref="690089052"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@@ -225,12 +349,12 @@
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{400, 163}</string>
|
||||
<string key="NSFrameSize">{400, 254}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="970459672">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -264,7 +388,7 @@
|
||||
<reference key="NSControlView" ref="250497668"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="495198475"/>
|
||||
<reference key="NSNormalImage" ref="114317419"/>
|
||||
<reference key="NSAlternateImage" ref="690089052"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@@ -275,7 +399,7 @@
|
||||
<object class="NSPopUpButton" id="339095682">
|
||||
<reference key="NSNextResponder" ref="970459672"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{130, 78}, {100, 22}}</string>
|
||||
<string key="NSFrame">{{130, 78}, {102, 22}}</string>
|
||||
<reference key="NSSuperview" ref="970459672"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="646744412">
|
||||
@@ -434,11 +558,10 @@
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{400, 139}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="351117501">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -456,7 +579,7 @@
|
||||
<reference key="NSControlView" ref="890810109"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="495198475"/>
|
||||
<reference key="NSNormalImage" ref="114317419"/>
|
||||
<reference key="NSAlternateImage" ref="690089052"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@@ -466,21 +589,16 @@
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{239, 54}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="844257713">
|
||||
<string key="NSClassName">SUUpdater</string>
|
||||
</object>
|
||||
<object class="NSUserDefaultsController" id="557723770">
|
||||
<object class="NSMutableArray" key="NSDeclaredKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>PBRefreshAutomatically</string>
|
||||
</object>
|
||||
<bool key="NSSharedInstance">YES</bool>
|
||||
</object>
|
||||
<object class="NSCustomView" id="263788152">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -498,7 +616,7 @@
|
||||
<reference key="NSControlView" ref="237556568"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="495198475"/>
|
||||
<reference key="NSNormalImage" ref="114317419"/>
|
||||
<reference key="NSAlternateImage" ref="690089052"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@@ -520,7 +638,7 @@
|
||||
<reference key="NSControlView" ref="485413225"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="495198475"/>
|
||||
<reference key="NSNormalImage" ref="114317419"/>
|
||||
<reference key="NSAlternateImage" ref="690089052"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@@ -542,7 +660,7 @@
|
||||
<reference key="NSControlView" ref="933582906"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="495198475"/>
|
||||
<reference key="NSNormalImage" ref="114317419"/>
|
||||
<reference key="NSAlternateImage" ref="690089052"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@@ -564,7 +682,7 @@
|
||||
<reference key="NSControlView" ref="766070942"/>
|
||||
<int key="NSButtonFlags">1211912703</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="495198475"/>
|
||||
<reference key="NSNormalImage" ref="114317419"/>
|
||||
<reference key="NSAlternateImage" ref="690089052"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@@ -574,7 +692,6 @@
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{400, 116}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
</object>
|
||||
@@ -930,20 +1047,60 @@
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">value: values.PBRefreshAutomatically</string>
|
||||
<reference key="source" ref="872426297"/>
|
||||
<string key="label">value: values.PBOpenPreviousDocumentsOnLaunch</string>
|
||||
<reference key="source" ref="160081910"/>
|
||||
<reference key="destination" ref="557723770"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="872426297"/>
|
||||
<reference key="NSSource" ref="160081910"/>
|
||||
<reference key="NSDestination" ref="557723770"/>
|
||||
<string key="NSLabel">value: values.PBRefreshAutomatically</string>
|
||||
<string key="NSLabel">value: values.PBOpenPreviousDocumentsOnLaunch</string>
|
||||
<string key="NSBinding">value</string>
|
||||
<string key="NSKeyPath">values.PBRefreshAutomatically</string>
|
||||
<string key="NSKeyPath">values.PBOpenPreviousDocumentsOnLaunch</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">125</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">value: values.PBCommitMessageViewHasVerticalLine</string>
|
||||
<reference key="source" ref="968361983"/>
|
||||
<reference key="destination" ref="557723770"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="968361983"/>
|
||||
<reference key="NSDestination" ref="557723770"/>
|
||||
<string key="NSLabel">value: values.PBCommitMessageViewHasVerticalLine</string>
|
||||
<string key="NSBinding">value</string>
|
||||
<string key="NSKeyPath">values.PBCommitMessageViewHasVerticalLine</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">133</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">value: values.PBCommitMessageViewVerticalLineLength</string>
|
||||
<reference key="source" ref="25030403"/>
|
||||
<reference key="destination" ref="557723770"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="25030403"/>
|
||||
<reference key="NSDestination" ref="557723770"/>
|
||||
<string key="NSLabel">value: values.PBCommitMessageViewVerticalLineLength</string>
|
||||
<string key="NSBinding">value</string>
|
||||
<string key="NSKeyPath">values.PBCommitMessageViewVerticalLineLength</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">135</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">resetAllDialogWarnings:</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="83909567"/>
|
||||
</object>
|
||||
<int key="connectionID">140</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
@@ -983,7 +1140,12 @@
|
||||
<reference ref="617839596"/>
|
||||
<reference ref="1032928366"/>
|
||||
<reference ref="68472633"/>
|
||||
<reference ref="872426297"/>
|
||||
<reference ref="160081910"/>
|
||||
<reference ref="968361983"/>
|
||||
<reference ref="258144035"/>
|
||||
<reference ref="25030403"/>
|
||||
<reference ref="83909567"/>
|
||||
<reference ref="63761450"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">General</string>
|
||||
@@ -1321,17 +1483,87 @@
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">122</int>
|
||||
<reference key="object" ref="872426297"/>
|
||||
<reference key="object" ref="160081910"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="467738730"/>
|
||||
<reference ref="876763316"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">123</int>
|
||||
<reference key="object" ref="467738730"/>
|
||||
<reference key="parent" ref="872426297"/>
|
||||
<reference key="object" ref="876763316"/>
|
||||
<reference key="parent" ref="160081910"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">126</int>
|
||||
<reference key="object" ref="968361983"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="782438225"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">127</int>
|
||||
<reference key="object" ref="782438225"/>
|
||||
<reference key="parent" ref="968361983"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">128</int>
|
||||
<reference key="object" ref="258144035"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="1031567029"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">129</int>
|
||||
<reference key="object" ref="1031567029"/>
|
||||
<reference key="parent" ref="258144035"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">130</int>
|
||||
<reference key="object" ref="25030403"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="1045854608"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">131</int>
|
||||
<reference key="object" ref="1045854608"/>
|
||||
<reference key="parent" ref="25030403"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">136</int>
|
||||
<reference key="object" ref="83909567"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="265220935"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">137</int>
|
||||
<reference key="object" ref="63761450"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="467740597"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">138</int>
|
||||
<reference key="object" ref="467740597"/>
|
||||
<reference key="parent" ref="63761450"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">139</int>
|
||||
<reference key="object" ref="265220935"/>
|
||||
<reference key="parent" ref="83909567"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
@@ -1356,7 +1588,20 @@
|
||||
<string>12.IBPluginDependency</string>
|
||||
<string>122.IBPluginDependency</string>
|
||||
<string>123.IBPluginDependency</string>
|
||||
<string>126.IBPluginDependency</string>
|
||||
<string>127.IBPluginDependency</string>
|
||||
<string>128.IBPluginDependency</string>
|
||||
<string>129.IBPluginDependency</string>
|
||||
<string>13.IBPluginDependency</string>
|
||||
<string>130.IBPluginDependency</string>
|
||||
<string>131.IBPluginDependency</string>
|
||||
<string>136.IBAttributePlaceholdersKey</string>
|
||||
<string>136.IBPluginDependency</string>
|
||||
<string>136.IBViewBoundsToFrameTransform</string>
|
||||
<string>137.IBPluginDependency</string>
|
||||
<string>137.IBViewBoundsToFrameTransform</string>
|
||||
<string>138.IBPluginDependency</string>
|
||||
<string>139.IBPluginDependency</string>
|
||||
<string>14.IBPluginDependency</string>
|
||||
<string>15.IBEditorWindowLastContentRect</string>
|
||||
<string>15.IBPluginDependency</string>
|
||||
@@ -1400,7 +1645,7 @@
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{447, 589}, {400, 163}}</string>
|
||||
<string>{{845, 630}, {400, 254}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSMutableArray">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
@@ -1425,7 +1670,31 @@
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{514, 459}, {106, 71}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSMutableDictionary">
|
||||
<string key="NS.key.0">ToolTip</string>
|
||||
<object class="IBToolTipAttribute" key="NS.object.0">
|
||||
<string key="name">ToolTip</string>
|
||||
<reference key="object" ref="83909567"/>
|
||||
<string key="toolTip">Resets the of the "Don't show this again" preferences.</string>
|
||||
</object>
|
||||
</object>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABDXwAAwggAAA</bytes>
|
||||
</object>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSAffineTransform">
|
||||
<bytes key="NSTransformStruct">P4AAAL+AAABCaAAAwegAAA</bytes>
|
||||
</object>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{443, 712}, {103, 71}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@@ -1488,7 +1757,7 @@
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">125</int>
|
||||
<int key="maxID">140</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
@@ -1501,6 +1770,13 @@
|
||||
<string key="minorKey">DBPrefsWindowController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">NSApplication+GitXScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">PBPrefsWindowController</string>
|
||||
<string key="superclassName">DBPrefsWindowController</string>
|
||||
@@ -1509,6 +1785,7 @@
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>checkGitValidity:</string>
|
||||
<string>resetAllDialogWarnings:</string>
|
||||
<string>resetGitPath:</string>
|
||||
<string>showHideAllFiles:</string>
|
||||
</object>
|
||||
@@ -1517,6 +1794,36 @@
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>checkGitValidity:</string>
|
||||
<string>resetAllDialogWarnings:</string>
|
||||
<string>resetGitPath:</string>
|
||||
<string>showHideAllFiles:</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBActionInfo">
|
||||
<string key="name">checkGitValidity:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo">
|
||||
<string key="name">resetAllDialogWarnings:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo">
|
||||
<string key="name">resetGitPath:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo">
|
||||
<string key="name">showHideAllFiles:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
@@ -1540,6 +1847,45 @@
|
||||
<string>NSView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>badGitPathIcon</string>
|
||||
<string>generalPrefsView</string>
|
||||
<string>gitPathController</string>
|
||||
<string>gitPathOpenAccessory</string>
|
||||
<string>integrationPrefsView</string>
|
||||
<string>updatesPrefsView</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">badGitPathIcon</string>
|
||||
<string key="candidateClassName">NSImageView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">generalPrefsView</string>
|
||||
<string key="candidateClassName">NSView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">gitPathController</string>
|
||||
<string key="candidateClassName">NSPathControl</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">gitPathOpenAccessory</string>
|
||||
<string key="candidateClassName">NSView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">integrationPrefsView</string>
|
||||
<string key="candidateClassName">NSView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">updatesPrefsView</string>
|
||||
<string key="candidateClassName">NSView</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">PBPrefsWindowController.h</string>
|
||||
@@ -1569,10 +1915,24 @@
|
||||
<string key="NS.key.0">checkForUpdates:</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||
<string key="NS.key.0">checkForUpdates:</string>
|
||||
<object class="IBActionInfo" key="NS.object.0">
|
||||
<string key="name">checkForUpdates:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">delegate</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">delegate</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">delegate</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<reference key="sourceIdentifier" ref="657347130"/>
|
||||
</object>
|
||||
</object>
|
||||
@@ -1589,21 +1949,21 @@
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="69589569">
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="163542416">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="301743020">
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="808928717">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="758432736">
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="1035046990">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
|
||||
</object>
|
||||
@@ -1656,7 +2016,7 @@
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSControl</string>
|
||||
<string key="superclassName">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="291122520">
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="791625053">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
|
||||
</object>
|
||||
@@ -1696,7 +2056,7 @@
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSMenu</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="108046134">
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="233865322">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
|
||||
</object>
|
||||
@@ -1704,7 +2064,7 @@
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSMenuItem</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="985585305">
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="289407525">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
|
||||
</object>
|
||||
@@ -1726,19 +2086,19 @@
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="69589569"/>
|
||||
<reference key="sourceIdentifier" ref="163542416"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="301743020"/>
|
||||
<reference key="sourceIdentifier" ref="808928717"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="758432736"/>
|
||||
<reference key="sourceIdentifier" ref="1035046990"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="291122520"/>
|
||||
<reference key="sourceIdentifier" ref="791625053"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
@@ -1777,7 +2137,7 @@
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="108046134"/>
|
||||
<reference key="sourceIdentifier" ref="233865322"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
@@ -1823,7 +2183,7 @@
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="655611173">
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="1049519683">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSView.h</string>
|
||||
</object>
|
||||
@@ -1961,6 +2321,27 @@
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
@@ -1970,7 +2351,7 @@
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="461377759">
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="639617919">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Sparkle.framework/Headers/SUUpdater.h</string>
|
||||
</object>
|
||||
@@ -2125,7 +2506,7 @@
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<reference key="sourceIdentifier" ref="985585305"/>
|
||||
<reference key="sourceIdentifier" ref="289407525"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
@@ -2137,7 +2518,7 @@
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<reference key="sourceIdentifier" ref="655611173"/>
|
||||
<reference key="sourceIdentifier" ref="1049519683"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSWindow</string>
|
||||
@@ -2168,6 +2549,13 @@
|
||||
<string key="NS.key.0">showWindow:</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||
<string key="NS.key.0">showWindow:</string>
|
||||
<object class="IBActionInfo" key="NS.object.0">
|
||||
<string key="name">showWindow:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
|
||||
@@ -2180,15 +2568,30 @@
|
||||
<string key="NS.key.0">checkForUpdates:</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||
<string key="NS.key.0">checkForUpdates:</string>
|
||||
<object class="IBActionInfo" key="NS.object.0">
|
||||
<string key="name">checkForUpdates:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">delegate</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<reference key="sourceIdentifier" ref="461377759"/>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<string key="NS.key.0">delegate</string>
|
||||
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||
<string key="name">delegate</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</object>
|
||||
<reference key="sourceIdentifier" ref="639617919"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<integer value="1050" key="NS.object.0"/>
|
||||
@@ -2204,5 +2607,22 @@
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">../GitX.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>NSMenuCheckmark</string>
|
||||
<string>NSMenuMixedState</string>
|
||||
<string>NSStopProgressFreestandingTemplate</string>
|
||||
<string>NSSwitch</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>{9, 8}</string>
|
||||
<string>{7, 2}</string>
|
||||
<string>{83, 83}</string>
|
||||
<string>{15, 15}</string>
|
||||
</object>
|
||||
</object>
|
||||
</data>
|
||||
</archive>
|
||||
|
||||
@@ -0,0 +1,896 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1050</int>
|
||||
<string key="IBDocument.SystemVersion">10F569</string>
|
||||
<string key="IBDocument.InterfaceBuilderVersion">762</string>
|
||||
<string key="IBDocument.AppKitVersion">1038.29</string>
|
||||
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.WebKitIBPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>762</string>
|
||||
<string>762</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="1"/>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.WebKitIBPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys" id="0">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSCustomObject" id="1001">
|
||||
<string key="NSClassName">FileViewerController</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1003">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1004">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="1005">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="WebView" id="35097993">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">274</int>
|
||||
<object class="NSMutableSet" key="NSDragTypes">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="set.sortedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>Apple HTML pasteboard type</string>
|
||||
<string>Apple PDF pasteboard type</string>
|
||||
<string>Apple PICT pasteboard type</string>
|
||||
<string>Apple URL pasteboard type</string>
|
||||
<string>Apple Web Archive pasteboard type</string>
|
||||
<string>NSColor pasteboard type</string>
|
||||
<string>NSFilenamesPboardType</string>
|
||||
<string>NSStringPboardType</string>
|
||||
<string>NeXT RTFD pasteboard type</string>
|
||||
<string>NeXT Rich Text Format v1.0 pasteboard type</string>
|
||||
<string>NeXT TIFF v4.0 pasteboard type</string>
|
||||
<string>WebURLsWithTitlesPboardType</string>
|
||||
<string>public.png</string>
|
||||
<string>public.url</string>
|
||||
<string>public.url-name</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{0, 3}, {800, 471}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="FrameName"/>
|
||||
<string key="GroupName"/>
|
||||
<object class="WebPreferences" key="Preferences">
|
||||
<string key="Identifier"/>
|
||||
<object class="NSMutableDictionary" key="Values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>WebKitDefaultFixedFontSize</string>
|
||||
<string>WebKitDefaultFontSize</string>
|
||||
<string>WebKitMinimumFontSize</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<integer value="12"/>
|
||||
<integer value="12"/>
|
||||
<integer value="1"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<bool key="UseBackForwardList">YES</bool>
|
||||
<bool key="AllowsUndo">YES</bool>
|
||||
</object>
|
||||
<object class="NSCustomView" id="886742837">
|
||||
<reference key="NSNextResponder" ref="1005"/>
|
||||
<int key="NSvFlags">266</int>
|
||||
<string key="NSFrame">{{0, 475}, {800, 25}}</string>
|
||||
<reference key="NSSuperview" ref="1005"/>
|
||||
<string key="NSClassName">MGScopeBar</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{800, 500}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="707228103">
|
||||
<string key="NSClassName">FileViewerController</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">scopeBar</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="886742837"/>
|
||||
</object>
|
||||
<int key="connectionID">22</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">webViewFileViwer</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="35097993"/>
|
||||
</object>
|
||||
<int key="connectionID">23</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">view</string>
|
||||
<reference key="source" ref="1001"/>
|
||||
<reference key="destination" ref="1005"/>
|
||||
</object>
|
||||
<int key="connectionID">24</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">scopeBar</string>
|
||||
<reference key="source" ref="707228103"/>
|
||||
<reference key="destination" ref="886742837"/>
|
||||
</object>
|
||||
<int key="connectionID">26</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">pair</string>
|
||||
<reference key="source" ref="886742837"/>
|
||||
<reference key="destination" ref="35097993"/>
|
||||
</object>
|
||||
<int key="connectionID">27</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<reference key="object" ref="0"/>
|
||||
<reference key="children" ref="1000"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="1001"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="1003"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="1004"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">1</int>
|
||||
<reference key="object" ref="1005"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="886742837"/>
|
||||
<reference ref="35097993"/>
|
||||
</object>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">20</int>
|
||||
<reference key="object" ref="35097993"/>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">21</int>
|
||||
<reference key="object" ref="886742837"/>
|
||||
<reference key="parent" ref="1005"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">25</int>
|
||||
<reference key="object" ref="707228103"/>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>1.IBEditorWindowLastContentRect</string>
|
||||
<string>1.IBPluginDependency</string>
|
||||
<string>1.WindowOrigin</string>
|
||||
<string>1.editorWindowContentRectSynchronizationRect</string>
|
||||
<string>20.IBPluginDependency</string>
|
||||
<string>21.IBPluginDependency</string>
|
||||
<string>25.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>{{104, 62}, {800, 500}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{628, 654}</string>
|
||||
<string>{{217, 442}, {480, 272}}</string>
|
||||
<string>com.apple.WebKitIBPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="0"/>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">27</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">FileViewerController</string>
|
||||
<string key="superclassName">NSViewController</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>controller</string>
|
||||
<string>displayControl</string>
|
||||
<string>scopeBar</string>
|
||||
<string>webViewFileViwer</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>id</string>
|
||||
<string>NSSegmentedCell</string>
|
||||
<string>MGScopeBar</string>
|
||||
<string>WebView</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">FileViewer/FileViewerController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">MGScopeBar</string>
|
||||
<string key="superclassName">NSView</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">delegate</string>
|
||||
<string key="NS.object.0">id</string>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">MGScopeBar/MGScopeBar.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">BMScript.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSActionCell</string>
|
||||
<string key="superclassName">NSCell</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="181871344">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="99036257">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="633794103">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSApplication</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSCell</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSFormatter</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSMenu</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="123660962">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="181871344"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="99036257"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="633794103"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<reference key="sourceIdentifier" ref="123660962"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="400165691">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">ImageKit.framework/Headers/IKImageBrowserView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">ImageKit.framework/Headers/IKSaveOptions.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">ImageKit.framework/Headers/ImageKitDeprecated.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">PDFKit.framework/Headers/PDFDocument.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">PDFKit.framework/Headers/PDFView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuartzComposer.framework/Headers/QCCompositionParameterView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuartzComposer.framework/Headers/QCCompositionPickerView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuartzFilters.framework/Headers/QuartzFilterManager.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">QuickLookUI.framework/Headers/QLPreviewPanel.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">Sparkle.framework/Headers/SUUpdater.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebDownload.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebEditingDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebFrameLoadDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebJavaPlugIn.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebPlugin.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebPluginContainer.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebPolicyDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebResourceLoadDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebScriptObject.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebUIDelegate.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSResponder</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSResponder</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSSegmentedCell</string>
|
||||
<string key="superclassName">NSActionCell</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSSegmentedCell.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSView</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<reference key="sourceIdentifier" ref="400165691"/>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">NSViewController</string>
|
||||
<string key="superclassName">NSResponder</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<string key="NS.key.0">view</string>
|
||||
<string key="NS.object.0">NSView</string>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">AppKit.framework/Headers/NSViewController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">WebView</string>
|
||||
<string key="superclassName">NSView</string>
|
||||
<object class="NSMutableDictionary" key="actions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>goBack:</string>
|
||||
<string>goForward:</string>
|
||||
<string>makeTextLarger:</string>
|
||||
<string>makeTextSmaller:</string>
|
||||
<string>makeTextStandardSize:</string>
|
||||
<string>reload:</string>
|
||||
<string>reloadFromOrigin:</string>
|
||||
<string>stopLoading:</string>
|
||||
<string>takeStringURLFrom:</string>
|
||||
<string>toggleContinuousSpellChecking:</string>
|
||||
<string>toggleSmartInsertDelete:</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
<string>id</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBFrameworkSource</string>
|
||||
<string key="minorKey">WebKit.framework/Headers/WebView.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<integer value="1050" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3000" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<string key="IBDocument.LastKnownRelativeProjectPath">../GitX.xcodeproj</string>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -0,0 +1,38 @@
|
||||
//
|
||||
// FileViewerController.h
|
||||
// GitX
|
||||
//
|
||||
// Created by German Laullon on 11/06/10.
|
||||
// Copyright 2010 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <WebKit/WebKit.h>
|
||||
#import "MGScopeBar.h"
|
||||
#import "PBGitRepository.h"
|
||||
|
||||
@interface FileViewerController : NSViewController <MGScopeBarDelegate> {
|
||||
IBOutlet NSSegmentedCell *displayControl;
|
||||
IBOutlet MGScopeBar *scopeBar;
|
||||
IBOutlet WebView *webViewFileViwer;
|
||||
|
||||
NSMutableArray *groups;
|
||||
NSString *file;
|
||||
NSString *sha;
|
||||
|
||||
PBGitRepository *repository;
|
||||
id controller;
|
||||
bool commit;
|
||||
}
|
||||
|
||||
- (id)initWithRepository:(PBGitRepository *)theRepository andController:(id)theController;
|
||||
- (void)showFile:(NSString *)file sha:(NSString *)sha;
|
||||
- (NSString*)refSpec;
|
||||
|
||||
-(NSString *)parseLog:(NSString *)string;
|
||||
-(NSString *)parseBlame:(NSString *)string;
|
||||
|
||||
@property(retain) NSMutableArray *groups;
|
||||
@property(readwrite) bool commit;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,321 @@
|
||||
//
|
||||
// FileViewerController.m
|
||||
// GitX
|
||||
//
|
||||
// Created by German Laullon on 11/06/10.
|
||||
// Copyright 2010 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "FileViewerController.h"
|
||||
#import "PBGitHistoryController.h"
|
||||
#import "PBGitDefaults.h"
|
||||
|
||||
#define GROUP_LABEL @"Label" // string
|
||||
#define GROUP_SEPARATOR @"HasSeparator" // BOOL as NSNumber
|
||||
#define GROUP_SELECTION_MODE @"SelectionMode" // MGScopeBarGroupSelectionMode (int) as NSNumber
|
||||
#define GROUP_ITEMS @"Items" // array of dictionaries, each containing the following keys:
|
||||
#define ITEM_IDENTIFIER @"Identifier" // string
|
||||
#define ITEM_NAME @"Name" // string
|
||||
|
||||
@implementation FileViewerController
|
||||
|
||||
|
||||
#pragma mark Setup and teardown
|
||||
|
||||
- (id)initWithRepository:(PBGitRepository *)theRepository andController:(id)theController;
|
||||
{
|
||||
repository=theRepository;
|
||||
controller=theController;
|
||||
return [self initWithNibName:@"FileViewer" bundle:[NSBundle mainBundle]];
|
||||
}
|
||||
|
||||
- (void)awakeFromNib
|
||||
{
|
||||
self.groups = [NSMutableArray arrayWithCapacity:0];
|
||||
scopeBar.delegate = self;
|
||||
NSArray *items = [NSArray arrayWithObjects:
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
(commit)?@"commit":@"diff", ITEM_IDENTIFIER,
|
||||
@"Diff", ITEM_NAME,
|
||||
nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"source", ITEM_IDENTIFIER,
|
||||
@"Source", ITEM_NAME,
|
||||
nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"blame", ITEM_IDENTIFIER,
|
||||
@"Blame", ITEM_NAME,
|
||||
nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"log", ITEM_IDENTIFIER,
|
||||
@"History", ITEM_NAME,
|
||||
nil],
|
||||
nil];
|
||||
[self.groups addObject:[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSNumber numberWithBool:NO], GROUP_SEPARATOR,
|
||||
[NSNumber numberWithInt:MGRadioSelectionMode], GROUP_SELECTION_MODE, // single selection group.
|
||||
items, GROUP_ITEMS,
|
||||
nil]];
|
||||
[scopeBar reloadData];
|
||||
[webViewFileViwer setUIDelegate:self];
|
||||
[webViewFileViwer setFrameLoadDelegate:self];
|
||||
[webViewFileViwer setResourceLoadDelegate:self];}
|
||||
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
self.groups = nil;
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark JavaScript log.js methods
|
||||
|
||||
- (void) selectCommit:(NSString*)c
|
||||
{
|
||||
NSLog(@"[FileViewerController controller:%@]",controller);
|
||||
if([(PBGitHistoryController *)controller selectCommit:sha])
|
||||
NSLog(@"---");
|
||||
NSLog(@"[FileViewerController selectCommit:%@]",c);
|
||||
}
|
||||
|
||||
|
||||
#pragma mark MGScopeBarDelegate methods
|
||||
|
||||
|
||||
- (int)numberOfGroupsInScopeBar:(MGScopeBar *)theScopeBar
|
||||
{
|
||||
return [self.groups count];
|
||||
}
|
||||
|
||||
|
||||
- (NSArray *)scopeBar:(MGScopeBar *)theScopeBar itemIdentifiersForGroup:(int)groupNumber
|
||||
{
|
||||
return [[self.groups objectAtIndex:groupNumber] valueForKeyPath:[NSString stringWithFormat:@"%@.%@", GROUP_ITEMS, ITEM_IDENTIFIER]];
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)scopeBar:(MGScopeBar *)theScopeBar labelForGroup:(int)groupNumber
|
||||
{
|
||||
return [[self.groups objectAtIndex:groupNumber] objectForKey:GROUP_LABEL]; // might be nil, which is fine (nil means no label).
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)scopeBar:(MGScopeBar *)theScopeBar titleOfItem:(NSString *)identifier inGroup:(int)groupNumber
|
||||
{
|
||||
NSArray *items = [[self.groups objectAtIndex:groupNumber] objectForKey:GROUP_ITEMS];
|
||||
if (items) {
|
||||
for (NSDictionary *item in items) {
|
||||
if ([[item objectForKey:ITEM_IDENTIFIER] isEqualToString:identifier]) {
|
||||
return [item objectForKey:ITEM_NAME];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
- (MGScopeBarGroupSelectionMode)scopeBar:(MGScopeBar *)theScopeBar selectionModeForGroup:(int)groupNumber
|
||||
{
|
||||
return [[[self.groups objectAtIndex:groupNumber] objectForKey:GROUP_SELECTION_MODE] intValue];
|
||||
}
|
||||
|
||||
- (void)scopeBar:(MGScopeBar *)theScopeBar selectedStateChanged:(BOOL)selected forItem:(NSString *)identifier inGroup:(int)groupNumber
|
||||
{
|
||||
NSString *path = [NSString stringWithFormat:@"html/views/%@", identifier];
|
||||
NSString *html = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:path];
|
||||
NSLog(@"[FileViewerController scopeBar:selectedStateChanged] -> file: '%@' (%@)",html,identifier);
|
||||
NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:html]];
|
||||
[[webViewFileViwer mainFrame] loadRequest:request];
|
||||
}
|
||||
|
||||
- (void)showFile:(NSString *)f sha:(NSString *)s{
|
||||
file=f;
|
||||
sha=s;
|
||||
NSString *show=[[[scopeBar selectedItems] objectAtIndex:0] objectAtIndex:0];
|
||||
NSLog(@"[showFile:sha] showFile:%@ sha:%@ (show=%@)",file,sha,show);
|
||||
[self scopeBar:scopeBar selectedStateChanged:true forItem:show inGroup:0];
|
||||
}
|
||||
|
||||
# pragma mark WebKitDelegate methods
|
||||
|
||||
- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
|
||||
{
|
||||
NSLog(@"[Alert] message = %@",message);
|
||||
}
|
||||
|
||||
+ (BOOL)isSelectorExcludedFromWebScript:(SEL)sel
|
||||
{
|
||||
NSLog(@"[%@ %s]: self = %@ (%i)", [self class], _cmd, self,[self respondsToSelector:sel]);
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowObject forFrame:(WebFrame *)frame
|
||||
{
|
||||
id script = [sender windowScriptObject];
|
||||
NSLog(@"Controller: %@", controller);
|
||||
[script setValue:controller forKey:@"Controller"];
|
||||
[script setValue:[PBGitDefaults alloc] forKey:@"Config"];
|
||||
}
|
||||
|
||||
- (void)webView:(WebView *)webView addMessageToConsole:(NSDictionary *)dictionary
|
||||
{
|
||||
NSLog(@"Error from webkit: %@", dictionary);
|
||||
}
|
||||
|
||||
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
|
||||
{
|
||||
NSString *show=[[[scopeBar selectedItems] objectAtIndex:0] objectAtIndex:0];
|
||||
|
||||
NSString *path = [NSString stringWithFormat:@"html/views/%@", show];
|
||||
NSString *formatFile = [[NSBundle mainBundle] pathForResource:@"format" ofType:@"html" inDirectory:path];
|
||||
//NSString *testFile = [NSString stringWithFormat:@"%@/test.html",NSHomeDirectory()];
|
||||
NSString *format;
|
||||
if(formatFile!=nil)
|
||||
format=[NSString stringWithContentsOfURL:[NSURL fileURLWithPath:formatFile] encoding:NSUTF8StringEncoding error:nil];
|
||||
|
||||
NSString *txt;
|
||||
if(show==@"source")
|
||||
txt=[repository outputForArguments:[NSArray arrayWithObjects:@"show", [self refSpec], nil]];
|
||||
else if(show==@"blame")
|
||||
txt=[self parseBlame:[repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"blame", @"-p", file, sha, nil]]];
|
||||
else if(show==@"diff"){
|
||||
NSString *diff_p=[repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"show", @"--pretty=format:", sha, file, nil]];
|
||||
NSString *diff_l=[repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"diff", file, nil]];
|
||||
txt=[NSString stringWithFormat:@"%@\n%@",diff_p,diff_l];
|
||||
}
|
||||
else if(show==@"commit")
|
||||
txt=[repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"diff", (sha!=nil)?sha:file, (sha!=nil)?file:nil, nil]];
|
||||
else if(show==@"log")
|
||||
txt=[self parseLog:[repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"log", [NSString stringWithFormat:@"--pretty=format:%@",format], @"--", file, nil]]];
|
||||
else
|
||||
return; // XXXX controlar mejor.
|
||||
|
||||
NSLog(@"didFinishLoadForFrame -> txt: '%@'",([txt length]>180)?[txt substringToIndex:180]:txt);
|
||||
|
||||
id script = [webViewFileViwer windowScriptObject];
|
||||
[script callWebScriptMethod:@"showFile"
|
||||
withArguments:[NSArray arrayWithObjects:txt, nil]];
|
||||
|
||||
//[[[[[sender mainFrame] DOMDocument] documentElement] outerHTML] writeToFile:testFile atomically:YES encoding:NSUTF8StringEncoding error:nil];
|
||||
}
|
||||
|
||||
- (NSString*)refSpec
|
||||
{
|
||||
return [NSString stringWithFormat:@"%@:%@", (sha!=nil)?sha:@"HEAD", file];
|
||||
}
|
||||
|
||||
|
||||
-(NSString *)parseLog:(NSString *)string
|
||||
{
|
||||
return string;
|
||||
}
|
||||
|
||||
-(NSString *)parseBlame:(NSString *)string
|
||||
{
|
||||
string=[string stringByReplacingOccurrencesOfString:@"<" withString:@"<"];
|
||||
string=[string stringByReplacingOccurrencesOfString:@">" withString:@">"];
|
||||
|
||||
NSArray *lines = [string componentsSeparatedByString:@"\n"];
|
||||
NSString *line;
|
||||
NSMutableDictionary *headers=[NSMutableDictionary dictionary];
|
||||
NSMutableString *res=[NSMutableString string];
|
||||
|
||||
[res appendString:@"<table class='blocks'>\n"];
|
||||
int i=0;
|
||||
while(i<[lines count]){
|
||||
line=[lines objectAtIndex:i];
|
||||
NSArray *header=[line componentsSeparatedByString:@" "];
|
||||
if([header count]==4){
|
||||
int nLines=[(NSString *)[header objectAtIndex:3] intValue];
|
||||
[res appendFormat:@"<tr class='block l%d'>\n",nLines];
|
||||
line=[lines objectAtIndex:++i];
|
||||
if([[[line componentsSeparatedByString:@" "] objectAtIndex:0] isEqual:@"author"]){
|
||||
NSString *author=line;
|
||||
NSString *summary=nil;
|
||||
while(summary==nil){
|
||||
line=[lines objectAtIndex:i++];
|
||||
if([[[line componentsSeparatedByString:@" "] objectAtIndex:0] isEqual:@"summary"]){
|
||||
summary=line;
|
||||
}
|
||||
}
|
||||
NSString *block=[NSString stringWithFormat:@"<td><p class='author'>%@</p><p class='summary'>%@</p></td>\n<td>\n",author,summary];
|
||||
[headers setObject:block forKey:[header objectAtIndex:0]];
|
||||
}
|
||||
[res appendString:[headers objectForKey:[header objectAtIndex:0]]];
|
||||
|
||||
NSMutableString *code=[NSMutableString string];
|
||||
do{
|
||||
line=[lines objectAtIndex:i++];
|
||||
}while([line characterAtIndex:0]!='\t');
|
||||
line=[line stringByReplacingOccurrencesOfString:@"\t" withString:@" "];
|
||||
[code appendString:line];
|
||||
[code appendString:@"\n"];
|
||||
|
||||
int n;
|
||||
for(n=1;n<nLines;n++){
|
||||
line=[lines objectAtIndex:i++];
|
||||
do{
|
||||
line=[lines objectAtIndex:i++];
|
||||
}while([line characterAtIndex:0]!='\t');
|
||||
line=[line stringByReplacingOccurrencesOfString:@"\t" withString:@" "];
|
||||
[code appendString:line];
|
||||
[code appendString:@"\n"];
|
||||
}
|
||||
[res appendFormat:@"<pre class='first-line: %@;brush: objc'>%@</pre>",[header objectAtIndex:2],code];
|
||||
[res appendString:@"</td>\n"];
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
[res appendString:@"</tr>\n"];
|
||||
}
|
||||
[res appendString:@"</table>\n"];
|
||||
//NSLog(@"%@",res);
|
||||
|
||||
return (NSString *)res;
|
||||
}
|
||||
|
||||
#pragma mark Accessors and properties
|
||||
/*
|
||||
|
||||
- (IBAction)updateFileViwer:(id)sender
|
||||
{
|
||||
NSString *type
|
||||
int option=[displayControl selectedSegment];
|
||||
if(option==0)
|
||||
type=@"source";
|
||||
else if(option==1)
|
||||
type=@"blame";
|
||||
else if(option==2)
|
||||
type=@"diff";
|
||||
|
||||
}
|
||||
|
||||
|
||||
- (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame
|
||||
{
|
||||
NSString *messageString = [error localizedDescription];
|
||||
NSString *moreString = [error localizedFailureReason] ?
|
||||
[error localizedFailureReason] :
|
||||
NSLocalizedString(@"Try typing the URL again.", nil);
|
||||
messageString = [NSString stringWithFormat:@"%@. %@", messageString, moreString];
|
||||
NSLog(@"ERROR!!!! - %@",messageString);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
NSArray *objects = [treeController selectedObjects];
|
||||
NSArray *content = [treeController content];
|
||||
|
||||
if ([objects count] && [content count]) {
|
||||
PBGitTree *treeItem = [objects objectAtIndex:0];
|
||||
currentFileBrowserSelectionPath = [treeItem.fullPath componentsSeparatedByString:@"/"];
|
||||
|
||||
NSString *txt=[treeItem contents:[displayControl selectedSegment]];
|
||||
|
||||
*/
|
||||
@synthesize groups;
|
||||
@synthesize commit;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,47 @@
|
||||
//
|
||||
// GLFileView.h
|
||||
// GitX
|
||||
//
|
||||
// Created by German Laullon on 14/09/10.
|
||||
// Copyright 2010 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "PBWebController.h"
|
||||
#import "MGScopeBarDelegateProtocol.h"
|
||||
#import "PBGitCommit.h"
|
||||
#import "PBGitHistoryController.h"
|
||||
#import "PBRefContextDelegate.h"
|
||||
|
||||
@class PBGitGradientBarView;
|
||||
|
||||
@interface GLFileView : PBWebController <MGScopeBarDelegate> {
|
||||
IBOutlet PBGitHistoryController* historyController;
|
||||
IBOutlet MGScopeBar *typeBar;
|
||||
NSMutableArray *groups;
|
||||
NSString *logFormat;
|
||||
NSString *diffType;
|
||||
IBOutlet NSView *accessoryView;
|
||||
IBOutlet NSSplitView *fileListSplitView;
|
||||
}
|
||||
|
||||
- (void)showFile;
|
||||
- (void)didLoad;
|
||||
- (NSString *)parseBlame:(NSString *)txt;
|
||||
+ (NSString *)parseHTML:(NSString *)txt;
|
||||
+ (NSString *)parseDiff:(NSString *)txt;
|
||||
+ (NSString *)parseDiffTree:(NSString *)txt withStats:(NSMutableDictionary *)stats;
|
||||
+ (NSString *)getFileName:(NSString *)line;
|
||||
|
||||
+(BOOL)isStartDiff:(NSString *)line;
|
||||
+(BOOL)isStartBlock:(NSString *)line;
|
||||
|
||||
+(NSArray *)getFilesNames:(NSString *)line;
|
||||
+(BOOL)isBinaryFile:(NSString *)line;
|
||||
+(NSString*)mimeTypeForFileName:(NSString*)file;
|
||||
+(BOOL)isImage:(NSString*)file;
|
||||
|
||||
@property(retain) NSMutableArray *groups;
|
||||
@property(retain) NSString *logFormat;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,562 @@
|
||||
//
|
||||
// GLFileView.m
|
||||
// GitX
|
||||
//
|
||||
// Created by German Laullon on 14/09/10.
|
||||
// Copyright 2010 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "GLFileView.h"
|
||||
#import "PBGitGradientBarView.h"
|
||||
|
||||
#define GROUP_LABEL @"Label" // string
|
||||
#define GROUP_SEPARATOR @"HasSeparator" // BOOL as NSNumber
|
||||
#define GROUP_SELECTION_MODE @"SelectionMode" // MGScopeBarGroupSelectionMode (int) as NSNumber
|
||||
#define GROUP_ITEMS @"Items" // array of dictionaries, each containing the following keys:
|
||||
#define ITEM_IDENTIFIER @"Identifier" // string
|
||||
#define ITEM_NAME @"Name" // string
|
||||
|
||||
|
||||
@interface GLFileView ()
|
||||
|
||||
- (void)saveSplitViewPosition;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation GLFileView
|
||||
|
||||
- (void) awakeFromNib
|
||||
{
|
||||
NSString *formatFile = [[NSBundle mainBundle] pathForResource:@"format" ofType:@"html" inDirectory:@"html/views/log"];
|
||||
if(formatFile!=nil)
|
||||
logFormat=[NSString stringWithContentsOfURL:[NSURL fileURLWithPath:formatFile] encoding:NSUTF8StringEncoding error:nil];
|
||||
|
||||
|
||||
startFile = @"fileview";
|
||||
//repository = historyController.repository;
|
||||
[super awakeFromNib];
|
||||
[historyController.treeController addObserver:self forKeyPath:@"selection" options:0 context:@"treeController"];
|
||||
|
||||
self.groups = [NSMutableArray arrayWithCapacity:0];
|
||||
|
||||
NSArray *items = [NSArray arrayWithObjects:
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
startFile, ITEM_IDENTIFIER,
|
||||
@"Source", ITEM_NAME,
|
||||
nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"blame", ITEM_IDENTIFIER,
|
||||
@"Blame", ITEM_NAME,
|
||||
nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"log", ITEM_IDENTIFIER,
|
||||
@"History", ITEM_NAME,
|
||||
nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"diff", ITEM_IDENTIFIER,
|
||||
@"Diff", ITEM_NAME,
|
||||
nil],
|
||||
nil];
|
||||
[self.groups addObject:[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSNumber numberWithBool:NO], GROUP_SEPARATOR,
|
||||
[NSNumber numberWithInt:MGRadioSelectionMode], GROUP_SELECTION_MODE, // single selection group.
|
||||
items, GROUP_ITEMS,
|
||||
nil]];
|
||||
|
||||
NSArray *difft = [NSArray arrayWithObjects:
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"l", ITEM_IDENTIFIER,
|
||||
@"Local", ITEM_NAME,
|
||||
nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
@"h", ITEM_IDENTIFIER,
|
||||
@"HEAD", ITEM_NAME,
|
||||
nil],
|
||||
nil];
|
||||
[self.groups addObject:[NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSNumber numberWithBool:NO], GROUP_SEPARATOR,
|
||||
[NSNumber numberWithInt:MGRadioSelectionMode], GROUP_SELECTION_MODE, // single selection group.
|
||||
difft, GROUP_ITEMS,
|
||||
@"Diff with:",GROUP_LABEL,
|
||||
nil]];
|
||||
|
||||
[typeBar reloadData];
|
||||
|
||||
[fileListSplitView setHidden:YES];
|
||||
[self performSelector:@selector(restoreSplitViewPositiion) withObject:nil afterDelay:0];
|
||||
}
|
||||
|
||||
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
|
||||
{
|
||||
[self showFile];
|
||||
}
|
||||
|
||||
- (void) showFile
|
||||
{
|
||||
NSError *theError = nil;
|
||||
NSArray *files=[historyController.treeController selectedObjects];
|
||||
if ([files count]>0) {
|
||||
PBGitTree *file=[files objectAtIndex:0];
|
||||
|
||||
NSString *fileTxt = @"";
|
||||
if(startFile==@"fileview"){
|
||||
fileTxt=[file textContents:&theError];
|
||||
if(!theError)
|
||||
fileTxt=[GLFileView parseHTML:fileTxt];
|
||||
}else if(startFile==@"blame"){
|
||||
fileTxt=[file blame:&theError];
|
||||
if(!theError)
|
||||
fileTxt=[self parseBlame:fileTxt];
|
||||
}else if(startFile==@"log"){
|
||||
fileTxt=[file log:logFormat error:&theError];
|
||||
}else if(startFile==@"diff"){
|
||||
fileTxt=[file diff:diffType error:&theError];
|
||||
if(!theError)
|
||||
fileTxt=[GLFileView parseDiff:fileTxt];
|
||||
}
|
||||
|
||||
id script = [view windowScriptObject];
|
||||
if(!theError){
|
||||
NSString *filePath = [file fullPath];
|
||||
[script callWebScriptMethod:@"showFile" withArguments:[NSArray arrayWithObjects:fileTxt, filePath, nil]];
|
||||
}else{
|
||||
[script callWebScriptMethod:@"setMessage" withArguments:[NSArray arrayWithObjects:[theError localizedDescription], nil]];
|
||||
}
|
||||
}
|
||||
|
||||
#if 1
|
||||
NSString *dom=[[[[view mainFrame] DOMDocument] documentElement] outerHTML];
|
||||
NSString *tmpFile=@"~/tmp/test.html";
|
||||
[dom writeToFile:[tmpFile stringByExpandingTildeInPath] atomically:true encoding:NSUTF8StringEncoding error:nil];
|
||||
#endif
|
||||
}
|
||||
|
||||
#pragma mark JavaScript log.js methods
|
||||
|
||||
- (void) selectCommit:(NSString*)c
|
||||
{
|
||||
[historyController selectCommit:[PBGitSHA shaWithString:c]];
|
||||
}
|
||||
|
||||
#pragma mark MGScopeBarDelegate methods
|
||||
|
||||
- (int)numberOfGroupsInScopeBar:(MGScopeBar *)theScopeBar
|
||||
{
|
||||
return [self.groups count];
|
||||
}
|
||||
|
||||
|
||||
- (NSArray *)scopeBar:(MGScopeBar *)theScopeBar itemIdentifiersForGroup:(int)groupNumber
|
||||
{
|
||||
return [[self.groups objectAtIndex:groupNumber] valueForKeyPath:[NSString stringWithFormat:@"%@.%@", GROUP_ITEMS, ITEM_IDENTIFIER]];
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)scopeBar:(MGScopeBar *)theScopeBar labelForGroup:(int)groupNumber
|
||||
{
|
||||
return [[self.groups objectAtIndex:groupNumber] objectForKey:GROUP_LABEL]; // might be nil, which is fine (nil means no label).
|
||||
}
|
||||
|
||||
|
||||
- (NSString *)scopeBar:(MGScopeBar *)theScopeBar titleOfItem:(NSString *)identifier inGroup:(int)groupNumber
|
||||
{
|
||||
NSArray *items = [[self.groups objectAtIndex:groupNumber] objectForKey:GROUP_ITEMS];
|
||||
if (items) {
|
||||
for (NSDictionary *item in items) {
|
||||
if ([[item objectForKey:ITEM_IDENTIFIER] isEqualToString:identifier]) {
|
||||
return [item objectForKey:ITEM_NAME];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
- (MGScopeBarGroupSelectionMode)scopeBar:(MGScopeBar *)theScopeBar selectionModeForGroup:(int)groupNumber
|
||||
{
|
||||
return [[[self.groups objectAtIndex:groupNumber] objectForKey:GROUP_SELECTION_MODE] intValue];
|
||||
}
|
||||
|
||||
- (void)scopeBar:(MGScopeBar *)theScopeBar selectedStateChanged:(BOOL)selected forItem:(NSString *)identifier inGroup:(int)groupNumber
|
||||
{
|
||||
if((groupNumber==0) && (startFile!=identifier)){
|
||||
NSString *path = [NSString stringWithFormat:@"html/views/%@", identifier];
|
||||
NSString *html = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:path];
|
||||
NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:html]];
|
||||
[[view mainFrame] loadRequest:request];
|
||||
startFile=identifier;
|
||||
}else if(groupNumber==1){
|
||||
diffType=identifier;
|
||||
if(startFile==@"diff"){
|
||||
[[view mainFrame] reload];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (NSView *)accessoryViewForScopeBar:(MGScopeBar *)scopeBar
|
||||
{
|
||||
return accessoryView;
|
||||
}
|
||||
|
||||
- (void) didLoad
|
||||
{
|
||||
[self showFile];
|
||||
}
|
||||
|
||||
- (void)closeView
|
||||
{
|
||||
[historyController.treeController removeObserver:self forKeyPath:@"selection"];
|
||||
[self saveSplitViewPosition];
|
||||
|
||||
[super closeView];
|
||||
}
|
||||
|
||||
+ (NSString *) parseHTML:(NSString *)txt
|
||||
{
|
||||
txt=[txt stringByReplacingOccurrencesOfString:@"&" withString:@"&"];
|
||||
txt=[txt stringByReplacingOccurrencesOfString:@"<" withString:@"<"];
|
||||
txt=[txt stringByReplacingOccurrencesOfString:@">" withString:@">"];
|
||||
|
||||
return txt;
|
||||
}
|
||||
|
||||
+ (NSString *)parseDiffTree:(NSString *)txt withStats:(NSMutableDictionary *)stats
|
||||
{
|
||||
NSInteger granTotal=1;
|
||||
for(NSArray *stat in [stats allValues]){
|
||||
NSInteger add=[[stat objectAtIndex:0] integerValue];
|
||||
NSInteger rem=[[stat objectAtIndex:1] integerValue];
|
||||
NSInteger tot=add+rem;
|
||||
if(tot>granTotal)
|
||||
granTotal=tot;
|
||||
[stats setObject:[NSArray arrayWithObjects:[NSNumber numberWithInteger:add],[NSNumber numberWithInteger:rem],[NSNumber numberWithInteger:tot],nil] forKey:[stat objectAtIndex:2]];
|
||||
}
|
||||
|
||||
NSArray *lines = [txt componentsSeparatedByString:@"\n"];
|
||||
NSMutableString *res=[NSMutableString string];
|
||||
[res appendString:@"<table id='filelist'>"];
|
||||
for (NSString *line in lines) {
|
||||
if([line length]<98) continue;
|
||||
line=[line substringFromIndex:97];
|
||||
NSArray *fileStatus=[line componentsSeparatedByString:@"\t"];
|
||||
NSString *status=[[fileStatus objectAtIndex:0] substringToIndex:1]; // ignore the score
|
||||
NSString *file=[fileStatus objectAtIndex:1];
|
||||
NSString *txt=file;
|
||||
NSString *fileName=file;
|
||||
if([status isEqualToString:@"C"] || [status isEqualToString:@"R"]){
|
||||
txt=[NSString stringWithFormat:@"%@ -> %@",file,[fileStatus objectAtIndex:2]];
|
||||
fileName=[fileStatus objectAtIndex:2];
|
||||
}
|
||||
|
||||
NSArray *stat=[stats objectForKey:fileName];
|
||||
NSInteger add=[[stat objectAtIndex:0] integerValue];
|
||||
NSInteger rem=[[stat objectAtIndex:1] integerValue];
|
||||
NSInteger tot=add+rem;
|
||||
|
||||
[res appendString:@"<tr><td class='name'>"];
|
||||
[res appendString:[NSString stringWithFormat:@"<a class='%@' href='#%@' representedFile='%@'>%@</a>",status,file,fileName,txt]];
|
||||
[res appendString:@"</td><td class='bar'>"];
|
||||
[res appendString:@"<div>"];
|
||||
[res appendString:[NSString stringWithFormat:@"<span class='add' style='width:%d%%'></span>",((add*100)/granTotal)]];
|
||||
[res appendString:[NSString stringWithFormat:@"<span class='rem' style='width:%d%%'></span>",((rem*100)/granTotal)]];
|
||||
[res appendString:@"</div>"];
|
||||
[res appendString:[NSString stringWithFormat:@"</td><td class='add'>+ %d</td><td class='rem'>- %d</td></tr>",add,rem]];
|
||||
}
|
||||
[res appendString:@"</table>"];
|
||||
return res;
|
||||
}
|
||||
|
||||
+ (NSString *)parseDiff:(NSString *)txt
|
||||
{
|
||||
txt=[self parseHTML:txt];
|
||||
|
||||
NSArray *lines = [txt componentsSeparatedByString:@"\n"];
|
||||
NSString *line;
|
||||
NSMutableString *res=[NSMutableString string];
|
||||
BOOL inDiff=FALSE;
|
||||
BOOL inBlock=FALSE;
|
||||
|
||||
int l_int,l_line,l_end;
|
||||
int r_int,r_line,r_end;
|
||||
int i;
|
||||
for (i=0; i<[lines count]; i++) {
|
||||
line=[lines objectAtIndex:i];
|
||||
|
||||
if([GLFileView isStartBlock:line]){
|
||||
[res appendString:@"</td></tr></thead><tbody>"];
|
||||
inDiff=FALSE;
|
||||
NSString *header=[line substringFromIndex:3];
|
||||
NSRange hr = NSMakeRange(0, [header rangeOfString:@" @@"].location);
|
||||
header=[header substringWithRange:hr];
|
||||
|
||||
NSArray *pos=[header componentsSeparatedByString:@" "];
|
||||
NSArray *pos_l=[[pos objectAtIndex:0] componentsSeparatedByString:@","];
|
||||
NSArray *pos_r=[[pos objectAtIndex:1] componentsSeparatedByString:@","];
|
||||
|
||||
l_end=l_line=l_int=abs([[pos_l objectAtIndex:0]integerValue]);
|
||||
if ([pos_l count]>1) {
|
||||
l_end=l_line+[[pos_l objectAtIndex:1]integerValue];
|
||||
}
|
||||
|
||||
r_end=r_line=r_int=[[pos_r objectAtIndex:0]integerValue];
|
||||
if ([pos_r count]>1) {
|
||||
r_end=r_line+[[pos_r objectAtIndex:1]integerValue];
|
||||
}
|
||||
|
||||
[res appendString:[NSString stringWithFormat:@"<tr class='header'><td colspan='3'>%@</td></tr>",line]];
|
||||
inBlock=TRUE;
|
||||
}else if(inBlock){
|
||||
NSString *s=[line substringToIndex:1];
|
||||
if([s isEqualToString:@" "]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td class='l'>%d</td><td class='r'>%d</td>",l_line++,r_line++]];
|
||||
}else if([s isEqualToString:@"-"]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr class='l'><td class='l'>%d</td><td class='r'></td>",l_line++]];
|
||||
}else if([s isEqualToString:@"+"]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr class='r'><td class='l'></td><td class='r'>%d</td>",r_line++]];
|
||||
}
|
||||
[res appendString:[NSString stringWithFormat:@"<td class='code'>%@</td></tr>",[line substringFromIndex:1]]];
|
||||
if(!(l_line<l_end) && !(r_line<r_end))
|
||||
inBlock=FALSE;
|
||||
}else if([GLFileView isStartDiff:line]){
|
||||
if(inDiff)
|
||||
[res appendString:@"</tbody></table>"];
|
||||
inDiff=TRUE;
|
||||
NSString *fileName=[self getFileName:line];
|
||||
[res appendString:[NSString stringWithFormat:@"<table id='%@' class='diff'><thead><tr><td colspan='3'>",fileName]];
|
||||
[res appendString:[NSString stringWithFormat:@"<p>%@</p>",line]];
|
||||
}else if(inDiff){
|
||||
[res appendString:[NSString stringWithFormat:@"<p>%@</p>",line]];
|
||||
if([self isBinaryFile:line]){
|
||||
[res appendString:@"</td></tr></thead><tbody>"];
|
||||
NSArray *files=[self getFilesNames:line];
|
||||
if(![[files objectAtIndex:0] isAbsolutePath]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'>%@</td></tr>",[files objectAtIndex:0]]];
|
||||
if([GLFileView isImage:[files objectAtIndex:0]]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'><img src='GitX://{SHA}:/prev/%@'/></td></tr>",[files objectAtIndex:0]]];
|
||||
}
|
||||
}
|
||||
if(![[files objectAtIndex:1] isAbsolutePath]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'>%@</td></tr>",[files objectAtIndex:1]]];
|
||||
if([GLFileView isImage:[files objectAtIndex:1]]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'><img src='GitX://{SHA}/%@'/></td></tr>",[files objectAtIndex:1]]];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(inDiff)
|
||||
[res appendString:@"</tbody></table>"];
|
||||
return res;
|
||||
}
|
||||
|
||||
+(NSString *)getFileName:(NSString *)line
|
||||
{
|
||||
NSRange b = [line rangeOfString:@"b/"];
|
||||
NSString *file=[line substringFromIndex:b.location+2];
|
||||
return file;
|
||||
}
|
||||
|
||||
+(NSArray *)getFilesNames:(NSString *)line
|
||||
{
|
||||
NSString *a;
|
||||
NSString *b;
|
||||
NSScanner *scanner=[NSScanner scannerWithString:line];
|
||||
if([scanner scanString:@"Binary files " intoString:NULL]){
|
||||
[scanner scanUpToString:@" and" intoString:&a];
|
||||
[scanner scanString:@"and" intoString:NULL];
|
||||
[scanner scanUpToString:@" differ" intoString:&b];
|
||||
}
|
||||
if (![a isAbsolutePath]) {
|
||||
a=[a substringFromIndex:2];
|
||||
}
|
||||
if (![b isAbsolutePath]) {
|
||||
b=[b substringFromIndex:2];
|
||||
}
|
||||
|
||||
return [NSArray arrayWithObjects:a,b,nil];
|
||||
}
|
||||
|
||||
+(NSString*)mimeTypeForFileName:(NSString*)name
|
||||
{
|
||||
NSString *mimeType = nil;
|
||||
NSInteger i=[name rangeOfString:@"." options:NSBackwardsSearch].location;
|
||||
if(i!=NSNotFound){
|
||||
NSString *ext=[name substringFromIndex:i+1];
|
||||
CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)ext, NULL);
|
||||
if(UTI){
|
||||
CFStringRef registeredType = UTTypeCopyPreferredTagWithClass(UTI, kUTTagClassMIMEType);
|
||||
if(registeredType){
|
||||
mimeType = NSMakeCollectable(registeredType);
|
||||
}
|
||||
CFRelease(UTI);
|
||||
}
|
||||
}
|
||||
return mimeType;
|
||||
}
|
||||
|
||||
+(BOOL)isImage:(NSString*)file
|
||||
{
|
||||
NSString *mimeType=[GLFileView mimeTypeForFileName:file];
|
||||
return (mimeType!=nil) && ([mimeType rangeOfString:@"image/" options:NSCaseInsensitiveSearch].location!=NSNotFound);
|
||||
}
|
||||
|
||||
+(BOOL)isBinaryFile:(NSString *)line
|
||||
{
|
||||
return (([line length]>12) && [[line substringToIndex:12] isEqualToString:@"Binary files"]);
|
||||
}
|
||||
|
||||
+(BOOL)isStartDiff:(NSString *)line
|
||||
{
|
||||
return (([line length]>10) && [[line substringToIndex:10] isEqualToString:@"diff --git"]);
|
||||
}
|
||||
|
||||
+(BOOL)isStartBlock:(NSString *)line
|
||||
{
|
||||
return (([line length]>3) && [[line substringToIndex:3] isEqualToString:@"@@ "]);
|
||||
}
|
||||
|
||||
- (NSString *) parseBlame:(NSString *)txt
|
||||
{
|
||||
txt=[GLFileView parseHTML:txt];
|
||||
|
||||
NSArray *lines = [txt componentsSeparatedByString:@"\n"];
|
||||
NSString *line;
|
||||
NSMutableDictionary *headers=[NSMutableDictionary dictionary];
|
||||
NSMutableString *res=[NSMutableString string];
|
||||
|
||||
[res appendString:@"<table class='blocks'>\n"];
|
||||
int i=0;
|
||||
while(i<[lines count]){
|
||||
line=[lines objectAtIndex:i];
|
||||
NSArray *header=[line componentsSeparatedByString:@" "];
|
||||
if([header count]==4){
|
||||
int nLines=[(NSString *)[header objectAtIndex:3] intValue];
|
||||
[res appendFormat:@"<tr class='block l%d'>\n",nLines];
|
||||
line=[lines objectAtIndex:++i];
|
||||
if([[[line componentsSeparatedByString:@" "] objectAtIndex:0] isEqual:@"author"]){
|
||||
NSString *author=[line stringByReplacingOccurrencesOfString:@"author" withString:@""];
|
||||
NSString *summary=nil;
|
||||
while(summary==nil){
|
||||
line=[lines objectAtIndex:i++];
|
||||
if([[[line componentsSeparatedByString:@" "] objectAtIndex:0] isEqual:@"summary"]){
|
||||
summary=[line stringByReplacingOccurrencesOfString:@"summary" withString:@""];
|
||||
}
|
||||
}
|
||||
NSRange trunc={0,30};
|
||||
NSString *truncate_a=author;
|
||||
if([author length]>30){
|
||||
truncate_a=[author substringWithRange:trunc];
|
||||
}
|
||||
NSString *truncate_s=summary;
|
||||
if([summary length]>30){
|
||||
truncate_s=[summary substringWithRange:trunc];
|
||||
}
|
||||
NSString *block=[NSString stringWithFormat:@"<td><p class='author'>%@</p><p class='summary'>%@</p></td>\n<td>\n",truncate_a,truncate_s];
|
||||
[headers setObject:block forKey:[header objectAtIndex:0]];
|
||||
}
|
||||
[res appendString:[headers objectForKey:[header objectAtIndex:0]]];
|
||||
|
||||
NSMutableString *code=[NSMutableString string];
|
||||
do{
|
||||
line=[lines objectAtIndex:i++];
|
||||
}while([line characterAtIndex:0]!='\t');
|
||||
line=[line substringFromIndex:1];
|
||||
line=[line stringByReplacingOccurrencesOfString:@"\t" withString:@" "];
|
||||
[code appendString:line];
|
||||
[code appendString:@"\n"];
|
||||
|
||||
int n;
|
||||
for(n=1;n<nLines;n++){
|
||||
line=[lines objectAtIndex:i++];
|
||||
do{
|
||||
line=[lines objectAtIndex:i++];
|
||||
}while([line characterAtIndex:0]!='\t');
|
||||
line=[line substringFromIndex:1];
|
||||
line=[line stringByReplacingOccurrencesOfString:@"\t" withString:@" "];
|
||||
[code appendString:line];
|
||||
[code appendString:@"\n"];
|
||||
}
|
||||
[res appendFormat:@"<pre class='first-line: %@;brush: objc'>%@</pre>",[header objectAtIndex:2],code];
|
||||
[res appendString:@"</td>\n"];
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
[res appendString:@"</tr>\n"];
|
||||
}
|
||||
[res appendString:@"</table>\n"];
|
||||
//NSLog(@"%@",res);
|
||||
|
||||
return (NSString *)res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pragma mark NSSplitView delegate methods
|
||||
|
||||
#define kFileListSplitViewLeftMin 120
|
||||
#define kFileListSplitViewRightMin 180
|
||||
#define kHFileListSplitViewPositionDefault @"File List SplitView Position"
|
||||
|
||||
- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMin ofSubviewAt:(NSInteger)dividerIndex
|
||||
{
|
||||
return kFileListSplitViewLeftMin;
|
||||
}
|
||||
|
||||
- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)dividerIndex
|
||||
{
|
||||
return [splitView frame].size.width - [splitView dividerThickness] - kFileListSplitViewRightMin;
|
||||
}
|
||||
|
||||
// while the user resizes the window keep the left (file list) view constant and just resize the right view
|
||||
// unless the right view gets too small
|
||||
- (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize
|
||||
{
|
||||
NSRect newFrame = [splitView frame];
|
||||
|
||||
float dividerThickness = [splitView dividerThickness];
|
||||
|
||||
NSView *leftView = [[splitView subviews] objectAtIndex:0];
|
||||
NSRect leftFrame = [leftView frame];
|
||||
leftFrame.size.height = newFrame.size.height;
|
||||
|
||||
if ((newFrame.size.width - leftFrame.size.width - dividerThickness) < kFileListSplitViewRightMin) {
|
||||
leftFrame.size.width = newFrame.size.width - kFileListSplitViewRightMin - dividerThickness;
|
||||
}
|
||||
|
||||
NSView *rightView = [[splitView subviews] objectAtIndex:1];
|
||||
NSRect rightFrame = [rightView frame];
|
||||
rightFrame.origin.x = leftFrame.size.width + dividerThickness;
|
||||
rightFrame.size.width = newFrame.size.width - rightFrame.origin.x;
|
||||
rightFrame.size.height = newFrame.size.height;
|
||||
|
||||
[leftView setFrame:leftFrame];
|
||||
[rightView setFrame:rightFrame];
|
||||
}
|
||||
|
||||
// NSSplitView does not save and restore the position of the SplitView correctly so do it manually
|
||||
- (void)saveSplitViewPosition
|
||||
{
|
||||
float position = [[[fileListSplitView subviews] objectAtIndex:0] frame].size.width;
|
||||
[[NSUserDefaults standardUserDefaults] setFloat:position forKey:kHFileListSplitViewPositionDefault];
|
||||
[[NSUserDefaults standardUserDefaults] synchronize];
|
||||
}
|
||||
|
||||
// make sure this happens after awakeFromNib
|
||||
- (void)restoreSplitViewPositiion
|
||||
{
|
||||
float position = [[NSUserDefaults standardUserDefaults] floatForKey:kHFileListSplitViewPositionDefault];
|
||||
if (position < 1.0)
|
||||
position = 200;
|
||||
|
||||
[fileListSplitView setPosition:position ofDividerAtIndex:0];
|
||||
[fileListSplitView setHidden:NO];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@synthesize groups;
|
||||
@synthesize logFormat;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* GitX.h
|
||||
*/
|
||||
|
||||
#import <AppKit/AppKit.h>
|
||||
#import <ScriptingBridge/ScriptingBridge.h>
|
||||
|
||||
|
||||
@class GitXApplication, GitXDocument, GitXWindow;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Standard Suite
|
||||
*/
|
||||
|
||||
// The application's top-level scripting object.
|
||||
@interface GitXApplication : SBApplication
|
||||
|
||||
- (SBElementArray *) documents;
|
||||
- (SBElementArray *) windows;
|
||||
|
||||
@property (copy, readonly) NSString *name; // The name of the application.
|
||||
@property (readonly) BOOL frontmost; // Is this the active application?
|
||||
@property (copy, readonly) NSString *version; // The version number of the application.
|
||||
|
||||
- (void) open:(NSArray *)x; // Open a document.
|
||||
- (void) quit; // Quit the application.
|
||||
- (BOOL) exists:(id)x; // Verify that an object exists.
|
||||
- (void) showDiff:(NSString *)x; // Show the supplied diff output in a GitX window.
|
||||
- (void) initRepository:(NSURL *)x; // Create a git repository at the given filesystem URL.
|
||||
- (void) cloneRepository:(NSString *)x to:(NSURL *)to isBare:(BOOL)isBare; // Clone a repository.
|
||||
|
||||
@end
|
||||
|
||||
// A document.
|
||||
@interface GitXDocument : SBObject
|
||||
|
||||
@property (copy, readonly) NSString *name; // Its name.
|
||||
@property (copy, readonly) NSURL *file; // Its location on disk, if it has one.
|
||||
|
||||
- (void) close; // Close a document.
|
||||
- (void) delete; // Delete an object.
|
||||
- (void) duplicateTo:(SBObject *)to withProperties:(NSDictionary *)withProperties; // Copy an object.
|
||||
- (void) moveTo:(SBObject *)to; // Move an object to a new location.
|
||||
- (void) searchString:(NSString *)string inMode:(NSInteger)inMode; // Highlight commits that match the given search string.
|
||||
|
||||
@end
|
||||
|
||||
// A window.
|
||||
@interface GitXWindow : SBObject
|
||||
|
||||
@property (copy, readonly) NSString *name; // The title of the window.
|
||||
- (NSInteger) id; // The unique identifier of the window.
|
||||
@property NSInteger index; // The index of the window, ordered front to back.
|
||||
@property NSRect bounds; // The bounding rectangle of the window.
|
||||
@property (readonly) BOOL closeable; // Does the window have a close button?
|
||||
@property (readonly) BOOL miniaturizable; // Does the window have a minimize button?
|
||||
@property BOOL miniaturized; // Is the window minimized right now?
|
||||
@property (readonly) BOOL resizable; // Can the window be resized?
|
||||
@property BOOL visible; // Is the window visible right now?
|
||||
@property (readonly) BOOL zoomable; // Does the window have a zoom button?
|
||||
@property BOOL zoomed; // Is the window zoomed right now?
|
||||
@property (copy, readonly) GitXDocument *document; // The document whose contents are displayed in the window.
|
||||
|
||||
- (void) close; // Close a document.
|
||||
- (void) delete; // Delete an object.
|
||||
- (void) duplicateTo:(SBObject *)to withProperties:(NSDictionary *)withProperties; // Copy an object.
|
||||
- (void) moveTo:(SBObject *)to; // Move an object to a new location.
|
||||
- (void) searchString:(NSString *)string inMode:(NSInteger)inMode; // Highlight commits that match the given search string.
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* GitX Suite
|
||||
*/
|
||||
|
||||
// The GitX application.
|
||||
@interface GitXApplication (GitXSuite)
|
||||
|
||||
@end
|
||||
|
||||
// A document.
|
||||
@interface GitXDocument (GitXSuite)
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd">
|
||||
|
||||
<dictionary title="GitX Terminology">
|
||||
|
||||
<suite name="Standard Suite" code="????" description="Common classes and commands for all applications.">
|
||||
|
||||
<command name="open" code="aevtodoc" description="Open a document.">
|
||||
<direct-parameter description="The file(s) to be opened.">
|
||||
<type type="file" list="yes"/>
|
||||
</direct-parameter>
|
||||
</command>
|
||||
|
||||
<command name="close" code="coreclos" description="Close a document.">
|
||||
<cocoa class="NSCloseCommand"/>
|
||||
<direct-parameter type="specifier" description="the document(s) or window(s) to close."/>
|
||||
</command>
|
||||
|
||||
<command name="quit" code="aevtquit" description="Quit the application.">
|
||||
<cocoa class="NSQuitCommand"/>
|
||||
</command>
|
||||
|
||||
<command name="count" code="corecnte" description="Return the number of elements of a particular class within an object.">
|
||||
<cocoa class="NSCountCommand"/>
|
||||
<direct-parameter type="specifier" description="The objects to be counted."/>
|
||||
<parameter name="each" code="kocl" type="type" optional="yes" description="The class of objects to be counted." hidden="yes">
|
||||
<cocoa key="ObjectClass"/>
|
||||
</parameter>
|
||||
<result type="integer" description="The count."/>
|
||||
</command>
|
||||
|
||||
<command name="delete" code="coredelo" description="Delete an object.">
|
||||
<cocoa class="NSDeleteCommand"/>
|
||||
<direct-parameter type="specifier" description="The object(s) to delete."/>
|
||||
</command>
|
||||
|
||||
<command name="duplicate" code="coreclon" description="Copy an object.">
|
||||
<cocoa class="NSCloneCommand"/>
|
||||
<direct-parameter type="specifier" description="The object(s) to copy."/>
|
||||
<parameter name="to" code="insh" type="location specifier" description="The location for the new copy or copies." optional="yes">
|
||||
<cocoa key="ToLocation"/>
|
||||
</parameter>
|
||||
<parameter name="with properties" code="prdt" type="record" description="Properties to set in the new copy or copies right away." optional="yes">
|
||||
<cocoa key="WithProperties"/>
|
||||
</parameter>
|
||||
</command>
|
||||
|
||||
<command name="exists" code="coredoex" description="Verify that an object exists.">
|
||||
<cocoa class="NSExistsCommand"/>
|
||||
<direct-parameter type="any" description="The object(s) to check."/>
|
||||
<result type="boolean" description="Did the object(s) exist?"/>
|
||||
</command>
|
||||
|
||||
<command name="make" code="corecrel" description="Create a new object.">
|
||||
<cocoa class="NSCreateCommand"/>
|
||||
<parameter name="new" code="kocl" type="type" description="The class of the new object.">
|
||||
<cocoa key="ObjectClass"/>
|
||||
</parameter>
|
||||
<parameter name="at" code="insh" type="location specifier" optional="yes" description="The location at which to insert the object.">
|
||||
<cocoa key="Location"/>
|
||||
</parameter>
|
||||
<parameter name="with data" code="data" type="any" optional="yes" description="The initial contents of the object.">
|
||||
<cocoa key="ObjectData"/>
|
||||
</parameter>
|
||||
<parameter name="with properties" code="prdt" type="record" optional="yes" description="The initial values for properties of the object.">
|
||||
<cocoa key="KeyDictionary"/>
|
||||
</parameter>
|
||||
<result type="specifier" description="The new object."/>
|
||||
</command>
|
||||
|
||||
<command name="move" code="coremove" description="Move an object to a new location.">
|
||||
<cocoa class="NSMoveCommand"/>
|
||||
<direct-parameter type="specifier" description="The object(s) to move."/>
|
||||
<parameter name="to" code="insh" type="location specifier" description="The new location for the object(s).">
|
||||
<cocoa key="ToLocation"/>
|
||||
</parameter>
|
||||
</command>
|
||||
|
||||
<class name="application" code="capp" description="The application's top-level scripting object.">
|
||||
<cocoa class="NSApplication"/>
|
||||
<property name="name" code="pnam" type="text" access="r" description="The name of the application."/>
|
||||
<property name="frontmost" code="pisf" type="boolean" access="r" description="Is this the active application?">
|
||||
<cocoa key="isActive"/>
|
||||
</property>
|
||||
<property name="version" code="vers" type="text" access="r" description="The version number of the application."/>
|
||||
<element type="document">
|
||||
<cocoa key="orderedDocuments"/>
|
||||
</element>
|
||||
<element type="window" access="r">
|
||||
<cocoa key="orderedWindows"/>
|
||||
</element>
|
||||
<responds-to name="open">
|
||||
<cocoa method="handleOpenScriptCommand:"/>
|
||||
</responds-to>
|
||||
<responds-to name="quit">
|
||||
<cocoa method="handleQuitScriptCommand:"/>
|
||||
</responds-to>
|
||||
</class>
|
||||
|
||||
<class name="document" code="docu" description="A document.">
|
||||
<cocoa class="NSDocument"/>
|
||||
<property name="name" code="pnam" type="text" access="r" description="Its name.">
|
||||
<cocoa key="displayName"/>
|
||||
</property>
|
||||
<property name="file" code="file" type="file" access="r" description="Its location on disk, if it has one.">
|
||||
<cocoa key="fileURL"/>
|
||||
</property>
|
||||
<responds-to command="close">
|
||||
<cocoa method="handleCloseScriptCommand:"/>
|
||||
</responds-to>
|
||||
</class>
|
||||
|
||||
<class name="window" code="cwin" description="A window.">
|
||||
<cocoa class="NSWindow"/>
|
||||
<property name="name" code="pnam" type="text" access="r" description="The title of the window.">
|
||||
<cocoa key="title"/>
|
||||
</property>
|
||||
<property name="id" code="ID " type="integer" access="r" description="The unique identifier of the window.">
|
||||
<cocoa key="uniqueID"/>
|
||||
</property>
|
||||
<property name="index" code="pidx" type="integer" description="The index of the window, ordered front to back.">
|
||||
<cocoa key="orderedIndex"/>
|
||||
</property>
|
||||
<property name="bounds" code="pbnd" type="rectangle" description="The bounding rectangle of the window.">
|
||||
<cocoa key="boundsAsQDRect"/>
|
||||
</property>
|
||||
<property name="closeable" code="hclb" type="boolean" access="r" description="Does the window have a close button?">
|
||||
<cocoa key="hasCloseBox"/>
|
||||
</property>
|
||||
<property name="miniaturizable" code="ismn" type="boolean" access="r" description="Does the window have a minimize button?">
|
||||
<cocoa key="isMiniaturizable"/>
|
||||
</property>
|
||||
<property name="miniaturized" code="pmnd" type="boolean" description="Is the window minimized right now?">
|
||||
<cocoa key="isMiniaturized"/>
|
||||
</property>
|
||||
<property name="resizable" code="prsz" type="boolean" access="r" description="Can the window be resized?">
|
||||
<cocoa key="isResizable"/>
|
||||
</property>
|
||||
<property name="visible" code="pvis" type="boolean" description="Is the window visible right now?">
|
||||
<cocoa key="isVisible"/>
|
||||
</property>
|
||||
<property name="zoomable" code="iszm" type="boolean" access="r" description="Does the window have a zoom button?">
|
||||
<cocoa key="isZoomable"/>
|
||||
</property>
|
||||
<property name="zoomed" code="pzum" type="boolean" description="Is the window zoomed right now?">
|
||||
<cocoa key="isZoomed"/>
|
||||
</property>
|
||||
|
||||
<property name="document" code="docu" type="document" access="r" description="The document whose contents are displayed in the window."/>
|
||||
|
||||
<responds-to name="close">
|
||||
<cocoa method="handleCloseScriptCommand:"/>
|
||||
</responds-to>
|
||||
</class>
|
||||
|
||||
</suite>
|
||||
|
||||
<suite name="GitX Suite" code="GitX" description="Classes for GitX.">
|
||||
|
||||
<command name="show diff" code="GitXShDf" description="Show the supplied diff output in a GitX window.">
|
||||
<direct-parameter type="text" description="The textual output from a diff tool."/>
|
||||
</command>
|
||||
<command name="init repository" code="GitXInit" description="Create a git repository at the given filesystem URL.">
|
||||
<direct-parameter type="file" description="The URL of the repository to clone."/>
|
||||
</command>
|
||||
<command name="clone repository" code="GitXClon" description="Clone a repository.">
|
||||
<direct-parameter type="text" description="The URL of the repository to clone."/>
|
||||
<parameter name="to" code="URL " type="file" description="The location for the new repository.">
|
||||
<cocoa key="destinationURL"/>
|
||||
</parameter>
|
||||
<parameter name="is bare" code="Bare" type="boolean" optional="yes" description="Indicates whether the created repository should be a bare repository.">
|
||||
<cocoa key="isBare"/>
|
||||
</parameter>
|
||||
</command>
|
||||
|
||||
<command name="search" code="GitXSrch" description="Highlight commits that match the given search string.">
|
||||
<direct-parameter type="specifier" description="The repository document to search."/>
|
||||
<parameter name="string" code="SRCH" type="text" optional="yes" description="The string to search for.">
|
||||
<cocoa key="searchString"/>
|
||||
</parameter>
|
||||
<parameter name="in mode" code="Mode" type="integer" optional="yes" description="The type of search (defalts to basic [Subject, Author, SHA]).">
|
||||
<cocoa key="inMode"/>
|
||||
</parameter>
|
||||
</command>
|
||||
|
||||
<class-extension extends="application" description="The GitX application.">
|
||||
<responds-to name="show diff">
|
||||
<cocoa method="showDiffScriptCommand:"/>
|
||||
</responds-to>
|
||||
<responds-to name="init repository">
|
||||
<cocoa method="initRepositoryScriptCommand:"/>
|
||||
</responds-to>
|
||||
<responds-to name="clone repository">
|
||||
<cocoa method="cloneRepositoryScriptCommand:"/>
|
||||
</responds-to>
|
||||
</class-extension>
|
||||
|
||||
<class-extension extends="document" code="docu" description="A document.">
|
||||
<cocoa class="PBGitRepository"/>
|
||||
<responds-to name="search">
|
||||
<cocoa method="findInModeScriptCommand:"/>
|
||||
</responds-to>
|
||||
</class-extension>
|
||||
|
||||
</suite>
|
||||
|
||||
</dictionary>
|
||||
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// GitXRelativeDateFormatter.h
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 9/1/10.
|
||||
// Copyright 2010 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
|
||||
@interface GitXRelativeDateFormatter : NSFormatter {
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,93 @@
|
||||
//
|
||||
// GitXRelativeDateFormatter.m
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 9/1/10.
|
||||
// Copyright 2010 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#import "GitXRelativeDateFormatter.h"
|
||||
|
||||
|
||||
#define MINUTE 60
|
||||
#define HOUR (60 * MINUTE)
|
||||
|
||||
#define WEEK 7
|
||||
|
||||
|
||||
@implementation GitXRelativeDateFormatter
|
||||
|
||||
- (NSString *)stringForObjectValue:(id)date
|
||||
{
|
||||
if (![date isKindOfClass:[NSDate class]])
|
||||
return nil;
|
||||
|
||||
NSDate *now = [NSDate date];
|
||||
|
||||
NSInteger secondsAgo = lround([now timeIntervalSinceDate:date]);
|
||||
|
||||
if (secondsAgo < 0)
|
||||
return @"In the future!";
|
||||
|
||||
if (secondsAgo < MINUTE)
|
||||
return @"seconds ago";
|
||||
|
||||
if (secondsAgo < (2 * MINUTE))
|
||||
return @"1 minute ago";
|
||||
|
||||
if (secondsAgo < HOUR)
|
||||
return [NSString stringWithFormat:@"%d minutes ago", (secondsAgo / MINUTE)];
|
||||
|
||||
if (secondsAgo < (2 * HOUR))
|
||||
return @"1 hour ago";
|
||||
|
||||
// figure out # of days ago based on calender days (so yesterday is the day before today not 24 hours ago)
|
||||
NSDateFormatter *midnightFormmatter = [[NSDateFormatter alloc] init];
|
||||
[midnightFormmatter setDateFormat:@"yyyy-MM-dd"];
|
||||
NSDate *midnightOnTargetDate = [midnightFormmatter dateFromString:[midnightFormmatter stringFromDate:date]];
|
||||
NSDate *midnightToday = [midnightFormmatter dateFromString:[midnightFormmatter stringFromDate:now]];
|
||||
|
||||
// use NSCalendar so it will handle things like leap years correctly
|
||||
NSDateComponents *components = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)
|
||||
fromDate:midnightOnTargetDate
|
||||
toDate:midnightToday
|
||||
options:0];
|
||||
NSInteger yearsAgo = [components year];
|
||||
NSInteger monthsAgo = [components month];
|
||||
NSInteger daysAgo = [components day];
|
||||
|
||||
if (yearsAgo == 0) {
|
||||
if (monthsAgo == 0) {
|
||||
// return "hours ago" if it's still today, but "Yesterday" only if more than 6 hours ago
|
||||
// gives people a little time to get used to the idea that yesterday is over :)
|
||||
if ((daysAgo == 0) || (secondsAgo < (6 * HOUR)))
|
||||
return [NSString stringWithFormat:@"%d hours ago", (secondsAgo / HOUR)];
|
||||
if (daysAgo == 1)
|
||||
return @"Yesterday";
|
||||
|
||||
if (daysAgo >= (2 * WEEK))
|
||||
return [NSString stringWithFormat:@"%d weeks ago", (daysAgo / WEEK)];
|
||||
|
||||
return [NSString stringWithFormat:@"%d days ago", daysAgo];
|
||||
}
|
||||
|
||||
if (monthsAgo == 1)
|
||||
return @"1 month ago";
|
||||
|
||||
return [NSString stringWithFormat:@"%d months ago", monthsAgo];
|
||||
}
|
||||
|
||||
if (yearsAgo == 1) {
|
||||
if (monthsAgo == 0)
|
||||
return @"1 year ago";
|
||||
|
||||
if (monthsAgo == 1)
|
||||
return @"1 year 1 month ago";
|
||||
|
||||
return [NSString stringWithFormat:@"1 year %d months ago", monthsAgo];
|
||||
}
|
||||
|
||||
return [NSString stringWithFormat:@"%d years ago", yearsAgo];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// GitXScriptingConstants.h
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 8/15/10.
|
||||
// Copyright 2010 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#define kGitXBundleIdentifier @"nl.frim.GitX"
|
||||
|
||||
|
||||
#define kGitXAEKeyArgumentsList 'ARGS'
|
||||
|
||||
#define kGitXCloneDestinationURLKey @"destinationURL"
|
||||
#define kGitXCloneIsBareKey @"isBare"
|
||||
|
||||
#define kGitXFindSearchStringKey @"searchString"
|
||||
#define kGitXFindInModeKey @"inMode"
|
||||
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// GitXTextFieldCell.h
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 8/27/10.
|
||||
// Copyright 2010 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "PBRefContextDelegate.h"
|
||||
|
||||
|
||||
@interface GitXTextFieldCell : NSTextFieldCell {
|
||||
IBOutlet id<PBRefContextDelegate> contextMenuDelegate;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// GitXTextFieldCell.m
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 8/27/10.
|
||||
// Copyright 2010 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#import "GitXTextFieldCell.h"
|
||||
#import "PBGitCommit.h"
|
||||
#import "PBRefController.h"
|
||||
|
||||
|
||||
@implementation GitXTextFieldCell
|
||||
|
||||
- (NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
|
||||
{
|
||||
// disables the cell's selection highlight
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSMenu *)menuForEvent:(NSEvent *)anEvent inRect:(NSRect)cellFrame ofView:(NSTableView *)commitList
|
||||
{
|
||||
NSInteger rowIndex = [commitList rowAtPoint:(cellFrame.origin)];
|
||||
NSArray *items = [contextMenuDelegate menuItemsForRow:rowIndex];
|
||||
if (!items)
|
||||
return nil;
|
||||
|
||||
NSMenu *menu = [[NSMenu alloc] init];
|
||||
[menu setAutoenablesItems:NO];
|
||||
for (NSMenuItem *item in items)
|
||||
[menu addItem:item];
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
@end
|
||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 269 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 200 B |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 268 B |
|
After Width: | Height: | Size: 210 B |
|
After Width: | Height: | Size: 199 B |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 335 B |
|
After Width: | Height: | Size: 215 B |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 367 B |
|
After Width: | Height: | Size: 217 B |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 349 B |
|
After Width: | Height: | Size: 205 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 271 B |
|
After Width: | Height: | Size: 1.3 KiB |
@@ -89,5 +89,9 @@
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
<key>NSAppleScriptEnabled</key>
|
||||
<true/>
|
||||
<key>OSAScriptingDefinition</key>
|
||||
<string>GitX.sdef</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// Install.xcconfig
|
||||
// GitX
|
||||
//
|
||||
// Created by Andre Berg on 19.10.09.
|
||||
// Copyright 2009 Berg Media. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// Global settings across build configurations for Install
|
||||
|
||||
// The Install build config should just serve as a mere extension to the Release
|
||||
// config, e.g. please do not define settings here that could as well be defined
|
||||
// in Release.xcconfig.
|
||||
|
||||
#include "Release.xcconfig"
|
||||
|
||||
CUSTOM_INSTALL_DIR = $(DEVELOPER_DIR)/Applications/Utilities/Third-Party // used with the Install.sh script
|
||||
CLI_CUSTOM_INSTALL_DIR = /usr/local/bin // used with the Install.sh script
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string></string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.yourcompany.${PRODUCT_NAME:identifier}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${PRODUCT_NAME}</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// MGRecessedPopUpButtonCell.h
|
||||
// MGScopeBar
|
||||
//
|
||||
// Created by Matt Gemmell on 20/03/2008.
|
||||
// Copyright 2008 Instinctive Code.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
/*
|
||||
This cell class is used only for NSPopUpButtons which do NOT automatically
|
||||
get their titles from their selected menu-items, since such popup-buttons
|
||||
are weirdly broken when using the recessed bezel-style.
|
||||
*/
|
||||
|
||||
@interface MGRecessedPopUpButtonCell : NSPopUpButtonCell {
|
||||
NSButton *recessedButton; // we use a separate NSButton to do the bezel-drawing.
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,54 @@
|
||||
//
|
||||
// MGRecessedPopUpButtonCell.m
|
||||
// MGScopeBar
|
||||
//
|
||||
// Created by Matt Gemmell on 20/03/2008.
|
||||
// Copyright 2008 Instinctive Code.
|
||||
//
|
||||
|
||||
#import "MGRecessedPopUpButtonCell.h"
|
||||
|
||||
|
||||
@implementation MGRecessedPopUpButtonCell
|
||||
|
||||
|
||||
- (id)initTextCell:(NSString *)title pullsDown:(BOOL)pullsDown
|
||||
{
|
||||
if ((self = [super initTextCell:title pullsDown:pullsDown])) {
|
||||
recessedButton = [[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 30, 20)]; // arbitrary frame.
|
||||
[recessedButton setTitle:@""];
|
||||
[recessedButton setBezelStyle:NSRecessedBezelStyle];
|
||||
[recessedButton setButtonType:NSPushOnPushOffButton];
|
||||
[[recessedButton cell] setHighlightsBy:NSCellIsBordered | NSCellIsInsetButton];
|
||||
[recessedButton setShowsBorderOnlyWhileMouseInside:NO];
|
||||
[recessedButton setState:NSOnState]; // ensures it looks pushed-in.
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[recessedButton release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
- (void)drawTitleWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
|
||||
{
|
||||
// Inset title rect since its position is broken when NSPopUpButton
|
||||
// isn't using its selected item as its title.
|
||||
NSRect titleFrame = cellFrame;
|
||||
titleFrame.origin.y += 1.0;
|
||||
[super drawTitleWithFrame:titleFrame inView:controlView];
|
||||
}
|
||||
|
||||
|
||||
- (void)drawBezelWithFrame:(NSRect)frame inView:(NSView *)controlView
|
||||
{
|
||||
[recessedButton setFrame:frame];
|
||||
[recessedButton drawRect:frame];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// MGScopeBar.h
|
||||
// MGScopeBar
|
||||
//
|
||||
// Created by Matt Gemmell on 15/03/2008.
|
||||
// Copyright 2008 Instinctive Code.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "MGScopeBarDelegateProtocol.h"
|
||||
|
||||
@interface MGScopeBar : NSView {
|
||||
@private
|
||||
IBOutlet id <MGScopeBarDelegate, NSObject> delegate; // weak ref.
|
||||
NSMutableArray *_separatorPositions; // x-coords of separators, indexed by their group-number.
|
||||
NSMutableArray *_groups; // groups of items.
|
||||
NSView *_accessoryView; // weak ref since it's a subview.
|
||||
NSMutableDictionary *_identifiers; // map of identifiers to items.
|
||||
NSMutableArray *_selectedItems; // all selected items in all groups; see note below.
|
||||
float _lastWidth; // previous width of view from when we last resized.
|
||||
NSInteger _firstCollapsedGroup; // index of first group collapsed into a popup.
|
||||
float _totalGroupsWidthForPopups; // total width needed to show all groups expanded (excluding padding and accessory).
|
||||
float _totalGroupsWidth; // total width needed to show all groups as native-width popups (excluding padding and accessory).
|
||||
BOOL _smartResizeEnabled; // whether to do our clever collapsing/expanding of buttons when resizing (Smart Resizing).
|
||||
}
|
||||
|
||||
@property(assign) id delegate; // should implement the MGScopeBarDelegate protocol.
|
||||
|
||||
- (void)reloadData; // causes the scope-bar to reload all groups/items from its delegate.
|
||||
- (void)sizeToFit; // only resizes vertically to optimum height; does not affect width.
|
||||
- (void)adjustSubviews; // performs Smart Resizing if enabled. You should only need to call this yourself if you change the width of the accessoryView.
|
||||
|
||||
// Smart Resize is the intelligent conversion of button-groups into NSPopUpButtons and vice-versa, based on available space.
|
||||
// This functionality is enabled (YES) by default. Changing this setting will automatically call -reloadData.
|
||||
- (BOOL)smartResizeEnabled;
|
||||
- (void)setSmartResizeEnabled:(BOOL)enabled;
|
||||
|
||||
// The following method must be used to manage selections in the scope-bar; do not attempt to manipulate buttons etc directly.
|
||||
- (void)setSelected:(BOOL)selected forItem:(NSString *)identifier inGroup:(int)groupNumber;
|
||||
- (NSArray *)selectedItems;
|
||||
|
||||
/*
|
||||
Note: The -selectedItems method returns an array of arrays.
|
||||
Each index in the returned array represents the group of items at that index.
|
||||
The contents of each sub-array are the identifiers of each selected item in that group.
|
||||
Sub-arrays may be empty, but will always be present (i.e. you will always find an NSArray).
|
||||
Depending on the group's selection-mode, sub-arrays may contain zero, one or many identifiers.
|
||||
The identifiers in each sub-array are not in any particular order.
|
||||
*/
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,17 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 44
|
||||
/!svn/ver/43/MGScopeBar/MGScopeBar.xcodeproj
|
||||
END
|
||||
TemplateIcon.icns
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 62
|
||||
/!svn/ver/19/MGScopeBar/MGScopeBar.xcodeproj/TemplateIcon.icns
|
||||
END
|
||||
project.pbxproj
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 60
|
||||
/!svn/ver/43/MGScopeBar/MGScopeBar.xcodeproj/project.pbxproj
|
||||
END
|
||||
@@ -0,0 +1,96 @@
|
||||
10
|
||||
|
||||
dir
|
||||
69
|
||||
http://svn.cocoasourcecode.com/MGScopeBar/MGScopeBar.xcodeproj
|
||||
http://svn.cocoasourcecode.com
|
||||
|
||||
|
||||
|
||||
2009-10-24T11:49:35.201542Z
|
||||
43
|
||||
mattgemmell
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
fad7f400-0e54-0410-bf1d-e368f886e4d4
|
||||
|
||||
TemplateIcon.icns
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-06-12T17:44:16.000000Z
|
||||
9561f993b01bc966e01c9437d0c443ad
|
||||
2008-10-28T16:32:35.876966Z
|
||||
19
|
||||
mattgemmell
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
52318
|
||||
|
||||
project.pbxproj
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2010-06-12T17:44:16.000000Z
|
||||
5e5049e53865d37bb2458ba379077bee
|
||||
2009-10-24T11:49:35.201542Z
|
||||
43
|
||||
mattgemmell
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
13395
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
||||
@@ -0,0 +1,311 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
C95B43D00EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m in Sources */ = {isa = PBXBuildFile; fileRef = C95B43CF0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m */; };
|
||||
C9FB61150E8FF8360019B961 /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = C9FB61140E8FF8360019B961 /* AppController.m */; };
|
||||
C9FB611A0E8FF8810019B961 /* MGScopeBar.m in Sources */ = {isa = PBXBuildFile; fileRef = C9FB61180E8FF8810019B961 /* MGScopeBar.m */; };
|
||||
/* End PBXBuildFile 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>"; };
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
32CA4F630368D1EE00C91783 /* MGScopeBar_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGScopeBar_Prefix.pch; sourceTree = "<group>"; };
|
||||
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* MGScopeBar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MGScopeBar.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C95B43CE0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGRecessedPopUpButtonCell.h; sourceTree = "<group>"; };
|
||||
C95B43CF0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGRecessedPopUpButtonCell.m; sourceTree = "<group>"; };
|
||||
C9FB61130E8FF8360019B961 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = "<group>"; };
|
||||
C9FB61140E8FF8360019B961 /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = "<group>"; };
|
||||
C9FB61170E8FF8810019B961 /* MGScopeBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGScopeBar.h; sourceTree = "<group>"; };
|
||||
C9FB61180E8FF8810019B961 /* MGScopeBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGScopeBar.m; sourceTree = "<group>"; };
|
||||
C9FB61190E8FF8810019B961 /* MGScopeBarDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGScopeBarDelegateProtocol.h; sourceTree = "<group>"; };
|
||||
C9FB61A80E8FFE7B0019B961 /* TODO */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TODO; sourceTree = "<group>"; };
|
||||
C9FB61AA0E8FFE950019B961 /* ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadMe.txt; sourceTree = "<group>"; };
|
||||
C9FB61AC0E8FFEA90019B961 /* Source Code License.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "Source Code License.rtf"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8D11072E0486CEB800E47090 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9FB61130E8FF8360019B961 /* AppController.h */,
|
||||
C9FB61140E8FF8360019B961 /* AppController.m */,
|
||||
C9FB61160E8FF8590019B961 /* MGScopeBar */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
|
||||
);
|
||||
name = "Linked Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107320486CEB800E47090 /* MGScopeBar.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* MGScopeBar */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9FB61AA0E8FFE950019B961 /* ReadMe.txt */,
|
||||
C9FB61AC0E8FFEA90019B961 /* Source Code License.rtf */,
|
||||
C9FB61A80E8FFE7B0019B961 /* TODO */,
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = MGScopeBar;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32CA4F630368D1EE00C91783 /* MGScopeBar_Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107310486CEB800E47090 /* Info.plist */,
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9FB61160E8FF8590019B961 /* MGScopeBar */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9FB61170E8FF8810019B961 /* MGScopeBar.h */,
|
||||
C9FB61180E8FF8810019B961 /* MGScopeBar.m */,
|
||||
C9FB61190E8FF8810019B961 /* MGScopeBarDelegateProtocol.h */,
|
||||
C95B43CE0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.h */,
|
||||
C95B43CF0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m */,
|
||||
);
|
||||
name = MGScopeBar;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8D1107260486CEB800E47090 /* MGScopeBar */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "MGScopeBar" */;
|
||||
buildPhases = (
|
||||
8D1107290486CEB800E47090 /* Resources */,
|
||||
8D11072C0486CEB800E47090 /* Sources */,
|
||||
8D11072E0486CEB800E47090 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = MGScopeBar;
|
||||
productInstallPath = "$(HOME)/Applications";
|
||||
productName = MGScopeBar;
|
||||
productReference = 8D1107320486CEB800E47090 /* MGScopeBar.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MGScopeBar" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* MGScopeBar */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D1107260486CEB800E47090 /* MGScopeBar */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
8D1107290486CEB800E47090 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D11072C0486CEB800E47090 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */,
|
||||
C9FB61150E8FF8360019B961 /* AppController.m in Sources */,
|
||||
C9FB611A0E8FF8810019B961 /* MGScopeBar.m in Sources */,
|
||||
C95B43D00EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
089C165DFE840E0CC02AAC07 /* English */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
1DDD58150DA1D0A300B32029 /* English */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
C01FCF4B08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = MGScopeBar_Prefix.pch;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = MGScopeBar;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF4C08A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = MGScopeBar_Prefix.pch;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = MGScopeBar;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "MGScopeBar" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4B08A954540054247B /* Debug */,
|
||||
C01FCF4C08A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MGScopeBar" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
activeBuildConfigurationName = Debug;
|
||||
activeExecutable = 31D70A9D11C3FF0100F4B199 /* MGScopeBar */;
|
||||
activeTarget = 8D1107260486CEB800E47090 /* MGScopeBar */;
|
||||
codeSenseManager = 31D70ABE11C3FF1900F4B199 /* Code sense */;
|
||||
executables = (
|
||||
31D70A9D11C3FF0100F4B199 /* MGScopeBar */,
|
||||
);
|
||||
perUserDictionary = {
|
||||
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
|
||||
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
|
||||
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
|
||||
PBXFileTableDataSourceColumnWidthsKey = (
|
||||
20,
|
||||
364,
|
||||
20,
|
||||
48.16259765625,
|
||||
43,
|
||||
43,
|
||||
20,
|
||||
);
|
||||
PBXFileTableDataSourceColumnsKey = (
|
||||
PBXFileDataSource_FiletypeID,
|
||||
PBXFileDataSource_Filename_ColumnID,
|
||||
PBXFileDataSource_Built_ColumnID,
|
||||
PBXFileDataSource_ObjectSize_ColumnID,
|
||||
PBXFileDataSource_Errors_ColumnID,
|
||||
PBXFileDataSource_Warnings_ColumnID,
|
||||
PBXFileDataSource_Target_ColumnID,
|
||||
);
|
||||
};
|
||||
PBXPerProjectTemplateStateSaveDate = 298057473;
|
||||
PBXWorkspaceStateSaveDate = 298057473;
|
||||
};
|
||||
sourceControlManager = 31D70ABD11C3FF1900F4B199 /* Source Control */;
|
||||
userBuildSettings = {
|
||||
};
|
||||
};
|
||||
31D70A9D11C3FF0100F4B199 /* MGScopeBar */ = {
|
||||
isa = PBXExecutable;
|
||||
activeArgIndices = (
|
||||
);
|
||||
argumentStrings = (
|
||||
);
|
||||
autoAttachOnCrash = 1;
|
||||
breakpointsEnabled = 0;
|
||||
configStateDict = {
|
||||
};
|
||||
customDataFormattersEnabled = 1;
|
||||
dataTipCustomDataFormattersEnabled = 1;
|
||||
dataTipShowTypeColumn = 1;
|
||||
dataTipSortType = 0;
|
||||
debuggerPlugin = GDBDebugging;
|
||||
disassemblyDisplayState = 0;
|
||||
dylibVariantSuffix = "";
|
||||
enableDebugStr = 1;
|
||||
environmentEntries = (
|
||||
);
|
||||
executableSystemSymbolLevel = 0;
|
||||
executableUserSymbolLevel = 0;
|
||||
libgmallocEnabled = 0;
|
||||
name = MGScopeBar;
|
||||
showTypeColumn = 0;
|
||||
sourceDirectories = (
|
||||
);
|
||||
};
|
||||
31D70ABD11C3FF1900F4B199 /* Source Control */ = {
|
||||
isa = PBXSourceControlManager;
|
||||
fallbackIsa = XCSourceControlManager;
|
||||
isSCMEnabled = 0;
|
||||
scmConfiguration = {
|
||||
repositoryNamesForRoots = {
|
||||
"" = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
31D70ABE11C3FF1900F4B199 /* Code sense */ = {
|
||||
isa = PBXCodeSenseManager;
|
||||
indexTemplatePath = "";
|
||||
};
|
||||
8D1107260486CEB800E47090 /* MGScopeBar */ = {
|
||||
activeExec = 0;
|
||||
executables = (
|
||||
31D70A9D11C3FF0100F4B199 /* MGScopeBar */,
|
||||
);
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,311 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||
C95B43D00EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m in Sources */ = {isa = PBXBuildFile; fileRef = C95B43CF0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m */; };
|
||||
C9FB61150E8FF8360019B961 /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = C9FB61140E8FF8360019B961 /* AppController.m */; };
|
||||
C9FB611A0E8FF8810019B961 /* MGScopeBar.m in Sources */ = {isa = PBXBuildFile; fileRef = C9FB61180E8FF8810019B961 /* MGScopeBar.m */; };
|
||||
/* End PBXBuildFile 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>"; };
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
|
||||
1DDD58150DA1D0A300B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
32CA4F630368D1EE00C91783 /* MGScopeBar_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGScopeBar_Prefix.pch; sourceTree = "<group>"; };
|
||||
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
8D1107320486CEB800E47090 /* MGScopeBar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MGScopeBar.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C95B43CE0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGRecessedPopUpButtonCell.h; sourceTree = "<group>"; };
|
||||
C95B43CF0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGRecessedPopUpButtonCell.m; sourceTree = "<group>"; };
|
||||
C9FB61130E8FF8360019B961 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = "<group>"; };
|
||||
C9FB61140E8FF8360019B961 /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = "<group>"; };
|
||||
C9FB61170E8FF8810019B961 /* MGScopeBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGScopeBar.h; sourceTree = "<group>"; };
|
||||
C9FB61180E8FF8810019B961 /* MGScopeBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGScopeBar.m; sourceTree = "<group>"; };
|
||||
C9FB61190E8FF8810019B961 /* MGScopeBarDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGScopeBarDelegateProtocol.h; sourceTree = "<group>"; };
|
||||
C9FB61A80E8FFE7B0019B961 /* TODO */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TODO; sourceTree = "<group>"; };
|
||||
C9FB61AA0E8FFE950019B961 /* ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadMe.txt; sourceTree = "<group>"; };
|
||||
C9FB61AC0E8FFEA90019B961 /* Source Code License.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "Source Code License.rtf"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8D11072E0486CEB800E47090 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9FB61130E8FF8360019B961 /* AppController.h */,
|
||||
C9FB61140E8FF8360019B961 /* AppController.m */,
|
||||
C9FB61160E8FF8590019B961 /* MGScopeBar */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
|
||||
);
|
||||
name = "Linked Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
29B97324FDCFA39411CA2CEA /* AppKit.framework */,
|
||||
13E42FB307B3F0F600E4EEF1 /* CoreData.framework */,
|
||||
29B97325FDCFA39411CA2CEA /* Foundation.framework */,
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107320486CEB800E47090 /* MGScopeBar.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* MGScopeBar */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9FB61AA0E8FFE950019B961 /* ReadMe.txt */,
|
||||
C9FB61AC0E8FFEA90019B961 /* Source Code License.rtf */,
|
||||
C9FB61A80E8FFE7B0019B961 /* TODO */,
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = MGScopeBar;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32CA4F630368D1EE00C91783 /* MGScopeBar_Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8D1107310486CEB800E47090 /* Info.plist */,
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
|
||||
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C9FB61160E8FF8590019B961 /* MGScopeBar */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
C9FB61170E8FF8810019B961 /* MGScopeBar.h */,
|
||||
C9FB61180E8FF8810019B961 /* MGScopeBar.m */,
|
||||
C9FB61190E8FF8810019B961 /* MGScopeBarDelegateProtocol.h */,
|
||||
C95B43CE0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.h */,
|
||||
C95B43CF0EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m */,
|
||||
);
|
||||
name = MGScopeBar;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8D1107260486CEB800E47090 /* MGScopeBar */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "MGScopeBar" */;
|
||||
buildPhases = (
|
||||
8D1107290486CEB800E47090 /* Resources */,
|
||||
8D11072C0486CEB800E47090 /* Sources */,
|
||||
8D11072E0486CEB800E47090 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = MGScopeBar;
|
||||
productInstallPath = "$(HOME)/Applications";
|
||||
productName = MGScopeBar;
|
||||
productReference = 8D1107320486CEB800E47090 /* MGScopeBar.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MGScopeBar" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* MGScopeBar */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D1107260486CEB800E47090 /* MGScopeBar */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
8D1107290486CEB800E47090 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
|
||||
1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8D11072C0486CEB800E47090 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
8D11072D0486CEB800E47090 /* main.m in Sources */,
|
||||
C9FB61150E8FF8360019B961 /* AppController.m in Sources */,
|
||||
C9FB611A0E8FF8810019B961 /* MGScopeBar.m in Sources */,
|
||||
C95B43D00EB73CE3008EE468 /* MGRecessedPopUpButtonCell.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
089C165DFE840E0CC02AAC07 /* English */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
1DDD58150DA1D0A300B32029 /* English */,
|
||||
);
|
||||
name = MainMenu.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
C01FCF4B08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = MGScopeBar_Prefix.pch;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = MGScopeBar;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF4C08A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = MGScopeBar_Prefix.pch;
|
||||
INFOPLIST_FILE = Info.plist;
|
||||
INSTALL_PATH = "$(HOME)/Applications";
|
||||
PRODUCT_NAME = MGScopeBar;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.5;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "MGScopeBar" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4B08A954540054247B /* Debug */,
|
||||
C01FCF4C08A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MGScopeBar" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// MGScopeBarDelegateProtocol.h
|
||||
// MGScopeBar
|
||||
//
|
||||
// Created by Matt Gemmell on 15/03/2008.
|
||||
// Copyright 2008 Instinctive Code.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
|
||||
// Selection modes for the buttons within a group.
|
||||
typedef enum _MGScopeBarGroupSelectionMode {
|
||||
MGRadioSelectionMode = 0, // Exactly one item in the group will be selected at a time (no more, and no less).
|
||||
MGMultipleSelectionMode = 1 // Any number of items in the group (including none) may be selected at a time.
|
||||
} MGScopeBarGroupSelectionMode;
|
||||
|
||||
|
||||
@class MGScopeBar;
|
||||
@protocol MGScopeBarDelegate
|
||||
|
||||
|
||||
// Methods used to configure the scope bar.
|
||||
// Note: all groupNumber parameters are zero-based.
|
||||
|
||||
@required
|
||||
- (int)numberOfGroupsInScopeBar:(MGScopeBar *)theScopeBar;
|
||||
- (NSArray *)scopeBar:(MGScopeBar *)theScopeBar itemIdentifiersForGroup:(int)groupNumber;
|
||||
- (NSString *)scopeBar:(MGScopeBar *)theScopeBar labelForGroup:(int)groupNumber; // return nil or an empty string for no label.
|
||||
- (MGScopeBarGroupSelectionMode)scopeBar:(MGScopeBar *)theScopeBar selectionModeForGroup:(int)groupNumber;
|
||||
- (NSString *)scopeBar:(MGScopeBar *)theScopeBar titleOfItem:(NSString *)identifier inGroup:(int)groupNumber;
|
||||
|
||||
@optional
|
||||
// If the following method is not implemented, all groups except the first will have a separator before them.
|
||||
- (BOOL)scopeBar:(MGScopeBar *)theScopeBar showSeparatorBeforeGroup:(int)groupNumber;
|
||||
- (NSImage *)scopeBar:(MGScopeBar *)theScopeBar imageForItem:(NSString *)identifier inGroup:(int)groupNumber; // default is no image. Will be shown at 16x16.
|
||||
- (NSView *)accessoryViewForScopeBar:(MGScopeBar *)theScopeBar; // default is no accessory view.
|
||||
|
||||
|
||||
// Notification methods.
|
||||
|
||||
@optional
|
||||
- (void)scopeBar:(MGScopeBar *)theScopeBar selectedStateChanged:(BOOL)selected forItem:(NSString *)identifier inGroup:(int)groupNumber;
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,7 @@
|
||||
//
|
||||
// Prefix header for all source files of the 'MGScopeBar' target in the 'MGScopeBar' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
@@ -0,0 +1,75 @@
|
||||
MGScopeBar
|
||||
By Matt Legend Gemmell
|
||||
http://mattgemmell.com/
|
||||
http://instinctivecode.com/
|
||||
|
||||
|
||||
|
||||
What is MGScopeBar?
|
||||
-------------------
|
||||
|
||||
MGScopeBar is a control which provides a "scope bar" or "filter bar", much like that found in iTunes, the Finder (in the Find/Spotlight window), and Mail.
|
||||
|
||||
|
||||
|
||||
What platforms does it support?
|
||||
-------------------------------
|
||||
|
||||
MGScopeBar supports Mac OS X 10.5 (Leopard) or later.
|
||||
|
||||
|
||||
|
||||
What are the licensing requirements?
|
||||
------------------------------------
|
||||
|
||||
A license documented is included with the source code, but essentially it's a BSD-like license but requiring attribution. You're free to use the code in any kind of project, commercial or otherwise. You're also free to redistribute it, either modified or as-is. Read the license document for more details, and contact me if you have questions.
|
||||
|
||||
|
||||
|
||||
How do I use it in my project?
|
||||
------------------------------
|
||||
|
||||
Just copy the five files whose names start with "MG" into your project, and you're good to go. You can also use the AppController class as a handy reference, since it provides a demo of how MGScopeBar works.
|
||||
|
||||
|
||||
|
||||
What can it do?
|
||||
---------------
|
||||
|
||||
MGScopeBar gives you a scope bar control which gets its data from a delegate; it's very like NSTableView and other similar controls, so you should find it easy to use.
|
||||
|
||||
You can specify multiple "groups" of buttons, each of which can have:
|
||||
|
||||
1. An optional separator before the group.
|
||||
|
||||
2. An optional label to the left of the first button (and after the separator).
|
||||
|
||||
3. A series of buttons, each of which has a title, unique identifier string, and optional icon.
|
||||
|
||||
4. A selection-mode for the group; either radio-mode (only one item selected at a time), or multiple-selection (zero or more items can be selected at a time).
|
||||
|
||||
Scope bars also support an optional accessory view, displayed at the right side of the bar.
|
||||
|
||||
You can choose whether to use the Smart Resize feature (which is on by default). Smart Resize causes the scope bar to automatically collapse button-groups into popup-menus to better fit the available space.
|
||||
|
||||
You should read the MGScopeBarDelegateProtocol.h file to see a list of the delegate methods your delegate object will need to implement.
|
||||
|
||||
|
||||
|
||||
How do I know which buttons are selected in which groups?
|
||||
---------------------------------------------------------
|
||||
|
||||
There's a delegate method which will be called whenever the user interacts with the scope bar in such a way as to change the selection in any group; see the delegate protocol (and the example code in AppController) for more details.
|
||||
|
||||
You can also call the -selectedItems method on MGScopeBar to find out exactly what's selected at any time. See the MGScopeBar.h file for an explanation of the data returned from this method.
|
||||
|
||||
|
||||
|
||||
Getting in touch
|
||||
----------------
|
||||
|
||||
Whilst I can't provide specific help with integrating MGScopeBar into your application, I always welcome feedback, suggestions and bug reports. Feel free to get in touch with me via my gmail address (matt.gemmell) anytime.
|
||||
|
||||
I hope you enjoy using MGScopeBar.
|
||||
|
||||
-Matt Legend Gemmell
|
||||
@@ -0,0 +1,104 @@
|
||||
{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf350
|
||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
||||
{\colortbl;\red255\green255\blue255;\red51\green51\blue51;\red0\green180\blue128;\red255\green0\blue0;
|
||||
\red31\green105\blue199;\red119\green119\blue119;}
|
||||
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1}}
|
||||
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
|
||||
\deftab720
|
||||
\pard\pardeftab720\ql\qnatural
|
||||
|
||||
\f0\b\fs24 \cf2 Matt Gemmell / Instinctive Code Source Code License\
|
||||
|
||||
\b0\fs22 Last updated: 19th May 2008
|
||||
\fs24 \
|
||||
\
|
||||
\
|
||||
Thanks for downloading some of our source code!\
|
||||
\
|
||||
This is the license agreement for the source code which this document accompanies (don\'92t worry: you\'92re allowed to use it in your own products, commercial or otherwise).\
|
||||
\
|
||||
The full license text is further down this page, and you should only use the source code if you agree to the terms in that text. For convenience, though, we\'92ve put together a human-readable
|
||||
\b non-authoritative
|
||||
\b0 interpretation of the license which will hopefully answer any questions you have.\
|
||||
\
|
||||
\
|
||||
|
||||
\b \cf3 Green
|
||||
\b0 \cf2 text shows
|
||||
\b \cf3 what you can do with the code
|
||||
\b0 \cf2 .\
|
||||
|
||||
\b \cf4 Red
|
||||
\b0 \cf2 text means
|
||||
\b \cf4 restrictions you must abide by
|
||||
\b0 \cf2 .\
|
||||
\
|
||||
Basically, the license says that:\
|
||||
\
|
||||
\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
|
||||
\ls1\ilvl0\cf2 {\listtext 1. }You can
|
||||
\b \cf3 use the code in your own products, including commercial and/or closed-source products
|
||||
\b0 \cf2 .\
|
||||
{\listtext 2. }You can
|
||||
\b \cf3 modify the code
|
||||
\b0 \cf0 as you wish\cf2 , and
|
||||
\b \cf3 use the modified code in your products
|
||||
\b0 \cf2 .\
|
||||
{\listtext 3. }You can
|
||||
\b \cf3 redistribute the original, unmodified code
|
||||
\b0 \cf2 , but you
|
||||
\b \cf4 have to include the full license text below
|
||||
\b0 \cf2 .\
|
||||
{\listtext 4. }You can
|
||||
\b \cf3 redistribute the modified code
|
||||
\b0 \cf2 as you wish (
|
||||
\b \cf4 without the full license text below
|
||||
\b0 \cf2 ).\
|
||||
{\listtext 5. }In all cases, you
|
||||
\b \cf4 must include a credit mentioning Matt Gemmell
|
||||
\b0 \cf2 as the original author of the source.\
|
||||
{\listtext 6. }Matt Gemmell is \cf0 not liable for anything you do with the code\cf2 , no matter what. So be sensible.\
|
||||
{\listtext 7. }You
|
||||
\b \cf4 can\'92t use the name Matt Gemmell, the name Instinctive Code, the Instinctive Code logo or any other related marks to promote your products
|
||||
\b0 \cf2 based on the code.\
|
||||
{\listtext 8. }If you agree to all of that, go ahead and use the source. Otherwise, don\'92t!\
|
||||
\pard\pardeftab720\ql\qnatural
|
||||
\cf2 \
|
||||
|
||||
\b \
|
||||
\
|
||||
Suggested Attribution Format\
|
||||
|
||||
\b0 \
|
||||
The license requires that you give credit to Matt Gemmell, as the original author of any of our source that you use. The placement and format of the credit is up to you, but we prefer the credit to be in the software\'92s \'93About\'94 window. Alternatively, you could put the credit in a list of acknowledgements within the software, in the software\'92s documentation, or on the web page for the software. The suggested format for the attribution is:\
|
||||
\
|
||||
\pard\pardeftab720\ql\qnatural
|
||||
|
||||
\b \cf0 Includes <Name of Code> code by {\field{\*\fldinst{HYPERLINK "http://mattgemmell.com/"}}{\fldrslt \cf5 Matt Gemmell}}\cf6 .
|
||||
\b0 \
|
||||
\pard\pardeftab720\ql\qnatural
|
||||
\cf2 \
|
||||
where <Name of Code> would be replaced by the name of the specific source-code package you made use of. Where possible, please link the text \'93Matt Gemmell\'94 to the following URL, or include the URL as plain text: {\field{\*\fldinst{HYPERLINK "http://mattgemmell.com/"}}{\fldrslt \cf5 http://mattgemmell.com/}}\
|
||||
\
|
||||
\
|
||||
|
||||
\b Full Source Code License Text\
|
||||
\
|
||||
|
||||
\b0 Below you can find the actual text of the license agreement.
|
||||
\b \
|
||||
\
|
||||
\pard\pardeftab720\ql\qnatural
|
||||
\cf6 \
|
||||
License Agreement for Source Code provided by Matt Gemmell
|
||||
\b0 \
|
||||
\
|
||||
This software is supplied to you by Matt Gemmell in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this software.\
|
||||
\
|
||||
In consideration of your agreement to abide by the following terms, and subject to these terms, Matt Gemmell grants you a personal, non-exclusive license, to use, reproduce, modify and redistribute the software, with or without modifications, in source and/or binary forms; provided that if you redistribute the software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the software, and that in all cases attribution of Matt Gemmell as the original author of the source code shall be included in all such resulting software products or distributions.\uc0\u8232 \
|
||||
Neither the name, trademarks, service marks or logos of Matt Gemmell or Instinctive Code may be used to endorse or promote products derived from the software without specific prior written permission from Matt Gemmell. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Matt Gemmell herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the software may be incorporated.\
|
||||
\
|
||||
The software is provided by Matt Gemmell on an "AS IS" basis. MATT GEMMELL AND INSTINCTIVE CODE MAKE NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.\
|
||||
\
|
||||
IN NO EVENT SHALL MATT GEMMELL OR INSTINCTIVE CODE 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 SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF MATT GEMMELL OR INSTINCTIVE CODE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
MGScopeBar TODO
|
||||
|
||||
|
||||
- Maybe properly support a blue gradient appearance (like Mail in Tiger)?
|
||||
- Easy to change background gradient, but buttons/popups still highlight gray.
|
||||
|
||||
- Accessibility support
|
||||
- The control needs to indicate which groups it contains, what selection-mode those groups support, etc.
|
||||
- Otherwise it's just an opaque group of buttons to VoiceOver.
|
||||
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// NSApplication+GitXScripting.h
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 8/15/10.
|
||||
// Copyright 2010 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
|
||||
@interface NSApplication (GitXScripting)
|
||||
|
||||
- (void)showDiffScriptCommand:(NSScriptCommand *)command;
|
||||
- (void)initRepositoryScriptCommand:(NSScriptCommand *)command;
|
||||
- (void)cloneRepositoryScriptCommand:(NSScriptCommand *)command;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// NSApplication+GitXScripting.m
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 8/15/10.
|
||||
// Copyright 2010 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NSApplication+GitXScripting.h"
|
||||
#import "GitXScriptingConstants.h"
|
||||
#import "PBDiffWindowController.h"
|
||||
#import "PBRepositoryDocumentController.h"
|
||||
#import "PBCloneRepositoryPanel.h"
|
||||
|
||||
|
||||
@implementation NSApplication (GitXScripting)
|
||||
|
||||
- (void)showDiffScriptCommand:(NSScriptCommand *)command
|
||||
{
|
||||
NSString *diffText = [command directParameter];
|
||||
if (diffText) {
|
||||
PBDiffWindowController *diffController = [[PBDiffWindowController alloc] initWithDiff:diffText];
|
||||
[diffController showWindow:nil];
|
||||
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)initRepositoryScriptCommand:(NSScriptCommand *)command
|
||||
{
|
||||
NSURL *repositoryURL = [command directParameter];
|
||||
if (repositoryURL)
|
||||
[[PBRepositoryDocumentController sharedDocumentController] initNewRepositoryAtURL:repositoryURL];
|
||||
}
|
||||
|
||||
- (void)cloneRepositoryScriptCommand:(NSScriptCommand *)command
|
||||
{
|
||||
NSString *repository = [command directParameter];
|
||||
if (repository) {
|
||||
NSDictionary *arguments = [command arguments];
|
||||
NSURL *destinationURL = [arguments objectForKey:kGitXCloneDestinationURLKey];
|
||||
if (destinationURL) {
|
||||
BOOL isBare = [[arguments objectForKey:kGitXCloneIsBareKey] boolValue];
|
||||
|
||||
[PBCloneRepositoryPanel beginCloneRepository:repository toURL:destinationURL isBare:isBare];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -27,36 +27,46 @@
|
||||
char *buffer = (char*)malloc(bufferSize + 1);
|
||||
if (buffer == NULL)
|
||||
[[NSException exceptionWithName:@"No memory left" reason:@"No more memory for allocating buffer" userInfo:nil] raise];
|
||||
buffer[0] = '\0';
|
||||
|
||||
int bytesReceived = 0, n = 1;
|
||||
int bytesReceived = 0, n = 0;
|
||||
|
||||
while (n > 0) {
|
||||
n = read(fd, buffer + bytesReceived++, 1);
|
||||
while (1) {
|
||||
n = read(fd, buffer + bytesReceived, 1);
|
||||
|
||||
if (n < 0)
|
||||
[[NSException exceptionWithName:@"Socket error" reason:@"Remote host closed connection" userInfo:nil] raise];
|
||||
if (n == 0)
|
||||
break;
|
||||
|
||||
if (n < 0) {
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
|
||||
free(buffer);
|
||||
NSString *reason = [NSString stringWithFormat:@"%s:%d: read() error: %s", __PRETTY_FUNCTION__, __LINE__, strerror(errno)];
|
||||
[[NSException exceptionWithName:@"Socket error" reason:reason userInfo:nil] raise];
|
||||
}
|
||||
|
||||
bytesReceived++;
|
||||
|
||||
if (bytesReceived >= bufferSize) {
|
||||
// Make buffer bigger
|
||||
bufferSize += BUFFER_SIZE;
|
||||
buffer = (char*)realloc(buffer, bufferSize + 1);
|
||||
buffer = (char *)reallocf(buffer, bufferSize + 1);
|
||||
if (buffer == NULL)
|
||||
[[NSException exceptionWithName:@"No memory left" reason:@"No more memory for allocating buffer" userInfo:nil] raise];
|
||||
}
|
||||
|
||||
switch (*(buffer + bytesReceived - 1)) {
|
||||
case '\n':
|
||||
buffer[bytesReceived-1] = '\0';
|
||||
NSString* s = [NSString stringWithCString: buffer encoding: NSUTF8StringEncoding];
|
||||
if ([s length] == 0)
|
||||
s = [NSString stringWithCString: buffer encoding: NSISOLatin1StringEncoding];
|
||||
return s;
|
||||
case '\r':
|
||||
bytesReceived--;
|
||||
char receivedByte = buffer[bytesReceived-1];
|
||||
if (receivedByte == '\n') {
|
||||
bytesReceived--;
|
||||
break;
|
||||
}
|
||||
|
||||
if (receivedByte == '\r')
|
||||
bytesReceived--;
|
||||
}
|
||||
|
||||
buffer[bytesReceived-1] = '\0';
|
||||
buffer[bytesReceived] = '\0';
|
||||
NSString *retVal = [NSString stringWithCString: buffer encoding: NSUTF8StringEncoding];
|
||||
if ([retVal length] == 0)
|
||||
retVal = [NSString stringWithCString: buffer encoding: NSISOLatin1StringEncoding];
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
//
|
||||
// NSOutlineViewExit.h
|
||||
// GitX
|
||||
//
|
||||
// Created by Pieter de Bie on 9/9/09.
|
||||
// Copyright 2009 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
|
||||
@interface NSOutlineView (PBExpandParents)
|
||||
|
||||
- (void)PBExpandItem:(id)item expandParents:(BOOL)expand;
|
||||
@end
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// NSOutlineViewExit.m
|
||||
// GitX
|
||||
//
|
||||
// Created by Pieter de Bie on 9/9/09.
|
||||
// Copyright 2009 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NSOutlineViewExt.h"
|
||||
|
||||
|
||||
@implementation NSOutlineView (PBExpandParents)
|
||||
|
||||
- (void)PBExpandItem:(id)item expandParents:(BOOL)expand
|
||||
{
|
||||
NSMutableArray *parents = [NSMutableArray array];
|
||||
while (item) {
|
||||
[parents insertObject:item atIndex:0];
|
||||
item = [item parent];
|
||||
}
|
||||
|
||||
for (id p in parents)
|
||||
[self expandItem:p];
|
||||
}
|
||||
@end
|
||||
@@ -0,0 +1,32 @@
|
||||
//
|
||||
// NSString_Truncate.h
|
||||
// GitX
|
||||
//
|
||||
// Created by Andre Berg on 24.03.10.
|
||||
// Copyright 2010 Berg Media. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
typedef enum {
|
||||
PBNSStringTruncateModeCenter = 0,
|
||||
PBNSStringTruncateModeStart = 1,
|
||||
PBNSStringTruncateModeEnd = 2
|
||||
} PBNSStringTruncateMode;
|
||||
|
||||
@interface NSString (PBGitXTruncateExtensions)
|
||||
|
||||
- (NSString *) truncateToLength:(NSUInteger)length mode:(PBNSStringTruncateMode)mode indicator:(NSString *)indicatorString;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,69 @@
|
||||
//
|
||||
// NSString_Truncate.m
|
||||
// GitX
|
||||
//
|
||||
// Created by Andre Berg on 24.03.10.
|
||||
// Copyright 2010 Berg Media. All rights reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#import "NSString_Truncate.h"
|
||||
|
||||
@implementation NSString (PBGitXTruncateExtensions)
|
||||
|
||||
- (NSString *) truncateToLength:(NSUInteger)targetLength mode:(PBNSStringTruncateMode)mode indicator:(NSString *)indicatorString {
|
||||
|
||||
NSString * res = nil;
|
||||
NSString * firstPart;
|
||||
NSString * lastPart;
|
||||
|
||||
if (!indicatorString) {
|
||||
indicatorString = @"...";
|
||||
}
|
||||
|
||||
NSUInteger stringLength = [self length];
|
||||
NSUInteger ilength = [indicatorString length];
|
||||
|
||||
if (stringLength <= targetLength) {
|
||||
return self;
|
||||
} else if (stringLength <= 0 || (!self)) {
|
||||
return nil;
|
||||
} else {
|
||||
switch (mode) {
|
||||
case PBNSStringTruncateModeCenter:
|
||||
firstPart = [self substringToIndex:(targetLength/2)];
|
||||
lastPart = [self substringFromIndex:(stringLength-((targetLength/2))+ilength)];
|
||||
res = [NSString stringWithFormat:@"%@%@%@", firstPart, indicatorString, lastPart];
|
||||
break;
|
||||
case PBNSStringTruncateModeStart:
|
||||
res = [NSString stringWithFormat:@"%@%@", indicatorString, [self substringFromIndex:((stringLength-targetLength)+ilength)]];
|
||||
break;
|
||||
case PBNSStringTruncateModeEnd:
|
||||
res = [NSString stringWithFormat:@"%@%@", [self substringToIndex:(targetLength-ilength)], indicatorString];
|
||||
break;
|
||||
default:
|
||||
;
|
||||
NSException * myException = [NSException exceptionWithName:NSInvalidArgumentException
|
||||
reason:[NSString stringWithFormat:
|
||||
@"[%@ %s] called with nonsensical value for 'mode' (mode = %d) ***",
|
||||
[self class], _cmd, mode]
|
||||
userInfo:nil];
|
||||
@throw myException;
|
||||
return res;
|
||||
break;
|
||||
};
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// PBAddRemoteSheet.h
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 12/8/09.
|
||||
// Copyright 2009 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
|
||||
@class PBGitRepository;
|
||||
|
||||
@interface PBAddRemoteSheet : NSWindowController {
|
||||
PBGitRepository *repository;
|
||||
|
||||
NSTextField *remoteName;
|
||||
NSTextField *remoteURL;
|
||||
NSTextField *errorMessage;
|
||||
|
||||
NSOpenPanel *browseSheet;
|
||||
NSView *browseAccessoryView;
|
||||
}
|
||||
|
||||
+ (void) beginAddRemoteSheetForRepository:(PBGitRepository *)repo;
|
||||
|
||||
- (IBAction) browseFolders:(id)sender;
|
||||
- (IBAction) addRemote:(id)sender;
|
||||
- (IBAction) orderOutAddRemoteSheet:(id)sender;
|
||||
- (IBAction) showHideHiddenFiles:(id)sender;
|
||||
|
||||
|
||||
@property (readwrite) PBGitRepository *repository;
|
||||
|
||||
@property (readwrite) IBOutlet NSTextField *remoteName;
|
||||
@property (readwrite) IBOutlet NSTextField *remoteURL;
|
||||
@property (readwrite) IBOutlet NSTextField *errorMessage;
|
||||
|
||||
@property (readwrite) NSOpenPanel *browseSheet;
|
||||
@property (readwrite) IBOutlet NSView *browseAccessoryView;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,142 @@
|
||||
//
|
||||
// PBAddRemoteSheet.m
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 12/8/09.
|
||||
// Copyright 2009 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#import "PBAddRemoteSheet.h"
|
||||
#import "PBGitWindowController.h"
|
||||
#import "PBGitRepository.h"
|
||||
|
||||
|
||||
|
||||
@interface PBAddRemoteSheet ()
|
||||
|
||||
- (void) beginAddRemoteSheetForRepository:(PBGitRepository *)repo;
|
||||
- (void) openAddRemoteSheet;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation PBAddRemoteSheet
|
||||
|
||||
|
||||
@synthesize repository;
|
||||
|
||||
@synthesize remoteName;
|
||||
@synthesize remoteURL;
|
||||
@synthesize errorMessage;
|
||||
|
||||
@synthesize browseSheet;
|
||||
@synthesize browseAccessoryView;
|
||||
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark PBAddRemoteSheet
|
||||
|
||||
+ (void) beginAddRemoteSheetForRepository:(PBGitRepository *)repo
|
||||
{
|
||||
PBAddRemoteSheet *sheet = [[self alloc] initWithWindowNibName:@"PBAddRemoteSheet"];
|
||||
[sheet beginAddRemoteSheetForRepository:repo];
|
||||
}
|
||||
|
||||
|
||||
- (void) beginAddRemoteSheetForRepository:(PBGitRepository *)repo
|
||||
{
|
||||
self.repository = repo;
|
||||
|
||||
[self window];
|
||||
[self openAddRemoteSheet];
|
||||
}
|
||||
|
||||
|
||||
- (void) openAddRemoteSheet
|
||||
{
|
||||
[self.errorMessage setStringValue:@""];
|
||||
|
||||
[NSApp beginSheet:[self window] modalForWindow:[self.repository.windowController window] modalDelegate:self didEndSelector:nil contextInfo:NULL];
|
||||
}
|
||||
|
||||
|
||||
- (void) browseSheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)code contextInfo:(void *)info
|
||||
{
|
||||
[sheet orderOut:self];
|
||||
|
||||
if (code == NSOKButton)
|
||||
[self.remoteURL setStringValue:[(NSOpenPanel *)sheet filename]];
|
||||
|
||||
[self openAddRemoteSheet];
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pragma mark IBActions
|
||||
|
||||
- (IBAction) browseFolders:(id)sender
|
||||
{
|
||||
[self orderOutAddRemoteSheet:nil];
|
||||
|
||||
self.browseSheet = [NSOpenPanel openPanel];
|
||||
|
||||
[browseSheet setTitle:@"Add remote"];
|
||||
[browseSheet setMessage:@"Select a folder with a git repository"];
|
||||
[browseSheet setCanChooseFiles:NO];
|
||||
[browseSheet setCanChooseDirectories:YES];
|
||||
[browseSheet setAllowsMultipleSelection:NO];
|
||||
[browseSheet setCanCreateDirectories:NO];
|
||||
[browseSheet setAccessoryView:browseAccessoryView];
|
||||
|
||||
[browseSheet beginSheetForDirectory:nil file:nil types:nil
|
||||
modalForWindow:[self.repository.windowController window]
|
||||
modalDelegate:self
|
||||
didEndSelector:@selector(browseSheetDidEnd:returnCode:contextInfo:)
|
||||
contextInfo:NULL];
|
||||
}
|
||||
|
||||
|
||||
- (IBAction) addRemote:(id)sender
|
||||
{
|
||||
[self.errorMessage setStringValue:@""];
|
||||
|
||||
NSString *name = [[self.remoteName stringValue] copy];
|
||||
|
||||
if ([name isEqualToString:@""]) {
|
||||
[self.errorMessage setStringValue:@"Remote name is required"];
|
||||
return;
|
||||
}
|
||||
|
||||
if (![self.repository checkRefFormat:[@"refs/remotes/" stringByAppendingString:name]]) {
|
||||
[self.errorMessage setStringValue:@"Invalid remote name"];
|
||||
return;
|
||||
}
|
||||
|
||||
NSString *url = [[self.remoteURL stringValue] copy];
|
||||
if ([url isEqualToString:@""]) {
|
||||
[self.errorMessage setStringValue:@"Remote URL is required"];
|
||||
return;
|
||||
}
|
||||
|
||||
[self orderOutAddRemoteSheet:self];
|
||||
[self.repository beginAddRemote:name forURL:url];
|
||||
}
|
||||
|
||||
|
||||
- (IBAction) orderOutAddRemoteSheet:(id)sender
|
||||
{
|
||||
[NSApp endSheet:[self window]];
|
||||
[[self window] orderOut:self];
|
||||
}
|
||||
|
||||
|
||||
- (IBAction) showHideHiddenFiles:(id)sender
|
||||
{
|
||||
// This uses undocumented OpenPanel features to show hidden files (required for 10.5 support)
|
||||
NSNumber *showHidden = [NSNumber numberWithBool:[sender state] == NSOnState];
|
||||
[[self.browseSheet valueForKey:@"_navView"] setValue:showHidden forKey:@"showsHiddenFiles"];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -56,7 +56,7 @@
|
||||
[document.windowController showCommitView:self];
|
||||
else {
|
||||
PBGitRevSpecifier* rev = [[PBGitRevSpecifier alloc] initWithParameters:arguments];
|
||||
rev.workingDirectory = repositoryPath;
|
||||
rev.workingDirectory = url;
|
||||
document.currentBranch = [document addBranch: rev];
|
||||
[document.windowController showHistoryView:self];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// PBCloneRepositoryPanel.h
|
||||
// GitX
|
||||
//
|
||||
// Created by Nathan Kinsinger on 2/7/10.
|
||||
// Copyright 2010 Nathan Kinsinger. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
|
||||
@interface PBCloneRepositoryPanel : NSWindowController {
|
||||
NSTextField *repositoryURL;
|
||||
NSTextField *destinationPath;
|
||||
NSTextField *errorMessage;
|
||||
NSView *repositoryAccessoryView;
|
||||
|
||||
NSOpenPanel *browseRepositoryPanel;
|
||||
NSOpenPanel *browseDestinationPanel;
|
||||
|
||||
NSString *path;
|
||||
BOOL isBare;
|
||||
}
|
||||
|
||||
+ (id) panel;
|
||||
+ (void)beginCloneRepository:(NSString *)repository toURL:(NSURL *)targetURL isBare:(BOOL)bare;
|
||||
|
||||
- (void)showMessageSheet:(NSString *)messageText infoText:(NSString *)infoText;
|
||||
- (void)showErrorSheet:(NSError *)error;
|
||||
|
||||
- (IBAction) closeCloneRepositoryPanel:(id)sender;
|
||||
- (IBAction) clone:(id)sender;
|
||||
- (IBAction) browseRepository:(id)sender;
|
||||
- (IBAction) showHideHiddenFiles:(id)sender;
|
||||
- (IBAction) browseDestination:(id)sender;
|
||||
|
||||
@property (assign) IBOutlet NSTextField *repositoryURL;
|
||||
@property (assign) IBOutlet NSTextField *destinationPath;
|
||||
@property (assign) IBOutlet NSTextField *errorMessage;
|
||||
@property (assign) IBOutlet NSView *repositoryAccessoryView;
|
||||
|
||||
@property (assign) BOOL isBare;
|
||||
|
||||
@end
|
||||