This is SD_PageLayout.m in view mode; [Download] [Up]
//============================================================================= // // Copyright (C) 1996-1997 by Paul S. McCarthy and Eric Sunshine. // Written by Paul S. McCarthy and Eric Sunshine. // All Rights Reserved. // // This notice may not be removed from this source code. // // This object is included in the MiscKit by permission from the authors // 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. // //============================================================================= //----------------------------------------------------------------------------- // SD_PageLayout.m // // Custom subclass of NeXT's appkit PageLayout panel that adds // user controls for: // // Margins // Pagination // Centering // //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // $Id: SD_PageLayout.m,v 1.1 97/01/12 15:19:08 sunshine Exp $ // $Log: SD_PageLayout.m,v $ // Revision 1.1 97/01/12 15:19:08 sunshine // v28: Page Layout // //----------------------------------------------------------------------------- #import "SD_PageLayout.h" #import <appkit/Application.h> #import <appkit/Button.h> #import <appkit/Matrix.h> #import <appkit/PrintInfo.h> #import <appkit/TextField.h> #import <objc/NXBundle.h> @implementation SD_PageLayout //----------------------------------------------------------------------------- // loadAccessoryView //----------------------------------------------------------------------------- - (void)loadAccessoryView { View* v; char buff[ FILENAME_MAX + 1 ]; [[NXBundle bundleForClass:[self class]] getPath:buff forResource:[[self class] name] ofType:"nib"]; [NXApp loadNibFile:buff owner:self withNames:NO fromZone:[self zone]]; v = [accessoryWindow setContentView:0]; [accessoryWindow close]; [accessoryWindow free]; [self setAccessoryView:v]; [[leftMarginField setTarget:ok] setAction:@selector(performClick:)]; [[rightMarginField setTarget:ok] setAction:@selector(performClick:)]; [[topMarginField setTarget:ok] setAction:@selector(performClick:)]; [[bottomMarginField setTarget:ok] setAction:@selector(performClick:)]; [bottomMarginField setNextText:[scale nextText]]; [scale setNextText:leftMarginField]; } //----------------------------------------------------------------------------- // +new //----------------------------------------------------------------------------- + (id)new { static id p = 0; if (p == 0) { p = [super new]; [p loadAccessoryView]; } return p; } //----------------------------------------------------------------------------- // + launch: //----------------------------------------------------------------------------- + (id)launch:(id)sender { [SD_PageLayout new]; [NXApp runPageLayout:sender]; return self; } //----------------------------------------------------------------------------- // pickedUnits: //----------------------------------------------------------------------------- - (id)pickedUnits:(id)sender { float old_factor, new_factor, scaler; [self convertOldFactor:&old_factor newFactor:&new_factor]; scaler = new_factor / old_factor; [leftMarginField setFloatValue: [leftMarginField floatValue] * scaler]; [rightMarginField setFloatValue: [rightMarginField floatValue] * scaler]; [topMarginField setFloatValue: [topMarginField floatValue] * scaler]; [bottomMarginField setFloatValue:[bottomMarginField floatValue] * scaler]; return [super pickedUnits:sender]; } //----------------------------------------------------------------------------- // pagination_to_slot //----------------------------------------------------------------------------- static int pagination_to_slot( int pg ) { int slot = 1; if (pg == NX_FITPAGINATION) slot = 0; else if (pg == NX_CLIPPAGINATION) slot = 2; return slot; } //----------------------------------------------------------------------------- // slot_to_pagination //----------------------------------------------------------------------------- static int slot_to_pagination( int slot ) { int pg = NX_AUTOPAGINATION; if (slot == 0) pg = NX_FITPAGINATION; else if (slot == 2) pg = NX_CLIPPAGINATION; return pg; } //----------------------------------------------------------------------------- // readPrintInfo //----------------------------------------------------------------------------- - (id)readPrintInfo { int pg_row, pg_col; float left,right,top,bottom; float old_factor, new_factor; id rc = [super readPrintInfo]; PrintInfo* pinfo = [NXApp printInfo]; [pinfo getMarginLeft:&left right:&right top:&top bottom:&bottom]; [self convertOldFactor:&old_factor newFactor:&new_factor]; [leftMarginField setFloatValue:new_factor*left]; [rightMarginField setFloatValue:new_factor*right]; [topMarginField setFloatValue:new_factor*top]; [bottomMarginField setFloatValue:new_factor*bottom]; [centerMatrix selectCellAt:(int)[pinfo isVertCentered] :(int)[pinfo isHorizCentered]]; pg_row = pagination_to_slot( [pinfo vertPagination] ); pg_col = pagination_to_slot( [pinfo horizPagination] ); [paginationMatrix selectCellAt:pg_row:pg_col]; return rc; } //----------------------------------------------------------------------------- // writePrintInfo //----------------------------------------------------------------------------- - (id)writePrintInfo { id rc = [super writePrintInfo]; PrintInfo* pinfo = [NXApp printInfo]; float old_factor, new_factor; [self convertOldFactor:&old_factor newFactor:&new_factor]; [pinfo setMarginLeft:[leftMarginField floatValue] / old_factor right:[rightMarginField floatValue] / old_factor top:[topMarginField floatValue] / old_factor bottom:[bottomMarginField floatValue] / old_factor]; [pinfo setVertCentered: [centerMatrix selectedRow]]; [pinfo setHorizCentered:[centerMatrix selectedCol]]; [pinfo setHorizPagination: slot_to_pagination([paginationMatrix selectedCol])]; [pinfo setVertPagination: slot_to_pagination([paginationMatrix selectedRow])]; return rc; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.