[gd_scene load_steps=8 format=3 uid="uid://sca5nhn6lprk"]

[ext_resource type="Script" path="res://mqttexample.gd" id="1_6i2w6"]
[ext_resource type="PackedScene" uid="uid://ktm7k0co2o7l" path="res://addons/mqtt/mqtt.tscn" id="2_t6rxa"]

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_iasn2"]
content_margin_left = 5.0
content_margin_right = 5.0
bg_color = Color(0.215686, 0.4, 0.4, 1)

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ppk4t"]
content_margin_left = 5.0
content_margin_right = 5.0
bg_color = Color(0.341176, 0.101961, 0.0392157, 1)

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8b54y"]
content_margin_left = 5.0
content_margin_right = 5.0
bg_color = Color(0.341176, 0.101961, 0.0392157, 1)

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xasl1"]
content_margin_left = 5.0
content_margin_right = 5.0
bg_color = Color(0.341176, 0.101961, 0.0392157, 1)

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_njfq6"]
bg_color = Color(0.0156863, 0.133333, 0.0431373, 1)

[node name="mqttexample" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -123.0
offset_top = -64.0
offset_right = -1023.0
offset_bottom = -584.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_6i2w6")

[node name="MQTT" parent="." instance=ExtResource("2_t6rxa")]

[node name="VBox" type="VBoxContainer" parent="."]
self_modulate = Color(0.0588235, 1, 1, 1)
layout_mode = 0
offset_left = 137.0
offset_top = 82.0
offset_right = 1017.0
offset_bottom = 576.0

[node name="HBoxBrokerControl" type="HBoxContainer" parent="VBox"]
layout_mode = 2

[node name="Labelbroker" type="Label" parent="VBox/HBoxBrokerControl"]
layout_mode = 2
theme_type_variation = &"HeaderLarge"
text = "MQTT broker:"

[node name="ButtonConnect" type="CheckButton" parent="VBox/HBoxBrokerControl"]
layout_mode = 2
size_flags_horizontal = 6
text = "Connect to broker"

[node name="status" type="Label" parent="VBox/HBoxBrokerControl"]
layout_mode = 2
size_flags_horizontal = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_iasn2")
text = "...Status"
horizontal_alignment = 1

[node name="HBoxBroker" type="HBoxContainer" parent="VBox"]
layout_mode = 2

[node name="Label" type="Label" parent="VBox/HBoxBroker"]
layout_mode = 2
text = "URL: "

[node name="brokeraddress" type="LineEdit" parent="VBox/HBoxBroker"]
layout_mode = 2
size_flags_horizontal = 3
text = "broker.hivemq.com"

[node name="Label4" type="Label" parent="VBox/HBoxBroker"]
layout_mode = 2
text = "User:"

[node name="brokeruser" type="LineEdit" parent="VBox/HBoxBroker"]
layout_mode = 2

[node name="Label5" type="Label" parent="VBox/HBoxBroker"]
layout_mode = 2
text = "Pswd:"

[node name="brokerpswd" type="LineEdit" parent="VBox/HBoxBroker"]
layout_mode = 2

[node name="Label2" type="Label" parent="VBox/HBoxBroker"]
layout_mode = 2
text = "Port: "

[node name="brokerport" type="LineEdit" parent="VBox/HBoxBroker"]
layout_mode = 2
tooltip_text = "Port
"
text = "1883"

[node name="Label3" type="Label" parent="VBox/HBoxBroker"]
layout_mode = 2
text = "Protocol: "

[node name="brokerprotocol" type="OptionButton" parent="VBox/HBoxBroker"]
layout_mode = 2
item_count = 4
selected = 0
popup/item_0/text = "tcp://"
popup/item_0/id = 0
popup/item_1/text = "ssl://"
popup/item_1/id = 1
popup/item_2/text = "ws://"
popup/item_2/id = 2
popup/item_3/text = "wss://"
popup/item_3/id = 3

[node name="HSeparator" type="HSeparator" parent="VBox"]
custom_minimum_size = Vector2(0, 10)
layout_mode = 2

[node name="HBoxLastwill" type="HBoxContainer" parent="VBox"]
layout_mode = 2

[node name="Labellastwill" type="Label" parent="VBox/HBoxLastwill"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Last will:"

[node name="Label" type="Label" parent="VBox/HBoxLastwill"]
layout_mode = 2
size_flags_horizontal = 10
text = "topic:"

[node name="lastwilltopic" type="LineEdit" parent="VBox/HBoxLastwill"]
layout_mode = 2
size_flags_horizontal = 3
text = "godot/myname/mywill"

[node name="Label2" type="Label" parent="VBox/HBoxLastwill"]
layout_mode = 2
text = "message:"

[node name="lastwillmessage" type="LineEdit" parent="VBox/HBoxLastwill"]
layout_mode = 2
size_flags_horizontal = 3
text = "goodbye world"

[node name="lastwillretain" type="CheckButton" parent="VBox/HBoxLastwill"]
layout_mode = 2
text = "Retain
"

[node name="HSeparator2" type="HSeparator" parent="VBox"]
custom_minimum_size = Vector2(0, 10)
layout_mode = 2

[node name="HBoxSubscriptions" type="HBoxContainer" parent="VBox"]
layout_mode = 2

[node name="Labellastwill2" type="Label" parent="VBox/HBoxSubscriptions"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Subscriptions:"

[node name="Label3" type="Label" parent="VBox/HBoxSubscriptions"]
layout_mode = 2
size_flags_horizontal = 10
text = "topic:"

[node name="subscribetopic" type="LineEdit" parent="VBox/HBoxSubscriptions"]
layout_mode = 2
size_flags_horizontal = 3
text = "godot/+"

[node name="subscribe" type="Button" parent="VBox/HBoxSubscriptions"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_ppk4t")
text = "subscribe
"

[node name="subscriptions" type="OptionButton" parent="VBox/HBoxSubscriptions"]
custom_minimum_size = Vector2(100, 0)
layout_mode = 2
size_flags_horizontal = 10
tooltip_text = "Subscribed topics
"
item_count = 1
selected = 0
popup/item_0/text = "<none>"
popup/item_0/id = 0

[node name="unsubscribe" type="Button" parent="VBox/HBoxSubscriptions"]
layout_mode = 2
theme_override_constants/outline_size = 0
theme_override_styles/normal = SubResource("StyleBoxFlat_8b54y")
text = "unsubscribe
"

[node name="HSeparator3" type="HSeparator" parent="VBox"]
custom_minimum_size = Vector2(0, 10)
layout_mode = 2

[node name="HBoxPublish" type="HBoxContainer" parent="VBox"]
layout_mode = 2

[node name="Labellastwill" type="Label" parent="VBox/HBoxPublish"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Publish:"

[node name="Label" type="Label" parent="VBox/HBoxPublish"]
layout_mode = 2
size_flags_horizontal = 10
text = "topic:"

[node name="publishtopic" type="LineEdit" parent="VBox/HBoxPublish"]
layout_mode = 2
size_flags_horizontal = 3
text = "godot/myname"

[node name="Label2" type="Label" parent="VBox/HBoxPublish"]
layout_mode = 2
text = "message:"

[node name="publishmessage" type="LineEdit" parent="VBox/HBoxPublish"]
layout_mode = 2
size_flags_horizontal = 3
text = "hello there"

[node name="publishretain" type="CheckButton" parent="VBox/HBoxPublish"]
layout_mode = 2
text = "Retain
"

[node name="publish" type="Button" parent="VBox/HBoxPublish"]
layout_mode = 2
theme_override_styles/normal = SubResource("StyleBoxFlat_xasl1")
text = "Publish"

[node name="HSeparator4" type="HSeparator" parent="VBox"]
custom_minimum_size = Vector2(0, 10)
layout_mode = 2

[node name="subscribedmessages" type="RichTextLabel" parent="VBox"]
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/normal = SubResource("StyleBoxFlat_njfq6")
bbcode_enabled = true
text = "[b]Instructions[/b]

MQTT is a lightweight easy-to-use publish and subscribe (\"pubsub\") networking protocol.

By default this app connects to the public server hosted at [u]https://test.mosquitto.org/[/u] , but you can connect to another broker or your own instance.

[i]Commands to run on another computer terminal:[/i]
  > mosquitto_pub -h test.mosquitto.org -t \"godot/abcd\" -m \"Bingo!\"
  > mosquitto_sub -v -h test.mosquitto.org -t \"godot/#\""

[connection signal="broker_connected" from="MQTT" to="." method="_on_mqtt_broker_connected"]
[connection signal="broker_connection_failed" from="MQTT" to="." method="_on_mqtt_broker_connection_failed"]
[connection signal="broker_disconnected" from="MQTT" to="." method="_on_mqtt_broker_disconnected"]
[connection signal="received_message" from="MQTT" to="." method="_on_mqtt_received_message"]
[connection signal="toggled" from="VBox/HBoxBrokerControl/ButtonConnect" to="." method="_on_button_connect_toggled"]
[connection signal="item_selected" from="VBox/HBoxBroker/brokerprotocol" to="." method="_on_brokerprotocol_item_selected"]
[connection signal="pressed" from="VBox/HBoxSubscriptions/subscribe" to="." method="_on_subscribe_pressed"]
[connection signal="pressed" from="VBox/HBoxSubscriptions/unsubscribe" to="." method="_on_unsubscribe_pressed"]
[connection signal="pressed" from="VBox/HBoxPublish/publish" to="." method="_on_publish_pressed"]
