diff --git a/flumi/Scenes/BrowserMenus/settings.tscn b/flumi/Scenes/BrowserMenus/settings.tscn new file mode 100644 index 0000000..2ff981e --- /dev/null +++ b/flumi/Scenes/BrowserMenus/settings.tscn @@ -0,0 +1,623 @@ +[gd_scene load_steps=43 format=3 uid="uid://cs7kf3xvffcwu"] + +[ext_resource type="Script" uid="uid://d4eh2nqg8r1ui" path="res://Scripts/Browser/settings.gd" id="1_settings"] +[ext_resource type="Theme" uid="uid://bn6rbmdy60lhr" path="res://Scenes/Styles/BrowserText.tres" id="2_theme"] +[ext_resource type="Texture2D" uid="uid://blskvfjswul1d" path="res://Assets/Icons/checkbox_white.svg" id="3_mdirl"] +[ext_resource type="Texture2D" uid="uid://bs414mrvwdmcn" path="res://Assets/Icons/radio_disabled.svg" id="4_dm5ls"] +[ext_resource type="Texture2D" uid="uid://bap17ryrkcyey" path="res://Assets/Icons/checkbox_disabled.svg" id="5_s7e1m"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_main"] +content_margin_left = 0.0 +content_margin_top = 0.0 +content_margin_right = 0.0 +content_margin_bottom = 0.0 +bg_color = Color(0.105882, 0.105882, 0.105882, 1) +corner_radius_top_left = 30 +corner_radius_top_right = 30 +corner_radius_bottom_right = 30 +corner_radius_bottom_left = 30 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_sidebar"] +content_margin_left = 15.0 +content_margin_top = 25.0 +content_margin_right = 15.0 +content_margin_bottom = 25.0 +bg_color = Color(0.0784314, 0.0784314, 0.0784314, 1) +corner_radius_top_left = 30 +corner_radius_bottom_left = 30 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_vkd6r"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tab_selected_hover"] +content_margin_left = 15.0 +content_margin_top = 10.0 +content_margin_right = 15.0 +content_margin_bottom = 10.0 +bg_color = Color(0.3, 0.55, 0.9, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tab_pressed"] +content_margin_left = 15.0 +content_margin_top = 10.0 +content_margin_right = 15.0 +content_margin_bottom = 10.0 +bg_color = Color(0.168627, 0.168627, 0.168627, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tab_selected"] +content_margin_left = 15.0 +content_margin_top = 10.0 +content_margin_right = 15.0 +content_margin_bottom = 10.0 +bg_color = Color(0.247059, 0.466667, 0.807843, 1) +draw_center = false +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="ButtonGroup" id="ButtonGroup_tabs"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_dxen3"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tab_hover"] +content_margin_left = 15.0 +content_margin_top = 10.0 +content_margin_right = 15.0 +content_margin_bottom = 10.0 +bg_color = Color(0.168627, 0.168627, 0.168627, 1) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tab_normal"] +content_margin_left = 15.0 +content_margin_top = 10.0 +content_margin_right = 15.0 +content_margin_bottom = 10.0 +bg_color = Color(0.0784314, 0.0784314, 0.0784314, 0) +corner_radius_top_left = 10 +corner_radius_top_right = 10 +corner_radius_bottom_right = 10 +corner_radius_bottom_left = 10 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_hxjif"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_3gdnt"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_hpjw2"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_content"] +content_margin_left = 25.0 +content_margin_top = 25.0 +content_margin_right = 25.0 +content_margin_bottom = 25.0 +bg_color = Color(0.127451, 0.127451, 0.127451, 1) +corner_radius_top_right = 30 +corner_radius_bottom_right = 30 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_section"] +content_margin_left = 15.0 +content_margin_top = 15.0 +content_margin_right = 15.0 +content_margin_bottom = 15.0 +bg_color = Color(0.0980392, 0.0980392, 0.0980392, 1) +corner_radius_top_left = 15 +corner_radius_top_right = 15 +corner_radius_bottom_right = 15 +corner_radius_bottom_left = 15 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_jyfhi"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_34gk8"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_1xb48"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_mf3pd"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0linb"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_esroy"] + +[sub_resource type="ButtonGroup" id="ButtonGroup_mdirl"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_mdirl"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_05lrc"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_jpip4"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_dm5ls"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_s7e1m"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_hcgcp"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_input"] +content_margin_left = 12.0 +content_margin_top = 8.0 +content_margin_right = 12.0 +content_margin_bottom = 8.0 +bg_color = Color(0.0784314, 0.0784314, 0.0784314, 1) +corner_radius_top_left = 8 +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_button_hover"] +content_margin_left = 15.0 +content_margin_top = 8.0 +content_margin_right = 15.0 +content_margin_bottom = 8.0 +bg_color = Color(0.3, 0.55, 0.9, 1) +corner_radius_top_left = 8 +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_button_pressed"] +content_margin_left = 15.0 +content_margin_top = 8.0 +content_margin_right = 15.0 +content_margin_bottom = 8.0 +bg_color = Color(0.2, 0.4, 0.7, 1) +corner_radius_top_left = 8 +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_button"] +content_margin_left = 15.0 +content_margin_top = 8.0 +content_margin_right = 15.0 +content_margin_bottom = 8.0 +bg_color = Color(0.247059, 0.466667, 0.807843, 1) +corner_radius_top_left = 8 +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_app81"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8jbl5"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_vt4mc"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_nnk28"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_yqiws"] + +[node name="PopupPanel" type="PopupPanel"] +initial_position = 1 +size = Vector2i(900, 700) +visible = true +theme_override_styles/panel = SubResource("StyleBoxFlat_main") +script = ExtResource("1_settings") + +[node name="HSplitContainer" type="HSplitContainer" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_right = 900.0 +offset_bottom = 700.0 +split_offset = 250 +dragger_visibility = 2 + +[node name="Sidebar" type="PanelContainer" parent="HSplitContainer"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 +size_flags_horizontal = 0 +theme_override_styles/panel = SubResource("StyleBoxFlat_sidebar") + +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/Sidebar"] +layout_mode = 2 +theme_override_constants/separation = 5 + +[node name="Title" type="Label" parent="HSplitContainer/Sidebar/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 20 +text = "Settings" + +[node name="HSeparator" type="HSeparator" parent="HSplitContainer/Sidebar/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 15 + +[node name="TabGeneral" type="Button" parent="HSplitContainer/Sidebar/VBoxContainer"] +layout_mode = 2 +mouse_default_cursor_shape = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_styles/focus = SubResource("StyleBoxEmpty_vkd6r") +theme_override_styles/hover = SubResource("StyleBoxFlat_tab_selected_hover") +theme_override_styles/pressed = SubResource("StyleBoxFlat_tab_pressed") +theme_override_styles/normal = SubResource("StyleBoxFlat_tab_selected") +toggle_mode = true +button_pressed = true +button_group = SubResource("ButtonGroup_tabs") +text = "General" +flat = true +alignment = 0 + +[node name="TabPrivacy" type="Button" parent="HSplitContainer/Sidebar/VBoxContainer"] +layout_mode = 2 +mouse_default_cursor_shape = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) +theme_override_styles/focus = SubResource("StyleBoxEmpty_dxen3") +theme_override_styles/hover = SubResource("StyleBoxFlat_tab_hover") +theme_override_styles/pressed = SubResource("StyleBoxFlat_tab_pressed") +theme_override_styles/normal = SubResource("StyleBoxFlat_tab_normal") +toggle_mode = true +button_group = SubResource("ButtonGroup_tabs") +text = "Privacy" +flat = true +alignment = 0 + +[node name="TabDownloads" type="Button" parent="HSplitContainer/Sidebar/VBoxContainer"] +layout_mode = 2 +mouse_default_cursor_shape = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) +theme_override_styles/focus = SubResource("StyleBoxEmpty_hxjif") +theme_override_styles/hover = SubResource("StyleBoxFlat_tab_hover") +theme_override_styles/pressed = SubResource("StyleBoxFlat_tab_pressed") +theme_override_styles/normal = SubResource("StyleBoxFlat_tab_normal") +toggle_mode = true +button_group = SubResource("ButtonGroup_tabs") +text = "Downloads" +flat = true +alignment = 0 + +[node name="TabAdvanced" type="Button" parent="HSplitContainer/Sidebar/VBoxContainer"] +layout_mode = 2 +mouse_default_cursor_shape = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) +theme_override_styles/focus = SubResource("StyleBoxEmpty_3gdnt") +theme_override_styles/hover = SubResource("StyleBoxFlat_tab_hover") +theme_override_styles/pressed = SubResource("StyleBoxFlat_tab_pressed") +theme_override_styles/normal = SubResource("StyleBoxFlat_tab_normal") +toggle_mode = true +button_group = SubResource("ButtonGroup_tabs") +text = "Advanced" +flat = true +alignment = 0 + +[node name="TabAbout" type="Button" parent="HSplitContainer/Sidebar/VBoxContainer"] +layout_mode = 2 +mouse_default_cursor_shape = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) +theme_override_styles/focus = SubResource("StyleBoxEmpty_hpjw2") +theme_override_styles/hover = SubResource("StyleBoxFlat_tab_hover") +theme_override_styles/pressed = SubResource("StyleBoxFlat_tab_pressed") +theme_override_styles/normal = SubResource("StyleBoxFlat_tab_normal") +toggle_mode = true +button_group = SubResource("ButtonGroup_tabs") +text = "About" +flat = true +alignment = 0 + +[node name="Content" type="PanelContainer" parent="HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_content") + +[node name="ScrollContainer" type="ScrollContainer" parent="HSplitContainer/Content"] +layout_mode = 2 + +[node name="ContentStack" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 0 + +[node name="GeneralPanel" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="GeneralTitle" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 24 +text = "General" + +[node name="StartupSection" type="PanelContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_section") + +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="Label" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 16 +text = "On startup" + +[node name="StartupNewTab" type="CheckBox" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_constants/icon_max_width = 24 +theme_override_styles/focus = SubResource("StyleBoxEmpty_jyfhi") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_34gk8") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_1xb48") +theme_override_styles/hover = SubResource("StyleBoxEmpty_mf3pd") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_0linb") +theme_override_styles/normal = SubResource("StyleBoxEmpty_esroy") +theme_override_icons/unchecked = ExtResource("3_mdirl") +theme_override_icons/radio_unchecked = ExtResource("4_dm5ls") +button_pressed = true +button_group = SubResource("ButtonGroup_mdirl") +text = " Open the new tab page" +flat = true + +[node name="StartupSpecificPage" type="CheckBox" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_styles/focus = SubResource("StyleBoxEmpty_mdirl") +theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_05lrc") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_jpip4") +theme_override_styles/hover = SubResource("StyleBoxEmpty_dm5ls") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_s7e1m") +theme_override_styles/normal = SubResource("StyleBoxEmpty_hcgcp") +theme_override_icons/unchecked = ExtResource("3_mdirl") +theme_override_icons/radio_unchecked = ExtResource("4_dm5ls") +button_group = SubResource("ButtonGroup_mdirl") +text = " Open a specific page" + +[node name="StartupURLContainer" type="HBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer"] +visible = false +layout_mode = 2 + +[node name="URLLabel" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer/StartupURLContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) +text = "URL:" + +[node name="URLInput" type="LineEdit" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer/StartupURLContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/normal = SubResource("StyleBoxFlat_input") +placeholder_text = "https://example.com" + +[node name="SearchEngineSection" type="PanelContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_section") + +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/SearchEngineSection"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="Label" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/SearchEngineSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 16 +text = "Search engine" + +[node name="HBoxContainer" type="HBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/SearchEngineSection/VBoxContainer"] +layout_mode = 2 + +[node name="SearchLabel" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/SearchEngineSection/VBoxContainer/HBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) +text = "Default search URL:" + +[node name="SearchInput" type="LineEdit" parent="HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/SearchEngineSection/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/normal = SubResource("StyleBoxFlat_input") +text = "gurt://search.web?q=" +placeholder_text = "gurt://search.web?q=" + +[node name="PrivacyPanel" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack"] +visible = false +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="PrivacyTitle" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 24 +text = "Privacy and security" + +[node name="ClearDataSection" type="PanelContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_section") + +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection"] +layout_mode = 2 +theme_override_constants/separation = 15 + +[node name="Label" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 16 +text = "Clear browsing data" + +[node name="Description" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.7, 0.7, 0.7, 1) +text = "Delete your browsing history, crumbs, and download history" +autowrap_mode = 3 + +[node name="ButtonsContainer" type="HBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="ClearHistoryButton" type="Button" parent="HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection/VBoxContainer/ButtonsContainer"] +layout_mode = 2 +mouse_default_cursor_shape = 2 +theme = ExtResource("2_theme") +theme_override_styles/hover = SubResource("StyleBoxFlat_button_hover") +theme_override_styles/pressed = SubResource("StyleBoxFlat_button_pressed") +theme_override_styles/normal = SubResource("StyleBoxFlat_button") +text = "Clear History" + +[node name="ClearCookiesButton" type="Button" parent="HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection/VBoxContainer/ButtonsContainer"] +layout_mode = 2 +mouse_default_cursor_shape = 2 +theme = ExtResource("2_theme") +theme_override_styles/hover = SubResource("StyleBoxFlat_button_hover") +theme_override_styles/pressed = SubResource("StyleBoxFlat_button_pressed") +theme_override_styles/normal = SubResource("StyleBoxFlat_button") +text = "Clear Crumbs" + +[node name="ClearDownloadsButton" type="Button" parent="HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection/VBoxContainer/ButtonsContainer"] +layout_mode = 2 +mouse_default_cursor_shape = 2 +theme = ExtResource("2_theme") +theme_override_styles/hover = SubResource("StyleBoxFlat_button_hover") +theme_override_styles/pressed = SubResource("StyleBoxFlat_button_pressed") +theme_override_styles/normal = SubResource("StyleBoxFlat_button") +text = "Clear Downloads" + +[node name="DownloadsPanel" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack"] +visible = false +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="DownloadsTitle" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/DownloadsPanel"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 24 +text = "Downloads" + +[node name="DownloadConfirmSection" type="PanelContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/DownloadsPanel"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_section") + +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/DownloadsPanel/DownloadConfirmSection"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="Label" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/DownloadsPanel/DownloadConfirmSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 16 +text = "Security" + +[node name="ConfirmCheckBox" type="CheckBox" parent="HSplitContainer/Content/ScrollContainer/ContentStack/DownloadsPanel/DownloadConfirmSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_styles/focus = SubResource("StyleBoxEmpty_app81") +theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_8jbl5") +theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_vt4mc") +theme_override_styles/pressed = SubResource("StyleBoxEmpty_nnk28") +theme_override_styles/normal = SubResource("StyleBoxEmpty_yqiws") +theme_override_icons/unchecked = ExtResource("5_s7e1m") +button_pressed = true +text = " Ask for confirmation for each download" + +[node name="AdvancedPanel" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack"] +visible = false +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="AdvancedTitle" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AdvancedPanel"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 24 +text = "Advanced" + +[node name="DNSSection" type="PanelContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AdvancedPanel"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_section") + +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AdvancedPanel/DNSSection"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="Label" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AdvancedPanel/DNSSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 16 +text = "DNS settings" + +[node name="HBoxContainer" type="HBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AdvancedPanel/DNSSection/VBoxContainer"] +layout_mode = 2 + +[node name="DNSLabel" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AdvancedPanel/DNSSection/VBoxContainer/HBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) +text = "DNS Server URL:" + +[node name="DNSInput" type="LineEdit" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AdvancedPanel/DNSSection/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/normal = SubResource("StyleBoxFlat_input") +text = "135.125.163.131:4878" +placeholder_text = "135.125.163.131:4878" + +[node name="AboutPanel" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack"] +visible = false +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="AboutTitle" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AboutPanel"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 24 +text = "About Flumi" + +[node name="AboutSection" type="PanelContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AboutPanel"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_section") + +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AboutPanel/AboutSection"] +layout_mode = 2 +theme_override_constants/separation = 15 + +[node name="FlumiBrand" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AboutPanel/AboutSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(1, 1, 1, 1) +theme_override_font_sizes/font_size = 28 +text = "Flumi" + +[node name="VersionLabel" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AboutPanel/AboutSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.8, 0.8, 0.8, 1) +theme_override_font_sizes/font_size = 16 +text = "Version 1.0.0" + +[node name="DescriptionLabel" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AboutPanel/AboutSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.7, 0.7, 0.7, 1) +text = "The official browser for the GURT protocol" +autowrap_mode = 3 + +[node name="HSeparator" type="HSeparator" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AboutPanel/AboutSection/VBoxContainer"] +layout_mode = 2 + +[node name="CopyrightLabel" type="Label" parent="HSplitContainer/Content/ScrollContainer/ContentStack/AboutPanel/AboutSection/VBoxContainer"] +layout_mode = 2 +theme = ExtResource("2_theme") +theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1) +theme_override_font_sizes/font_size = 12 +text = "© 2025 Gurted under FaceDev. All rights reserved." diff --git a/flumi/Scenes/main.tscn b/flumi/Scenes/main.tscn index ea471c2..1f82322 100644 --- a/flumi/Scenes/main.tscn +++ b/flumi/Scenes/main.tscn @@ -240,6 +240,7 @@ item_1/id = 1 item_2/text = "New Incognito Window (CTRL SHIFT N)" item_2/icon = ExtResource("14_u50mg") item_2/id = 2 +item_2/disabled = true item_3/id = 3 item_3/separator = true item_4/text = "History (CTRL H)" diff --git a/flumi/Scripts/B9/Lua.gd b/flumi/Scripts/B9/Lua.gd index d46a369..8ce5835 100644 --- a/flumi/Scripts/B9/Lua.gd +++ b/flumi/Scripts/B9/Lua.gd @@ -451,7 +451,7 @@ func _input(event: InputEvent) -> void: func _handle_mousemove_event(mouse_event: InputEventMouseMotion, subscription: EventSubscription) -> void: # TODO: pass reference instead of hardcoded path - var body_container = get_node("/root/Main").website_container + var body_container = Engine.get_main_loop().current_scene.website_container if body_container.get_parent() is MarginContainer: body_container = body_container.get_parent() @@ -787,6 +787,10 @@ func _handle_text_setting(operation: Dictionary): # If the element has a DOM node, update it directly without updating text_content var element_id = get_or_assign_element_id(element) var dom_node = dom_parser.parse_result.dom_nodes.get(element_id, null) + + if not dom_node: + dom_node = dom_parser.parse_result.dom_nodes.get(element, null) + if dom_node: if element.tag_name == "button": var button_node = dom_node.get_node_or_null("ButtonNode") @@ -806,6 +810,7 @@ func _handle_text_setting(operation: Dictionary): var text_node = get_dom_node(dom_node, "text") if text_node: if text_node is RichTextLabel: + element.text_content = text StyleManager.apply_styles_to_label(text_node, dom_parser.get_element_styles_with_inheritance(element, "", []), element, dom_parser, text) try_apply_auto_resize(text_node) elif text_node.has_method("set_text"): diff --git a/flumi/Scripts/Browser/DownloadManager.gd b/flumi/Scripts/Browser/DownloadManager.gd index 35d9b2f..52c8802 100644 --- a/flumi/Scripts/Browser/DownloadManager.gd +++ b/flumi/Scripts/Browser/DownloadManager.gd @@ -29,20 +29,26 @@ func _ensure_download_progress_container(): main_node.add_child(anchor_container) func handle_download_request(download_data: Dictionary): - print("Download requested: ", download_data) - var active_tab = main_node.get_active_tab() if active_tab and active_tab.current_url: download_data["current_site"] = URLUtils.extract_domain(active_tab.current_url) else: download_data["current_site"] = "Unknown site" - var dialog = DOWNLOAD_DIALOG.instantiate() - main_node.add_child(dialog) + var settings_node = Engine.get_main_loop().current_scene + var skip_confirmation = !settings_node.get_download_confirmation_setting() - dialog.download_confirmed.connect(_on_download_confirmed) - dialog.download_cancelled.connect(_on_download_cancelled) - dialog.show_download_dialog(download_data) + if skip_confirmation: + var filename = download_data.get("filename", "download") + var default_path = OS.get_system_dir(OS.SYSTEM_DIR_DOWNLOADS) + "/" + filename + _on_download_confirmed(download_data, default_path) + else: + var dialog = DOWNLOAD_DIALOG.instantiate() + main_node.add_child(dialog) + + dialog.download_confirmed.connect(_on_download_confirmed) + dialog.download_cancelled.connect(_on_download_cancelled) + dialog.show_download_dialog(download_data) func _on_download_confirmed(download_data: Dictionary, save_path: String): var download_id = download_data.get("id", "") diff --git a/flumi/Scripts/Browser/DownloadsStore.gd b/flumi/Scripts/Browser/DownloadsStore.gd index ac401c1..aa7666d 100644 --- a/flumi/Scripts/Browser/DownloadsStore.gd +++ b/flumi/Scripts/Browser/DownloadsStore.gd @@ -74,3 +74,14 @@ func get_download_data_array() -> Array[Dictionary]: for entry in download_entries: data_array.append(entry.get_download_data()) return data_array + +func clear_all_downloads(): + for entry in download_entries: + entry.queue_free() + + download_entries.clear() + + var file = FileAccess.open(save_path, FileAccess.WRITE) + if file: + file.store_string("[]") + file.close() diff --git a/flumi/Scripts/Browser/GurtProtocol.gd b/flumi/Scripts/Browser/GurtProtocol.gd index 0959774..c28dd35 100644 --- a/flumi/Scripts/Browser/GurtProtocol.gd +++ b/flumi/Scripts/Browser/GurtProtocol.gd @@ -1,8 +1,17 @@ extends RefCounted class_name GurtProtocol -const DNS_SERVER_IP: String = "135.125.163.131" -const DNS_SERVER_PORT: int = 4878 +static var DNS_SERVER_IP: String = "135.125.163.131" +static var DNS_SERVER_PORT: int = 4878 + +static func set_dns_server(ip_port: String): + if ":" in ip_port: + var parts = ip_port.split(":") + DNS_SERVER_IP = parts[0] + DNS_SERVER_PORT = parts[1].to_int() + else: + DNS_SERVER_IP = ip_port + DNS_SERVER_PORT = 4878 static func is_gurt_domain(url: String) -> bool: if url.begins_with("gurt://"): diff --git a/flumi/Scripts/Browser/OptionButton.gd b/flumi/Scripts/Browser/OptionButton.gd index 62f7321..a0cced8 100644 --- a/flumi/Scripts/Browser/OptionButton.gd +++ b/flumi/Scripts/Browser/OptionButton.gd @@ -1,11 +1,13 @@ extends Button const HISTORY = preload("res://Scenes/BrowserMenus/history.tscn") +const SETTINGS = preload("res://Scenes/BrowserMenus/settings.tscn") @onready var tab_container: TabManager = $"../../TabContainer" @onready var main: Main = $"../../../" var history_scene: PopupPanel = null +var settings_scene: PopupPanel = null func _on_pressed() -> void: %OptionsMenu.show() @@ -42,6 +44,8 @@ func _on_options_menu_id_pressed(id: int) -> void: show_history() if id == 5: # downloads show_downloads() + if id == 9: # settings + show_settings() if id == 10: # exit get_tree().quit() @@ -62,3 +66,16 @@ func _on_history_closed() -> void: func show_downloads() -> void: main.download_manager.show_downloads_history() + +func show_settings() -> void: + if settings_scene == null: + settings_scene = SETTINGS.instantiate() + main.add_child(settings_scene) + + settings_scene.connect("popup_hide", _on_settings_closed) + else: + settings_scene.show() + +func _on_settings_closed() -> void: + if settings_scene: + settings_scene.hide() diff --git a/flumi/Scripts/Browser/SettingsManager.gd b/flumi/Scripts/Browser/SettingsManager.gd new file mode 100644 index 0000000..c287b32 --- /dev/null +++ b/flumi/Scripts/Browser/SettingsManager.gd @@ -0,0 +1,114 @@ +extends Node + +const SETTINGS_FILE = "user://browser_settings.json" + +var settings_data = { + "startup_new_tab": true, + "startup_specific_page": false, + "startup_url": "", + "search_engine_url": "gurt://search.web?q=", + "download_confirmation": true, + "dns_url": "135.125.163.131:4878" +} + +var _loaded = false + +func _ready(): + load_settings() + +func load_settings(): + if _loaded: + return + + if not FileAccess.file_exists(SETTINGS_FILE): + save_settings() + _loaded = true + return + + var file = FileAccess.open(SETTINGS_FILE, FileAccess.READ) + if not file: + print("Failed to open settings file") + _loaded = true + return + + var json_text = file.get_as_text() + file.close() + + var json = JSON.new() + var parse_result = json.parse(json_text) + if parse_result != OK: + print("Failed to parse settings JSON") + _loaded = true + return + + var loaded_data = json.data + if loaded_data is Dictionary: + # Merge loaded settings with defaults + for key in loaded_data: + if key in settings_data: + settings_data[key] = loaded_data[key] + + _loaded = true + print("Settings loaded: ", settings_data) + +func save_settings(): + var file = FileAccess.open(SETTINGS_FILE, FileAccess.WRITE) + if not file: + print("Failed to open settings file for writing") + return + + var json_text = JSON.stringify(settings_data) + file.store_string(json_text) + file.close() + print("Settings saved: ", settings_data) + +func get_download_confirmation() -> bool: + return settings_data.download_confirmation + +func get_search_engine_url() -> String: + return settings_data.search_engine_url + +func get_dns_url() -> String: + return settings_data.dns_url + +func get_startup_behavior() -> Dictionary: + return { + "new_tab": settings_data.startup_new_tab, + "specific_page": settings_data.startup_specific_page, + "url": settings_data.startup_url + } + +func set_download_confirmation(value: bool): + settings_data.download_confirmation = value + save_settings() + +func set_search_engine_url(value: String): + settings_data.search_engine_url = value + save_settings() + +func set_dns_url(value: String): + settings_data.dns_url = value + save_settings() + # Update GurtProtocol immediately + GurtProtocol.set_dns_server(value) + +func set_startup_new_tab(value: bool): + settings_data.startup_new_tab = value + if value: + settings_data.startup_specific_page = false + save_settings() + +func set_startup_specific_page(value: bool): + settings_data.startup_specific_page = value + if value: + settings_data.startup_new_tab = false + save_settings() + +func set_startup_url(value: String): + settings_data.startup_url = value + save_settings() + +func get_setting(key: String, default_value = null): + if key in settings_data: + return settings_data[key] + return default_value diff --git a/flumi/Scripts/Browser/SettingsManager.gd.uid b/flumi/Scripts/Browser/SettingsManager.gd.uid new file mode 100644 index 0000000..f10b776 --- /dev/null +++ b/flumi/Scripts/Browser/SettingsManager.gd.uid @@ -0,0 +1 @@ +uid://bksvvuqiuanw6 diff --git a/flumi/Scripts/Browser/TabContainer.gd b/flumi/Scripts/Browser/TabContainer.gd index 65881d7..b969a58 100644 --- a/flumi/Scripts/Browser/TabContainer.gd +++ b/flumi/Scripts/Browser/TabContainer.gd @@ -229,8 +229,11 @@ func create_tab() -> void: trigger_init_scene(tab) - # WARNING: temporary - main.render() + var startup_behavior = main.get_startup_behavior() + if startup_behavior.specific_page and not startup_behavior.url.is_empty(): + main._on_search_submitted(startup_behavior.url, true) + else: + main.render() func _input(_event: InputEvent) -> void: if Input.is_action_just_pressed("NewTab"): diff --git a/flumi/Scripts/Browser/settings.gd b/flumi/Scripts/Browser/settings.gd new file mode 100644 index 0000000..0c19434 --- /dev/null +++ b/flumi/Scripts/Browser/settings.gd @@ -0,0 +1,143 @@ +extends PopupPanel + +const SETTINGS_FILE = "user://browser_settings.json" + +# Tab references +@onready var tab_general: Button = $HSplitContainer/Sidebar/VBoxContainer/TabGeneral +@onready var tab_privacy: Button = $HSplitContainer/Sidebar/VBoxContainer/TabPrivacy +@onready var tab_downloads: Button = $HSplitContainer/Sidebar/VBoxContainer/TabDownloads +@onready var tab_advanced: Button = $HSplitContainer/Sidebar/VBoxContainer/TabAdvanced +@onready var tab_about: Button = $HSplitContainer/Sidebar/VBoxContainer/TabAbout + +# Panel references +@onready var general_panel: VBoxContainer = $HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel +@onready var privacy_panel: VBoxContainer = $HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel +@onready var downloads_panel: VBoxContainer = $HSplitContainer/Content/ScrollContainer/ContentStack/DownloadsPanel +@onready var advanced_panel: VBoxContainer = $HSplitContainer/Content/ScrollContainer/ContentStack/AdvancedPanel +@onready var about_panel: VBoxContainer = $HSplitContainer/Content/ScrollContainer/ContentStack/AboutPanel + +# Settings controls - General +@onready var startup_new_tab: CheckBox = $HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer/StartupNewTab +@onready var startup_specific_page: CheckBox = $HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer/StartupSpecificPage +@onready var startup_url_container: HBoxContainer = $HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer/StartupURLContainer +@onready var startup_url_input: LineEdit = $HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/StartupSection/VBoxContainer/StartupURLContainer/URLInput +@onready var search_input: LineEdit = $HSplitContainer/Content/ScrollContainer/ContentStack/GeneralPanel/SearchEngineSection/VBoxContainer/HBoxContainer/SearchInput + +# Settings controls - Privacy +@onready var clear_history_button: Button = $HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection/VBoxContainer/ButtonsContainer/ClearHistoryButton +@onready var clear_cookies_button: Button = $HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection/VBoxContainer/ButtonsContainer/ClearCookiesButton +@onready var clear_downloads_button: Button = $HSplitContainer/Content/ScrollContainer/ContentStack/PrivacyPanel/ClearDataSection/VBoxContainer/ButtonsContainer/ClearDownloadsButton + +# Settings controls - Downloads +@onready var download_confirm_checkbox: CheckBox = $HSplitContainer/Content/ScrollContainer/ContentStack/DownloadsPanel/DownloadConfirmSection/VBoxContainer/ConfirmCheckBox + +# Settings controls - Advanced +@onready var dns_input: LineEdit = $HSplitContainer/Content/ScrollContainer/ContentStack/AdvancedPanel/DNSSection/VBoxContainer/HBoxContainer/DNSInput + +# Settings are now managed by SettingsManager singleton + +var tab_buttons = [] +var content_panels = [] + +func _ready(): + tab_buttons = [tab_general, tab_privacy, tab_downloads, tab_advanced, tab_about] + content_panels = [general_panel, privacy_panel, downloads_panel, advanced_panel, about_panel] + + tab_general.toggled.connect(_on_tab_toggled.bind("general")) + tab_privacy.toggled.connect(_on_tab_toggled.bind("privacy")) + tab_downloads.toggled.connect(_on_tab_toggled.bind("downloads")) + tab_advanced.toggled.connect(_on_tab_toggled.bind("advanced")) + tab_about.toggled.connect(_on_tab_toggled.bind("about")) + + startup_new_tab.toggled.connect(_on_startup_new_tab_toggled) + startup_specific_page.toggled.connect(_on_startup_specific_page_toggled) + startup_url_input.text_changed.connect(_on_startup_url_changed) + search_input.text_changed.connect(_on_search_engine_changed) + download_confirm_checkbox.toggled.connect(_on_download_confirmation_changed) + dns_input.text_changed.connect(_on_dns_changed) + + clear_history_button.pressed.connect(_on_clear_history_pressed) + clear_cookies_button.pressed.connect(_on_clear_cookies_pressed) + clear_downloads_button.pressed.connect(_on_clear_downloads_pressed) + + apply_settings_to_ui() + + _on_tab_toggled(true, "general") + +func _on_tab_toggled(pressed: bool, tab_name: String): + if not pressed: + return + + _update_tab_styles(tab_name) + + for i in range(content_panels.size()): + var panel = content_panels[i] + match tab_name: + "general": + panel.visible = (i == 0) + "privacy": + panel.visible = (i == 1) + "downloads": + panel.visible = (i == 2) + "advanced": + panel.visible = (i == 3) + "about": + panel.visible = (i == 4) + +func _update_tab_styles(selected_tab: String): + for i in range(tab_buttons.size()): + var button = tab_buttons[i] + var tab_names = ["general", "privacy", "downloads", "advanced", "about"] + var is_selected = (tab_names[i] == selected_tab) + + if is_selected: + button.modulate = Color.WHITE + else: + button.modulate = Color(0.8, 0.8, 0.8) + +func _on_startup_new_tab_toggled(pressed: bool): + if pressed: + SettingsManager.set_startup_new_tab(true) + startup_url_container.visible = false + +func _on_startup_specific_page_toggled(pressed: bool): + if pressed: + SettingsManager.set_startup_specific_page(true) + startup_url_container.visible = true + +func _on_startup_url_changed(new_url: String): + SettingsManager.set_startup_url(new_url) + +func _on_search_engine_changed(new_url: String): + SettingsManager.set_search_engine_url(new_url) + +func _on_download_confirmation_changed(enabled: bool): + SettingsManager.set_download_confirmation(enabled) + +func _on_dns_changed(new_dns: String): + SettingsManager.set_dns_url(new_dns) + +func _on_clear_history_pressed(): + BrowserHistory.clear_all() + +func _on_clear_cookies_pressed(): + LuaCrumbsUtils.clear_all_crumbs() + +func _on_clear_downloads_pressed(): + var main = Engine.get_main_loop().current_scene + if main.download_manager.downloads_history_ui: + main.download_manager.downloads_history_ui.clear_all_downloads() + else: + main.download_manager._ensure_downloads_history_ui() + main.download_manager.downloads_history_ui.clear_all_downloads() + +func apply_settings_to_ui(): + var startup_behavior = SettingsManager.get_startup_behavior() + startup_new_tab.button_pressed = startup_behavior.new_tab + startup_specific_page.button_pressed = startup_behavior.specific_page + startup_url_container.visible = startup_behavior.specific_page + startup_url_input.text = startup_behavior.url + + search_input.text = SettingsManager.get_search_engine_url() + download_confirm_checkbox.button_pressed = SettingsManager.get_download_confirmation() + dns_input.text = SettingsManager.get_dns_url() diff --git a/flumi/Scripts/Browser/settings.gd.uid b/flumi/Scripts/Browser/settings.gd.uid new file mode 100644 index 0000000..60b9d60 --- /dev/null +++ b/flumi/Scripts/Browser/settings.gd.uid @@ -0,0 +1 @@ +uid://d4eh2nqg8r1ui \ No newline at end of file diff --git a/flumi/Scripts/Constants.gd b/flumi/Scripts/Constants.gd index 06d1e28..a2ef1d6 100644 --- a/flumi/Scripts/Constants.gd +++ b/flumi/Scripts/Constants.gd @@ -38,10 +38,20 @@ input[type="date"] { w-28 text-[16px] bg-[#1b1b1b] rounded-md text-white hover:b var HTML_CONTENT = """
Welcome to Flumi Browser!
-This page includes a test image to verify network functionality.
+ +Start browsing by typing in the omnibar.
+ +Happy GURT:// exploration!
+