This is DrawPageLayout.m in view mode; [Download] [Up]
#import "draw.h" @implementation DrawPageLayout /* * PageLayout is overridden so that the user can set the margins of * the page. This is important in a Draw program where the user * typically wants to maximize the drawable area on the page. * * The accessory view is used to add the additional fields, and * pickedUnits: is overridden so that the margin is displayed in the * currently selected units. Note that the accessoryView is set * in InterfaceBuilder using the outlet mechanism! * * This can be used as an example of how to override Application Kit panels. */ - pickedUnits:sender /* * Called when the user selects different units (e.g. cm or inches). * Must update the margin fields. */ { float old, new; [self convertOldFactor:&old newFactor:&new]; [leftMargin setFloatValue:new * [leftMargin floatValue] / old]; [rightMargin setFloatValue:new * [rightMargin floatValue] / old]; [topMargin setFloatValue:new * [topMargin floatValue] / old]; [bottomMargin setFloatValue:new * [bottomMargin floatValue] / old]; return [super pickedUnits:sender]; } - readPrintInfo /* * Sets the margin fields from the Application-wide PrintInfo. */ { PrintInfo *pi; float conversion, dummy; NXCoord left, right, top, bottom; [super readPrintInfo]; pi = [NXApp printInfo]; [self convertOldFactor:&conversion newFactor:&dummy]; [pi getMarginLeft:&left right:&right top:&top bottom:&bottom]; [leftMargin setFloatValue:left * conversion]; [rightMargin setFloatValue:right * conversion]; [topMargin setFloatValue:top * conversion]; [bottomMargin setFloatValue:bottom * conversion]; return self; } - writePrintInfo /* * Sets the margin values in the Application-wide PrintInfo from * the margin fields in the panel. */ { PrintInfo *pi; float conversion, dummy; [super writePrintInfo]; pi = [NXApp printInfo]; [self convertOldFactor:&conversion newFactor:&dummy]; if (conversion) { [pi setMarginLeft:[leftMargin floatValue] / conversion right:[rightMargin floatValue] / conversion top:[topMargin floatValue] / conversion bottom:[bottomMargin floatValue] / conversion]; } return self; } /* outlet setting methods */ - setTopBotForm:anObject { [anObject setTarget:ok]; [anObject setAction:@selector(performClick:)]; [anObject setNextText:width]; topMargin = [anObject findCellWithTag:5]; bottomMargin = [anObject findCellWithTag:6]; return self; } - setSideForm:anObject { [scale setNextText:anObject]; [anObject setTarget:ok]; [anObject setAction:@selector(performClick:)]; leftMargin = [anObject findCellWithTag:3]; rightMargin = [anObject findCellWithTag:4]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.