h1, h2, h3, h4, h5, h6 tags

This commit is contained in:
Face
2025-07-23 13:35:42 +03:00
parent ee1448987d
commit 7a0b678fc2
21 changed files with 232 additions and 0 deletions

22
Scenes/Tags/h1.tscn Normal file
View File

@@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://gta3tqpcfrpf"]
[ext_resource type="Script" uid="uid://fxad8ggthycp" path="res://Scripts/Tags/h1.gd" id="1_d7u74"]
[ext_resource type="Theme" uid="uid://bn6rbmdy60lhr" path="res://Scenes/Styles/BrowserText.tres" id="2_3j5k0"]
[node name="H1" type="VBoxContainer"]
anchors_preset = 10
anchor_right = 1.0
grow_horizontal = 2
script = ExtResource("1_d7u74")
[node name="RichTextLabel" type="RichTextLabel" parent="."]
layout_mode = 2
size_flags_horizontal = 3
focus_mode = 2
mouse_default_cursor_shape = 1
theme = ExtResource("2_3j5k0")
theme_override_colors/default_color = Color(0, 0, 0, 1)
bbcode_enabled = true
text = "Placeholder"
fit_content = true
selection_enabled = true

22
Scenes/Tags/h2.tscn Normal file
View File

@@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://cgsn36srgjt8"]
[ext_resource type="Script" uid="uid://bdq7nrg2l36nh" path="res://Scripts/Tags/h2.gd" id="1_vk1fi"]
[ext_resource type="Theme" uid="uid://bn6rbmdy60lhr" path="res://Scenes/Styles/BrowserText.tres" id="2_q3fx7"]
[node name="H2" type="VBoxContainer"]
anchors_preset = 10
anchor_right = 1.0
grow_horizontal = 2
script = ExtResource("1_vk1fi")
[node name="RichTextLabel" type="RichTextLabel" parent="."]
layout_mode = 2
size_flags_horizontal = 3
focus_mode = 2
mouse_default_cursor_shape = 1
theme = ExtResource("2_q3fx7")
theme_override_colors/default_color = Color(0, 0, 0, 1)
bbcode_enabled = true
text = "Placeholder"
fit_content = true
selection_enabled = true

22
Scenes/Tags/h3.tscn Normal file
View File

@@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://di6midc3a0ddy"]
[ext_resource type="Script" uid="uid://cnlm4o4aul6um" path="res://Scripts/Tags/h3.gd" id="1_chgqi"]
[ext_resource type="Theme" uid="uid://bn6rbmdy60lhr" path="res://Scenes/Styles/BrowserText.tres" id="2_qca7w"]
[node name="H3" type="VBoxContainer"]
anchors_preset = 10
anchor_right = 1.0
grow_horizontal = 2
script = ExtResource("1_chgqi")
[node name="RichTextLabel" type="RichTextLabel" parent="."]
layout_mode = 2
size_flags_horizontal = 3
focus_mode = 2
mouse_default_cursor_shape = 1
theme = ExtResource("2_qca7w")
theme_override_colors/default_color = Color(0, 0, 0, 1)
bbcode_enabled = true
text = "Placeholder"
fit_content = true
selection_enabled = true

22
Scenes/Tags/h4.tscn Normal file
View File

@@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://di4rd8y76rwrq"]
[ext_resource type="Script" uid="uid://j68a278yusxa" path="res://Scripts/Tags/h4.gd" id="1_jrcwo"]
[ext_resource type="Theme" uid="uid://bn6rbmdy60lhr" path="res://Scenes/Styles/BrowserText.tres" id="2_t8dmp"]
[node name="H4" type="VBoxContainer"]
anchors_preset = 10
anchor_right = 1.0
grow_horizontal = 2
script = ExtResource("1_jrcwo")
[node name="RichTextLabel" type="RichTextLabel" parent="."]
layout_mode = 2
size_flags_horizontal = 3
focus_mode = 2
mouse_default_cursor_shape = 1
theme = ExtResource("2_t8dmp")
theme_override_colors/default_color = Color(0, 0, 0, 1)
bbcode_enabled = true
text = "Placeholder"
fit_content = true
selection_enabled = true

22
Scenes/Tags/h5.tscn Normal file
View File

@@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://2rirrb0genlv"]
[ext_resource type="Script" uid="uid://648taty6aixn" path="res://Scripts/Tags/h5.gd" id="1_02y7j"]
[ext_resource type="Theme" uid="uid://bn6rbmdy60lhr" path="res://Scenes/Styles/BrowserText.tres" id="2_msjhe"]
[node name="H5" type="VBoxContainer"]
anchors_preset = 10
anchor_right = 1.0
grow_horizontal = 2
script = ExtResource("1_02y7j")
[node name="RichTextLabel" type="RichTextLabel" parent="."]
layout_mode = 2
size_flags_horizontal = 3
focus_mode = 2
mouse_default_cursor_shape = 1
theme = ExtResource("2_msjhe")
theme_override_colors/default_color = Color(0, 0, 0, 1)
bbcode_enabled = true
text = "Placeholder"
fit_content = true
selection_enabled = true

22
Scenes/Tags/h6.tscn Normal file
View File

@@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://bc0gy4dxuaaii"]
[ext_resource type="Script" uid="uid://tv6sv6og67q6" path="res://Scripts/Tags/h6.gd" id="1_eqyqa"]
[ext_resource type="Theme" uid="uid://bn6rbmdy60lhr" path="res://Scenes/Styles/BrowserText.tres" id="2_4427h"]
[node name="H6" type="VBoxContainer"]
anchors_preset = 10
anchor_right = 1.0
grow_horizontal = 2
script = ExtResource("1_eqyqa")
[node name="RichTextLabel" type="RichTextLabel" parent="."]
layout_mode = 2
size_flags_horizontal = 3
focus_mode = 2
mouse_default_cursor_shape = 1
theme = ExtResource("2_4427h")
theme_override_colors/default_color = Color(0, 0, 0, 1)
bbcode_enabled = true
text = "Placeholder"
fit_content = true
selection_enabled = true

View File

@@ -80,6 +80,9 @@ class HTMLElement:
func is_inline_element() -> bool:
return tag_name in ["b", "i", "u", "small", "mark", "code", "span", "a"]
func is_heading_element() -> bool:
return tag_name in ["h1", "h2", "h3", "h4", "h5", "h6"]
class ParseResult:
var root: HTMLElement

7
Scripts/Tags/h1.gd Normal file
View File

@@ -0,0 +1,7 @@
extends Control
@onready var rich_text_label: RichTextLabel = $RichTextLabel
func init(element: HTMLParser.HTMLElement) -> void:
var label: RichTextLabel = $RichTextLabel
label.text = "[font_size=48][b]%s[/b][/font_size]" % element.get_bbcode_formatted_text()

1
Scripts/Tags/h1.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://fxad8ggthycp

7
Scripts/Tags/h2.gd Normal file
View File

@@ -0,0 +1,7 @@
extends Control
@onready var rich_text_label: RichTextLabel = $RichTextLabel
func init(element: HTMLParser.HTMLElement) -> void:
var label: RichTextLabel = $RichTextLabel
label.text = "[font_size=36][b]%s[/b][/font_size]" % element.get_bbcode_formatted_text()

1
Scripts/Tags/h2.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://bdq7nrg2l36nh

7
Scripts/Tags/h3.gd Normal file
View File

@@ -0,0 +1,7 @@
extends Control
@onready var rich_text_label: RichTextLabel = $RichTextLabel
func init(element: HTMLParser.HTMLElement) -> void:
var label: RichTextLabel = $RichTextLabel
label.text = "[font_size=28][b]%s[/b][/font_size]" % element.get_bbcode_formatted_text()

1
Scripts/Tags/h3.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://cnlm4o4aul6um

7
Scripts/Tags/h4.gd Normal file
View File

@@ -0,0 +1,7 @@
extends Control
@onready var rich_text_label: RichTextLabel = $RichTextLabel
func init(element: HTMLParser.HTMLElement) -> void:
var label: RichTextLabel = $RichTextLabel
label.text = "[font_size=24][b]%s[/b][/font_size]" % element.get_bbcode_formatted_text()

1
Scripts/Tags/h4.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://j68a278yusxa

7
Scripts/Tags/h5.gd Normal file
View File

@@ -0,0 +1,7 @@
extends Control
@onready var rich_text_label: RichTextLabel = $RichTextLabel
func init(element: HTMLParser.HTMLElement) -> void:
var label: RichTextLabel = $RichTextLabel
label.text = "[font_size=20][b]%s[/b][/font_size]" % element.get_bbcode_formatted_text()

1
Scripts/Tags/h5.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://648taty6aixn

7
Scripts/Tags/h6.gd Normal file
View File

@@ -0,0 +1,7 @@
extends Control
@onready var rich_text_label: RichTextLabel = $RichTextLabel
func init(element: HTMLParser.HTMLElement) -> void:
var label: RichTextLabel = $RichTextLabel
label.text = "[font_size=16][b]%s[/b][/font_size]" % element.get_bbcode_formatted_text()

1
Scripts/Tags/h6.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://tv6sv6og67q6

View File

@@ -13,6 +13,12 @@ const SEPARATOR = preload("res://Scenes/Tags/separator.tscn")
const PRE = preload("res://Scenes/Tags/pre.tscn")
const BR = preload("res://Scenes/Tags/br.tscn")
const SPAN = preload("res://Scenes/Tags/span.tscn")
const H1 = preload("res://Scenes/Tags/h1.tscn")
const H2 = preload("res://Scenes/Tags/h2.tscn")
const H3 = preload("res://Scenes/Tags/h3.tscn")
const H4 = preload("res://Scenes/Tags/h4.tscn")
const H5 = preload("res://Scenes/Tags/h5.tscn")
const H6 = preload("res://Scenes/Tags/h6.tscn")
func render():
# Clear existing content
@@ -31,6 +37,13 @@ func render():
</head>
<body>
<h1>Header 1</h1>
<h2>Header 2</h2>
<h3>Header 3</h3>
<h4>Header 4</h4>
<h5>Header 5</h5>
<h6>Header 6</h6>
<p>Hey there! this is a test</p>
<b>This is bold</b>
<i>This is italic <mark>actually, and it's pretty <u>cool</u></mark></i>
@@ -111,6 +124,42 @@ line breaks
website_container.add_child(p)
if contains_hyperlink(element):
p.rich_text_label.meta_clicked.connect(func(meta): OS.shell_open(str(meta)))
"h1":
var h1 = H1.instantiate()
h1.init(element)
website_container.add_child(h1)
if contains_hyperlink(element):
h1.rich_text_label.meta_clicked.connect(func(meta): OS.shell_open(str(meta)))
"h2":
var h2 = H2.instantiate()
h2.init(element)
website_container.add_child(h2)
if contains_hyperlink(element):
h2.rich_text_label.meta_clicked.connect(func(meta): OS.shell_open(str(meta)))
"h3":
var h3 = H3.instantiate()
h3.init(element)
website_container.add_child(h3)
if contains_hyperlink(element):
h3.rich_text_label.meta_clicked.connect(func(meta): OS.shell_open(str(meta)))
"h4":
var h4 = H4.instantiate()
h4.init(element)
website_container.add_child(h4)
if contains_hyperlink(element):
h4.rich_text_label.meta_clicked.connect(func(meta): OS.shell_open(str(meta)))
"h5":
var h5 = H5.instantiate()
h5.init(element)
website_container.add_child(h5)
if contains_hyperlink(element):
h5.rich_text_label.meta_clicked.connect(func(meta): OS.shell_open(str(meta)))
"h6":
var h6 = H6.instantiate()
h6.init(element)
website_container.add_child(h6)
if contains_hyperlink(element):
h6.rich_text_label.meta_clicked.connect(func(meta): OS.shell_open(str(meta)))
"pre":
var pre = PRE.instantiate()
pre.init(element)