BBjHtmlEdit::setLocale

Description

In BBj 21.13 and higher, this method sets the UI Locale of a BBjHtmlEdit control.

Syntax

Return Value Method
void setLocale(string locale)

Parameters

Variable Description
locale Specifies the UI locale of the BBjHtmlEdit control.

Return Value

None.

Remarks

The set of available locales is defined by the underlying client implementation. See BBjHtmlEdit::getLocales.

Example

rem ' BBjHtmlEdit::setLocale

sysgui = unt
open (sysgui)"X0"
sysgui! = bbjapi().getSysGui()
window! = sysgui!.addWindow(25,25,900,500,"BBjHtmlEdit",$00090083$)
window!.setCallback(window!.ON_CLOSE,"eoj")
window!.setCallback(window!.ON_RESIZE,"resize")

rem ' $0001$ = disabled, $0010$ = invisible
rem ' $0002$ = minimized toolbar, $0004$ = basic toolbar
flags$ = $0000$
basic = 0, minimized = 0
if minimized then flags$ = ior(flags$,$0002$)
if basic then flags$ = ior(flags$,$0004$)
text$ = "<html><head><style>p{margin:0;padding:0;}</style><title>BASIS</title></head><body>"
img$ = "https://www.basis.cloud/images/BusJGBetter.jpg"
text$ = text$ + "<img src="""+img$+""">"
url$ = "https://documentation.basis.cloud/BASISHelp/WebHelp/bbjobjects/Window/bbjhtmledit/BBjHtmlEdit.htm"
text$ = text$ + "<p>This is a <a href="""+url$+""">BBjHtmlEdit</a>."
text$ = text$ + "<p>English color colour sample."
text$ = text$ + "<p>Das ist deutsch."
text$ = text$ + "<p>C'est du français."
text$ = text$ + "<p>Esto es español."
text$ = text$ + "</body></html>"

rem 'goto oops
text = unt
open (text,err=oops)"htmledit.html"
readrecord (text,siz=999999)text$
close (unt)

oops:
client = 0
if (info(3,6)<>"5" and info(3,6)<>"6") then
    client = msgbox("BBjHtmlEdit Client",7+32+512,"BBjHtmlEdit","Swing","JavaFX","Chromium")
    switch client
        case 1; rem ' Swing
            print stbl("!OPTIONS","CHROMIUM_HTMLEDIT=FALSE")
            print stbl("!OPTIONS","JAVAFX_HTMLEDIT=FALSE")
            break
        case 2; rem ' JavaFX
            print stbl("!OPTIONS","CHROMIUM_HTMLEDIT=FALSE")
            print stbl("!OPTIONS","JAVAFX_HTMLEDIT=TRUE")
            break
        case 3; rem ' Chromium
            print stbl("!OPTIONS","CHROMIUM_HTMLEDIT=TRUE")
            print stbl("!OPTIONS","JAVAFX_HTMLEDIT=TRUE")
            break
    swend
endif
htmledit! = window!.addHtmlEdit(100,25,75,850,400,text$,flags$)
print "getClientType: ",htmledit!.getClientType()
print "getClientVersion: ",htmledit!.getClientVersion()
title$ = window!.getTitle() + " " + htmledit!.getClientType() + " " + htmledit!.getClientVersion()
window!.setTitle(title$)
htmledit!.setCallback(htmledit!.ON_PAGE_LOADED,"page")
htmledit!.setCallback(htmledit!.ON_EDIT_MODIFY,"modify")
htmledit!.setCallback(htmledit!.ON_GAINED_FOCUS,"event")
htmledit!.setCallback(htmledit!.ON_LOST_FOCUS,"event")
htmledit!.setCallback(htmledit!.ON_MOUSE_ENTER,"event")
htmledit!.setCallback(htmledit!.ON_MOUSE_EXIT,"event")
htmledit!.setCallback(htmledit!.ON_POPUP_REQUEST,"event")
htmledit!.setCallback(htmledit!.ON_RIGHT_MOUSE_DOWN,"event")
font = iff(info(3,6)="5" or info(3,6)="6",11,8)
font! = sysgui!.makeFont("SansSerif",font,BBjFont.BOLD)
clientfilesystem! = null()
clientfilesystem! = bbjapi().getThinClient(err=*next).getClientFileSystem(err=*next)
flags$ = iff(clientfilesystem!=null(),$0001$,$0000$)
clientfile! = window!.addButton(101,25,25,120,25,"Open Client File",flags$)
clientfile!.setFont(font!)
clientfile!.setCallback(clientfile!.ON_BUTTON_PUSH,"clientfile")
serverfile! = window!.addButton(102,150,25,120,25,"Open Server File",$$)
serverfile!.setFont(font!)
serverfile!.setCallback(serverfile!.ON_BUTTON_PUSH,"serverfile")
newHtml! = window!.addButton(103,275,25,120,25,"New HTML Doc",$$)
newHtml!.setFont(font!)
newHtml!.setCallback(newHtml!.ON_BUTTON_PUSH,"newHtml")
newText! = window!.addButton(104,400,25,120,25,"New Text Doc",$$)
newText!.setFont(font!)
newText!.setCallback(newText!.ON_BUTTON_PUSH,"newText")
getText! = window!.addButton(105,525,25,120,25,"getText (HTML)",$$)
getText!.setFont(font!)
getText!.setCallback(getText!.ON_BUTTON_PUSH,"getText")
getPlainText! = window!.addButton(106,650,25,120,25,"getPlainText",$$)
getPlainText!.setFont(font!)
getPlainText!.setCallback(getPlainText!.ON_BUTTON_PUSH,"getPlainText")
getImage! = window!.addButton(107,775,25,120,25,"getImage",$$)
getImage!.setFont(font!)
getImage!.setCallback(getImage!.ON_BUTTON_PUSH,"getImage")
setLocale! = window!.addListButton(108,25,50,120,425,"",$0000$)
locales! = htmledit!.getLocales()
if (locales!.size() = 0) then
    setLocale!.setText("en_US")
else
    setLocale!.insertItems(-1,locales!)
endif
locale$ = htmledit!.getLocale()
setLocale!.setToolTipText("setLocale")
setLocale!.setCallback(setLocale!.ON_LIST_SELECT,"setLocale")
htmledit!.setLocale(stbl("!LOCALE"))
spellChecked! = window!.addCheckBox(109,150,50,120,25,"Spell Checked",$$)
spellChecked!.setToolTipText("setSpellChecked")
spellChecked!.setCallback(spellChecked!.ON_CHECK_ON,"spellCheckedOn")
spellChecked!.setCallback(spellChecked!.ON_CHECK_OFF,"spellCheckedOff")
setSpellCheckLanguage! = window!.addListButton(110,275,50,120,425,"",$0000$)
languages! = htmledit!.getAvailableSpellCheckLanguages()
if (languages!.size() = 0) then
    setSpellCheckLanguage!.setText("en_US")
else
    setSpellCheckLanguage!.insertItems(-1,languages!)
endif
setSpellCheckLanguage!.setToolTipText("setSpellCheckLanguage")
setSpellCheckLanguage!.setCallback(setSpellCheckLanguage!.ON_LIST_SELECT,"setSpellCheckLanguage")
window!.setVisible(1)
showText = sysgui!.getAvailableContext()
isDirty = 0
print htmledit!.getCharset()
process_events

eoj:
release

setLocale:
    event! = sysgui!.getLastEvent()
    locale$ = event!.getSelectedItem()
    htmledit!.setLocale(locale$)
    print "getLocale ",htmledit!.getLocale()
return

spellCheckedOn:
    htmledit!.setSpellChecked(1)
    print "isSpellChecked ",htmledit!.isSpellChecked()
return

spellCheckedOff:
    htmledit!.setSpellChecked(0)
    print "isSpellChecked ",htmledit!.isSpellChecked()
return

setSpellCheckLanguage:
    event! = sysgui!.getLastEvent()
    language$ = event!.getSelectedItem()
    htmledit!.setSpellCheckLanguage(language$)
    print "getSpellCheckLanguage ",htmledit!.getSpellCheckLanguage()
    print "getAvailableSpellCheckLanguages ",htmledit!.getAvailableSpellCheckLanguages()
return

page:
    gosub event

    rem 'i = msgbox(str(event!.getText()),0,event!.getEventName())
    if (isDirty) then
        text$ = htmledit!.getPlainText()
        title$ = "BBjHtmlEdit::getPlainText"
        isDirty = 0
        gosub showText
    else
        htmledit!.focus()
    endif
return

resize:
    gosub event
    width = event!.getWidth() - 50
    height = event!.getHeight() - 100
    htmledit!.setSize(width,height)
    print width,height
    htmledit!.focus()
return

event:
    event! = sysgui!.getLastEvent()
    print event!.getEventName()," ",event!.getControl()
return

clientfile:
    filter$ = "All Files (*.*)"+$0a$+"*.*"
    filter$ = filter$ + $0a$ + "HTML"+$0a$+"*.htm;*.html"
    filter$ = filter$ + $0a$ + "Text" + $0a$+"*.txt;*.src"
    clientfile$ = fileopen("Open Client File","","","",filter$,mode="client")
    if pos("::"=clientfile$) then return
    clientfile! = clientfilesystem!.getClientFile(clientfile$)
    serverfile$ = clientfile!.copyFromClient()
    serverfile = unt
    open (serverfile,err=*return)serverfile$
    bytes = dec(fin(serverfile)(1,4))
    text$ = ""
    if bytes then readrecord (serverfile,siz=bytes)text$
    close (serverfile)
    if (fnIsText(clientfile$,text$)) then
        htmledit!.setPlainText(text$); rem ' text
    else
        htmledit!.setText(text$); rem ' html
    endif
return

serverfile:
    filter$ = "All Files (*.*)"+$0a$+"*.*"
    filter$ = filter$ + $0a$ + "HTML"+$0a$+"*.htm;*.html"
    filter$ = filter$ + $0a$ + "Text" + $0a$+"*.txt;*.src"
    serverfile$ = fileopen("Open Server File","","","",filter$,mode="server,style=style")
    if pos("::"=serverfile$) then return
    serverfile = unt
    open (serverfile,err=*return)serverfile$
    bytes = dec(fin(serverfile)(1,4))
    text$ = ""
    if bytes then readrecord (serverfile,siz=bytes)text$
    close (serverfile)
    if (fnIsText(serverfile$,text$)) then
        htmledit!.setPlainText(text$); rem ' text
    else
        htmledit!.setText(text$); rem ' html
    endif
return

newHtml:
    new$ = "<html><head><style>p{margin:0;padding:0;}</style></head><body></body></html>"
    htmledit!.setText(new$)
return

newText:
    htmledit!.setPlainText(new String($000a00a0000a$,"UTF-16"))
return

getText:
    text$ = htmledit!.getText()
    title$ = "BBjHtmlEdit::getText"
    gosub showText
return

getPlainText:
    if isDirty then return
    isDirty = htmledit!.isDirty()
    if isDirty then return
    text$ = htmledit!.getPlainText()
    System.err.println(hta(text$))
    title$ = "BBjHtmlEdit::getPlainText"
    gosub showText
return

getImage:
    image = unt
    format$ = "png"
    image! = htmledit!.getImage()
    image$ = image!.getBytes(format$)
    path$ = System.getProperty("user.home")+"/Desktop/"
    open (image,mode="O_CREATE,O_TRUNC")path$+"html.png"
    writerecord (image)image$
    close (image)
return

showText:
    gosub closeShowText
    x = window!.getX() + 25
    y = window!.getY() + 25
    w = window!.getWidth()
    h = window!.getHeight()
    showText! = sysgui!.addWindow(showText,x,y,w,h,title$,$000b0003$)
    showText!.setCallback(showText!.ON_RESIZE,"resizeShowText")
    showText!.setCallback(showText!.ON_CLOSE,"closeShowText")
    cedit! = showText!.addCEdit(101,0,0,w,h,text$,$0182$)
return

resizeShowText:
    event! = sysgui!.getLastEvent()
    cedit!.setSize(event!.getWidth(),event!.getHeight())
return

closeShowText:
    if showText!<>null() then showText!.destroy(err=*next); showText! = null()
return

def fnIsText(_f$,_t$)
    rem ' treat this file (filename = _f$, contents = _t$) as plain text?
    rem ' this can be whatever combination of tests works for you.
    print "fnIsText ",_f$," (bytes=",str(len(_t$)),"): ",
    if pos("<html>"=cvs(_t$,8))=1 then print "<html> = html"; return 0
    _f$ = cvs(_f$,8); rem ' lowercase
    if pos(".html"=_f$,-1)=len(_f$)-4 then print ".html = html"; return 0
    if pos(".htm"=_f$,-1)=len(_f$)-3 then print ".htm = html"; return 0
    if pos(".txt"=_f$,-1)=len(_f$)-3 then print ".txt = text"; return 1
    if pos(".src"=_f$,-1)=len(_f$)-3 then print ".src = text"; return 1
    if pos(".properties"=_f$,-1)=len(_f$)-10 then print ".properties = text"; return 1
    print "default to text"; return 1; rem ' pick a default
fnend

modify:
    event! = sysgui!.getLastEvent()
    print event!.getEventName()," ",event!.getText()
return

See Also

BBjAPI

BBjSysGui

BBjControl

BBjWindow

BBjHtmlEdit::getLocale

BBjHtmlEdit::getLocales

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