void ShowNavButtons(unsigned char* backTitle, unsigned char* nextTitle) { Boolean bDefault = true; gControls->backB = GetNewControl( rBackBtn, gWPtr); gControls->nextB = GetNewControl( rNextBtn, gWPtr); if( gControls->backB != NULL) { SetControlTitle( gControls->backB, backTitle); ShowControl( gControls->backB); if (gCurrWin==kWelcomeID || gCurrWin==kSetupTypeID) HiliteControl(gControls->backB, kDisableControl); } if ( gControls->nextB != NULL) { SetControlTitle( gControls->nextB, nextTitle); ShowControl( gControls->nextB); SetControlData(gControls->nextB, kControlNoPart, kControlPushButtonDefaultTag, sizeof(bDefault),(Ptr) &bDefault); } ShowCancelButton(); }
void SetupPauseResumeButtons(void) { Str255 pPauseLabel, pResumeLabel; /* rename labels to pause/resume */ if (gControls->backB) { GetResourcedString(pPauseLabel, rInstList, sPauseBtn); SetControlTitle(gControls->backB, pPauseLabel); ShowControl(gControls->backB); } if (gControls->nextB) { GetResourcedString(pResumeLabel, rInstList, sResumeBtn); SetControlTitle(gControls->nextB, pResumeLabel); ShowControl(gControls->nextB); } /* disable cancel button */ if (gControls->cancelB) HiliteControl(gControls->cancelB, kDisableControl); /* disable pause button */ if (gControls->nextB) HiliteControl(gControls->nextB, kDisableControl); /* enable resume button */ if (gControls->backB) HiliteControl(gControls->backB, kEnableControl); gControls->state = eDownloading; }
void ShowButtons(Int show) { ShowControl(btn_Roll, (Boolean)show); if( show && GetFlag(flag_CanStay) ) { ShowControl(btn_Stay, true); } else { ShowControl(btn_Stay, false); } }
static int CreateApplicationWindow (AWindowRecord *wr, char *fname, short h, short v, short dh, short dv) { Rect r; GrafPtr myPort; PaletteHandle myPalette; char name[80]; /* init AWindowRecord */ wr->theWindow = (WindowPtr) wr; /* read in resources */ if (GetNewCWindow(appWinId,(Ptr)wr,(WindowPtr) -1)==NULL) { return(1); } myPalette = GetNewPalette(defaultPaletteId); SetPalette(wr->theWindow,myPalette,false); /* move and size window */ myPort = (GrafPtr) wr->theWindow; SetPort(myPort); MoveWindow(wr->theWindow,h,v,false); SizeWindow(wr->theWindow,dh+15,dv+15,false); strcpy(name,fname); SetWTitle(wr->theWindow,c2pstr(name)); ShowWindow(wr->theWindow); SelectWindow(wr->theWindow); DrawGrowIcon(wr->theWindow); r = myPort->portRect; TextFont(kFontIDMonaco); /* get the scroll bars */ wr->vScrollBar = GetNewControl(vScrollBarId,wr->theWindow); wr->hScrollBar = GetNewControl(hScrollBarId,wr->theWindow); /* set correct size of the scroll bars */ MoveControl(wr->vScrollBar,r.right-15,-1); SizeControl(wr->vScrollBar,16,r.bottom-13); SetControlMinimum(wr->vScrollBar,0); SetControlMaximum(wr->vScrollBar,0); SetControlValue(wr->vScrollBar,0); ShowControl(wr->vScrollBar); MoveControl(wr->hScrollBar,-1,r.bottom-15); SizeControl(wr->hScrollBar,r.right-13,16); SetControlMinimum(wr->hScrollBar,0); SetControlMaximum(wr->hScrollBar,0); SetControlValue(wr->hScrollBar,0); ShowControl(wr->hScrollBar); DrawControls(wr->theWindow); SetRect(&(wr->usableRect),0,0,dh,dv); return(0); }
void ShowLicenseWin(void) { Str255 accept; Str255 decline; Rect sbRect; int sbWidth; GrafPtr oldPort; GetPort(&oldPort); SetPort(gWPtr); gCurrWin = kLicenseID; /* gControls->lw = (LicWin *) NewPtrClear(sizeof(LicWin)); */ GetResourcedString(accept, rInstList, sAcceptBtn); GetResourcedString(decline, rInstList, sDeclineBtn); gControls->lw->scrollBar = GetNewControl( rLicScrollBar, gWPtr); gControls->lw->licBox = GetNewControl( rLicBox, gWPtr); if(gControls->lw->scrollBar && gControls->lw->licBox) { HLock( (Handle) gControls->lw->scrollBar); sbRect = (*(gControls->lw->licBox))->contrlRect; sbWidth = (*(gControls->lw->scrollBar))->contrlRect.right - (*(gControls->lw->scrollBar))->contrlRect.left; (*(gControls->lw->scrollBar))->contrlRect.right = sbRect.right + kScrollBarPad; (*(gControls->lw->scrollBar))->contrlRect.left = sbRect.right + kScrollBarPad - sbWidth; (*(gControls->lw->scrollBar))->contrlRect.top = sbRect.top - kScrollBarPad; (*(gControls->lw->scrollBar))->contrlRect.bottom = sbRect.bottom + kScrollBarPad; HUnlock( (Handle) gControls->lw->scrollBar); } else { ErrorHandler(eParam, nil); return; } InitLicTxt(); ShowNavButtons( decline, accept); ShowControl( gControls->lw->scrollBar); ShowControl( gControls->lw->licBox); ShowTxt(); InitScrollBar( gControls->lw->scrollBar); ShowLogo(false); SetPort(oldPort); }
void CEffectsTab::OnSharpenCancel() { if (!DoCommand(_T("Sharpen"), _T("-3"))) return; EnableControl(IDC_SHARPEN, true); ShowControl(IDC_SHARPEN_APPLY, SW_HIDE); ShowControl(IDC_SHARPEN_CANCEL, SW_HIDE); m_SharpenSlider.SetPos(0); m_SharpenSlider.EnableWindow(false); }
// --------------------------------------------------------------------------- // // ----------- void bToolPrintArea::pop_kind_action(WindowRef wd){ ControlRef c; ControlID cid={kPrintAreaSignature,0}; int k; put_area(wd); cid.id=kPrintAreaPopKindID; GetControlByID(wd,&cid,&c); k=GetControl32BitValue(c); switch(k){ case kPrintAreaPopKindMenuGeo: set_as_geo(wd); cid.id=kPrintAreaFrameCustomSizeID; GetControlByID(wd,&cid,&c); ShowControl(c); cid.id=kPrintAreaFrameStandardSizeID; GetControlByID(wd,&cid,&c); HideControl(c); break; case kPrintAreaPopKindMenuPix: set_as_pix(wd); cid.id=kPrintAreaFrameCustomSizeID; GetControlByID(wd,&cid,&c); ShowControl(c); cid.id=kPrintAreaFrameStandardSizeID; GetControlByID(wd,&cid,&c); HideControl(c); break; case kPrintAreaPopKindMenuCustom: set_as_ppsz(wd); cid.id=kPrintAreaFrameCustomSizeID; GetControlByID(wd,&cid,&c); ShowControl(c); cid.id=kPrintAreaFrameStandardSizeID; GetControlByID(wd,&cid,&c); HideControl(c); break; case kPrintAreaPopKindMenuStandard: cid.id=kPrintAreaFrameCustomSizeID; GetControlByID(wd,&cid,&c); HideControl(c); cid.id=kPrintAreaFrameStandardSizeID; GetControlByID(wd,&cid,&c); ShowControl(c); cid.id=kPrintAreaPopSizeID; GetControlByID(wd,&cid,&c); SetControl32BitValue(c,_pprkind); break; } _sizekind=k; }
void CEffectsTab::OnEdgesCancel() { if (!DoCommand(_T("Edges"), _T("-3"))) return; EnableControl(IDC_EDGES, true); ShowControl(IDC_EDGES_APPLY, SW_HIDE); ShowControl(IDC_EDGES_CANCEL, SW_HIDE); m_EdgesSlider.SetPos(0); m_EdgesSlider.EnableWindow(false); }
void CEffectsTab::OnSmoothCancel() { if (!DoCommand(_T("Smooth"), _T("-3"))) return; EnableControl(IDC_SMOOTH, true); ShowControl(IDC_SMOOTH_APPLY, SW_HIDE); ShowControl(IDC_SMOOTH_CANCEL, SW_HIDE); m_SmoothSlider.SetPos(0); m_SmoothSlider.EnableWindow(false); }
void CEffectsTab::OnSharpen() { if (!DoCommand(_T("Sharpen"), _T("-1"))) return; EnableControl(IDC_SHARPEN, false); ShowControl(IDC_SHARPEN_APPLY, SW_SHOW); ShowControl(IDC_SHARPEN_CANCEL, SW_SHOW); m_SharpenSlider.SetPos(0); m_SharpenSlider.EnableWindow(true); m_iLastValue = -1; }
void DrawRollButton() { if( stor.currplayer < 0 ) { ShowControl( btn_Roll, 1 ); CtlSetLabel( GetObjectPtr(btn_Roll), StartString ); } else { if( IsAI( stor.currplayer ) ) { ShowControl( btn_Roll, 0 ); } else { ShowControl( btn_Roll, 1 ); CtlSetLabel( GetObjectPtr(btn_Roll), RollString ); } } }
void CEffectsTab::OnEdges() { if (!DoCommand(_T("Edges"), _T("-1"))) return; EnableControl(IDC_EDGES, false); ShowControl(IDC_EDGES_APPLY, SW_SHOW); ShowControl(IDC_EDGES_CANCEL, SW_SHOW); m_EdgesSlider.SetPos(0); m_EdgesSlider.EnableWindow(true); m_iLastValue = -1; }
void CEffectsTab::OnSmooth() { if (!DoCommand(_T("Smooth"), _T("-1"))) return; EnableControl(IDC_SMOOTH, false); ShowControl(IDC_SMOOTH_APPLY, SW_SHOW); ShowControl(IDC_SMOOTH_CANCEL, SW_SHOW); m_SmoothSlider.SetPos(0); m_SmoothSlider.EnableWindow(true); m_iLastValue = -1; }
static void window_adjust_scrollbars(WindowRef windowRef) { IMAGE *img; Rect portRect; img = (IMAGE*)GetWRefCon(windowRef); GetWindowPortBounds(windowRef,&portRect); /* Move the crollbars to the edges of the window */ HideControl(img->scrollbarVertRef); HideControl(img->scrollbarHorizRef); MoveControl(img->scrollbarVertRef,portRect.right - kScrollBarWidth, portRect.top - 1); MoveControl(img->scrollbarHorizRef,portRect.left - 1, portRect.bottom - kScrollBarWidth); SizeControl(img->scrollbarVertRef,kScrollBarWidth + 1, portRect.bottom - portRect.top - kScrollBarWidth + 1); SizeControl(img->scrollbarHorizRef, portRect.right - portRect.left - kScrollBarWidth + 1, kScrollBarWidth + 1); /* Adjust the scroll position showing */ if (img->pixmapHdl) { PixMap *pixmap = *(img->pixmapHdl); int visibleHeight = portRect.bottom - portRect.top - kScrollBarWidth; int visibleWidth = portRect.right - portRect.left - kScrollBarWidth; if (pixmap->bounds.bottom > visibleHeight) { SetControl32BitMaximum(img->scrollbarVertRef, pixmap->bounds.bottom - visibleHeight); SetControlViewSize(img->scrollbarVertRef,visibleHeight); } else SetControlMaximum(img->scrollbarVertRef, 0); if (pixmap->bounds.right > visibleWidth) { SetControl32BitMaximum(img->scrollbarHorizRef, pixmap->bounds.right - visibleWidth); SetControlViewSize(img->scrollbarHorizRef, visibleWidth); } else SetControlMaximum(img->scrollbarHorizRef, 0); } ShowControl(img->scrollbarVertRef); ShowControl(img->scrollbarHorizRef); }
/* set the controls in the TextEdit window correctly */ void NATEsetscroll(na_win *winp, Boolean moved, Rect *hrect, Rect *vrect) { short vmax, vvalue, hmax, hvalue; TEPtr te = *teinfo->hTE; ControlHandle vctrl, hctrl; vmax = te->nLines + (*(*te->hText + te->teLength - 1) == '\015' ? 1 : 0) - (te->viewRect.bottom - te->viewRect.top) / teinfo->lheight; hmax = (short) teinfo->docwidth - (te->viewRect.right - te->viewRect.left); if (vmax < 0) vmax = 0; if (hmax < 0) hmax = 0; vvalue = (te->viewRect.top - te->destRect.top) / teinfo->lheight; hvalue = te->viewRect.left - te->destRect.left; if (!(winp->flags & NATE_NOVSCROLL)) { if (teinfo->vctrl == (ControlHandle) NULL) { teinfo->vctrl = NewControl(winp->pwin, vrect, "\p", true, vvalue, 0, vmax, scrollBarProc, 0); if (winp->pwin != FrontWindow()) HiliteControl(teinfo->vctrl, 255); } else { if (vvalue < 0) vvalue = 0; if (vvalue > vmax) vvalue = vmax; SetCtlMax(vctrl = teinfo->vctrl, vmax); SetCtlValue(vctrl, vvalue); if (moved) { MoveControl(vctrl, vrect->left, vrect->top); SizeControl(vctrl, vrect->right - vrect->left, vrect->bottom - vrect->top); ShowControl(vctrl); } } } if (!(winp->flags & NATE_NOHSCROLL)) { if (teinfo->hctrl == (ControlHandle) NULL) { teinfo->hctrl = NewControl(winp->pwin, hrect, "\p", true, hvalue, 0, hmax, scrollBarProc, 0); if (winp->pwin != FrontWindow()) HiliteControl(teinfo->hctrl, 255); } else { if (hvalue < 0) hvalue = 0; if (hvalue > hmax) hvalue = hmax; SetCtlMax(hctrl = teinfo->hctrl, hmax); SetCtlValue(hctrl, hvalue); if (moved) { MoveControl(hctrl, hrect->left, hrect->top); SizeControl(hctrl, hrect->right - hrect->left, hrect->bottom - hrect->top); ShowControl(hctrl); } } } }
/* * This should probably go in game.c */ void DrawStayButton() { int x; /* No game, no brainer */ if( stor.currplayer < 0 ) { ShowControl( btn_Stay, 0 ); return; } if( stor.flash ) { ShowControl( btn_Stay, 0 ); SetStatus( DS_MustClearFlash ); return; } if( stor.YMNWTBYM ) { ShowControl( btn_Stay, 0 ); SetStatus( DS_YMNWTBYM ); return; } if( stor.scorethisturn == 0 ) { ShowControl( btn_Stay, 0 ); SetStatus( 0 ); return; } if( stor.player[stor.currplayer].score == 0 && stor.scorethisturn < stor.openingroll ) { ShowControl( btn_Stay, 0 ); return; } /* If we aren't winning in last licks */ if( stor.leader >= 0 && ( stor.player[stor.leader].score > stor.currscore ) ) { ShowControl( btn_Stay, 0 ); return; } if( stor.flags & flag_Eclipse ) { /* Are we eclipsed? */ for( x = 0; x < stor.numplayers; x++ ) { if( x == stor.currplayer ) continue; if( stor.player[x].score == stor.currscore ) break; } if( x != stor.numplayers ) { ShowControl( btn_Stay, 0 ); SetStatus( DS_Eclipse ); return; } } /* Otherwise, show it */ ShowControl( btn_Stay, 1 ); SetStatus( 0 ); }
void DrawTopStatusButton() { if( stor.leader < 0 ) { ShowControl( btnTopStatus, 0 ); return; } if( stor.leader >= 0 ) { ShowControl( btnTopStatus, 1 ); CtlSetLabel( GetObjectPtr(btnTopStatus), LastLicksString ); return; } }
void CTDLFindTaskExpressionListCtrl::EditCell(int nItem, int nCol) { // handle new rules if (nItem == GetRuleCount() && nCol == ATTRIB) AddRule(); CWnd* pEdit = GetEditControl(nItem, nCol); ASSERT (pEdit); if (!pEdit) return; const SEARCHPARAM& sp = m_aSearchParams[nItem]; switch (nCol) { case ATTRIB: case OPERATOR: case ANDOR: ShowControl(*pEdit, nItem, nCol); break; case VALUE: if (sp.GetOperator() != FOP_SET && sp.GetOperator() != FOP_NOT_SET) { switch (sp.GetAttribType()) { case FT_DATE: case FT_TIME: ShowControl(*pEdit, nItem, nCol); break; default: PrepareEdit(nItem, nCol); if (pEdit == &m_editBox) CInputListCtrl::EditCell(nItem, nCol); else ShowControl(*pEdit, nItem, nCol); } } break; } }
void UpdateItemCount() { ControlID controlID = { kNSLSample, kServicesCountText }; ControlRef control; Str255 countStr; char count[16]; UInt32 itemCount; static UInt32 previousItemCount = 0; OSStatus err = noErr; err = GetControlByID(gMainWindow, &controlID, &control); if (err == noErr) { err = GetDataBrowserItemCount(gDataBrowserControl, 0, true, kDataBrowserItemAnyState, &itemCount); // Only update if the count has actually changed since last time. if (err == noErr && previousItemCount != itemCount) { previousItemCount = itemCount; NumToString (itemCount, countStr); CopyPascalStringToC(countStr, count); if (itemCount == 1) { strcat(count, " Item"); SetControlData(control, kControlNoPart, kControlEditTextTextTag, strlen(count), count); ShowControl(control); } else { strcat(count, " Items"); SetControlData(control, kControlNoPart, kControlEditTextTextTag, strlen(count), count); ShowControl(control); } DrawOneControl(control); DrawOneControl(gDataBrowserControl); } } }
BOOL CEffectsTab::OnInitDialog() { // Initialize the resize dialog base class CBaseTab::OnInitDialog(); EnableControl(IDC_SHARPEN, true); ShowControl(IDC_SHARPEN_APPLY, SW_HIDE); ShowControl(IDC_SHARPEN_CANCEL, SW_HIDE); m_SharpenSlider.EnableWindow(false); m_SharpenSlider.SetRange(0, 100); m_SharpenSlider.SetTicFreq(10); m_SharpenSlider.SetPos(0); EnableControl(IDC_SMOOTH, true); ShowControl(IDC_SMOOTH_APPLY, SW_HIDE); ShowControl(IDC_SMOOTH_CANCEL, SW_HIDE); m_SmoothSlider.EnableWindow(false); m_SmoothSlider.SetRange(0, 100); m_SmoothSlider.SetTicFreq(10); m_SmoothSlider.SetPos(0); EnableControl(IDC_EDGES, true); ShowControl(IDC_EDGES_APPLY, SW_HIDE); ShowControl(IDC_EDGES_CANCEL, SW_HIDE); m_EdgesSlider.EnableWindow(false); m_EdgesSlider.SetRange(0, 100); m_EdgesSlider.SetTicFreq(10); m_EdgesSlider.SetPos(0); return true; // return true unless you set the focus to a control }
void setwindowicons (CWindowPeek wp) { ControlHandle c; opendirinfo **infoh; infoh = (opendirinfo **) wp->refCon; for (c = wp->controlList; c != 0; c = (*c)->nextControl) { if (c != (*infoh)->sbar) { setoneicon (c); ShowControl (c); } } }
void UpdateTerminalWin(void) { GrafPtr oldPort; int i; Rect instMsgRect; GetPort(&oldPort); SetPort(gWPtr); if (!gInstallStarted) TEUpdate(&gControls->tw->startMsgBox, gControls->tw->startMsg); if (gControls->tw->dlProgressBar) { for (i = 0; i < kNumDLFields; ++i) { if (gControls->tw->dlLabels[i]) { ShowControl(gControls->tw->dlLabels[i]); } } // XXX TO DO // update the dl TEs } else if (gControls->tw->allProgressMsg) { HLock((Handle)gControls->tw->allProgressMsg); SetRect(&instMsgRect, (*gControls->tw->allProgressMsg)->viewRect.left, (*gControls->tw->allProgressMsg)->viewRect.top, (*gControls->tw->allProgressMsg)->viewRect.right, (*gControls->tw->allProgressMsg)->viewRect.bottom ); HUnlock((Handle)gControls->tw->allProgressMsg); TEUpdate(&instMsgRect, gControls->tw->allProgressMsg); } else { if (gControls->tw->saveBitsMsg) { TEUpdate(&gControls->tw->saveBitsMsgBox, gControls->tw->saveBitsMsg); } } SetPort(oldPort); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // AUMixer3DView::SetCheckbox // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void AUMixer3DView::SetCheckbox(OSType inSig, SInt32 inID, SInt16 inValue ) { WindowRef window = GetCarbonWindow(); ControlID controlID; controlID.signature = inSig; controlID.id = inID; ControlRef control; OSStatus result = ::GetControlByID(window, &controlID, &control ); if(result == noErr) { SetControlValue(control, int(inValue != 0 ) ); ShowControl(control); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // AUMixer3DView::SetRenderingAlgorithmControl // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void AUMixer3DView::SetRenderingAlgorithmControl(int inAlgorithm ) { WindowRef window = GetCarbonWindow(); ControlID controlID; controlID.signature = 'algo'; controlID.id = 0; ControlRef control; OSStatus result = ::GetControlByID(window, &controlID, &control ); if(result == noErr) { SetControlValue(control, inAlgorithm+1 ); ShowControl(control); } }
static void MoveSpotActionProc(ControlRef theControl, ControlPartCode partCode) { Rect bounds; GetControlBounds(theControl, &bounds); Point thePoint; if (partCode == kControlButtonPart) { GetMouse(&thePoint); gUserH = thePoint.h; gUserV = thePoint.v; if (gUserH < bounds.left+4) gUserH = bounds.left+4; if (gUserH > bounds.right-4) gUserH = bounds.right-4; if (gUserV < bounds.top+4) gUserV = bounds.top+4; if (gUserV > bounds.bottom-4) gUserV = bounds.bottom-4; // the erasing/drawing management is very complex to do properly // unless we just Hide and Show. This technique is OK if the control // is not too big on the screen and the machine is fast enough to // prevent flicker. If not then a better tracking would require // clipping management and calling the User Pane Draw Proc. HideControl(theControl); ShowControl(theControl); } }
void TkpDisplayMenuButton( ClientData clientData) /* Information about widget. */ { TkMenuButton *butPtr = (TkMenuButton *) clientData; Tk_Window tkwin = butPtr->tkwin; TkWindow * winPtr; Pixmap pixmap; MacMenuButton * mbPtr = (MacMenuButton *) butPtr; GWorldPtr dstPort; CGrafPtr saveWorld; GDHandle saveDevice; int hasImageOrBitmap = 0; int width, height; int err; ControlButtonGraphicAlignment theAlignment; Rect paneRect, cntrRect; butPtr->flags &= ~REDRAW_PENDING; if ((butPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { return; } pixmap = ( Pixmap )Tk_WindowId(tkwin); GetGWorld(&saveWorld, &saveDevice); dstPort = TkMacOSXGetDrawablePort(Tk_WindowId(tkwin)); SetGWorld(dstPort, NULL); TkMacOSXSetUpClippingRgn(Tk_WindowId(tkwin)); winPtr=(TkWindow *)butPtr->tkwin; paneRect.left=winPtr->privatePtr->xOff; paneRect.top=winPtr->privatePtr->yOff; paneRect.right=paneRect.left+Tk_Width(butPtr->tkwin)-1; paneRect.bottom=paneRect.top+Tk_Height(butPtr->tkwin)-1; cntrRect=paneRect; cntrRect.left+=butPtr->inset; cntrRect.top+=butPtr->inset; cntrRect.right-=butPtr->inset; cntrRect.bottom-=butPtr->inset; if (mbPtr->userPane) { MenuButtonControlParams params; bzero(¶ms, sizeof(params)); ComputeMenuButtonControlParams(butPtr, ¶ms ); if (bcmp(¶ms,&mbPtr->params,sizeof(params))) { if (mbPtr->userPane) { DisposeControl(mbPtr->userPane); mbPtr->userPane = NULL; mbPtr->control = NULL; } } } if (!mbPtr->userPane) { if (MenuButtonInitControl(mbPtr,&paneRect,&cntrRect ) ) { fprintf(stderr,"Init Control failed\n" ); return; } } SetControlBounds(mbPtr->userPane,&paneRect); SetControlBounds(mbPtr->control,&cntrRect); /* * We need to cache the title and its style */ if (!(mbPtr->flags&2)) { ControlTitleParams titleParams; int titleChanged; int styleChanged; ComputeControlTitleParams(butPtr,&titleParams); CompareControlTitleParams(&titleParams,&mbPtr->titleParams, &titleChanged,&styleChanged); if (titleChanged) { CFStringRef cf; cf = CFStringCreateWithCString(NULL, titleParams.title, kCFStringEncodingUTF8); if (hasImageOrBitmap) { SetControlTitleWithCFString(mbPtr->control, cf); } else { SetMenuItemTextWithCFString(mbPtr->menuRef, 1, cf); } CFRelease(cf); bcopy(titleParams.title,mbPtr->titleParams.title,titleParams.len+1); mbPtr->titleParams.len = titleParams.len; } if ((titleChanged||styleChanged) && titleParams .len) { if (hasImageOrBitmap) { if ((err=SetControlFontStyle(mbPtr->control,&titleParams.style))!=noErr) { fprintf(stderr,"SetControlFontStyle failed %d\n", err); return; } } bcopy(&titleParams.style,&mbPtr->titleParams.style,sizeof(titleParams.style)); } } if (butPtr->image != None) { Tk_SizeOfImage(butPtr->image, &width, &height); hasImageOrBitmap = 1; } else if (butPtr->bitmap != None) { Tk_SizeOfBitmap(butPtr->display, butPtr->bitmap, &width, &height); hasImageOrBitmap = 1; } if (hasImageOrBitmap) { mbPtr->picParams.srcRect.right = width; mbPtr->picParams.srcRect.bottom = height; /* Set the flag to circumvent clipping and bounds problems with OS 10.0.4 */ tkPictureIsOpen = 1; if (!(mbPtr->bevelButtonContent.u.picture = OpenCPicture(&mbPtr->picParams)) ) { fprintf(stderr,"OpenCPicture failed\n"); } /* * TO DO - There is one case where XCopyPlane calls CopyDeepMask, * which does not get recorded in the picture. So the bitmap code * will fail in that case. */ if (butPtr->image != NULL) { Tk_RedrawImage(butPtr->image, 0, 0, width, height, pixmap, 0, 0); } else { XCopyPlane(butPtr->display, butPtr->bitmap, pixmap, NULL, 0, 0, (unsigned int) width, (unsigned int) height, 0, 0, 1); } ClosePicture(); tkPictureIsOpen = 0; if ( (err=SetControlData(mbPtr->control, kControlButtonPart, kControlBevelButtonContentTag, sizeof(ControlButtonContentInfo), (char *) &mbPtr->bevelButtonContent)) != noErr ) { fprintf(stderr,"SetControlData BevelButtonContent failed, %d\n", err ); } switch (butPtr->anchor) { case TK_ANCHOR_N: theAlignment = kControlBevelButtonAlignTop; break; case TK_ANCHOR_NE: theAlignment = kControlBevelButtonAlignTopRight; break; case TK_ANCHOR_E: theAlignment = kControlBevelButtonAlignRight; break; case TK_ANCHOR_SE: theAlignment = kControlBevelButtonAlignBottomRight; break; case TK_ANCHOR_S: theAlignment = kControlBevelButtonAlignBottom; break; case TK_ANCHOR_SW: theAlignment = kControlBevelButtonAlignBottomLeft; break; case TK_ANCHOR_W: theAlignment = kControlBevelButtonAlignLeft; break; case TK_ANCHOR_NW: theAlignment = kControlBevelButtonAlignTopLeft; break; case TK_ANCHOR_CENTER: theAlignment = kControlBevelButtonAlignCenter; break; } if ((err=SetControlData(mbPtr->control, kControlButtonPart, kControlBevelButtonGraphicAlignTag, sizeof(ControlButtonGraphicAlignment), (char *) &theAlignment)) != noErr ) { fprintf(stderr,"SetControlData BevelButtonGraphicAlign failed, %d\n", err ); } } if (butPtr->flags & GOT_FOCUS) { HiliteControl(mbPtr->control,kControlButtonPart); } else { HiliteControl(mbPtr->control,kControlNoPart); } UpdateControlColors(mbPtr); if (mbPtr->flags&2) { ShowControl(mbPtr->control); ShowControl(mbPtr->userPane); mbPtr->flags ^= 2; } else { Draw1Control(mbPtr->userPane); SetControlVisibility(mbPtr->control, true, true); } if (hasImageOrBitmap) { KillPicture(mbPtr->bevelButtonContent.u.picture); } SetGWorld(saveWorld, saveDevice); }
void ShowTheControl ( int iControlID ) { ShowControl ( iControlID ); }
/* * This should probably go in game.c */ void DrawStayButton() { int x; /* By default: Show stay button, and set status to nothing */ Boolean stay = true; Int status = 0; /* No game, no brainer */ if( stor.currplayer < 0 ) { stay = false; goto end; } if( GetFlag( flag_FreightTrain ) ) { SetFlag( flag_FreightTrain, false ); status = DS_FreightTrain; stay = false; goto end; } if( stor.flash ) { stay = false; status = DS_MustClearFlash; goto end; } if( stor.YMNWTBYM ) { stay = false; status = DS_YMNWTBYM; goto end; } if( stor.scorethisturn == 0 ) { stay = false; goto end; } if( stor.player[stor.currplayer].score == 0 && stor.scorethisturn < stor.openingroll ) { status = DS_OpeningRoll; stay = false; goto end; } /* If we aren't winning in last licks */ if( stor.leader >= 0 && ( stor.player[stor.leader].score > stor.currscore ) ) { stay = false; goto end; } if( GetFlag( flag_Eclipse ) ) { /* Are we eclipsed? */ for( x = 0; x < stor.total; x++ ) { if( x == stor.currplayer ) continue; if( stor.player[x].score == stor.currscore ) break; } if( x != stor.total ) { stay = false; status = DS_Eclipse; goto end; } } /* Actually do what we need to do */ end: ShowControl( btn_Roll, 1 ); ShowControl( btn_Stay, stay ); SetFlag( flag_CanStay, stay ); SetStatus( status ); }
Boolean DialogGetNames() { FormPtr prevForm, frm; Word hitButton; Boolean retVal = false; CharPtr text; Int i; FieldPtr fp; VoidPtr vPtr; Word oIdx; // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmGetNames); // Set it FrmSetActiveForm(frm); // Set Controls for( i = stor.tmpplayers ; i<MaxPlayers ; i++ ) { fp = GetObjectPtr( fieldGetNamesPlayer[i] ); FldSetUsable ( fp, false ); FldEraseField( fp ); ShowControl( fieldGetNamesLabel[i], 0 ); } FrmDrawForm(frm); for( i=0; i < stor.tmpplayers ; i++ ) { SetFieldTextFromStr( fieldGetNamesPlayer[i], stor.player[i].name ); } FrmSetFocus( frm, FrmGetObjectIndex(frm, fieldGetNamesPlayer[0]) ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Get Controls if ( hitButton == btn_OK_frmGetNames ) { for( i=0 ; i<stor.tmpplayers ; i++ ) { oIdx = FrmGetObjectIndex( frm, fieldGetNamesPlayer[i]); vPtr = FrmGetObjectPtr( frm, oIdx ); text = FldGetTextPtr( vPtr ); StrCopy( stor.player[i].name, text ); } retVal = true; } // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } return retVal; }
void draw_shop_graphics(bool pressed,Rect clip_area_rect) // mode 1 - drawing dark for button press { Rect area_rect,item_info_from = {11,42,24,56}; Rect face_rect = {6,6,38,38}; Rect title_rect = {15,48,42,260}; Rect dest_rect,help_from = {85,36,101,54}; short faces[13] = {1,1,1,42,43, 1,1,1,1,1, 44,44,44}; short i,what_chosen; RGBColor c[7] = {{0,0,0},{0,0,32767},{0,0,14535},{0,0,26623},{0,0,59391}, {0,40959,0},{0,24575,0}}; Rect shopper_name = {44,6,56,260}; short current_pos; short cur_cost,what_magic_shop,what_magic_shop_item; char cur_name[60]; char cur_info_str[60]; char *cost_strs[] = {"Extremely Cheap","Very Reasonable","Pretty Average","Somewhat Pricey", "Expensive","Exorbitant","Utterly Ridiculous"}; GrafPtr old_port; cItemRec base_item; if (overall_mode != 21) { return; } GetPort(&old_port); SetPort(talk_gworld); TextFont(dungeon_font_num); TextSize(18); TextFace(0); if (pressed) { ClipRect(&clip_area_rect); } GetPortBounds(talk_gworld,&area_rect); FrameRect(&area_rect); InsetRect(&area_rect,1,1); tileImage(area_rect,bg_gworld,bg[12]); FrameRect(&shop_frame); // Place store icon if (!pressed) { SetPort(GetWindowPort(mainPtr)); i = faces[store_shop_type]; draw_dialog_graphic( talk_gworld, face_rect, i, PICT_TALK, false,1); SetPort( talk_gworld); } // Place name of store and shopper name RGBForeColor(&c[3]); dest_rect = title_rect; OffsetRect(&dest_rect,1,1); char_port_draw_string(talk_gworld,dest_rect,store_store_name,2,18); OffsetRect(&dest_rect,-1,-1); RGBForeColor(&c[4]); char_port_draw_string( talk_gworld,dest_rect,store_store_name,2,18); TextFont(geneva_font_num); TextSize(12); TextFace(bold); RGBForeColor(&c[3]); switch (store_shop_type) { case 3: sprintf(cur_name,"Healing for %s.",univ.party[current_pc].name.c_str()); break; case 10: sprintf(cur_name,"Mage Spells for %s.",univ.party[current_pc].name.c_str());break; case 11: sprintf(cur_name,"Priest Spells for %s.",univ.party[current_pc].name.c_str()); break; case 12: sprintf(cur_name,"Buying Alchemy.");break; case 4: sprintf(cur_name,"Buying Food.");break; default:sprintf(cur_name,"Shopping for %s.",univ.party[current_pc].name.c_str()); break; } char_port_draw_string( talk_gworld,shopper_name,cur_name,2,18); // Place help and done buttons ForeColor(blackColor); GetPortBounds(dlg_buttons_gworld[3][0],&help_from); talk_help_rect.right = talk_help_rect.left + help_from.right - help_from.left; talk_help_rect.bottom = talk_help_rect.top + help_from.bottom - help_from.top; rect_draw_some_item(dlg_buttons_gworld[3][pressed],help_from,talk_gworld,talk_help_rect); GetPortBounds(dlg_buttons_gworld[11][0],&help_from); //talk_help_rect.right = talk_help_rect.left + help_from.right - help_from.left; //talk_help_rect.bottom = talk_help_rect.top + help_from.bottom - help_from.top; rect_draw_some_item(dlg_buttons_gworld[11][pressed],help_from,talk_gworld,shop_done_rect); if (pressed) RGBForeColor(&c[4]); else ForeColor(blackColor); // Place all the items for (i = 0; i < 8; i++) { current_pos = i + GetControlValue(shop_sbar); if (store_shop_items[current_pos] < 0) break; // theoretically, this shouldn't happen cur_cost = store_shop_costs[current_pos]; what_chosen = store_shop_items[current_pos]; switch (what_chosen / 100) { case 0: case 1: case 2: case 3: case 4: base_item = get_stored_item(what_chosen); base_item.ident = true; draw_dialog_graphic( talk_gworld, shopping_rects[i][2],base_item.graphic_num,PICT_ITEM, false,1); strcpy(cur_name,base_item.full_name.c_str()); get_item_interesting_string(base_item,cur_info_str); break; case 5: base_item = store_alchemy(what_chosen - 500); draw_dialog_graphic( talk_gworld, shopping_rects[i][2],53,PICT_ITEM, false,1);//// all graphic nums strcpy(cur_name,base_item.full_name.c_str()); strcpy(cur_info_str,""); break; case 6: //base_item = food_types[what_chosen - 600]; //draw_dialog_graphic( talk_gworld, shopping_rects[i][2],633, false,1); //strcpy(cur_name,base_item.full_name); //get_item_interesting_string(base_item,cur_info_str); break; case 7: what_chosen -= 700; draw_dialog_graphic( talk_gworld, shopping_rects[i][2],99,PICT_ITEM, false,1); strcpy(cur_name,heal_types[what_chosen]); strcpy(cur_info_str,""); break; case 8: base_item = store_mage_spells(what_chosen - 800 - 30); draw_dialog_graphic( talk_gworld, shopping_rects[i][2],base_item.graphic_num,PICT_ITEM, false,1); strcpy(cur_name,base_item.full_name.c_str()); strcpy(cur_info_str,""); break; case 9: base_item = store_priest_spells(what_chosen - 900 - 30); draw_dialog_graphic( talk_gworld, shopping_rects[i][2],base_item.graphic_num,PICT_ITEM, false,1); strcpy(cur_name,base_item.full_name.c_str()); strcpy(cur_info_str,""); break; default: what_magic_shop = (what_chosen / 1000) - 1; what_magic_shop_item = what_chosen % 1000; base_item = univ.party.magic_store_items[what_magic_shop][what_magic_shop_item]; base_item.ident = true; draw_dialog_graphic( talk_gworld, shopping_rects[i][2],base_item.graphic_num,PICT_ITEM, false,1); strcpy(cur_name,base_item.full_name.c_str()); get_item_interesting_string(base_item,cur_info_str); break; } // Now draw item shopping_rects[i][7] // 0 - whole area, 1 - active area 2 - graphic 3 - item name // 4 - item cost 5 - item extra str 6 - item help button TextSize(12); char_port_draw_string( talk_gworld,shopping_rects[i][3],cur_name,0,12); sprintf(cur_name,"Cost: %d",cur_cost); char_port_draw_string( talk_gworld,shopping_rects[i][4],cur_name,0,12); TextSize(10); char_port_draw_string( talk_gworld,shopping_rects[i][5],cur_info_str,0,12); if ((store_shop_type != 3) && (store_shop_type != 4)) rect_draw_some_item(invenbtn_gworld,item_info_from,talk_gworld,shopping_rects[i][6],pressed ? srcCopy : transparent); } // Finally, cost info and help strs TextSize(12); sprintf(cur_name,"Prices here are %s.",cost_strs[store_cost_mult]); TextSize(10); char_port_draw_string( talk_gworld,bottom_help_rects[0],cur_name,0,12); char_port_draw_string( talk_gworld,bottom_help_rects[1],"Click on item name (or type 'a'-'h') to buy.",0,12); char_port_draw_string( talk_gworld,bottom_help_rects[2],"Hit done button (or Esc.) to quit.",0,12); if ((store_shop_type != 3) && (store_shop_type != 4)) char_port_draw_string( talk_gworld,bottom_help_rects[3],"'I' button brings up description.",0,12); ForeColor(blackColor); GetPortBounds(talk_gworld,&area_rect); ClipRect(&area_rect); SetPort(old_port); refresh_shopping(); ShowControl(shop_sbar); Draw1Control(shop_sbar); }