mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 06:51:44 +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
|
@ -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>
|
||||
|
||||
* Source/NSWindow.m (-setFrameFromString:, -stringWithSavedFrame):
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#import <AppKit/NSController.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 NSMutableArray;
|
||||
|
@ -87,7 +87,7 @@
|
|||
|
||||
- (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;
|
||||
- (void) setEntityName: (NSString*)entityName;
|
||||
- (NSPredicate*) fetchPredicate;
|
||||
|
|
|
@ -24,12 +24,14 @@ Boston, MA 02110-1301, USA.
|
|||
|
||||
#ifndef _GNUstep_H_NSViewController
|
||||
#define _GNUstep_H_NSViewController
|
||||
#import <GNUstepBase/GSVersionMacros.h>
|
||||
|
||||
#import <AppKit/NSNibDeclarations.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
|
||||
{
|
||||
|
@ -43,34 +45,30 @@ Boston, MA 02110-1301, USA.
|
|||
NSPointerArray *_editors;
|
||||
id _autounbinder;
|
||||
NSString *_designNibBundleIdentifier;
|
||||
id _reserved[2];
|
||||
struct ___vcFlags
|
||||
{
|
||||
unsigned int nib_is_loaded:1;
|
||||
unsigned int RESERVED:31;
|
||||
} _vcFlags;
|
||||
id _reserved;
|
||||
}
|
||||
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil
|
||||
bundle:(NSBundle *)nibBundleOrNil;
|
||||
|
||||
- (void)setRepresentedObject:(id)representedObject;
|
||||
|
||||
- (id)representedObject;
|
||||
|
||||
- (void)setTitle:(NSString *)title;
|
||||
- (NSString *)title;
|
||||
|
||||
- (void)setView:(NSView *)aView;
|
||||
- (NSView *)view;
|
||||
- (void)loadView;
|
||||
|
||||
- (NSString *)nibName;
|
||||
- (NSBundle *)nibBundle;
|
||||
|
||||
- (void)setView:(NSView *)aView;
|
||||
|
||||
- (void)commitEditingWithDelegate:(id)delegate
|
||||
didCommitSelector:(SEL)didCommitSelector
|
||||
contextInfo:(void *)contextInfo;
|
||||
|
||||
- (BOOL)commitEditing;
|
||||
- (void)discardEditing;
|
||||
|
||||
@end
|
||||
|
||||
#endif // OS_API_VERSION
|
||||
#endif /* _GNUstep_H_NSViewController */
|
||||
|
|
|
@ -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…
Reference in a new issue