From 2a516ac22b2ee4381404870950492be83d7ebe5e Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 6 Aug 2016 23:31:53 +0200 Subject: Add seperate button for resetting search --- README.md | 5 +++-- callbacks.lua | 8 +++++++- internal.lua | 8 +++++++- textures/ui_reset_icon.png | Bin 0 -> 11310 bytes 4 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 textures/ui_reset_icon.png diff --git a/README.md b/README.md index 6f5e2d4..489ebab 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,10 @@ Unified inventory code is licensed under the GNU LGPLv2+. Licenses for textures: VanessaE: (WTFPL) - * ui\_group.png + * `ui_group.png` RealBadAngel: (WTFPL) * Everything else. - +Tango Project: (WTFPL) + * `ui_reset_icon.png diff --git a/callbacks.lua b/callbacks.lua index e86cac6..be5c055 100644 --- a/callbacks.lua +++ b/callbacks.lua @@ -153,11 +153,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if fields.searchbutton then unified_inventory.apply_filter(player, unified_inventory.current_searchbox[player_name], "nochange") - unified_inventory.current_searchbox[player_name] = "" unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name]) minetest.sound_play("paperflip2", {to_player=player_name, gain = 1.0}) + elseif fields.searchresetbutton then + unified_inventory.apply_filter(player, "", "nochange") + unified_inventory.current_searchbox[player_name] = "" + unified_inventory.set_inventory_formspec(player, + unified_inventory.current_page[player_name]) + minetest.sound_play("click", + {to_player=player_name, gain = 0.1}) end -- alternate buttons diff --git a/internal.lua b/internal.lua index 8319191..42ab722 100644 --- a/internal.lua +++ b/internal.lua @@ -179,13 +179,19 @@ function unified_inventory.get_formspec(player, page) .. minetest.formspec_escape(unified_inventory.current_searchbox[player_name]) .. "]" formspec[n+1] = "image_button[12.2,8.1;.8,.8;ui_search_icon.png;searchbutton;]" .. "tooltip[searchbutton;" ..F("Search") .. "]" + formspec[n+2] = "image_button[12.9,8.1;.8,.8;ui_reset_icon.png;searchresetbutton;]" + .. "tooltip[searchbutton;" ..F("Search") .. "]" + .. "tooltip[searchresetbutton;" ..F("Reset search and display everything") .. "]" else formspec[n] = "field[8.5,5.225;2.2,1;searchbox;;" .. minetest.formspec_escape(unified_inventory.current_searchbox[player_name]) .. "]" formspec[n+1] = "image_button[10.3,5;.8,.8;ui_search_icon.png;searchbutton;]" .. "tooltip[searchbutton;" ..F("Search") .. "]" + formspec[n+2] = "image_button[11,5;.8,.8;ui_reset_icon.png;searchresetbutton;]" + .. "tooltip[searchbutton;" ..F("Search") .. "]" + .. "tooltip[searchresetbutton;" ..F("Reset search and display everything") .. "]" end - n = n+2 + n = n+3 local no_matches = "No matching items" if draw_lite_mode then diff --git a/textures/ui_reset_icon.png b/textures/ui_reset_icon.png new file mode 100644 index 0000000..ec9ef62 Binary files /dev/null and b/textures/ui_reset_icon.png differ -- cgit v1.2.3 From 7224299e7c265a7bdeecb01a1df4464c82691685 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 6 Aug 2016 23:59:32 +0200 Subject: Register some Minetest Game group icons --- group.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/group.lua b/group.lua index 9bf6895..7f79a39 100644 --- a/group.lua +++ b/group.lua @@ -24,6 +24,12 @@ end unified_inventory.registered_group_items = { mesecon_conductor_craftable = "mesecons:wire_00000000_off", stone = "default:cobble", + wood = "default:wood", + book = "default:book", + sand = "default:sand", + leaves = "default:leaves", + tree = "default:tree", + vessel = "vessels:glass_bottle", wool = "wool:white", } -- cgit v1.2.3 From 40f8b4d9cf5273ee2830a91fa87418a795163692 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 7 Aug 2016 00:14:02 +0200 Subject: Update search field when clicking on group item --- callbacks.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/callbacks.lua b/callbacks.lua index be5c055..ad6de0a 100644 --- a/callbacks.lua +++ b/callbacks.lua @@ -120,6 +120,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if string.sub(clicked_item, 1, 6) == "group:" then minetest.sound_play("click", {to_player=player_name, gain = 0.1}) unified_inventory.apply_filter(player, clicked_item, new_dir) + unified_inventory.current_searchbox[player_name] = clicked_item + unified_inventory.set_inventory_formspec(player, + unified_inventory.current_page[player_name]) return end if new_dir == "recipe" -- cgit v1.2.3 From c9d794284074dd1b3dc38a91f3dc103e5b604a4d Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 7 Aug 2016 00:16:29 +0200 Subject: Update translation strings --- locale/de.txt | 1 + locale/template.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/locale/de.txt b/locale/de.txt index 6ceab4c..9ca4a86 100644 --- a/locale/de.txt +++ b/locale/de.txt @@ -25,6 +25,7 @@ Page = Seite %s of %s = %s von %s Filter = Filter Search = Suchen +Reset search and display everything = Suche zurücksetzen und alles anzeigen ### register.lua ### Can use the creative inventory = Kann das Kreativinventar nutzen diff --git a/locale/template.txt b/locale/template.txt index 73194d4..2d58ee7 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -26,6 +26,7 @@ Page = %s of %s = Filter = Search = +Reset search and display everything = ### register.lua ### Can use the creative inventory = -- cgit v1.2.3 From 15f5b8e8042c635d801320a606c214643d178062 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 7 Aug 2016 01:39:19 +0200 Subject: Craftguide: Use better tooltips for group buttons --- group.lua | 23 +++++++++++++++++++++++ locale/de.txt | 5 +++++ locale/template.txt | 8 ++++++++ register.lua | 21 +++++++++++++++++---- 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/group.lua b/group.lua index 7f79a39..23e2587 100644 --- a/group.lua +++ b/group.lua @@ -1,3 +1,5 @@ +local S = unified_inventory.gettext + function unified_inventory.canonical_item_spec_matcher(spec) local specname = ItemStack(spec):get_name() if specname:sub(1, 6) == "group:" then @@ -21,6 +23,27 @@ function unified_inventory.item_matches_spec(item, spec) return unified_inventory.canonical_item_spec_matcher(spec)(itemname) end +function unified_inventory.extract_groupnames(groupname) + local specname = ItemStack(groupname):get_name() + if specname:sub(1, 6) == "group:" then + local group_names = specname:sub(7):split(",") + if #group_names == 1 then + return group_names[1], 1 + end + local s = "" + for g=1,#group_names do + if g > 1 then + -- List connector + s = s .. S(" and ") + end + s = s .. group_names[g] + end + return s, #group_names + else + return nil, 0 + end +end + unified_inventory.registered_group_items = { mesecon_conductor_craftable = "mesecons:wire_00000000_off", stone = "default:cobble", diff --git a/locale/de.txt b/locale/de.txt index 9ca4a86..a2f7c3d 100644 --- a/locale/de.txt +++ b/locale/de.txt @@ -57,6 +57,8 @@ Show next usage = Nächste Verwendung zeigen Show previous recipe = Vorheriges Rezept zeigen Show previous usage = Vorherige Verwendung zeigen This recipe is too\nlarge to be displayed. = Dieses Rezept ist zu\ngroß, um angezeigt\nzu werden. +Any item belonging to the %s group = Irgendein Gegenstand, der zur Gruppe %s gehört +Any item belonging to the groups %s = Irgendein Gegenstand, der zu den Gruppen %s gehört Recipe %d of %d = Rezept %d von %d Usage %d of %d = Verwendung %d von %d No recipes = Keine Rezepte @@ -71,6 +73,9 @@ Clear inventory = Inventar leeren Give me: = Gib mir: To craft grid: = Ins Fertigungsraster: +### group.lua ### +\sand\s=\sund\s + ### waypoints.lua ### White = Weiß Yellow = Gelb diff --git a/locale/template.txt b/locale/template.txt index 2d58ee7..bd27f2f 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -60,6 +60,10 @@ Show previous recipe = Show previous usage = # Shown for huge crafting recipes; try to keep the line length short and use multiple line breaks as needed This recipe is too\nlarge to be displayed. = +# %s = group name (e.g. wool) +Any item belonging to the %s group = +# %s = List of “and”-concatenated group names +Any item belonging to the groups %s = Recipe %d of %d = Usage %d of %d = No recipes = @@ -74,6 +78,10 @@ Clear inventory = Give me: = To craft grid: = +### group.lua ### +# Logical connective, example: “Any item belonging to the groups foo and bar” +\sand\s = + ### waypoints.lua ### White = Yellow = diff --git a/register.lua b/register.lua index 55bbdb0..ff38168 100644 --- a/register.lua +++ b/register.lua @@ -188,11 +188,24 @@ local function stack_image_button(x, y, w, h, buttonname_prefix, item) selectitem = group_item.sole and displayitem or name end local label = show_is_group and "G" or "" - return string.format("item_image_button[%f,%f;%f,%f;%s;%s;%s]", + local buttonname = minetest.formspec_escape(buttonname_prefix..unified_inventory.mangle_for_formspec(selectitem)) + local button = string.format("item_image_button[%f,%f;%f,%f;%s;%s;%s]", x, y, w, h, - minetest.formspec_escape(displayitem), - minetest.formspec_escape(buttonname_prefix..unified_inventory.mangle_for_formspec(selectitem)), - label) + minetest.formspec_escape(displayitem), buttonname, label) + if show_is_group then + local groupstring, andcount = unified_inventory.extract_groupnames(name) + local grouptip + if andcount == 1 then + grouptip = string.format(S("Any item belonging to the %s group"), groupstring) + elseif andcount > 1 then + grouptip = string.format(S("Any item belonging to the groups %s"), groupstring) + end + grouptip = minetest.formspec_escape(grouptip) + if andcount >= 1 then + button = button .. string.format("tooltip[%s;%s]", buttonname, grouptip) + end + end + return button end local recipe_text = { -- cgit v1.2.3