BBjFontChooser::approveSelection

Description

In BBj 7.0 and higher, this method sets the text of the BBjFontChooser's [OK] button.

Syntax

Return Value

Method

void

approveSelection()

Parameters

None.

Return Value

None.

Remarks

Although this is a programmatic action, invoking this method causes the BBjFontChooser to dispatch an ON_FONTCHOOSER_APPROVE event, including sending the current font. Use this to simulate clicking the [OK] button.

Example

REM This sample displays a BBjFontChooser in a window, then times out
REM after 5 seconds and prints the currently selected color. The default
REM color is Times New Roman Bold 24

REM Obtain the instance of the BBjAPI object
LET myAPI!=BBjAPI()

REM Open the SysGui device
SYSGUI=UNT
OPEN (SYSGUI)"X0"

REM Obtain the instance of the BBjSysGui object
LET mySysGui!=myAPI!.getSysGui()

REM Set addWindow param values
X=100
Y=100
WIDTH=400
HEIGHT=250
TITLE$="BBjFontChooser"

REM Create a window
myWindow! = mySysGui!.addWindow(X,Y,WIDTH,HEIGHT,TITLE$,$00010003$)

REM Create font
myFont! = mySysGui!.makeFont("Times New Roman", 24, mySysGui!.BOLD)

REM Add a font chooser on the window
myFontChooser! = myWindow!.addFontChooser(101,0,0,WIDTH,HEIGHT,myFont!)

REM Register the CALLBACK routines
CALLBACK(ON_FONTCHOOSER_APPROVE,APPROVE,mySysGui!.getContext(),myFontChooser!.getID())
CALLBACK(ON_FONTCHOOSER_CANCEL,CANCEL,mySysGui!.getContext(),myFontChooser!.getID())
CALLBACK(ON_RESIZE,RESIZE,mySysGui!.getContext())
CALLBACK(ON_CLOSE,CANCEL,mySysGui!.getContext())

REM Set timer for approve selection dialog
myAPI!.createTimer("timeout", 5, "ACCEPT_FONT")

REM Process Events
PROCESS_EVENTS

RESIZE:
myFontChooser!.setSize(myWindow!.getWidth(),myWindow!.getHeight())
RETURN

REM Callback routine called when the fontchooser's OK button is pressed
APPROVE:
REM Display a message with the approprate font
gosub FontInfo
message$="Selected font: "+info$
GOTO FINISH

FontInfo:
Font!=myFontChooser!.getSelectedFont()
name$=Font!.getName()
style=Font!.getStyle()
size=Font!.getSize()
if style=0 then
    style$="Plain"
    html$=str(size)+"px "+name$
else
    style$=""
    if fnIsBitSet(style,Font!.FONT_BOLD) then
      style$=style$+"Bold "
    endif
    if fnIsBitSet(style,Font!.FONT_ITALIC) then
      style$=style$+"Italic "
    endif
    style$=cvs(style$,3)
    html$=cvs(style$,8)+" "+str(size)+"px "+name$
endif
info$=name$+" "+style$+" "+str(size)
return

def fnIsBitSet(value,bit)
return sgn(dec(and(bin(value,4),bin(bit,4))))
fnend

REM Callback routine called when the fontchooser's Cancel button is
REM pressed or the window is closed without selecting a font
CANCEL:
REM Display a message notifying of the cancel
MESSAGE$="No font was chosen!"
GOTO FINISH

REM Timeout -- select the current font
ACCEPT_FONT:
myAPI!.removeTimer("timeout",err=SKIP_APPROVE)
myFontChooser!.approveSelection()
SKIP_APPROVE:
RETURN

FINISH:
myAPI!.removeTimer("timeout",err=*next)
myWindow!.destroy()
REM Display a message with the selected font
PRINT MESSAGE$
WAIT 5
RELEASE

See Also

BBjAPI

BBjSysGui

BBjWindow

BBjFontChooser

See the BBj Object Diagram for an illustration of the relationship between BBj Objects.