RichTextLabel.xml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <class name="RichTextLabel" inherits="Control" version="3.4">
  3. <brief_description>
  4. Label that displays rich text.
  5. </brief_description>
  6. <description>
  7. Rich text can contain custom text, fonts, images and some basic formatting. The label manages these as an internal tag stack. It also adapts itself to given width/heights.
  8. [b]Note:[/b] Assignments to [member bbcode_text] clear the tag stack and reconstruct it from the property's contents. Any edits made to [member bbcode_text] will erase previous edits made from other manual sources such as [method append_bbcode] and the [code]push_*[/code] / [method pop] methods.
  9. [b]Note:[/b] RichTextLabel doesn't support entangled BBCode tags. For example, instead of using [code][b]bold[i]bold italic[/b]italic[/i][/code], use [code][b]bold[i]bold italic[/i][/b][i]italic[/i][/code].
  10. [b]Note:[/b] Unlike [Label], RichTextLabel doesn't have a [i]property[/i] to horizontally align text to the center. Instead, enable [member bbcode_enabled] and surround the text in a [code][center][/code] tag as follows: [code][center]Example[/center][/code]. There is currently no built-in way to vertically align text either, but this can be emulated by relying on anchors/containers and the [member fit_content_height] property.
  11. </description>
  12. <tutorials>
  13. <link title="BBCode in RichTextLabel">https://docs.godotengine.org/en/3.3/tutorials/gui/bbcode_in_richtextlabel.html</link>
  14. <link title="GUI Rich Text/BBcode Demo">https://godotengine.org/asset-library/asset/132</link>
  15. <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
  16. </tutorials>
  17. <methods>
  18. <method name="add_image">
  19. <return type="void">
  20. </return>
  21. <argument index="0" name="image" type="Texture">
  22. </argument>
  23. <argument index="1" name="width" type="int" default="0">
  24. </argument>
  25. <argument index="2" name="height" type="int" default="0">
  26. </argument>
  27. <description>
  28. Adds an image's opening and closing tags to the tag stack, optionally providing a [code]width[/code] and [code]height[/code] to resize the image.
  29. If [code]width[/code] or [code]height[/code] is set to 0, the image size will be adjusted in order to keep the original aspect ratio.
  30. </description>
  31. </method>
  32. <method name="add_text">
  33. <return type="void">
  34. </return>
  35. <argument index="0" name="text" type="String">
  36. </argument>
  37. <description>
  38. Adds raw non-BBCode-parsed text to the tag stack.
  39. </description>
  40. </method>
  41. <method name="append_bbcode">
  42. <return type="int" enum="Error">
  43. </return>
  44. <argument index="0" name="bbcode" type="String">
  45. </argument>
  46. <description>
  47. Parses [code]bbcode[/code] and adds tags to the tag stack as needed. Returns the result of the parsing, [constant OK] if successful.
  48. [b]Note:[/b] Using this method, you can't close a tag that was opened in a previous [method append_bbcode] call. This is done to improve performance, especially when updating large RichTextLabels since rebuilding the whole BBCode every time would be slower. If you absolutely need to close a tag in a future method call, append the [member bbcode_text] instead of using [method append_bbcode].
  49. </description>
  50. </method>
  51. <method name="clear">
  52. <return type="void">
  53. </return>
  54. <description>
  55. Clears the tag stack and sets [member bbcode_text] to an empty string.
  56. </description>
  57. </method>
  58. <method name="get_content_height" qualifiers="const">
  59. <return type="int">
  60. </return>
  61. <description>
  62. Returns the height of the content.
  63. </description>
  64. </method>
  65. <method name="get_line_count" qualifiers="const">
  66. <return type="int">
  67. </return>
  68. <description>
  69. Returns the total number of newlines in the tag stack's text tags. Considers wrapped text as one line.
  70. </description>
  71. </method>
  72. <method name="get_total_character_count" qualifiers="const">
  73. <return type="int">
  74. </return>
  75. <description>
  76. Returns the total number of characters from text tags. Does not include BBCodes.
  77. </description>
  78. </method>
  79. <method name="get_v_scroll">
  80. <return type="VScrollBar">
  81. </return>
  82. <description>
  83. Returns the vertical scrollbar.
  84. </description>
  85. </method>
  86. <method name="get_visible_line_count" qualifiers="const">
  87. <return type="int">
  88. </return>
  89. <description>
  90. Returns the number of visible lines.
  91. </description>
  92. </method>
  93. <method name="install_effect">
  94. <return type="void">
  95. </return>
  96. <argument index="0" name="effect" type="Variant">
  97. </argument>
  98. <description>
  99. Installs a custom effect. [code]effect[/code] should be a valid [RichTextEffect].
  100. </description>
  101. </method>
  102. <method name="newline">
  103. <return type="void">
  104. </return>
  105. <description>
  106. Adds a newline tag to the tag stack.
  107. </description>
  108. </method>
  109. <method name="parse_bbcode">
  110. <return type="int" enum="Error">
  111. </return>
  112. <argument index="0" name="bbcode" type="String">
  113. </argument>
  114. <description>
  115. The assignment version of [method append_bbcode]. Clears the tag stack and inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] successfully.
  116. </description>
  117. </method>
  118. <method name="parse_expressions_for_values">
  119. <return type="Dictionary">
  120. </return>
  121. <argument index="0" name="expressions" type="PoolStringArray">
  122. </argument>
  123. <description>
  124. Parses BBCode parameter [code]expressions[/code] into a dictionary.
  125. </description>
  126. </method>
  127. <method name="pop">
  128. <return type="void">
  129. </return>
  130. <description>
  131. Terminates the current tag. Use after [code]push_*[/code] methods to close BBCodes manually. Does not need to follow [code]add_*[/code] methods.
  132. </description>
  133. </method>
  134. <method name="push_align">
  135. <return type="void">
  136. </return>
  137. <argument index="0" name="align" type="int" enum="RichTextLabel.Align">
  138. </argument>
  139. <description>
  140. Adds an [code][align][/code] tag based on the given [code]align[/code] value. See [enum Align] for possible values.
  141. </description>
  142. </method>
  143. <method name="push_bold">
  144. <return type="void">
  145. </return>
  146. <description>
  147. Adds a [code][font][/code] tag with a bold font to the tag stack. This is the same as adding a [code][b][/code] tag if not currently in a [code][i][/code] tag.
  148. </description>
  149. </method>
  150. <method name="push_bold_italics">
  151. <return type="void">
  152. </return>
  153. <description>
  154. Adds a [code][font][/code] tag with a bold italics font to the tag stack.
  155. </description>
  156. </method>
  157. <method name="push_cell">
  158. <return type="void">
  159. </return>
  160. <description>
  161. Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code][table][/code] tag. See [method push_table] for details.
  162. </description>
  163. </method>
  164. <method name="push_color">
  165. <return type="void">
  166. </return>
  167. <argument index="0" name="color" type="Color">
  168. </argument>
  169. <description>
  170. Adds a [code][color][/code] tag to the tag stack.
  171. </description>
  172. </method>
  173. <method name="push_font">
  174. <return type="void">
  175. </return>
  176. <argument index="0" name="font" type="Font">
  177. </argument>
  178. <description>
  179. Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for its duration.
  180. </description>
  181. </method>
  182. <method name="push_indent">
  183. <return type="void">
  184. </return>
  185. <argument index="0" name="level" type="int">
  186. </argument>
  187. <description>
  188. Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/code] by current [member tab_size] to determine new margin length.
  189. </description>
  190. </method>
  191. <method name="push_italics">
  192. <return type="void">
  193. </return>
  194. <description>
  195. Adds a [code][font][/code] tag with a italics font to the tag stack. This is the same as adding a [code][i][/code] tag if not currently in a [code][b][/code] tag.
  196. </description>
  197. </method>
  198. <method name="push_list">
  199. <return type="void">
  200. </return>
  201. <argument index="0" name="type" type="int" enum="RichTextLabel.ListType">
  202. </argument>
  203. <description>
  204. Adds a [code][list][/code] tag to the tag stack. Similar to the BBCodes [code][ol][/code] or [code][ul][/code], but supports more list types. Not fully implemented!
  205. </description>
  206. </method>
  207. <method name="push_meta">
  208. <return type="void">
  209. </return>
  210. <argument index="0" name="data" type="Variant">
  211. </argument>
  212. <description>
  213. Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code][url=something]{text}[/url][/code], but supports non-[String] metadata types.
  214. </description>
  215. </method>
  216. <method name="push_mono">
  217. <return type="void">
  218. </return>
  219. <description>
  220. Adds a [code][font][/code] tag with a monospace font to the tag stack.
  221. </description>
  222. </method>
  223. <method name="push_normal">
  224. <return type="void">
  225. </return>
  226. <description>
  227. Adds a [code][font][/code] tag with a normal font to the tag stack.
  228. </description>
  229. </method>
  230. <method name="push_strikethrough">
  231. <return type="void">
  232. </return>
  233. <description>
  234. Adds a [code][s][/code] tag to the tag stack.
  235. </description>
  236. </method>
  237. <method name="push_table">
  238. <return type="void">
  239. </return>
  240. <argument index="0" name="columns" type="int">
  241. </argument>
  242. <description>
  243. Adds a [code][table=columns][/code] tag to the tag stack.
  244. </description>
  245. </method>
  246. <method name="push_underline">
  247. <return type="void">
  248. </return>
  249. <description>
  250. Adds a [code][u][/code] tag to the tag stack.
  251. </description>
  252. </method>
  253. <method name="remove_line">
  254. <return type="bool">
  255. </return>
  256. <argument index="0" name="line" type="int">
  257. </argument>
  258. <description>
  259. Removes a line of content from the label. Returns [code]true[/code] if the line exists.
  260. The [code]line[/code] argument is the index of the line to remove, it can take values in the interval [code][0, get_line_count() - 1][/code].
  261. </description>
  262. </method>
  263. <method name="scroll_to_line">
  264. <return type="void">
  265. </return>
  266. <argument index="0" name="line" type="int">
  267. </argument>
  268. <description>
  269. Scrolls the window's top line to match [code]line[/code].
  270. </description>
  271. </method>
  272. <method name="set_table_column_expand">
  273. <return type="void">
  274. </return>
  275. <argument index="0" name="column" type="int">
  276. </argument>
  277. <argument index="1" name="expand" type="bool">
  278. </argument>
  279. <argument index="2" name="ratio" type="int">
  280. </argument>
  281. <description>
  282. Edits the selected column's expansion options. If [code]expand[/code] is [code]true[/code], the column expands in proportion to its expansion ratio versus the other columns' ratios.
  283. For example, 2 columns with ratios 3 and 4 plus 70 pixels in available width would expand 30 and 40 pixels, respectively.
  284. If [code]expand[/code] is [code]false[/code], the column will not contribute to the total ratio.
  285. </description>
  286. </method>
  287. </methods>
  288. <members>
  289. <member name="bbcode_enabled" type="bool" setter="set_use_bbcode" getter="is_using_bbcode" default="false">
  290. If [code]true[/code], the label uses BBCode formatting.
  291. [b]Note:[/b] Trying to alter the [RichTextLabel]'s text with [method add_text] will reset this to [code]false[/code]. Use instead [method append_bbcode] to preserve BBCode formatting.
  292. </member>
  293. <member name="bbcode_text" type="String" setter="set_bbcode" getter="get_bbcode" default="&quot;&quot;">
  294. The label's text in BBCode format. Is not representative of manual modifications to the internal tag stack. Erases changes made by other methods when edited.
  295. [b]Note:[/b] It is unadvised to use the [code]+=[/code] operator with [code]bbcode_text[/code] (e.g. [code]bbcode_text += "some string"[/code]) as it replaces the whole text and can cause slowdowns. Use [method append_bbcode] for adding text instead, unless you absolutely need to close a tag that was opened in an earlier method call.
  296. </member>
  297. <member name="custom_effects" type="Array" setter="set_effects" getter="get_effects" default="[ ]">
  298. The currently installed custom effects. This is an array of [RichTextEffect]s.
  299. To add a custom effect, it's more convenient to use [method install_effect].
  300. </member>
  301. <member name="fit_content_height" type="bool" setter="set_fit_content_height" getter="is_fit_content_height_enabled" default="false">
  302. If [code]true[/code], the label's height will be automatically updated to fit its content.
  303. [b]Note:[/b] This property is used as a workaround to fix issues with [RichTextLabel] in [Container]s, but it's unreliable in some cases and will be removed in future versions.
  304. </member>
  305. <member name="meta_underlined" type="bool" setter="set_meta_underline" getter="is_meta_underlined" default="true">
  306. If [code]true[/code], the label underlines meta tags such as [code][url]{text}[/url][/code].
  307. </member>
  308. <member name="override_selected_font_color" type="bool" setter="set_override_selected_font_color" getter="is_overriding_selected_font_color" default="false">
  309. If [code]true[/code], the label uses the custom font color.
  310. </member>
  311. <member name="percent_visible" type="float" setter="set_percent_visible" getter="get_percent_visible" default="1.0">
  312. The range of characters to display, as a [float] between 0.0 and 1.0. When assigned an out of range value, it's the same as assigning 1.0.
  313. [b]Note:[/b] Setting this property updates [member visible_characters] based on current [method get_total_character_count].
  314. </member>
  315. <member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" override="true" default="true" />
  316. <member name="scroll_active" type="bool" setter="set_scroll_active" getter="is_scroll_active" default="true">
  317. If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/code] does not block scrolling completely. See [method scroll_to_line].
  318. </member>
  319. <member name="scroll_following" type="bool" setter="set_scroll_follow" getter="is_scroll_following" default="false">
  320. If [code]true[/code], the window scrolls down to display new content automatically.
  321. </member>
  322. <member name="selection_enabled" type="bool" setter="set_selection_enabled" getter="is_selection_enabled" default="false">
  323. If [code]true[/code], the label allows text selection.
  324. </member>
  325. <member name="tab_size" type="int" setter="set_tab_size" getter="get_tab_size" default="4">
  326. The number of spaces associated with a single tab length. Does not affect [code]\t[/code] in text tags, only indent tags.
  327. </member>
  328. <member name="text" type="String" setter="set_text" getter="get_text" default="&quot;&quot;">
  329. The raw text of the label.
  330. When set, clears the tag stack and adds a raw text tag to the top of it. Does not parse BBCodes. Does not modify [member bbcode_text].
  331. </member>
  332. <member name="visible_characters" type="int" setter="set_visible_characters" getter="get_visible_characters" default="-1">
  333. The restricted number of characters to display in the label. If [code]-1[/code], all characters will be displayed.
  334. [b]Note:[/b] Setting this property updates [member percent_visible] based on current [method get_total_character_count].
  335. </member>
  336. </members>
  337. <signals>
  338. <signal name="meta_clicked">
  339. <argument index="0" name="meta" type="Variant">
  340. </argument>
  341. <description>
  342. Triggered when the user clicks on content between meta tags. If the meta is defined in text, e.g. [code][url={"data"="hi"}]hi[/url][/code], then the parameter for this signal will be a [String] type. If a particular type or an object is desired, the [method push_meta] method must be used to manually insert the data into the tag stack.
  343. </description>
  344. </signal>
  345. <signal name="meta_hover_ended">
  346. <argument index="0" name="meta" type="Variant">
  347. </argument>
  348. <description>
  349. Triggers when the mouse exits a meta tag.
  350. </description>
  351. </signal>
  352. <signal name="meta_hover_started">
  353. <argument index="0" name="meta" type="Variant">
  354. </argument>
  355. <description>
  356. Triggers when the mouse enters a meta tag.
  357. </description>
  358. </signal>
  359. </signals>
  360. <constants>
  361. <constant name="ALIGN_LEFT" value="0" enum="Align">
  362. Makes text left aligned.
  363. </constant>
  364. <constant name="ALIGN_CENTER" value="1" enum="Align">
  365. Makes text centered.
  366. </constant>
  367. <constant name="ALIGN_RIGHT" value="2" enum="Align">
  368. Makes text right aligned.
  369. </constant>
  370. <constant name="ALIGN_FILL" value="3" enum="Align">
  371. Makes text fill width.
  372. </constant>
  373. <constant name="LIST_NUMBERS" value="0" enum="ListType">
  374. Each list item has a number marker.
  375. </constant>
  376. <constant name="LIST_LETTERS" value="1" enum="ListType">
  377. Each list item has a letter marker.
  378. </constant>
  379. <constant name="LIST_DOTS" value="2" enum="ListType">
  380. Each list item has a filled circle marker.
  381. </constant>
  382. <constant name="ITEM_FRAME" value="0" enum="ItemType">
  383. </constant>
  384. <constant name="ITEM_TEXT" value="1" enum="ItemType">
  385. </constant>
  386. <constant name="ITEM_IMAGE" value="2" enum="ItemType">
  387. </constant>
  388. <constant name="ITEM_NEWLINE" value="3" enum="ItemType">
  389. </constant>
  390. <constant name="ITEM_FONT" value="4" enum="ItemType">
  391. </constant>
  392. <constant name="ITEM_COLOR" value="5" enum="ItemType">
  393. </constant>
  394. <constant name="ITEM_UNDERLINE" value="6" enum="ItemType">
  395. </constant>
  396. <constant name="ITEM_STRIKETHROUGH" value="7" enum="ItemType">
  397. </constant>
  398. <constant name="ITEM_ALIGN" value="8" enum="ItemType">
  399. </constant>
  400. <constant name="ITEM_INDENT" value="9" enum="ItemType">
  401. </constant>
  402. <constant name="ITEM_LIST" value="10" enum="ItemType">
  403. </constant>
  404. <constant name="ITEM_TABLE" value="11" enum="ItemType">
  405. </constant>
  406. <constant name="ITEM_FADE" value="12" enum="ItemType">
  407. </constant>
  408. <constant name="ITEM_SHAKE" value="13" enum="ItemType">
  409. </constant>
  410. <constant name="ITEM_WAVE" value="14" enum="ItemType">
  411. </constant>
  412. <constant name="ITEM_TORNADO" value="15" enum="ItemType">
  413. </constant>
  414. <constant name="ITEM_RAINBOW" value="16" enum="ItemType">
  415. </constant>
  416. <constant name="ITEM_CUSTOMFX" value="18" enum="ItemType">
  417. </constant>
  418. <constant name="ITEM_META" value="17" enum="ItemType">
  419. </constant>
  420. </constants>
  421. <theme_items>
  422. <theme_item name="bold_font" type="Font">
  423. The font used for bold text.
  424. </theme_item>
  425. <theme_item name="bold_italics_font" type="Font">
  426. The font used for bold italics text.
  427. </theme_item>
  428. <theme_item name="default_color" type="Color" default="Color( 1, 1, 1, 1 )">
  429. The default text color.
  430. </theme_item>
  431. <theme_item name="focus" type="StyleBox">
  432. The background The background used when the [RichTextLabel] is focused.
  433. </theme_item>
  434. <theme_item name="font_color_selected" type="Color" default="Color( 0.49, 0.49, 0.49, 1 )">
  435. The color of selected text, used when [member selection_enabled] is [code]true[/code].
  436. </theme_item>
  437. <theme_item name="font_color_shadow" type="Color" default="Color( 0, 0, 0, 0 )">
  438. The color of the font's shadow.
  439. </theme_item>
  440. <theme_item name="italics_font" type="Font">
  441. The font used for italics text.
  442. </theme_item>
  443. <theme_item name="line_separation" type="int" default="1">
  444. The vertical space between lines.
  445. </theme_item>
  446. <theme_item name="mono_font" type="Font">
  447. The font used for monospace text.
  448. </theme_item>
  449. <theme_item name="normal" type="StyleBox">
  450. The normal background for the [RichTextLabel].
  451. </theme_item>
  452. <theme_item name="normal_font" type="Font">
  453. The default text font.
  454. </theme_item>
  455. <theme_item name="selection_color" type="Color" default="Color( 0.1, 0.1, 1, 0.8 )">
  456. The color of the selection box.
  457. </theme_item>
  458. <theme_item name="shadow_as_outline" type="int" default="0">
  459. Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around the whole text as an outline.
  460. </theme_item>
  461. <theme_item name="shadow_offset_x" type="int" default="1">
  462. The horizontal offset of the font's shadow.
  463. </theme_item>
  464. <theme_item name="shadow_offset_y" type="int" default="1">
  465. The vertical offset of the font's shadow.
  466. </theme_item>
  467. <theme_item name="table_hseparation" type="int" default="3">
  468. The horizontal separation of elements in a table.
  469. </theme_item>
  470. <theme_item name="table_vseparation" type="int" default="3">
  471. The vertical separation of elements in a table.
  472. </theme_item>
  473. </theme_items>
  474. </class>