mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-06-03 15:20:42 +00:00
Add loading of NIB to NSViewController.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@31940 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
c1c4e6e3ea
commit
2f59a77d9f
4 changed files with 101 additions and 29 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2011-01-24 Fred Kiefer <FredKiefer@gmx.de>
|
||||||
|
|
||||||
|
* Headers/AppKit/NSViewController.h,
|
||||||
|
* Source/NSViewController.m: Add loading of NIB.
|
||||||
|
* Headers/AppKit/NSObjectController.h: Use version constant names.
|
||||||
|
|
||||||
2011-01-24 Wolfgang Lux <wolfgang.lux@gmail.com>
|
2011-01-24 Wolfgang Lux <wolfgang.lux@gmail.com>
|
||||||
|
|
||||||
* Source/NSWindow.m (-setFrameFromString:, -stringWithSavedFrame):
|
* Source/NSWindow.m (-setFrameFromString:, -stringWithSavedFrame):
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#import <AppKit/NSController.h>
|
#import <AppKit/NSController.h>
|
||||||
#import <AppKit/NSMenuItem.h>
|
#import <AppKit/NSMenuItem.h>
|
||||||
|
|
||||||
#if OS_API_VERSION(100300,GS_API_LATEST)
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_3,GS_API_LATEST)
|
||||||
|
|
||||||
@class NSArray;
|
@class NSArray;
|
||||||
@class NSMutableArray;
|
@class NSMutableArray;
|
||||||
|
@ -87,7 +87,7 @@
|
||||||
|
|
||||||
- (BOOL) validateMenuItem: (id <NSMenuItem>)item;
|
- (BOOL) validateMenuItem: (id <NSMenuItem>)item;
|
||||||
|
|
||||||
#if OS_API_VERSION(100400,GS_API_LATEST)
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST)
|
||||||
- (NSString*) entityNameKey;
|
- (NSString*) entityNameKey;
|
||||||
- (void) setEntityName: (NSString*)entityName;
|
- (void) setEntityName: (NSString*)entityName;
|
||||||
- (NSPredicate*) fetchPredicate;
|
- (NSPredicate*) fetchPredicate;
|
||||||
|
|
|
@ -24,12 +24,14 @@ Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
#ifndef _GNUstep_H_NSViewController
|
#ifndef _GNUstep_H_NSViewController
|
||||||
#define _GNUstep_H_NSViewController
|
#define _GNUstep_H_NSViewController
|
||||||
|
#import <GNUstepBase/GSVersionMacros.h>
|
||||||
|
|
||||||
#import <AppKit/NSNibDeclarations.h>
|
#import <AppKit/NSNibDeclarations.h>
|
||||||
#import <AppKit/NSResponder.h>
|
#import <AppKit/NSResponder.h>
|
||||||
|
|
||||||
@class NSArray, NSBundle, NSPointerArray, NSView;
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST)
|
||||||
|
|
||||||
|
@class NSArray, NSBundle, NSPointerArray, NSView;
|
||||||
|
|
||||||
@interface NSViewController : NSResponder
|
@interface NSViewController : NSResponder
|
||||||
{
|
{
|
||||||
|
@ -43,34 +45,30 @@ Boston, MA 02110-1301, USA.
|
||||||
NSPointerArray *_editors;
|
NSPointerArray *_editors;
|
||||||
id _autounbinder;
|
id _autounbinder;
|
||||||
NSString *_designNibBundleIdentifier;
|
NSString *_designNibBundleIdentifier;
|
||||||
id _reserved[2];
|
struct ___vcFlags
|
||||||
|
{
|
||||||
|
unsigned int nib_is_loaded:1;
|
||||||
|
unsigned int RESERVED:31;
|
||||||
|
} _vcFlags;
|
||||||
|
id _reserved;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (id)initWithNibName:(NSString *)nibNameOrNil
|
- (id)initWithNibName:(NSString *)nibNameOrNil
|
||||||
bundle:(NSBundle *)nibBundleOrNil;
|
bundle:(NSBundle *)nibBundleOrNil;
|
||||||
|
|
||||||
- (void)setRepresentedObject:(id)representedObject;
|
- (void)setRepresentedObject:(id)representedObject;
|
||||||
|
|
||||||
- (id)representedObject;
|
- (id)representedObject;
|
||||||
|
|
||||||
- (void)setTitle:(NSString *)title;
|
- (void)setTitle:(NSString *)title;
|
||||||
- (NSString *)title;
|
- (NSString *)title;
|
||||||
|
|
||||||
|
- (void)setView:(NSView *)aView;
|
||||||
- (NSView *)view;
|
- (NSView *)view;
|
||||||
|
- (void)loadView;
|
||||||
|
|
||||||
- (NSString *)nibName;
|
- (NSString *)nibName;
|
||||||
- (NSBundle *)nibBundle;
|
- (NSBundle *)nibBundle;
|
||||||
|
|
||||||
- (void)setView:(NSView *)aView;
|
|
||||||
|
|
||||||
- (void)commitEditingWithDelegate:(id)delegate
|
|
||||||
didCommitSelector:(SEL)didCommitSelector
|
|
||||||
contextInfo:(void *)contextInfo;
|
|
||||||
|
|
||||||
- (BOOL)commitEditing;
|
|
||||||
- (void)discardEditing;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
#endif // OS_API_VERSION
|
||||||
#endif /* _GNUstep_H_NSViewController */
|
#endif /* _GNUstep_H_NSViewController */
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
|
|
||||||
Copyright (C) 2010 Free Software Foundation, Inc.
|
Copyright (C) 2010 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
Author: David Wetzel <dave@turbocat.de>
|
||||||
|
Date: 2010
|
||||||
|
|
||||||
This file is part of the GNUstep GUI Library.
|
This file is part of the GNUstep GUI Library.
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
|
@ -22,11 +25,27 @@
|
||||||
Boston, MA 02110-1301, USA.
|
Boston, MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#import <Foundation/NSString.h>
|
||||||
|
#import "AppKit/NSKeyValueBinding.h"
|
||||||
|
#import "AppKit/NSNib.h"
|
||||||
#import "AppKit/NSViewController.h"
|
#import "AppKit/NSViewController.h"
|
||||||
|
|
||||||
|
|
||||||
@implementation NSViewController
|
@implementation NSViewController
|
||||||
|
|
||||||
|
- (id)initWithNibName:(NSString *)nibNameOrNil
|
||||||
|
bundle:(NSBundle *)nibBundleOrNil
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (self == nil)
|
||||||
|
return nil;
|
||||||
|
|
||||||
|
ASSIGN(_nibName, nibNameOrNil);
|
||||||
|
ASSIGN(_nibBundle, nibBundleOrNil);
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
- (void) dealloc
|
- (void) dealloc
|
||||||
{
|
{
|
||||||
DESTROY(_nibName);
|
DESTROY(_nibName);
|
||||||
|
@ -41,17 +60,6 @@
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id)initWithNibName:(NSString *)nibNameOrNil
|
|
||||||
bundle:(NSBundle *)nibBundleOrNil
|
|
||||||
{
|
|
||||||
[super init];
|
|
||||||
|
|
||||||
ASSIGN(_nibName, nibNameOrNil);
|
|
||||||
ASSIGN(_nibBundle, nibBundleOrNil);
|
|
||||||
|
|
||||||
return self;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setRepresentedObject:(id)representedObject
|
- (void)setRepresentedObject:(id)representedObject
|
||||||
{
|
{
|
||||||
ASSIGN(_representedObject, representedObject);
|
ASSIGN(_representedObject, representedObject);
|
||||||
|
@ -74,6 +82,10 @@
|
||||||
|
|
||||||
- (NSView *)view
|
- (NSView *)view
|
||||||
{
|
{
|
||||||
|
if (view == nil && !_vcFlags.nib_is_loaded)
|
||||||
|
{
|
||||||
|
[self loadView];
|
||||||
|
}
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,6 +94,34 @@
|
||||||
view = aView;
|
view = aView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)loadView
|
||||||
|
{
|
||||||
|
NSNib *nib;
|
||||||
|
|
||||||
|
if (_vcFlags.nib_is_loaded)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
nib = [[NSNib alloc] initWithNibNamed: [self nibName]
|
||||||
|
bundle: [self nibBundle]];
|
||||||
|
if ((nib != nil) && [nib instantiateNibWithOwner: self
|
||||||
|
topLevelObjects: &_topLevelObjects])
|
||||||
|
{
|
||||||
|
_vcFlags.nib_is_loaded = YES;
|
||||||
|
// FIXME: Need to resolve possible retain cycles here
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_nibName != nil)
|
||||||
|
{
|
||||||
|
NSLog(@"%@: could not load nib named %@.nib",
|
||||||
|
[self class], _nibName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RELEASE(nib);
|
||||||
|
}
|
||||||
|
|
||||||
- (NSString *)nibName
|
- (NSString *)nibName
|
||||||
{
|
{
|
||||||
return _nibName;
|
return _nibName;
|
||||||
|
@ -92,16 +132,44 @@
|
||||||
return _nibBundle;
|
return _nibBundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation NSViewController (NSEditorRegistration)
|
||||||
|
- (void) objectDidBeginEditing: (id)editor
|
||||||
|
{
|
||||||
|
// Add editor to _editors
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void) objectDidEndEditing: (id)editor
|
||||||
|
{
|
||||||
|
// Remove editor from _editors
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation NSViewController (NSEditor)
|
||||||
- (void)commitEditingWithDelegate:(id)delegate
|
- (void)commitEditingWithDelegate:(id)delegate
|
||||||
didCommitSelector:(SEL)didCommitSelector
|
didCommitSelector:(SEL)didCommitSelector
|
||||||
contextInfo:(void *)contextInfo
|
contextInfo:(void *)contextInfo
|
||||||
{
|
{
|
||||||
[self notImplemented: _cmd];
|
// Loop over all elements of _editors
|
||||||
|
id editor = nil;
|
||||||
|
BOOL res = [self commitEditing];
|
||||||
|
|
||||||
|
if (delegate && [delegate respondsToSelector: didCommitSelector])
|
||||||
|
{
|
||||||
|
void (*didCommit)(id, SEL, id, BOOL, void*);
|
||||||
|
|
||||||
|
didCommit = (void (*)(id, SEL, id, BOOL, void*))[delegate methodForSelector:
|
||||||
|
didCommitSelector];
|
||||||
|
didCommit(delegate, didCommitSelector, editor, res, contextInfo);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)commitEditing
|
- (BOOL)commitEditing
|
||||||
{
|
{
|
||||||
|
// Loop over all elements of _editors
|
||||||
[self notImplemented: _cmd];
|
[self notImplemented: _cmd];
|
||||||
|
|
||||||
return NO;
|
return NO;
|
||||||
|
@ -109,8 +177,8 @@
|
||||||
|
|
||||||
- (void)discardEditing
|
- (void)discardEditing
|
||||||
{
|
{
|
||||||
|
// Loop over all elements of _editors
|
||||||
[self notImplemented: _cmd];
|
[self notImplemented: _cmd];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue