ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   Tutorials & Other Helpful Info (https://www.esoui.com/forums/forumdisplay.php?f=172)
-   -   Context menu creation / Inventory context menu enhancement (https://www.esoui.com/forums/showthread.php?t=9052)

Baertram 03/25/20 03:02 PM

Context menu creation / Inventory context menu enhancement
 
Please read this if you like to add a context menu to your addon or enhance the existing inventory context menu:
https://wiki.esoui.com/How_to_create...y_context_menu

It refers to the library "LibCustomMenu".

As this has been used a lot and should not be done anymore to avoid error messages ingame and to make all addons providing context menus (especially at the inventory) work properly together:

Please do NOT use ZO_PreHook on ZO_InventorySlot_ShowContextMenu anymore!

Instead use LibCustomMenu and the function LibCustomMenu:RegisterContextMenu.
And AddCustomMenuItem or AddCustomSubmenuItem for the context menu entries.

Do NOT use and zo_callLater for the menu entries anymore as LibCustomMenu will handle this for you via the parameter "category" of the WIKI mentioned function LibCustomMenu:RegisterContextMenu (for inventory context menus!)
Possible categories can be (Default is LibCustomMenu.CATEGORY_LATE):
From early (at top of the menu) to late (at the bottom of the menu)
Code:

LibCustomMenu.CATEGORY_EARLY
LibCustomMenu.CATEGORY_PRIMARY
LibCustomMenu.CATEGORY_SECONDARY
LibCustomMenu.CATEGORY_TERTIARY
LibCustomMenu.CATEGORY_QUATERNARY
LibCustomMenu.CATEGORY_LATE

See the examples for that function at the libraries description page.

@addon authors still using ZO_PreHook on the inventory context menu functions or keybind functions:
PLEASE change this and use this library properly instead!
Thank you

Note that the info above only relates to the inventory context menus!
Context menus at the chat's player context menu can be still applied using a SecurePostHook to these functions and applying your own callback function.

Hint: Try to change your code from ZO_PreHook and zo_callLater to the nox existing function SecurePostHook! It got ther same parameters like ZO_PreHook but will run your code securely after the menu was build so you do not need to delay your added entries etc.
Lua Code:
  1. local function MyShowPlayerContextMenu(playerName, rawName)
  2.         AddCustomMenuItem(GetString(SI_WHATEVER_TEXT_YOU_NEED), function() d("playerName: " .. tostring(playerName))  end)
  3.         ShowMenu()
  4.     end
  5.     SecurePostHook(SharedChatSystem, "ShowPlayerContextMenu", MyShowPlayerContextMenu)


Itemlink contextmenus in the chat can be applied via:
Lua Code:
  1. LINK_HANDLER:RegisterCallback(LINK_HANDLER.LINK_MOUSE_UP_EVENT,
  2.     function(link, button, text, color, linkType, ...) end)

Keldor 03/26/20 02:43 AM

Hey Baertram, thanks for this detailed post.

It's very helpful for persons like me who worked the first time with the UI. :D


Keldor


All times are GMT -6. The time now is 05:38 AM.

vBulletin © 2020, Jelsoft Enterprises Ltd
© 2014 - 2020 MMOUI