Thread Tools Display Modes
07/11/22, 07:31 AM   #1
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,578
Update 35 (Version 8.1)

The next dlc "Lost Depths" will be available on the PTS later today.

New API Version: 101035

Notable Changes
  • New dungeons, item sets, combat changes, etc.
  • Flex Layouts (powered by Yoga)
  • Layout Calculations
  • Custom Cursors
  • Improved Editbox Default Text (via new attribute)
  • Keybind Cleanup Functions

PTS Dev Guild
We have created guilds on the EU and NA server for all addon developers, which get copied over during the PTS cycle for a new update, so we can test guild related things, ask for help with testing or just chat. If you need an invite, ask here or over on our Gitter channel. You are also free to join them on the live servers so you don't always have to be reinvited when the PTS is wiped.

LinksI'll edit the OP with more useful information as you post it and add the links as they become available.

Last edited by sirinsidiator : 08/23/22 at 05:03 AM.
  Reply With Quote
07/11/22, 11:21 AM   #2
ZOS_DanBatson
ZOS Staff!
 
ZOS_DanBatson's Avatar
Yes this person is from ZeniMax!
Join Date: Jul 2015
Posts: 179
Documentation. Also, some additional notes:

Added support for flex layouts (Yoga, https://yogalayout.com)

Refactored default keybinds a bit after some feedback from here. It's mostly the same as before, but now there's more information about the current state (which the UI visually reflects), less silent failures to save, and more APIs to help easily know whats default and set things back to default. Should make it more clear what's going on and give more tools to gain back binding storage.

EditBox default text is now more integrated and less of a hack

The WindowManager cursor was added as a convenient way to make arbitrary cursors (i.e.: what gamepad Champion and Tribute uses) that play nicely with hit testing.


New way of setting a measurement: calculations -
Calculation measurements can be used anywhere that another measurement can be used (e.g. offset, dimensions, etc), but instead of a single value, you can supply an equation. This equation will be recomputed anytime the context of any unit changes, allowing you to use mixed units without having to manually reduce to native units and recompute yourself.

To use a calculation measurement, pass in a string of the form “calc(<equation>)”. For example:
Code:
control:SetWidth("calc(50ui + 30px)"(
When the scale from UI units to pixels is 1, the result is a width of 80 UI units. If the screen were to be resized so that the scale from UI units to pixels is 2, the result is 65 UI units.

Here is another example:
Code:
control:SetWidth("calc(50% + 10ui)")
This calculation would size the control to be 10ui plus half the width of the parent control. If the parent resizes, the equation will be reevaluated to produce a new result.

Calc supports plus, minus, multiply, and divide as long as there is space around the operator.
Attached Files
File Type: txt APIPatchNotesP35.txt (10.8 KB, 385 views)
File Type: txt ESOUIDocumentationP35.txt (886.0 KB, 327 views)

Last edited by ZOS_DanBatson : 07/12/22 at 09:17 AM.
  Reply With Quote
07/11/22, 11:41 AM   #3
Masteroshi430
 
Masteroshi430's Avatar
AddOn Author - Click to view addons
Join Date: Dec 2020
Posts: 185
OnMapUpdateComplete() looks like an event but isn't ?
  Reply With Quote
07/11/22, 11:45 AM   #4
ZOS_DanBatson
ZOS Staff!
 
ZOS_DanBatson's Avatar
Yes this person is from ZeniMax!
Join Date: Jul 2015
Posts: 179
OnMapUpdateComplete was added for some logging stuff. It won't do anything an addon will care about. But it is a function, not an event. It is a function to be called when the map update lua function is complete.
  Reply With Quote
07/11/22, 12:00 PM   #5
Masteroshi430
 
Masteroshi430's Avatar
AddOn Author - Click to view addons
Join Date: Dec 2020
Posts: 185
Originally Posted by ZOS_DanBatson View Post
OnMapUpdateComplete was added for some logging stuff. It won't do anything an addon will care about. But it is a function, not an event. It is a function to be called when the map update lua function is complete.
Thanks Dan!
  Reply With Quote
07/11/22, 02:49 PM   #6
Baertram
Super Moderator
 
Baertram's Avatar
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 4,963
The WindowManager cursor was added as a convenient way to make arbitrary cursors (i.e.: what gamepad Champion and Tribute uses) that play nicely with hit testing.
Are we able to add custom/own cursors now?
  Reply With Quote
07/12/22, 09:21 AM   #7
ZOS_DanBatson
ZOS Staff!
 
ZOS_DanBatson's Avatar
Yes this person is from ZeniMax!
Join Date: Jul 2015
Posts: 179
Originally Posted by Baertram View Post
Are we able to add custom/own cursors now?
Well, again, look at gamepad champion for example of what I'm referring to. It's not a mouse cursor, although nothing would stop you from making a cursor and saying it's position always matches the mouse cursor position. But the API side of things doesn't actually make/manage/maintain the actual cursor visuals or position or behavior or anything. All it does is register it for hit testing other controls. The rest is just done in Lua. And in Lua you can make whatever you can imagine, like always.

The old way of just having Lua ask "hey, what control is under this position" was unreliable for certain edge cases. So this is to solve for that. If you plan on building your own custom cursor, and you want it to hit test with other controls, you'd want to register it with this new cursor API to make your life easier and more reliable.
  Reply With Quote
07/12/22, 11:48 AM   #8
Baertram
Super Moderator
 
Baertram's Avatar
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 4,963
Okay, I missunderstood the message. Thanks for the clarification Dan.
  Reply With Quote
07/14/22, 11:54 AM   #9
Baertram
Super Moderator
 
Baertram's Avatar
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 4,963
To all addon devs:
If you get this error message
Code:
Load[/EsoUI/Libraries/ZO_Templates/EditBoxTemplates_Keyboard.xml(xxxx)] (inherits): Error: Unable to find virtual object [ZO_EditDefaultText].
One of your addons is inheriting (XML inherits="....") from ZO_EditDefaultText which is deprecated!

ZOsDanBatson already told us that the editbox was changed and the default text is handled differently now.
Please remove the inheritance to ZO_EditDefaultText in your code as it is pointless after PTS was set live.

The error message currently was not meant to show and there might be a fix incoming, but removing the inheritance should be best to do here!

Many addons which use an editbox are effected, also popular ones like Dolgubons Lazy Set Crafter, InentoryInsightFromAshes, WishList, DebugLogViewer, ...


Edit - Feedback from ZOsDanBatson:
When I'm done merging in my fixes for my broken attempts at compat alias, in theory the function ZO_EditDefaultText_Initialize and inheriting from ZO_EditDefaultText will still have the same overall effect.

But that's a harder (and deprecated) way to do it!
Instead, the new way to do it is this:
Lua Code:
  1. <Controls>
  2.   <EditBox name="$(parent)Box" inherits="ZO_DefaultEditForBackdrop" defaultText="Filter by text search">
  3.     <OnTextChanged>IIfA:GuiOnSearchboxText(self)</OnTextChanged>
  4.   </EditBox>
  5. </Controls>

In most vanilla code, we used to have to call ZO_EditDefaultText_OnTextChanged from any edit boxes that registered for OnTextChanged (typically searches).
But ZO_EditDefaultText_OnTextChanged no longer does anything (it's just an empty stubbed function in compat alias to prevent UI errors now) .

So you can stop calling that, too!
Conclusion
So we should folow the new way and change our addons accordingly if we update the addons in question the next time:
-Remove
Code:
inherits="...ZO_EditDefaultText"
and replace with new attribute
Code:
defaultText="Default text for empty editbox"
in XML
-Stop calling function
Code:
ZO_EditDefaultText_OnTextChanged
in our XML/lua code as it does nothing

Important:
If you remove the inheritance to ZO_EditDefaultText and call the function ZO_EditDefaultText_Initialize the function will raise a nil error because the default text label is missing then. So if you prepare a live & PTS version you need to add a check to the XML code like

Code:
<OnInitialize>
If GetAPIversion() >= 101035 then
ZO_EditDefaultText_Initialize(self, ...)
end
</OnInitialize>

Last edited by Baertram : 07/19/22 at 01:03 AM.
  Reply With Quote
08/22/22, 10:03 PM   #10
ZOS_DanBatson
ZOS Staff!
 
ZOS_DanBatson's Avatar
Yes this person is from ZeniMax!
Join Date: Jul 2015
Posts: 179
Updated documentation
Attached Files
File Type: txt APIPatchNotesP35_2.txt (759 Bytes, 396 views)
File Type: txt ESOUIDocumentationP35_2.txt (886.4 KB, 550 views)

Last edited by ZOS_DanBatson : 08/22/22 at 10:13 PM.
  Reply With Quote
08/22/22, 10:15 PM   #11
Masteroshi430
 
Masteroshi430's Avatar
AddOn Author - Click to view addons
Join Date: Dec 2020
Posts: 185
Originally Posted by ZOS_DanBatson View Post
Updated documentation

Hi Dan,
What did change in here from PTS to live ?

EDIT: all fixed my side

Last edited by Masteroshi430 : 08/24/22 at 02:21 PM.
  Reply With Quote

ESOUI » Developer Discussions » Tutorials & Other Helpful Info » Update 35 (Version 8.1)

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off