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 >
Wrap
Text File
|
2001-07-19
|
12KB
|
371 lines
// *******************************************************************************************
// GroupArrowsProgress.c
// *******************************************************************************************
// ………………………………………………………………………………………………………………………………………………………………………………………………………………………… includes
#include "Controls3.h"
// …………………………………………………………………………………………………………………………………………………………………………………………………… global variables
ControlRef gCacheSizeControlRef;
ControlRef gLittleArrowsControlRef;
ControlActionUPP gArrowsActionFunctionUPP;
extern Boolean gRunningOnX;
extern Boolean gGroupArrowsProgressActive;
// ********************************************************************* doGroupArrowsProgress
void doGroupArrowsProgress(void)
{
DialogRef dialogRef;
ControlRef controlRef;
ModalFilterUPP eventFilterUPP;
SInt16 controlValue, itemHit;
Str255 theString;
if(FrontNonFloatingWindow())
doActivateWindow(FrontNonFloatingWindow(),false);
if(!(dialogRef = GetNewDialog(rGroupArrowsProgDialog,NULL,(WindowRef) -1)))
ExitToShell();
SetPortDialogPort(dialogRef);
// …………………………………………………………………………………………………………………………………………………………… set default button, help tags
SetDialogDefaultItem(dialogRef,kStdOkItemIndex);
// …… create universal procedure pointers for event filter and little arrows action function
eventFilterUPP = NewModalFilterUPP((ModalFilterProcPtr) eventFilter);
gArrowsActionFunctionUPP = NewControlActionUPP((ControlActionProcPtr) arrowsActionFunction);
// ……………………………………………………………………………………………………………………………… set initial value for checkbox group box
GetDialogItemAsControl(dialogRef,iCheckboxGroup,&controlRef);
SetControlValue(controlRef,1);
// ……………………………………………………………………………………………………… get and set initial cache value for little arrows
GetDialogItemAsControl(dialogRef,iLittleArrows,&gLittleArrowsControlRef);
NumToString((SInt32) GetControlValue(gLittleArrowsControlRef),theString);
doConcatPStrings(theString,"\pK");
GetDialogItemAsControl(dialogRef,iStaticTextCache,&gCacheSizeControlRef);
SetControlData(gCacheSizeControlRef,kControlEntireControl,kControlStaticTextTextTag,
theString[0],&theString[1]);
// …………………………………………………………………………………………………………………………… hide second user pane in pop-up group box
GetDialogItemAsControl(dialogRef,iUserPaneScoreAverage,&controlRef);
HideControl(controlRef);
// ………………………………………………………………………………………… set help tags, show dialog, and enter ModalDialog loop
if(gRunningOnX)
helpTagsGroupArrowsProgress(dialogRef);
ShowWindow(GetDialogWindow(dialogRef));
do
{
ModalDialog(eventFilterUPP,&itemHit);
if(itemHit == iCheckboxGroup)
{
doCheckBoxGroupBox(dialogRef);
}
else if(itemHit == iPopupGroup)
{
doPopupGroupBox(dialogRef);
}
else if(itemHit == iCheckboxShowInitials)
{
GetDialogItemAsControl(dialogRef,iCheckboxShowInitials,&controlRef);
controlValue = (!(GetControlValue(controlRef)));
SetControlValue(controlRef,controlValue);
}
else if(itemHit == iCheckboxShowAverages)
{
GetDialogItemAsControl(dialogRef,iCheckboxShowAverages,&controlRef);
controlValue = (!(GetControlValue(controlRef)));
SetControlValue(controlRef,controlValue);
}
else if(itemHit == iDisclosureTriangle)
{
doChasingAndProgress(dialogRef);
}
else if(itemHit == iPushButtonExtract)
{
GetDialogItemAsControl(dialogRef,iImageWell,&controlRef);
Draw1Control(controlRef);
doExtractCurrentStatus(dialogRef);
}
} while(itemHit != kStdOkItemIndex);
// …………………………………………………………………………………………………………………………………………………………………………………………………………………… clean up
DisposeDialog(dialogRef);
DisposeModalFilterUPP(eventFilterUPP);
DisposeControlActionUPP(gArrowsActionFunctionUPP);
gGroupArrowsProgressActive = false;
}
// ************************************************************************ doCheckBoxGroupBox
void doCheckBoxGroupBox(DialogRef dialogRef)
{
ControlRef controlRef;
SInt16 controlValue;
GetDialogItemAsControl(dialogRef,iCheckboxGroup,&controlRef);
controlValue = (!(GetControlValue(controlRef)));
SetControlValue(controlRef,controlValue);
if(controlValue == 0)
{
GetDialogItemAsControl(dialogRef,iRadioGroupColour,&controlRef);
DeactivateControl(controlRef);
GetDialogItemAsControl(dialogRef,iStaticTextColourDepth,&controlRef);
DeactivateControl(controlRef);
}
else if(controlValue == 1)
{
GetDialogItemAsControl(dialogRef,iRadioGroupColour,&controlRef);
ActivateControl(controlRef);
GetDialogItemAsControl(dialogRef,iStaticTextColourDepth,&controlRef);
ActivateControl(controlRef);
}
}
// *************************************************************************** doPopupGroupBox
void doPopupGroupBox(DialogRef dialogRef)
{
ControlRef controlRef;
SInt16 controlValue;
GetDialogItemAsControl(dialogRef,iPopupGroup,&controlRef);
controlValue = GetControlValue(controlRef);
if(controlValue == 1)
{
GetDialogItemAsControl(dialogRef,iUserPaneScoreAverage,&controlRef);
HideControl(controlRef);
GetDialogItemAsControl(dialogRef,iUserPaneNamesInitials,&controlRef);
ShowControl(controlRef);
}
else if(controlValue == 2)
{
GetDialogItemAsControl(dialogRef,iUserPaneNamesInitials,&controlRef);
HideControl(controlRef);
GetDialogItemAsControl(dialogRef,iUserPaneScoreAverage,&controlRef);
ShowControl(controlRef);
}
}
// ********************************************************************** doChasingAndProgress
void doChasingAndProgress(DialogRef dialogRef)
{
ControlRef controlRef;
SInt16 controlValue;
Handle ditlHdl;
Boolean indeterminateFlag = 1;
Str255 expandString = "\pHide Progress Bar and Chasing Arrows";
Str255 collapseString = "\pShow Progress Bar and Chasing Arrows";
GetDialogItemAsControl(dialogRef,iDisclosureTriangle,&controlRef);
controlValue = (!(GetControlValue(controlRef)));
SetControlValue(controlRef,controlValue);
if(controlValue == 1)
{
ditlHdl = GetResource('DITL',130);
AppendDITL(dialogRef,ditlHdl,appendDITLBottom);
ReleaseResource(ditlHdl);
GetDialogItemAsControl(dialogRef,iProgressBar,&controlRef);
SetControlData(controlRef,kControlEntireControl,kControlProgressBarIndeterminateTag,
sizeof(indeterminateFlag),&indeterminateFlag);
GetDialogItemAsControl(dialogRef,kStdOkItemIndex,&controlRef);
MoveControl(controlRef,277,351);
GetDialogItemAsControl(dialogRef,iStaticTextDisclosure,&controlRef);
SetControlData(controlRef,kControlEntireControl,kControlStaticTextTextTag,
expandString[0],&expandString[1]);
Draw1Control(controlRef);
}
else if(controlValue == 0)
{
GetDialogItemAsControl(dialogRef,kStdOkItemIndex,&controlRef);
MoveControl(controlRef,277,280);
ShortenDITL(dialogRef,3);
SizeWindow(GetDialogWindow(dialogRef),362,321,false);
GetDialogItemAsControl(dialogRef,iStaticTextDisclosure,&controlRef);
SetControlData(controlRef,kControlEntireControl,kControlStaticTextTextTag,
collapseString[0],&collapseString[1]);
Draw1Control(controlRef);
}
}
// ******************************************************************** doExtractCurrentStatus
void doExtractCurrentStatus(DialogRef dialogRef)
{
GrafPtr oldPort;
RGBColor saveBackColour, whiteColour = { 0xFFFF, 0xFFFF, 0xFFFF };
ControlRef controlRef;
SInt16 controlValue;
Str255 theString;
CFStringRef stringRef;
Rect theRect;
GetPort(&oldPort);
SetPortDialogPort(dialogRef);
GetBackColor(&saveBackColour);
RGBBackColor(&whiteColour);
GetDialogItemAsControl(dialogRef,iCheckboxGroup,&controlRef);
controlValue = GetControlValue(controlRef);
if(controlValue)
{
doCopyPString("\pUse colour,",theString);
GetDialogItemAsControl(dialogRef,iRadioGroupColour,&controlRef);
controlValue = GetControlValue(controlRef);
if(controlValue == 1)
doConcatPStrings(theString,"\p 8 bit.");
else if(controlValue == 2)
doConcatPStrings(theString,"\p 16 bit.");
else if(controlValue == 3)
doConcatPStrings(theString,"\p 32 bit.");
}
else
doCopyPString("\pDont use colour.",theString);
if(!gRunningOnX)
{
MoveTo(108,216);
DrawString(theString);
}
else
{
stringRef = CFStringCreateWithPascalString(NULL,theString,kCFStringEncodingMacRoman);
SetRect(&theRect,108,205,347,220);
DrawThemeTextBox(stringRef,kThemeSmallSystemFont,true,false,&theRect,teJustLeft,NULL);
if(stringRef != NULL)
CFRelease(stringRef);
}
GetDialogItemAsControl(dialogRef,iPopupGroup,&controlRef);
controlValue = GetControlValue(controlRef);
if(controlValue == 1)
{
doCopyPString("\pPlayer, ",theString);
GetDialogItemAsControl(dialogRef,iRadioGroupNames,&controlRef);
controlValue = GetControlValue(controlRef);
if(controlValue == 1)
doConcatPStrings(theString,"\pname first,");
else if(controlValue == 2)
doConcatPStrings(theString,"\pname last,");
GetDialogItemAsControl(dialogRef,iCheckboxShowInitials,&controlRef);
controlValue = GetControlValue(controlRef);
if(controlValue == 1)
doConcatPStrings(theString,"\p show number.");
else if(controlValue == 0)
doConcatPStrings(theString,"\p no number.");
}
else if(controlValue == 2)
{
doCopyPString("\pScore, ",theString);
GetDialogItemAsControl(dialogRef,iRadioGroupScores,&controlRef);
controlValue = GetControlValue(controlRef);
if(controlValue == 1)
doConcatPStrings(theString,"\pbatting, ");
else if(controlValue == 2)
doConcatPStrings(theString,"\pbowling, ");
GetDialogItemAsControl(dialogRef,iCheckboxShowAverages,&controlRef);
controlValue = GetControlValue(controlRef);
if(controlValue == 1)
doConcatPStrings(theString,"\pshow average.");
else if(controlValue == 0)
doConcatPStrings(theString,"\pno average.");
}
if(!gRunningOnX)
{
MoveTo(108,229);
DrawString(theString);
}
else
{
stringRef = CFStringCreateWithPascalString(NULL,theString,kCFStringEncodingMacRoman);
SetRect(&theRect,108,219,347,234);
DrawThemeTextBox(stringRef,kThemeSmallSystemFont,true,false,&theRect,teJustLeft,NULL);
if(stringRef != NULL)
CFRelease(stringRef);
}
if(!gRunningOnX)
{
MoveTo(108,242);
DrawString("\pCache size: ");
}
else
{
stringRef = CFStringCreateWithPascalString(NULL,"\pCache size: ",
kCFStringEncodingMacRoman);
SetRect(&theRect,108,232,347,247);
DrawThemeTextBox(stringRef,kThemeSmallSystemFont,true,false,&theRect,teJustLeft,NULL);
if(stringRef != NULL)
CFRelease(stringRef);
}
GetDialogItemAsControl(dialogRef,iLittleArrows,&controlRef);
NumToString((SInt32) GetControlValue(controlRef),theString);
if(!gRunningOnX)
DrawString(theString);
else
{
stringRef = CFStringCreateWithPascalString(NULL,theString,kCFStringEncodingMacRoman);
SetRect(&theRect,174,232,347,247);
DrawThemeTextBox(stringRef,kThemeSmallSystemFont,true,false,&theRect,teJustLeft,NULL);
if(stringRef != NULL)
CFRelease(stringRef);
}
RGBBackColor(&saveBackColour);
SetPort(oldPort);
}
// *************************************************************** helpTagsGroupArrowsProgress
void helpTagsGroupArrowsProgress(DialogRef dialogRef)
{
HMHelpContentRec helpContent;
SInt16 a;
static SInt16 itemNumber[8] = { 2,9,21,25,27,29,31,32 };
ControlRef controlRef;
memset(&helpContent,0,sizeof(helpContent));
HMSetTagDelay(500);
HMSetHelpTagsDisplayed(true);
helpContent.version = kMacHelpVersion;
helpContent.tagSide = kHMOutsideTopCenterAligned;
helpContent.content[kHMMinimumContentIndex].contentType = kHMStringResContent;
helpContent.content[kHMMinimumContentIndex].u.tagStringRes.hmmResID = 134;
for(a = 1;a <= 8; a++)
{
helpContent.content[kHMMinimumContentIndex].u.tagStringRes.hmmIndex = a;
GetDialogItemAsControl(dialogRef,itemNumber[a - 1],&controlRef);
HMSetControlHelpContent(controlRef,&helpContent);
}
}
// *******************************************************************************************