diff --git a/Headers/Additions/GNUstepGUI/GSXibLoading.h b/Headers/Additions/GNUstepGUI/GSXibLoading.h new file mode 100644 index 000000000..fb0fdb306 --- /dev/null +++ b/Headers/Additions/GNUstepGUI/GSXibLoading.h @@ -0,0 +1,154 @@ +/* GSXibLoading + + Xib (Cocoa XML) model loader + + Copyright (C) 2010 Free Software Foundation, Inc. + + Written by: Fred Kiefer + Created: March 2010 + Refactored slightly by: Gregory Casamento + Created: May 2010 + + This file is part of the GNUstep Base Library. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. +*/ + +#ifndef _GNUstep_H_GSXibLoading +#define _GNUstep_H_GSXibLoading + +#import +#import + +@class NSString, NSDictionary, NSArray, NSMutableDictionary, NSMutableArray; + +// Hack: This allows the class name FirstResponder in NSCustomObject and +// correctly returns nil as the corresponding object. +@interface FirstResponder: NSObject +{ +} +@end + +@interface IBClassDescriptionSource: NSObject +{ + NSString *majorKey; + NSString *minorKey; +} +@end + +@interface IBPartialClassDescription: NSObject +{ + NSString *className; + NSString *superclassName; + NSMutableDictionary *actions; + NSMutableDictionary *outlets; + IBClassDescriptionSource *sourceIdentifier; +} +@end + +@interface IBClassDescriber: NSObject +{ + NSMutableArray *referencedPartialClassDescriptions; +} +@end + +@interface IBConnection: NSObject +{ + NSString *label; + id source; + id destination; +} +- (id) nibInstantiate; +- (void) establishConnection; +@end + +@interface IBActionConnection: IBConnection +{ +} +@end + +@interface IBOutletConnection: IBConnection +{ +} +@end + +@interface IBConnectionRecord: NSObject +{ + IBConnection *connection; + int connectionID; +} +@end + +@interface IBObjectRecord: NSObject +{ + int objectID; + id object; + id children; + id parent; +} +- (id) object; +@end + +@interface IBMutableOrderedSet: NSObject +{ + NSArray *orderedObjects; +} +- (NSArray *)orderedObjects; +@end + +@interface IBObjectContainer: NSObject +{ + NSMutableArray *connectionRecords; + IBMutableOrderedSet *objectRecords; + NSMutableDictionary *flattenedProperties; + NSMutableDictionary *unlocalizedProperties; + id activeLocalization; + NSMutableDictionary *localizations; + id sourceID; + int maxID; +} +- (id) nibInstantiate; +- (NSEnumerator *) objectRecordEnumerator; +@end + +@interface GSXibElement: NSObject +{ + NSString *type; + NSDictionary *attributes; + NSString *value; + NSMutableDictionary *elements; + NSMutableArray *values; +} +- (NSString*) type; +- (NSString*) value; +- (NSDictionary*) elements; +- (NSArray*) values; +- (void) addElement: (GSXibElement*)element; +- (void) setElement: (GSXibElement*)element forKey: (NSString*)key; +- (void) setValue: (NSString*)text; +- (NSString*) attributeForKey: (NSString*)key; +- (GSXibElement*) elementForKey: (NSString*)key; +@end + +@interface GSXibKeyedUnarchiver: NSKeyedUnarchiver +{ + NSMutableDictionary *objects; + NSMutableArray *stack; + GSXibElement *currentElement; + NSMutableDictionary *decoded; +} +@end + +#endif diff --git a/Source/GSXibLoader.m b/Source/GSXibLoader.m index d7b7ee350..e6ab4558d 100644 --- a/Source/GSXibLoader.m +++ b/Source/GSXibLoader.m @@ -42,18 +42,12 @@ #import "AppKit/NSNibLoading.h" #import "GNUstepGUI/GSModelLoaderFactory.h" #import "GNUstepGUI/GSNibLoading.h" +#import "GNUstepGUI/GSXibLoading.h" @interface NSApplication (NibCompatibility) - (void) _setMainMenu: (NSMenu*)aMenu; @end -// Hack: This allows the class name FirstResponder in NSCustomObject and -// correctly returns nil as the corresponding object. -@interface FirstResponder: NSObject -{ -} -@end - @implementation FirstResponder + (id) allocWithZone: (NSZone*)zone @@ -63,13 +57,6 @@ @end -@interface IBClassDescriptionSource: NSObject -{ - NSString *majorKey; - NSString *minorKey; -} -@end - @implementation IBClassDescriptionSource - (id) initWithCoder: (NSCoder*)coder @@ -103,16 +90,6 @@ @end -@interface IBPartialClassDescription: NSObject -{ - NSString *className; - NSString *superclassName; - NSMutableDictionary *actions; - NSMutableDictionary *outlets; - IBClassDescriptionSource *sourceIdentifier; -} -@end - @implementation IBPartialClassDescription - (id) initWithCoder: (NSCoder*)coder @@ -161,12 +138,6 @@ @end -@interface IBClassDescriber: NSObject -{ - NSMutableArray *referencedPartialClassDescriptions; -} -@end - @implementation IBClassDescriber - (id) initWithCoder: (NSCoder*)coder @@ -195,16 +166,6 @@ @end -@interface IBConnection: NSObject -{ - NSString *label; - id source; - id destination; -} -- (id) nibInstantiate; -- (void) establishConnection; -@end - @implementation IBConnection - (id) initWithCoder: (NSCoder*)coder @@ -266,11 +227,6 @@ @end -@interface IBActionConnection: IBConnection -{ -} -@end - @implementation IBActionConnection - (void) establishConnection @@ -283,11 +239,6 @@ @end -@interface IBOutletConnection: IBConnection -{ -} -@end - @implementation IBOutletConnection - (void) establishConnection @@ -337,13 +288,6 @@ @end -@interface IBConnectionRecord: NSObject -{ - IBConnection *connection; - int connectionID; -} -@end - @implementation IBConnectionRecord - (id) initWithCoder: (NSCoder*)coder @@ -387,16 +331,6 @@ @end -@interface IBObjectRecord: NSObject -{ - int objectID; - id object; - id children; - id parent; -} -- (id) object; -@end - @implementation IBObjectRecord - (id) initWithCoder: (NSCoder*)coder @@ -444,13 +378,6 @@ @end -@interface IBMutableOrderedSet: NSObject -{ - NSArray *orderedObjects; -} -- (NSArray *)orderedObjects; -@end - @implementation IBMutableOrderedSet - (id) initWithCoder: (NSCoder*)coder { @@ -482,21 +409,6 @@ } @end -@interface IBObjectContainer: NSObject -{ - NSMutableArray *connectionRecords; - IBMutableOrderedSet *objectRecords; - NSMutableDictionary *flattenedProperties; - NSMutableDictionary *unlocalizedProperties; - id activeLocalization; - NSMutableDictionary *localizations; - id sourceID; - int maxID; -} -- (id) nibInstantiate; -- (NSEnumerator *) objectRecordEnumerator; -@end - @implementation IBObjectContainer - (id) initWithCoder:(NSCoder *)coder @@ -562,37 +474,6 @@ @end - - -@interface GSXibElement: NSObject -{ - NSString *type; - NSDictionary *attributes; - NSString *value; - NSMutableDictionary *elements; - NSMutableArray *values; -} -- (NSString*) type; -- (NSString*) value; -- (NSDictionary*) elements; -- (NSArray*) values; -- (void) addElement: (GSXibElement*)element; -- (void) setElement: (GSXibElement*)element forKey: (NSString*)key; -- (void) setValue: (NSString*)text; -- (NSString*) attributeForKey: (NSString*)key; -- (GSXibElement*) elementForKey: (NSString*)key; -@end - -@interface GSXibKeyedUnarchiver: NSKeyedUnarchiver -{ - NSMutableDictionary *objects; - NSMutableArray *stack; - GSXibElement *currentElement; - NSMutableDictionary *decoded; -} - -@end - @interface GSXibLoader: GSModelLoader { }