This is MiscClipTextFieldInspector.m in view mode; [Download] [Up]
// // MiscClipTextFieldInspector.m -- IB inspector of MiscClipTextField(Cell) // Written and Copyright (c) 1995 by Balazs Pataki. // Version 1.0. All rights reserved. // // This notice may not be removed from this source code. // // This object is included in the MiscKit by permission from the author // and its use is governed by the MiscKit license, found in the file // "LICENSE.rtf" in the MiscKit distribution. Please refer to that file // for a list of all applicable permissions and restrictions. // // Most of the code in this inspector is borrowed form Mike Ferris's // MORegexTextCellInspector of MOKit // Mike Ferris, Copyright 1993, all rights reserved. #import "MiscClipTextFieldInspector.h" #import <misckit/MiscClipTextFieldCell.h> #import <misckit/MiscClipTextField.h> #import <misckit/MiscPathField.h> #import <objc/objc-runtime.h> #define CLASS_VERSION 0 #define CLASS_NAME "MiscClipTextFieldInspector" #define BG_NONE_TAG 0 #define BG_BLACK_TAG 1 #define BG_DKGRAY_TAG 2 #define BG_LTGRAY_TAG 3 #define BG_WHITE_TAG 4 #define TG_BLACK_TAG 0 #define TG_DKGRAY_TAG 1 #define TG_LTGRAY_TAG 2 #define TG_WHITE_TAG 3 #define ALIGN_LEFT_TAG 0 #define ALIGN_CENTER_TAG 1 #define ALIGN_RIGHT_TAG 2 #define BORDER_NONE_TAG 0 #define BORDER_LINE_TAG 1 #define BORDER_BEZEL_TAG 2 #define LEFT_TAG 0 #define RIGHT_TAG 1 #define NIB_TYPE "nib" #define NIB_NAME "MiscClipTextFieldInspector" @implementation MiscClipTextFieldInspector + initialize // Set the version. { if (self == objc_lookUpClass(CLASS_NAME)) { [self setVersion:CLASS_VERSION]; } return self; } - init // Load our nib file. { char buf[MAXPATHLEN+1]; id bundle; [super init]; // load our nib file. bundle = [NXBundle bundleForClass:[self class]]; [bundle getPath:buf forResource:NIB_NAME ofType:NIB_TYPE]; [NXApp loadNibFile:buf owner:self withNames:NO fromZone:[self zone]]; return self; } - ok:sender // set the text field-ish stuff and the allowEmptyString attribute. // The patternButtonAction takes care of the regex stuff. The // optionCheckboxAction takes care of editable, selectable, scrollable. { int bgTag = [backgroundGrayMatrix selectedTag]; int tgTag = [textGrayMatrix selectedTag]; int alTag = [alignmentMatrix selectedTag]; int boTag = [borderMatrix selectedTag]; int clTag = [clipOnMatrix selectedTag]; const char *stringVal=NULL; if (bgTag == BG_NONE_TAG) { [object setBackgroundGray:-1.0]; } else if (bgTag == BG_BLACK_TAG) { [object setBackgroundGray:NX_BLACK]; } else if (bgTag == BG_DKGRAY_TAG) { [object setBackgroundGray:NX_DKGRAY]; } else if (bgTag == BG_LTGRAY_TAG) { [object setBackgroundGray:NX_LTGRAY]; } else { [object setBackgroundGray:NX_WHITE]; } if (tgTag == TG_BLACK_TAG) { [object setTextGray:NX_BLACK]; } else if (tgTag == TG_DKGRAY_TAG) { [object setTextGray:NX_DKGRAY]; } else if (tgTag == TG_LTGRAY_TAG) { [object setTextGray:NX_LTGRAY]; } else { [object setTextGray:NX_WHITE]; } if (alTag == ALIGN_LEFT_TAG) { [object setAlignment:NX_LEFTALIGNED]; } else if (alTag == ALIGN_CENTER_TAG) { [object setAlignment:NX_CENTERED]; } else { [object setAlignment:NX_RIGHTALIGNED]; } if (boTag == BORDER_NONE_TAG) { [object setBordered:NO]; [object setBezeled:NO]; } else if (boTag == BORDER_LINE_TAG) { [object setBordered:YES]; } else { [object setBezeled:YES]; } [object setTag:[tagForm intValueAt:0]]; // My settings if (clTag == LEFT_TAG) [object setClipOnRight:NO]; else [object setClipOnRight:YES]; if (stringVal=[clipperStringField stringValue]) [object setClipperString:stringVal]; //else // [object setClipperString:"..."]; [object setClipDelimiters:[clipDelimitersField stringValue]]; return [super ok:sender]; } - revert:sender // fill in the inspector with the attributes of "object" { float bg = [object backgroundGray], tg = [object textGray]; int alignment = [object alignment]; BOOL isBordered = [object isBordered], isBezeled = [object isBezeled]; if (bg < 0) { [backgroundGrayMatrix selectCellAt:0:BG_NONE_TAG]; } else if ((bg >= 0) && (bg < .2)) { [backgroundGrayMatrix selectCellAt:0:BG_BLACK_TAG]; } else if ((bg >= .2) && (bg < .45)) { [backgroundGrayMatrix selectCellAt:0:BG_DKGRAY_TAG]; } else if ((bg >= .45) && (bg < .8)) { [backgroundGrayMatrix selectCellAt:0:BG_LTGRAY_TAG]; } else if (bg >= .8) { [backgroundGrayMatrix selectCellAt:0:BG_WHITE_TAG]; } [backgroundGrayMatrix display]; if (tg < .2) { [textGrayMatrix selectCellAt:0:TG_BLACK_TAG]; } else if ((tg >= .2) && (tg < .45)) { [textGrayMatrix selectCellAt:0:TG_DKGRAY_TAG]; } else if ((tg >= .45) && (tg < .8)) { [textGrayMatrix selectCellAt:0:TG_LTGRAY_TAG]; } else if (tg >= .8) { [textGrayMatrix selectCellAt:0:TG_WHITE_TAG]; } [textGrayMatrix display]; if (alignment == NX_LEFTALIGNED) { [alignmentMatrix selectCellAt:0:ALIGN_LEFT_TAG]; } else if (alignment == NX_CENTERED) { [alignmentMatrix selectCellAt:0:ALIGN_CENTER_TAG]; } else { [alignmentMatrix selectCellAt:0:ALIGN_RIGHT_TAG]; } [alignmentMatrix display]; if (isBezeled) { [borderMatrix selectCellAt:0:BORDER_BEZEL_TAG]; } else if (isBordered) { [borderMatrix selectCellAt:0:BORDER_LINE_TAG]; } else { [borderMatrix selectCellAt:0:BORDER_NONE_TAG]; } [tagForm setIntValue:[object tag] at:0]; // My settings if ([object doesClipOnRight]) [clipOnMatrix selectCellWithTag:RIGHT_TAG]; else [clipOnMatrix selectCellWithTag:LEFT_TAG]; [clipDelimitersField setStringValue:[[object delimiters] stringValue]]; [clipperStringField setStringValue:[[object clipper] stringValue]]; return [super revert:sender]; } - (BOOL)wantsButtons // Our inspector does not have OK or Revert buttons. { return NO; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.