mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-22 17:52:42 +00:00
Merge pull request #32 from gnustep/NSFileWrapper_move_branch
NSFileWrapper move to Foundation
This commit is contained in:
commit
54354f2b29
10 changed files with 54 additions and 1151 deletions
|
@ -140,7 +140,7 @@
|
|||
#import <AppKit/NSDocument.h>
|
||||
#import <AppKit/NSDocumentController.h>
|
||||
#import <AppKit/NSDrawer.h>
|
||||
#import <AppKit/NSFileWrapper.h>
|
||||
#import <AppKit/NSFileWrapperExtensions.h>
|
||||
#import <AppKit/NSFontDescriptor.h>
|
||||
#import <AppKit/NSGestureRecognizer.h>
|
||||
#import <AppKit/NSGlyphGenerator.h>
|
||||
|
|
|
@ -25,150 +25,11 @@
|
|||
If not, see <http://www.gnu.org/licenses/> or write to the
|
||||
Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
*/
|
||||
|
||||
#ifndef _GNUstep_H_NSFileWrapper
|
||||
#define _GNUstep_H_NSFileWrapper
|
||||
#import <GNUstepBase/GSVersionMacros.h>
|
||||
#ifndef _GNUstep_H_NSFileWrapper_GUI
|
||||
#define _GNUstep_H_NSFileWrapper_GUI
|
||||
|
||||
#import <Foundation/NSObject.h>
|
||||
#import <Foundation/NSFileWrapper.h>
|
||||
|
||||
@class NSData;
|
||||
@class NSDictionary;
|
||||
@class NSError;
|
||||
@class NSMutableDictionary;
|
||||
@class NSString;
|
||||
@class NSURL;
|
||||
@class NSImage;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GSFileWrapperDirectoryType,
|
||||
GSFileWrapperRegularFileType,
|
||||
GSFileWrapperSymbolicLinkType
|
||||
} GSFileWrapperType;
|
||||
|
||||
#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
|
||||
enum {
|
||||
NSFileWrapperReadingImmediate = 1,
|
||||
NSFileWrapperReadingWithoutMapping = 2,
|
||||
};
|
||||
typedef NSUInteger NSFileWrapperReadingOptions;
|
||||
|
||||
enum {
|
||||
NSFileWrapperWritingAtomic = 1,
|
||||
NSFileWrapperWritingWithNameUpdating = 2,
|
||||
};
|
||||
typedef NSUInteger NSFileWrapperWritingOptions;
|
||||
#endif
|
||||
|
||||
@interface NSFileWrapper : NSObject
|
||||
{
|
||||
NSString *_filename;
|
||||
NSString *_preferredFilename;
|
||||
NSMutableDictionary *_fileAttributes;
|
||||
GSFileWrapperType _wrapperType;
|
||||
id _wrapperData;
|
||||
NSImage *_iconImage;
|
||||
}
|
||||
|
||||
//
|
||||
// Initialization
|
||||
//
|
||||
|
||||
// Init instance of directory type
|
||||
- (id)initDirectoryWithFileWrappers:(NSDictionary *)docs;
|
||||
|
||||
// Init instance of regular file type
|
||||
- (id)initRegularFileWithContents:(NSData *)data;
|
||||
|
||||
// Init instance of symbolic link type
|
||||
- (id)initSymbolicLinkWithDestination:(NSString *)path;
|
||||
|
||||
// Init an instance from the file, directory, or symbolic link at path.
|
||||
// This can create a tree of instances
|
||||
- (id)initWithPath:(NSString *)path; // with a directory instance at the top
|
||||
|
||||
// Init an instance from data in standard serial format. Serial format
|
||||
// is the same as that used by NSText's RTFDFromRange: method. This can
|
||||
// create a tree of instances with a directory instance at the top
|
||||
- (id)initWithSerializedRepresentation:(NSData *)data;
|
||||
|
||||
//
|
||||
// General methods
|
||||
//
|
||||
|
||||
// write instace to disk at path. if directory type, this method is recursive
|
||||
// if flag is YES, the wrapper will be updated with the name used in writing
|
||||
// the file
|
||||
- (BOOL)writeToFile:(NSString *)path
|
||||
atomically:(BOOL)atomicFlag
|
||||
updateFilenames:(BOOL)updateFilenamesFlag;
|
||||
|
||||
- (NSData *)serializedRepresentation;
|
||||
|
||||
- (void)setFilename:(NSString *)filename;
|
||||
- (NSString *)filename;
|
||||
|
||||
- (void)setPreferredFilename:(NSString *)filename;
|
||||
- (NSString *)preferredFilename;
|
||||
|
||||
- (void)setFileAttributes:(NSDictionary *)attributes;
|
||||
- (NSDictionary *)fileAttributes;
|
||||
|
||||
- (BOOL)isRegularFile;
|
||||
- (BOOL)isDirectory;
|
||||
- (BOOL)isSymbolicLink;
|
||||
|
||||
- (void)setIcon:(NSImage *)icon;
|
||||
- (NSImage *)icon;
|
||||
|
||||
- (BOOL)needsToBeUpdatedFromPath:(NSString *)path;
|
||||
- (BOOL)updateFromPath:(NSString *)path;
|
||||
|
||||
//
|
||||
// Directory type methods
|
||||
//
|
||||
|
||||
// these messages raise an exception when sent to non-directory type wrappers!
|
||||
- (NSString *)addFileWrapper:(NSFileWrapper *)doc;
|
||||
- (void)removeFileWrapper:(NSFileWrapper *)doc;
|
||||
- (NSDictionary *)fileWrappers;
|
||||
- (NSString *)keyForFileWrapper:(NSFileWrapper *)doc;
|
||||
- (NSString *)addFileWithPath:(NSString *)path;
|
||||
- (NSString *)addRegularFileWithContents:(NSData *)data
|
||||
preferredFilename:(NSString *)filename;
|
||||
- (NSString *)addSymbolicLinkWithDestination:(NSString *)path
|
||||
preferredFilename:(NSString *)filename;
|
||||
|
||||
//
|
||||
// Regular file type methods
|
||||
//
|
||||
|
||||
- (NSData *)regularFileContents;
|
||||
|
||||
//
|
||||
// Symbolic link type methods
|
||||
//
|
||||
|
||||
- (NSString *)symbolicLinkDestination;
|
||||
|
||||
#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
|
||||
- (id)initSymbolicLinkWithDestinationURL:(NSURL *)url;
|
||||
- (id)initWithURL:(NSURL *)url
|
||||
options:(NSFileWrapperReadingOptions)options
|
||||
error:(NSError **)outError;
|
||||
- (BOOL)matchesContentsOfURL:(NSURL *)url;
|
||||
- (BOOL)readFromURL:(NSURL *)url
|
||||
options:(NSFileWrapperReadingOptions)options
|
||||
error:(NSError **)outError;
|
||||
- (NSURL *)symbolicLinkDestinationURL;
|
||||
- (BOOL)writeToURL:(NSURL *)url
|
||||
options:(NSFileWrapperWritingOptions)options
|
||||
originalContentsURL:(NSURL *)originalContentsURL
|
||||
error:(NSError **)outError;
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
||||
#endif // _GNUstep_H_NSFileWrapper
|
||||
|
|
42
Headers/AppKit/NSFileWrapperExtensions.h
Normal file
42
Headers/AppKit/NSFileWrapperExtensions.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
NSFileWrapperExtensions.h
|
||||
|
||||
NSFileWrapper objects hold a file's contents in dynamic memory.
|
||||
|
||||
Copyright (C) 1996 Free Software Foundation, Inc.
|
||||
|
||||
Author: Felipe A. Rodriguez <far@ix.netcom.com>
|
||||
Date: Sept 1998
|
||||
|
||||
This file is part of the GNUstep GUI Library.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; see the file COPYING.LIB.
|
||||
If not, see <http://www.gnu.org/licenses/> or write to the
|
||||
Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef _GNUstep_H_NSFileWrapper_Extensions
|
||||
#define _GNUstep_H_NSFileWrapper_Extensions
|
||||
|
||||
#import <Foundation/NSFileWrapper.h>
|
||||
|
||||
@class NSImage;
|
||||
|
||||
@interface NSFileWrapper (NSExtensions)
|
||||
- (void) setIcon: (NSImage*)icon;
|
||||
- (NSImage*) icon;
|
||||
@end
|
||||
|
||||
#endif
|
|
@ -91,7 +91,7 @@ NSDocumentController.m \
|
|||
NSDrawer.m \
|
||||
NSEPSImageRep.m \
|
||||
NSEvent.m \
|
||||
NSFileWrapper.m \
|
||||
NSFileWrapperExtensions.m \
|
||||
NSFont.m \
|
||||
NSFontDescriptor.m \
|
||||
NSFontManager.m \
|
||||
|
@ -327,6 +327,7 @@ NSDrawer.h \
|
|||
NSEPSImageRep.h \
|
||||
NSEvent.h \
|
||||
NSFileWrapper.h \
|
||||
NSFileWrapperExtensions.h \
|
||||
NSFont.h \
|
||||
NSFontDescriptor.h \
|
||||
NSFontManager.h \
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
|
||||
#import "AppKit/NSFileWrapper.h"
|
||||
#import "AppKit/NSFileWrapperExtensions.h"
|
||||
#import "AppKit/NSImage.h"
|
||||
#import "GNUstepGUI/GSHelpAttachment.h"
|
||||
|
||||
|
|
|
@ -1,780 +0,0 @@
|
|||
/** <title>NSFileWrapper</title>
|
||||
|
||||
<abstract>Hold a file's contents in dynamic memory.</abstract>
|
||||
|
||||
Copyright (C) 1996 Free Software Foundation, Inc.
|
||||
|
||||
Author: Felipe A. Rodriguez <far@ix.netcom.com>
|
||||
Date: Sept 1998
|
||||
Author: Jonathan Gapen <jagapen@whitewater.chem.wisc.edu>
|
||||
Date: Dec 1999
|
||||
|
||||
This file is part of the GNUstep GUI Library.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; see the file COPYING.LIB.
|
||||
If not, see <http://www.gnu.org/licenses/> or write to the
|
||||
Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#import <Foundation/NSArchiver.h>
|
||||
#import <Foundation/NSArray.h>
|
||||
#import <Foundation/NSAutoreleasePool.h>
|
||||
#import <Foundation/NSData.h>
|
||||
#import <Foundation/NSDebug.h>
|
||||
#import <Foundation/NSException.h>
|
||||
#import <Foundation/NSFileManager.h>
|
||||
#import <Foundation/NSURL.h>
|
||||
#import <Foundation/NSValue.h>
|
||||
#import "AppKit/NSFileWrapper.h"
|
||||
#import "AppKit/NSFont.h"
|
||||
#import "AppKit/NSImage.h"
|
||||
#import "AppKit/NSWorkspace.h"
|
||||
|
||||
@implementation NSFileWrapper
|
||||
|
||||
//
|
||||
// Initialization
|
||||
//
|
||||
|
||||
// Init instance of directory type
|
||||
- (id) initDirectoryWithFileWrappers: (NSDictionary*)docs
|
||||
{
|
||||
self = [super init];
|
||||
if (self != nil)
|
||||
{
|
||||
NSEnumerator *enumerator;
|
||||
id key;
|
||||
NSFileWrapper *wrapper;
|
||||
|
||||
_wrapperType = GSFileWrapperDirectoryType;
|
||||
_wrapperData
|
||||
= [[NSMutableDictionary alloc] initWithCapacity: [docs count]];
|
||||
|
||||
enumerator = [docs keyEnumerator];
|
||||
while ((key = [enumerator nextObject]) != nil)
|
||||
{
|
||||
wrapper = (NSFileWrapper*)[docs objectForKey: key];
|
||||
|
||||
if (![wrapper preferredFilename])
|
||||
{
|
||||
[wrapper setPreferredFilename: key];
|
||||
}
|
||||
[_wrapperData setObject: wrapper forKey: key];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
// Init instance of regular file type
|
||||
- (id) initRegularFileWithContents: (NSData*)data
|
||||
{
|
||||
self = [super init];
|
||||
if (self != nil)
|
||||
{
|
||||
_wrapperData = [data copyWithZone: [self zone]];
|
||||
_wrapperType = GSFileWrapperRegularFileType;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
// Init instance of symbolic link type
|
||||
- (id) initSymbolicLinkWithDestination: (NSString*)path
|
||||
{
|
||||
self = [super init];
|
||||
if (self != nil)
|
||||
{
|
||||
_wrapperData = [path copyWithZone: [self zone]];
|
||||
_wrapperType = GSFileWrapperSymbolicLinkType;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id) initSymbolicLinkWithDestinationURL: (NSURL*)url
|
||||
{
|
||||
// FIXME
|
||||
return [self initSymbolicLinkWithDestination: [url path]];
|
||||
}
|
||||
|
||||
/**
|
||||
* Init an instance from the file, directory, or symbolic link at path.<br />
|
||||
* This can create a tree of instances with a directory instance at the top
|
||||
*/
|
||||
- (id) initWithPath: (NSString*)path
|
||||
{
|
||||
CREATE_AUTORELEASE_POOL(arp);
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
NSDictionary *fileAttributes;
|
||||
NSString *fileType;
|
||||
|
||||
NSDebugLLog(@"NSFileWrapper", @"initWithPath: %@", path);
|
||||
|
||||
fileAttributes = [fm fileAttributesAtPath: path traverseLink: NO];
|
||||
fileType = [fileAttributes fileType];
|
||||
if ([fileType isEqualToString: NSFileTypeDirectory])
|
||||
{
|
||||
NSString *filename;
|
||||
NSMutableArray *fileWrappers = [NSMutableArray array];
|
||||
NSArray *filenames = [fm directoryContentsAtPath: path];
|
||||
NSEnumerator *enumerator = [filenames objectEnumerator];
|
||||
|
||||
while ((filename = [enumerator nextObject]) != nil)
|
||||
{
|
||||
NSFileWrapper *w;
|
||||
|
||||
w = [[NSFileWrapper alloc] initWithPath:
|
||||
[path stringByAppendingPathComponent: filename]];
|
||||
[fileWrappers addObject: w];
|
||||
RELEASE(w);
|
||||
}
|
||||
self = [self initDirectoryWithFileWrappers:
|
||||
[NSDictionary dictionaryWithObjects: fileWrappers forKeys: filenames]];
|
||||
}
|
||||
else if ([fileType isEqualToString: NSFileTypeRegular])
|
||||
{
|
||||
self = [self initRegularFileWithContents:
|
||||
AUTORELEASE([[NSData alloc] initWithContentsOfFile: path])];
|
||||
}
|
||||
else if ([fileType isEqualToString: NSFileTypeSymbolicLink])
|
||||
{
|
||||
self = [self initSymbolicLinkWithDestination:
|
||||
[fm pathContentOfSymbolicLinkAtPath: path]];
|
||||
}
|
||||
|
||||
// Store the full path in filename, the specification is unclear in this point
|
||||
[self setFilename: path];
|
||||
[self setPreferredFilename: [path lastPathComponent]];
|
||||
[self setFileAttributes: fileAttributes];
|
||||
|
||||
[arp drain];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id) initWithURL: (NSURL*)url
|
||||
options: (NSFileWrapperReadingOptions)options
|
||||
error: (NSError**)outError
|
||||
{
|
||||
// FIXME
|
||||
if ([self readFromURL: url
|
||||
options: options
|
||||
error: outError])
|
||||
{
|
||||
return self;
|
||||
}
|
||||
else
|
||||
{
|
||||
DESTROY(self);
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
// Init an instance from data in std serial format. Serial format is the
|
||||
// same as that used by NSText's RTFDFromRange: method. This can
|
||||
// create a tree of instances with a directory instance at the top
|
||||
- (id) initWithSerializedRepresentation: (NSData*)data
|
||||
{
|
||||
// FIXME - This should use a serializer. To get that working a helper object
|
||||
// is needed that implements the NSObjCTypeSerializationCallBack protocol.
|
||||
// We should add this later, currently the NSArchiver is used.
|
||||
// Thanks to Richard, for pointing this out.
|
||||
NSFileWrapper *wrapper = [NSUnarchiver unarchiveObjectWithData: data];
|
||||
|
||||
RELEASE(self);
|
||||
return RETAIN(wrapper);
|
||||
}
|
||||
|
||||
- (void) dealloc
|
||||
{
|
||||
TEST_RELEASE(_filename);
|
||||
TEST_RELEASE(_fileAttributes);
|
||||
TEST_RELEASE(_preferredFilename);
|
||||
TEST_RELEASE(_wrapperData);
|
||||
TEST_RELEASE(_iconImage);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
//
|
||||
// General methods
|
||||
//
|
||||
|
||||
// write instance to disk at path; if directory type, this
|
||||
// method is recursive; if updateFilenamesFlag is YES, the wrapper
|
||||
// will be updated with the name used in writing the file
|
||||
|
||||
- (BOOL) writeToFile: (NSString*)path
|
||||
atomically: (BOOL)atomicFlag
|
||||
updateFilenames: (BOOL)updateFilenamesFlag
|
||||
{
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
BOOL success = NO;
|
||||
|
||||
NSDebugLLog(@"NSFileWrapper",
|
||||
@"writeToFile: %@ atomically: updateFilenames: ", path);
|
||||
|
||||
switch (_wrapperType)
|
||||
{
|
||||
case GSFileWrapperDirectoryType:
|
||||
{
|
||||
// FIXME - more robust save proceedure when atomicFlag set
|
||||
NSEnumerator *enumerator = [_wrapperData keyEnumerator];
|
||||
NSString *key;
|
||||
|
||||
[fm createDirectoryAtPath: path
|
||||
withIntermediateDirectories: YES
|
||||
attributes: _fileAttributes
|
||||
error: NULL];
|
||||
while ((key = (NSString*)[enumerator nextObject]))
|
||||
{
|
||||
NSString *newPath =
|
||||
[path stringByAppendingPathComponent: key];
|
||||
[[_wrapperData objectForKey: key] writeToFile: newPath
|
||||
atomically: atomicFlag
|
||||
updateFilenames: updateFilenamesFlag];
|
||||
}
|
||||
success = YES;
|
||||
break;
|
||||
}
|
||||
case GSFileWrapperRegularFileType:
|
||||
{
|
||||
if ([_wrapperData writeToFile: path atomically: atomicFlag])
|
||||
success = [fm changeFileAttributes: _fileAttributes
|
||||
atPath: path];
|
||||
break;
|
||||
}
|
||||
case GSFileWrapperSymbolicLinkType:
|
||||
{
|
||||
success = [fm createSymbolicLinkAtPath: path pathContent: _wrapperData];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (success && updateFilenamesFlag)
|
||||
{
|
||||
[self setFilename: [path lastPathComponent]];
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
- (NSData*) serializedRepresentation
|
||||
{
|
||||
// FIXME - This should use a serializer. To get that working a helper object
|
||||
// is needed that implements the NSObjCTypeSerializationCallBack protocol.
|
||||
// We should add this later, currently the NSArchiver is used.
|
||||
// Thanks to Richard, for pointing this out.
|
||||
return [NSArchiver archivedDataWithRootObject: self];
|
||||
}
|
||||
|
||||
- (void) setFilename: (NSString*)filename
|
||||
{
|
||||
if (filename == nil || [filename isEqualToString: @""])
|
||||
{
|
||||
[NSException raise: NSInternalInconsistencyException
|
||||
format: @"Empty or nil argument to setFilename: "];
|
||||
}
|
||||
else
|
||||
{
|
||||
ASSIGN(_filename, filename);
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*) filename
|
||||
{
|
||||
return _filename;
|
||||
}
|
||||
|
||||
- (void) setPreferredFilename: (NSString*)filename
|
||||
{
|
||||
if (filename == nil || [filename isEqualToString: @""])
|
||||
{
|
||||
[NSException raise: NSInternalInconsistencyException
|
||||
format: @"Empty or nil argument to setPreferredFilename: "];
|
||||
}
|
||||
else
|
||||
{
|
||||
ASSIGN(_preferredFilename, filename);
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*) preferredFilename
|
||||
{
|
||||
return _preferredFilename;
|
||||
}
|
||||
|
||||
- (void) setFileAttributes: (NSDictionary*)attributes
|
||||
{
|
||||
if (_fileAttributes == nil)
|
||||
{
|
||||
_fileAttributes = [NSMutableDictionary new];
|
||||
}
|
||||
|
||||
[_fileAttributes addEntriesFromDictionary: attributes];
|
||||
}
|
||||
|
||||
- (NSDictionary*) fileAttributes
|
||||
{
|
||||
return _fileAttributes;
|
||||
}
|
||||
|
||||
- (BOOL) isRegularFile
|
||||
{
|
||||
if (_wrapperType == GSFileWrapperRegularFileType)
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL) isDirectory
|
||||
{
|
||||
if (_wrapperType == GSFileWrapperDirectoryType)
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL) isSymbolicLink
|
||||
{
|
||||
if (_wrapperType == GSFileWrapperSymbolicLinkType)
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
else
|
||||
{
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (void) setIcon: (NSImage*)icon
|
||||
{
|
||||
ASSIGN(_iconImage, icon);
|
||||
}
|
||||
|
||||
- (NSImage*) icon
|
||||
{
|
||||
if (_iconImage == nil && [self filename])
|
||||
{
|
||||
return [[NSWorkspace sharedWorkspace] iconForFile: [self filename]];
|
||||
}
|
||||
else
|
||||
{
|
||||
return _iconImage;
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL) needsToBeUpdatedFromPath: (NSString*)path
|
||||
{
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
|
||||
switch (_wrapperType)
|
||||
{
|
||||
case GSFileWrapperRegularFileType:
|
||||
if ([[self fileAttributes]
|
||||
isEqualToDictionary: [fm fileAttributesAtPath: path
|
||||
traverseLink: NO]])
|
||||
return NO;
|
||||
break;
|
||||
case GSFileWrapperSymbolicLinkType:
|
||||
if ([_wrapperData isEqualToString:
|
||||
[fm pathContentOfSymbolicLinkAtPath: path]])
|
||||
return NO;
|
||||
break;
|
||||
case GSFileWrapperDirectoryType:
|
||||
// Has the dictory itself changed?
|
||||
if (![[self fileAttributes]
|
||||
isEqualToDictionary: [fm fileAttributesAtPath: path
|
||||
traverseLink: NO]])
|
||||
return YES;
|
||||
|
||||
// FIXME - for directory wrappers, we have to check if all the files are still there,
|
||||
// if they have the same attributes and if any new files have been added.
|
||||
// And this recursive for all included file wrappers
|
||||
|
||||
return NO;
|
||||
break;
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL) updateFromPath: (NSString*)path
|
||||
{
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
|
||||
switch (_wrapperType)
|
||||
{
|
||||
case GSFileWrapperRegularFileType:
|
||||
if ([[self fileAttributes]
|
||||
isEqualToDictionary: [fm fileAttributesAtPath: path
|
||||
traverseLink: NO]])
|
||||
return NO;
|
||||
[self initWithPath: path];
|
||||
break;
|
||||
case GSFileWrapperSymbolicLinkType:
|
||||
if ([[self fileAttributes]
|
||||
isEqualToDictionary: [fm fileAttributesAtPath: path
|
||||
traverseLink: NO]] &&
|
||||
[_wrapperData isEqualToString:
|
||||
[fm pathContentOfSymbolicLinkAtPath: path]])
|
||||
return NO;
|
||||
[self initWithPath: path];
|
||||
break;
|
||||
case GSFileWrapperDirectoryType:
|
||||
// Has the dictory itself changed?
|
||||
if (![[self fileAttributes]
|
||||
isEqualToDictionary: [fm fileAttributesAtPath: path
|
||||
traverseLink: NO]])
|
||||
{
|
||||
// FIXME: This is not effizent
|
||||
[self initWithPath: path];
|
||||
return YES;
|
||||
}
|
||||
// FIXME - for directory wrappers, we have to check if all the files are still there,
|
||||
// if they have the same attributes and if any new files have been added.
|
||||
// And this recursive for all included file wrappers
|
||||
|
||||
return NO;
|
||||
break;
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
//
|
||||
// Directory type methods
|
||||
//
|
||||
|
||||
#define GSFileWrapperDirectoryTypeCheck() \
|
||||
if (![self isDirectory]) \
|
||||
[NSException raise: NSInternalInconsistencyException \
|
||||
format: @"Can't invoke %@ on a file wrapper that" \
|
||||
@" does not wrap a directory!", NSStringFromSelector(_cmd)];
|
||||
|
||||
- (NSString*) addFileWrapper: (NSFileWrapper*)doc
|
||||
{
|
||||
NSString *key;
|
||||
|
||||
GSFileWrapperDirectoryTypeCheck();
|
||||
|
||||
key = [doc preferredFilename];
|
||||
if (key == nil || [key isEqualToString: @""])
|
||||
{
|
||||
[NSException raise: NSInvalidArgumentException
|
||||
format: @"Adding file wrapper with no preferred filename."];
|
||||
return nil;
|
||||
}
|
||||
|
||||
if ([_wrapperData objectForKey: key] != nil)
|
||||
{
|
||||
// FIXME - handle duplicate names
|
||||
}
|
||||
[_wrapperData setObject: doc forKey: key];
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
- (void) removeFileWrapper: (NSFileWrapper*)doc
|
||||
{
|
||||
GSFileWrapperDirectoryTypeCheck();
|
||||
|
||||
[_wrapperData removeObjectsForKeys: [_wrapperData allKeysForObject: doc]];
|
||||
}
|
||||
|
||||
- (NSDictionary*) fileWrappers
|
||||
{
|
||||
GSFileWrapperDirectoryTypeCheck();
|
||||
|
||||
return _wrapperData;
|
||||
}
|
||||
|
||||
- (NSString*) keyForFileWrapper: (NSFileWrapper*)doc
|
||||
{
|
||||
GSFileWrapperDirectoryTypeCheck();
|
||||
|
||||
return [[_wrapperData allKeysForObject: doc] objectAtIndex: 0];
|
||||
}
|
||||
|
||||
- (NSString*) addFileWithPath: (NSString*)path
|
||||
{
|
||||
NSFileWrapper *wrapper;
|
||||
GSFileWrapperDirectoryTypeCheck();
|
||||
|
||||
wrapper = AUTORELEASE([[NSFileWrapper alloc] initWithPath: path]);
|
||||
if (wrapper != nil)
|
||||
{
|
||||
return [self addFileWrapper: wrapper];
|
||||
}
|
||||
else
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*) addRegularFileWithContents: (NSData*)data
|
||||
preferredFilename: (NSString*)filename
|
||||
{
|
||||
NSFileWrapper *wrapper;
|
||||
GSFileWrapperDirectoryTypeCheck();
|
||||
|
||||
wrapper = AUTORELEASE([[NSFileWrapper alloc]
|
||||
initRegularFileWithContents: data]);
|
||||
if (wrapper != nil)
|
||||
{
|
||||
[wrapper setPreferredFilename: filename];
|
||||
return [self addFileWrapper: wrapper];
|
||||
}
|
||||
else
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString*) addSymbolicLinkWithDestination: (NSString*)path
|
||||
preferredFilename: (NSString*)filename
|
||||
{
|
||||
NSFileWrapper *wrapper;
|
||||
GSFileWrapperDirectoryTypeCheck();
|
||||
|
||||
wrapper = AUTORELEASE([[NSFileWrapper alloc]
|
||||
initSymbolicLinkWithDestination: path]);
|
||||
if (wrapper != nil)
|
||||
{
|
||||
[wrapper setPreferredFilename: filename];
|
||||
return [self addFileWrapper: wrapper];
|
||||
}
|
||||
else
|
||||
{
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Regular file type methods
|
||||
//
|
||||
|
||||
- (NSData*) regularFileContents
|
||||
{
|
||||
if ([self isRegularFile])
|
||||
{
|
||||
return _wrapperData;
|
||||
}
|
||||
else
|
||||
{
|
||||
[NSException raise: NSInternalInconsistencyException
|
||||
format: @"File wrapper does not wrap regular file."];
|
||||
}
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
//
|
||||
// Symbolic link type methods
|
||||
//
|
||||
|
||||
- (NSString*) symbolicLinkDestination
|
||||
{
|
||||
if ([self isSymbolicLink])
|
||||
{
|
||||
return _wrapperData;
|
||||
}
|
||||
else
|
||||
{
|
||||
[NSException raise: NSInternalInconsistencyException
|
||||
format: @"File wrapper does not wrap symbolic link."];
|
||||
}
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSURL *)symbolicLinkDestinationURL
|
||||
{
|
||||
// FIXME
|
||||
return [NSURL fileURLWithPath: [self symbolicLinkDestination]];
|
||||
}
|
||||
|
||||
- (BOOL) matchesContentsOfURL: (NSURL*)url
|
||||
{
|
||||
// FIXME
|
||||
// For
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL) readFromURL: (NSURL*)url
|
||||
options: (NSFileWrapperReadingOptions)options
|
||||
error: (NSError**)outError
|
||||
{
|
||||
// FIXME
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
NSString *path = [url path];
|
||||
NSDictionary *fileAttributes;
|
||||
NSString *fileType;
|
||||
|
||||
NSDebugLLog(@"NSFileWrapper", @"readFromURL: %@", path);
|
||||
|
||||
fileAttributes = [fm fileAttributesAtPath: path traverseLink: NO];
|
||||
fileType = [fileAttributes fileType];
|
||||
if ([fileType isEqualToString: NSFileTypeDirectory])
|
||||
{
|
||||
if (options & NSFileWrapperReadingImmediate)
|
||||
{
|
||||
NSString *filename;
|
||||
NSMutableArray *fileWrappers = [NSMutableArray array];
|
||||
NSArray *filenames = [fm directoryContentsAtPath: path];
|
||||
NSEnumerator *enumerator = [filenames objectEnumerator];
|
||||
|
||||
while ((filename = [enumerator nextObject]) != nil)
|
||||
{
|
||||
NSFileWrapper *w;
|
||||
|
||||
w = [[NSFileWrapper alloc] initWithPath:
|
||||
[path stringByAppendingPathComponent: filename]];
|
||||
[fileWrappers addObject: w];
|
||||
RELEASE(w);
|
||||
}
|
||||
self = [self initDirectoryWithFileWrappers:
|
||||
[NSDictionary dictionaryWithObjects: fileWrappers
|
||||
forKeys: filenames]];
|
||||
}
|
||||
else
|
||||
{
|
||||
self = [self initDirectoryWithFileWrappers: nil];
|
||||
}
|
||||
}
|
||||
else if ([fileType isEqualToString: NSFileTypeRegular])
|
||||
{
|
||||
if (options & NSFileWrapperReadingWithoutMapping)
|
||||
{
|
||||
self = [self initRegularFileWithContents:
|
||||
AUTORELEASE([[NSData alloc] initWithContentsOfFile: path])];
|
||||
}
|
||||
else
|
||||
{
|
||||
self = [self initRegularFileWithContents:
|
||||
AUTORELEASE([[NSData alloc] initWithContentsOfMappedFile: path])];
|
||||
}
|
||||
}
|
||||
else if ([fileType isEqualToString: NSFileTypeSymbolicLink])
|
||||
{
|
||||
self = [self initSymbolicLinkWithDestination:
|
||||
[fm pathContentOfSymbolicLinkAtPath: path]];
|
||||
}
|
||||
|
||||
// Store the full path in filename, the specification is unclear in this point
|
||||
[self setFilename: path];
|
||||
[self setPreferredFilename: [path lastPathComponent]];
|
||||
[self setFileAttributes: [fm fileAttributesAtPath: path traverseLink: NO]];
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL) writeToURL: (NSURL*)url
|
||||
options: (NSFileWrapperWritingOptions)options
|
||||
originalContentsURL: (NSURL*)originalContentsURL
|
||||
error: (NSError**)outError
|
||||
{
|
||||
// FIXME
|
||||
return [self writeToFile: [url path]
|
||||
atomically: options & NSFileWrapperWritingAtomic
|
||||
updateFilenames: options & NSFileWrapperWritingWithNameUpdating];
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Archiving
|
||||
//
|
||||
|
||||
- (void) encodeWithCoder: (NSCoder*)aCoder
|
||||
{
|
||||
if ([aCoder allowsKeyedCoding])
|
||||
{
|
||||
[aCoder encodeObject: [self serializedRepresentation] forKey: @"NSFileWrapperData"];
|
||||
}
|
||||
else
|
||||
{
|
||||
[aCoder encodeValueOfObjCType: @encode(int) at: &_wrapperType];
|
||||
// Dont store the file name
|
||||
[aCoder encodeObject: _preferredFilename];
|
||||
[aCoder encodeObject: _fileAttributes];
|
||||
[aCoder encodeObject: _wrapperData];
|
||||
[aCoder encodeObject: _iconImage];
|
||||
}
|
||||
}
|
||||
|
||||
- (id) initWithCoder: (NSCoder*)aDecoder
|
||||
{
|
||||
if ([aDecoder allowsKeyedCoding])
|
||||
{
|
||||
NSData *data = [aDecoder decodeObjectForKey: @"NSFileWrapperData"];
|
||||
return [self initWithSerializedRepresentation: data];
|
||||
}
|
||||
else
|
||||
{
|
||||
int wrapperType;
|
||||
NSString *preferredFilename;
|
||||
NSDictionary *fileAttributes;
|
||||
id wrapperData;
|
||||
NSImage *iconImage;
|
||||
|
||||
[aDecoder decodeValueOfObjCType: @encode(int) at: &wrapperType];
|
||||
// Dont restore the file name
|
||||
preferredFilename = [aDecoder decodeObject];
|
||||
fileAttributes = [aDecoder decodeObject];
|
||||
wrapperData = [aDecoder decodeObject];
|
||||
iconImage = [aDecoder decodeObject];
|
||||
|
||||
switch (wrapperType)
|
||||
{
|
||||
case GSFileWrapperRegularFileType:
|
||||
{
|
||||
self = [self initRegularFileWithContents: wrapperData];
|
||||
break;
|
||||
}
|
||||
case GSFileWrapperSymbolicLinkType:
|
||||
{
|
||||
self = [self initSymbolicLinkWithDestination: wrapperData];
|
||||
break;
|
||||
}
|
||||
case GSFileWrapperDirectoryType:
|
||||
{
|
||||
self = [self initDirectoryWithFileWrappers: wrapperData];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (preferredFilename != nil)
|
||||
{
|
||||
[self setPreferredFilename: preferredFilename];
|
||||
}
|
||||
if (fileAttributes != nil)
|
||||
{
|
||||
[self setFileAttributes: fileAttributes];
|
||||
}
|
||||
if (iconImage != nil)
|
||||
{
|
||||
[self setIcon: iconImage];
|
||||
}
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
@ -38,6 +38,7 @@
|
|||
|
||||
#import "AppKit/NSCell.h"
|
||||
#import "AppKit/NSFileWrapper.h"
|
||||
#import "AppKit/NSFileWrapperExtensions.h"
|
||||
#import "AppKit/NSImage.h"
|
||||
#import "AppKit/NSEvent.h"
|
||||
#import "AppKit/NSTextContainer.h"
|
||||
|
|
|
@ -71,6 +71,7 @@
|
|||
#import "AppKit/NSDragging.h"
|
||||
#import "AppKit/NSEvent.h"
|
||||
#import "AppKit/NSFileWrapper.h"
|
||||
#import "AppKit/NSFileWrapperExtensions.h"
|
||||
#import "AppKit/NSGraphics.h"
|
||||
#import "AppKit/NSImage.h"
|
||||
#import "AppKit/NSKeyValueBinding.h"
|
||||
|
|
|
@ -1,224 +0,0 @@
|
|||
;
|
||||
; libgnustep-gui.def
|
||||
;
|
||||
; Exports for libgnustep-gui DLL
|
||||
; Specific to WIN32 operating systems
|
||||
;
|
||||
; Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
;
|
||||
; This file is part of the GNUstep GUI Library.
|
||||
;
|
||||
; This library is free software; you can redistribute it and/or
|
||||
; modify it under the terms of the GNU Lesser General Public
|
||||
; License as published by the Free Software Foundation; either
|
||||
; version 2 of the License, or (at your option) any later version.
|
||||
;
|
||||
; This library is distributed in the hope that it will be useful,
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
; Lesser General Public License for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU Lesser General Public
|
||||
; License along with this library; see the file COPYING.LIB.
|
||||
; If not, see <http://www.gnu.org/licenses/> or write to the
|
||||
; Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
||||
; Boston, MA 02110-1301, USA.
|
||||
;
|
||||
LIBRARY libgnustep-gui
|
||||
EXPORTS
|
||||
__objc_class_name_GSDisplayServer
|
||||
__objc_class_name_GSFontEnumerator
|
||||
__objc_class_name_GSFontInfo
|
||||
__objc_class_name_GSHbox
|
||||
__objc_class_name_GSHelpManagerPanel
|
||||
__objc_class_name_GSHorizontalTypesetter
|
||||
__objc_class_name__GSLabelListView
|
||||
__objc_class_name_GSInfoPanel
|
||||
__objc_class_name_GSKeyBindingAction
|
||||
__objc_class_name_GSKeyBindingActionQuoteNextKeyStroke
|
||||
__objc_class_name_GSKeyBindingActionSelector
|
||||
__objc_class_name_GSKeyBindingActionSelectorArray
|
||||
__objc_class_name_GSKeyBindingTable
|
||||
__objc_class_name_GSLayoutManager
|
||||
__objc_class_name_GSMemoryPanel
|
||||
__objc_class_name_GSMemoryPanelEntry
|
||||
__objc_class_name_GSClassSwapper
|
||||
__objc_class_name_GSControlTemplate
|
||||
__objc_class_name_GSCustomView
|
||||
__objc_class_name_GSMenuTemplate
|
||||
__objc_class_name_GSNibContainer
|
||||
__objc_class_name_GSNibItem
|
||||
__objc_class_name_GSObjectTemplate
|
||||
__objc_class_name_GSTemplateFactory
|
||||
__objc_class_name_GSTextTemplate
|
||||
__objc_class_name_GSTextViewTemplate
|
||||
__objc_class_name_GSViewTemplate
|
||||
__objc_class_name_GSWindowTemplate
|
||||
__objc_class_name_NSWindowTemplate
|
||||
__objc_class_name_GSListener
|
||||
__objc_class_name_GSServicesManager
|
||||
__objc_class_name_GSSlideView
|
||||
__objc_class_name_GSTable
|
||||
__objc_class_name_GSTextInfo
|
||||
__objc_class_name_GSTextStorage
|
||||
__objc_class_name_GSTrackingRect
|
||||
__objc_class_name_GSTypesetter
|
||||
__objc_class_name_GSVbox
|
||||
__objc_class_name_NSActionCell
|
||||
__objc_class_name_NSAffineTransform
|
||||
__objc_class_name_NSAppIconView
|
||||
__objc_class_name_NSApplication
|
||||
__objc_class_name_NSIconWindow
|
||||
__objc_class_name_GSBezierPath
|
||||
__objc_class_name_NSBezierPath
|
||||
__objc_class_name_NSBitmapImageRep
|
||||
__objc_class_name_NSBox
|
||||
__objc_class_name_GSBrowserTitleCell
|
||||
__objc_class_name_NSBrowser
|
||||
__objc_class_name_NSBrowserColumn
|
||||
__objc_class_name_NSBrowserCell
|
||||
__objc_class_name_NSNibConnector
|
||||
__objc_class_name_NSNibControlConnector
|
||||
__objc_class_name_NSNibOutletConnector
|
||||
__objc_class_name_NSButton
|
||||
__objc_class_name_NSButtonCell
|
||||
__objc_class_name_GSCacheW
|
||||
__objc_class_name_NSCachedImageRep
|
||||
__objc_class_name_NSCell
|
||||
__objc_class_name_NSClipView
|
||||
__objc_class_name_GSCalibratedRGBColor
|
||||
__objc_class_name_GSCalibratedWhiteColor
|
||||
__objc_class_name_GSDeviceCMYKColor
|
||||
__objc_class_name_GSDeviceRGBColor
|
||||
__objc_class_name_GSDeviceWhiteColor
|
||||
__objc_class_name_GSNamedColor
|
||||
__objc_class_name_GSPatternColor
|
||||
__objc_class_name_GSRGBColor
|
||||
__objc_class_name_GSWhiteColor
|
||||
__objc_class_name_NSColor
|
||||
__objc_class_name_NSColorList
|
||||
__objc_class_name_NSColorPanel
|
||||
__objc_class_name_NSColorPicker
|
||||
__objc_class_name_NSColorWell
|
||||
__objc_class_name_NSComboBox
|
||||
__objc_class_name_GSComboWindow
|
||||
__objc_class_name_NSComboBoxCell
|
||||
__objc_class_name_NSControl
|
||||
__objc_class_name_NSCursor
|
||||
__objc_class_name_NSCustomImageRep
|
||||
__objc_class_name_NSDataLink
|
||||
__objc_class_name_NSDataLinkManager
|
||||
__objc_class_name_GSDataLinkPanelController
|
||||
__objc_class_name_NSDataLinkPanel
|
||||
__objc_class_name_NSDocument
|
||||
__objc_class_name_NSDocumentController
|
||||
__objc_class_name_NSDrawer
|
||||
__objc_class_name_NSEPSImageRep
|
||||
__objc_class_name_NSEvent
|
||||
__objc_class_name_NSFileWrapper
|
||||
__objc_class_name_NSFont
|
||||
__objc_class_name_NSFontManager
|
||||
__objc_class_name_NSFontPanel
|
||||
__objc_class_name_NSForm
|
||||
__objc_class_name_NSFormCell
|
||||
__objc_class_name_NSGraphicsContext
|
||||
__objc_class_name_NSHelpManager
|
||||
__objc_class_name_NSHelpPanel
|
||||
__objc_class_name_GSRepData
|
||||
__objc_class_name_NSImage
|
||||
__objc_class_name_NSImageCell
|
||||
__objc_class_name_NSImageRep
|
||||
__objc_class_name_NSImageView
|
||||
__objc_class_name_NSInputManager
|
||||
__objc_class_name_NSInputServer
|
||||
__objc_class_name_GSInterfaceStyle
|
||||
__objc_class_name_NSLayoutManager
|
||||
__objc_class_name_NSMatrix
|
||||
__objc_class_name_NSMenu
|
||||
__objc_class_name_NSMenuPanel
|
||||
__objc_class_name_GSMenuSeparator
|
||||
__objc_class_name_NSMenuItem
|
||||
__objc_class_name_NSMenuItemCell
|
||||
__objc_class_name_NSMenuView
|
||||
__objc_class_name_NSMenuWindowTitleView
|
||||
__objc_class_name_NSOpenGLContext
|
||||
__objc_class_name_NSOpenGLPixelFormat
|
||||
__objc_class_name_NSOpenGLView
|
||||
__objc_class_name_NSOpenPanel
|
||||
__objc_class_name_NSOutlineView
|
||||
__objc_class_name_NSPageLayout
|
||||
__objc_class_name_GSAlertPanel
|
||||
__objc_class_name_NSPanel
|
||||
__objc_class_name_NSMutableParagraphStyle
|
||||
__objc_class_name_NSParagraphStyle
|
||||
__objc_class_name_NSTextTab
|
||||
__objc_class_name_GSFiltered
|
||||
__objc_class_name_NSPasteboard
|
||||
__objc_class_name_NSPasteboardObjectDummy
|
||||
__objc_class_name_NSPasteboardServerDummy
|
||||
__objc_class_name_NSPopUpButton
|
||||
__objc_class_name_NSPopUpButtonCell
|
||||
__objc_class_name_NSPrintInfo
|
||||
__objc_class_name_GSEPSPrintOperation
|
||||
__objc_class_name_GSPDFPrintOperation
|
||||
__objc_class_name_GSPrintOperation
|
||||
__objc_class_name_NSPrintOperation
|
||||
__objc_class_name_NSPrintPanel
|
||||
__objc_class_name_NSPrinter
|
||||
__objc_class_name_NSProgressIndicator
|
||||
__objc_class_name_NSResponder
|
||||
__objc_class_name_NSRulerMarker
|
||||
__objc_class_name_GSRulerUnit
|
||||
__objc_class_name_NSRulerView
|
||||
__objc_class_name_NSSavePanel
|
||||
__objc_class_name_NSScreen
|
||||
__objc_class_name_NSScrollView
|
||||
__objc_class_name_NSScroller
|
||||
__objc_class_name_GSSimpleSecureLayoutManager
|
||||
__objc_class_name_NSSecureTextField
|
||||
__objc_class_name_NSSecureTextFieldCell
|
||||
__objc_class_name_NSSecureTextView
|
||||
__objc_class_name_NSSelection
|
||||
__objc_class_name_NSSlider
|
||||
__objc_class_name_NSSliderCell
|
||||
__objc_class_name_NSSound
|
||||
__objc_class_name_NSSpellChecker
|
||||
__objc_class_name_NSSpellServer
|
||||
__objc_class_name_NSSplitView
|
||||
__objc_class_name_NSStepper
|
||||
__objc_class_name_NSStepperCell
|
||||
__objc_class_name_NSTabView
|
||||
__objc_class_name_NSTabViewItem
|
||||
__objc_class_name_NSTableColumn
|
||||
__objc_class_name_NSTableHeaderCell
|
||||
__objc_class_name_NSTableHeaderView
|
||||
__objc_class_name_GSTableCornerView
|
||||
__objc_class_name_NSTableView
|
||||
__objc_class_name_NSText
|
||||
__objc_class_name_NSTextAttachment
|
||||
__objc_class_name_NSTextAttachmentCell
|
||||
__objc_class_name_NSTextContainer
|
||||
__objc_class_name_NSTextField
|
||||
__objc_class_name_NSTextFieldCell
|
||||
__objc_class_name_NSTextStorage
|
||||
__objc_class_name_NSTextView
|
||||
__objc_class_name_GSToolbarButton
|
||||
__objc_class_name_GSToolbarView
|
||||
__objc_class_name_NSToolbar
|
||||
__objc_class_name_GSToolbarCustomizeToolbarItem
|
||||
__objc_class_name_GSToolbarFlexibleSpaceItem
|
||||
__objc_class_name_GSToolbarPrintItem
|
||||
__objc_class_name_GSToolbarSeperatorItem
|
||||
__objc_class_name_GSToolbarShowColorsItem
|
||||
__objc_class_name_GSToolbarShowFontsItem
|
||||
__objc_class_name_GSToolbarSpaceItem
|
||||
__objc_class_name_NSToolbarItem
|
||||
__objc_class_name_NSView
|
||||
__objc_class_name_GSWindowView
|
||||
__objc_class_name_NSMiniWindow
|
||||
__objc_class_name_NSMiniWindowView
|
||||
__objc_class_name_NSWindow
|
||||
__objc_class_name_NSWindowController
|
||||
__objc_class_name__GSWorkspaceCenter
|
||||
__objc_class_name_NSWorkspace
|
||||
__objc_class_name_GSTheme
|
4
Version
4
Version
|
@ -5,12 +5,12 @@
|
|||
GNUSTEP_GUI_GCC=4.0.0
|
||||
|
||||
# Versions for libraries that gnustep-gui is dependent upon
|
||||
GNUSTEP_GUI_BASE=1.26.0
|
||||
GNUSTEP_GUI_BASE=1.27.0
|
||||
GNUSTEP_GUI_LIBTIFF=3.4
|
||||
|
||||
# The version number of this release.
|
||||
GNUSTEP_GUI_MAJOR_VERSION=0
|
||||
GNUSTEP_GUI_MINOR_VERSION=27
|
||||
GNUSTEP_GUI_MINOR_VERSION=28
|
||||
GNUSTEP_GUI_SUBMINOR_VERSION=0
|
||||
# numeric value should match above
|
||||
VERSION_NUMBER=027.0
|
||||
|
|
Loading…
Reference in a new issue