BBjHtmlEdit::setPlainText

Description

In BBj 16.0 and higher, this method sets the text content of a BBjHtmlEdit control.

Syntax

Return Value

Method

void

setPlainText(string text)

void setPlainText(string text, string head)

Parameters

Variable

Description

text

Specifies the text content to be displayed in the control.

head

In BBj 21.13 and higher, specifies the HTML markup to be inserted between the <head> and </head> tags.

The default is: "<style>body{white-space:pre-wrap;}</style>"

Return Value

None.

Remarks

Internally, the BBjHtmlEdit control is always an HTML editor. The BBjCEdit control may be a more appropriate choice if the application requires a very basic plain text editor. BBjHtmlEdit::setPlainText wraps your text in HTML markup code telling the control to display it as plain text. If htmledit! is your BBjHtmlEdit control and text$ is plain text to be displayed in it, then htmledit!.setPlainText(text$) is equivalent to the following:

text$ = "The quick brown fox jumps over the lazy dog."

html! = text$

html! = html!.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")

header$ = "<html><head><style>body{white-space:pre-wrap;}</style></head><body><pre>"

trailer$ = "</pre></body></html>"

html$ = header$ + html! + trailer$

htmledit!.setText(html$)

Example

rem ' BBjHtmlEdit::setPlainText

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/sites/basis.com/files/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::setText

BBjHtmlEdit::getPlainText

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