This is Pane.m in view mode; [Download] [Up]
/* * Copyright (C) 1993 Robert Davis * * This program is free software; you can redistribute it and/or * modify it under the terms of Version 2, or any later version, of * the GNU General Public License as published by the Free Software * Foundation. */ static char RCSId[]="$Id: Pane.m,v 1.10 1993/05/18 03:55:32 davis Exp $"; #import <appkit/Application.h> #import <appkit/Matrix.h> #import <appkit/Text.h> /* Pane's can be text delegates */ #import <appkit/TextFieldCell.h> #import <objc/NXStringTable.h> #import "Pane.h" @implementation Pane - init { [super init]; icon = NULL; isCurrentPane = NO; _textChanged = NO; return self; } - free { NXZoneFree ([self zone], title); [window free]; if (view) [view free]; [stringSet free]; return [super free]; } - awakeFromNib { view = [window setContentView:[[View alloc] init]]; [self setTitle: [stringSet valueForStringKey:"title"]]; return self; } - view { return view; } - (const char *) icon { return icon; } - setTitle: (const char *) aString { NXZone *zone; NXZoneFree (zone = [self zone], title); if (aString) title = NXCopyStringBufferFromZone (aString, zone); else title = NULL; return self; } - (const char *) title { return title; } - selectControl:sender { return nil; } /* * Returns YES if the pane has changed and the view needs to be * redisplayed. */ - (BOOL)updateStatus:aStatus doc:aDoc { status = aStatus; doc = aDoc; return (aStatus && aDoc); } /* * Returns YES if the pane has changed and the view needs to be * redisplayed. */ - (BOOL)forceUpdateStatus:aStatus doc:aDoc { status = nil; doc = nil; if (isCurrentPane) return [self updateStatus:aStatus doc:aDoc]; else return NO; } - didSwapIn:sender { isCurrentPane = YES; return self; } - didSwapOut:sender { isCurrentPane = NO; return self; } - (BOOL) isCurrentPane { return isCurrentPane; } - textDidEnd:textObject endChar:(unsigned short)whyEnd { /* * Normally, a text-based control's action is sent only when * editting ends with a Return. We use this method to send the * action on Tab and Backtab, too. */ if (_textChanged && ((whyEnd == NX_TAB) || (whyEnd == NX_BACKTAB))) { id control = [textObject delegate]; Cell *editCell; /* * If the Control is a Matrix, we check to see if the Cell * being edited has an action, in which case we send it to * the Cell's target. Otherwise send the Control's action to * the Control's target. */ if ([control isKindOf:[Matrix class]] && [(editCell = [control selectedCell]) action]) [[editCell controlView] sendAction:[editCell action] to:[editCell target]]; else /* Otherwise, do the control's action */ [control sendAction:[control action] to:[control target]]; } _textChanged = NO; return self; } - (BOOL) textWillChange:textObject { _textChanged = YES; return NO; /* NO means it's okay for the text to change */ } // Shuts up the compiler about unused RCSId - (const char *) rcsid { return RCSId; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.