Author: fredkiefer
Date: Sun Aug 23 19:10:39 2015
New Revision: 38919
URL: http://svn.gna.org/viewcvs/gnustep?rev=38919&view=rev
Log:
* Source/NSBundleAdditions.m,
* Source/NSNibConnector.m: Move NSNibConnector and subclasses in
separate file. Add isEqual: method from Gorm. Switch to new
libobjc runtime ivar access for NSNibOutletConnector.
* Source/GNUmakefile: Add new file NSNibConnector.m
* Source/GSXibLoader.m: Similar change to IBOutletConnection.
Replace GSMime base64 decode method with standard one.
* Source/GSImageMagickImageRep.m,
* Source/GSTheme.m: Remove unused #import.
Added:
libs/gui/trunk/Source/NSNibConnector.m
Modified:
libs/gui/trunk/ChangeLog
libs/gui/trunk/Source/GNUmakefile
libs/gui/trunk/Source/GSImageMagickImageRep.m
libs/gui/trunk/Source/GSTheme.m
libs/gui/trunk/Source/GSXibLoader.m
libs/gui/trunk/Source/NSBundleAdditions.m
Modified: libs/gui/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/trunk/ChangeLog?rev=38919&r1=38918&r2=38919&view=diff
==============================================================================
--- libs/gui/trunk/ChangeLog (original)
+++ libs/gui/trunk/ChangeLog Sun Aug 23 19:10:39 2015
@@ -1,3 +1,15 @@
+2015-08-23 Fred Kiefer <[email protected]>
+
+ * Source/NSBundleAdditions.m,
+ * Source/NSNibConnector.m: Move NSNibConnector and subclasses in
+ separate file. Add isEqual: method from Gorm. Switch to new
+ libobjc runtime ivar access for NSNibOutletConnector.
+ * Source/GNUmakefile: Add new file NSNibConnector.m
+ * Source/GSXibLoader.m: Similar change to IBOutletConnection.
+ Replace GSMime base64 decode method with standard one.
+ * Source/GSImageMagickImageRep.m,
+ * Source/GSTheme.m: Remove unused #import.
+
2015-08-23 Fred Kiefer <[email protected]>
* Source/NSInputManager.m: Add binding processing code for escape
Modified: libs/gui/trunk/Source/GNUmakefile
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/trunk/Source/GNUmakefile?rev=38919&r1=38918&r2=38919&view=diff
==============================================================================
--- libs/gui/trunk/Source/GNUmakefile (original)
+++ libs/gui/trunk/Source/GNUmakefile Sun Aug 23 19:10:39 2015
@@ -121,6 +121,7 @@
NSMovie.m \
NSMovieView.m \
NSNib.m \
+NSNibConnector.m \
NSNibBindingConnector.m \
NSNibAXAttributeConnector.m \
NSNibAXRelationshipConnector.m \
Modified: libs/gui/trunk/Source/GSImageMagickImageRep.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/trunk/Source/GSImageMagickImageRep.m?rev=38919&r1=38918&r2=38919&view=diff
==============================================================================
--- libs/gui/trunk/Source/GSImageMagickImageRep.m (original)
+++ libs/gui/trunk/Source/GSImageMagickImageRep.m Sun Aug 23 19:10:39 2015
@@ -31,10 +31,10 @@
#import <Foundation/NSArray.h>
#import <Foundation/NSAffineTransform.h>
#import <Foundation/NSCoder.h>
+#import <Foundation/NSDebug.h>
#import <Foundation/NSData.h>
#import <Foundation/NSTask.h>
#import <Foundation/NSProcessInfo.h>
-#import <GNUstepBase/NSDebug+GNUstepBase.h>
#import "AppKit/NSBitmapImageRep.h"
#import "AppKit/NSGraphics.h"
#import "AppKit/NSPasteboard.h"
Modified: libs/gui/trunk/Source/GSTheme.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/trunk/Source/GSTheme.m?rev=38919&r1=38918&r2=38919&view=diff
==============================================================================
--- libs/gui/trunk/Source/GSTheme.m (original)
+++ libs/gui/trunk/Source/GSTheme.m Sun Aug 23 19:10:39 2015
@@ -39,7 +39,6 @@
#import <Foundation/NSPathUtilities.h>
#import <Foundation/NSSet.h>
#import <Foundation/NSUserDefaults.h>
-#import "GNUstepBase/GSObjCRuntime.h"
#import "GNUstepGUI/GSTheme.h"
#import "AppKit/NSApplication.h"
#import "AppKit/NSButtonCell.h"
Modified: libs/gui/trunk/Source/GSXibLoader.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/trunk/Source/GSXibLoader.m?rev=38919&r1=38918&r2=38919&view=diff
==============================================================================
--- libs/gui/trunk/Source/GSXibLoader.m (original)
+++ libs/gui/trunk/Source/GSXibLoader.m Sun Aug 23 19:10:39 2015
@@ -38,7 +38,6 @@
#import <Foundation/NSXMLParser.h>
#import <Foundation/NSXMLDocument.h>
#import <Foundation/NSXMLElement.h>
-#import <GNUstepBase/GSMime.h>
#import "AppKit/NSApplication.h"
#import "AppKit/NSNib.h"
@@ -330,20 +329,18 @@
}
else
{
- const char *nam = [label cString];
- const char *type;
- unsigned int size;
- int offset;
+ /*
+ * We cannot use the KVC mechanism here, as this would always
retain _dst
+ * and it could also affect _setXXX methods and _XXX ivars that
aren't
+ * affected by the Cocoa code.
+ */
+ const char *name = [label cString];
+ Class class = object_getClass(source);
+ Ivar ivar = class_getInstanceVariable(class, name);
- /*
- * Use the GNUstep additional function to set the instance
- * variable directly.
- * FIXME - need some way to do this for libFoundation and
- * Foundation based systems.
- */
- if (GSObjCFindVariable(source, nam, &type, &size, &offset))
- {
- GSObjCSetVariable(source, offset, size, (void*)&destination);
+ if (ivar != 0)
+ {
+ object_setIvar(source, ivar, destination);
}
}
}
@@ -1583,10 +1580,11 @@
if ([type isEqualToString: @"base64-UTF8"])
{
- NSData *d = [new dataUsingEncoding: NSASCIIStringEncoding];
- d = [GSMimeDocument decodeBase64: d];
+ NSData *d = [[NSData alloc] initWithBase64EncodedString: new
+ options: 0];
new = AUTORELEASE([[NSString alloc] initWithData: d
encoding:
NSUTF8StringEncoding]);
+ RELEASE(d);
}
// empty strings are not nil!
@@ -1697,9 +1695,8 @@
}
else if ([@"bytes" isEqualToString: elementName])
{
- id new = [[element value] dataUsingEncoding: NSASCIIStringEncoding
- allowLossyConversion: NO];
- new = [GSMimeDocument decodeBase64: new];
+ id new = AUTORELEASE([[NSData alloc] initWithBase64EncodedString:
[element value]
+ options: 0]);
if (objID != nil)
[decoded setObject: new forKey: objID];
Modified: libs/gui/trunk/Source/NSBundleAdditions.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/trunk/Source/NSBundleAdditions.m?rev=38919&r1=38918&r2=38919&view=diff
==============================================================================
--- libs/gui/trunk/Source/NSBundleAdditions.m (original)
+++ libs/gui/trunk/Source/NSBundleAdditions.m Sun Aug 23 19:10:39 2015
@@ -33,199 +33,15 @@
#import "config.h"
#import <Foundation/NSArray.h>
#import <Foundation/NSBundle.h>
-#import <Foundation/NSCoder.h>
#import <Foundation/NSDebug.h>
#import <Foundation/NSDictionary.h>
#import <Foundation/NSEnumerator.h>
-#import <Foundation/NSException.h>
#import <Foundation/NSString.h>
#import <Foundation/NSURL.h>
#import <Foundation/NSUserDefaults.h>
-#import <Foundation/NSKeyValueCoding.h>
-#import "AppKit/NSControl.h"
#import "AppKit/NSNib.h"
-#import "AppKit/NSNibConnector.h"
#import "AppKit/NSNibLoading.h"
#import "GNUstepGUI/GSModelLoaderFactory.h"
-
-@implementation NSNibConnector
-
-- (void) dealloc
-{
- RELEASE(_src);
- RELEASE(_dst);
- RELEASE(_tag);
- [super dealloc];
-}
-
-- (id) destination
-{
- return _dst;
-}
-
-- (void) encodeWithCoder: (NSCoder*)aCoder
-{
- if ([aCoder allowsKeyedCoding])
- {
- if (_src != nil)
- {
- [aCoder encodeObject: _src forKey: @"NSSource"];
- }
- if (_dst != nil)
- {
- [aCoder encodeObject: _dst forKey: @"NSDestination"];
- }
- if (_tag != nil)
- {
- [aCoder encodeObject: _tag forKey: @"NSLabel"];
- }
- }
- else
- {
- [aCoder encodeObject: _src];
- [aCoder encodeObject: _dst];
- [aCoder encodeObject: _tag];
- }
-}
-
-- (void) establishConnection
-{
-}
-
-- (id) initWithCoder: (NSCoder*)aDecoder
-{
- if ([aDecoder allowsKeyedCoding])
- {
- if ([aDecoder containsValueForKey: @"NSDestination"])
- {
- ASSIGN(_dst, [aDecoder decodeObjectForKey: @"NSDestination"]);
- }
- if ([aDecoder containsValueForKey: @"NSSource"])
- {
- ASSIGN(_src, [aDecoder decodeObjectForKey: @"NSSource"]);
- }
- if ([aDecoder containsValueForKey: @"NSLabel"])
- {
- ASSIGN(_tag, [aDecoder decodeObjectForKey: @"NSLabel"]);
- }
- }
- else
- {
- [aDecoder decodeValueOfObjCType: @encode(id) at: &_src];
- [aDecoder decodeValueOfObjCType: @encode(id) at: &_dst];
- [aDecoder decodeValueOfObjCType: @encode(id) at: &_tag];
- }
- return self;
-}
-
-- (NSString*) label
-{
- return _tag;
-}
-
-- (void) replaceObject: (id)anObject withObject: (id)anotherObject
-{
- if (_src == anObject)
- {
- ASSIGN(_src, anotherObject);
- }
- if (_dst == anObject)
- {
- ASSIGN(_dst, anotherObject);
- }
- if (_tag == anObject)
- {
- ASSIGN(_tag, anotherObject);
- }
-}
-
-- (id) source
-{
- return _src;
-}
-
-- (void) setDestination: (id)anObject
-{
- ASSIGN(_dst, anObject);
-}
-
-- (void) setLabel: (NSString*)label
-{
- ASSIGN(_tag, label);
-}
-
-- (void) setSource: (id)anObject
-{
- ASSIGN(_src, anObject);
-}
-
-- (NSString *)description
-{
- NSString *desc = [NSString stringWithFormat: @"<%@ src=%@ dst=%@ label=%@>",
- [super description],
- [self source],
- [self destination],
- [self label]];
- return desc;
-}
-@end
-
-@implementation NSNibControlConnector
-- (void) establishConnection
-{
- SEL sel = NSSelectorFromString(_tag);
-
- [_src setTarget: _dst];
- [_src setAction: sel];
-}
-@end
-
-@implementation NSNibOutletConnector
-- (void) establishConnection
-{
- NS_DURING
- {
- if (_src != nil)
- {
- NSString *selName;
- SEL sel;
-
- selName = [NSString stringWithFormat: @"set%@%@:",
- [[_tag substringToIndex: 1] uppercaseString],
- [_tag substringFromIndex: 1]];
- sel = NSSelectorFromString(selName);
-
- if (sel && [_src respondsToSelector: sel])
- {
- [_src performSelector: sel withObject: _dst];
- }
- else
- {
- const char *nam = [_tag cString];
- const char *type;
- unsigned int size;
- int offset;
-
- /*
- * Use the GNUstep additional function to set the instance
- * variable directly.
- * FIXME - need some way to do this for libFoundation and
- * Foundation based systems.
- */
- if (GSObjCFindVariable(_src, nam, &type, &size, &offset))
- {
- GSObjCSetVariable(_src, offset, size, (void*)&_dst);
- }
- }
- }
- }
- NS_HANDLER
- {
- NSLog(@"Error while establishing connection %@: %@",self,[localException
reason]);
- }
- NS_ENDHANDLER;
-}
-@end
@implementation NSBundle (NSBundleAdditions)
+ (BOOL) loadNibFile: (NSString*)fileName
Added: libs/gui/trunk/Source/NSNibConnector.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/gui/trunk/Source/NSNibConnector.m?rev=38919&view=auto
==============================================================================
--- libs/gui/trunk/Source/NSNibConnector.m (added)
+++ libs/gui/trunk/Source/NSNibConnector.m Sun Aug 23 19:10:39 2015
@@ -0,0 +1,237 @@
+/*
+ <title>NSNibConnector</title>
+
+ <abstract>Implementation of NSNibConnector and subclasses</abstract>
+
+ Copyright (C) 1999, 2015 Free Software Foundation, Inc.
+
+ Author: Richard Frith-Macdonald <[email protected]>
+ Date: 1999
+ Author: Fred Kiefer <[email protected]>
+ Date: August 2015
+
+ 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.
+*/
+
+#import "config.h"
+#import <Foundation/NSCoder.h>
+#import <Foundation/NSException.h>
+#import <Foundation/NSString.h>
+#import "AppKit/NSControl.h"
+#import "AppKit/NSNibConnector.h"
+
+@implementation NSNibConnector
+
+- (void) dealloc
+{
+ RELEASE(_src);
+ RELEASE(_dst);
+ RELEASE(_tag);
+ [super dealloc];
+}
+
+- (id) destination
+{
+ return _dst;
+}
+
+- (void) encodeWithCoder: (NSCoder*)aCoder
+{
+ if ([aCoder allowsKeyedCoding])
+ {
+ if (_src != nil)
+ {
+ [aCoder encodeObject: _src forKey: @"NSSource"];
+ }
+ if (_dst != nil)
+ {
+ [aCoder encodeObject: _dst forKey: @"NSDestination"];
+ }
+ if (_tag != nil)
+ {
+ [aCoder encodeObject: _tag forKey: @"NSLabel"];
+ }
+ }
+ else
+ {
+ [aCoder encodeObject: _src];
+ [aCoder encodeObject: _dst];
+ [aCoder encodeObject: _tag];
+ }
+}
+
+- (void) establishConnection
+{
+}
+
+- (id) initWithCoder: (NSCoder*)aDecoder
+{
+ if ([aDecoder allowsKeyedCoding])
+ {
+ if ([aDecoder containsValueForKey: @"NSDestination"])
+ {
+ ASSIGN(_dst, [aDecoder decodeObjectForKey: @"NSDestination"]);
+ }
+ if ([aDecoder containsValueForKey: @"NSSource"])
+ {
+ ASSIGN(_src, [aDecoder decodeObjectForKey: @"NSSource"]);
+ }
+ if ([aDecoder containsValueForKey: @"NSLabel"])
+ {
+ ASSIGN(_tag, [aDecoder decodeObjectForKey: @"NSLabel"]);
+ }
+ }
+ else
+ {
+ [aDecoder decodeValueOfObjCType: @encode(id) at: &_src];
+ [aDecoder decodeValueOfObjCType: @encode(id) at: &_dst];
+ [aDecoder decodeValueOfObjCType: @encode(id) at: &_tag];
+ }
+ return self;
+}
+
+- (BOOL) isEqual: (id)object
+{
+ BOOL result = NO;
+
+ if([object isKindOfClass: [NSNibConnector class]] == NO)
+ {
+ return NO;
+ }
+
+ if(self == object)
+ {
+ result = YES;
+ }
+ else if([[self source] isEqual: [object source]] &&
+ [[self destination] isEqual: [object destination]] &&
+ [[self label] isEqual: [object label]] &&
+ ([self class] == [object class]))
+ {
+ result = YES;
+ }
+ return result;
+}
+
+- (NSString*) label
+{
+ return _tag;
+}
+
+- (void) replaceObject: (id)anObject withObject: (id)anotherObject
+{
+ if (_src == anObject)
+ {
+ ASSIGN(_src, anotherObject);
+ }
+ if (_dst == anObject)
+ {
+ ASSIGN(_dst, anotherObject);
+ }
+ if (_tag == anObject)
+ {
+ ASSIGN(_tag, anotherObject);
+ }
+}
+
+- (id) source
+{
+ return _src;
+}
+
+- (void) setDestination: (id)anObject
+{
+ ASSIGN(_dst, anObject);
+}
+
+- (void) setLabel: (NSString*)label
+{
+ ASSIGN(_tag, label);
+}
+
+- (void) setSource: (id)anObject
+{
+ ASSIGN(_src, anObject);
+}
+
+- (NSString *)description
+{
+ NSString *desc = [NSString stringWithFormat: @"<%@ src=%@ dst=%@ label=%@>",
+ [super description],
+ [self source],
+ [self destination],
+ [self label]];
+ return desc;
+}
+@end
+
+@implementation NSNibControlConnector
+- (void) establishConnection
+{
+ SEL sel = NSSelectorFromString(_tag);
+
+ [_src setTarget: _dst];
+ [_src setAction: sel];
+}
+@end
+
+@implementation NSNibOutletConnector
+- (void) establishConnection
+{
+ NS_DURING
+ {
+ if (_src != nil)
+ {
+ NSString *selName;
+ SEL sel;
+
+ selName = [NSString stringWithFormat: @"set%@%@:",
+ [[_tag substringToIndex: 1] uppercaseString],
+ [_tag substringFromIndex: 1]];
+ sel = NSSelectorFromString(selName);
+
+ if (sel && [_src respondsToSelector: sel])
+ {
+ [_src performSelector: sel withObject: _dst];
+ }
+ else
+ {
+ /*
+ * We cannot use the KVC mechanism here, as this would always
retain _dst
+ * and it could also affect _setXXX methods and _XXX ivars that
aren't
+ * affected by the Cocoa code.
+ */
+ const char *name = [_tag cString];
+ Class class = object_getClass(_src);
+ Ivar ivar = class_getInstanceVariable(class, name);
+
+ if (ivar != 0)
+ {
+ object_setIvar(_src, ivar, _dst);
+ }
+ }
+ }
+ }
+ NS_HANDLER
+ {
+ NSLog(@"Error while establishing connection %@: %@", self,
[localException reason]);
+ }
+ NS_ENDHANDLER;
+}
+@end
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs