ftp.nice.ch/pub/next/developer/resources/classes/MOKit.1.0.0.s.tar.gz#/MOKit_1.0.0/Headers/MOKit/MORegexTextCell.h

This is MORegexTextCell.h in view mode; [Download] [Up]

// MORegexTextCell.h
//
// by Mike Ferris
// Part of MOKit
// Copyright 1993, all rights reserved.


// ABOUT MOKit
// by Mike Ferris (mike@lorax.com)
//
// MOKit is a collection of useful and general objects.  Permission is 
// granted by the author to use MOKit in your own programs in any way 
// you see fit.  All other rights pertaining to the kit are reserved by the 
// author including the right to sell these objects as objects,  as part 
// of a LIBRARY, or as SOURCE CODE.  In plain English, I wish to retain 
// rights to these objects as objects, but allow the use of the objects 
// as pieces in a fully functional program.  Permission is also granted to 
// redistribute the source code of MOKit for FREE as long as this copyright 
// notice is left intact and unchanged.  NO WARRANTY is expressed or implied.  
// The author will under no circumstances be held responsible for ANY 
// consequences from the use of these objects.  Since you don't have to pay 
// for them, and full source is provided, I think this is perfectly fair.

// ABOUT MORegexFormCell
//
// MORegexTextCell adds entry checking by regular
// expression to TextFieldCell.  The cell keeps a list of regular
// expression pattern strings.  Ending editing in the cell
// causes the entry to be checked sequentially against the
// cell's patterns.  If a match is found the entry is accepted
// and editing ends.  If a match is not found with any of the
// patterns, the entry is not accepted and the attempt to end
// editing is aborted.  The cell beeps and reselects the text
// remaining the first responder.
// 
// The regular expression routines are (verbatim) those of
// Henry Spencer.  See the source code and README file in the HSRegex 
// directory for information on those routines.
// 
// A call to endEditing explicitly may force the editing to
// end.  Use this snippet instead (taken from the Window
// class documentation):
// 
// if ([myWindow makeFirstResponder:myWindow]) {
// 	[myWindow endEditingFor:nil];
// 	. . . 
// }
// 
// This should allow the form to keep editing if the format is
// incorrect. 
// 
// The cell's entry is checked by the method -
// (BOOL)isEntryAcceptable:(const char *)aString. 
// Whenever this method is called, if it finds a match, it
// does a little extra work.  It remembers the substrings of
// aString which matched the subexpressions of the pattern
// that it matched.  The cell can be queried for any of these
// substrings.  The method -(const char *)pieceAt:(int)index 
// gives back a pointer to the substring that matched 
// subexpression index in the pattern that was last matched.  
// Piece number zero is the substring that matched the 
// entire pattern (this may not be the whole contents of the cell). 


#import <appkit/appkit.h>

@interface MORegexTextCell:TextFieldCell
{
	List *regexStrs;
	BOOL allowEmptyString;
	int pieceCount;
	char *pieces[10];
	int matchedIndex;
	id delegate;
}

+ initialize;

+ (BOOL)isValidRegex:(const char *)str;

- initTextCell:(const char *)aString;
- initTextCell:(const char *)aString withRegex:(const char *)re;
- copyFromZone:(NXZone *)zone;

- free;

- (BOOL)isEntryAcceptable:(const char *)aString;

- (const char *)regexStr;
- setRegexStr:(const char *)re;
- (const char *)regexStrAt:(int)index;
- addRegexStr:(const char *)re;
- removeRegexStrAt:(int)index;
- (int)regexStrCount;
- regexStrList;

- (int)pieceCount;
- (const char *)pieceAt:(int)n;
- (int)matchedPatternIndex;

- (BOOL)doesAllowEmptyString;
- setAllowEmptyString:(BOOL)flag;

- delegate;
- setDelegate:obj;

- setDoubleValue:(double)aDouble;
- setFloatValue:(float)aFloat;
- setIntValue:(int)anInt;
- setStringValue:(const char *)aString;
- setStringValueNoCopy:(const char *)aString;
- setStringValueNoCopy:(char *)aString shouldFree:(BOOL)flag;


- awake;
- read:(NXTypedStream *)strm;
- write:(NXTypedStream *)strm;

- (const char *)getInspectorClassName;

@end

@interface Object(MORegexTextCellDelegate)

// The delegate gets this message after the string has passed the regular 
// expression validation.  If the string is checked for accuracy and fails 
// the form cell's regular expression tests, the delegate won't get this 
// message.  The delegate can return YES to allow the string or NO to 
// reject it.
- (BOOL)finishValidating:(const char *)aString for:sender;

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.