You also have to add into that ball of wax, addons that dont use acedb. A user would expect if he has some sort of auto switching magic happening it works for non acedb based mods as well.
it's trivial to do in the addons themselves, stop asking for useless bloat to be wedged into the library
Right, but that requires every addon author to write code to do the same thing, and would result in many addons having many different ways for users to do the same thing, which is the kind of thing that annoys the crap out of users, myself included. It also requires that addon authors write it... out of the 200 or so addons I use, only one currently offers a way to switch between profiles when I switch between specs, and its (non-AceDB) profile system is unintuitive and frustrating. The authors of several other addons which really need some kind of spec awareness have explicitly declined to add such a feature, leaving me and everyone else with a dual spec stuck with manually switching addon profiles every time we switch specs.
I guess I'm just not seeing how the tiny, tiny overhead of adding this to AceDB and AceDBOptions is some horrible monstrous Discord-style bloat like you guys are making out to be...
Phanx your arguing "Rights of the authors & Libs vs the demands of the users" argument. As seen in previous occations this only works about half the time with the Core Ace3 Libs. I remember the reluctance to Add AceDBOptions.
However, What i think we need here is less esoteric pumping of the "Needs of the Users" and more factual Needs. I'd Be rather interested in the addons that everyone keeps saying exist that would need a per spec switch that use AceDB. Bout the only one's i know or can think of is Grid and UnitFrame Addons, and ActionBars.
Maybe TimmerBar Addons (EBB, RBM) could use it, but i don't use those differently per spec myself.
Considering one will run only 1 main UnitFrame Addon, 1 RaidFrame Addon, 1 Action Bar Addon, 1 Buff Addon and if needs, 1 Timmer Bar addon. That's 5 addons and not that much to add to them to switch things on spec change in their own addons.
it's trivial to do in the addons themselves, stop asking for useless bloat to be wedged into the library
I'm not sure if this is a troll but...
Persisting data is trivial. Does this mean AceDB is "useless bloat to be wedged into the library"? Should every developer could put this in the addons themselves? Well no because you also get per-character profile switching and it's implemented in a standard manner that allows things like Reflux to exist. That's why people like libraries like Ace.
Anyway back to the topic...
I can't think of any examples where you'd want per-character switching but never per-spec switching. You could take say a bag manager addon. You're unlikely to want bags managed differently per spec, but then you're unlikely to want it done differently per character either.
How useful does a feature have to be to get into AceDB? OrionShock, who is a naysayer, just came up with 5 use cases covering hundreds of mods off the top of his head.
Apart from:
- Completely benign change when switched off (by default)
- Needed by hundreds of mods in several different categories.
- Mimicks functionality in the blizzard UI (where it's always not, not an option).
What more would it take to convince people that it's core functionality?
How useful does a feature have to be to get into AceDB? OrionShock, who is a naysayer, just came up with 5 use cases covering hundreds of mods off the top of his head.
Seems pretty compelling to me. Appart from being needed by hundreds of mods in several different categories, and being in the blizzard UI (always not, not an option). What more would it take to convince people that it's core functionality?
Any Author worth their addons will be able to implement this sort of switch to be quite functional and with out much of a problem. However, for me, I do not want anything changing AT ALL between specs for ANY of my charactures. For me, it's just too much time and work to setup a different UI for each spec for each of my toons i play; F That. I want to play the game not spend 30mins + with each spec / toon reconfiguring it. I have one standard setup for all my toons and it is QUITE functional with out ever needing to change it for each spec / class i play.
I voice to not add it into the lib because each addon is coded differently. Not all addons that use aceDB use the profile system fully ( or properly ) let alone need switching based on spec.
----
Needless to say, if nev wanted a createive approach: Add to the API to enable per spec switching that an addon that does need it. That way this switch is completely Opt IN and authors can Choose to update their addon to use this. From there we'll let the users do what they do best, "Bitch about crappy mods".
Needless to say, if nev wanted a createive approach: Add to the API to enable per spec switching that an addon that does need it. That way this switch is completely Opt IN and authors can Choose to update their addon to use this.
Gah... do my posts gets ignored server-side ???
I'm saying "this should be optional" from the first answer I made in this thread and I have the feeling nobody got it...
I'm saying "this should be optional" from the first answer I made in this thread and I have the feeling nobody got it...
you gave the actual solution too early in the thread, you got to let it breath a bit and be frustrated before giving the calm and cool solution that everyone can live with. It's an art :)
I can't think of any examples where you'd want per-character switching but never per-spec switching.
Consider something thats not even related to the Characters skills, like a crafting addon with individual filters and whatnot, or a quest addon that stores your progress. Its certainly set for storing per-character data, but it doesnt care about your spec at all.
Need more examples? =)
On another note, a lot of addons do not even support changing the profile sanely. They require a reload ui. I woudn't want a half-broken UI after changing spec, waiting for me to reload.
you gave the actual solution too early in the thread, you got to let it breath a bit and be frustrated before giving the calm and cool solution that everyone can live with. It's an art :)
See what Nevcariel just posted. I think you need more practice too. :p
On another note, a lot of addons do not even support changing the profile sanely. They require a reload ui. I woudn't want a half-broken UI after changing spec, waiting for me to reload.
Of course being the feature optional and enabled explicitly by the developer, something like that happening would be the case of an addon author completely ignoring library documentation.
I'm sure spec-specific profiles are more relevant than player-specific profiles, and I'm also sure most people (if not everyone) configure their UI in a way that proves it, even if they're not aware of it.
It's obvious when you stop and think about it.
There's three kinds of addons from a configuration point of view:
Interface enhancements and other addons that are not gameplay specific (tradeskills, quests, map) are configured globally. There's no reason not to. If one of your quest database addons is so heavy you don't use it on your raiding main, then the solution is not a different configuration, it's outright disabling it. I really don't think anyone configures their bags in different ways depending on the character.
Class specific addons. Again, global configuration. There's no point enabling them unless they're pertinent, and when they are pertinent they're always configured the same. A case could be made for spec-based configuration, since a shadowpriest probably won't care about tracking his prayer of mending, but those are not very common cases.
Role or spec specific addons. Here is the bulk of combat related addons. Unitframes, raidframes, buff/debuff monitors, timers and so on. These are configured either based on role (dps, healer, tank), or on very specific spec-dependent needs.
The rare cases are not addons that would benefit from spec-based configuration, but addons that would benefit from character-based configuration, but at the same time not from spec-based configuration.
PS: Since the replies will surely mention specific cases, I'd like to remind the feature is requested as optional and needs to be explicitly enabled by the addon developer.
Persisting data is trivial. Does this mean AceDB is "useless bloat to be wedged into the library"? Should every developer could put this in the addons themselves? Well no because you also get per-character profile switching and it's implemented in a standard manner that allows things like Reflux to exist. That's why people like libraries like Ace.
Anyway back to the topic...
I can't think of any examples where you'd want per-character switching but never per-spec switching. You could take say a bag manager addon. You're unlikely to want bags managed differently per spec, but then you're unlikely to want it done differently per character either.
How useful does a feature have to be to get into AceDB? OrionShock, who is a naysayer, just came up with 5 use cases covering hundreds of mods off the top of his head.
Apart from:
- Completely benign change when switched off (by default)
- Needed by hundreds of mods in several different categories.
- Mimicks functionality in the blizzard UI (where it's always not, not an option).
What more would it take to convince people that it's core functionality?
no, it's not a troll. i'm just in awe of your logic that something this esoteric has a place in the core library. also, i prefer to actually do things instead of tilt at forum windmills, so i did you the favor of prototyping the spec profile swap code for you. share and enjoy, i hereby place it in the public domain:
local addon = LibStub("AceAddon-3.0"):NewAddon("Kettle", "AceEvent-3.0")
local defaults = {
primary = "Default",
secondary = "Default",
}
local options = {
type = 'group',
args = {
primary = {
type = 'select',
name = 'Primary',
values = addon.db.ListProfiles(),
get = function() return addon.db.global.primary end,
set = function(i,v) addon.db.global.primary = v end,
},
secondary = {
type = 'select',
name = 'Primary',
values = addon.db.ListProfiles(),
get = function() return addon.db.global.secondary end,
set = function(i,v) return addon.db.global.secondary end,
},
},
}
function addon:OnInitialize()
self.db = LibStub("AceDB-3.0"):New("KettleDB", defaults, "Default")
self.db.global = self.db.global or {}
self.db.RegisterCallback(self, "OnProfileChanged", "UpdateProfile")
self.db.RegisterCallback(self, "OnProfileCopied", "UpdateProfile")
self.db.RegisterCallback(self, "OnProfileReset", "UpdateProfile")
LibStub("AceConfigRegistry-3.0"):RegisterOptionsTable("Kettle", options)
options.args.profile = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db)
end
function addon:OnEnable()
self:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
end
function addon:ACTIVE_TALENT_GROUP_CHANGED()
local talents = GetActiveTalentGroup() == 1 and "primary" or "secondary"
self.db:SetProfile(nil, self.db.global[talents])
end
function addon:UpdateProfile()
print("pot, meet kettle")
end
What *might* be useful, is the ability to merge profiles together, to simulate inheritance.
For example, I would like to merge the character profile Sylvanaar with the class profile Druid, and refer to the result as 'profile' (including merging the defaults - that's why ace-db would need to be involved)
Per-spec, that opens the door to all the cases that outfitter handles - but it would also be quite useful to have all my "healer" mode UI crap go away when i changed specs.
I can see why you wouldnt want it as a profile, but, i dont see why you couldn't alias .1 and .2 in your earlier example as .spec (in the ace-db metatable), so there is a consistant way to refer to settings "for the current spec"
The problem with all of the comments to the effect that "any author who isn't a moron can easily implement this himself" is that many authors simply won't do it, either because they don't want to put in the five minutes it would take to do it, or because they don't personally need it for their class or spec and don't think anyone else should need it either.
For one example, Auracle is a customizable debuff monitor. My restoration shaman has absolutely no use for debuff monitoring, while for my elemental secondary spec, I do like to track my own Flame Shock. Auracle does not offer any way to use separate profiles per spec, so I have to remember to manually open the configuration, navigate to the profile sub-panel, and switch to the other profile each time I switch specs. Frequently, I forget to do this, and end up with a huge unwanted "OMG FLAME SHOCK IS MISSING!!1" icon in the middle of my screen while healing, or realize halfway through Malygos when my Lava Burst fails to crit that I let my Flame Shock fall off because my Flame Shock tracker wasn't up. The author of Auracle has stated several times, in response to user requests, that he has no plans to add spec-based profile switching. Why? I have no idea. But if spec support were in AceDB, this wouldn't be a problem. He wouldn't have to want to add it, or spend time adding it. It would just be there.
Other addons that I can think of off the top of my head where I would love to have spec-based profile switching include:
Grid - I can't even dispel the same things between specs
BigWigs - while healing I don't need to see most alerts for most bosses, but I do need to see them while DPSing
Omen - I don't need to worry about threat while healing
RatingBuster - I care about different stats for different specs
The problem with "add it to Reflux!" is that not everyone has or wants Reflux. It's pretty silly to ask hundreds of thousands of users to go download an extra addon to get the same functionality that's present in the default UI, when it could be added to the majority of popular addons simply by adding a few lines of code to commonly used libraries.
This isn't a "rights of authors vs. demands of users" argument either. As an author, if I were in charge of AceDB/AceDBOptions, I would see no problem with adding support for dual specs. As a user, I am annoyed on a daily basis by dozen addons that are too stupid to notice when I switch specs. In my view, there is no "vs." because my conclusion from both viewpoints is the same.
As for the "not all addons support switching profiles without reloading the UI", I'm not even sure how you can call that an argument. That's a problem with those addons; there is absolutely nothing that cannot be changed without a UI reload. If changing profiles requires changing something that can't be done in combat, then if the user switches profiles while in combat, the addon should queue the switch until combat ends. If an addon isn't doing that (historically, PitBull has been a major offender in this category), I would call that a bug in that addon and a failing on the part of its author(s), not an argument against adding a useful feature to AceDB.
And finally, to rebut the argument that "most addons don't need spec switching", that's true, but most addons don't need profiles at all, yet almost all addons that use an Ace3 library support profiles. Some even force profiles on the user by defaulting to character-specific profiles, and a few of those don't even allow the user to switch away from character-specific profiles. If you're the author of an addon that uses AceDB and defaults to character-specific profiles, you have almost certainly have zero room to argue against adding spec awareness to AceDB. :p
Consider something thats not even related to the Characters skills, like a crafting addon with individual filters and whatnot, or a quest addon that stores your progress. Its certainly set for storing per-character data, but it doesnt care about your spec at all.
Need more examples? =)
The keyword is "per-character data". That's not per character configuration profiles.
Are you suggesting you configure your crafting and quest addons differently for each character?
I too cannot think of any example where per character profiles would make sense, without per spec profiles making sense too, especially when considering you can enable/disable addons on a per character basis.
Are you suggesting you configure your crafting and quest addons differently for each character?
Sure, because my characters know different professions, i need different configs :)
I found another example for you:
Outfitter/Itemrack/whateva:
Different chars have different sets, yet the set config stays the same for a different spec, you just equip another set, but you still want them all available :)
On the topic of implementing this:
I'm still opposed, and thats unlikely to change. Find some of the other Ace3 Devs and convince them to support the idea, and we'll consider doing it.
I can tell you one thing, though. IF it is ever implemented, it will be purely optional, that means the addon dev has to explictly allow/enable it for his addon. Which would be about the same amount of work as including a new library that solves this problem. So i don't see why you just don't create one, anyway.
Maybe. He didn't mention useful bloat...
/duck
/hide
Right, but that requires every addon author to write code to do the same thing, and would result in many addons having many different ways for users to do the same thing, which is the kind of thing that annoys the crap out of users, myself included. It also requires that addon authors write it... out of the 200 or so addons I use, only one currently offers a way to switch between profiles when I switch between specs, and its (non-AceDB) profile system is unintuitive and frustrating. The authors of several other addons which really need some kind of spec awareness have explicitly declined to add such a feature, leaving me and everyone else with a dual spec stuck with manually switching addon profiles every time we switch specs.
I guess I'm just not seeing how the tiny, tiny overhead of adding this to AceDB and AceDBOptions is some horrible monstrous Discord-style bloat like you guys are making out to be...
However, What i think we need here is less esoteric pumping of the "Needs of the Users" and more factual Needs. I'd Be rather interested in the addons that everyone keeps saying exist that would need a per spec switch that use AceDB. Bout the only one's i know or can think of is Grid and UnitFrame Addons, and ActionBars.
Maybe TimmerBar Addons (EBB, RBM) could use it, but i don't use those differently per spec myself.
Considering one will run only 1 main UnitFrame Addon, 1 RaidFrame Addon, 1 Action Bar Addon, 1 Buff Addon and if needs, 1 Timmer Bar addon. That's 5 addons and not that much to add to them to switch things on spec change in their own addons.
I'm not sure if this is a troll but...
Persisting data is trivial. Does this mean AceDB is "useless bloat to be wedged into the library"? Should every developer could put this in the addons themselves? Well no because you also get per-character profile switching and it's implemented in a standard manner that allows things like Reflux to exist. That's why people like libraries like Ace.
Anyway back to the topic...
I can't think of any examples where you'd want per-character switching but never per-spec switching. You could take say a bag manager addon. You're unlikely to want bags managed differently per spec, but then you're unlikely to want it done differently per character either.
How useful does a feature have to be to get into AceDB? OrionShock, who is a naysayer, just came up with 5 use cases covering hundreds of mods off the top of his head.
Apart from:
- Completely benign change when switched off (by default)
- Needed by hundreds of mods in several different categories.
- Mimicks functionality in the blizzard UI (where it's always not, not an option).
What more would it take to convince people that it's core functionality?
Any Author worth their addons will be able to implement this sort of switch to be quite functional and with out much of a problem. However, for me, I do not want anything changing AT ALL between specs for ANY of my charactures. For me, it's just too much time and work to setup a different UI for each spec for each of my toons i play; F That. I want to play the game not spend 30mins + with each spec / toon reconfiguring it. I have one standard setup for all my toons and it is QUITE functional with out ever needing to change it for each spec / class i play.
I voice to not add it into the lib because each addon is coded differently. Not all addons that use aceDB use the profile system fully ( or properly ) let alone need switching based on spec.
----
Needless to say, if nev wanted a createive approach: Add to the API to enable per spec switching that an addon that does need it. That way this switch is completely Opt IN and authors can Choose to update their addon to use this. From there we'll let the users do what they do best, "Bitch about crappy mods".
Gah... do my posts gets ignored server-side ???
I'm saying "this should be optional" from the first answer I made in this thread and I have the feeling nobody got it...
you gave the actual solution too early in the thread, you got to let it breath a bit and be frustrated before giving the calm and cool solution that everyone can live with. It's an art :)
Consider something thats not even related to the Characters skills, like a crafting addon with individual filters and whatnot, or a quest addon that stores your progress. Its certainly set for storing per-character data, but it doesnt care about your spec at all.
Need more examples? =)
On another note, a lot of addons do not even support changing the profile sanely. They require a reload ui. I woudn't want a half-broken UI after changing spec, waiting for me to reload.
See what Nevcariel just posted. I think you need more practice too. :p
Of course being the feature optional and enabled explicitly by the developer, something like that happening would be the case of an addon author completely ignoring library documentation.
I'm sure spec-specific profiles are more relevant than player-specific profiles, and I'm also sure most people (if not everyone) configure their UI in a way that proves it, even if they're not aware of it.
It's obvious when you stop and think about it.
There's three kinds of addons from a configuration point of view:
Interface enhancements and other addons that are not gameplay specific (tradeskills, quests, map) are configured globally. There's no reason not to. If one of your quest database addons is so heavy you don't use it on your raiding main, then the solution is not a different configuration, it's outright disabling it. I really don't think anyone configures their bags in different ways depending on the character.
Class specific addons. Again, global configuration. There's no point enabling them unless they're pertinent, and when they are pertinent they're always configured the same. A case could be made for spec-based configuration, since a shadowpriest probably won't care about tracking his prayer of mending, but those are not very common cases.
Role or spec specific addons. Here is the bulk of combat related addons. Unitframes, raidframes, buff/debuff monitors, timers and so on. These are configured either based on role (dps, healer, tank), or on very specific spec-dependent needs.
The rare cases are not addons that would benefit from spec-based configuration, but addons that would benefit from character-based configuration, but at the same time not from spec-based configuration.
PS: Since the replies will surely mention specific cases, I'd like to remind the feature is requested as optional and needs to be explicitly enabled by the addon developer.
no, it's not a troll. i'm just in awe of your logic that something this esoteric has a place in the core library. also, i prefer to actually do things instead of tilt at forum windmills, so i did you the favor of prototyping the spec profile swap code for you. share and enjoy, i hereby place it in the public domain:
For example, I would like to merge the character profile Sylvanaar with the class profile Druid, and refer to the result as 'profile' (including merging the defaults - that's why ace-db would need to be involved)
Per-spec, that opens the door to all the cases that outfitter handles - but it would also be quite useful to have all my "healer" mode UI crap go away when i changed specs.
I can see why you wouldnt want it as a profile, but, i dont see why you couldn't alias .1 and .2 in your earlier example as .spec (in the ace-db metatable), so there is a consistant way to refer to settings "for the current spec"
For one example, Auracle is a customizable debuff monitor. My restoration shaman has absolutely no use for debuff monitoring, while for my elemental secondary spec, I do like to track my own Flame Shock. Auracle does not offer any way to use separate profiles per spec, so I have to remember to manually open the configuration, navigate to the profile sub-panel, and switch to the other profile each time I switch specs. Frequently, I forget to do this, and end up with a huge unwanted "OMG FLAME SHOCK IS MISSING!!1" icon in the middle of my screen while healing, or realize halfway through Malygos when my Lava Burst fails to crit that I let my Flame Shock fall off because my Flame Shock tracker wasn't up. The author of Auracle has stated several times, in response to user requests, that he has no plans to add spec-based profile switching. Why? I have no idea. But if spec support were in AceDB, this wouldn't be a problem. He wouldn't have to want to add it, or spend time adding it. It would just be there.
Other addons that I can think of off the top of my head where I would love to have spec-based profile switching include:
The problem with "add it to Reflux!" is that not everyone has or wants Reflux. It's pretty silly to ask hundreds of thousands of users to go download an extra addon to get the same functionality that's present in the default UI, when it could be added to the majority of popular addons simply by adding a few lines of code to commonly used libraries.
This isn't a "rights of authors vs. demands of users" argument either. As an author, if I were in charge of AceDB/AceDBOptions, I would see no problem with adding support for dual specs. As a user, I am annoyed on a daily basis by dozen addons that are too stupid to notice when I switch specs. In my view, there is no "vs." because my conclusion from both viewpoints is the same.
As for the "not all addons support switching profiles without reloading the UI", I'm not even sure how you can call that an argument. That's a problem with those addons; there is absolutely nothing that cannot be changed without a UI reload. If changing profiles requires changing something that can't be done in combat, then if the user switches profiles while in combat, the addon should queue the switch until combat ends. If an addon isn't doing that (historically, PitBull has been a major offender in this category), I would call that a bug in that addon and a failing on the part of its author(s), not an argument against adding a useful feature to AceDB.
And finally, to rebut the argument that "most addons don't need spec switching", that's true, but most addons don't need profiles at all, yet almost all addons that use an Ace3 library support profiles. Some even force profiles on the user by defaulting to character-specific profiles, and a few of those don't even allow the user to switch away from character-specific profiles. If you're the author of an addon that uses AceDB and defaults to character-specific profiles, you have almost certainly have zero room to argue against adding spec awareness to AceDB. :p
The keyword is "per-character data". That's not per character configuration profiles.
Are you suggesting you configure your crafting and quest addons differently for each character?
I too cannot think of any example where per character profiles would make sense, without per spec profiles making sense too, especially when considering you can enable/disable addons on a per character basis.
Sure, because my characters know different professions, i need different configs :)
I found another example for you:
Outfitter/Itemrack/whateva:
Different chars have different sets, yet the set config stays the same for a different spec, you just equip another set, but you still want them all available :)
On the topic of implementing this:
I'm still opposed, and thats unlikely to change. Find some of the other Ace3 Devs and convince them to support the idea, and we'll consider doing it.
I can tell you one thing, though. IF it is ever implemented, it will be purely optional, that means the addon dev has to explictly allow/enable it for his addon. Which would be about the same amount of work as including a new library that solves this problem. So i don't see why you just don't create one, anyway.