Download
(49 Kb)
Download
Updated: 03/10/24 04:21 PM
Pictures
File Info
Compatibility:
Scions of Ithelia (9.3.0)
Endless Archive (9.2.5)
Updated:03/10/24 04:21 PM
Created:02/14/14 10:28 PM
Monthly downloads:84,178
Total downloads:4,664,037
Favorites:2,747
MD5:
9.3.0
LibAddonMenu-2.0  Popular! (More than 5000 hits)
Version: 2.0 r36
by: sirinsidiator, Seerah
LibAddonMenu is a library which offers many functions for add-on authors to simplify creating a configuration panel in the game's settings menu.

Users:

If the game cannot load some addon because it is missing LibAddonMenu-2.0 as a dependency, simply download and install it like you would any other addon. In case it shows as "out of date" in the game, simply enable the "allow out of date addons" checkbox.
IMPORTANT
In case you get an error that contains text like this:
user:/AddOns/<some other addon>/Libs/LibAddonMenu-2.0

Some other addon you have installed likely contains an old version of LibAddonMenu which is loaded before the most current one.

Make sure to search for LibAddonMenu-2.0 folders in your AddOns folder and delete all of them. Afterwards install the latest version of LibAddonMenu-2.0 separately.

Check Kyzderp's guide for more detailed instructions
Developers:

Ever since I (sirinsidiator) have taken over development of LAM-2.0 in 2015, the project is available on github and open for contributions by other authors.

With the ongoing effort to get rid of LibStub in favour of the library management capabilities provided by the game itself since Summerset was released, it is no longer recommended to embed LAM, or use LibStub to access it. Instead it should simply be specified as a dependency and accessed via the new LibAddonMenu2 global variable. Instead of providing it as part of another add-on, users should install and update it separately.

Quickstart:
Simply add LAM2 as a dependency in your addon manifest:
Code:
## DependsOn: LibAddonMenu-2.0
Optionally you can require a specific minimum version of LAM in case you rely on some features that are not available in earlier versions.
Code:
## DependsOn: LibAddonMenu-2.0>=30
In your code you can simply access the library via the global variable "LibAddonMenu2" and start creating your settings panel and controls:

Lua Code:
  1. local LAM = LibAddonMenu2
  2. local saveData = {} -- TODO this should be a reference to your actual saved variables table
  3. local panelName = "MyAddOnSettingsPanel" -- TODO the name will be used to create a global variable, pick something unique or you may overwrite an existing variable!
  4.  
  5. local panelData = {
  6.     type = "panel",
  7.     name = "MyAddOn Settings",
  8.     author = "me",
  9. }
  10. local panel = LAM:RegisterAddonPanel(panelName, panelData)
  11. local optionsData = {
  12.     {
  13.         type = "checkbox",
  14.         name = "My First Checkbox",
  15.         getFunc = function() return saveData.myValue end,
  16.         setFunc = function(value) saveData.myValue = value end
  17.     }
  18. }
  19. LAM:RegisterOptionControls(panelName, optionsData)

For more examples and information you can take a look at exampleoptions.lua, AwesomeGuildStore/Settings.lua, the LAM wiki or the source code. Each control has a full list of available properties in the comment at the start of the lua file.

Features:
  • Controls - LAM offers different control types to build elaborate settings menus
  • Reset to Default - LAM can restore the settings to their default state with one key press
  • Additional AddOn Info - Add a version label and URLs for website, donations, translations or feedback
  • AddOn Search - Can't find the settings for your AddOn between the other hundred entries? No problem! Simply use the text search to quickly find what you are looking for
  • Slash Commands - Provides a shortcut to open your settings menu from chat
  • Tooltips - In case you need more space to explain what a control does, simply use a tooltip
  • Warnings - If your setting causes some unexpected behaviour, you can simply slap a warning on them
  • Dangerous Buttons - when flagged as such, a button will have red text and ask for confirmation before it runs any action
  • Required UI Reload - For cases where settings have to reload the UI or should be stored to disk right away, LAM offers a user friendly way to ask for a UI reload.
  • Support for all 5 official languages and 6 custom localisation projects

External controls:
2.0 r36
- added multiselect feature to dropdown control (#135, thanks Baertram)
- fixed anchor constraint warnings in the interface.log (#136, thanks DakJaniels)
- fixed a bug which could lead to some controls not getting created in some rare cases
- updated for Scions of Ithelia

2.0 r35
- added "resetFunc" to each control type which gets called while resetting a panel to default values (#130, thanks Baertram)
- added workaround for dropdown menus getting cut off when used inside submenus
- updated for Secret of the Telvanni

2.0 r34
- added tooltips for header and description controls (#129, thanks remosito)
- fixed old icons not being hidden when choices are updated on the icon picker (thanks Gandalf)
- updated for High Isle

2.0 r33
- fixed dropdown widget choicesValues not accepting boolean "false" (#127, thanks Baertram)
- switched to a new build system
- updated for Ascending Tide

2.0 r32
- added "createFunc", "minHeight" and "maxHeight" properties to custom control (#123, thanks Baertram)
- updated folder structure (#119)
- updated for Markarth

2.0 r31
- fixed iconpicker showing an empty tooltip when no choicesTooltips are set (#111, thanks Scootworks)
- fixed slider mouse wheel interactions (#115)
- fixed translated texts not showing in the official Russian localization (#118, thanks andy.s)
- improved dropdown choice tooltip code compatibility (#115)
- added "helpUrl" property for many control types (#109, thanks Baertram)
- added "textType" and "maxChars" properties for editbox (#110, thanks Scootworks)
- added "readOnly" property for slider (#112, thanks Scootworks)
- removed embedded copy of LibStub (#116)
- updated Japanese translation (#113, thanks Calamath)
- updated for Greymoor

2.0 r30
- updated Korean translation (thanks whya5448)
- added "enableLinks" property to description control (#102, thanks silvereyes333)
- updated for Dragonhold

2.0 r29
- fixed a rare error when a panel refresh is triggered by an addon before LAM is fully initialized (#98)
- fixed SetHandler warning showing when a scrollable dropdown is used (#97)
- improved SetHandler warning message to show the panel title instead of the internal name and in addition log to LibDebugLogger for easy access to a stack trace (#99)
- improved comments in control files (#100, thanks Phuein)
- adjusted ReloadUI warning color to match the color of the warning in the ingame video settings (#101, thanks Phuein)

2.0 r28
- fixed color picker throwing errors in gamepad mode (#94, thanks Gandalf)
- added global variable "LibAddonMenu2" for direct access without using LibStub (#95)
- added IsLibrary directive to manifest (#93)
- added warning message when an addon is setting the "OnShow", "OnEffectivelyShown", "OnHide" or "OnEffectivelyHidden" handler on a panel (#92)
- use the callbacks "LAM-PanelControlsCreated", "LAM-PanelOpened" and "LAM-PanelClosed" instead
- updated Brazilian translation (thanks FelipeS11)

2.0 r27
- fixed scrollable dropdown not working correctly (#83)
- fixed disabled sliders changing value in some situations when clicked
- fixed panel not refreshing on open when it was already selected (#82)
- added RefreshPanel function to panel control (#84)
- the panel control is returned by RegisterAddonPanel
- added "translation", "feedback" and "donation" properties to panel (#88, thanks Baertram)
- all three (and also the "website" property) accept a function or a string
- added "disabled" and "disabledLabel" property for submenus (#86, #90, thanks klingo)
- added "icon" and "iconTextureCoords" property for submenus (#91)
- added "disabled" property for descriptions (#89, thanks klingo)
- added "clampFunction" property for slider controls (#85)
- the function receives the value, min and max as arguments and has to return a clamped value
- added optional support for LibDebugLogger
- in case it is loaded, it logs the full error when control creation failed
- updated LibStub to r5

2.0 r26
- fixed error when loading LAM on an unsupported locale
- added Korean translation (thanks p.walker)
- added Brazilian translation (thanks mlsevero)

2.0 r25
- fixed tooltips not working for entries in scrollable dropdown controls (#78, thanks kyoma)
- fixed standalone LAM not loading as expected when LAM is bundled with the manifest included (#81)
- fixed slashcommands not opening the correct panel on first attempt after UI load (#79)
- fixed an error when opening the addon settings menu after Clockwork City update (#80, thanks Gandalf)

2.0 r24
- added scrollable property for dropdown controls (#71, #75, thanks kyoma)
- added Italian translation (#70, thanks JohnnyKing94)
- added Polish translation (#73, #74, thanks EmiruTegryfon)
- updated Spanish translation (thanks TERAB1T)
- updated Russian translation (thanks Morganlefai and Kwisatz)
- fixed debug code not accepting functions for widget names (#72, thanks kyoma)

2.0 r23
- added Chinese translation (#64, thanks bssthu)
- added tooltips for dropdown menu entries (#42)
- added support for separate values for dropdown menu entries (#65)
- added keybind for reset to defaults button (#68)
- added requireReload property for input controls (#47)
- fixed support for nested submenus (#61, thanks Baertram)
- fixed alpha and height not working on divider control (#69)

2.0 r22
- fixed mouse exit events for sliders and textures (#52, thanks silvereyes333)
- fixed decimal input on sliders (#54)
- fixed icon picker not retaining color when disabled is toggled (#58)
- fixed slider accepting mouse wheel input while being disabled (#60)
- added support for nested submenus (#53)
- added new divider widget (#56, thanks silvereyes333)
- added new function "UpdateWarning" to controls which allows to refresh the warning text (#55, thanks silvereyes333)
- added new property "website" to panels which will render a button in the panel to open the specified addon URL (#57)
- updated localization (#59, thanks everyone who helped with it)

2.0 r21
- fixed panel creation starting more than once when switching between different addon panels quickly (#40)
- fixed LAM.util getting wiped with each version load causing errors for many players (#44)
- fixed disabled controls not having the correct label color in some cases (#41)
- fixed controls not updating their own disabled state when their value changes (#51)
- added Japanese translation (thanks k0ta0uchi) (#45)
- added isDangerous flag for button controls (#50)
- when set to true it changes the text color of the button to red and opens a dialog which shows the label and the warning text before running the callback
- added new options for sliders and fixed some bugs (#49)
- autoSelect (boolean): when set to true it makes the input field select all text when it gains focus
- inputLocation (string): setting it to "right" will move the input field to the right side of the slider and make it slightly bigger. For aesthetic reasons this should only be used in custom panels and not in the addon menu
- clampInput (boolean): true by default and if set to false it allows the input values of the slider to exceed the min and max value
- for other internal code changes take a look at the git history

2.0 r20
- fixed empty panels not firing LAM-PanelControlsCreated (#32)
- removed height constraint of 2500 from submenus (#34)
- added two new callbacks LAM-PanelOpened and LAM-PanelClosed. Both pass the panel as their sole argument (#27)
- 'default' can now be a function in addition to a static value (#23)
- all labels (name, tooltip, warning, etc.) can now be a string id or function in addition to a static string (#22)
- updated LibStub to r4

2.0 r19
- made icon picker choicesTooltips array optional
- added support for custom panel objects without a GetWidth method (partially fixes #26)
- fixed controls not refreshing correctly when they are initialized with a boolean "false" on the disabled property (#35, thanks Randactyl)
- removed height constraint on the description control (#36, thanks KuroiLight)
- added "isExtraWide" property to editboxes, allowing them to utilize more space (#37, thanks KuroiLight)
- added "decimals" property to sliders to allow rounding values to x decimals (#38, implements #21, thanks KuroiLight)
- added mousewheel support for sliders (#39, implements #30, thanks KuroiLight)

2.0 r18
- major overhaul of the addon menu style (thanks votan & merlight)
- NOTE: the menu is now a bit wider than before, if you created custom elements you might need to update them accordingly
- added search box to addon list (thanks votan & merlight)
- new icon picker widget
- removed micro freeze when opening a menu with many options for the first time
- changed tooltip property to accept functions that return a string (thanks Ayantir)
- changed the label on the defaults button and menu to avoid a grammar mistake in the french localization (thanks Ayantir)
- updated LibStub to r3 (support for '.' in minor version string, e.g. "17.5")

2.0 r17
- updated for changes in 100011
- fixed OpenToPanel function
- fixed possible error with combobox names
- half width control no longer have a fixed height and instead scale automatically now
- changed controls to no longer use top level windows
- fixed problems with the loading order and added warning if an old version gets initialized first
A big thank you to everyone who helped making these changes, especially votan, merlight and Garkin!

2.0 r16
- updated for changes in 100010
- thanks to Garkin for alerting me of changes needed and for testing on the test server
- Spanish support added, translation provided by Luisen75 for their Spanish project

2.0 r14
- fixed bug where the LAM-RefreshPanel callback was being registered with CALLBACK_MANAGER multiple times
- fixed highlighting of entries in the game Settings menu (Addon Settings now properly highlights and other entries go back to normal)

2.0 r13
- one last bug ran out from anunder the dresser - I smashed it hopefully!

2.0 r12
- fix one bug another shows up...

2.0 r11
- don't overwrite widgets list if table already exists (in case an external lib or addon registers a new widget type)
- headers, descriptions, submenus and custom widgets now have the ability to update their text when the panel and other controls refresh (simply change the name/text in the controlData table)
- custom controls now have the ability to refresh with other controls and your panel - there is a new optional field in the data table called refreshFunc (when the panel refreshes, this function will be called)

2.0 r10
- fixed display of warning icon for dropdown controls
- update LibStub.lua

2.0 r9
- added Russian locale support for RuESO project
- fixed anchoring issue with addon list (addon names are now properly in the scroll frame, so the few of you with tons installed should have no issue any longer)
- added ability to close submenus from the bottom of the submenu (there is a small strip along the bottom of the submenu that is clickable)
- edited each control to better support custom-created UIs via LAM and the parent passed through to the create functions

2.0 r8
- changed border texture around panel and addon list
- expanded maximum size of submenus from 1500 to 2500

2.0 r7
- shortened game menu entry for French and German localizations (so the text doesn't get cut off)
- fixed checkbox label coloring bug (when a checkbox that is set to "off" is re-enabled by another setting)
- fixed multi-line editbox bug (where text didn't display)
- added mousewheel scrolling for multi-line editboxes

2.0 r6
- added "LAM-PanelControlsCreated" callback when you panel has been shown for the first time and your controls have now been created
- fixed duplicate Addon Settings panels when you have a newer version of LAM overwriting an older version
- finished localizing stuff that wasn't localized yet
- added "sort" field to dropdown control

2.0 r5
- fix RefreshPanel function so that all controls now update
- add RefreshPanel call to ForceDefaults function

2.0 r4
- fix for me being an idiot. Sorry guys ><

2.0 r3
- fixed checkboxes making a sound when just refreshing
- fixed error when the lib is loaded standalone, but no addons are registered with it
- fixed error when LAM updates itself to a newer version (won't try to create two of the same frame)

2.0 r2
- LAM-2.0 is now released! See http://www.esoui.com/portal.php?&id=5&pageid=10 for a list of differences between LAM1 and LAM2, as well as a guide for usage and the library's docs

-----------------
1.0 r8
- updated APIVersion to 100004
- changed submenu so scroll bar doesn't overlap contents
- submenu should hopefully no longer occasionally show up behind the options panel

1.0 r7
- the defaults button now properly hides for each panel (Note: the keybind still works, I can't seem to get rid of that, but at least the prompt is hidden now)
- LAM now supports sub menus! See the description page for docs on usage

1.0 r6
- copy/paste fail when changing the name of an arg. Description titles will no longer hide from you.

1.0 r5
- exposed the widgets created via return

1.0 r4
-new widget: Description

1.0 r3
-fixed error with color picker in new patch

1.0 r2
-fixed bug when more than one addon panel is created
Archived Files (34)
File Name
Version
Size
Uploader
Date
2.0 r35
49kB
sirinsidiator
10/31/23 01:16 PM
2.0 r34
48kB
sirinsidiator
06/06/22 05:35 AM
2.0 r33
48kB
sirinsidiator
03/14/22 02:51 PM
2.0 r32
48kB
sirinsidiator
12/17/20 02:04 PM
2.0 r31
49kB
sirinsidiator
06/21/20 03:06 PM
2.0 r30
48kB
sirinsidiator
10/21/19 03:23 AM
2.0 r29
48kB
sirinsidiator
05/07/19 11:00 AM
2.0 r28
47kB
sirinsidiator
05/01/19 09:33 AM
2.0 r27
47kB
sirinsidiator
04/18/19 03:07 PM
2.0 r26
45kB
sirinsidiator
05/21/18 02:36 AM
2.0 r25
45kB
sirinsidiator
09/29/17 12:28 PM
2.0 r24
45kB
sirinsidiator
07/14/17 01:00 PM
2.0 r23
42kB
sirinsidiator
10/30/16 10:00 AM
2.0 r22
39kB
sirinsidiator
08/06/16 07:42 AM
2.0 r21
38kB
sirinsidiator
07/17/16 11:04 AM
2.0 r20
41kB
sirinsidiator
03/26/16 10:45 AM
2.0 r19
37kB
sirinsidiator
02/24/16 12:24 PM
2.0 r18
36kB
sirinsidiator
06/14/15 01:12 PM
2.0 r17
30kB
sirinsidiator
02/22/15 11:09 AM
2.0 r16
27kB
Seerah
11/02/14 02:03 PM
2.0 r14
26kB
Seerah
07/27/14 10:17 PM
2.0 r13
26kB
Seerah
07/20/14 09:35 PM
2.0 r12
26kB
Seerah
07/20/14 07:55 PM
2.0 r11
26kB
Seerah
07/19/14 02:49 PM
2.0 r10
25kB
Seerah
07/13/14 09:18 PM
2.0 r9
25kB
Seerah
07/05/14 06:55 PM
2.0 r8
25kB
Seerah
06/22/14 09:47 PM
2.0 r7
25kB
Seerah
06/15/14 05:17 PM
2.0 r6
25kB
Seerah
06/13/14 11:28 PM
2.0 r5
25kB
Seerah
06/12/14 10:32 PM
2.0 r4
25kB
Seerah
06/11/14 08:56 PM
2.0 r3
25kB
Seerah
06/11/14 07:49 PM
2.0 r2
24kB
Seerah
06/10/14 10:06 PM
1.0 r8
6kB
Seerah
05/24/14 10:01 PM


Post A Reply Comment Options
Unread 07/04/15, 02:51 PM  
merlight
AddOn Author - Click to view AddOns

Forum posts: 671
File comments: 213
Uploads: 12
Originally Posted by Atropos
Perhaps there is already an easy way to achieve what I want to do, but it is not documented and the solution I have developed is pretty clumsy. Please let me know if you have any questions or feedback.
You can simply set a handler (or ZO_PreHookHandler to be future-proof) on your panel control for OnEffectivelyShown / OnEffectivelyHidden.
Report comment to moderator  
Reply With Quote
Unread 07/04/15, 02:10 PM  
Atropos
 
Atropos's Avatar
AddOn Author - Click to view AddOns

Forum posts: 19
File comments: 147
Uploads: 1
Hi Sirinsidiator,

Thanks for your continued work on LAM. I really like the new aesthetic look and some of the new control types seem very useful.

That being said, I have some feedback as a user of your library that I hope you can assist with incorporating into a near future release. Here's a short synopsis:

Objective:
As an addon author, I would like to take advantage of a simple set of callbacks for when my addon settings panel is open, and when it has been closed. I would like to use these callbacks to easily show certain addon elements on screen next to the settings panel so that my users can customize the look of their addon in real-time.

Current Issues:

1) The existing callback "LAM-RefreshPanel" will fire the first time the panel is opened, and when you switch back-and-forth with other panels. It WILL NOT fire when you have already set up the panel, closed the settings, and re-opened the settings panel. This makes it difficult to determine when the settings panel is open.

2) There is no callback for when the panel is closed directly. I can use "LAM-RefreshPanel" to know when the user switches to a different addon's settings panel, but if the user closes the settings menu directly there is no callback.

3) LAM-RefreshPanel fires before the settings menu is actually open, so checking LAM.currentAddonPanel or other conditional checks may be inaccurate if run during the callback.

Proposed Solution

I would like to see two new callbacks added to the library that are very simple for authors to use and understand. It seems like RefreshPanel has become more of a catchall callback for use internally to the workings of the library itself. I would suggest the following:
  • LAM-PanelOpened - passes (panel) and fires whenever a settings panel is first rendered. This includes opening the settings menu from scratch or switching from one panel to another. Authors can easily check within their callback whether panel equals their own panel before proceeding.
  • LAM-PanelClosed - fires whenever the settings menu is deactivated, either by returning to the game layer or by going to some other portion of the game settings.

Perhaps there is already an easy way to achieve what I want to do, but it is not documented and the solution I have developed is pretty clumsy. Please let me know if you have any questions or feedback.
Report comment to moderator  
Reply With Quote
Unread 06/23/15, 03:01 AM  
Phinix
 
Phinix's Avatar
AddOn Author - Click to view AddOns

Forum posts: 186
File comments: 1781
Uploads: 32
Originally Posted by sirinsidiator
Originally Posted by Phinix
I discovered a bug in the new version:

If you have a checkbox type with a disabled check that evaluates true (so it should be disabled) but the checkbox' option value was previously set to on (or true) before the setting for it's disabled option was changed, the text for the option title does not get properly greyed out.
I just tried it with the resurrection options in sidWarTools and don't see this behavior. Which addon did you try it with?

EDIT: Just saw your other comment from last month. Did you solve that problem?
I will update the addon list sometime soon. It's a lot of work even though I wrote a tool that already makes it a lot easier. Maybe some day I'll have enough motivation to improve it so it can automatically update the list.
Hey, sirinsidiator. Thanks for taking time to respond. Your resources are legendary and it is good to see them being kept up.

The issue with disabled items not going grey seems to have "magically" resolved itself. The only thing I can think is that I was running into another problem that was breaking the reading in of the table and that was the symptom I noticed of a larger issue.

This leads me to a repeatable bug:

On the wiki page the iconpicker (AWESOME by the way) says that the "choicesTooltips" is optional, however it is not in fact optional and will give a "nil value" error if you attempt to load the panel without specifying this field.

I haven't played with the color issue in a while but I'm pretty sure it was a syntax issue on my end as I have seen other addons make it work. I'll have to look at how they did it for examples.
Last edited by Phinix : 06/23/15 at 03:03 AM.
Report comment to moderator  
Reply With Quote
Unread 06/21/15, 03:23 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1578
File comments: 1129
Uploads: 41
Originally Posted by Phinix
I discovered a bug in the new version:

If you have a checkbox type with a disabled check that evaluates true (so it should be disabled) but the checkbox' option value was previously set to on (or true) before the setting for it's disabled option was changed, the text for the option title does not get properly greyed out.
I just tried it with the resurrection options in sidWarTools and don't see this behavior. Which addon did you try it with?

EDIT: Just saw your other comment from last month. Did you solve that problem?
I will update the addon list sometime soon. It's a lot of work even though I wrote a tool that already makes it a lot easier. Maybe some day I'll have enough motivation to improve it so it can automatically update the list.
Last edited by sirinsidiator : 06/21/15 at 03:28 AM.
Report comment to moderator  
Reply With Quote
Unread 06/19/15, 11:49 AM  
Phinix
 
Phinix's Avatar
AddOn Author - Click to view AddOns

Forum posts: 186
File comments: 1781
Uploads: 32
I discovered a bug in the new version:

If you have a checkbox type with a disabled check that evaluates true (so it should be disabled) but the checkbox' option value was previously set to on (or true) before the setting for it's disabled option was changed, the text for the option title does not get properly greyed out.
Last edited by Phinix : 06/19/15 at 11:50 AM.
Report comment to moderator  
Reply With Quote
Unread 05/14/15, 11:57 AM  
Phinix
 
Phinix's Avatar
AddOn Author - Click to view AddOns

Forum posts: 186
File comments: 1781
Uploads: 32
Excellent resource, many thanks!

One quick question. Is it possible to update the display based on set functions? For example, I store the color of a menu item text in a global variable. In my set function for color picker I change this global variable to the new r,g,b,a table, but the text of the menu item that uses it doesn't update unless I do a /reloadui.

Also, ESO Master Recipe List didn't make it to the list of addons using LibAddonMenu-2.0.
Report comment to moderator  
Reply With Quote
Unread 05/10/15, 07:27 PM  
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1019
File comments: 1531
Uploads: 31
Originally Posted by sirinsidiator
Originally Posted by Ayantir
little request, allow us to execute code when reverting to default.
https://github.com/sirinsidiator/ESO...Menu/issues/23

Originally Posted by Ayantir
Same request for tooltips.
https://github.com/sirinsidiator/ESO...Menu/issues/24

There is still a bit of RL work that eats up all of my daily coding time, but once that is over I'll look into those.
Hello here,

I've just uploaded a modified r-18 for my little feature
Include the metafile, the 18 rev, all modifications done in controls files and updated control revision too. tested, seems working as a charm.

(removed)

It is basically a :


Lua Code:
  1. if checkboxData.tooltip then
  2.     if type(checkboxData.tooltip) == "string" then
  3.         control.data.tooltipText = checkboxData.tooltip
  4.     elseif type(checkboxData.tooltip) == "function" then
  5.         control.data.tooltipText = tostring(checkboxData.tooltip())
  6.     end
  7. end
Last edited by Ayantir : 05/14/15 at 12:01 PM.
Report comment to moderator  
Reply With Quote
Unread 04/26/15, 04:27 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1578
File comments: 1129
Uploads: 41
Originally Posted by Ayantir
little request, allow us to execute code when reverting to default.
https://github.com/sirinsidiator/ESO...Menu/issues/23

Originally Posted by Ayantir
Same request for tooltips.
https://github.com/sirinsidiator/ESO...Menu/issues/24

There is still a bit of RL work that eats up all of my daily coding time, but once that is over I'll look into those.
Report comment to moderator  
Reply With Quote
Unread 04/26/15, 04:10 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1578
File comments: 1129
Uploads: 41
Originally Posted by SnowmanDK
Is there a problem with textures?

The code below just makes a gap in the menu. No graphics are shown.
Not even the tooltip is shown.
All other controls works fine.
Lua Code:
  1. POIsubmenuControls:insert({ -- divider
  2.     type = "texture",
  3.     width = "full",
  4.     image = "Destinations/misc/divider.dds",
  5.     imageWidth = 510,
  6.     imageHeight = 9,
  7.     tooltip = "test",
  8. })
I have added "Libs/LibAddonMenu-2.0/controls/texture.lua" to my config.
I assume image path is based on Addons as root folder.
I also assume that the image format is the same as for pins.
What am I missing?
The options look fine.
I made the experience that image files need to have a width and height with a power of 2. Try to resize the image to 512x16.
If that does not help, you can also try to close the game and delete the ShaderCache.cooked file. That also seems to help with texture problems quite often.
Report comment to moderator  
Reply With Quote
Unread 04/25/15, 03:11 PM  
SnowmanDK
 
SnowmanDK's Avatar
AddOn Author - Click to view AddOns

Forum posts: 161
File comments: 1117
Uploads: 8
Is there a problem with textures?

The code below just makes a gap in the menu. No graphics are shown.
Not even the tooltip is shown.
All other controls works fine.
Lua Code:
  1. POIsubmenuControls:insert({ -- divider
  2.     type = "texture",
  3.     width = "full",
  4.     image = "Destinations/misc/divider.dds",
  5.     imageWidth = 510,
  6.     imageHeight = 9,
  7.     tooltip = "test",
  8. })
I have added "Libs/LibAddonMenu-2.0/controls/texture.lua" to my config.
I assume image path is based on Addons as root folder.
I also assume that the image format is the same as for pins.
What am I missing?
Last edited by SnowmanDK : 04/25/15 at 03:11 PM.
Report comment to moderator  
Reply With Quote
Unread 04/21/15, 03:33 AM  
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1019
File comments: 1531
Uploads: 31
Same request for tooltips.

Why :
If I disable a control, user don't know why.
So we explain on tooltips.
Sometimes the reason isin LAM, sometime not. Sometimes it can be combinaisons of reasons.
If I try to cheat and changing tooltips when I change an option

ex :

Lua Code:
  1. optionsTable[index] = {
  2.     type = "checkbox",
  3.     name = pChat.lang.useESOcolors,
  4.     tooltip = pChat.lang.useESOcolorsTT,
  5.     getFunc = function() return pChat.opts.useESOcolors end,
  6.     setFunc = function(newValue)
  7.         pChat.opts.useESOcolors = newValue
  8.         pChat.initLAMTooltips()
  9.     end,
  10.     width = "full",
  11.     default = defaults.useESOcolors,
  12. }
  13.  
  14.  
  15. function pChat.initLAMTooltips()
  16.  
  17.     if pChat.opts.useESOcolors then
  18.        
  19.         pChat.lam.sayTT = pChat.lang.useESOcolorsErrorTT
  20.         ....
  21.     end
  22.    
  23. end
  24.  
  25. optionsTable[index] = {
  26.     type = "colorpicker",
  27.     name = pChat.lang.say,
  28.     tooltip = pChat.lam.sayTT,
  29.     getFunc = function() return pChat.getColour(pChat.opts.colours[2*CHAT_CHANNEL_SAY]) end,
  30.     setFunc = function(r, g, b) pChat.opts.colours[2*CHAT_CHANNEL_SAY] = pChat.makeColour(r, g, b) end,
  31.     default = pChat.defaultColour(defaults.colours[2*CHAT_CHANNEL_SAY]),
  32.     disabled = function() return pChat.opts.useESOcolors end,
  33. }

It won't work neither. Control defined with pChat.lang.say will still get its old tooltip because LAM optionTable is only refreshed when you :RegisterOptionControls. I'll could rebuild my optionsTable with

Lua Code:
  1. LAM:RegisterOptionControls("pChatOptions", optionsTable)
in order to work, but generally users change their multiple options before leaving it.
I've also tried to add in my setFunc : LAM:RegisterOptionControls("pChatOptions", optionsTable)
I won't work neither.

If for a lot of addons, building table only at the startup is a good choice, when you get an addon with huge settings panels and complex code to decide if or not an option is enabled, maybe an optional setting in the controls could be interesting.

Lua Code:
  1. name= "blabla",
  2. getfunc = ...
  3. setFunc = ..
  4. refreshPanel = true




-----------


For the default, I found the trick because my need was on a dropdown.
If you cannot set a func in your "default" parameter, set it in your setFunc parameter.

and write something like this :
In this exemple. I set a sound ID in my db and I show its localized string.


Lua Code:
  1. index = index + 1
  2.     optionsTable[index] = {
  3.         type = "dropdown",
  4.         name = pChat.lang.soundforincwhisps,
  5.         tooltip = pChat.lang.soundforincwhispsTT,
  6.         choices = {
  7.             pChat.lang.soundforincwhispschoice[SOUNDS.NONE],
  8.             pChat.lang.soundforincwhispschoice[SOUNDS.NEW_NOTIFICATION],
  9.             pChat.lang.soundforincwhispschoice[SOUNDS.DEFAULT_CLICK],
  10.             pChat.lang.soundforincwhispschoice[SOUNDS.EDIT_CLICK],
  11.         },
  12.         width = "full",
  13.         default = defaults.soundforincwhisps, --> SOUNDS.NEW_NOTIFICATION
  14.         getFunc = function() return pChat.lang.soundforincwhispschoice[pChat.opts.soundforincwhisps] end,
  15.         setFunc = function(choice)
  16.             if choice == pChat.lang.soundforincwhispschoice[SOUNDS.NONE] then
  17.                 pChat.opts.soundforincwhisps = SOUNDS.NONE
  18.                 PlaySound(SOUNDS.NONE)
  19.             elseif choice == pChat.lang.soundforincwhispschoice[SOUNDS.NEW_NOTIFICATION] then
  20.                 pChat.opts.soundforincwhisps = SOUNDS.NEW_NOTIFICATION
  21.                 PlaySound(SOUNDS.NEW_NOTIFICATION)
  22.             elseif choice == pChat.lang.soundforincwhispschoice[SOUNDS.DEFAULT_CLICK] then
  23.                 pChat.opts.soundforincwhisps = SOUNDS.DEFAULT_CLICK
  24.                 PlaySound(SOUNDS.DEFAULT_CLICK)
  25.             elseif choice == pChat.lang.soundforincwhispschoice[SOUNDS.EDIT_CLICK] then
  26.                 pChat.opts.soundforincwhisps = SOUNDS.EDIT_CLICK
  27.                 PlaySound(SOUNDS.EDIT_CLICK)
  28.             else
  29.                 -- When clicking on LAM default button
  30.                 pChat.opts.soundforincwhisps = defaults.soundforincwhisps
  31.             end
  32.            
  33.         end,
  34.     }

When user click on a button, a sound is played (see the setFunc).
When user click on "reinit" button, "default" send value to setFunc and sound is not played. because I send the stored value, not a dropdown one.

When user don't get a saved vars, Zo_VavedVars will set the value to (here) defaults.soundforincwhisps.
Then the getFunc will handle it. I was maybe tired to see it.

If you want some exemple of complex LAM build tables, I recommand you pChat and MiniMap. there is good example inside.
Report comment to moderator  
Reply With Quote
Unread 04/18/15, 06:21 PM  
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1019
File comments: 1531
Uploads: 31
little request, allow us to execute code when reverting to default.

the code will look like getFunc

Lua Code:
  1. default = function()
  2.  
  3.     -- do stuff
  4.     return value
  5.  
  6. end,

Thank you.
Report comment to moderator  
Reply With Quote
Unread 03/24/15, 12:32 PM  
Isilvar307

Forum posts: 0
File comments: 6
Uploads: 0
Re: Re: Need help please

I thought TiEmote Extented is separate mod with extra features from TiEmote and i checked TiEmote's version.
But for Undiscovered i thought it was still the previous version.
When i checked in this link it was not in the lists yet.
https://github.com/sirinsidiator/ESO...ons-using-LAM2
Well, i guess i have to use TiEmote Extented from now on.

As for the Minion, it has a bug which i reported and has been fixed one time, but with every update its disfixes!
That is why i am using NMM and all everything is fine.

Thanks alot for the info about those two addons.
Report comment to moderator  
Reply With Quote
Unread 03/23/15, 05:24 AM  
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1578
File comments: 1129
Uploads: 41
Re: Need help please

Originally Posted by Isilvar307
I do not have any knowledge for editing addons.
But i checked from each addon's "txt", i saw in that APB and SkyShards have "OptionalDependsOn: LibAddonMenu-2.0 ", SimpleClock and "OptionalDependsOn: LibAddonMenu-1.0 ", TiEmote does not have and Undiscovered have "OptionalDependsOn: LibStub LibAddonMenu".
So what must i do?
Just replace "LibAddonMenu-1.0" with "-2.0" and "LibStub LibAddonMenu" with "LibAddonMenu-2.0"?
Also i never used this addon LibAddonMenu before.
Should i download and use it somehow in order to update the addons i have?
And i agree 100% with joshmiller83, there are many people who don't know what to do for this matter and its not our work to update those addons, one mistake can cause bad issues in the game which may not be fixed by just uninstalling the addon, but it may need to do a major repair or the whole game reinstall from begin, that is something people do not want who have slow internet.
Neither is it my job to update the addons that use LibAddonMenu.
I am not sure why you think that you have to update or use LAM2 yourself?
It is a library that is included in other addons. If they are not updated, then you should report it to their respective comment section or ask in the addon requests forum if somebody can update it.

Also TiEmote and Undiscovered have both been updated to work with LAM2 already.
If you haven't already done so, you should start using Minion which will keep track of your addons and allows you to update them with a single click.
Report comment to moderator  
Reply With Quote
Unread 03/22/15, 12:10 PM  
Isilvar307

Forum posts: 0
File comments: 6
Uploads: 0
Need help please

I do not have any knowledge for editing addons.
But i checked from each addon's "txt", i saw in that APB and SkyShards have "OptionalDependsOn: LibAddonMenu-2.0 ", SimpleClock and "OptionalDependsOn: LibAddonMenu-1.0 ", TiEmote does not have and Undiscovered have "OptionalDependsOn: LibStub LibAddonMenu".
So what must i do?
Just replace "LibAddonMenu-1.0" with "-2.0" and "LibStub LibAddonMenu" with "LibAddonMenu-2.0"?
Also i never used this addon LibAddonMenu before.
Should i download and use it somehow in order to update the addons i have?
And i agree 100% with joshmiller83, there are many people who don't know what to do for this matter and its not our work to update those addons, one mistake can cause bad issues in the game which may not be fixed by just uninstalling the addon, but it may need to do a major repair or the whole game reinstall from begin, that is something people do not want who have slow internet.
Last edited by Isilvar307 : 03/22/15 at 12:18 PM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: