/* 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); } } } }
ControlHandle getnewiconcontrol (WindowPtr wp, char **path, long parid, short vrefnum, Str255 s) { item **h; Rect r; ControlHandle c; SetRect (&r, 0, 0, ICONWIDTHUSED, ICONHEIGHTUSED); c = NewControl (wp, &r, s, false, 0, 0, 0, ICONCONTROL, 0); h = (item **) NewHandle (sizeof (item)); (*h)->path = path; (*h)->ioparid = parid; (*h)->vrefnum = vrefnum; (*h)->selected = false; (*h)->view = ICONVIEW; (*c)->contrlRfCon = 0L; (*c)->contrlData = (Handle) h; #ifdef THINK_C (*c)->contrlAction = (ProcPtr) -1L; #else (*c)->contrlAction = (ControlActionUPP) -1L; #endif return c; }
void UIFilePathEditor::AddCustomControls() { (*this) [ NewControl(UITextEdit, Path) .Expose(Editor) #if !USE_ELLIPSIS_CHARACTER + NewControl(UISpacer) + NewControl(UIButton, "Browse ...") .SetWidth(BROWSE_BUTTON_WIDTH) #else + NewControl(UIButton, "...") .SetWidth(20) #endif .SetCallback(BIND_MEM_CB(&UIFilePathEditor::OnBrowseClicked, this)) ]; }
void TkpDisplayScrollbar( ClientData clientData) /* Information about window. */ { register TkScrollbar *scrollPtr = (TkScrollbar *) clientData; register MacScrollbar *macScrollPtr = (MacScrollbar *) clientData; register Tk_Window tkwin = scrollPtr->tkwin; MacDrawable *macDraw; CGrafPtr saveWorld; GDHandle saveDevice; GWorldPtr destPort; WindowRef windowRef; if ((scrollPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { goto done; } /* * Draw the focus or any 3D relief we may have. */ if (scrollPtr->highlightWidth != 0) { GC fgGC, bgGC; bgGC = Tk_GCForColor(scrollPtr->highlightBgColorPtr, Tk_WindowId(tkwin)); if (scrollPtr->flags & GOT_FOCUS) { fgGC = Tk_GCForColor(scrollPtr->highlightColorPtr, Tk_WindowId(tkwin)); TkpDrawHighlightBorder(tkwin, fgGC, bgGC, scrollPtr->highlightWidth, Tk_WindowId(tkwin)); } else { TkpDrawHighlightBorder(tkwin, bgGC, bgGC, scrollPtr->highlightWidth, Tk_WindowId(tkwin)); } } Tk_Draw3DRectangle(tkwin, Tk_WindowId(tkwin), scrollPtr->bgBorder, scrollPtr->highlightWidth, scrollPtr->highlightWidth, Tk_Width(tkwin) - 2*scrollPtr->highlightWidth, Tk_Height(tkwin) - 2*scrollPtr->highlightWidth, scrollPtr->borderWidth, scrollPtr->relief); /* * Set up port for drawing Macintosh control. */ macDraw = (MacDrawable *) Tk_WindowId(tkwin); destPort = TkMacGetDrawablePort(Tk_WindowId(tkwin)); GetGWorld(&saveWorld, &saveDevice); SetGWorld(destPort, NULL); TkMacSetUpClippingRgn(Tk_WindowId(tkwin)); if (macScrollPtr->sbHandle == NULL) { Rect r; WindowRef frontNonFloating; r.left = r.top = 0; r.right = r.bottom = 1; macScrollPtr->sbHandle = NewControl((WindowRef) destPort, &r, "\p", false, (short) 500, 0, 1000, scrollBarProc, (SInt32) scrollPtr); /* * If we are foremost than make us active. */ if (TkMacHaveAppearance() >= 0x110) { frontNonFloating = FrontNonFloatingWindow(); } else { frontNonFloating = FrontWindow(); } if ((WindowPtr) destPort == FrontWindow() || TkpIsWindowFloating((WindowPtr) destPort)) { macScrollPtr->macFlags |= ACTIVE; } } /* * Update the control values before we draw. */ windowRef = (**macScrollPtr->sbHandle).contrlOwner; UpdateControlValues(macScrollPtr); if (macScrollPtr->macFlags & ACTIVE) { Draw1Control(macScrollPtr->sbHandle); if (macScrollPtr->macFlags & DRAW_GROW) { DrawGrowIcon(windowRef); } } else { (**macScrollPtr->sbHandle).contrlHilite = 255; Draw1Control(macScrollPtr->sbHandle); if (macScrollPtr->macFlags & DRAW_GROW) { DrawGrowIcon(windowRef); Tk_Fill3DRectangle(tkwin, Tk_WindowId(tkwin), scrollPtr->bgBorder, Tk_Width(tkwin) - 13, Tk_Height(tkwin) - 13, Tk_Width(tkwin), Tk_Height(tkwin), 0, TK_RELIEF_FLAT); } } SetGWorld(saveWorld, saveDevice); done: scrollPtr->flags &= ~REDRAW_PENDING; }
/* VARARGS ARGSUSED */ void TclpPanic TCL_VARARGS_DEF(CONST char *, format) { va_list varg; char msg[256]; WindowRef macWinPtr, foundWinPtr; Rect macRect; Rect buttonRect = PANIC_BUTTON_RECT; Rect iconRect = PANIC_ICON_RECT; Rect textRect = PANIC_TEXT_RECT; ControlHandle okButtonHandle; EventRecord event; Handle stopIconHandle; int part; Boolean done = false; va_start(varg, format); vsprintf(msg, format, varg); va_end(varg); /* * Put up an alert without using the Resource Manager (there may * be no resources to load). Use the Window and Control Managers instead. * We want the window centered on the main monitor. The following * should be tested with multiple monitors. Look and see if there is a way * not using qd.screenBits. */ macRect.top = (qd.screenBits.bounds.top + qd.screenBits.bounds.bottom) / 2 - (PANICHEIGHT / 2); macRect.bottom = (qd.screenBits.bounds.top + qd.screenBits.bounds.bottom) / 2 + (PANICHEIGHT / 2); macRect.left = (qd.screenBits.bounds.left + qd.screenBits.bounds.right) / 2 - (PANICWIDTH / 2); macRect.right = (qd.screenBits.bounds.left + qd.screenBits.bounds.right) / 2 + (PANICWIDTH / 2); macWinPtr = NewWindow(NULL, &macRect, "\p", true, dBoxProc, (WindowRef) -1, false, 0); if (macWinPtr == NULL) { goto exitNow; } okButtonHandle = NewControl(macWinPtr, &buttonRect, "\pOK", true, 0, 0, 1, pushButProc, 0); if (okButtonHandle == NULL) { CloseWindow(macWinPtr); goto exitNow; } SelectWindow(macWinPtr); SetCursor(&qd.arrow); stopIconHandle = GetIcon(kStopIcon); while (!done) { if (WaitNextEvent(mDownMask | keyDownMask | updateMask, &event, 0, NULL)) { switch(event.what) { case mouseDown: part = FindWindow(event.where, &foundWinPtr); if ((foundWinPtr != macWinPtr) || (part != inContent)) { SysBeep(1); } else { SetPortWindowPort(macWinPtr); GlobalToLocal(&event.where); part = FindControl(event.where, macWinPtr, &okButtonHandle); if ((kControlButtonPart == part) && (TrackControl(okButtonHandle, event.where, NULL))) { done = true; } } break; case keyDown: switch (event.message & charCodeMask) { case ENTERCODE: case RETURNCODE: HiliteControl(okButtonHandle, 1); HiliteControl(okButtonHandle, 0); done = true; } break; case updateEvt: SetPortWindowPort(macWinPtr); TextFont(systemFont); BeginUpdate(macWinPtr); if (stopIconHandle != NULL) { PlotIcon(&iconRect, stopIconHandle); } TETextBox(msg, strlen(msg), &textRect, teFlushDefault); DrawControls(macWinPtr); EndUpdate(macWinPtr); } } } CloseWindow(macWinPtr); exitNow: #ifdef TCL_DEBUG Debugger(); #else abort(); #endif }
void UIStartupDialog::InitUI() { guard(UIStartupDialog::InitUI); (*this) [ NewControl(UILabel, "Path to game files:") + NewControl(UIFilePathEditor, &Opt.GamePath) //!! could check file extensions in target directory and at least //!! set "engine" part of "game override", if it is not set yet ]; NewControl(UICheckboxGroup, "Override game detection", Opt.GameOverride != GAME_UNKNOWN) .SetParent(this) .Expose(OverrideGameGroup) [ NewControl(UIGroup, GROUP_HORIZONTAL_LAYOUT|GROUP_NO_BORDER) [ NewControl(UICombobox) .Expose(OverrideEngineCombo) .SetCallback(BIND_MEM_CB(&UIStartupDialog::FillGameList, this)) .SetWidth(EncodeWidth(0.4f)) + NewControl(UISpacer) + NewControl(UICombobox) .Expose(OverrideGameCombo) ] ]; // fill engines list int i; const char* lastEngine = NULL; const GameInfo* selectedGame = NULL; for (i = 0; /* empty */; i++) { const GameInfo &info = GListOfGames[i]; if (!info.Name) break; if (info.Enum == Opt.GameOverride) selectedGame = &info; const char* engine = GetEngineName(info.Enum); if (engine != lastEngine) { lastEngine = engine; OverrideEngineCombo->AddItem(engine); } } // select a game passed through the command line if (selectedGame) { OverrideEngineCombo->SelectItem(GetEngineName(selectedGame->Enum)); FillGameList(); OverrideGameCombo->SelectItem(selectedGame->Name); } #if 0 OverrideEngineCombo->SelectItem("Unreal engine 3"); // this engine has most number of game titles FillGameList(); #endif NewControl(UIGroup, "Engine classes to load", GROUP_HORIZONTAL_LAYOUT) .SetParent(this) [ NewControl(UIGroup, GROUP_NO_BORDER) [ NewControl(UILabel, "Common classes:") + NewControl(UICheckbox, "Skeletal mesh", &Opt.UseSkeletalMesh) + NewControl(UICheckbox, "Static mesh", &Opt.UseStaticMesh) + NewControl(UICheckbox, "Animation", &Opt.UseAnimation) + NewControl(UICheckbox, "Textures", &Opt.UseTexture) + NewControl(UICheckbox, "Lightmaps", &Opt.UseLightmapTexture) ] + NewControl(UIGroup, GROUP_NO_BORDER) [ NewControl(UILabel, "Export-only classes:") + NewControl(UICheckbox, "Sound", &Opt.UseSound) + NewControl(UICheckbox, "ScaleForm", &Opt.UseScaleForm) + NewControl(UICheckbox, "FaceFX", &Opt.UseFaceFx) ] ]; (*this) [ NewControl(UIGroup, GROUP_HORIZONTAL_LAYOUT|GROUP_NO_BORDER) [ NewControl(UIGroup, "Package compression", GROUP_HORIZONTAL_LAYOUT|GROUP_HORIZONTAL_SPACING) .SetWidth(EncodeWidth(0.35f)) .SetRadioVariable(&Opt.PackageCompression) [ NewControl(UIRadioButton, "Auto", 0) + NewControl(UIRadioButton, "LZO", COMPRESS_LZO) + NewControl(UIRadioButton, "zlib", COMPRESS_ZLIB) + NewControl(UIRadioButton, "LZX", COMPRESS_LZX) ] + NewControl(UISpacer) + NewControl(UIGroup, "Platform", GROUP_HORIZONTAL_LAYOUT|GROUP_HORIZONTAL_SPACING) .SetRadioVariable(&Opt.Platform) [ NewControl(UIRadioButton, "Auto", PLATFORM_UNKNOWN) + NewControl(UIRadioButton, "PC", PLATFORM_PC) + NewControl(UIRadioButton, "XBox360", PLATFORM_XBOX360) + NewControl(UIRadioButton, "PS3", PLATFORM_PS3) + NewControl(UIRadioButton, "iOS", PLATFORM_IOS) + NewControl(UIRadioButton, "Android", PLATFORM_ANDROID) ] ] ]; // dialog buttons NewControl(UIGroup, GROUP_HORIZONTAL_LAYOUT|GROUP_NO_BORDER) .SetParent(this) [ NewControl(UISpacer, -1) + NewControl(UIButton, "OK") .SetWidth(EncodeWidth(0.2f)) .SetOK() + NewControl(UISpacer) + NewControl(UIButton, "Cancel") .SetWidth(EncodeWidth(0.2f)) .SetCancel() ]; //!! - possibility to select a file to open, setup game path from it, //!! set file mask from known file extensions //!! - save log to file (-log=...) //!! - about/help unguard; }
static int TkMacOSXInitControl( MacButton *mbPtr, /* Mac button. */ GWorldPtr destPort, GC gc, Pixmap pixmap, Rect *paneRect, Rect *cntrRect) { TkButton *butPtr = (TkButton *) mbPtr; ControlRef rootControl; SInt16 procID, initialValue, minValue, maxValue; Boolean initiallyVisible; SInt32 controlReference; rootControl = TkMacOSXGetRootControl(Tk_WindowId(butPtr->tkwin)); mbPtr->windowRef = TkMacOSXDrawableWindow(Tk_WindowId(butPtr->tkwin)); /* * Set up the user pane. */ initiallyVisible = false; initialValue = kControlSupportsEmbedding|kControlHasSpecialBackground; minValue = 0; maxValue = 1; procID = kControlUserPaneProc; controlReference = (SInt32)mbPtr; mbPtr->userPane = NewControl(mbPtr->windowRef, paneRect, "\p", initiallyVisible, initialValue, minValue, maxValue, procID, controlReference); if (!mbPtr->userPane) { TkMacOSXDbgMsg("Failed to create user pane control"); return 1; } if (ChkErr(EmbedControl, mbPtr->userPane,rootControl) != noErr) { return 1; } SetUserPaneSetUpSpecialBackgroundProc(mbPtr->userPane, UserPaneBackgroundProc); SetUserPaneDrawProc(mbPtr->userPane,UserPaneDraw); initiallyVisible = false; TkMacOSXComputeControlParams(butPtr,&mbPtr->params); mbPtr->control = NewControl(mbPtr->windowRef, cntrRect, "\p", initiallyVisible, mbPtr->params.initialValue, mbPtr->params.minValue, mbPtr->params.maxValue, mbPtr->params.procID, controlReference); if (!mbPtr->control) { TkMacOSXDbgMsg("Failed to create control of type %d\n", procID); return 1; } if (ChkErr(EmbedControl, mbPtr->control,mbPtr->userPane) != noErr ) { return 1; } mbPtr->flags |= (CONTROL_INITIALIZED | FIRST_DRAW); if (IsWindowActive(mbPtr->windowRef)) { mbPtr->flags |= ACTIVE; } return 0; }
P9(PUBLIC pascal trap, ListHandle, LNew, Rect *, rview, /* IMIV-270 */ Rect *, bounds, Point, csize, INTEGER, proc, WindowPtr, wind, BOOLEAN, draw, BOOLEAN, grow, BOOLEAN, scrollh, BOOLEAN, scrollv) { ListHandle retval; ListPtr lp; INTEGER noffs, min, max; INTEGER *ip; Rect r; int i; DataHandle tempdatah; Handle temph; LISTDECL(); noffs = (CW(bounds->right) - CW(bounds->left)) * (CW(bounds->bottom) - CW(bounds->top)) +1; retval = (ListHandle) NewHandle(sizeof(ListRec) - sizeof(HxX(retval, cellArray)) + (noffs+1) * sizeof(INTEGER)); if (!retval) /*-->*/ return 0; /* couldn't allocate memory */ temph = RM(GetResource(TICK("LDEF"), proc)); if (!(HxX(retval, listDefProc) = temph)) { DisposHandle((Handle) retval); /*-->*/ return 0; /* spooey list definition proc */ } TRAPBEGIN(); tempdatah = RM((DataHandle) NewHandle(0)); HxX(retval, cells) = tempdatah; HLock((Handle) retval); lp = STARH(retval); lp->dataBounds = *bounds; lp->rView = *rview; lp->port = RM(wind); lp->indent.h = 0; lp->indent.v = 0; lp->selFlags = 0; #if defined (STEF_lActivefix) lp->lActive = TRUE; #else lp->lActive = FrontWindow() == wind; #endif lp->lReserved = 0; lp->clikTime = 0; lp->clikLoc.h = CWC(-32768); lp->clikLoc.v = CWC(-32768); lp->mouseLoc.h = -1; lp->mouseLoc.v = -1; lp->lClikLoop = 0; lp->lastClick.h = -1; lp->lastClick.v = -1; lp->refCon = 0; lp->userHandle = (Handle) 0; lp->maxIndex = -1; /* What is this anyway? */ ip = (INTEGER *) lp->cellArray; for (i = 0; i <= noffs; i++) *ip++ = 0; lp->visible.top = bounds->top; lp->visible.left = bounds->left; lp->vScroll = 0; lp->hScroll = 0; C_LCellSize(csize, retval); /* sets cellSize and visible */ lp->listFlags = draw ? DODRAW : 0; if (scrollv) { r = lp->rView; r.top = CW(CW(r.top) - 1); r.left = r.right; r.right = CW(CW(r.right) + (16)); r.bottom = CW(CW(r.bottom) + 1); ROMlib_vminmax(&min, &max, lp); lp->vScroll = RM(NewControl((WindowPtr) wind, &r, (StringPtr) "", draw && lp->lActive, min, min, max, scrollBarProc, (LONGINT) 0)); STARH(MR(lp->vScroll))->contrlRfCon = RM((LONGINT) (long) retval); lp->listFlags |= lDoVAutoscroll; } if (scrollh) { r = lp->rView; r.left = CW(CW(r.left) - 1); r.top = r.bottom; r.bottom = CW(CW(r.bottom) + (16)); r.right = CW(CW(r.right) + 1); ROMlib_hminmax(&min, &max, lp); lp->hScroll = RM(NewControl((WindowPtr) wind, &r, (StringPtr) "", draw && lp->lActive, min, min, max, scrollBarProc, (LONGINT) 0)); STARH(MR(lp->hScroll))->contrlRfCon = RM((LONGINT) (long) retval); lp->listFlags |= lDoHAutoscroll; } HUnlock((Handle) retval); LISTBEGIN(retval); LISTCALL(lInitMsg, FALSE, (Rect *)0, * (Cell *)&lp->clikLoc, 0, 0, retval); LISTEND(retval); TRAPEND(); #if defined (LIST_DEBUG) add_list (retval); #endif return retval; }
CWindowPtr createdirwindow (CInfoPBRec *dir, Rect *r, char **path, short volume) { CWindowPeek wp; short i; OSErr e; Str255 s; opendirinfo **infoh; ControlHandle c; if (executor_p ()) { CInfoPBRec cpb; OSErr e2; cpb = *dir; e2 = unixmount (&cpb); if (e2 == noErr) volume = cpb.hFileInfo.ioVRefNum; } tail (*path, s); wp = (CWindowPeek) NewPtr (sizeof (CWindowRecord)); wp = (CWindowPeek) NewCWindow (wp, r, s, false, documentProc, (WindowPtr) 0, true, 0); wp->refCon = (long) NewHandle (sizeof (opendirinfo)); infoh = (opendirinfo **) wp->refCon; #if 1 /* This handle should be unlocked later, but it isn't for Executor 1.99m */ HLock ((Handle) infoh); #endif /* 0 */ (*infoh)->sortorder = ALPHABETIC; (*infoh)->items = (ControlHandle (**)[]) NewHandle (BANDARRAYSIZE * sizeof (ControlHandle)); (*infoh)->path = path; (*infoh)->iodirid = dir->dirInfo.ioDrDirID; (*infoh)->vrefnum = volume; (*infoh)->numitems = 0; (*infoh)->view = ICONVIEW; /* NOTE: r is the wrong rectangle, but it gets fixed before it's used. */ (*infoh)->sbar = NewControl ((WindowPtr) wp, r, (StringPtr) "\p", false, 0, 0, 0, scrollBarProc, 0); MoveControl ((*infoh)->sbar, wp->port.portRect.right - SCROLLBARWIDTH, 0); dir->hFileInfo.ioNamePtr = s; dir->hFileInfo.ioVRefNum = volume; e = noErr; for (i = 1; e == noErr; i++) { checkgrowitemarray (i, (*infoh)->items); dir->hFileInfo.ioDirID = (*infoh)->iodirid; dir->hFileInfo.ioFDirIndex = i; e = PBGetCatInfo (dir, false); if (e == noErr && !(dir->hFileInfo.ioFlFndrInfo.fdFlags & fInvisible)) { c = addtolist ((WindowPeek) wp, s, dir->hFileInfo.ioFlParID, volume); if (dir->hFileInfo.ioFlFndrInfo.fdType == 'APPL' || dir->hFileInfo.ioFlFndrInfo.fdType == 'dfil') hashicons (c); } } setwindowicons (wp); straightenwindow ((WindowPtr) wp); return (CWindowPtr) wp; }
void UIProgressDialog::InitUI() { (*this) [ NewControl(UIGroup) [ NewControl(UILabel, "") .Expose(DescriptionLabel) + NewControl(UISpacer) + NewControl(UILabel, "") .Expose(PackageLabel) + NewControl(UIProgressBar) .Expose(ProgressBar) ] + NewControl(UIGroup) [ NewControl(UIGroup, GROUP_HORIZONTAL_LAYOUT|GROUP_NO_BORDER) [ NewControl(UILabel, "Memory used:", TA_Right) + NewControl(UISpacer) + NewControl(UILabel, "") .Expose(MemoryLabel) ] + NewControl(UIGroup, GROUP_HORIZONTAL_LAYOUT|GROUP_NO_BORDER) [ NewControl(UILabel, "Objects loaded:", TA_Right) + NewControl(UISpacer) + NewControl(UILabel, "") .Expose(ObjectsLabel) ] ] + NewControl(UIGroup, GROUP_HORIZONTAL_LAYOUT|GROUP_NO_BORDER) [ NewControl(UISpacer, -1) + NewControl(UIButton, "Cancel") .SetWidth(100) .SetCancel() + NewControl(UISpacer, -1) ] ]; }