From 5b16ee72be3a0224c369f6e42c3dee1cace64428 Mon Sep 17 00:00:00 2001 From: Relintai Date: Thu, 25 Aug 2022 02:07:31 +0200 Subject: [PATCH] Split the web page addon to 2. --- game/Main.tscn | 6 ++- .../editor/PageListEntry.gd | 0 .../editor/PageListEntry.tscn | 2 +- .../editor/Pages.gd} | 0 .../editor/Pages.tscn} | 3 +- .../editor/WebPageListEditor.gd | 0 .../editor/WebPageListEditor.tscn | 8 +-- .../icons/icon_web_page_list.svg | 0 .../icons/icon_web_page_list.svg.import | 6 +-- game/addons/web_page_list/plugin.cfg | 12 +++++ game/addons/web_page_list/plugin.gd | 21 ++++++++ game/addons/web_pages/classes/WebPageList.gd | 2 +- game/addons/web_pages/editor/PageEditor.gd | 50 +++++++++++++++++++ game/addons/web_pages/plugin.gd | 4 +- game/project.pandemonium | 2 +- 15 files changed, 102 insertions(+), 14 deletions(-) rename game/addons/{web_pages => web_page_list}/editor/PageListEntry.gd (100%) rename game/addons/{web_pages => web_page_list}/editor/PageListEntry.tscn (88%) rename game/addons/{web_pages/editor/Posts.gd => web_page_list/editor/Pages.gd} (100%) rename game/addons/{web_pages/editor/Posts.tscn => web_page_list/editor/Pages.tscn} (90%) rename game/addons/{web_pages => web_page_list}/editor/WebPageListEditor.gd (100%) rename game/addons/{web_pages => web_page_list}/editor/WebPageListEditor.tscn (52%) rename game/addons/{web_pages => web_page_list}/icons/icon_web_page_list.svg (100%) rename game/addons/{web_pages => web_page_list}/icons/icon_web_page_list.svg.import (67%) create mode 100644 game/addons/web_page_list/plugin.cfg create mode 100644 game/addons/web_page_list/plugin.gd diff --git a/game/Main.tscn b/game/Main.tscn index de520e8..ca521f9 100644 --- a/game/Main.tscn +++ b/game/Main.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://Main.gd" type="Script" id=1] [ext_resource path="res://addons/web_pages/classes/WebPage.gd" type="Script" id=2] +[ext_resource path="res://addons/web_pages/classes/WebPageList.gd" type="Script" id=3] [node name="WebServer" type="WebServerSimple"] script = ExtResource( 1 ) @@ -14,3 +15,6 @@ data = "Blog" [node name="WebPage" type="WebNode" parent="WebRoot"] script = ExtResource( 2 ) + +[node name="WebPageList" type="WebNode" parent="WebRoot"] +script = ExtResource( 3 ) diff --git a/game/addons/web_pages/editor/PageListEntry.gd b/game/addons/web_page_list/editor/PageListEntry.gd similarity index 100% rename from game/addons/web_pages/editor/PageListEntry.gd rename to game/addons/web_page_list/editor/PageListEntry.gd diff --git a/game/addons/web_pages/editor/PageListEntry.tscn b/game/addons/web_page_list/editor/PageListEntry.tscn similarity index 88% rename from game/addons/web_pages/editor/PageListEntry.tscn rename to game/addons/web_page_list/editor/PageListEntry.tscn index 5b5c853..c98916f 100644 --- a/game/addons/web_pages/editor/PageListEntry.tscn +++ b/game/addons/web_page_list/editor/PageListEntry.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=2] -[ext_resource path="res://addons/web_pages/editor/PageListEntry.gd" type="Script" id=1] +[ext_resource path="res://addons/web_page_list/editor/PageListEntry.gd" type="Script" id=1] [node name="PostEntry" type="PanelContainer"] margin_right = 1016.0 diff --git a/game/addons/web_pages/editor/Posts.gd b/game/addons/web_page_list/editor/Pages.gd similarity index 100% rename from game/addons/web_pages/editor/Posts.gd rename to game/addons/web_page_list/editor/Pages.gd diff --git a/game/addons/web_pages/editor/Posts.tscn b/game/addons/web_page_list/editor/Pages.tscn similarity index 90% rename from game/addons/web_pages/editor/Posts.tscn rename to game/addons/web_page_list/editor/Pages.tscn index fb4bf4c..df596dd 100644 --- a/game/addons/web_pages/editor/Posts.tscn +++ b/game/addons/web_page_list/editor/Pages.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=2] -[ext_resource path="res://addons/web_pages/editor/Posts.gd" type="Script" id=1] +[ext_resource path="res://addons/web_page_list/editor/Pages.gd" type="Script" id=1] [node name="Posts" type="VBoxContainer"] anchor_right = 1.0 @@ -24,6 +24,7 @@ size_flags_horizontal = 3 size_flags_vertical = 3 [node name="OutsideVBC" type="VBoxContainer" parent="ScrollContainer"] +margin_right = 1016.0 margin_bottom = 4.0 size_flags_horizontal = 3 diff --git a/game/addons/web_pages/editor/WebPageListEditor.gd b/game/addons/web_page_list/editor/WebPageListEditor.gd similarity index 100% rename from game/addons/web_pages/editor/WebPageListEditor.gd rename to game/addons/web_page_list/editor/WebPageListEditor.gd diff --git a/game/addons/web_pages/editor/WebPageListEditor.tscn b/game/addons/web_page_list/editor/WebPageListEditor.tscn similarity index 52% rename from game/addons/web_pages/editor/WebPageListEditor.tscn rename to game/addons/web_page_list/editor/WebPageListEditor.tscn index 788802e..e0df026 100644 --- a/game/addons/web_pages/editor/WebPageListEditor.tscn +++ b/game/addons/web_page_list/editor/WebPageListEditor.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://addons/web_pages/editor/WebPageListEditor.gd" type="Script" id=1] -[ext_resource path="res://addons/web_pages/editor/Posts.tscn" type="PackedScene" id=3] +[ext_resource path="res://addons/web_page_list/editor/WebPageListEditor.gd" type="Script" id=1] +[ext_resource path="res://addons/web_page_list/editor/Pages.tscn" type="PackedScene" id=2] -[node name="WebBlogEditor" type="PanelContainer"] +[node name="WebPostListEditor" type="PanelContainer"] anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource( 1 ) @@ -16,6 +16,6 @@ margin_bottom = 593.0 size_flags_horizontal = 3 size_flags_vertical = 3 -[node name="Posts" parent="Tabs" instance=ExtResource( 3 )] +[node name="Posts" parent="Tabs" instance=ExtResource( 2 )] size_flags_horizontal = 3 size_flags_vertical = 3 diff --git a/game/addons/web_pages/icons/icon_web_page_list.svg b/game/addons/web_page_list/icons/icon_web_page_list.svg similarity index 100% rename from game/addons/web_pages/icons/icon_web_page_list.svg rename to game/addons/web_page_list/icons/icon_web_page_list.svg diff --git a/game/addons/web_pages/icons/icon_web_page_list.svg.import b/game/addons/web_page_list/icons/icon_web_page_list.svg.import similarity index 67% rename from game/addons/web_pages/icons/icon_web_page_list.svg.import rename to game/addons/web_page_list/icons/icon_web_page_list.svg.import index 9201820..c600193 100644 --- a/game/addons/web_pages/icons/icon_web_page_list.svg.import +++ b/game/addons/web_page_list/icons/icon_web_page_list.svg.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/icon_web_page_list.svg-96073753265e9704b2646a0bc324f643.stex" +path="res://.import/icon_web_page_list.svg-88b78d49287add5e57b6b6075a062b75.stex" metadata={ "vram_texture": false } [deps] -source_file="res://addons/web_pages/icons/icon_web_page_list.svg" -dest_files=[ "res://.import/icon_web_page_list.svg-96073753265e9704b2646a0bc324f643.stex" ] +source_file="res://addons/web_page_list/icons/icon_web_page_list.svg" +dest_files=[ "res://.import/icon_web_page_list.svg-88b78d49287add5e57b6b6075a062b75.stex" ] [params] diff --git a/game/addons/web_page_list/plugin.cfg b/game/addons/web_page_list/plugin.cfg new file mode 100644 index 0000000..705af96 --- /dev/null +++ b/game/addons/web_page_list/plugin.cfg @@ -0,0 +1,12 @@ +[plugin] + +name="Web Page List" +description="" +author="Relintai" +version="1.0" +script="plugin.gd" + + + + + diff --git a/game/addons/web_page_list/plugin.gd b/game/addons/web_page_list/plugin.gd new file mode 100644 index 0000000..a617ba3 --- /dev/null +++ b/game/addons/web_page_list/plugin.gd @@ -0,0 +1,21 @@ +tool +extends EditorPlugin + +var web_pages_editor : Control = null + +func _enter_tree(): + var wbes : PackedScene = ResourceLoader.load("res://addons/web_page_list/editor/WebPageListEditor.tscn") + web_pages_editor = wbes.instance() + web_pages_editor.undo_redo = get_undo_redo() + + var wne : Control = Engine.get_global("WebNodeEditor") + if wne: + wne.add_main_screen_tab(web_pages_editor) + +func _exit_tree(): + var wne : Control = Engine.get_global("WebNodeEditor") + if wne: + wne.remove_main_screen_tab(web_pages_editor) + +func get_plugin_name() -> String: + return "WebPageListEditorPlugin" diff --git a/game/addons/web_pages/classes/WebPageList.gd b/game/addons/web_pages/classes/WebPageList.gd index e58e181..fd65739 100644 --- a/game/addons/web_pages/classes/WebPageList.gd +++ b/game/addons/web_pages/classes/WebPageList.gd @@ -1,6 +1,6 @@ tool extends WebNode -class_name WebPageList, "res://addons/web_pages/icons/icon_web_page_list.svg" +class_name WebPageList, "res://addons/web_page_list/icons/icon_web_page_list.svg" func add_post(post : WebPage) -> void: if (get_child_count() > 0): diff --git a/game/addons/web_pages/editor/PageEditor.gd b/game/addons/web_pages/editor/PageEditor.gd index d53c2a9..21ac9f7 100644 --- a/game/addons/web_pages/editor/PageEditor.gd +++ b/game/addons/web_pages/editor/PageEditor.gd @@ -1,6 +1,8 @@ tool extends VBoxContainer +var _wne_tool_bar_button : Button = null + var _post : WebPage = null var undo_redo : UndoRedo = null @@ -25,3 +27,51 @@ func _notification(what): if what == NOTIFICATION_INSTANCED: var le : LineEdit = get_node("HBoxContainer/PostNameLE") le.connect("text_entered", self, "_on_PostNameLE_text_entered") + elif what == NOTIFICATION_ENTER_TREE: + var wne : Control = Engine.get_global("WebNodeEditor") + if wne: + _wne_tool_bar_button = Button.new() + _wne_tool_bar_button.set_text("Blog Editor") + _wne_tool_bar_button.set_tooltip("HTML preview") + _wne_tool_bar_button.set_toggle_mode(true) + _wne_tool_bar_button.set_pressed(false) + _wne_tool_bar_button.set_button_group(wne.get_main_button_group()) + _wne_tool_bar_button.set_keep_pressed_outside(true) + wne.add_control_to_tool_bar(_wne_tool_bar_button) + _wne_tool_bar_button.connect("toggled", self, "_on_blog_editor_button_toggled") + wne.connect("edited_node_changed", self, "_edited_node_changed") + + elif what == NOTIFICATION_EXIT_TREE: + if _wne_tool_bar_button: + _wne_tool_bar_button.queue_free() + _wne_tool_bar_button = null + + var wne : Control = Engine.get_global("WebNodeEditor") + if wne: + wne.disconnect("edited_node_changed", self, "_edited_node_changed") + + +func _on_blog_editor_button_toggled(on): + if on: + var wne : Control = Engine.get_global("WebNodeEditor") + if wne: + wne.switch_to_main_screen_tab(self) + _wne_tool_bar_button.set_pressed_no_signal(true) + +func _edited_node_changed(web_node : WebNode): + if !_wne_tool_bar_button: + return + + var wne : Control = Engine.get_global("WebNodeEditor") + if wne: + if web_node is WebPage: + _post = web_node + _wne_tool_bar_button.show() + _wne_tool_bar_button.pressed = true + #wne.switch_to_main_screen_tab(self) + else: + _wne_tool_bar_button.hide() + #_post = null + #add method to switch off to the prev screen + #wne.switch_to_main_screen_tab(self) + diff --git a/game/addons/web_pages/plugin.gd b/game/addons/web_pages/plugin.gd index 11c5916..e3d7802 100644 --- a/game/addons/web_pages/plugin.gd +++ b/game/addons/web_pages/plugin.gd @@ -4,7 +4,7 @@ extends EditorPlugin var web_pages_editor : Control = null func _enter_tree(): - var wbes : PackedScene = ResourceLoader.load("res://addons/web_pages/editor/WebPageListEditor.tscn") + var wbes : PackedScene = ResourceLoader.load("res://addons/web_pages/editor/PageEditor.tscn") web_pages_editor = wbes.instance() web_pages_editor.undo_redo = get_undo_redo() @@ -18,4 +18,4 @@ func _exit_tree(): wne.remove_main_screen_tab(web_pages_editor) func get_plugin_name() -> String: - return "WebBlogEditorPlugin" + return "WebPageEditorPlugin" diff --git a/game/project.pandemonium b/game/project.pandemonium index e1611a0..6ea2c27 100644 --- a/game/project.pandemonium +++ b/game/project.pandemonium @@ -33,7 +33,7 @@ _global_script_class_icons={ @"WebPage": "res://addons/web_pages/icons/icon_web_page.svg", @"WebPageEntryTitleText": "res://addons/web_pages/icons/icon_web_page_entry_title_text.svg", @"WebPageEntry": "res://addons/web_pages/icons/icon_web_page_entry.svg", -@"WebPageList": "res://addons/web_pages/icons/icon_web_page_list.svg" +@"WebPageList": "res://addons/web_page_list/icons/icon_web_page_list.svg" } [application]