This is PageMargins.m in view mode; [Download] [Up]
/* -------------------------------------------------------------------
#import <appkit/PageLayout.h>
RDR, Inc.
Objective-C source file for the class PageMargins
COPYRIGHT (C), 1991, RDR, Inc.
ALL RIGHTS RESERVED.
Responsible: Approved:
RDR:Ernest Prabhakar
Date: Rev:
1991-Jun-28 ___
PageMargins
1. Introduction
* PageLayout is overridden so that the user can set the margins of
* the page. This is important in a Drawing 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 accesory is
* |built in AppWithDoc|
*
* This can be used as an example of how to override Application Kit panels.
Stolen almost in entirety from the Draw Example
2. Revision History
___ The starting point. Ernest Prabhakar/1991-Jun-28
3. Source Code
------------------------------------------------------------------- */
/* ------------------------- Import files ------------------------- */
/* ------------------------ Classes used ------------------------ */
#import <appkit/Application.h>
#import <appkit/Matrix.h>
#import <appkit/PrintInfo.h>
/* ---------------------- Class variables ----------------------- */
/*====================================================================
Implementation of class PageMargins
====================================================================*/
#import "PageMargins.h"
@implementation PageMargins : PageLayout
{
id leftMargin;
id rightMargin;
id topMargin;
id bottomMargin;
}
/*====================================================================
State Variables
====================================================================*/
/*--------------------------------------------------------------------
|-setTopBotForm:anObject| Set Top and Bottom Margin Fields
Returns self.
Ernest Prabhakar/1991-Jun-28
--------------------------------------------------------------------*/
-setTopBotForm:anObject
{
[anObject setTarget:ok];
[anObject setAction:@selector(performClick:)];
[anObject setNextText:width];
topMargin = [anObject findCellWithTag:5];
bottomMargin = [anObject findCellWithTag:6];
return self;
}
/*--------------------------------------------------------------------
|-setSideForm:anObject| Set Side Margin Fields
Returns self.
Ernest Prabhakar/1991-Jun-28
--------------------------------------------------------------------*/
-setSideForm:anObject
{
[scale setNextText:anObject];
[anObject setTarget:ok];
[anObject setAction:@selector(performClick:)];
leftMargin = [anObject findCellWithTag:3];
rightMargin = [anObject findCellWithTag:4];
return self;
}
/*====================================================================
Action Methods
====================================================================*/
/*--------------------------------------------------------------------
|-pickedUnits:sender|
* Called when the user selects different units (e.g. cm or inches).
* Must update the margin fields.
Returns self.
Ernest Prabhakar/1991-Jun-28
--------------------------------------------------------------------*/
-pickedUnits:sender
{
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];
}
/*====================================================================
Exchange Margins Data
====================================================================*/
/*--------------------------------------------------------------------
|-readPrintInfo| Set the fields from the current Doc.
* Sets the margin fields from the Application-wide PrintInfo.
Returns self.
Ernest Prabhakar/1991-Jun-28
--------------------------------------------------------------------*/
-readPrintInfo
{
id 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| Write to current document.
* Sets the margin values in the Application-wide PrintInfo from
* the margin fields in the panel.
Returns self.
Ernest Prabhakar/1991-Jun-28
--------------------------------------------------------------------*/
-writePrintInfo
{
id 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;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.