BBjHtmlEdit::setPlainText

Description

In BBj 16.00 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/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>"

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

oops:
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
  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
Example Type: BBj

See Also

BBjAPI

BBjSysGui

BBjControl

BBjWindow

BBjHtmlEdit::setText

BBjHtmlEdit::getPlainText

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