From c75ba3a517b844db4ae83a3c5bb35f23a7f1668e Mon Sep 17 00:00:00 2001 From: Will Berry <73126355+wdberry@users.noreply.github.com> Date: Fri, 10 Mar 2023 20:20:44 -0500 Subject: [PATCH] re-implemented item search via choose-elem-button for exact matching regardless of locale --- cybersyn/locale/en/manager.cfg | 4 ++-- cybersyn/scripts/gui/inventory.lua | 2 +- cybersyn/scripts/gui/manager.lua | 20 +++++++------------- cybersyn/scripts/gui/stations.lua | 2 +- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/cybersyn/locale/en/manager.cfg b/cybersyn/locale/en/manager.cfg index 5d5040e..a82667b 100644 --- a/cybersyn/locale/en/manager.cfg +++ b/cybersyn/locale/en/manager.cfg @@ -57,8 +57,8 @@ requested=Requested returning-to-depot=Returning to depot route=Route runtime=Runtime -search-label=Search: -search-item-label=Search by item: +search-label=Station Name: +search-item-label=Item Filter: shipments-description=Green = Inbound\nBlue = Outbound shipment=Shipment shipments=Shipments diff --git a/cybersyn/scripts/gui/inventory.lua b/cybersyn/scripts/gui/inventory.lua index 86833b7..8540d07 100644 --- a/cybersyn/scripts/gui/inventory.lua +++ b/cybersyn/scripts/gui/inventory.lua @@ -108,7 +108,7 @@ function inventory_tab.build(map_data, player_data) for _, signal_ID in pairs(comb1_signals) do local item = signal_ID.signal.name if item then - if string.match(item, search_item) then + if item == search_item then goto has_match end end diff --git a/cybersyn/scripts/gui/manager.lua b/cybersyn/scripts/gui/manager.lua index 3acafd1..70d3320 100644 --- a/cybersyn/scripts/gui/manager.lua +++ b/cybersyn/scripts/gui/manager.lua @@ -71,12 +71,7 @@ function manager.create(player) }, --item search box commented out. It *works*, but, the filtering logic only checks delivieres, so I'm not sure what Mami intended it for, so I'm leaving it off for now... { type = "label", style = "subheader_caption_label", caption = { "cybersyn-gui.search-item-label" } }, - { - name = "manager_item_search_field", - type = "textfield", - clear_and_focus_on_right_click = true, - handler = manager.handle.manager_update_item_search, --on_gui_text_changed - }, + { type= "choose-elem-button", name="manager_item_filter", style="slot_button_in_shallow_frame", elem_type="signal", handler=manager.handle.manager_update_item_search, }, { type = "empty-widget", style = "flib_horizontal_pusher" }, { type = "label", style = "caption_label", caption = { "cybersyn-gui.network-name-label" } }, { type= "choose-elem-button", name="network", style="slot_button_in_shallow_frame", elem_type="signal", tooltip={"cybersyn-gui.network-tooltip"}, handler=manager.handle.manager_update_network_name, }, @@ -273,14 +268,13 @@ end --- @param refs table --- @param e GuiEventData function manager.handle.manager_update_item_search(player, player_data, refs, e) - local query = e.element.text - if query then - -- Input sanitization - for pattern, replacement in pairs(constants.input_sanitizers) do - query = string.gsub(query, pattern, replacement) - end + local element = e.element + local signal = element.elem_value + if signal then + player_data.search_item = signal.name + else + player_data.search_item = nil end - player_data.search_item = query end diff --git a/cybersyn/scripts/gui/stations.lua b/cybersyn/scripts/gui/stations.lua index cf29242..c8ee7c7 100644 --- a/cybersyn/scripts/gui/stations.lua +++ b/cybersyn/scripts/gui/stations.lua @@ -135,7 +135,7 @@ function stations_tab.build(map_data, player_data, query_limit) for _, signal_ID in pairs(comb1_signals) do local item = signal_ID.signal.name if item then - if string.match(item, search_item) then + if item == search_item then goto has_match end end