Thread Tools Display Modes
02/04/15, 01:42 PM   #1
votan
 
votan's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2014
Posts: 577
Question New UI for LibAddonMenu r17 (update 1.6)?

If it is time for a new revision for update 1.6, it is may also time for a refresh of the UI?

Does someone like it?

It is just some change to the main file: Making borders invisible, changing base class of the buttons, a bit wider....
Shall I continue and send the source code changes to sirinsidiator or should I go away?
  Reply With Quote
02/04/15, 03:55 PM   #2
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
I kinda like the idea to change the look a bit to mark the beginning of a new era.
Maybe change the background to the one seen in the skill menu behind the categories?

I was also thinking about introducing toggleable addon categories and a search box to bring some order into the list when there are many addons installed.

As this library is used in so many other addons, I appreciate all input and I will do my best to keep it up to date.
  Reply With Quote
02/04/15, 04:11 PM   #3
Randactyl
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 251
Having categories that we could set for our addons like on ESOUI would be kind of neat, though it would be somewhat unnecessary if a user only has a few addons.

Kind of makes me wonder if our settings library would need a settings panel of its own XD
  Reply With Quote
02/04/15, 04:14 PM   #4
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
That's what I meant with toggleable. I would put a checkbox or icon somewhere above the list so you can switch it on when you need it.
  Reply With Quote
02/04/15, 04:59 PM   #5
Baertram
Super Moderator
 
Baertram's Avatar
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 4,912
I like the idea of a customizable look of the settings library addon too.

Possible options could be:
-Show categories
-Show search field
-Change font size & look in the addons list (if you got plenty of installed addons the list gets very long and reducing the font size by 2points would show more addons on one page e.g.)
-Maybe templates to choose from (like plugins for libAddonMenu). This way Votan could build a look he likes and use it and others can download and use the same, or just stay with the original one.

Imo this all is nice to have and I even like the current version like it is.
As human beings are lazy I guess the seach box or categories would be cool features ;-)

btw @Votan:

I like your new layout very much! The borders always kind of disturbed me
  Reply With Quote
02/04/15, 07:45 PM   #6
circonian
AddOn Author - Click to view addons
Join Date: May 2014
Posts: 613
I actually like the borders, at least some kind of divider between the addon name list & the panel.

But if were making suggestions the one thing I would really like to see is the ability to register sub-panels. Something like when you click on an addon name the list updates & you get a list of sub panels for that addon under it, rather than being restricted to only using sub menus.

Something like this:


When setting something to full width, checkboxes for example, it would be nice if the ON/OFF aligned to the right of the panel to allow for longer descriptions, no since in wasting that space. If were marking the control for full width it should be full width, not 60% width, in my opinion.
  Reply With Quote
02/04/15, 09:05 PM   #7
Garkin
 
Garkin's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 832
I personally do not like look of submenus in original layout, but other then that is fine. As for the new look I think that with divider between addon list and options it will look better.

But it should be possible to make menu skinable using the new ApplyTemplateToControl function and let user decide which template he wants to use.
  Reply With Quote
02/04/15, 09:26 PM   #8
BornDownUnder
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 59
Originally Posted by Baertram View Post
I like the idea of a customizable look of the settings library addon too.

Possible options could be:
-Show categories
-Show search field
-Change font size & look in the addons list (if you got plenty of installed addons the list gets very long and reducing the font size by 2points would show more addons on one page e.g.)
-Maybe templates to choose from (like plugins for libAddonMenu). This way Votan could build a look he likes and use it and others can download and use the same, or just stay with the original one.

Imo this all is nice to have and I even like the current version like it is.
As human beings are lazy I guess the seach box or categories would be cool features ;-)

btw @Votan:

I like your new layout very much! The borders always kind of disturbed me
I really like the idea of options for categories & font size, could also see a search function doing wonders as it is a pita to be scrolling down repeatedly when trying out different settings for overall compatibility in a unique UI setup.

The template idea is simply brilliant, I often used others' UI design as a basis then tweaked initially when I started out customizing UI in WoW, many years ago now.

For me personally, the borders I like, though increasing transparency of them would be nice. Perhaps time for LAM to have customizable setting options of its own?
  Reply With Quote
02/05/15, 12:38 AM   #9
votan
 
votan's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2014
Posts: 577
Thanks to all, for the kind words.

A divider: Yes, I tried to get the look of the lore library already. (Not a border, but a divider) But it was a bit late I think

Own settings: Yes.
Allowing to change some perferences would be good. Another example: Allowing to colorize the buttons or not.
The question is: like the chat window (with the gear) or as part of the left-side list (easier: all there)

A bit more space for text: Yes. Aspecially german can be awful long. But that is true for all controls. Maybe word wrap?

@Garkin: Templates. Wow. Sounds great, but also a bit beyond my current LUA skills. And a bigger change than pimping the look.

Let's do it! Step by step and see how far we come.

First changes: here

Last edited by votan : 02/05/15 at 12:58 AM.
  Reply With Quote
02/05/15, 01:50 AM   #10
Sasky
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 231
Without the divider, for short addon panels it looks like the Author+Version string is about LAM not the addon. While a divider would help, it'd probably be even better to put it directly under the title.

Originally Posted by circonian View Post
When setting something to full width, checkboxes for example, it would be nice if the ON/OFF aligned to the right of the panel to allow for longer descriptions, no since in wasting that space. If were marking the control for full width it should be full width, not 60% width, in my opinion.
How would they fit to the left of the text? If on the far right, there'd be a lot of space between label and control. The checkbox (or on/off) portion is fixed width though, and would be right next to the label.

As far as skins, there's a couple different levels. One would be the overall layout and the other would be the individual controls.
  Reply With Quote
02/05/15, 02:42 AM   #11
circonian
AddOn Author - Click to view addons
Join Date: May 2014
Posts: 613
Originally Posted by Sasky View Post
How would they fit to the left of the text? If on the far right, there'd be a lot of space between label and control. The checkbox (or on/off) portion is fixed width though, and would be right next to the label.

As far as skins, there's a couple different levels. One would be the overall layout and the other would be the individual controls.
As for the empty space, that is what "half" width is for, well one of its uses. If your text isn't that long use "half" width.

As for the Fixed width...Just change it and make it a different "fixed" width Make it just big enough for the words on the button, a little padding, & anchor it differently to allow for more room for text.

Although Your idea of putting the buttons on the left is probably a better idea.

If you guys come up with any ideas you want to implement & want any help with anything just let me know, I'de be happy to pitch in.
  Reply With Quote
02/05/15, 04:07 AM   #12
votan
 
votan's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2014
Posts: 577
Ya, the problem I have with the "half" option is localization. Allowing/Enabling localization makes the definition of "isn't that long" very difficult. Text may small in english fitting "half" and when is squeezed in other languages.

One example always disturbing me a little bit:
Item tooltip:
"Bound upon equip"
=
"Wird beim Anlegen gebunden"

1.75x width. Causing a word wrap, effecting the line height on the left side, too.

Originally Posted by circonian View Post
As for the empty space, that is what "half" width is for, well one of its uses. If your text isn't that long use "half" width.
  Reply With Quote
02/05/15, 04:14 AM   #13
sirinsidiator
 
sirinsidiator's Avatar
AddOn Author - Click to view addons
Join Date: Apr 2014
Posts: 1,566
Many good ideas! Keep 'em coming

I like the idea of using templates to change the style.
How about allowing two levels of customization?
  1. Allow the user to download additional style packages that change the default look of libAddonMenu
  2. Give addon devs a way to change the look of their own settings panel
That should cover all the things that where proposed so far and allow them without the need to update the main lib for every change in style.

For the settings I will have to use one of the methods proposed here.
  • Using the ingame savedvars to store the settings requires minimal change, but at the same time feels a bit wrong because it puts library related stuff in a file that is not owned by it.
  • Putting libAddonMenu into a standalone addon might look a bit inconvenient at first glance, but it would also open a few new possibilities.
    • Enables saved vars
    • Removes the need to bundle it with other addons and update every addon when a new version is released
    • Changes the load order so that the newest version of libAddonMenu is loaded first
    • Which in turn prevents problems like this

We could also add some kind of version check that allows us to put out a warning when libAddonMenu has not been updated and an addon requires a newer version.

edit: forgot about the subcategories...
I don't like them either. I think addon specific things should stay on the right side of the menu.
Maybe we can use tabs instead?

Last edited by sirinsidiator : 02/05/15 at 04:19 AM.
  Reply With Quote
02/05/15, 06:24 AM   #14
merlight
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 671
  • I like the borderless look, fits better in the UI. Even better if you manage to give the add-on list a different background (like Achievements window, for example). If not, a vertical divider between add-on list and settings pane should suffice.
  • I don't like that a stand-alone LAM would be required. Somehow I got fond of how most add-ons bundle everything they need.
  • Categories... hell yeah! But there's a trap. ESOUI categories are too many, overlapping, and blurry. For me at least. There should only be a few.
  • While you're at it, please change CreateTopLevelControl to CreateControl in each and every control constructor: http://www.esoui.com/forums/showpost...99&postcount=2
  Reply With Quote
02/05/15, 07:14 AM   #15
votan
 
votan's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2014
Posts: 577
For a large addon list we already know a lot techniques:
- recent list
- favorites (does it make sense here?)
- user-defined groups (but the users must organize themself)

Would work if we have saved settings, only

Automatic grouping:
- First Letter (A-D, E-H, G-M ...) sound easy, but can be tricky if you want the ranges to be dynamic.
- Author (Garkin would still have a large list ) Does a user look for an addon by a specific author. No...

There could be some symbols (ESO works with symbols) or a dropdown, to switch view mode.

But we must be careful not to overload the effort with super duper high-end wishes.
I would start with a recent list and when grouping. Both optional and off by default.
Where must be something left for r18

PS: I think it is dangerous and un-maintainable, that each control has its own revision mangement and basically can come from "anywhere".

Last edited by votan : 02/05/15 at 07:22 AM.
  Reply With Quote
02/05/15, 07:51 AM   #16
votan
 
votan's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2014
Posts: 577
I know what you mean, but if we keep the "embedded" style, I'm afraid, there is no choice.
If the namespace is unique, I think it's ok. And if where is a breaking change in future, you can use the version number for migration and swipe out.

Originally Posted by sirinsidiator View Post
Using the ingame savedvars to store the settings requires minimal change, but at the same time feels a bit wrong because it puts library related stuff in a file that is not owned by it.

Last edited by votan : 02/05/15 at 08:10 AM.
  Reply With Quote
02/05/15, 08:36 AM   #17
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
Hi,

Posted Screenshot is nice.

Get the "ESO Menus font" at the left is really cool. No borders as real options in eso. I think the user need to think he's not into an addon setting but in its game settings.

As circonian says, maybe add submenus in the panel available as an option. I find them actually ugly, but they're needed. A revamp of them into the settings section is also needed.

Also for panel section make an embedded colorization (like my code snip below) with ZO_HIGHLIGHT_TEXT:Colorize

Lua Code:
  1. local panelData = {
  2.         type = "panel",
  3.         ....
  4.         displayName = ZO_HIGHLIGHT_TEXT:Colorize("pChat"),
  5.         submenus = true,
  6.         width = 600
  7.     }


When you reset to default, a reloadUI is done when 1 option get a reloadUI in its code.
In fact I think the whole options are set back to defaut, without loooking if the actual option is maybe at the default value. It could be interesting to fix this.


A Wider panel is absolutly needed ! In French and German, it's really hard to put comprehensive labels. English get a majority of little words, other languages not.
PS : A better way would be to manually set this option in addons (in panel section!) with an option like in my code above. It will set the width of the right section of the options. (without the addon list). if under your min val, ignored, if its the max set it for all addons. Some addons really need a very long list.


Try to fix the \n problem in description!
Wrote a description, put some \n\n and put something under you'll see the bug.

A search window for options based on labels
Look at pChat, it's horrible to set an option , as I got tons of options inside this addon. think Wykkyds got same problem.

If it's possible, try to implement back the dual colorpicker button. But it was a puddy tweak. I don't really know if it will be interesting. It's a label and 2 colorpickers. it returns r1, b1, g1, r2, b2, g2 instead of r, g, b

An option or something for rebuild LAM !
In some of my addons, a part of the option table is build by code, not manually set. In fact a got a block per guild. and when user join/leave a guild, I rebuilt LAM. but if the user has already get a look into LAM before, it won't rebuilt. Please have a look.

Add invisible option.
If LAM got "disable" value, could you see if invisible is do-able ? the option will get a true/false value required, built by one of our function as disable work. When 1 option control 10 others, invisible could be nice. controlled by SetHidden and maybe a smooth option if it's possible


For other suggestion.. Categorys, It's really a trap. I got an adddon GuildNotificator, It notifys in "chat", "guildmates" connexions. Does this addon go in chat, guild, both ? Could an addon be in 1+ category?
If we add those, I really think we need to add categories only if a category is populated by 2+ addons. If user only got 1 guild, 1 chat, 1 pvp, and 1 craft addons, it won't be displayed. But if he get 2pvp per exemple, categorys could be displayed. And a little checkbox at the top of the addon list "regroup Addons per category"
  Reply With Quote
02/05/15, 09:22 AM   #18
votan
 
votan's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2014
Posts: 577
I have a similar problem. My unreleased solution (using Harven's Addon Settings) is to make EVERY configuration property able to be a callback. It's basically:
Lua Code:
  1. whateverControl:SetWhatEver(self:GetValueOrCallback(setting.whatever))
Every control is updated once the options fragment is re-opened or the selection has changed.
Harven's great implementation makes it smooth to do so.

GetValueOrCallback(arg) checks if "arg" is a function, and if so, calling it with "self", returning the value of the function. Otherwise returning "arg" itself.
In my case the number of controls is static, but for Ayantir a dynamic "setting.isHidden" could do what is needed to change the number of controls.

Originally Posted by Ayantir View Post
An option or something for rebuild LAM !
In some of my addons, a part of the option table is build by code, not manually set. In fact a got a block per guild. and when user join/leave a guild, I rebuilt LAM. but if the user has already get a look into LAM before, it won't rebuilt. Please have a look.

Last edited by votan : 02/05/15 at 09:49 AM.
  Reply With Quote
02/05/15, 09:36 AM   #19
Garkin
 
Garkin's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 832
After update to r16 because of Update 5, LAM doesn't properly select nodes in game menu tree when you open settings menu from slash command. Here is my (unfinished) solution:

Lua Code:
  1. --METHOD: OPEN TO ADDON PANEL--
  2. --opens to a specific addon's option panel
  3. --Usage:
  4. --  panel = userdata; the panel returned by the :RegisterOptionsPanel method
  5. local locSettings = GetString(SI_GAME_MENU_SETTINGS)
  6. function lam:OpenToPanel(panel)
  7.     SCENE_MANAGER:Show("gameMenuInGame")
  8.     zo_callLater(function()
  9.             local settingsMenu = ZO_GameMenu_InGame.gameMenu.headerControls[locSettings]
  10.             settingsMenu:SetOpen(true)
  11.             SCENE_MANAGER:AddFragment(OPTIONS_WINDOW_FRAGMENT)
  12.             KEYBOARD_OPTIONS:ChangePanels(lam.panelID)
  13.             for i, child in pairs(settingsMenu.children) do
  14.                 if type(child) == "table" and child.data.name == KEYBOARD_OPTIONS.panelNames[lam.panelID] then
  15.                     ZO_TreeEntry_OnMouseUp(child.control, true)
  16.                     break
  17.                 end
  18.             end
  19.             panel:SetHidden(false)
  20.         end, 200)
  21. end

It is not finished yet, because there is still one issue - it doesn't properly select button in addon list and scroll list does not move to that button. If I want to fix that, I will have to get reference for addon button. Probably the best would be adding it to panel itself. I have to try what I can do without extensive changes to the code.

EDIT:
Button is selected, but scroll list scrolls to the button only if button list is already initialized, when you open LAM settings for the first time it doesn't work.
Lua Code:
  1. --METHOD: OPEN TO ADDON PANEL--
  2. --opens to a specific addon's option panel
  3. --Usage:
  4. --  panel = userdata; the panel returned by the :RegisterOptionsPanel method
  5. local locSettings = GetString(SI_GAME_MENU_SETTINGS)
  6. function lam:OpenToPanel(panel)
  7.     SCENE_MANAGER:Show("gameMenuInGame")
  8.     zo_callLater(function()
  9.             local settingsMenu = ZO_GameMenu_InGame.gameMenu.headerControls[locSettings]
  10.             settingsMenu:SetOpen(true)
  11.             SCENE_MANAGER:AddFragment(OPTIONS_WINDOW_FRAGMENT)
  12.             KEYBOARD_OPTIONS:ChangePanels(lam.panelID)
  13.             for i, child in pairs(settingsMenu.children) do
  14.                 if type(child) == "table" and child.data.name == KEYBOARD_OPTIONS.panelNames[lam.panelID] then
  15.                     ZO_TreeEntry_OnMouseUp(child.control, true)
  16.                     break
  17.                 end
  18.             end
  19.             local scroll = LAMAddonPanelsMenuScrollChild
  20.             for i = 1, scroll:GetNumChildren() do
  21.                 local button = scroll:GetChild(i)
  22.                 if button.panel == panel then
  23.                     zo_callHandler(button, "OnClicked")
  24.                     ZO_Scroll_ScrollControlToTop(LAMAddonPanelsMenu, button)
  25.                     break
  26.                 end
  27.             end
  28.         end, 200)
  29. end

Last edited by Garkin : 02/05/15 at 10:16 AM.
  Reply With Quote
02/05/15, 03:00 PM   #20
votan
 
votan's Avatar
AddOn Author - Click to view addons
Join Date: Oct 2014
Posts: 577
New version including code from Merlight and Garkin.

Pic 1


But this is nice, too. The title is right aligned.
Pic 2


Source here. Changes effecting panel and submenu.

Last edited by votan : 02/05/15 at 03:10 PM.
  Reply With Quote

ESOUI » Developer Discussions » General Authoring Discussion » New UI for LibAddonMenu r17 (update 1.6)?

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