diff --git a/code/datums/browser.dm b/code/datums/browser.dm
index c935a7a9f93..a143be58501 100644
--- a/code/datums/browser.dm
+++ b/code/datums/browser.dm
@@ -1,44 +1,48 @@
/datum/browser
var/mob/user
- var/title
- var/window_id // window_id is used as the window name for browse and onclose
+ var/title = ""
+ /// window_id is used as the window name for browse and onclose
+ var/window_id
var/width = 0
var/height = 0
- var/datum/weakref/ref = null
- var/window_options = "can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;" // window option is set using window_id
- var/stylesheets[0]
- var/scripts[0]
+ var/datum/weakref/source_ref = null
+ /// window option is set using window_id
+ var/window_options = "can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;"
+ var/list/stylesheets = list()
+ var/list/scripts = list()
var/head_elements
var/body_elements
var/head_content = ""
var/content = ""
-/datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/nref = null)
- if(IS_CLIENT_OR_MOCK(nuser))
- var/client/client_user = nuser
+/datum/browser/New(mob/user, window_id, title = "", width = 0, height = 0, atom/source = null)
+ if(IS_CLIENT_OR_MOCK(user))
+ var/client/client_user = user
user = client_user.mob
- else
- user = nuser
+ src.user = user
RegisterSignal(user, COMSIG_QDELETING, PROC_REF(user_deleted))
- window_id = nwindow_id
- if (ntitle)
- title = format_text(ntitle)
- if (nwidth)
- width = nwidth
- if (nheight)
- height = nheight
- if (nref)
- ref = WEAKREF(nref)
+ src.window_id = window_id
+ if (title)
+ src.title = format_text(title)
+ if (width)
+ src.width = width
+ if (height)
+ src.height = height
+ if (source)
+ src.source_ref = WEAKREF(source)
/datum/browser/proc/user_deleted(datum/source)
SIGNAL_HANDLER
user = null
-/datum/browser/proc/add_head_content(nhead_content)
- head_content = nhead_content
+/datum/browser/proc/add_head_content(head_content)
+ src.head_content += head_content
-/datum/browser/proc/set_window_options(nwindow_options)
- window_options = nwindow_options
+/datum/browser/proc/set_head_content(head_content)
+ src.head_content = head_content
+
+/datum/browser/proc/set_window_options(window_options)
+ src.window_options = window_options
/datum/browser/proc/add_stylesheet(name, file)
if (istype(name, /datum/asset/spritesheet))
@@ -59,21 +63,21 @@
scripts["[ckey(name)].js"] = file
SSassets.transport.register_asset("[ckey(name)].js", file)
-/datum/browser/proc/set_content(ncontent)
- content = ncontent
+/datum/browser/proc/set_content(content)
+ src.content = content
-/datum/browser/proc/add_content(ncontent)
- content += ncontent
+/datum/browser/proc/add_content(content)
+ src.content += content
/datum/browser/proc/get_header()
var/datum/asset/simple/namespaced/common/common_asset = get_asset_datum(/datum/asset/simple/namespaced/common)
- var/file
- head_content += ""
- for (file in stylesheets)
- head_content += ""
+ var/list/new_head_content = list()
+ new_head_content += ""
+ for (var/file in stylesheets)
+ new_head_content += ""
if(user.client?.window_scaling && user.client?.window_scaling != 1 && !user.client?.prefs.read_preference(/datum/preference/toggle/ui_scale) && width && height)
- head_content += {"
+ new_head_content += {"
"}
- for (file in scripts)
- head_content += ""
+ for (var/file in scripts)
+ new_head_content += ""
+ head_content += new_head_content.Join()
return {"
@@ -96,6 +101,7 @@
[title ? "
"}
+
//" This is here because else the rest of the file looks like a string in notepad++.
/datum/browser/proc/get_footer()
return {"
@@ -106,16 +112,17 @@
/datum/browser/proc/get_content()
return {"
- [get_header()]
- [content]
- [get_footer()]
+ [get_header()]
+ [content]
+ [get_footer()]
"}
-/datum/browser/proc/open(use_onclose = TRUE)
+/datum/browser/proc/open(use_on_close = TRUE)
if(isnull(window_id)) //null check because this can potentially nuke goonchat
WARNING("Browser [title] tried to open with a null ID")
to_chat(user, span_userdanger("The [title] browser you tried to open failed a sanity check! Please report this on GitHub!"))
return
+
var/window_size = ""
if(width && height)
if(user.client?.prefs?.read_preference(/datum/preference/toggle/ui_scale))
@@ -123,27 +130,28 @@
window_size = "size=[width * scaling]x[height * scaling];"
else
window_size = "size=[width]x[height];"
+
var/datum/asset/simple/namespaced/common/common_asset = get_asset_datum(/datum/asset/simple/namespaced/common)
common_asset.send(user)
- if (stylesheets.len)
+ if (length(stylesheets))
SSassets.transport.send_assets(user, stylesheets)
- if (scripts.len)
+ if (length(scripts))
SSassets.transport.send_assets(user, scripts)
DIRECT_OUTPUT(user, browse(get_content(), "window=[window_id];[window_size][window_options]"))
- if (use_onclose)
+ if (use_on_close)
setup_onclose()
/datum/browser/proc/setup_onclose()
set waitfor = 0 //winexists sleeps, so we don't need to.
for (var/i in 1 to 10)
- if (user?.client && winexists(user, window_id))
- var/atom/send_ref
- if(ref)
- send_ref = ref.resolve()
- if(!send_ref)
- ref = null
- onclose(user, window_id, send_ref)
- break
+ if (!user?.client || !winexists(user, window_id))
+ continue
+ var/atom/send_ref
+ if(source_ref)
+ send_ref = source_ref.resolve()
+ if(!send_ref)
+ source_ref = null
+ onclose(user, window_id, send_ref)
/datum/browser/proc/close()
if(!isnull(window_id))//null check because this can potentially nuke goonchat
@@ -151,106 +159,106 @@
else
WARNING("Browser [title] tried to close with a null ID")
-/datum/browser/modal/alert/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1,Timeout=6000)
- if (!User)
+/datum/browser/modal/alert/New(user, message, title, button_1 = "Ok", button_2, button_3, steal_focus = TRUE, timeout = 600 SECONDS)
+ if (!user)
return
- var/output = {"
[Message]
+ var/list/display_list = list()
+ display_list += {"
[message]
"}
+ display_list += {"
"}
- ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 150, src, StealFocus, Timeout)
- set_content(output)
+ ..(user, ckey("[user]-[message]-[title]-[world.time]-[rand(1,10000)]"), title, 350, 150, src, steal_focus, timeout)
+ set_content(display_list.Join())
/datum/browser/modal/alert/Topic(href,href_list)
if (href_list["close"] || !user || !user.client)
- opentime = 0
+ open_time = 0
return
if (href_list["button"])
var/button = text2num(href_list["button"])
if (button <= 3 && button >= 1)
- selectedbutton = button
- opentime = 0
+ selected_button = button
+ open_time = 0
close()
/**
* **DEPRECATED: USE tgui_alert(...) INSTEAD**
*
- * Designed as a drop in replacement for alert(); functions the same. (outside of needing User specified)
+ * Designed as a drop in replacement for alert(); functions the same. (outside of needing user specified)
* Arguments:
- * * User - The user to show the alert to.
- * * Message - The textual body of the alert.
- * * Title - The title of the alert's window.
- * * Button1 - The first button option.
- * * Button2 - The second button option.
- * * Button3 - The third button option.
- * * StealFocus - Boolean operator controlling if the alert will steal the user's window focus.
- * * Timeout - The timeout of the window, after which no responses will be valid.
+ * * user - The user to show the alert to.
+ * * message - The textual body of the alert.
+ * * title - The title of the alert's window.
+ * * button_1 - The first button option.
+ * * button_2 - The second button option.
+ * * button_3 - The third button option.
+ * * steal_focus - Boolean operator controlling if the alert will steal the user's window focus.
+ * * timeout - The timeout of the window, after which no responses will be valid.
*/
-/proc/tgalert(mob/User, Message, Title, Button1="Ok", Button2, Button3, StealFocus = TRUE, Timeout = 6000)
- if (!User)
- User = usr
- if (!istype(User))
- if (istype(User, /client))
- var/client/client = User
- User = client.mob
- else
+/proc/tg_alert(mob/user, message, title, button_1 = "Ok", button_2, button_3, steal_focus = TRUE, timeout = 600 SECONDS)
+ if (!user)
+ user = usr
+ if (!ismob(user))
+ if (!istype(user, /client))
return
+ var/client/user_client = user
+ user = user_client.mob
// Get user's response using a modal
- var/datum/browser/modal/alert/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus, Timeout)
- A.open()
- A.wait()
- switch(A.selectedbutton)
+ var/datum/browser/modal/alert/window = new(user, message, title, button_1, button_2, button_3, steal_focus, timeout)
+ window.open()
+ window.wait()
+ switch(window.selected_button)
if (1)
- return Button1
+ return button_1
if (2)
- return Button2
+ return button_2
if (3)
- return Button3
+ return button_3
/datum/browser/modal
- var/opentime = 0
+ var/open_time = 0
var/timeout
- var/selectedbutton = 0
- var/stealfocus
+ var/selected_button = 0
+ var/steal_focus
-/datum/browser/modal/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/nref = null, StealFocus = 1, Timeout = 6000)
+/datum/browser/modal/New(user, window_id, title = 0, width = 0, height = 0, atom/source = null, steal_focus = TRUE, timeout = 600 SECONDS)
..()
- stealfocus = StealFocus
- if (!StealFocus)
+ src.steal_focus = steal_focus
+ if (!src.steal_focus)
window_options += "focus=false;"
- timeout = Timeout
-
+ src.timeout = timeout
/datum/browser/modal/close()
- .=..()
- opentime = 0
+ . = ..()
+ open_time = 0
-/datum/browser/modal/open(use_onclose)
+/datum/browser/modal/open(use_on_close)
set waitfor = FALSE
- opentime = world.time
+ open_time = world.time
+ use_on_close = TRUE
- if (stealfocus)
- . = ..(use_onclose = 1)
+ if (steal_focus)
+ . = ..()
else
- var/focusedwindow = winget(user, null, "focus")
- . = ..(use_onclose = 1)
+ var/focused_window = winget(user, null, "focus")
+ . = ..()
//waits for the window to show up client side before attempting to un-focus it
//winexists sleeps until it gets a reply from the client, so we don't need to bother sleeping
for (var/i in 1 to 10)
if (user && winexists(user, window_id))
- if (focusedwindow)
- winset(user, focusedwindow, "focus=true")
+ if (focused_window)
+ winset(user, focused_window, "focus=true")
else
winset(user, "mapwindow", "focus=true")
break
@@ -258,239 +266,235 @@
addtimer(CALLBACK(src, PROC_REF(close)), timeout)
/datum/browser/modal/proc/wait()
- while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time))
+ while (open_time && selected_button <= 0 && (!timeout || open_time + timeout > world.time))
stoplag(1)
-/datum/browser/modal/listpicker
- var/valueslist = list()
+/datum/browser/modal/list_picker
+ var/values_list = list()
-/datum/browser/modal/listpicker/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1, Timeout = FALSE,list/values,inputtype="checkbox", width, height, slidecolor)
- if (!User)
+/datum/browser/modal/list_picker/New(user, message, title, button_1 = "Ok", button_2, button_3, steal_focus = TRUE, timeout = FALSE, list/values, input_type = "checkbox", width, height, slide_color)
+ if (!user)
return
- var/output = {"