home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.mactech.com 2010
/
ftp.mactech.com.tar
/
ftp.mactech.com
/
macintosh-c
/
macc-carbon-demos-nonbinhex.sit
/
macc-carbon-demos-nonbinhex
/
chap15-demo
/
PrintDialogAppend.c
< prev
next >
Wrap
Text File
|
2001-06-22
|
5KB
|
165 lines
// *******************************************************************************************
// PrintDialogAppend.c
// *******************************************************************************************
// ………………………………………………………………………………………………………………………………………………………………………………………………………………………… includes
#include "CarbonPrinting.h"
// …………………………………………………………………………………………………………………………………………………………………………………………………… global variables
SInt32 gFirstAppendedItemNo;
PMItemUPP gOldItemEvaluateFunctionUPP;
extern PMDialog gPMDialog;
extern PMItemUPP gNewItemEvaluateFunctionUPP;
extern ModalFilterUPP gEventFilterUPP;
extern SInt16 gFontNumber;
extern SInt16 gFontSize;
// ******************************************************************** initialisationFunction
void initialisationFunction(PMPrintSettings printSettings,PMDialog *pmDialog)
{
OSStatus osStatus = kPMNoError;
DialogRef dialogRef;
Handle ditlHdl;
SInt16 numberOfExistingItems, numberOfMenuItems;
MenuRef menuRef;
ControlRef controlRef;
Str255 itemName;
*pmDialog = gPMDialog;
osStatus = PMGetDialogPtr(*pmDialog,&dialogRef);
if(osStatus == kPMNoError)
{
// ……………………………………………………………………………………………………………………………………………………………………………………………………… append DITL
ditlHdl = GetResource('DITL',rPrintDialogAppendDITL);
numberOfExistingItems = CountDITL(dialogRef);
AppendDITL(dialogRef,ditlHdl,appendDITLBottom);
gFirstAppendedItemNo = numberOfExistingItems + 1;
// ………………………… create font menu and attach to popup button, set current font to first item
menuRef = NewMenu(mFont,NULL);
CreateStandardFontMenu(menuRef,0,0,0,NULL);
GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo,&controlRef);
SetControlMinimum(controlRef,1);
numberOfMenuItems = CountMenuItems(menuRef);
SetControlMaximum(controlRef,numberOfMenuItems);
SetControlData(controlRef,kControlEntireControl,kControlPopupButtonMenuRefTag,
sizeof(menuRef),&menuRef);
GetMenuItemText(menuRef,1,itemName);
GetFNum(itemName,&gFontNumber);
// ………………………………………………………………… set second radio button to on state and set current font size
GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 2,&controlRef);
SetControlValue(controlRef,1);
gFontSize = 12;
// ………………………………………………………………………………………………………………………………………………………… switch fractional widths off
GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 4,&controlRef);
SetControlValue(controlRef,0);
SetFractEnable(false);
}
if(osStatus == kPMNoError)
osStatus = PMGetItemProc(*pmDialog,&gOldItemEvaluateFunctionUPP);
if(osStatus == kPMNoError)
osStatus = PMSetItemProc(*pmDialog,gNewItemEvaluateFunctionUPP);
if(osStatus == kPMNoError)
PMSetModalFilterProc(*pmDialog,gEventFilterUPP);
if(osStatus != kPMNoError)
doErrorAlert(osStatus);
}
// ******************************************************************** itemEvaluationFunction
void itemEvaluationFunction(DialogRef dialogRef,SInt16 itemHit)
{
SInt16 localizedItemNo, controlValue;
ControlRef controlRef;
MenuRef menuRef;
Str255 itemName;
localizedItemNo = itemHit - gFirstAppendedItemNo + 1;
if(localizedItemNo > 0)
{
if(localizedItemNo == iPopupButton)
{
GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo,&controlRef);
controlValue = GetControlValue(controlRef);
GetControlData(controlRef,kControlEntireControl,kControlPopupButtonMenuHandleTag,
sizeof(menuRef),(Ptr) &menuRef,NULL);
GetMenuItemText(menuRef,controlValue,itemName);
GetFNum(itemName,&gFontNumber);
}
else if(localizedItemNo >= iRadioButton10pt && localizedItemNo <= iRadioButton14pt)
{
GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 1,&controlRef);
SetControlValue(controlRef,0);
GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 2,&controlRef);
SetControlValue(controlRef,0);
GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 3,&controlRef);
SetControlValue(controlRef,0);
GetDialogItemAsControl(dialogRef,itemHit,&controlRef);
SetControlValue(controlRef,1);
if(localizedItemNo == iRadioButton10pt)
gFontSize = 10;
else if(localizedItemNo == iRadioButton12pt)
gFontSize = 12;
else if(localizedItemNo == iRadioButton14pt)
gFontSize = 14;
}
else if(localizedItemNo == iCheckboxFracWidths)
{
GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 4,&controlRef);
SetControlValue(controlRef,!GetControlValue(controlRef));
SetFractEnable(GetControlValue(controlRef));
}
}
else
{
InvokePMItemUPP(dialogRef,itemHit,gOldItemEvaluateFunctionUPP);
}
}
// ******************************************************************************* eventFilter
Boolean eventFilter(DialogRef dialogRef,EventRecord *eventStrucPtr,SInt16 *itemHit)
{
Boolean handledEvent;
GrafPtr oldPort;
handledEvent = false;
if((eventStrucPtr->what == updateEvt) &&
((WindowRef) eventStrucPtr->message != GetDialogWindow(dialogRef)))
{
doUpdate(eventStrucPtr);
}
else
{
GetPort(&oldPort);
SetPortDialogPort(dialogRef);
handledEvent = StdFilterProc(dialogRef,eventStrucPtr,itemHit);
SetPort(oldPort);
}
return handledEvent;
}
// *******************************************************************************************