From a837479208a40c3388734f30c19c134cace58cce Mon Sep 17 00:00:00 2001 From: Nadyr <41974248+Darlantanis@users.noreply.github.com> Date: Wed, 22 Jun 2022 22:28:49 -0400 Subject: [PATCH] Delete tgui_input_list.dm --- code/modules/tgui/tgui_input_list.dm | 217 --------------------------- 1 file changed, 217 deletions(-) delete mode 100644 code/modules/tgui/tgui_input_list.dm diff --git a/code/modules/tgui/tgui_input_list.dm b/code/modules/tgui/tgui_input_list.dm deleted file mode 100644 index 231b527b12..0000000000 --- a/code/modules/tgui/tgui_input_list.dm +++ /dev/null @@ -1,217 +0,0 @@ -/** - * Creates a TGUI input list window and returns the user's response. - * - * This proc should be used to create alerts that the caller will wait for a response from. - * Arguments: - * * user - The user to show the input box to. - * * message - The content of the input box, shown in the body of the TGUI window. - * * title - The title of the input box, shown on the top of the TGUI window. - * * buttons - The options that can be chosen by the user, each string is assigned a button on the UI. - * * default - The option with this value will be selected on first paint of the TGUI window. - * * timeout - The timeout of the input box, after which the input box will close and qdel itself. Set to zero for no timeout. - * * strict_modern - Disabled the preference check of the input box, only allowing the TGUI window to show. - */ -<<<<<<< HEAD:code/modules/tgui/tgui_input_list.dm -/proc/tgui_input_list(mob/user, message, title, list/buttons, default, timeout = 0) -======= -/proc/tgui_input_list(mob/user, message, title = "Select", list/items, default, timeout = 0, strict_modern = FALSE) ->>>>>>> 170cc46a9a... Merge pull request #13120 from ItsSelis/tgui-input-framework-hotfix:code/modules/tgui_input/list.dm - if (istext(user)) - stack_trace("tgui_alert() received text for user instead of mob") - return - if (!user) - user = usr - if(!length(buttons)) - return - if (!istype(user)) - if (istype(user, /client)) - var/client/client = user - user = client.mob - else - return -<<<<<<< HEAD:code/modules/tgui/tgui_input_list.dm - var/datum/tgui_list_input/input = new(user, message, title, buttons, default, timeout) -======= - /// Client does NOT have tgui_input on: Returns regular input - if(!usr.client.prefs.tgui_input_mode && !strict_modern) - return input(user, message, title, default) as null|anything in items - var/datum/tgui_list_input/input = new(user, message, title, items, default, timeout) ->>>>>>> 170cc46a9a... Merge pull request #13120 from ItsSelis/tgui-input-framework-hotfix:code/modules/tgui_input/list.dm - input.tgui_interact(user) - input.wait() - if (input) - . = input.choice - qdel(input) - -/** - * Creates an asynchronous TGUI input list window with an associated callback. - * - * This proc should be used to create inputs that invoke a callback with the user's chosen option. - * Arguments: - * * user - The user to show the input box to. - * * message - The content of the input box, shown in the body of the TGUI window. - * * title - The title of the input box, shown on the top of the TGUI window. - * * buttons - The options that can be chosen by the user, each string is assigned a button on the UI. - * * default - The option with this value will be selected on first paint of the TGUI window. - * * callback - The callback to be invoked when a choice is made. - * * timeout - The timeout of the input box, after which the menu will close and qdel itself. Set to zero for no timeout. - */ -/proc/tgui_input_list_async(mob/user, message, title, list/buttons, default, datum/callback/callback, timeout = 60 SECONDS) - if (istext(user)) - stack_trace("tgui_alert() received text for user instead of mob") - return - if (!user) - user = usr - if(!length(buttons)) - return - if (!istype(user)) - if (istype(user, /client)) - var/client/client = user - user = client.mob - else - return - var/datum/tgui_list_input/async/input = new(user, message, title, buttons, default, callback, timeout) - input.tgui_interact(user) - -/** - * # tgui_list_input - * - * Datum used for instantiating and using a TGUI-controlled list input that prompts the user with - * a message and shows a list of selectable options - */ -/datum/tgui_list_input - /// The title of the TGUI window - var/title - /// The textual body of the TGUI window - var/message - /// The list of buttons (responses) provided on the TGUI window - var/list/buttons - /// Buttons (strings specifically) mapped to the actual value (e.g. a mob or a verb) - var/list/buttons_map - /// Value of the button that should be pre-selected on first paint. - var/initial - /// The button that the user has pressed, null if no selection has been made - var/choice - /// The time at which the tgui_list_input was created, for displaying timeout progress. - var/start_time - /// The lifespan of the tgui_list_input, after which the window will close and delete itself. - var/timeout - /// Boolean field describing if the tgui_list_input was closed by the user. - var/closed - -/datum/tgui_list_input/New(mob/user, message, title, list/buttons, default, timeout) - src.title = title - src.message = message - src.buttons = list() - src.buttons_map = list() - src.initial = default - var/list/repeat_buttons = list() - - // Gets rid of illegal characters - var/static/regex/whitelistedWords = regex(@{"([^\u0020-\u8000]+)"}) - - for(var/i in buttons) - if(isnull(i)) - stack_trace("Null in a tgui_input_list() buttons") - continue - - var/string_key = whitelistedWords.Replace("[i]", "") - - //avoids duplicated keys E.g: when areas have the same name - string_key = avoid_assoc_duplicate_keys(string_key, repeat_buttons) - - src.buttons += string_key - src.buttons_map[string_key] = i - - - if (timeout) - src.timeout = timeout - start_time = world.time - QDEL_IN(src, timeout) - -/datum/tgui_list_input/Destroy(force, ...) - SStgui.close_uis(src) - QDEL_NULL(buttons) - . = ..() - -/** - * Waits for a user's response to the tgui_list_input's prompt before returning. Returns early if - * the window was closed by the user. - */ -/datum/tgui_list_input/proc/wait() - while (!choice && !closed) - stoplag(1) - -/datum/tgui_list_input/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "ListInput") - ui.open() - -/datum/tgui_list_input/tgui_close(mob/user) - . = ..() - closed = TRUE - -/datum/tgui_list_input/tgui_state(mob/user) - return GLOB.tgui_always_state - -/datum/tgui_list_input/tgui_static_data(mob/user) - . = list( - "title" = title, - "message" = message, - "buttons" = buttons, - "initial" = initial - ) - -/datum/tgui_list_input/tgui_data(mob/user) - . = list() - if(timeout) - .["timeout"] = clamp((timeout - (world.time - start_time) - 1 SECONDS) / (timeout - 1 SECONDS), 0, 1) - -/datum/tgui_list_input/tgui_act(action, list/params) - . = ..() - if (.) - return - switch(action) - if("choose") - if (!(params["choice"] in buttons)) - return - set_choice(buttons_map[params["choice"]]) - SStgui.close_uis(src) - return TRUE - if("cancel") - SStgui.close_uis(src) - closed = TRUE - return TRUE - -/datum/tgui_list_input/proc/set_choice(choice) - src.choice = choice - -/** - * # async tgui_list_input - * - * An asynchronous version of tgui_list_input to be used with callbacks instead of waiting on user responses. - */ -/datum/tgui_list_input/async - /// The callback to be invoked by the tgui_list_input upon having a choice made. - var/datum/callback/callback - -/datum/tgui_list_input/async/New(mob/user, message, title, list/buttons, default, callback, timeout) - ..(user, title, message, buttons, default, timeout) - src.callback = callback - -/datum/tgui_list_input/async/Destroy(force, ...) - QDEL_NULL(callback) - . = ..() - -/datum/tgui_list_input/async/tgui_close(mob/user) - . = ..() - qdel(src) - -/datum/tgui_list_input/async/set_choice(choice) - . = ..() - if(!isnull(src.choice)) - callback?.InvokeAsync(src.choice) - -/datum/tgui_list_input/async/wait() - return