BBjHtmlEdit::getPlainText

Description

In BBj 16.0 and higher, this method returns the plain text content of a BBjHtmlEdit control, without any HTML markup.

Syntax

Return Value

Method

string

getPlainText()

Parameters

None.

Return Value

Returns only the plain text content of a BBjHtmlEdit control.

Remarks

To return the complete HTML content, use getText.

N.B.: The BBjHtmlEdit control is always an HTML editor, intended to edit formatted text with HTML markup. This method is only a convenience, to return the plain text content with all HTML tags stripped out. Internally, this returns the JavaScript value document.body.innerText. If the content contains blank lines, this value is not guaranteed to return the same number of blank lines that the user sees in the editor. The BBjCEdit control may be a more appropriate choice if the application requires a very basic plain text editor.

Example

rem ' BBjHtmlEdit::getPlainText

sysgui = unt
open (sysgui)"X0"
sysgui! = bbjapi().getSysGui()
window! = sysgui!.addWindow(50,50,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$ + "</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",ERR=*NEXT)
            print stbl("!OPTIONS","JAVAFX_HTMLEDIT=FALSE",ERR=*NEXT)
            break
        case 2; rem ' JavaFX
            print stbl("!OPTIONS","CHROMIUM_HTMLEDIT=FALSE",ERR=*NEXT)
            print stbl("!OPTIONS","JAVAFX_HTMLEDIT=TRUE",ERR=*NEXT)
            break
        case 3; rem ' Chromium
            print stbl("!OPTIONS","CHROMIUM_HTMLEDIT=TRUE",ERR=*NEXT)
            print stbl("!OPTIONS","JAVAFX_HTMLEDIT=TRUE",ERR=*NEXT)
            break
    swend
endif
htmledit! = window!.addHtmlEdit(100,25,75,850,400,text$,flags$)
print "getClientType: ",htmledit!.getClientType(err=*next)
print "getClientVersion: ",htmledit!.getClientVersion(err=*next)
title$ = window!.getTitle() + " " + htmledit!.getClientType(err=*next) + " " + htmledit!.getClientVersion(err=*next)
window!.setTitle(title$)
htmledit!.setCallback(htmledit!.ON_PAGE_LOADED,"page")
htmledit!.setCallback(htmledit!.ON_EDIT_MODIFY,"modify")
font! = sysgui!.makeFont("Sans Serif",9,0)
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")
window!.setVisible(1)
showText = sysgui!.getAvailableContext()
isDirty = 0
process_events

eoj:
release

page:
    gosub event
    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
    wait 0
    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")
    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()
    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_CLOSE,"closeShowText")
    cedit! = showText!.addCEdit(101,0,0,0,0,text$,$0182$)
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::getText

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