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 / chap14-demo / GroupArrowsProgress.c < prev    next >
Text File  |  2001-07-19  |  12KB  |  371 lines

  1. // *******************************************************************************************
  2. // GroupArrowsProgress.c
  3. // *******************************************************************************************
  4.  
  5. // ………………………………………………………………………………………………………………………………………………………………………………………………………………………… includes
  6.  
  7. #include "Controls3.h"
  8.  
  9. // …………………………………………………………………………………………………………………………………………………………………………………………………… global variables
  10.  
  11. ControlRef                gCacheSizeControlRef;
  12. ControlRef                gLittleArrowsControlRef;
  13. ControlActionUPP    gArrowsActionFunctionUPP;
  14. extern Boolean        gRunningOnX;
  15. extern Boolean        gGroupArrowsProgressActive;
  16.  
  17. // ********************************************************************* doGroupArrowsProgress
  18.  
  19. void  doGroupArrowsProgress(void)
  20. {
  21.     DialogRef                dialogRef;
  22.     ControlRef            controlRef;
  23.     ModalFilterUPP    eventFilterUPP;
  24.     SInt16                    controlValue, itemHit;
  25.     Str255                    theString;
  26.  
  27.     if(FrontNonFloatingWindow())
  28.         doActivateWindow(FrontNonFloatingWindow(),false);
  29.  
  30.     if(!(dialogRef = GetNewDialog(rGroupArrowsProgDialog,NULL,(WindowRef) -1)))
  31.         ExitToShell();
  32.  
  33.     SetPortDialogPort(dialogRef);
  34.  
  35.     // …………………………………………………………………………………………………………………………………………………………… set default button, help tags
  36.  
  37.     SetDialogDefaultItem(dialogRef,kStdOkItemIndex);
  38.  
  39.     // …… create universal procedure pointers for event filter and little arrows action function
  40.  
  41.     eventFilterUPP                        = NewModalFilterUPP((ModalFilterProcPtr) eventFilter);
  42.     gArrowsActionFunctionUPP    = NewControlActionUPP((ControlActionProcPtr) arrowsActionFunction);
  43.  
  44.     // ……………………………………………………………………………………………………………………………… set initial value for checkbox group box
  45.  
  46.     GetDialogItemAsControl(dialogRef,iCheckboxGroup,&controlRef);
  47.     SetControlValue(controlRef,1);
  48.  
  49.     // ……………………………………………………………………………………………………… get and set initial cache value for little arrows
  50.  
  51.     GetDialogItemAsControl(dialogRef,iLittleArrows,&gLittleArrowsControlRef);
  52.     NumToString((SInt32) GetControlValue(gLittleArrowsControlRef),theString);
  53.     doConcatPStrings(theString,"\pK");
  54.     GetDialogItemAsControl(dialogRef,iStaticTextCache,&gCacheSizeControlRef);
  55.     SetControlData(gCacheSizeControlRef,kControlEntireControl,kControlStaticTextTextTag,
  56.                                  theString[0],&theString[1]);
  57.  
  58.     // …………………………………………………………………………………………………………………………… hide second user pane in pop-up group box
  59.  
  60.     GetDialogItemAsControl(dialogRef,iUserPaneScoreAverage,&controlRef);
  61.     HideControl(controlRef);
  62.  
  63.     // ………………………………………………………………………………………… set help tags, show dialog, and enter ModalDialog loop
  64.  
  65.     if(gRunningOnX)
  66.         helpTagsGroupArrowsProgress(dialogRef);
  67.  
  68.     ShowWindow(GetDialogWindow(dialogRef));
  69.  
  70.     do
  71.     {
  72.         ModalDialog(eventFilterUPP,&itemHit);
  73.  
  74.         if(itemHit == iCheckboxGroup)
  75.         {
  76.             doCheckBoxGroupBox(dialogRef);
  77.         }        
  78.         else if(itemHit == iPopupGroup)
  79.         {
  80.             doPopupGroupBox(dialogRef);
  81.         }
  82.         else if(itemHit == iCheckboxShowInitials)
  83.         {
  84.             GetDialogItemAsControl(dialogRef,iCheckboxShowInitials,&controlRef);
  85.             controlValue = (!(GetControlValue(controlRef)));
  86.             SetControlValue(controlRef,controlValue);
  87.         }
  88.         else if(itemHit == iCheckboxShowAverages)
  89.         {
  90.             GetDialogItemAsControl(dialogRef,iCheckboxShowAverages,&controlRef);
  91.             controlValue = (!(GetControlValue(controlRef)));
  92.             SetControlValue(controlRef,controlValue);
  93.         }
  94.         else if(itemHit == iDisclosureTriangle)
  95.         {
  96.             doChasingAndProgress(dialogRef);
  97.         }
  98.         else if(itemHit == iPushButtonExtract)
  99.         {
  100.             GetDialogItemAsControl(dialogRef,iImageWell,&controlRef);
  101.             Draw1Control(controlRef);
  102.             doExtractCurrentStatus(dialogRef);
  103.         }
  104.     } while(itemHit != kStdOkItemIndex);
  105.  
  106.     // …………………………………………………………………………………………………………………………………………………………………………………………………………………… clean up
  107.  
  108.     DisposeDialog(dialogRef);
  109.     DisposeModalFilterUPP(eventFilterUPP);
  110.     DisposeControlActionUPP(gArrowsActionFunctionUPP);
  111.  
  112.     gGroupArrowsProgressActive = false;
  113. }
  114.  
  115. // ************************************************************************ doCheckBoxGroupBox
  116.  
  117. void  doCheckBoxGroupBox(DialogRef dialogRef)
  118. {
  119.     ControlRef    controlRef;
  120.     SInt16            controlValue;
  121.  
  122.     GetDialogItemAsControl(dialogRef,iCheckboxGroup,&controlRef);
  123.     controlValue = (!(GetControlValue(controlRef)));
  124.     SetControlValue(controlRef,controlValue);
  125.     
  126.     if(controlValue == 0)
  127.     {
  128.         GetDialogItemAsControl(dialogRef,iRadioGroupColour,&controlRef);
  129.         DeactivateControl(controlRef);    
  130.         GetDialogItemAsControl(dialogRef,iStaticTextColourDepth,&controlRef);
  131.         DeactivateControl(controlRef);    
  132.     }
  133.     else if(controlValue == 1)
  134.     {
  135.         GetDialogItemAsControl(dialogRef,iRadioGroupColour,&controlRef);
  136.         ActivateControl(controlRef);    
  137.         GetDialogItemAsControl(dialogRef,iStaticTextColourDepth,&controlRef);
  138.         ActivateControl(controlRef);    
  139.     }
  140. }
  141.  
  142. // *************************************************************************** doPopupGroupBox
  143.  
  144. void  doPopupGroupBox(DialogRef dialogRef)
  145. {
  146.     ControlRef    controlRef;
  147.     SInt16            controlValue;
  148.  
  149.     GetDialogItemAsControl(dialogRef,iPopupGroup,&controlRef);
  150.     controlValue = GetControlValue(controlRef);
  151.  
  152.     if(controlValue == 1)
  153.     {
  154.         GetDialogItemAsControl(dialogRef,iUserPaneScoreAverage,&controlRef);
  155.         HideControl(controlRef);
  156.         GetDialogItemAsControl(dialogRef,iUserPaneNamesInitials,&controlRef);
  157.         ShowControl(controlRef);
  158.     }
  159.     else if(controlValue == 2)
  160.     {
  161.         GetDialogItemAsControl(dialogRef,iUserPaneNamesInitials,&controlRef);
  162.         HideControl(controlRef);
  163.         GetDialogItemAsControl(dialogRef,iUserPaneScoreAverage,&controlRef);
  164.         ShowControl(controlRef);
  165.     }
  166. }
  167.  
  168. // ********************************************************************** doChasingAndProgress
  169.  
  170. void  doChasingAndProgress(DialogRef dialogRef)
  171. {
  172.     ControlRef    controlRef;
  173.     SInt16            controlValue;
  174.     Handle            ditlHdl;
  175.     Boolean            indeterminateFlag = 1;
  176.     Str255            expandString   = "\pHide Progress Bar and Chasing Arrows";
  177.     Str255            collapseString = "\pShow Progress Bar and Chasing Arrows";
  178.  
  179.     GetDialogItemAsControl(dialogRef,iDisclosureTriangle,&controlRef);
  180.     controlValue = (!(GetControlValue(controlRef)));
  181.     SetControlValue(controlRef,controlValue);
  182.  
  183.     if(controlValue == 1)
  184.     {
  185.         ditlHdl = GetResource('DITL',130);
  186.         AppendDITL(dialogRef,ditlHdl,appendDITLBottom);
  187.         ReleaseResource(ditlHdl);
  188.  
  189.         GetDialogItemAsControl(dialogRef,iProgressBar,&controlRef);
  190.         SetControlData(controlRef,kControlEntireControl,kControlProgressBarIndeterminateTag,
  191.                                      sizeof(indeterminateFlag),&indeterminateFlag);
  192.  
  193.         GetDialogItemAsControl(dialogRef,kStdOkItemIndex,&controlRef);
  194.         MoveControl(controlRef,277,351);
  195.         
  196.         GetDialogItemAsControl(dialogRef,iStaticTextDisclosure,&controlRef);
  197.         SetControlData(controlRef,kControlEntireControl,kControlStaticTextTextTag,
  198.                                      expandString[0],&expandString[1]);
  199.         Draw1Control(controlRef);
  200.     }
  201.     else if(controlValue == 0)
  202.     {
  203.         GetDialogItemAsControl(dialogRef,kStdOkItemIndex,&controlRef);
  204.         MoveControl(controlRef,277,280);
  205.  
  206.         ShortenDITL(dialogRef,3);
  207.         SizeWindow(GetDialogWindow(dialogRef),362,321,false);
  208.  
  209.         GetDialogItemAsControl(dialogRef,iStaticTextDisclosure,&controlRef);
  210.         SetControlData(controlRef,kControlEntireControl,kControlStaticTextTextTag,
  211.                                      collapseString[0],&collapseString[1]);
  212.         Draw1Control(controlRef);
  213.     }
  214. }
  215.  
  216. // ******************************************************************** doExtractCurrentStatus
  217.  
  218. void  doExtractCurrentStatus(DialogRef dialogRef)
  219. {
  220.     GrafPtr            oldPort;
  221.     RGBColor        saveBackColour, whiteColour = { 0xFFFF, 0xFFFF, 0xFFFF };
  222.     ControlRef    controlRef;
  223.     SInt16            controlValue;
  224.     Str255            theString;
  225.     CFStringRef    stringRef;
  226.     Rect                theRect;
  227.  
  228.     GetPort(&oldPort);
  229.     SetPortDialogPort(dialogRef);
  230.     GetBackColor(&saveBackColour);
  231.     RGBBackColor(&whiteColour);
  232.  
  233.     GetDialogItemAsControl(dialogRef,iCheckboxGroup,&controlRef);
  234.     controlValue = GetControlValue(controlRef);    
  235.     if(controlValue)
  236.     {
  237.         doCopyPString("\pUse colour,",theString);
  238.         GetDialogItemAsControl(dialogRef,iRadioGroupColour,&controlRef);
  239.         controlValue = GetControlValue(controlRef);
  240.         if(controlValue == 1)
  241.             doConcatPStrings(theString,"\p 8 bit.");
  242.         else if(controlValue == 2)
  243.             doConcatPStrings(theString,"\p 16 bit.");
  244.         else if(controlValue == 3)
  245.             doConcatPStrings(theString,"\p 32 bit.");
  246.     }
  247.     else
  248.         doCopyPString("\pDont use colour.",theString);
  249.  
  250.     if(!gRunningOnX)
  251.     {
  252.         MoveTo(108,216);
  253.         DrawString(theString);
  254.     }
  255.     else
  256.     {
  257.         stringRef = CFStringCreateWithPascalString(NULL,theString,kCFStringEncodingMacRoman);
  258.         SetRect(&theRect,108,205,347,220);
  259.         DrawThemeTextBox(stringRef,kThemeSmallSystemFont,true,false,&theRect,teJustLeft,NULL);
  260.         if(stringRef != NULL)        
  261.             CFRelease(stringRef);
  262.     }
  263.  
  264.     GetDialogItemAsControl(dialogRef,iPopupGroup,&controlRef);
  265.     controlValue = GetControlValue(controlRef);    
  266.     if(controlValue == 1)
  267.     {
  268.         doCopyPString("\pPlayer, ",theString);
  269.         GetDialogItemAsControl(dialogRef,iRadioGroupNames,&controlRef);
  270.         controlValue = GetControlValue(controlRef);
  271.         if(controlValue == 1)
  272.             doConcatPStrings(theString,"\pname first,");
  273.         else if(controlValue == 2)
  274.             doConcatPStrings(theString,"\pname last,");
  275.         GetDialogItemAsControl(dialogRef,iCheckboxShowInitials,&controlRef);
  276.         controlValue = GetControlValue(controlRef);
  277.         if(controlValue == 1)
  278.             doConcatPStrings(theString,"\p show number.");
  279.         else if(controlValue == 0)
  280.             doConcatPStrings(theString,"\p no number.");
  281.     }
  282.     else if(controlValue == 2)
  283.     {
  284.         doCopyPString("\pScore, ",theString);
  285.         GetDialogItemAsControl(dialogRef,iRadioGroupScores,&controlRef);
  286.         controlValue = GetControlValue(controlRef);
  287.         if(controlValue == 1)
  288.             doConcatPStrings(theString,"\pbatting, ");
  289.         else if(controlValue == 2)
  290.             doConcatPStrings(theString,"\pbowling, ");
  291.         GetDialogItemAsControl(dialogRef,iCheckboxShowAverages,&controlRef);
  292.         controlValue = GetControlValue(controlRef);
  293.         if(controlValue == 1)
  294.             doConcatPStrings(theString,"\pshow average.");
  295.         else if(controlValue == 0)
  296.             doConcatPStrings(theString,"\pno average.");
  297.     }
  298.  
  299.     if(!gRunningOnX)
  300.     {
  301.         MoveTo(108,229);
  302.         DrawString(theString);
  303.     }
  304.     else
  305.     {
  306.         stringRef = CFStringCreateWithPascalString(NULL,theString,kCFStringEncodingMacRoman);
  307.         SetRect(&theRect,108,219,347,234);
  308.         DrawThemeTextBox(stringRef,kThemeSmallSystemFont,true,false,&theRect,teJustLeft,NULL);
  309.         if(stringRef != NULL)        
  310.             CFRelease(stringRef);
  311.     }
  312.  
  313.     if(!gRunningOnX)
  314.     {
  315.         MoveTo(108,242);            
  316.         DrawString("\pCache size: ");
  317.     }
  318.     else
  319.     {
  320.         stringRef = CFStringCreateWithPascalString(NULL,"\pCache size: ",
  321.                                                                                              kCFStringEncodingMacRoman);
  322.         SetRect(&theRect,108,232,347,247);
  323.         DrawThemeTextBox(stringRef,kThemeSmallSystemFont,true,false,&theRect,teJustLeft,NULL);
  324.         if(stringRef != NULL)        
  325.             CFRelease(stringRef);
  326.     }
  327.  
  328.     GetDialogItemAsControl(dialogRef,iLittleArrows,&controlRef);
  329.     NumToString((SInt32) GetControlValue(controlRef),theString);
  330.     if(!gRunningOnX)
  331.         DrawString(theString);
  332.     else
  333.     {
  334.         stringRef = CFStringCreateWithPascalString(NULL,theString,kCFStringEncodingMacRoman);
  335.         SetRect(&theRect,174,232,347,247);
  336.         DrawThemeTextBox(stringRef,kThemeSmallSystemFont,true,false,&theRect,teJustLeft,NULL);
  337.         if(stringRef != NULL)        
  338.             CFRelease(stringRef);
  339.     }
  340.  
  341.     RGBBackColor(&saveBackColour);
  342.     SetPort(oldPort);
  343. }
  344.  
  345. // *************************************************************** helpTagsGroupArrowsProgress
  346.  
  347. void  helpTagsGroupArrowsProgress(DialogRef dialogRef)
  348. {
  349.     HMHelpContentRec    helpContent;
  350.     SInt16                        a;
  351.     static SInt16            itemNumber[8] = { 2,9,21,25,27,29,31,32 };
  352.     ControlRef                controlRef;
  353.  
  354.     memset(&helpContent,0,sizeof(helpContent));
  355.     HMSetTagDelay(500);
  356.     HMSetHelpTagsDisplayed(true);
  357.  
  358.     helpContent.version = kMacHelpVersion;
  359.     helpContent.tagSide = kHMOutsideTopCenterAligned;
  360.     helpContent.content[kHMMinimumContentIndex].contentType = kHMStringResContent;
  361.     helpContent.content[kHMMinimumContentIndex].u.tagStringRes.hmmResID = 134;
  362.  
  363.     for(a = 1;a <= 8; a++)
  364.     {
  365.         helpContent.content[kHMMinimumContentIndex].u.tagStringRes.hmmIndex = a;
  366.         GetDialogItemAsControl(dialogRef,itemNumber[a - 1],&controlRef);
  367.         HMSetControlHelpContent(controlRef,&helpContent);
  368.     }
  369. }
  370.  
  371. // *******************************************************************************************