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 >
Text File  |  2001-06-22  |  5KB  |  165 lines

  1. // *******************************************************************************************
  2. // PrintDialogAppend.c
  3. // *******************************************************************************************
  4.  
  5. // ………………………………………………………………………………………………………………………………………………………………………………………………………………………… includes
  6.  
  7. #include "CarbonPrinting.h"
  8.  
  9. // …………………………………………………………………………………………………………………………………………………………………………………………………… global variables
  10.  
  11. SInt32        gFirstAppendedItemNo;
  12. PMItemUPP    gOldItemEvaluateFunctionUPP;
  13.  
  14. extern PMDialog                gPMDialog;
  15. extern PMItemUPP            gNewItemEvaluateFunctionUPP;
  16. extern ModalFilterUPP    gEventFilterUPP;
  17. extern SInt16                    gFontNumber;
  18. extern SInt16                    gFontSize;
  19.  
  20. // ******************************************************************** initialisationFunction
  21.  
  22. void  initialisationFunction(PMPrintSettings printSettings,PMDialog *pmDialog)
  23. {
  24.     OSStatus        osStatus = kPMNoError;
  25.     DialogRef        dialogRef;
  26.     Handle            ditlHdl;
  27.     SInt16            numberOfExistingItems, numberOfMenuItems;
  28.     MenuRef            menuRef;
  29.     ControlRef    controlRef;
  30.     Str255            itemName;
  31.  
  32.     *pmDialog = gPMDialog;
  33.  
  34.     osStatus = PMGetDialogPtr(*pmDialog,&dialogRef);
  35.  
  36.     if(osStatus == kPMNoError)
  37.     {
  38.         // ……………………………………………………………………………………………………………………………………………………………………………………………………… append DITL
  39.  
  40.         ditlHdl = GetResource('DITL',rPrintDialogAppendDITL);
  41.         numberOfExistingItems = CountDITL(dialogRef);
  42.         AppendDITL(dialogRef,ditlHdl,appendDITLBottom);
  43.         gFirstAppendedItemNo = numberOfExistingItems + 1;
  44.  
  45.         // ………………………… create font menu and attach to popup button, set current font to first item
  46.  
  47.         menuRef = NewMenu(mFont,NULL);
  48.         CreateStandardFontMenu(menuRef,0,0,0,NULL);
  49.         GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo,&controlRef);
  50.         SetControlMinimum(controlRef,1);
  51.         numberOfMenuItems = CountMenuItems(menuRef);
  52.         SetControlMaximum(controlRef,numberOfMenuItems);
  53.         SetControlData(controlRef,kControlEntireControl,kControlPopupButtonMenuRefTag,
  54.                                      sizeof(menuRef),&menuRef);
  55.         GetMenuItemText(menuRef,1,itemName);
  56.         GetFNum(itemName,&gFontNumber);
  57.  
  58.         // ………………………………………………………………… set second radio button to on state and set current font size
  59.  
  60.         GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 2,&controlRef);
  61.         SetControlValue(controlRef,1);
  62.         gFontSize = 12;
  63.  
  64.         // ………………………………………………………………………………………………………………………………………………………… switch fractional widths off
  65.  
  66.         GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 4,&controlRef);
  67.         SetControlValue(controlRef,0);
  68.         SetFractEnable(false);
  69.     }
  70.  
  71.     if(osStatus == kPMNoError)
  72.         osStatus = PMGetItemProc(*pmDialog,&gOldItemEvaluateFunctionUPP);
  73.     if(osStatus == kPMNoError)
  74.         osStatus = PMSetItemProc(*pmDialog,gNewItemEvaluateFunctionUPP);
  75.  
  76.     if(osStatus == kPMNoError)
  77.         PMSetModalFilterProc(*pmDialog,gEventFilterUPP);
  78.  
  79.     if(osStatus != kPMNoError)
  80.         doErrorAlert(osStatus);
  81. }
  82.  
  83. // ******************************************************************** itemEvaluationFunction
  84.  
  85. void  itemEvaluationFunction(DialogRef dialogRef,SInt16 itemHit)
  86. {
  87.     SInt16            localizedItemNo, controlValue;
  88.     ControlRef    controlRef;
  89.     MenuRef            menuRef;
  90.     Str255            itemName;
  91.     
  92.     localizedItemNo = itemHit - gFirstAppendedItemNo + 1;
  93.  
  94.     if(localizedItemNo > 0)
  95.     {
  96.         if(localizedItemNo == iPopupButton)
  97.         {
  98.             GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo,&controlRef);
  99.             controlValue = GetControlValue(controlRef);
  100.             GetControlData(controlRef,kControlEntireControl,kControlPopupButtonMenuHandleTag,
  101.                                           sizeof(menuRef),(Ptr) &menuRef,NULL);
  102.             GetMenuItemText(menuRef,controlValue,itemName);
  103.             GetFNum(itemName,&gFontNumber);
  104.         }
  105.         else if(localizedItemNo >= iRadioButton10pt && localizedItemNo <= iRadioButton14pt)
  106.         {
  107.             GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 1,&controlRef);
  108.             SetControlValue(controlRef,0);
  109.             GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 2,&controlRef);
  110.             SetControlValue(controlRef,0);
  111.             GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 3,&controlRef);
  112.             SetControlValue(controlRef,0);
  113.  
  114.             GetDialogItemAsControl(dialogRef,itemHit,&controlRef);
  115.             SetControlValue(controlRef,1);
  116.  
  117.             if(localizedItemNo == iRadioButton10pt)
  118.                 gFontSize = 10;
  119.             else if(localizedItemNo == iRadioButton12pt)
  120.                 gFontSize = 12;
  121.             else if(localizedItemNo == iRadioButton14pt)
  122.                 gFontSize = 14;
  123.         }
  124.         else if(localizedItemNo == iCheckboxFracWidths)
  125.         {
  126.             GetDialogItemAsControl(dialogRef,gFirstAppendedItemNo + 4,&controlRef);
  127.             SetControlValue(controlRef,!GetControlValue(controlRef));
  128.             SetFractEnable(GetControlValue(controlRef));
  129.         }
  130.     }
  131.     else
  132.     {
  133.         InvokePMItemUPP(dialogRef,itemHit,gOldItemEvaluateFunctionUPP);
  134.     }
  135. }
  136.  
  137. // ******************************************************************************* eventFilter
  138.  
  139. Boolean  eventFilter(DialogRef dialogRef,EventRecord *eventStrucPtr,SInt16 *itemHit)
  140. {
  141.     Boolean    handledEvent;
  142.     GrafPtr    oldPort;
  143.  
  144.     handledEvent = false;
  145.  
  146.     if((eventStrucPtr->what == updateEvt) && 
  147.          ((WindowRef) eventStrucPtr->message != GetDialogWindow(dialogRef)))
  148.     {
  149.         doUpdate(eventStrucPtr);
  150.     }
  151.     else
  152.     {
  153.         GetPort(&oldPort);
  154.         SetPortDialogPort(dialogRef);
  155.  
  156.         handledEvent = StdFilterProc(dialogRef,eventStrucPtr,itemHit);
  157.  
  158.         SetPort(oldPort);
  159.     }
  160.  
  161.     return handledEvent;
  162. }
  163.  
  164. // *******************************************************************************************
  165.