Changeset 2948

Show
Ignore:
Timestamp:
06/17/05 00:42:27 (4 years ago)
Author:
morris
Message:

Upgrade to Xcode 2.1

Abstract image operations into FHImage, that uses CGImage on Tiger

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • Footagehead/trunk/English.lproj/MainMenu.nib/classes.nib

    r2909 r2948  
    1717                reload = id;  
    1818                revealInFinder = id;  
     19                setAsDesktopBackground = id;  
    1920                slideshow = id;  
    2021                slideshowButtons = id;  
  • Footagehead/trunk/English.lproj/MainMenu.nib/info.nib

    r2911 r2948  
    44<dict> 
    55        <key>IBDocumentLocation</key> 
    6         <string>909 492 395 374 0 0 1680 1028 </string> 
     6        <string>423 67 395 374 0 0 1152 746 </string> 
    77        <key>IBEditorPositions</key> 
    88        <dict> 
    99                <key>29</key> 
    10                 <string>316 694 317 44 0 0 1680 1028 </string> 
     10                <string>317 694 317 44 0 0 1680 1028 </string> 
     11                <key>592</key> 
     12                <string>162 516 223 118 0 0 1680 1028 </string> 
    1113        </dict> 
    1214        <key>IBFramework Version</key> 
    13         <string>437.0</string> 
     15        <string>439.0</string> 
    1416        <key>IBOldestOS</key> 
    1517        <integer>3</integer> 
    1618        <key>IBOpenObjects</key> 
    1719        <array> 
     20                <integer>29</integer> 
    1821                <integer>21</integer> 
    1922                <integer>288</integer> 
     23                <integer>592</integer> 
    2024        </array> 
    2125        <key>IBSystem Version</key> 
  • Footagehead/trunk/FHCache.h

    r2935 r2948  
    3030        NSImage                                         *_directoryIcon; 
    3131        NSMutableDictionary                     *_fileIcons; 
    32         NSMutableArray                         *_temporaryPaths; 
     32        NSMutableDictionary                    *_largeFileIcons; 
    3333         
    3434        NSRecursiveLock                         *_lock; 
     
    4646- (NSImage *)fileIconForURL:(ZAURL *)url; 
    4747 
    48 - (void)addTemporaryPath:(NSString *)path; 
    49 - (void)purgeTemporaryPaths; 
     48- (void)setLargeFileIcon:(NSImage *)icon forExtension:(NSString *)extension; 
     49- (NSImage *)largeFileIconForExtension:(NSString *)extension; 
     50 
     51- (void)setLargeFileIcon:(NSImage *)icon forURL:(ZAURL *)url; 
     52- (NSImage *)largeFileIconForURL:(ZAURL *)url; 
    5053 
    5154@end 
  • Footagehead/trunk/FHCache.m

    r2940 r2948  
    4949         
    5050        _fileIcons = [[NSMutableDictionary alloc] initWithCapacity:100]; 
    51         _temporaryPaths = [[NSMutableArray alloc] initWithCapacity:10]; 
     51        _largeFileIcons = [[NSMutableDictionary alloc] initWithCapacity:100]; 
    5252         
    5353        _lock = [[NSRecursiveLock alloc] init]; 
     
    6161        [_directoryIcon release]; 
    6262        [_fileIcons release]; 
    63         [_temporaryPaths release]; 
     63        [_largeFileIcons release]; 
    6464         
    6565        [_lock release]; 
     
    134134#pragma mark - 
    135135 
    136 - (void)addTemporaryPath:(NSString *)path
     136- (void)setLargeFileIcon:(NSImage *)icon forExtension:(NSString *)extension
    137137        [_lock lock]; 
    138         [_temporaryPaths addObject:path]; 
     138         
     139        if([_largeFileIcons count] > 100) 
     140                [_largeFileIcons removeObjectForKey:[[_largeFileIcons allKeys] objectAtIndex:0]]; 
     141         
     142        [_largeFileIcons setObject:icon forKey:extension]; 
     143 
    139144        [_lock unlock]; 
    140145} 
     
    142147 
    143148 
    144 - (void)purgeTemporaryPaths { 
    145         NSFileManager   *fileManager; 
    146         int                             i, count; 
     149- (NSImage *)largeFileIconForExtension:(NSString *)extension { 
     150        NSImage         *image; 
     151         
     152        [_lock lock]; 
     153        image = [_largeFileIcons objectForKey:extension]; 
     154        [_lock unlock]; 
     155         
     156        return image; 
     157
    147158 
     159 
     160 
     161#pragma mark - 
     162 
     163- (void)setLargeFileIcon:(NSImage *)icon forURL:(ZAURL *)url { 
    148164        [_lock lock]; 
    149165         
    150         fileManager = [NSFileManager defaultManager]; 
    151         count = [_temporaryPaths count]; 
     166        if([_largeFileIcons count] > 100) 
     167               [_largeFileIcons removeObjectForKey:[[_largeFileIcons allKeys] objectAtIndex:0]]; 
    152168         
    153         for(i = 0; i < count; i++) 
    154                 [fileManager removeFileAtPath:[_temporaryPaths objectAtIndex:i] handler:NULL]; 
     169        [_largeFileIcons setObject:icon forKey:[url string]]; 
    155170         
    156171        [_lock unlock]; 
    157172} 
    158173 
     174 
     175 
     176- (NSImage *)largeFileIconForURL:(ZAURL *)url { 
     177        NSImage         *image; 
     178         
     179        [_lock lock]; 
     180        image = [_largeFileIcons objectForKey:[url string]]; 
     181        [_lock unlock]; 
     182         
     183        return image; 
     184} 
     185 
    159186@end 
  • Footagehead/trunk/FHController.h

    r2909 r2948  
    9595- (IBAction)slideshowButtons:(id)sender; 
    9696- (IBAction)revealInFinder:(id)sender; 
     97- (IBAction)setAsDesktopBackground:(id)sender; 
    9798- (IBAction)delete:(id)sender; 
    9899 
  • Footagehead/trunk/FHController.m

    r2945 r2948  
    3434#import "FHFullscreenWindow.h" 
    3535#import "FHHandler.h" 
     36#import "FHImage.h" 
    3637#import "FHImageView.h" 
    3738#import "FHSettings.h" 
     
    208209        if(url) 
    209210                [FHSettings setObject:[url string] forKey:FHOpenURL]; 
    210          
    211         [[FHCache cache] purgeTemporaryPaths]; 
    212211} 
    213212 
     
    276275 
    277276 
    278 - (float)splitView:(NSSplitView *)splitView constrainMinCoordinate:(float)proposedMax ofSubviewAt:(int)offset { 
     277- (float)splitView:(NSSplitView *)splitView constrainMinCoordinate:(float)proposedMin ofSubviewAt:(int)offset { 
    279278        return 49.0; 
     279} 
     280 
     281 
     282 
     283- (float)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(float)proposedMax ofSubviewAt:(int)offset { 
     284        return 145.0; 
    280285} 
    281286 
     
    339344        // --- user pressed the return/enter key 
    340345        if(selector == @selector(insertNewline:)) { 
    341                 if([[[NSApp currentEvent] characters] characterAtIndex:0] == NSEnterCharacter) { 
    342             [self submitSheet:sender]; 
    343              
    344             handled = YES; 
    345         } 
    346     } 
    347      
    348     return handled; 
     346                [self submitSheet:sender]; 
     347 
     348                handled = YES; 
     349        } 
     350 
     351        return handled; 
    349352} 
    350353 
     
    368371- (FHFile *)fileAtIndex:(unsigned int)index { 
    369372        return [[_handler files] objectAtIndex:index]; 
     373} 
     374 
     375 
     376 
     377#pragma mark - 
     378 
     379- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { 
     380        FHFile  *file; 
     381        SEL             selector; 
     382         
     383        selector = [menuItem action]; 
     384         
     385        if(selector == @selector(zoom:) || selector == @selector(delete:) || selector == @selector(revealInFinder:)) { 
     386                file = [self selectedFile]; 
     387                 
     388                return (file != NULL); 
     389        } 
     390        else if(selector == @selector(setAsDesktopBackground:)) { 
     391                file = [self selectedFile]; 
     392                 
     393                return (file != NULL && [file isDirectory]); 
     394        } 
     395         
     396        return YES; 
    370397} 
    371398 
     
    695722 
    696723 
     724- (IBAction)setAsDesktopBackground:(id)sender { 
     725        NSAppleScript                   *script; 
     726        NSAppleEventDescriptor  *descriptor; 
     727        NSDictionary                    *error; 
     728         
     729        script = [[NSAppleScript alloc] initWithSource:[NSSWF: 
     730                @"tell application Finder" 
     731                        @"set desktop picture to '/home/axela/Pictures/Desktops/Lain 1.jpg'" 
     732                @"end tell" 
     733        ]]; 
     734         
     735        descriptor = [script executeAndReturnError:&error]; 
     736         
     737        NSLog(@"descriptor = %@", descriptor); 
     738         
     739        if(!descriptor) 
     740                NSLog(@"error = %@", error); 
     741         
     742        [script release]; 
     743} 
     744 
     745 
     746 
    697747- (IBAction)delete:(id)sender { 
    698748        FHFile          *file; 
     
    747797        if(!handler) { 
    748798                [self stopSpinning]; 
    749                  
    750                 if(!_handler) 
    751                         [_imageView setImage:NULL]; 
    752799                 
    753800                return; 
     
    844891        NSAutoreleasePool   *pool; 
    845892        NSArray                         *files; 
    846         NSImage                               *image; 
     893        FHImage                               *image; 
    847894        FHFile                          *file; 
    848895        unsigned int            i, count, counter, images, row, lastRow, lastCounter; 
     
    891938                                        goto next; 
    892939                                 
    893                                 image = [[NSImage alloc] initWithContentsOfURL:[[file URL] URL]]; 
    894                                 [file setImage:[image smoothedImage]]; 
     940                                image = [[FHImage alloc] initImageWithURL:[file URL]]; 
     941                                [file setImage:image]; 
    895942                                [file setLoaded:YES]; 
    896943                                [image release]; 
     
    917964 
    918965- (void)loadThumbnailsThread:(id)arg { 
    919         NSAutoreleasePool   *pool; 
     966        NSAutoreleasePool      *pool; 
    920967        NSArray                         *files; 
    921         NSImage                               *image; 
     968        FHImage                               *image; 
    922969        FHFile                          *file; 
    923970        unsigned int            i, count, counter, images; 
     
    941988                                goto next; 
    942989                         
    943                         images++; 
    944                          
    945                         image = [[NSImage alloc] initWithJPEGFile:[file path] preferredSize:NSMakeSize(128.0, 128.0)]; 
     990                        image = [[FHImage alloc] initImageWithURL:[file URL] preferredSize:NSMakeSize(128.0, 128.0)]; 
    946991                         
    947992                        if(image) { 
     
    951996                                [self performSelectorOnMainThread:@selector(fileDidLoadThumbnail:) withObject:file waitUntilDone:YES]; 
    952997                        } 
     998                         
    953999next: 
    954                         if(images % 5 == 0) { 
     1000                        if(++images % 5 == 0) { 
    9551001                                [_loadThumbnailsLock lock]; 
    9561002                                if(counter != _thumbnailsCounter) 
     
    9681014 
    9691015- (void)fileDidLoadImage:(FHFile *)file { 
    970         NSImage               *image; 
     1016        FHImage               *image; 
    9711017        BOOL            success; 
    9721018         
     
    10121058 
    10131059 
    1014 - (void)handlerDidAddFile:(FHHandler *)handler { 
     1060- (void)handlerDidAddFiles:(FHHandler *)handler { 
    10151061        [_tableView reloadData]; 
    10161062        [self updateLeftStatus]; 
     
    12921338- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row { 
    12931339        FHFile          *file; 
    1294         NSImage               *icon; 
     1340        FHImage               *icon; 
    12951341         
    12961342        file = [self fileAtIndex:row]; 
    12971343        icon = [file thumbnail]; 
    12981344         
    1299         if(!icon) { 
     1345        if(!icon) 
    13001346                icon = [file icon]; 
    1301                 [icon setSize:NSMakeSize(128.0, 128.0)]; 
    1302         } 
    13031347         
    13041348        return [NSDictionary dictionaryWithObjectsAndKeys: 
  • Footagehead/trunk/FHFeedHandler.m

    r2944 r2948  
    220220                        break; 
    221221        } 
     222         
     223        return NULL; 
    222224} 
    223225 
     
    238240                        break; 
    239241        } 
     242         
     243        return NULL; 
    240244} 
    241245 
  • Footagehead/trunk/FHFile.h

    r2919 r2948  
    2727 */ 
    2828 
     29@class FHImage; 
     30 
    2931@interface FHFile : ZAObject { 
    3032        NSString                                *_name; 
     
    3234        NSString                                *_path; 
    3335        NSString                                *_extension; 
    34         NSImage                                       *_image; 
    35         NSImage                                       *_icon; 
    36         NSImage                                       *_thumbnail; 
     36        FHImage                                       *_image; 
     37        FHImage                                       *_icon; 
     38        FHImage                                       *_thumbnail; 
    3739        BOOL                                    _loaded; 
    3840        BOOL                                    _directory; 
     
    4446- (id)initWithURL:(ZAURL *)url name:(NSString *)name isDirectory:(BOOL)isDirectory index:(unsigned int)index; 
    4547 
    46 - (void)setImage:(NSImage *)image; 
    47 - (NSImage *)image; 
    48 - (void)setThumbnail:(NSImage *)thumbnail; 
    49 - (NSImage *)thumbnail; 
     48- (void)setImage:(FHImage *)image; 
     49- (FHImage *)image; 
     50- (void)setThumbnail:(FHImage *)thumbnail; 
     51- (FHImage *)thumbnail; 
    5052- (void)setLoaded:(BOOL)loaded; 
    5153- (BOOL)isLoaded; 
     
    5557- (NSString *)path; 
    5658- (NSString *)extension; 
    57 - (NSImage *)icon; 
     59- (FHImage *)icon; 
    5860- (BOOL)isDirectory; 
    5961- (unsigned int)index; 
  • Footagehead/trunk/FHFile.m

    r2935 r2948  
    2929#import "FHCache.h" 
    3030#import "FHFile.h" 
     31#import "FHImage.h" 
    3132 
    3233@implementation FHFile 
     
    3940 
    4041- (id)initWithURL:(ZAURL *)url name:(NSString *)name isDirectory:(BOOL)isDirectory index:(unsigned int)index { 
     42        NSImage         *icon; 
     43         
    4144        self = [super init]; 
    4245         
     
    5053        if(!_directory) { 
    5154                // --- get icon for extension 
    52                 _icon = [[FHCache cache] fileIconForExtension:_extension]; 
     55                icon = [[FHCache cache] largeFileIconForExtension:_extension]; 
    5356                 
    54                 if(!_icon) { 
    55                         _icon = [[NSWorkspace sharedWorkspace] iconForFileType:_extension]; 
     57                if(!icon) { 
     58                        icon = [[NSWorkspace sharedWorkspace] iconForFileType:_extension]; 
     59                        [icon setSize:NSMakeSize(128.0, 128.0)]; 
    5660                         
    57                         [[FHCache cache] setFileIcon:_icon forExtension:_extension]; 
     61                        [[FHCache cache] setLargeFileIcon:icon forExtension:_extension]; 
    5862                } 
     63                 
     64                _icon = [[FHImage alloc] initImageWithImage:icon]; 
    5965        } else { 
    6066                if(![_url isFileURL]) { 
    6167                        // --- get icon for generic remote directory 
    62                         _icon = [[FHCache cache] directoryIcon]; 
     68                        icon = [[FHCache cache] directoryIcon]; 
    6369                } else { 
    6470                        // --- get icon for local directory path 
    65                         _icon = [[FHCache cache] fileIconForURL:url]; 
     71                        icon = [[FHCache cache] largeFileIconForURL:url]; 
    6672                         
    67                         if(!_icon) { 
    68                                 _icon = [[NSWorkspace sharedWorkspace] iconForFile:_path]; 
     73                        if(!icon) { 
     74                                icon = [[NSWorkspace sharedWorkspace] iconForFile:_path]; 
     75                                [icon setSize:NSMakeSize(128.0, 128.0)]; 
    6976                                 
    70                                 [[FHCache cache] setFileIcon:_icon forURL:_url]; 
     77                                [[FHCache cache] setLargeFileIcon:icon forURL:_url]; 
    7178                        } 
    7279                } 
     80                 
     81                _icon = [[FHImage alloc] initImageWithImage:icon]; 
    7382        } 
    74          
    75         [_icon retain]; 
    7683 
    7784        return self; 
     
    95102#pragma mark - 
    96103 
    97 - (void)setImage:(NSImage *)image { 
     104- (void)setImage:(FHImage *)image { 
    98105        [image retain]; 
    99106        [_image release]; 
     
    104111 
    105112 
    106 - (NSImage *)image { 
     113- (FHImage *)image { 
    107114        return _image; 
    108115} 
     
    110117 
    111118 
    112 - (void)setThumbnail:(NSImage *)thumbnail { 
     119- (void)setThumbnail:(FHImage *)thumbnail { 
    113120        [thumbnail retain]; 
    114121        [_thumbnail release]; 
     
    119126 
    120127 
    121 - (NSImage *)thumbnail { 
     128- (FHImage *)thumbnail { 
    122129        return _thumbnail; 
    123130} 
     
    163170 
    164171 
    165 - (NSImage *)icon { 
     172- (FHImage *)icon { 
    166173        return _icon; 
    167174} 
  • Footagehead/trunk/FHFileCell.h

    r920 r2948  
    1 /* $Id: FHFileCell.h,v 1.3 2005/01/08 22:55:46 morris Exp $ */ 
     1/* $Id$ */ 
    22 
    33/* 
     
    2929@interface FHFileCell : NSCell { 
    3030        NSCell                                          *_nameCell; 
    31         NSImageCell                                     *_iconCell; 
    3231         
    3332        NSDictionary                            *_attributes; 
  • Footagehead/trunk/FHFileCell.m

    r2875 r2948  
    2828 
    2929#import "FHFileCell.h" 
     30#import "FHImage.h" 
    3031 
    3132@implementation FHFileCell 
     
    3738         
    3839        _nameCell = [[NSCell alloc] init]; 
    39         _iconCell = [[NSImageCell alloc] init]; 
    40         [_iconCell setImageAlignment:NSImageAlignCenter]; 
    4140 
    4241        style = [[[NSMutableParagraphStyle alloc] init] autorelease]; 
     
    5554- (void)dealloc { 
    5655        [_nameCell release]; 
    57         [_iconCell release]; 
    5856         
    5957        [_attributes release]; 
     
    7169        cell = [super copyWithZone:zone]; 
    7270        cell->_nameCell = [_nameCell retain]; 
    73         cell->_iconCell = [_iconCell retain]; 
    7471        cell->_attributes = [_attributes retain]; 
    7572         
     
    8481        NSAttributedString      *string; 
    8582        NSString                        *name; 
    86         NSImage                         *icon; 
    87         NSRect                          rect; 
     83        FHImage                         *icon; 
     84        NSRect                          rect, imageRect; 
     85        NSSize                          size; 
     86        float                           dx, dy, d; 
    8887         
    8988        name = [(NSDictionary *) [self objectValue] objectForKey:FHFileCellNameKey]; 
     
    9796        [string release]; 
    9897         
    99         rect = NSMakeRect(frame.origin.x, frame.origin.y + 2.0, frame.size.width, frame.size.height - 28.0); 
    100         [_iconCell setImage:icon]; 
    101         [_iconCell setHighlighted:[self isHighlighted]]; 
    102         [_iconCell drawWithFrame:rect inView:view]; 
     98        rect                            = NSMakeRect(frame.origin.x, frame.origin.y + 2.0, frame.size.width, frame.size.height - 28.0); 
     99        size                            = [icon size]; 
     100        imageRect.origin        = rect.origin; 
     101        imageRect.size          = size; 
     102        dx                                      = rect.size.width  / imageRect.size.width; 
     103        dy                                      = rect.size.height / imageRect.size.height; 
     104        d                                       = dx < dy ? dx : dy; 
     105                                 
     106        if(d < 1.0) { 
     107                imageRect.size.width    = floorf(imageRect.size.width  * d); 
     108                imageRect.size.height   = floorf(imageRect.size.height * d); 
     109        } 
     110 
     111        imageRect.origin.x += floorf((rect.size.width  - imageRect.size.width) / 2.0); 
     112        imageRect.origin.y += floorf((rect.size.height - imageRect.size.height) / 2.0); 
     113         
     114        [icon setFlipped:YES]; 
     115        [icon drawInRect:imageRect]; 
    103116} 
    104117 
  • Footagehead/trunk/FHFileHandler.m

    r2946 r2948  
    3737 
    3838+ (BOOL)handlesURL:(ZAURL *)url isPrimary:(BOOL)primary { 
    39         if([url isFileURL]) { 
     39        if(primary && [url isFileURL]) { 
    4040                if([[NSFileManager defaultManager] directoryExistsAtPath:[url path]]) 
    4141                        return YES; 
  • Footagehead/trunk/FHHandler.h

    r2935 r2948  
    7070@interface NSObject(FHHandlerDelegate) 
    7171 
    72 - (void)handlerDidAddFile:(FHHandler *)handler; 
     72- (void)handlerDidAddFiles:(FHHandler *)handler; 
    7373- (void)handlerDidFinishLoading:(FHHandler *)handler; 
    7474 
  • Footagehead/trunk/FHImageHandler.h

    r2933 r2948  
    2929#import "FHURLHandler.h" 
    3030 
     31@class FHImage; 
     32 
    3133@interface FHImageHandler : FHURLHandler 
    3234 
    33 - (id)initHandlerWithURL:(ZAURL *)url image:(NSImage *)image; 
     35- (id)initHandlerWithURL:(ZAURL *)url image:(FHImage *)image; 
    3436 
    3537@end 
  • Footagehead/trunk/FHImageHandler.m

    r2933 r2948  
    3232@implementation FHImageHandler 
    3333 
    34 - (id)initHandlerWithURL:(ZAURL *)url image:(NSImage *)image { 
     34- (id)initHandlerWithURL:(ZAURL *)url image:(FHImage *)image { 
    3535        FHFile          *file; 
    3636         
  • Footagehead/trunk/FHImageView.h

    r2916 r2948  
    2727 */ 
    2828 
     29@class FHImage; 
     30 
    2931@interface FHImageView : NSView { 
    30         NSImage                                               *_image; 
     32        FHImage                                               *_image; 
    3133        NSImageScaling                          _imageScaling; 
    3234         
     
    4042 
    4143 
    42 - (void)setImage:(NSImage *)image; 
    43 - (NSImage *)image; 
     44- (void)setImage:(FHImage *)image; 
     45- (FHImage *)image; 
    4446- (void)setImageScaling:(NSImageScaling)newScaling; 
    4547- (NSImageScaling)imageScaling; 
  • Footagehead/trunk/FHImageView.m

    r2931 r2948  
    2828 
    2929#import "FHController.h" 
     30#import "FHImage.h" 
    3031#import "FHImageView.h" 
    3132 
     
    7071        [NSColor blackColor],           NSForegroundColorAttributeName, 
    7172        NULL]; 
    72          
    7373} 
    7474 
     
    124124#pragma mark - 
    125125 
    126 - (void)setImage:(NSImage *)image { 
     126- (void)setImage:(FHImage *)image { 
    127127        BOOL    display; 
    128128 
     
    142142 
    143143 
    144 - (NSImage *)image { 
     144- (FHImage *)image { 
    145145        return _image; 
    146146} 
     
    222222- (void)_adjustScaling { 
    223223        NSScrollView    *scrollView; 
    224         NSSize                  size, imageSize; 
     224        NSSize                  contentSize, imageSize, frameSize; 
    225225         
    226226        scrollView = [self enclosingScrollView]; 
    227227         
    228         if(scrollView) { 
    229                 size = [scrollView contentSize]; 
    230                  
    231                 if(_imageScaling == NSScaleNone) { 
    232                         imageSize = _image ? [_image size] : NSZeroSize; 
    233                         size = NSMakeSize(MAX(size.width, imageSize.width), MAX(size.height, imageSize.height)); 
    234  
    235                         // --- for some reason (bug?), when switching back from NSScaleProportionally, the first 
    236                         //     setFrameSize: doesn't fully resize the view, it leaves it a few pixels short 
    237                         [self setFrameSize:size]; 
    238                         [self setFrameSize:size]; 
    239                         [self scrollPoint:NSMakePoint(0.0, size.height)]; 
    240                 } else { 
    241                         [self setFrameSize:size]; 
    242                 } 
     228        contentSize = [scrollView contentSize]; 
     229 
     230        if(_image && _imageScaling == NSScaleNone) { 
     231                imageSize = _image ? [_image size] : NSZeroSize; 
     232                frameSize = NSMakeSize(MAX(contentSize.width, imageSize.width), MAX(contentSize.height, imageSize.height)); 
     233 
     234                [scrollView setHasHorizontalScroller:(imageSize.width > contentSize.width)]; 
     235                [scrollView setHasVerticalScroller:(imageSize.height > contentSize.height)]; 
     236                 
     237                [self setFrameSize:frameSize]; 
     238                [self scrollPoint:NSMakePoint(0.0, frameSize.height)]; 
     239        } else { 
     240                [scrollView setHasHorizontalScroller:NO]; 
     241                [scrollView setHasVerticalScroller:NO]; 
     242 
     243                [self setFrameSize:contentSize]; 
    243244        } 
    244245} 
     
    297298 
    298299- (void)drawRect:(NSRect)frame { 
    299         NSImage         *image; 
    300         NSImageRep      *imageRep; 
    301300        NSRect          bounds, rect; 
    302301        float           dx, dy, d; 
     
    306305        [_backgroundColor set]; 
    307306        NSRectFill(bounds); 
    308  
    309         imageRep = [_image bestRepresentationForDevice:NULL]; 
    310          
    311         if(imageRep) { 
     307         
     308        if(_image) { 
    312309                rect.size = [_image size]; 
    313310 
     
    335332                rect.origin.y = floorf((bounds.size.height - rect.size.height) / 2.0); 
    336333                 
    337                 if([imageRep hasAlpha]) { 
    338                         image = [_image copy]; 
    339                         [image setScalesWhenResized:YES]; 
    340                         [image setSize:rect.size]; 
    341                         [image compositeToPoint:rect.origin operation:NSCompositeSourceOver]; 
    342                         [image release]; 
    343                 } else { 
    344                         [imageRep drawInRect:rect]; 
    345                 } 
     334                [_image drawInRect:rect]; 
    346335                 
    347336                if(_label && [_label length] > 0) 
  • Footagehead/trunk/FHRangeHandler.m

    r2933 r2948  
    3636        NSString                *string; 
    3737         
    38         if(![url isFileURL]) { 
     38        if(primary && ![url isFileURL]) { 
    3939                string = [url path]; 
    4040                 
     
    4343                        return YES; 
    4444        } 
    45          
     45                
    4646        return NO; 
    4747} 
  • Footagehead/trunk/FHSpotlightHandler.m

    r2933 r2948  
    3333 
    3434+ (BOOL)handlesURL:(ZAURL *)url isPrimary:(BOOL)primary { 
    35         return [[url scheme] isEqualToString:@"spotlight"]
     35        return (primary && [[url scheme] isEqualToString:@"spotlight"])
    3636} 
    3737 
     
    4141 
    4242- (id)initHandlerWithURL:(ZAURL *)url { 
    43         NSSortDescriptor        *sortDescriptor; 
    44          
    4543        self = [super initHandlerWithURL:url]; 
    4644 
    47         sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"FHSpotlightHandlerName"  
    48                                                                                                  ascending:YES 
    49                                                                                                   selector:@selector(caseInsensitiveCompare:)]; 
    5045        _query = [[NSMetadataQuery alloc] init]; 
    51 //      [_query setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 
    5246        [_query setPredicate:[NSPredicate predicateWithFormat: 
    53                 @"(kMDItemFSName like[cd] %@) && (kMDItemContentTypeTree == \"public.image\")", 
     47                @"(kMDItemFSName LIKE[cd] %@) && (kMDItemContentTypeTree == \"public.image\")", 
    5448                [[url path] substringFromIndex:1]]]; 
    55         [sortDescriptor release]; 
    5649 
    5750        [[NSNotificationCenter defaultCenter] 
     
    8881        NSString                *path; 
    8982        FHFile                  *file; 
     83        unsigned int    count; 
    9084         
    91         item = [_query resultAtIndex:_index]; 
    92         path = [item valueForAttribute:@"kMDItemPath"]; 
     85        count = [_query resultCount]; 
    9386         
    94         if(path) { 
    95                 file = [[FHFile alloc] initWithURL:[ZAURL fileURLWithPath:path] isDirectory:NO index:_index]; 
    96                 [_files addObject:file]; 
    97                 [file release]; 
     87        for(; _index < count; _index++) { 
     88                item = [_query resultAtIndex:_index];