diff --git a/ChangeLog b/ChangeLog index 4b5023c96..b6f308bb2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2010-03-20 Fred Kiefer + + * gui/Headers/AppKit/NSNib.h, + * gui/Headers/AppKit/NSNibConnector.h, + * gui/Headers/AppKit/NSNibLoading.h, + * gui/Headers/Additions/GNUstepGUI/GSModelLoaderFactory.h, + * gui/Headers/Additions/GNUstepGUI/GSInstantiator.h, + * gui/Headers/Additions/GNUstepGUI/GSNibLoading.h, + * gui/Source/GSXibLoader.m, + * gui/Source/GSNibLoader.m, + * gui/Source/GSNibLoading.m, + * gui/Source/GSModelLoaderFactory.m, + * gui/Source/NSBundleAdditions.m: Clean up includes. + * gui/Source/NSNib.m: Add loading of NIB files via URL. + 2010-03-19 Fred Kiefer * Source/NSButtonCell.m, diff --git a/Headers/Additions/GNUstepGUI/GSInstantiator.h b/Headers/Additions/GNUstepGUI/GSInstantiator.h index 89986b31e..c655b0c07 100644 --- a/Headers/Additions/GNUstepGUI/GSInstantiator.h +++ b/Headers/Additions/GNUstepGUI/GSInstantiator.h @@ -28,9 +28,8 @@ #ifndef _GNUstep_H_GSInstantiator #define _GNUstep_H_GSInstantiator -#include -#include -#include +#import +#import // instantiator @protocol GSInstantiator diff --git a/Headers/Additions/GNUstepGUI/GSModelLoaderFactory.h b/Headers/Additions/GNUstepGUI/GSModelLoaderFactory.h index 658bb535a..4baf16ae1 100644 --- a/Headers/Additions/GNUstepGUI/GSModelLoaderFactory.h +++ b/Headers/Additions/GNUstepGUI/GSModelLoaderFactory.h @@ -29,7 +29,13 @@ #ifndef _GNUstep_H_GSModelLoaderFactory #define _GNUstep_H_GSModelLoaderFactory -#include +#import +#import + +@class NSData; +@class NSDictionary; +@class NSString; +@class NSBundle; @interface GSModelLoader : NSObject + (NSString *) type; diff --git a/Headers/Additions/GNUstepGUI/GSNibLoading.h b/Headers/Additions/GNUstepGUI/GSNibLoading.h index f63739ecd..041550c14 100644 --- a/Headers/Additions/GNUstepGUI/GSNibLoading.h +++ b/Headers/Additions/GNUstepGUI/GSNibLoading.h @@ -28,23 +28,29 @@ #ifndef _GNUstep_H_GSNibCompatibility #define _GNUstep_H_GSNibCompatibility -#include +#import -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import -#include "GNUstepGUI/GSNibContainer.h" -#include "GNUstepGUI/GSInstantiator.h" +#import "GNUstepGUI/GSNibContainer.h" +#import "GNUstepGUI/GSInstantiator.h" + +@class NSDictionary; +@class NSMapTable; +@class NSMutableArray; +@class NSMutableSet; +@class NSString; // templates @protocol OSXNibTemplate diff --git a/Headers/AppKit/NSNib.h b/Headers/AppKit/NSNib.h index 184cb4752..2b4763656 100644 --- a/Headers/AppKit/NSNib.h +++ b/Headers/AppKit/NSNib.h @@ -43,8 +43,8 @@ #define _GNUstep_H_NSNib #import -#include -#include +#import +#import @class NSData; @class NSDictionary; @@ -59,6 +59,7 @@ NSData *_nibData; id _loader; NSURL *_url; + NSBundle *_bundle; } // reading the data... diff --git a/Headers/AppKit/NSNibConnector.h b/Headers/AppKit/NSNibConnector.h index 1927a3031..10f92b7b9 100644 --- a/Headers/AppKit/NSNibConnector.h +++ b/Headers/AppKit/NSNibConnector.h @@ -29,11 +29,9 @@ #define _GNUstep_H_NSNibConnector #import -#ifndef GNUSTEP -#include -#else -#include -#endif +#import + +@class NSString; @interface NSNibConnector : NSObject { diff --git a/Headers/AppKit/NSNibLoading.h b/Headers/AppKit/NSNibLoading.h index 37245ac3f..e9eda4e1f 100644 --- a/Headers/AppKit/NSNibLoading.h +++ b/Headers/AppKit/NSNibLoading.h @@ -31,14 +31,13 @@ #define _GNUstep_H_NSNibLoading #import -#include -#include -#include -#include +#import +#import +#import -@class NSString; -@class NSDictionary; -@class NSMutableDictionary; +@class NSString; +@class NSDictionary; +@class NSMutableDictionary; @interface NSObject (NSNibAwaking) diff --git a/Source/GSModelLoaderFactory.m b/Source/GSModelLoaderFactory.m index 3ba32f0ed..e1f471237 100644 --- a/Source/GSModelLoaderFactory.m +++ b/Source/GSModelLoaderFactory.m @@ -26,10 +26,15 @@ Boston, MA 02110-1301, USA. */ -#include -#include -#include "GNUstepGUI/GSModelLoaderFactory.h" -#include "GNUstepBase/GSObjCRuntime.h" +#import "config.h" +#import +#import +#import +#import +#import +#import + +#import "GNUstepGUI/GSModelLoaderFactory.h" @implementation GSModelLoader + (NSString *) type diff --git a/Source/GSNibLoader.m b/Source/GSNibLoader.m index 80805f226..568c8ba54 100644 --- a/Source/GSNibLoader.m +++ b/Source/GSNibLoader.m @@ -26,11 +26,18 @@ Boston, MA 02110-1301, USA. */ -#include -#include +#import "config.h" +#import +#import +#import +#import +#import +#import +#import +#import -#include "GNUstepGUI/GSModelLoaderFactory.h" -#include "GNUstepGUI/GSNibLoading.h" +#import "GNUstepGUI/GSModelLoaderFactory.h" +#import "GNUstepGUI/GSNibLoading.h" @interface GSNibLoader : GSModelLoader @end diff --git a/Source/GSNibLoading.m b/Source/GSNibLoading.m index 0b86719b8..c5b30fdff 100644 --- a/Source/GSNibLoading.m +++ b/Source/GSNibLoading.m @@ -29,40 +29,39 @@ Boston, MA 02110-1301, USA. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "AppKit/AppKit.h" -#include -#include "GSGuiPrivate.h" +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +// FIXME: Used for NSKeyedArchiver access. All this should be moved into base. /* * Setup for inline operation of arrays. */ #define GSI_ARRAY_RETAIN(A, X) RETAIN((X).obj) #define GSI_ARRAY_RELEASE(A, X) RELEASE((X).obj) #define GSI_ARRAY_TYPES GSUNION_OBJ -#include +#import -#include -#include +#import "GNUstepGUI/GSNibLoading.h" +#import "AppKit/NSApplication.h" +#import "AppKit/NSImage.h" +#import "AppKit/NSMenuItem.h" +#import "AppKit/NSMenuView.h" +#import "AppKit/NSScreen.h" +#import "AppKit/NSSound.h" +#import "GNUstepGUI/GSInstantiator.h" +#import "GSGuiPrivate.h" static BOOL _isInInterfaceBuilder = NO; @@ -98,7 +97,7 @@ static BOOL _isInInterfaceBuilder = NO; @interface NSMenu (NibCompatibility) - (void) _setMain: (BOOL)isMain; @end -@interface NSMenu (GNUstepPrivate) +@interface NSMenu (GNUstepPrivate) - (void) _setGeometry; @end diff --git a/Source/GSXibLoader.m b/Source/GSXibLoader.m index ae86aee2c..4271f65bc 100644 --- a/Source/GSXibLoader.m +++ b/Source/GSXibLoader.m @@ -38,6 +38,7 @@ #import #import "AppKit/NSApplication.h" +#import "AppKit/NSNibLoading.h" #import "GNUstepGUI/GSModelLoaderFactory.h" #import "GNUstepGUI/GSNibLoading.h" diff --git a/Source/NSBundleAdditions.m b/Source/NSBundleAdditions.m index 5b7ad5049..832419bc4 100644 --- a/Source/NSBundleAdditions.m +++ b/Source/NSBundleAdditions.m @@ -30,19 +30,20 @@ Boston, MA 02110-1301, USA. */ -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "AppKit/NSNibConnector.h" -#include "AppKit/NSNibLoading.h" -#include "GNUstepGUI/GSModelLoaderFactory.h" +#import "config.h" +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import "AppKit/NSNibConnector.h" +#import "AppKit/NSNibLoading.h" +#import "GNUstepGUI/GSModelLoaderFactory.h" @implementation NSNibConnector diff --git a/Source/NSNib.m b/Source/NSNib.m index d0f414a39..1a1f2ff39 100644 --- a/Source/NSNib.m +++ b/Source/NSNib.m @@ -38,23 +38,22 @@ Boston, MA 02110-1301, USA. */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#import "config.h" +#import +#import +#import +#import +#import +#import +#import +#import +#import -#include "GNUstepGUI/GSModelLoaderFactory.h" -#include "GNUstepGUI/GSGormLoading.h" -#include "GNUstepGUI/IMLoading.h" +#import "AppKit/NSNib.h" +#import "AppKit/NSNibLoading.h" +#import "GNUstepGUI/GSModelLoaderFactory.h" +#import "GNUstepGUI/GSGormLoading.h" +#import "GNUstepGUI/IMLoading.h" @implementation NSNib @@ -66,12 +65,12 @@ { NSString *newFileName = [GSModelLoaderFactory supportedModelFileAtPath: fileName]; ASSIGN(_nibData, [NSData dataWithContentsOfFile: newFileName]); - ASSIGN(_loader, [GSModelLoaderFactory modelLoaderForFileName: newFileName]); - NSDebugLog(@"Loaded data from %@...",newFileName); + ASSIGN(_loader, [GSModelLoaderFactory modelLoaderForFileType: [newFileName pathExtension]]); + NSDebugLog(@"Loaded data from %@...", newFileName); } NS_HANDLER { - NSLog(@"Exception occured while loading model: %@",[localException reason]); + NSLog(@"Exception occured while loading model: %@", [localException reason]); } NS_ENDHANDLER } @@ -118,9 +117,27 @@ { if ((self = [super init]) != nil) { - // load the nib data into memory... - _nibData = [NSData dataWithContentsOfURL: nibFileURL]; ASSIGN(_url, nibFileURL); + + if ([nibFileURL isFileURL]) + { + [self _readNibData: [nibFileURL path]]; + } + else + { + NS_DURING + { + // load the nib data into memory... + _nibData = [NSData dataWithContentsOfURL: nibFileURL]; + ASSIGN(_loader, [GSModelLoaderFactory modelLoaderForFileType: + [[nibFileURL path] pathExtension]]); + } + NS_HANDLER + { + NSLog(@"Exception occured while loading model: %@", [localException reason]); + } + NS_ENDHANDLER + } } return self; } @@ -136,6 +153,9 @@ { NSString *fileName = nil; + // Keep the bundle for resource creation + ASSIGN(_bundle, bundle); + if (bundle == nil) { bundle = [NSBundle mainBundle]; @@ -243,6 +263,7 @@ { RELEASE(_nibData); RELEASE(_loader); + TEST_RELEASE(_bundle); TEST_RELEASE(_url); [super dealloc]; }