ESOUI

ESOUI (https://www.esoui.com/forums/index.php)
-   AddOn Help/Support (https://www.esoui.com/forums/forumdisplay.php?f=164)
-   -   ZO_LinkHandler_CreateLinkWithFormat and zo_iconformat (https://www.esoui.com/forums/showthread.php?t=9915)

dorrino 09/13/21 05:34 PM

ZO_LinkHandler_CreateLinkWithFormat and zo_iconformat
 
I'm trying to attach a character link an icon in a text string. So on rightclicking the icon i'll get a specific character context menu.

And the problem is that if i feed zo_iconformat to ZO_LinkHandler_CreateLinkWithFormat then the icon is not parsed but instead is treated as a string of characters.

Does anybody know of a workaround?



Essentially ZO_LinkHandler_CreateLinkWithFormat produces a string like:

"|HLINK_STYLE_DEFAULT:character:Charname^Mx|hTEXT|h"

and i feed zo_iconformat instead of TEXT, so the result looks like:

"|HLINK_STYLE_DEFAULT:character:Charname^Mx|h|t64:64:mypath\myicon.dds|t|h"

And |t64:64:mypath\myicon.dds|t is treated as a literal string of symbols instead of the icon.

sirinsidiator 09/14/21 03:12 AM

The game does not support nested markup. However, there is a really wonky way to do what you want.
Simply put you can abuse how the link markup behaves to span over the icon.
That's how I managed to create the clickable icon in Chat2Clipboard:
Lua Code:
  1. local ICON_SIZE = 12
  2. local COPY_LINK_TYPE = "copyText"
  3. local COPY_LINK_ICON = zo_iconFormat("Chat2Clipboard/images/copy.dds", ICON_SIZE, ICON_SIZE)
  4. local REVERSE_BLANK_ICON = zo_iconFormat("blank.dds", -7, ICON_SIZE)
  5. -- we use a negative image width to go outside the visible area, then place a link with a dot and space as text and then the actual icon
  6. -- the combination of char - space spans the link through the image until the next char appears in the string
  7. local COPY_LINK_FORMAT = ("%s|Hignore:%s:%%d:%%d|h. |h%s"):format(REVERSE_BLANK_ICON, COPY_LINK_TYPE, COPY_LINK_ICON)

dorrino 09/14/21 02:44 PM

Quote:

Originally Posted by sirinsidiator (Post 44715)
The game does not support nested markup. However, there is a really wonky way to do what you want.
Simply put you can abuse how the link markup behaves to span over the icon.
That's how I managed to create the clickable icon in Chat2Clipboard:
Lua Code:
  1. local ICON_SIZE = 12
  2. local COPY_LINK_TYPE = "copyText"
  3. local COPY_LINK_ICON = zo_iconFormat("Chat2Clipboard/images/copy.dds", ICON_SIZE, ICON_SIZE)
  4. local REVERSE_BLANK_ICON = zo_iconFormat("blank.dds", -7, ICON_SIZE)
  5. -- we use a negative image width to go outside the visible area, then place a link with a dot and space as text and then the actual icon
  6. -- the combination of char - space spans the link through the image until the next char appears in the string
  7. local COPY_LINK_FORMAT = ("%s|Hignore:%s:%%d:%%d|h. |h%s"):format(REVERSE_BLANK_ICON, COPY_LINK_TYPE, COPY_LINK_ICON)

This worked perfectly!

Hugely appreciated.

I totally suspected there should be a hacky workaround!

Much love!


All times are GMT -6. The time now is 10:27 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2014 - 2022 MMOUI