From 1d87e5270cc5de5deaf154dd0d6b3995a1d7ea1f Mon Sep 17 00:00:00 2001
From: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Date: Fri, 27 May 2022 13:44:57 +0200
Subject: [PATCH] [MIRROR] adds the "refresh TGUI" debug verb [MDB IGNORE]
(#13933)
* adds the "refresh TGUI" debug verb (#67265)
About The Pull Request
adds the Refresh TGUI verb to the debug category OOC category, but it isn't locked behind any permissions. i'd put it in OOC, but.. eeeeeeh? there's not real much use for this verb other for debuggers. i put it in the OOC category
Why It's Good For The Game
debug purposes mostly
not player facing lole
* adds the "refresh TGUI" debug verb
Co-authored-by: magatsuchi <88991542+magatsuchi@users.noreply.github.com>
---
code/modules/client/client_procs.dm | 6 +++---
code/modules/tgui/tgui_window.dm | 13 ++++++-------
code/modules/tgui_panel/external.dm | 9 +++++++++
tgui/docs/tgui-for-custom-html-popups.md | 6 +++---
4 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index d085187d9af..d5937e41ed4 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -353,9 +353,9 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
// Initialize stat panel
stat_panel.initialize(
- inline_html = file2text('html/statbrowser.html'),
- inline_js = file2text('html/statbrowser.js'),
- inline_css = file2text('html/statbrowser.css'),
+ inline_html = file("html/statbrowser.html"),
+ inline_js = file("html/statbrowser.js"),
+ inline_css = file("html/statbrowser.css"),
)
addtimer(CALLBACK(src, .proc/check_panel_loaded), 30 SECONDS)
diff --git a/code/modules/tgui/tgui_window.dm b/code/modules/tgui/tgui_window.dm
index d0fb91db0cc..ded443f37a0 100644
--- a/code/modules/tgui/tgui_window.dm
+++ b/code/modules/tgui/tgui_window.dm
@@ -102,14 +102,14 @@
html = replacetextEx(html, "\n", inline_assets_str)
// Inject inline HTML
if (inline_html)
- html = replacetextEx(html, "", inline_html)
+ html = replacetextEx(html, "", isfile(inline_html) ? file2text(inline_html) : inline_html)
// Inject inline JS
if (inline_js)
- inline_js = ""
+ inline_js = ""
html = replacetextEx(html, "", inline_js)
// Inject inline CSS
if (inline_css)
- inline_css = ""
+ inline_css = ""
html = replacetextEx(html, "", inline_css)
// Open the window
client << browse(html, "window=[id];[options]")
@@ -132,6 +132,9 @@
inline_html = initial_inline_html,
inline_js = initial_inline_js,
inline_css = initial_inline_css)
+ // Resend assets
+ for(var/datum/asset/asset in sent_assets)
+ send_asset(asset)
/**
* public
@@ -365,11 +368,7 @@
if("openLink")
client << link(href_list["url"])
if("cacheReloaded")
- // Reinitialize
reinitialize()
- // Resend the assets
- for(var/asset in sent_assets)
- send_asset(asset)
/datum/tgui_window/vv_edit_var(var_name, var_value)
return var_name != NAMEOF(src, id) && ..()
diff --git a/code/modules/tgui_panel/external.dm b/code/modules/tgui_panel/external.dm
index e5b3602e868..ddc3c0e97d5 100644
--- a/code/modules/tgui_panel/external.dm
+++ b/code/modules/tgui_panel/external.dm
@@ -35,3 +35,12 @@
// Force show the panel to see if there are any errors
winset(src, "output", "is-disabled=1&is-visible=0")
winset(src, "browseroutput", "is-disabled=0;is-visible=1")
+
+/client/verb/refresh_tgui()
+ set name = "Refresh TGUI"
+ set category = "OOC"
+
+ message_admins("start")
+ for(var/window_id in tgui_windows)
+ var/datum/tgui_window/window = tgui_windows[window_id]
+ window.reinitialize()
diff --git a/tgui/docs/tgui-for-custom-html-popups.md b/tgui/docs/tgui-for-custom-html-popups.md
index 5fe0e8ff78c..ad563a693b0 100644
--- a/tgui/docs/tgui-for-custom-html-popups.md
+++ b/tgui/docs/tgui-for-custom-html-popups.md
@@ -85,9 +85,9 @@ You can also do the same by splitting your code into separate files, and then le
```dm
window.initialize(
- inline_html = file2text('code/modules/thing/thing.html'),
- inline_js = file2text('code/modules/thing/thing.js'),
- inline_css = file2text('code/modules/thing/thing.css'),
+ inline_html = file("code/modules/thing/thing.html"),
+ inline_js = file("code/modules/thing/thing.js"),
+ inline_css = file("code/modules/thing/thing.css"),
)
```