[25087] users/rhwood/Pallet

source_changes at macosforge.org source_changes at macosforge.org
Sun May 13 10:51:34 PDT 2007


Revision: 25087
          http://trac.macosforge.org/projects/macports/changeset/25087
Author:   rhwood at macports.org
Date:     2007-05-13 10:51:33 -0700 (Sun, 13 May 2007)

Log Message:
-----------
Add reference class for self-expanding text fields
Don't use it since it does not do bindings as of yet

Modified Paths:
--------------
    users/rhwood/Pallet/Pallet.xcodeproj/project.pbxproj

Added Paths:
-----------
    users/rhwood/Pallet/IFVerticallyExpandingTextField.h
    users/rhwood/Pallet/IFVerticallyExpandingTextField.m

Added: users/rhwood/Pallet/IFVerticallyExpandingTextField.h
===================================================================
--- users/rhwood/Pallet/IFVerticallyExpandingTextField.h	                        (rev 0)
+++ users/rhwood/Pallet/IFVerticallyExpandingTextField.h	2007-05-13 17:51:33 UTC (rev 25087)
@@ -0,0 +1,56 @@
+/*
+ Copyright (c) 2006, Andrew Bowman.  All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without 
+ modification, are permitted provided that the following conditions are met:
+ 
+ * Redistributions of source code must retain the above copyright notice, this 
+   list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, 
+   this list of conditions and the following disclaimer in the documentation 
+   and/or other materials provided with the distribution.
+ * Neither the name of Inverse Falcon nor the names of its contributors may be 
+   used to endorse or promote products derived from this software without 
+   specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* IFVerticallyExpandingTextField 
+
+   This textfield expands and contracts as it is edited and resized, and behaves
+   in a similar manner to the input field in Apple's iChat message windows.
+
+   Superviews of the textfield and the window containing the textfield autosize 
+   accordingly.
+
+*/
+
+
+#import <Cocoa/Cocoa.h>
+
+enum { IFVerticalPadding = 5 };
+
+
+ at interface IFVerticallyExpandingTextField : NSTextField
+{
+   BOOL superviewsExpandOnGrowth;
+   BOOL isCollapsed;
+   NSMutableArray *viewMaskPairs; 
+}
+
+- (void) awakeFromNib;
+- (void) setSuperviewsExpandOnGrowth: (BOOL)shouldExpand;
+- (BOOL) superviewsExpandOnGrowth;
+- (void) forceAutosize;
+
+ at end
\ No newline at end of file

Added: users/rhwood/Pallet/IFVerticallyExpandingTextField.m
===================================================================
--- users/rhwood/Pallet/IFVerticallyExpandingTextField.m	                        (rev 0)
+++ users/rhwood/Pallet/IFVerticallyExpandingTextField.m	2007-05-13 17:51:33 UTC (rev 25087)
@@ -0,0 +1,327 @@
+/*
+ Copyright (c) 2006, Andrew Bowman.  All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without 
+ modification, are permitted provided that the following conditions are met:
+ 
+ * Redistributions of source code must retain the above copyright notice, this 
+ list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, 
+ this list of conditions and the following disclaimer in the documentation 
+ and/or other materials provided with the distribution.
+ * Neither the name of Inverse Falcon nor the names of its contributors may be 
+ used to endorse or promote products derived from this software without 
+ specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "IFVerticallyExpandingTextField.h"
+
+// Private helper class for associating NSViews with autoresizingMasks
+ at interface IFViewMaskPair : NSObject 
+{   
+   NSView *view;
+   unsigned int savedAutoresizingMask;
+}
+
+- (id) initWithView: (NSView *)aView;
+- (void) restoreAutoresizingMask;
+
+ at end
+
+
+ at implementation IFViewMaskPair 
+
+- (id) initWithView: (NSView *)aView {
+   self = [super init];
+   view = aView;
+   savedAutoresizingMask = [view autoresizingMask];
+   
+   return self;
+}
+
+- (void) restoreAutoresizingMask {
+   [view setAutoresizingMask: savedAutoresizingMask];
+}
+
+ at end
+
+
+
+ at interface IFVerticallyExpandingTextField (PRIVATE)
+
+- (void) autosizeHeight: (NSTextView *)fieldEditor;
+- (void) autosizeSuperviewOfView: (NSView *)originView withGrowth: (float)growth;
+
+- (void) alterAutoresizeMasksForViews: (NSArray *)sibViews 
+                      surroundingView: (NSView *)originView;
+- (void) restoreAutoresizeMasks;
+
+ at end
+
+
+ at implementation IFVerticallyExpandingTextField
+
+- (void) awakeFromNib {
+   superviewsExpandOnGrowth = YES;
+   isCollapsed = NO;
+   viewMaskPairs = [[NSMutableArray alloc] init];
+   
+   if ([self autoresizingMask] & NSViewHeightSizable) {
+      [self setAutoresizingMask: [self autoresizingMask] & ~NSViewHeightSizable];
+      
+      NSLog(@"Warning: IFVerticallyExpandingTextField: Vertical autosizing option "
+            "in Interface Builder interferes with this class's functionality and has "
+            "been temporarily disabled.  Turn off this option for all "
+            "IFVerticallyExpandingTextFields in Interface Builder to prevent this warning.");
+   }
+}
+
+- (void) setSuperviewsExpandOnGrowth: (BOOL)shouldExpand {
+   superviewsExpandOnGrowth = shouldExpand;
+}
+
+- (BOOL) superviewsExpandOnGrowth {
+   return superviewsExpandOnGrowth;
+}
+
+- (void) forceAutosize {
+   
+   // Entry point for vertical expansion.  Call this method if you need to manually
+   // force an autosize.  Most of the time this is done for you in response to the 
+   // textDidChange and viewDidEndLiveResize callbacks.
+   //
+   // Note that if we're forced to steal the field editor and first responder status,
+   // quirky behavior can occur if we just throw first responder back to whoever 
+   // had it last (especially with several expanding text fields), so we resign 
+   // first responder.
+   
+   BOOL stolenEditor = NO;
+   NSWindow *myWindow = [self window];
+   NSTextView *fieldEditor = [myWindow fieldEditor: YES forObject: self];
+   
+   if ([fieldEditor delegate] != self) {
+      stolenEditor = YES;
+      
+      [myWindow endEditingFor: nil];
+      [myWindow makeFirstResponder: self];
+      
+      // Set cursor to end, breaking the selection
+      [fieldEditor setSelectedRange: NSMakeRange([[self stringValue] length], 0)];
+   }
+   
+   [self autosizeHeight: fieldEditor];
+   
+   if (stolenEditor) {   
+      // Odd things can occur when messing with the first responder when using 
+      // several IFVerticallyExpandingTextFields.  Best not to mess with it, for now.
+      
+      [myWindow makeFirstResponder: nil];
+   }
+}
+
+
+/* Private methods */
+
+- (void) autosizeHeight: (NSTextView *)fieldEditor {
+   NSRect newFrame = [self frame];
+   float oldHeight = newFrame.size.height;
+   float newHeight;
+   float fieldGrowth;
+   
+   if (isCollapsed)
+      newHeight = 0;
+   else
+      newHeight = [[fieldEditor layoutManager] usedRectForTextContainer:
+         [fieldEditor textContainer]].size.height + IFVerticalPadding;
+   
+   fieldGrowth = newHeight - oldHeight;   
+   
+   if (fieldGrowth != 0) {
+      
+      // We're expanding or contracting. First adjust our frame, 
+      // then see about superviews.
+      
+      newFrame.size = NSMakeSize(newFrame.size.width, newHeight);
+      
+      if ([self autoresizingMask] & NSViewMinYMargin)
+         newFrame.origin.y -= fieldGrowth;
+      
+      [self setFrame: newFrame];
+      
+      if (superviewsExpandOnGrowth) {
+         [self autosizeSuperviewOfView: self withGrowth: fieldGrowth];
+      }
+
+      // If superviews are set not to expand on growth, it's best to call display
+      // on the window in reponse to this notification to prevent artifacts.
+      [[NSNotificationCenter defaultCenter] postNotificationName: @"IFTextFieldDidExpandNotification"
+                                                          object: self
+                                                        userInfo: 
+         [NSDictionary dictionaryWithObject: [NSNumber numberWithFloat: fieldGrowth]
+                                     forKey: @"IFTextFieldNotificationFieldGrowthItem"]];
+   }
+}
+
+
+
+- (void) autosizeSuperviewOfView: (NSView *)originView withGrowth: (float)growth {
+   
+   // Recursively autosize superviews until we get to a window or scroll view
+   
+   NSView *currentView = [originView superview];  // current view we are working in
+   
+   [self alterAutoresizeMasksForViews: [currentView subviews] surroundingView: originView];
+   
+   if (currentView == [[originView window] contentView]) {
+      // First base case, stop recursion when we've reached window's content view
+      
+      NSWindow *myWindow = [originView window];
+      NSRect windowFrame = [myWindow frame];
+      
+      windowFrame.size.height += growth;
+      windowFrame.origin.y -= growth;
+      
+      // Using animate: YES causes some brief drawing artifacts and makes multiple
+      // troublesome viewDidEndLiveResize calls.  Stick with NO for now.
+      [myWindow setFrame: windowFrame display: [myWindow isVisible] animate: NO];
+      
+      [self restoreAutoresizeMasks];
+   }
+   else if ([currentView isKindOfClass: [NSScrollView class]]) {
+      // Second base case, stop at scrollviews.
+      // Trying to get scrollviews' content to expand.
+      // Scrollview blocks do appear, but with no arrows or scrolling controls
+      // Some help here would be appreciated
+      
+      NSScrollView *scrollView = (NSScrollView *) currentView;
+      NSRect contentFrame = [[scrollView contentView] frame];
+      
+      contentFrame.size.height += growth;
+      contentFrame.origin.y -= growth;
+      
+      [[scrollView contentView] setFrame: contentFrame];
+      [scrollView tile];
+      
+      [self restoreAutoresizeMasks];
+      
+   }
+   else {
+      // Recursive case, modify our current frame then step up to its superview
+      
+      NSRect currentFrame = [currentView frame];
+      currentFrame.size.height += growth;
+      currentFrame.origin.y -= growth;
+      
+      [currentView setFrame: currentFrame];
+      
+      [self autosizeSuperviewOfView: currentView withGrowth: growth];
+   }
+   
+}
+
+
+- (void) alterAutoresizeMasksForViews: (NSArray *)siblingViews 
+                         surroundingView: (NSView *)originView {
+   
+   // We need to alter the autoresizing masks of surrounding views so they don't 
+   // mess up the originView's vertical expansion or contraction.
+   //
+   // This method uses BSD-licensed code from the Disclosable View application 
+   // copyright (c) 2002, Kurt Revis of Snoize (www.snoize.com) 
+   
+   NSEnumerator *enumerator = [siblingViews objectEnumerator];
+   NSView *sibView;
+   unsigned int mask;
+   
+   while (sibView = [enumerator nextObject]) {
+      if (sibView != originView) {
+         
+         // save autoresizingMask for restoration later
+         [viewMaskPairs addObject: 
+            [[[IFViewMaskPair alloc] initWithView: sibView] autorelease]];
+         
+         mask = [sibView autoresizingMask];
+         
+         if (NSMaxY([sibView frame]) <= NSMaxY([originView frame])) {
+            // This subview is below us. Make it stick to the bottom of the window.
+            // It should not change height.
+            mask &= ~NSViewHeightSizable;
+            mask |= NSViewMaxYMargin;
+            mask &= ~NSViewMinYMargin;
+         } 
+         else {
+            // This subview is above us. Make it stick to the top of the window.
+            // It should not change height.
+            mask &= ~NSViewHeightSizable;
+            mask &= ~NSViewMaxYMargin;
+            mask |= NSViewMinYMargin;
+         }
+         
+         [sibView setAutoresizingMask: mask];
+      }
+   }
+}
+
+- (void) restoreAutoresizeMasks {
+   IFViewMaskPair *pair;
+   
+   while ([viewMaskPairs count]) {
+      pair = [viewMaskPairs lastObject];
+      [pair restoreAutoresizingMask];
+      [viewMaskPairs removeLastObject];
+   }
+}
+
+
+/* Overridden methods */
+
+- (void) textDidChange: (NSNotification *)note {
+   [self forceAutosize];
+}
+
+- (void) viewDidEndLiveResize {
+   [self forceAutosize];
+}
+
+- (void) setStringValue: (NSString *)aString {
+   NSTextView *myEditor = [self currentEditor];
+   
+   if (myEditor)
+      [myEditor setString: aString];
+   else
+      [super setStringValue: aString];
+   
+   // If we don't delay, autosizing won't display correctly
+   [NSThread sleepUntilDate: [NSDate dateWithTimeIntervalSinceNow: .05]];
+   [self forceAutosize];
+}
+
+- (void) setCollapsed: (BOOL)flag {
+   if (isCollapsed != flag) {
+      isCollapsed = flag;
+      [self setHidden: flag];
+      [self forceAutosize];
+   }
+}
+
+- (BOOL) isCollapsed {
+   return isCollapsed;
+}
+
+- (void) dealloc {
+   [viewMaskPairs release];
+   [super dealloc];
+}
+
+ at end
\ No newline at end of file

Modified: users/rhwood/Pallet/Pallet.xcodeproj/project.pbxproj
===================================================================
--- users/rhwood/Pallet/Pallet.xcodeproj/project.pbxproj	2007-05-13 17:18:32 UTC (rev 25086)
+++ users/rhwood/Pallet/Pallet.xcodeproj/project.pbxproj	2007-05-13 17:51:33 UTC (rev 25087)
@@ -10,6 +10,7 @@
 		480062BF0B597D9A005F27E4 /* PAStatusTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 480062BE0B597D9A005F27E4 /* PAStatusTransformer.m */; };
 		481B84120BA254A4000D1385 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4854CE0F0B420D8C00950EE4 /* Security.framework */; };
 		4828C6310AD7B84D002AF0DD /* TaskWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4828C6300AD7B84D002AF0DD /* TaskWrapper.m */; };
+		482C61D50BD2286700F7AC59 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 482C61D40BD2286700F7AC59 /* main.m */; };
 		483A5E460B57A50900712840 /* MPPortsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 483A5E450B57A50900712840 /* MPPortsController.m */; };
 		4844B92B0AD91F5800A4A4DB /* UserDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = 4844B92A0AD91F5800A4A4DB /* UserDefaults.plist */; };
 		4875A7410B468DEB00FDDC21 /* ApplicationIconBusy.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4875A7400B468DEB00FDDC21 /* ApplicationIconBusy.icns */; };
@@ -22,6 +23,7 @@
 		487EB9280B4533CB001B0F72 /* getpath.c in Sources */ = {isa = PBXBuildFile; fileRef = 48BBCE870B41B37F0063A19F /* getpath.c */; };
 		487EB9490B453786001B0F72 /* AuthorizedExecutable.m in Sources */ = {isa = PBXBuildFile; fileRef = 487EB9480B453786001B0F72 /* AuthorizedExecutable.m */; };
 		48ACD7930B4284A400D34B4C /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4854CE0F0B420D8C00950EE4 /* Security.framework */; };
+		48B1714D0BEDFC6B0039AFC4 /* PalletHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 48B1714C0BEDFC6B0039AFC4 /* PalletHelper.m */; };
 		48B63D820BCA40760028248A /* CFLib.c in Sources */ = {isa = PBXBuildFile; fileRef = 48B63D810BCA40760028248A /* CFLib.c */; };
 		48D470190AD6867C00352CE9 /* PortAuthority.m in Sources */ = {isa = PBXBuildFile; fileRef = 48D470180AD6867C00352CE9 /* PortAuthority.m */; };
 		48D470790AD6CFFB00352CE9 /* MPToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 48D470780AD6CFFB00352CE9 /* MPToolbar.m */; };
@@ -32,7 +34,9 @@
 		48D4718F0AD73ECD00352CE9 /* Upgrade.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 48D4718C0AD73ECD00352CE9 /* Upgrade.tiff */; };
 		48D471FB0AD7A99500352CE9 /* Install.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 48D471FA0AD7A99500352CE9 /* Install.tiff */; };
 		48D4721F0AD7B10600352CE9 /* ApplicationIcon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 48D4721E0AD7B10600352CE9 /* ApplicationIcon.icns */; };
+		48D5EF700BDE169B003EE169 /* Tcl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 48EE4F7C0B515B7D0066DCBA /* Tcl.framework */; };
 		48EE4F7D0B515B7D0066DCBA /* Tcl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 48EE4F7C0B515B7D0066DCBA /* Tcl.framework */; };
+		48F00D280BD773D500F2E7D8 /* IFVerticallyExpandingTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 48F00D270BD773D500F2E7D8 /* IFVerticallyExpandingTextField.m */; };
 		8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
 		8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
 		8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
@@ -64,6 +68,8 @@
 		480062BE0B597D9A005F27E4 /* PAStatusTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PAStatusTransformer.m; sourceTree = "<group>"; };
 		4828C62F0AD7B84D002AF0DD /* TaskWrapper.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TaskWrapper.h; sourceTree = "<group>"; };
 		4828C6300AD7B84D002AF0DD /* TaskWrapper.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = TaskWrapper.m; sourceTree = "<group>"; };
+		482C61C90BD225F400F7AC59 /* PalletHelper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = PalletHelper; sourceTree = BUILT_PRODUCTS_DIR; };
+		482C61D40BD2286700F7AC59 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Helper/main.m; sourceTree = "<group>"; };
 		483A5E440B57A50900712840 /* MPPortsController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MPPortsController.h; sourceTree = "<group>"; };
 		483A5E450B57A50900712840 /* MPPortsController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MPPortsController.m; sourceTree = "<group>"; };
 		4844B92A0AD91F5800A4A4DB /* UserDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = UserDefaults.plist; sourceTree = "<group>"; };
@@ -79,6 +85,8 @@
 		48ACD7D10B42855600D34B4C /* Launcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Launcher.h; sourceTree = "<group>"; };
 		48ACD7D20B42855600D34B4C /* Launcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Launcher.m; sourceTree = "<group>"; };
 		48AFB8B70BA4E20300896AF1 /* Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Debug.h; sourceTree = "<group>"; };
+		48B1714B0BEDFC6B0039AFC4 /* PalletHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PalletHelper.h; path = Helper/PalletHelper.h; sourceTree = "<group>"; };
+		48B1714C0BEDFC6B0039AFC4 /* PalletHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PalletHelper.m; path = Helper/PalletHelper.m; sourceTree = "<group>"; };
 		48B63D810BCA40760028248A /* CFLib.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = CFLib.c; sourceTree = "<group>"; };
 		48BBCE7D0B41B2450063A19F /* Launcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Launcher.c; sourceTree = "<group>"; };
 		48BBCE870B41B37F0063A19F /* getpath.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = getpath.c; sourceTree = "<group>"; };
@@ -102,11 +110,21 @@
 		48D471FA0AD7A99500352CE9 /* Install.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Install.tiff; sourceTree = "<group>"; };
 		48D4721E0AD7B10600352CE9 /* ApplicationIcon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ApplicationIcon.icns; sourceTree = "<group>"; };
 		48EE4F7C0B515B7D0066DCBA /* Tcl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Tcl.framework; path = /System/Library/Frameworks/Tcl.framework; sourceTree = "<absolute>"; };
+		48F00D180BD7738000F2E7D8 /* IFVerticallyExpandingTextField.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = IFVerticallyExpandingTextField.h; sourceTree = "<group>"; };
+		48F00D270BD773D500F2E7D8 /* IFVerticallyExpandingTextField.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = IFVerticallyExpandingTextField.m; sourceTree = "<group>"; };
 		8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
 		8D1107320486CEB800E47090 /* Pallet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Pallet.app; sourceTree = BUILT_PRODUCTS_DIR; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
+		482C61C70BD225F400F7AC59 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				48D5EF700BDE169B003EE169 /* Tcl.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		48ACD7890B42846B00D34B4C /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -175,6 +193,7 @@
 			children = (
 				8D1107320486CEB800E47090 /* Pallet.app */,
 				48ACD78B0B42846B00D34B4C /* Launcher */,
+				482C61C90BD225F400F7AC59 /* PalletHelper */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -195,6 +214,11 @@
 		29B97315FDCFA39411CA2CEA /* Other Sources */ = {
 			isa = PBXGroup;
 			children = (
+				48B1714B0BEDFC6B0039AFC4 /* PalletHelper.h */,
+				48B1714C0BEDFC6B0039AFC4 /* PalletHelper.m */,
+				482C61D40BD2286700F7AC59 /* main.m */,
+				48F00D270BD773D500F2E7D8 /* IFVerticallyExpandingTextField.m */,
+				48F00D180BD7738000F2E7D8 /* IFVerticallyExpandingTextField.h */,
 				48B63D810BCA40760028248A /* CFLib.c */,
 				48ACD7D10B42855600D34B4C /* Launcher.h */,
 				48AFB8B70BA4E20300896AF1 /* Debug.h */,
@@ -257,6 +281,22 @@
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
+		482C61C80BD225F400F7AC59 /* PalletHelper */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 482C61CB0BD2260700F7AC59 /* Build configuration list for PBXNativeTarget "PalletHelper" */;
+			buildPhases = (
+				482C61C60BD225F400F7AC59 /* Sources */,
+				482C61C70BD225F400F7AC59 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = PalletHelper;
+			productName = PalletHelper;
+			productReference = 482C61C90BD225F400F7AC59 /* PalletHelper */;
+			productType = "com.apple.product-type.tool";
+		};
 		48ACD78A0B42846B00D34B4C /* Launcher */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 48ACD78D0B42848A00D34B4C /* Build configuration list for PBXNativeTarget "Launcher" */;
@@ -304,6 +344,7 @@
 			targets = (
 				8D1107260486CEB800E47090 /* Pallet */,
 				48ACD78A0B42846B00D34B4C /* Launcher */,
+				482C61C80BD225F400F7AC59 /* PalletHelper */,
 			);
 		};
 /* End PBXProject section */
@@ -334,6 +375,15 @@
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
+		482C61C60BD225F400F7AC59 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				482C61D50BD2286700F7AC59 /* main.m in Sources */,
+				48B1714D0BEDFC6B0039AFC4 /* PalletHelper.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		48ACD7880B42846B00D34B4C /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -355,6 +405,7 @@
 				483A5E460B57A50900712840 /* MPPortsController.m in Sources */,
 				480062BF0B597D9A005F27E4 /* PAStatusTransformer.m in Sources */,
 				48B63D820BCA40760028248A /* CFLib.c in Sources */,
+				48F00D280BD773D500F2E7D8 /* IFVerticallyExpandingTextField.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -388,6 +439,52 @@
 /* End PBXVariantGroup section */
 
 /* Begin XCBuildConfiguration section */
+		482C61CC0BD2260700F7AC59 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+				GCC_MODEL_TUNING = G5;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
+				INSTALL_PATH = "$(HOME)/bin";
+				OTHER_LDFLAGS = (
+					"-framework",
+					Foundation,
+					"-framework",
+					AppKit,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = PalletHelper;
+				ZERO_LINK = NO;
+			};
+			name = Debug;
+		};
+		482C61CD0BD2260700F7AC59 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+				GCC_MODEL_TUNING = G5;
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
+				INSTALL_PATH = "$(HOME)/bin";
+				OTHER_LDFLAGS = (
+					"-framework",
+					Foundation,
+					"-framework",
+					AppKit,
+				);
+				PREBINDING = NO;
+				PRODUCT_NAME = PalletHelper;
+				ZERO_LINK = NO;
+			};
+			name = Release;
+		};
 		48ACD78E0B42848A00D34B4C /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -503,6 +600,15 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
+		482C61CB0BD2260700F7AC59 /* Build configuration list for PBXNativeTarget "PalletHelper" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				482C61CC0BD2260700F7AC59 /* Debug */,
+				482C61CD0BD2260700F7AC59 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		48ACD78D0B42848A00D34B4C /* Build configuration list for PBXNativeTarget "Launcher" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20070513/4cb30477/attachment.html


More information about the macports-changes mailing list