mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-21 07:21:31 +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
89715a53c1
commit
6eaff61772
4 changed files with 101 additions and 29 deletions
|
@ -3,6 +3,9 @@
|
|||
|
||||
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 library is free software; you can redistribute it and/or
|
||||
|
@ -22,11 +25,27 @@
|
|||
Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#import <Foundation/NSString.h>
|
||||
#import "AppKit/NSKeyValueBinding.h"
|
||||
#import "AppKit/NSNib.h"
|
||||
#import "AppKit/NSViewController.h"
|
||||
|
||||
|
||||
@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
|
||||
{
|
||||
DESTROY(_nibName);
|
||||
|
@ -41,17 +60,6 @@
|
|||
[super dealloc];
|
||||
}
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil
|
||||
bundle:(NSBundle *)nibBundleOrNil
|
||||
{
|
||||
[super init];
|
||||
|
||||
ASSIGN(_nibName, nibNameOrNil);
|
||||
ASSIGN(_nibBundle, nibBundleOrNil);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)setRepresentedObject:(id)representedObject
|
||||
{
|
||||
ASSIGN(_representedObject, representedObject);
|
||||
|
@ -74,6 +82,10 @@
|
|||
|
||||
- (NSView *)view
|
||||
{
|
||||
if (view == nil && !_vcFlags.nib_is_loaded)
|
||||
{
|
||||
[self loadView];
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
|
@ -82,6 +94,34 @@
|
|||
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
|
||||
{
|
||||
return _nibName;
|
||||
|
@ -92,16 +132,44 @@
|
|||
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
|
||||
didCommitSelector:(SEL)didCommitSelector
|
||||
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
|
||||
{
|
||||
// Loop over all elements of _editors
|
||||
[self notImplemented: _cmd];
|
||||
|
||||
return NO;
|
||||
|
@ -109,8 +177,8 @@
|
|||
|
||||
- (void)discardEditing
|
||||
{
|
||||
// Loop over all elements of _editors
|
||||
[self notImplemented: _cmd];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue