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

Reply via email to