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;
}
@endThese are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.