branching MacPorts GUI

git-svn-id: https://svn.macports.org/repository/macports/branches/gsoc10-gui@67322 d073be05-634f-4543-b044-5fe20cf6d1d6
This commit is contained in:
Vasileios Georgitzikis
2010-05-05 15:14:41 +00:00
33 changed files with 8224 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
//
// NotificationsListener.h
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 8/4/09.
// Copyright 2009 UNAM. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import <MacPorts/MPNotifications.h>
@interface ActivityController : NSObject {
IBOutlet NSTextField *currentTask;
IBOutlet NSTableView *operations;
IBOutlet NSProgressIndicator *progress;
BOOL busy;
}
@property BOOL busy;
- (void)subscribeToNotifications;
- (void)gotMPMSG:(NSNotification *)notification;
- (void)gotMPINFO:(NSNotification *)notification;
- (void)gotMPDEFAULT:(NSNotification *)notification;
- (void)gotMPERROR:(NSNotification *)notification;
@end
+76
View File
@@ -0,0 +1,76 @@
//
// NotificationsListener.m
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 8/4/09.
// Copyright 2009 UNAM. All rights reserved.
//
#import "ActivityController.h"
@implementation ActivityController
@synthesize busy;
- (void)awakeFromNib {
[progress setUsesThreadedAnimation:YES];
[self setBusy:NO];
[self subscribeToNotifications];
}
- (void)subscribeToNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(gotMPMSG:)
name:MPMSG object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(gotMPDEFAULT:)
name:MPDEFAULT object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(gotMPINFO:)
name:MPINFO object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(gotMPERROR:)
name:MPERROR object:nil];
// [[NSNotificationCenter defaultCenter] addObserver:self
// selector:@selector()
// name:MPWARN object:nil];
// [[NSNotificationCenter defaultCenter] addObserver:self
// selector:@selector()
// name:MPDEBUG object:nil];
}
- (void)gotMPINFO:(NSNotification *)notification {
NSString *msg = [[notification userInfo] objectForKey:MPMESSAGE];
NSLog(@"GOT MPINFO NOTIFICATION: %@", msg);
// Starting up: A port command has been started
if ([msg isEqual:@"Starting up"]) {
[currentTask setStringValue:[[notification userInfo] objectForKey:MPMETHOD]];
[self setBusy:YES];
return;
}
// Shutting down: The command has finished
if ([msg isEqual:@"Shutting down"]) {
[currentTask setStringValue:@"" ];
[self setBusy:NO];
return;
}
}
- (void)gotMPMSG:(NSNotification *)notification {
NSString *msg = [[notification userInfo] objectForKey:MPMESSAGE];
NSLog(@"GOT MPMSG NOTIFICATION: %@", msg);
}
- (void)gotMPDEFAULT:(NSNotification *)notification {
NSString *msg = [[notification userInfo] objectForKey:MPMESSAGE];
NSLog(@"GOT MPDEFAULT NOTIFICATION: %@", msg);
}
- (void)gotMPERROR:(NSNotification *)notification {
NSString *msg = [[notification userInfo] objectForKey:MPMESSAGE];
NSLog(@"GOT ERROR NOTIFICATION: %@", msg);
//TODO: Display an alert
}
@end
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
+37
View File
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>Application.icns</string>
<key>CFBundleIdentifier</key>
<string>org.macports.${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>LSMinimumSystemVersion</key>
<string>10.5.0</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>LSMinimumSystemVersionByArchitecture</key>
<dict>
<key>i386</key>
<string>10.5.0</string>
<key>x86_64</key>
<string>10.6.0</string>
</dict>
</dict>
</plist>
Binary file not shown.
+85
View File
@@ -0,0 +1,85 @@
//
// MPActionLauncher.h
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 6/15/09.
// Copyright 2009 UNAM. All rights reserved.
//
/*!
@header MPActionLauncher
The MPActionLauncher allows acces to a shared per thread MacPorts Framework
wrapper to excecute MacPorts actions. It performs all the actions in another
thread in order to leave the GUI responsive.
*/
#import <Cocoa/Cocoa.h>
#import <MacPorts/MacPorts.h>
/*!
@class MPActionLauncher
@abstract Wrapper for MacPorts Framework actions
@discussion Contains a shared per thread MacPorts Framework wrapper
*/
@interface MPActionLauncher : NSObject {
NSArray *ports;
NSTask *actionTool;
NSConnection *connectionToActionTool;
BOOL isLoading;
}
/*!
@var ports
@abstract An array of available MPPorts
*/
@property (copy) NSArray *ports;
@property NSTask *actionTool;
/*!
@var isLoading
@abstract Tells whether the instance is loading the ports array or not
*/
@property BOOL isLoading;
/*!
@brief Return singleton shared MPActionLauncher instance
*/
+ (MPActionLauncher*)sharedInstance;
/*!
@brief Loads the MPPorts array with the available ports current PKGPath in another thread
*/
- (void)loadPorts;
/*!
@brief Installs a single port in another thread
@param port MPPort that represents the port to install
*/
- (void)installPort:(MPPort *)port;
/*!
@brief Uninstalls a single port in another thread
@param port MPPort that represents the port to install
*/
- (void)uninstallPort:(MPPort *)port;
/*!
@brief Upgrades a single port in another thread
@param port MPPort that represents the port to upgrade
*/
- (void)upgradePort:(MPPort *)port;
/*!
@brief Syncs the MacPorts installation in another thread
*/
- (void)sync;
/*!
@brief Selfupdates the MacPorts installation in another thread
*/
- (void)selfupdate;
- (void)cancelPortProcess;
@end
+81
View File
@@ -0,0 +1,81 @@
//
// MPActionLauncher.m
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 6/15/09.
// Copyright 2009 UNAM. All rights reserved.
//
#import "MPActionLauncher.h"
static MPActionLauncher *sharedActionLauncher = nil;
#pragma mark Implementation
@implementation MPActionLauncher
@synthesize ports, isLoading, actionTool;
+ (MPActionLauncher*) sharedInstance {
if (sharedActionLauncher == nil) {
[[self alloc] init]; // assignment not done here
}
return sharedActionLauncher;
}
- (id)init {
if (sharedActionLauncher == nil) {
ports = [NSMutableArray arrayWithCapacity:1];
sharedActionLauncher = self;
}
return sharedActionLauncher;
}
- (void)loadPorts {
[self setIsLoading:YES];
NSDictionary *allPorts = [[MPMacPorts sharedInstance] search:MPPortsAll];
NSDictionary *installedPorts = [[MPRegistry sharedRegistry] installed];
[self willChangeValueForKey:@"ports"];
for (id port in installedPorts) {
[[allPorts objectForKey:port] setStateFromReceipts:[installedPorts objectForKey:port]];
}
ports = [allPorts allValues];
[self didChangeValueForKey:@"ports"];
[self setIsLoading:NO];
}
- (void)installPort:(MPPort *)port {
NSError * error;
NSArray *empty = [NSArray arrayWithObject: @""];
[port installWithOptions:empty variants:empty error:&error];
}
- (void)uninstallPort:(MPPort *)port {
NSError * error;
[port uninstallWithVersion:@"" error:&error];
}
- (void)upgradePort:(MPPort *)port {
NSError * error;
[port upgradeWithError:&error];
}
- (void)sync {
NSError * error;
[[MPMacPorts sharedInstance] sync:&error];
}
- (void)selfupdate {
NSError * error;
[[MPMacPorts sharedInstance] selfUpdate:&error];
}
- (void)cancelPortProcess {
// TODO: display confirmation dialog
[[MPMacPorts sharedInstance] cancelCurrentCommand];
}
@end
+31
View File
@@ -0,0 +1,31 @@
//
// MPActionsController.h
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 6/19/09.
// Copyright 2009 UNAM. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import "MPActionLauncher.h"
#import "PortsTableController.h"
#import "ActivityController.h"
@interface MPActionsController : NSObject {
IBOutlet NSArrayController *ports;
IBOutlet PortsTableController *tableController;
IBOutlet ActivityController *activityController;
IBOutlet NSToolbarItem *cancel;
}
- (IBAction)openPreferences:(id)sender;
- (IBAction)install:(id)sender;
- (IBAction)uninstall:(id)sender;
- (IBAction)upgrade:(id)sender;
- (IBAction)sync:(id)sender;
- (IBAction)selfupdate:(id)sender;
- (IBAction)cancel:(id)sender;
@end
+92
View File
@@ -0,0 +1,92 @@
//
// MPActionsController.m
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 6/19/09.
// Copyright 2009 UNAM. All rights reserved.
//
#import "MPActionsController.h"
@implementation MPActionsController
- (IBAction)openPreferences:(id)sender {
[NSBundle loadNibNamed:@"Preferences" owner:self];
}
- (IBAction)install:(id)sender {
NSArray *selectedPorts = [ports selectedObjects];
for (id port in selectedPorts) {
[[MPActionLauncher sharedInstance]
performSelectorInBackground:@selector(installPort:) withObject:port];
}
}
- (IBAction)uninstall:(id)sender {
NSArray *selectedPorts = [ports selectedObjects];
for (id port in selectedPorts) {
[[MPActionLauncher sharedInstance]
performSelectorInBackground:@selector(uninstallPort:) withObject:port];
}
}
- (IBAction)upgrade:(id)sender {
NSArray *selectedPorts = [ports selectedObjects];
for (id port in selectedPorts) {
[[MPActionLauncher sharedInstance]
performSelectorInBackground:@selector(upgradePort:) withObject:port];
}
}
- (IBAction)sync:(id)sender {
[[MPActionLauncher sharedInstance]
performSelectorInBackground:@selector(sync) withObject:nil];
}
- (IBAction)selfupdate:(id)sender {
[[MPActionLauncher sharedInstance]
performSelectorInBackground:@selector(selfupdate) withObject:nil];
}
- (IBAction)cancel:(id)sender {
[[MPMacPorts sharedInstance] cancelCurrentCommand];
}
-(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem {
BOOL enable = ![activityController busy];
if ([[toolbarItem itemIdentifier] isEqual:[cancel itemIdentifier]]) {
// Cancel button is enabled when busy
return !enable;
}
return enable;
}
#pragma mark App Delegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[tableController hidePredicateEditor:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *pkgPath = [defaults objectForKey:@"PKGPath"];
if (pkgPath == nil) {
[self openPreferences:self];
} else {
[MPMacPorts setPKGPath:pkgPath];
[[MPActionLauncher sharedInstance]
performSelectorInBackground:@selector(loadPorts) withObject:nil];
}
}
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
return YES;
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
// I should check if it is running also
if (![[NSFileManager defaultManager] isWritableFileAtPath:[MPMacPorts PKGPath]]) {
[[MPActionLauncher sharedInstance] cancelPortProcess];
}
}
@end
+16
View File
@@ -0,0 +1,16 @@
//
// MPPortTableView.h
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 7/14/09.
// Copyright 2009 UNAM. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface MPPortTableView : NSTableView {
IBOutlet NSPanel *quickLookPanel;
}
@end
+34
View File
@@ -0,0 +1,34 @@
//
// MPPortTableView.m
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 7/14/09.
// Copyright 2009 UNAM. All rights reserved.
//
#import "MPPortTableView.h"
@implementation MPPortTableView
-(id)init {
[quickLookPanel setFloatingPanel:YES];
[super init];
return self;
}
-(void)keyDown:(NSEvent *)theEvent {
if ([[theEvent characters] characterAtIndex:0] == ' ' ||
([[theEvent characters] characterAtIndex:0] == 27 && [quickLookPanel isVisible])) {
if ([quickLookPanel isVisible]) {
[quickLookPanel close];
} else {
[quickLookPanel makeKeyAndOrderFront:self];
[quickLookPanel makeFirstResponder:self];
}
} else {
[super keyDown:theEvent];
}
}
@end
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
//
// Prefix header for all source files of the 'MPGUI' target in the 'MPGUI' project
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
+57
View File
@@ -0,0 +1,57 @@
//
// PortsListController.h
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 6/12/09.
// Copyright 2009 UNAM. All rights reserved.
//
/*!
@header PortsTableController
This is the controller responsible of managing search operations in the
ports table. This uses a NSPredicateEditor to implement the advanced search
and a NSPredicate to filter the NSArrayController which contains all the
available ports.
*/
#import <Cocoa/Cocoa.h>
#import "MPActionLauncher.h"
/*!
@class PortsTableController
@abstract Wrapper for MacPorts Framework actions
@discussion Contains a shared per thread MacPorts Framework wrapper
*/
@interface PortsTableController : NSObject {
IBOutlet NSTableView *portsTableView;
IBOutlet NSPredicateEditor *predicateEditor;
IBOutlet NSWindow *mainWindow;
// NSPredicateEditor management
NSPredicate *predicate;
NSInteger rowCount;
}
/*!
@var predicate
@abstract The NSPredicate which filters the ports table
*/
@property (copy) NSPredicate *predicate;
/*!
@brief Creates a NSPredicate based in the rows of the NSPredicateEditor
@param sender The object that sends the action
*/
- (IBAction)advancedSearch:(id)sender;
/*!
@brief Creates a NSPredicate based in the search text field
@param sender The object that sends the action
*/
- (IBAction)basicSearch:(id)sender;
- (IBAction)hidePredicateEditor:(id)sender;
@end
+109
View File
@@ -0,0 +1,109 @@
//
// PortsListController.m
// MPGUI
//
// Created by Juan Germán Castañeda Echevarría on 6/12/09.
// Copyright 2009 UNAM. All rights reserved.
//
#import "PortsTableController.h"
#pragma mark Private Methods
@interface PortsTableController (Private)
- (void)changePredicateEditorSize:(NSInteger) newRowCount;
@end
#pragma mark Implementation
@implementation PortsTableController
@synthesize predicate;
- (id)init {
// This is the number of rows shown in the xib file
rowCount = 1;
return self;
}
#pragma mark PredicateEditor delegate
- (void)ruleEditorRowsDidChange:(NSNotification *)notification {
[self changePredicateEditorSize:[predicateEditor numberOfRows]];
NSLog(@"rileEditorRowsDidChange");
}
#pragma mark Search
- (IBAction)advancedSearch:(id)sender {
NSPredicate* newPredicate = [predicateEditor objectValue];
NSLog(@"Advanced Predicate: %@", [newPredicate predicateFormat]);
if([newPredicate isNotEqualTo:predicate]) {
[self setPredicate:[NSPredicate predicateWithFormat:[newPredicate predicateFormat]]];
}
}
- (IBAction)basicSearch:(id)sender {
// Change internal NSPredicate and the NSPredicateEditor to match the basic query
NSString *name = [sender stringValue];
if([name isEqual:@""]) {
[self setPredicate:nil];
[predicateEditor setObjectValue:nil];
} else {
NSArray *subpredicates = [NSArray arrayWithObject:[NSPredicate predicateWithFormat:@"name CONTAINS %@", name]];
NSPredicate *newPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:subpredicates];
// I know what I am doing to you, so I dont want to be your delegate for now
[predicateEditor setDelegate:nil];
[predicateEditor setObjectValue:newPredicate];
[self setPredicate:newPredicate];
[self changePredicateEditorSize:[predicateEditor numberOfRows]];
// Now I want to know what you do :)
[predicateEditor setDelegate:self];
NSLog(@"Basic Predicate: %@", [newPredicate predicateFormat]);
}
}
- (IBAction)hidePredicateEditor:(id)sender {
[self changePredicateEditorSize:0];
}
#pragma mark Private Methods
- (void)changePredicateEditorSize:(NSInteger) newRowCount {
NSLog(@"ROWS: %d", newRowCount);
if (newRowCount == rowCount)
return;
if (newRowCount == 0) {
[self setPredicate:[NSPredicate predicateWithFormat:@"name LIKE '*'"]];
}
NSScrollView* tableScrollView = [portsTableView enclosingScrollView];
NSUInteger oldOutlineViewMask = [tableScrollView autoresizingMask];
NSScrollView* predicateEditorScrollView = [predicateEditor enclosingScrollView];
NSUInteger oldPredicateEditorViewMask = [predicateEditorScrollView autoresizingMask];
[tableScrollView setAutoresizingMask:NSViewWidthSizable | NSViewMaxYMargin];
[predicateEditorScrollView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
BOOL growing = (newRowCount > rowCount);
CGFloat heightDifference = fabs([predicateEditor rowHeight] * (newRowCount - rowCount));
NSSize sizeChange = [predicateEditor convertSize:NSMakeSize(0, heightDifference) toView:nil];
NSRect windowFrame = [mainWindow frame];
windowFrame.size.height += growing ? sizeChange.height : -sizeChange.height;
windowFrame.origin.y -= growing ? sizeChange.height : -sizeChange.height;
[mainWindow setFrame:windowFrame display:YES animate:YES];
[tableScrollView setAutoresizingMask:oldOutlineViewMask];
[predicateEditorScrollView setAutoresizingMask:oldPredicateEditorViewMask];
rowCount = newRowCount;
}
@end
+429
View File
@@ -0,0 +1,429 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">9J61</string>
<string key="IBDocument.InterfaceBuilderVersion">677</string>
<string key="IBDocument.AppKitVersion">949.46</string>
<string key="IBDocument.HIToolboxVersion">353.00</string>
<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.InterfaceBuilderKit</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<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">NSObject</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="540806231">
<int key="NSWindowStyleMask">15</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{196, 394}, {477, 116}}</string>
<int key="NSWTFlags">1677722624</int>
<string key="NSWindowTitle">Preferences</string>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<object class="NSView" key="NSWindowView" id="615275372">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTextField" id="707613289">
<reference key="NSNextResponder" ref="615275372"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 79}, {60, 17}}</string>
<reference key="NSSuperview" ref="615275372"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="476929583">
<int key="NSCellFlags">68288064</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">Tcl path:</string>
<object class="NSFont" key="NSSupport" id="135612064">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">1.300000e+01</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="707613289"/>
<object class="NSColor" key="NSBackgroundColor" id="317531640">
<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">MC42NjY2NjY2OQA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="689169118">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlTextColor</string>
<object class="NSColor" key="NSColor" id="1019754084">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
</object>
</object>
</object>
<object class="NSTextField" id="140782020">
<reference key="NSNextResponder" ref="615275372"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{82, 77}, {273, 22}}</string>
<reference key="NSSuperview" ref="615275372"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="559211659">
<int key="NSCellFlags">-2072904127</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="135612064"/>
<reference key="NSControlView" ref="140782020"/>
<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="1019754084"/>
</object>
</object>
</object>
<object class="NSButton" id="259885027">
<reference key="NSNextResponder" ref="615275372"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{363, 77}, {94, 19}}</string>
<reference key="NSSuperview" ref="615275372"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="749224624">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Select...</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">1.200000e+01</double>
<int key="NSfFlags">16</int>
</object>
<reference key="NSControlView" ref="259885027"/>
<int key="NSButtonFlags">-2038152961</int>
<int key="NSButtonFlags2">164</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
</object>
<object class="NSTextField" id="784669975">
<reference key="NSNextResponder" ref="615275372"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{29, 20}, {431, 42}}</string>
<reference key="NSSuperview" ref="615275372"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="808105839">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">1346502656</int>
<string key="NSContents">This is usually /Library/Tcl. Since this demo version is tested with MacPorts 1.8 your current installation may not fully work but you can always install a non privileged installation of MacPorts 1.8.</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">1.100000e+01</double>
<int key="NSfFlags">3100</int>
</object>
<reference key="NSControlView" ref="784669975"/>
<reference key="NSBackgroundColor" ref="317531640"/>
<reference key="NSTextColor" ref="689169118"/>
</object>
</object>
</object>
<string key="NSFrameSize">{477, 116}</string>
<reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
<string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
<object class="NSUserDefaultsController" id="457243387">
<bool key="NSSharedInstance">YES</bool>
</object>
<object class="NSCustomObject" id="357012729">
<string key="NSClassName">PreferencesController</string>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: values.PKGPath</string>
<reference key="source" ref="140782020"/>
<reference key="destination" ref="457243387"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="140782020"/>
<reference key="NSDestination" ref="457243387"/>
<string key="NSLabel">value: values.PKGPath</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">values.PKGPath</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">9</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">selectPKGPath:</string>
<reference key="source" ref="357012729"/>
<reference key="destination" ref="259885027"/>
</object>
<int key="connectionID">15</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">pkgPathField</string>
<reference key="source" ref="357012729"/>
<reference key="destination" ref="140782020"/>
</object>
<int key="connectionID">16</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>
<object class="NSArray" key="object" id="1002">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<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="1002"/>
<string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="1002"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="1002"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="540806231"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="615275372"/>
</object>
<reference key="parent" ref="1002"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="615275372"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="707613289"/>
<reference ref="140782020"/>
<reference ref="259885027"/>
<reference ref="784669975"/>
</object>
<reference key="parent" ref="540806231"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="707613289"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="476929583"/>
</object>
<reference key="parent" ref="615275372"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">4</int>
<reference key="object" ref="476929583"/>
<reference key="parent" ref="707613289"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">5</int>
<reference key="object" ref="140782020"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="559211659"/>
</object>
<reference key="parent" ref="615275372"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">6</int>
<reference key="object" ref="559211659"/>
<reference key="parent" ref="140782020"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="457243387"/>
<reference key="parent" ref="1002"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="259885027"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="749224624"/>
</object>
<reference key="parent" ref="615275372"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">11</int>
<reference key="object" ref="749224624"/>
<reference key="parent" ref="259885027"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">12</int>
<reference key="object" ref="784669975"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="808105839"/>
</object>
<reference key="parent" ref="615275372"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">13</int>
<reference key="object" ref="808105839"/>
<reference key="parent" ref="784669975"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">14</int>
<reference key="object" ref="357012729"/>
<reference key="parent" ref="1002"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
<string>1.IBEditorWindowLastContentRect</string>
<string>1.IBPluginDependency</string>
<string>1.IBWindowTemplateEditedContentRect</string>
<string>1.NSWindowTemplate.visibleAtLaunch</string>
<string>10.IBPluginDependency</string>
<string>11.IBPluginDependency</string>
<string>12.IBPluginDependency</string>
<string>13.IBPluginDependency</string>
<string>14.IBPluginDependency</string>
<string>2.IBPluginDependency</string>
<string>3.IBPluginDependency</string>
<string>4.IBPluginDependency</string>
<string>5.IBPluginDependency</string>
<string>6.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilderKit</string>
<string>com.apple.InterfaceBuilderKit</string>
<string>{{219, 400}, {477, 116}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{219, 400}, {477, 116}}</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<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>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">18</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">PreferencesController</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">selectPKGPath:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>pkgPathField</string>
<string>preferencesWindow</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>NSTextField</string>
<string>NSWindow</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">PreferencesController.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.LastKnownRelativeProjectPath">MPGUI.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>

Some files were not shown because too many files have changed in this diff Show More