Creation/Dev/Script/Client/GuiMLTextCtrl

From Graal Bible
(Redirected from GuiMLTextCtrl)

Inherits GuiControl.

Description

Guicontrol multiline.png

Displays a multi-lined text which can contain several HTML-tags. This should be put in a GuiScrollCtrl to avoid text being clipped and not being displayed.

GuiMLTextCtrl is also used for displaying hints when moving the mouse over a GuiControl.


Variables

allowcolorchars - boolean

allowedtags - string

alpha - float

deniedsound - string

disallowedtags - string

maxchars - integer

parsetags - boolean

syntaxhighlighting - boolean

text - string

wordwrap - boolean

[v6] plaintext - string

Functions

addtext(str, bool) - adds text, second parameter specifies if it should automatically reflow; reflowing also updates width, height and line count, but if you plan to call addtext() several times then it's better to not let it reflow immediatelly because it can be slow on large text

getcursorline() - returns integer

getline(int) - returns string

getlinecount() - returns integer

getlines() - returns object - array of lines

gettext() - returns string

reflow()

scrolltobottom()

scrolltotag(int)

scrolltotop()

setlines(obj)

settext(str)

Events

onCursorLineChanged(line) - the cursor has been moved to another line

onSelectedTag(tagid) - an image inside the control has been clicked (<img src=imagefile id=tagid>-tag)

onURL(url) - an url has been clicked (<a href=url>-tag)

onReflow(newwidth,newheight) - the size of the displayed text has been changed


Tags

The text of multi-line text controls can contain a few HTML-tags and Torque-tags, you can use both of those tag types to define colors and fonts or to include images. The Torque-tags (previously added for compatibility) will be disabled in some time in the future, so it's recommended to use plain HTML tags. Currently following tags are available:

HTML:

<a href=url> text </a> - when the user clicks on 'text' then a 
  web browser is opened for the specified url (actually it is just 
  calling controlname.onURL(url) and the script needs to call openurl(url) then)
<b> text </b> - draws text with bold font
<body bgcolor=colorname or #rrggbb background=imagename> - sets the background color or image
<br> - line break
<center> text </center> - centers the contained text
<font face=fontname size=textsize color=colorname or #rrggbb> text </font>
  - draws text with a special font, size and color; you only
  need to define one of those 3 attributes
<h1> text </h1> .. <h6> text <h6> - draws text as a head line (with bigger fonts)
<hr> - draws a horizontal line
<i> text </i> - draws text with italic font
<ignorelinebreaks> </ignorelinebreaks> - go into normal HTML mode where
  you need to insert <br> to do a linebreak
<img src=filename id=integer> - an image is displayed, you 
  can also specify a tagid if you want to get onSelectTag-events
  for this image
<p align=left/center/right> text </p> - sets the alignment of the 
  contained text
<span style="width=100; height=100;" id=integer> </span> - for 
  displaying a subpage, you can also specifiy an id for 
  onSelectTag-events; instead of <span> you can also use <div> tags
<ul type="disc" or "square" or "circle"><li>item</li><li></li></ol> - displays a list, each item is indented
<ol><li>item</li></ol> - like <ul>, but is numerating each list item

Torque:

<a:url> text </a> - when the user clicks on 'text' then 
  a web browser is opened for the specified url
<bitmap:filename> - an image is displayed
<color:rrggbb> - sets the color of the text (hexadecimal value)
<lmargin:pixels> - sets the left margin for the text
<lmargin%:percent> - sets the size of the left margin depending 
  on the width of the whole control
<linkcolor:rrggbb> - sets the color of links (the <a>-tag)
<linkcolorhl:rrggbb> - sets the highlighted color, when
  the user moves the mouse over a link
<just:left/center/right> - sets the alignment of the following text
<rmargin:pixels> - sets the right margin for the text
<rmargin%:percent> - sets the size of the right margin depending 
  on the width of the whole control
<sbreak> - line break
<spush> - switches to a new style (like <font>)
<spop> - switches back to the last saved style (like </font>)
<tab:tab1,tab2,..> - sets the position of where tabulators should
  be displayed if you have text like 'Apple \t Egg \t Chicken'
<tag:id> - inserts an invisible tag which can be used
  for the scrollToTag(id) function (beside image-tags)

text

..

text
- draws text as a head line (with bigger fonts)
- draws a horizontal line

text - draws text with italic font <ignorelinebreaks> </ignorelinebreaks> - go into normal HTML mode where

 you need to insert 
to do a linebreak

<img src=filename id=integer> - an image is displayed, you

 can also specify a tagid if you want to get onSelectTag-events
 for this image

text

- sets the alignment of the
 contained text

- for

 displaying a subpage, you can also specifiy an id for 
onSelectTag-events; instead of you can also use
tags
  • item
  • - displays a list, each item is indented
    1. item
    - like
      , but is numerating each list item

      Torque:

      <a:url> text </a> - when the user clicks on 'text' then 
        a web browser is opened for the specified url
      <bitmap:filename> - an image is displayed
      <color:rrggbb> - sets the color of the text (hexadecimal value)
      <lmargin:pixels> - sets the left margin for the text
      <lmargin%:percent> - sets the size of the left margin depending 
        on the width of the whole control
      <linkcolor:rrggbb> - sets the color of links (the <a>-tag)
      <linkcolorhl:rrggbb> - sets the highlighted color, when
        the user moves the mouse over a link
      <just:left/center/right> - sets the alignment of the following text
      <rmargin:pixels> - sets the right margin for the text
      <rmargin%:percent> - sets the size of the right margin depending 
        on the width of the whole control
      <sbreak> - line break
      <spush> - switches to a new style (like <font>)
      <spop> - switches back to the last saved style (like </font>)
      <tab:tab1,tab2,..> - sets the position of where tabulators should
        be displayed if you have text like 'Apple \t Egg \t Chicken'
      <tag:id> - inserts an invisible tag which can be used
        for the scrollToTag(id) function (beside image-tags)
      

      Example

      new GuiMLTextCtrl("Test_MultiLineText") {
        profile = GuiBlueMLTextProfile;
        x = 10;
        y = 10;
        width = 160;
        height = 60;
        text = "<font size=24><i>Multiline-<br>Text</i></font>";
      }