Quantcast
Download
(4 Kb)
Download
Updated: 05/23/17 02:25 AM
Pictures
File Info
Compatibility:
Morrowind (3.0)
Updated:05/23/17 02:25 AM
Created:11/03/15 08:20 PM
Monthly downloads:98
Total downloads:660
Favorites:3
MD5:
3.0
Circonians LibNotifications  Updated this week!
Version: 4
by: sirinsidiator [More]
Who is it for?
Developers.
What does it do?
Allows you to add messages to the games notification area.



How do I use it?
Register the library in your code file:
Lua Code:
  1. local libNotifications = LibStub:GetLibrary("LibNotifications")

After your addon is initialized call the libraries CreateProvider() function.
Lua Code:
  1. local provider = libNotifications:CreateProvider()

The provider will have a notifications table. This is where you put your messages.
Lua Code:
  1. provider.notifications
How do I create a Message?

Messages need to be written in a certain format, the following is an example:
Warning: Spoiler


Create your messages and add them to your provider notifications table:
Lua Code:
  1. table.insert(provider.notifications, msg)
It is up to you to add & remove your messages from the notifications table when you are done with them.
WARNING:
The table must be numerically indexed & there can be no missing indices. I recommend using table.insert() & table.remove() for adding/removing messages

After you are done making changes Adding/Removing messages, call the update function:
Lua Code:
  1. provider:UpdateNotifications()
Try not to call this anymore than necessary.
It fires off ALL of the BuildNotificationList functions for every notification provider in the game!


Other Information
Just In case anyone needs to know for creating/selecting icons. The icon on the keyboard rowControl is 32 x 32.
r4--

- updated for Morrowind
r3--

- updated for Homestead
r2--

- updated for Dark Brotherhood
- gamepad support seems to be broken and will be updated in a future version
Version 1.2--

Gamepad Support Added

WARNING: In order to add support for notifications in gamepad mode the entire library was rewritten. There have been some changes to the required structure of the message table. Please read the new instructions for creating a message table on the addons main page.

WARNING: To avoid errors if you wish to store extra data with your message store all of your custom data in a data table inside the message table. Read the new instructions for creating a message table on the addons main page.
Archived Files (5)
File Name
Version
Size
Author
Date
3
4kB
sirinsidiator
02/14/17 11:15 AM
2
4kB
sirinsidiator
06/11/16 01:58 AM
1.2
2kB
sirinsidiator
11/06/15 09:17 PM
1.1
1kB
circonian
11/04/15 07:39 PM
1.0
1kB
circonian
11/03/15 08:20 PM


Post A Reply Comment Options
Unread 06/13/16, 07:11 PM  
dorrino
AddOn Author - Click to view AddOns

Forum posts: 41
File comments: 110
Uploads: 7
Originally Posted by sirinsidiator
Originally Posted by dorrino
Originally Posted by sirinsidiator
but as nobody has complained about it until now, I guess it is not used anywhere anyways?
It is used in No Thank you and produces ~200 lua errors on readychecks
I think not too many people know about that feature yet. I did a dungeon yesterday and the groupleader just typed "r?" in chat...
That's true But imagine the surprise when somebody, having a bit of advanced knowledge, randomly rewards you will a chain of lua errors?
Report comment to moderator  
Reply With Quote
Unread 06/12/16, 01:48 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 853
File comments: 526
Uploads: 26
Originally Posted by dorrino
Originally Posted by sirinsidiator
but as nobody has complained about it until now, I guess it is not used anywhere anyways?
It is used in No Thank you and produces ~200 lua errors on readychecks
I think not too many people know about that feature yet. I did a dungeon yesterday and the groupleader just typed "r?" in chat...
__________________
>siri.exe MyAddon
Does your addon work? [y/n] n
There is a typo in there.
Report comment to moderator  
Reply With Quote
Unread 06/11/16, 05:58 PM  
dorrino
AddOn Author - Click to view AddOns

Forum posts: 41
File comments: 110
Uploads: 7
Originally Posted by sirinsidiator
but as nobody has complained about it until now, I guess it is not used anywhere anyways?
It is used in No Thank you and produces ~200 lua errors on readychecks
Report comment to moderator  
Reply With Quote
Unread 06/11/16, 01:56 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 853
File comments: 526
Uploads: 26
Originally Posted by Sounomi
This library needs to be updated for update 2.4.

Seems to be an easy update with just the tables KEYBOARD_NOTIFICATION_ICONS, GAMEPAD_NOTIFICATION_ICONS, and DATA_TYPE_TO_TEMPLATE.
They're defined as local variables in EsoUI/Ingame/Contacts/Keyboard/Notifications_keyboard.lua and /Gamepad/Notifications_gamepad.lua.
Hey. I just looked into it and copied said tables over. Since I only have taken this over recently I still need to figure out how to properly test it and what the code does, but from trying the example in the description it looks like the gamepad mode is broken as no notifications show up there. I uploaded the new version and will do another update once I have time to figure it out, but as nobody has complained about it until now, I guess it is not used anywhere anyways?
__________________
>siri.exe MyAddon
Does your addon work? [y/n] n
There is a typo in there.
Report comment to moderator  
Reply With Quote
Unread 06/10/16, 07:50 PM  
Sounomi

Forum posts: 37
File comments: 66
Uploads: 0
This library needs to be updated for update 2.4.

Seems to be an easy update with just the tables KEYBOARD_NOTIFICATION_ICONS, GAMEPAD_NOTIFICATION_ICONS, and DATA_TYPE_TO_TEMPLATE.
They're defined as local variables in EsoUI/Ingame/Contacts/Keyboard/Notifications_keyboard.lua and /Gamepad/Notifications_gamepad.lua.
Report comment to moderator  
Reply With Quote
Unread 02/14/16, 04:43 AM  
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view AddOns

Forum posts: 859
File comments: 1302
Uploads: 30
Thank you for this library, works like a charm. (Added to No Thank you to redirect Lua Errors to Notifications).
__________________
Obsessive Compulsive Coder

My little french Guild: Cercle de l'Eveil
Report comment to moderator  
Reply With Quote
Unread 11/07/15, 06:54 PM  
CaptainBlagbird
 
CaptainBlagbird's Avatar
AddOn Author - Click to view AddOns

Forum posts: 51
File comments: 126
Uploads: 22
Originally Posted by circonian
I also notice that the message text associated with every notification has changed & no longer matches the heading. ONLY removing a notification would not change the heading/text of the other notifications so clearly something else has happened here.
That's right, on removing I also updated the message with the new table index (because some indices might obviously get changed on removing), I should have clarified that.

Originally Posted by circonian
If you want to test it yourself, just add that key to the MotD BuildNotificationList function (dump this in your code file) and that will fix the sort problem.
Yep, fixes it. I think I'll use this in a temporary add-on until ZOS fixed it
__________________
My Addons: Quest Map, Helmet Toggle, Sieged Keeps, Target Whisper, ... | Also available on GitHub
Report comment to moderator  
Reply With Quote
Unread 11/07/15, 06:08 PM  
circonian
AddOn Author - Click to view AddOns

Forum posts: 648
File comments: 804
Uploads: 27
Originally Posted by CaptainBlagbird
I'm still a little bit confused about the order. I'm using secsSinceRequest as recommended, I don't use sortKey or sortIndex as they are only for internal sorting, right?
I noticed the list getting unsorted while there is a MotD pending: imgur album
I see that ZO_GuildMotDProvider is the only official provider that doesn't use secsSinceRequest so I guess that's the reason. But I haven't tested with other official notifications yet. I don't care much about the list not being sorted correctly, but I wanted to point it out to you.
Yes sortIndex Is used for internal sorting. But to avoid that and other keys used by the game in the message table that is why I decided to change the instructions to say that you should just put any custom data in the message.data = { -- here -- } table. That way no matter what you put in there it wont interfere with any other special keys.




You said you "Removed a custom notification (#2)" and it is true that the notification with the heading Added #2 has disappeared, but I also notice that the message text associated with every notification has changed & no longer matches the heading. ONLY removing a notification would not change the heading/text of the other notifications so clearly something else has happened here. The sort problem does indeed exist, but something else is also going on in your test example.





You are indeed correct about the MotD though, the fact that the sort key is missing from the MotD message table is what is messing up the entire sort.
http://www.esoui.com/forums/showthread.php?p=24187#post24187

If you want to test it yourself, just add that key to the MotD BuildNotificationList function (dump this in your code file)
Warning: Spoiler

and that will fix the sort problem. Hopefully they'll fix it though.
__________________
My Addons: JunkIt, FilterIt, WaypointIt, LootIt, TweakIt, ChatIt, SortIt
My Libs & Other Developer Stuff: Click4Info, LibNeed4Research, LibMsgWin, LibFilterIt, LibItemInfo
Other Files & Works In Progress can be found on my Dropbox: ESO Dropbox
Last edited by circonian : 11/07/15 at 06:29 PM.
Report comment to moderator  
Reply With Quote
Unread 11/07/15, 04:02 PM  
circonian
AddOn Author - Click to view AddOns

Forum posts: 648
File comments: 804
Uploads: 27
Originally Posted by CaptainBlagbird
Originally Posted by circonian
Added support for gamepad notifications. Notifications will now show up in both keyboard & gamepad mode.
Awesome thanks
I've updated my add-on with the new library version.

Originally Posted by circonian
The BuildNotificationList is getting run for both the keyboard & gamepad notification managers, which I did not expect.
Originally Posted by circonian
That seems like a bug to me. I don't know why they would run the BuildNotificationList() for both managers, it should only run for the mode your in.
Yeah that's strange.. I wonder why there are two managers anyway. Sure, sometimes it might be necessary to do something different in one case, but this could also be done with GetCVar("GamepadPreferredEnabled") (I don't know about all the stuff that happens in the background though, they probably call the functions directly from C++ or whatever the base language is).
The reason there are separate keyboard/gamepad managers is because some notifications have popup context menus when you click on a button like Friend/Guild invite. When you click decline a popup appears that gives you choices: Decline, spam, report player exc... Popups are handled differently in gamepad mode than they are in keyboard mode so they require different code in the accept/decline callbacks. Also the gamepad notifications window is built differently than the keyboard mode & requires completely different templates. Having separate managers for each simplifies the selection process when determining what type of row control, icon, exc.. to use.

You are correct that they could have just checked if they were in gamepad mode & handled it all in a single accept/decline callback, but I guess they didn't want to have to do that so they created separate providers so that keyboard/gamepad mode would have unique callbacks. Which is also why I followed suit & added separate accept/decline callbacks for keyboard/gamepad mode.
__________________
My Addons: JunkIt, FilterIt, WaypointIt, LootIt, TweakIt, ChatIt, SortIt
My Libs & Other Developer Stuff: Click4Info, LibNeed4Research, LibMsgWin, LibFilterIt, LibItemInfo
Other Files & Works In Progress can be found on my Dropbox: ESO Dropbox
Report comment to moderator  
Reply With Quote
Unread 11/07/15, 03:39 PM  
CaptainBlagbird
 
CaptainBlagbird's Avatar
AddOn Author - Click to view AddOns

Forum posts: 51
File comments: 126
Uploads: 22
I'm still a little bit confused about the order. I'm using secsSinceRequest as recommended, I don't use sortKey or sortIndex as they are only for internal sorting, right?
I noticed the list getting unsorted while there is a MotD pending: imgur album
I see that ZO_GuildMotDProvider is the only official provider that doesn't use secsSinceRequest so I guess that's the reason. But I haven't tested with other official notifications yet. I don't care much about the list not being sorted correctly, but I wanted to point it out to you.
__________________
My Addons: Quest Map, Helmet Toggle, Sieged Keeps, Target Whisper, ... | Also available on GitHub
Last edited by CaptainBlagbird : 11/07/15 at 03:42 PM.
Report comment to moderator  
Reply With Quote
Unread 11/07/15, 03:12 PM  
CaptainBlagbird
 
CaptainBlagbird's Avatar
AddOn Author - Click to view AddOns

Forum posts: 51
File comments: 126
Uploads: 22
Originally Posted by circonian
Added support for gamepad notifications. Notifications will now show up in both keyboard & gamepad mode.
Awesome thanks
I've updated my add-on with the new library version.

Originally Posted by circonian
The BuildNotificationList is getting run for both the keyboard & gamepad notification managers, which I did not expect.
Originally Posted by circonian
That seems like a bug to me. I don't know why they would run the BuildNotificationList() for both managers, it should only run for the mode your in.
Yeah that's strange.. I wonder why there are two managers anyway. Sure, sometimes it might be necessary to do something different in one case, but this could also be done with GetCVar("GamepadPreferredEnabled") (I don't know about all the stuff that happens in the background though, they probably call the functions directly from C++ or whatever the base language is).
__________________
My Addons: Quest Map, Helmet Toggle, Sieged Keeps, Target Whisper, ... | Also available on GitHub
Last edited by CaptainBlagbird : 11/07/15 at 03:14 PM.
Report comment to moderator  
Reply With Quote
Unread 11/06/15, 09:46 PM  
circonian
AddOn Author - Click to view AddOns

Forum posts: 648
File comments: 804
Uploads: 27
Originally Posted by Baertram
This is awesome! Thanks circonian and all the others who tested and invented the idea (@CaptainBlagbird e.g.).

It will help to keep messages clear in the notification area without spamming the game too much with onscreen messages (in some cases like friends addons, guild addons, etc.).
Especially the callback functions will help to "show the error place/react on the particular case directly" and I like this a lot as you could "collect some messages" and work on them later on (after you finished your current dungeon e.g.).

I'll try it out, thanks again.
Errors...While writing code (or for users) it could be used for debugging messages, that is an awesome idea !!!
__________________
My Addons: JunkIt, FilterIt, WaypointIt, LootIt, TweakIt, ChatIt, SortIt
My Libs & Other Developer Stuff: Click4Info, LibNeed4Research, LibMsgWin, LibFilterIt, LibItemInfo
Other Files & Works In Progress can be found on my Dropbox: ESO Dropbox
Report comment to moderator  
Reply With Quote
Unread 11/06/15, 09:30 PM  
circonian
AddOn Author - Click to view AddOns

Forum posts: 648
File comments: 804
Uploads: 27
Added support for gamepad notifications. Notifications will now show up in both keyboard & gamepad mode.

You don't have to do anything extra for gamepad notifications, the library handles both the keyboard & gamepad providers for you. BUT, the message table has changed slightly. The message table changes were done for gamepad support, to allow the use of different types of row controls, & to prevent future problems.
Please read the NEW instructions I posted on how to create a message table on the main page.
If you have any questions or problems just let me know.

Posted Version 1.2
__________________
My Addons: JunkIt, FilterIt, WaypointIt, LootIt, TweakIt, ChatIt, SortIt
My Libs & Other Developer Stuff: Click4Info, LibNeed4Research, LibMsgWin, LibFilterIt, LibItemInfo
Other Files & Works In Progress can be found on my Dropbox: ESO Dropbox
Last edited by circonian : 11/06/15 at 09:41 PM.
Report comment to moderator  
Reply With Quote
Unread 11/06/15, 06:29 PM  
circonian
AddOn Author - Click to view AddOns

Forum posts: 648
File comments: 804
Uploads: 27
WARNING:
I know this was just released, but due to some requests, some problems, & to enable the ability to add notifications for gamepad mode as well there will be an update soon that will require some very minor changes on the part of any addon using this library. Since there is little work required for your addon to use the library it wont be a big deal, but since I know it is coming I thought I would make a post warning you about it. The next update (coming soon: tonight/tomorrow as soon as I finish rewriting it & test it) will very likely change the required structure of the message table.
__________________
My Addons: JunkIt, FilterIt, WaypointIt, LootIt, TweakIt, ChatIt, SortIt
My Libs & Other Developer Stuff: Click4Info, LibNeed4Research, LibMsgWin, LibFilterIt, LibItemInfo
Other Files & Works In Progress can be found on my Dropbox: ESO Dropbox
Last edited by circonian : 11/06/15 at 06:29 PM.
Report comment to moderator  
Reply With Quote
Unread 11/05/15, 11:53 PM  
circonian
AddOn Author - Click to view AddOns

Forum posts: 648
File comments: 804
Uploads: 27
Re: Re: Re: Minor issue

Originally Posted by CaptainBlagbird
Noticed another bug:
When there are already custom notifications pending and an official notification is added (only tested with guild MotD), then the number near the icon in the chat window is reset to 1 (or probably as many official notifications as added). When a new custom one then is added the number is again displayed correctly. But on removing an official notification, it is again wrongly 0. Also when there are both custom and official notifications (only tested with guild MotD) and any notification is removed, the notification-added-sound is played (probably because the notifications are added again in BuildNotificationList())
Well I found the problem. The problem is there are three different notification managers. One is a common notification manager, one is a keyboard notification manager, & one is a gamepad notification manager.

The BuildNotificationList is getting run for both the keyboard & gamepad notification managers, which I did not expect. I expected only the manager for the mode you were in (keyboard/gamepad) would run, but it doesn't work that way. The keyboard one runs first, but then the gamepad one runs, which LibNotifications does not have a provider for, so that 0's the count back out because the messages do not exist in the gamepad notification manager.

That seems like a bug to me. I don't know why they would run the BuildNotificationList() for both managers, it should only run for the mode your in. Not to mention the way its calculating & setting the notification count, twice, using different sets of providers. I guess they just assumed all notifications would always exist in both managers.

It looks like I'm going to have to build a notification provider for the gamepad and find a way to manage both of them at the same time so addons don't have to handle both of the providers. That might take a while. It will have to wait until tomorrow night when I get home from work.
__________________
My Addons: JunkIt, FilterIt, WaypointIt, LootIt, TweakIt, ChatIt, SortIt
My Libs & Other Developer Stuff: Click4Info, LibNeed4Research, LibMsgWin, LibFilterIt, LibItemInfo
Other Files & Works In Progress can be found on my Dropbox: ESO Dropbox
Last edited by circonian : 11/05/15 at 11:56 PM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: