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
/
Sliders.c
< prev
next >
Wrap
Text File
|
2001-05-19
|
7KB
|
205 lines
// *******************************************************************************************
// Sliders.c
// *******************************************************************************************
// ………………………………………………………………………………………………………………………………………………………………………………………………………………………… includes
#include "Controls3.h"
// …………………………………………………………………………………………………………………………………………………………………………………………………… global variables
extern Boolean gRunningOnX;
// …………………………………………………………………………………………………………………………………………………………………………………………………… global variables
ControlActionUPP gSliderActionFunction1UPP;
ControlActionUPP gSliderActionFunction2UPP;
ControlUserPaneDrawUPP gUserPaneDrawFunctionUPP;
ControlUserPaneActivateUPP gUserPaneActivateFunctionUPP;
ControlRef gSlider1Ref;
ControlRef gSlider2Ref;
ControlRef gSlider3Ref;
ControlRef gSlider4Ref;
ControlRef gSlider5Ref;
ControlRef gSlider6Ref;
RGBColor gRedColour;
RGBColor gBlueColour;
RGBColor gBlackColour = { 0x0000, 0x0000, 0x0000 };
Boolean gDrawActivated = true;
extern Boolean gSlidersActive;
// ************************************************************************** doSliderUserPane
void doSliderUserPane(void)
{
DialogRef dialogRef;
ModalFilterUPP eventFilterUPP;
ControlRef controlRef;
SInt16 itemHit;
if(FrontNonFloatingWindow())
doActivateWindow(FrontNonFloatingWindow(),false);
if(!(dialogRef = GetNewDialog(rSlidersDialog,NULL,(WindowRef) -1)))
ExitToShell();
// ………………………………………………………………………………………………………………………………………………………………………………………… set default button
SetDialogDefaultItem(dialogRef,kStdOkItemIndex);
// ………………………………………………………………………… create universal procedure pointer for event filter function
eventFilterUPP = NewModalFilterUPP((ModalFilterProcPtr) eventFilter);
// ………………………………………………………………… create universal procedure pointers for slider action functions
gSliderActionFunction1UPP = NewControlActionUPP((ControlActionProcPtr)
sliderActionFunction1);
gSliderActionFunction2UPP = NewControlActionUPP((ControlActionProcPtr)
sliderActionFunction2);
// ………… create universal procedure pointers for user pane functions, set user pane functions
gUserPaneDrawFunctionUPP = NewControlUserPaneDrawUPP((ControlUserPaneDrawProcPtr)
userPaneDrawFunction);
GetDialogItemAsControl(dialogRef,iUserPane1,&controlRef);
SetControlData(controlRef,kControlEntireControl,kControlUserPaneDrawProcTag,
sizeof(gUserPaneDrawFunctionUPP),&gUserPaneDrawFunctionUPP);
gUserPaneActivateFunctionUPP = NewControlUserPaneActivateUPP((ControlUserPaneActivateProcPtr)
userPaneActivateFunction);
GetDialogItemAsControl(dialogRef,iUserPane1,&controlRef);
SetControlData(controlRef,kControlEntireControl,kControlUserPaneActivateProcTag,
sizeof(gUserPaneActivateFunctionUPP),&gUserPaneActivateFunctionUPP);
// …………………………… get control handles of, and draw initial control values for, top four sliders
GetDialogItemAsControl(dialogRef,iSlider1,&gSlider1Ref);
doDrawSliderValues(dialogRef,gSlider1Ref);
GetDialogItemAsControl(dialogRef,iSlider2,&gSlider2Ref);
doDrawSliderValues(dialogRef,gSlider2Ref);
GetDialogItemAsControl(dialogRef,iSlider3,&gSlider3Ref);
doDrawSliderValues(dialogRef,gSlider3Ref);
GetDialogItemAsControl(dialogRef,iSlider4,&gSlider4Ref);
doDrawSliderValues(dialogRef,gSlider4Ref);
// …………………………………………………………… get control handles and values for bottom two sliders, set colour
GetDialogItemAsControl(dialogRef,iSlider5,&gSlider5Ref);
gRedColour.red = 2 * GetControlValue(gSlider5Ref);
GetDialogItemAsControl(dialogRef,iSlider6,&gSlider6Ref);
gBlueColour.blue = 2 * GetControlValue(gSlider5Ref);
// ………………………………………………………………………………………… set help tags, show dialog, and enter ModalDialog loop
if(gRunningOnX)
helpTagsSliders(dialogRef);
ShowWindow(GetDialogWindow(dialogRef));
do
{
ModalDialog(eventFilterUPP,&itemHit);
} while(itemHit != kStdOkItemIndex);
// …………………………………………………………………………………………………………………………………………………………………………………………………………………… clean up
DisposeDialog(dialogRef);
DisposeModalFilterUPP(eventFilterUPP);
DisposeControlActionUPP(gSliderActionFunction1UPP);
DisposeControlActionUPP(gSliderActionFunction2UPP);
DisposeControlUserPaneDrawUPP(gUserPaneDrawFunctionUPP);
DisposeControlUserPaneActivateUPP(gUserPaneActivateFunctionUPP);
gSlidersActive = false;
}
// ************************************************************************ doDrawSliderValues
void doDrawSliderValues(DialogRef dialogRef,ControlRef controlRef)
{
Str255 theString;
SInt16 staticTextItem;
NumToString((SInt32) GetControlValue(controlRef),theString);
if(controlRef == gSlider1Ref)
staticTextItem = iSlider1StaticText;
else if(controlRef == gSlider2Ref)
staticTextItem = iSlider2StaticText;
else if(controlRef == gSlider3Ref)
staticTextItem = iSlider3StaticText;
else if(controlRef == gSlider4Ref)
staticTextItem = iSlider4StaticText;
GetDialogItemAsControl(dialogRef,staticTextItem,&controlRef);
SetControlData(controlRef,kControlEntireControl,kControlStaticTextTextTag,theString[0],
&theString[1]);
Draw1Control(controlRef);
}
// ********************************************************************** userPaneDrawFunction
void userPaneDrawFunction(ControlRef theControl,SInt16 thePart)
{
Rect theRect;
SetRect(&theRect,218,175,238,195);
DrawThemePlacard(&theRect,gDrawActivated);
InsetRect(&theRect,2,2);
if(gDrawActivated)
{
RGBForeColor(&gRedColour);
PaintRect(&theRect);
}
SetRect(&theRect,218,196,238,216);
DrawThemePlacard(&theRect,gDrawActivated);
InsetRect(&theRect,2,2);
if(gDrawActivated)
{
RGBForeColor(&gBlueColour);
PaintRect(&theRect);
}
}
// ****************************************************************** userPaneActivateFunction
void userPaneActivateFunction(ControlRef control,Boolean activating)
{
if(activating)
gDrawActivated = true;
else
gDrawActivated = false;
}
// *************************************************************************** helpTagsSliders
void helpTagsSliders(DialogRef dialogRef)
{
HMHelpContentRec helpContent;
SInt16 a;
static SInt16 itemNumber[7] = { 2,3,4,5,17,19,18 };
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 = 135;
for(a = 1;a <= 7; a++)
{
helpContent.content[kHMMinimumContentIndex].u.tagStringRes.hmmIndex = a;
GetDialogItemAsControl(dialogRef,itemNumber[a - 1],&controlRef);
HMSetControlHelpContent(controlRef,&helpContent);
}
}
// *******************************************************************************************