Appel
addon:Widget_SpellWidget(spec, editbox, value, nametoid, isvalid, update)
Disponible directement via addon ; aucune dépendance n'est nécessaire.
Ce qu'elle fait
Crée une saisie de sort avec suggestions, validation et prise en charge des liens de sort pour les widgets de condition personnalisée. Le rappel de mise à jour se charge d'enregistrer la valeur choisie ; ajoutez le widget renvoyé au parent du rappel.
Arguments
| Nom | Type | Ce qu'elle fait |
|---|---|---|
self | RMAddon | Instance de l'addon Rotation Master (implicite avec un appel par deux-points). |
spec | number | Portée de spécialisation utilisée pour résoudre les suggestions de sorts. |
editbox | string | Type de saisie de référence, comme Spec_EditBox, utilisé pour les suggestions de sorts. |
value | table | Enregistrement de valeur de condition contenant les champs spell, ranked et disabled ; mis à jour sur place. |
nametoid | function | Résolveur associant un nom de sort saisi à son ID. |
isvalid | function | Prédicat qui valide la valeur de sort proposée. |
update | function | Fonction de rappel recevant la valeur de sort validée. |
Retours
| 1 | RMConditionGroup | Groupe de champs de sort contenant une icône d'action, une saisie de référence et un contrôle de rang facultatif. |
|---|
Éditions
Les fonctions utilitaires intégrées sont enregistrées sur toutes les éditions. Ce qui diffère, c'est l'API du jeu qu'elles lisent ; quand l'une manque, la fonction utilitaire se rabat sur une alternative ou renvoie nil avec une raison.
- Indisponible sur cette édition (la raison figure dans l'infobulle)
- Uniquement tant que les solutions de repli de Blizzard pour les fonctions obsolètes sont actives
| API du jeu | |||||
|---|---|---|---|---|---|
GameTooltip |
Comment l'addon l'appelle
- N'importe quel sort disponible (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Charges de n'importe quel sort (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Temps de recharge de n'importe quel sort (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - N'importe quel sort à portée (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Temps de rechargement de n'importe quel sort (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spell_EditBox", value, - Sort de rotation de l'Assistant de combat (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spec_EditBox", value, - Suggestion de l'Assistant de combat (widget)
local spell_group = addon:Widget_SpellWidget(spec, "Spec_EditBox", value, - Sort de familier actif ou en attente (widget)
local spell_group = addon:Widget_SpellWidget((BOOKTYPE_PET or "pet"), "Spec_EditBox", value,
et 19 autres: Sort de familier disponible (widget), Charges du sort de familier (widget), Temps de recharge du sort de familier (widget), Historique des sorts de familier lancés (widget), Historique des sorts de familier lancés (temps) (widget), Sort de familier à portée (widget), Temps de rechargement du sort de familier (widget), Sort actif ou en attente (widget), Répétition automatique du sort active (widget), Sort disponible (widget), Charges du sort (widget), Temps de recharge du sort (widget), Lueur d'activation du sort (widget), Historique des sorts lancés (widget), Historique des sorts lancés (temps) (widget), Sort à portée (widget), Temps de rechargement du sort (widget), Totem spécifique présent (widget), Temps restant d'un totem spécifique (widget)
Dépendances
RANK_TIP(builtin:Conditions/common.lua:RANK_TIP)SpellData(builtin:Conditions/common.lua:SpellData)
Source
Conditions/common.lua, ligne 82. En lecture seule dans le jeu ; Dupliquer crée une copie modifiable.
Conditions.common.Widget_SpellWidget(self, spec, editbox, value, nametoid, isvalid, update)
local spell_group = addon:CreateConditionGroup()
spell_group:SetLayout('RM-SpellField')
local rankChoice
local spell = addon:CreateSpellEditBox(editbox,value.spell)
local initialSpell=type(value.spell)=="string" and SpellData:GetSpellId(value.spell) or value.spell
local spellIcon = addon:CreateSpellActionIcon(spec == (BOOKTYPE_PET or "pet") and "pet" or "spell",initialSpell,isvalid)
spellIcon:SetWidth(44)
spellIcon:SetHeight(44)
spellIcon:SetText(value.spell)
spellIcon:SetCallback("OnEnterPressed", function(_, _, v)
v = tonumber(v)
if v and isvalid(v) then
value.spell = v
spellIcon:SetText(v)
spell:SetText(SpellData:SpellName(value.spell, not value.ranked))
if GameTooltip:IsOwned(spellIcon.frame) and GameTooltip:IsVisible() then
GameTooltip:SetHyperlink("spell:" .. v)
end
else
value.spell = nil
spellIcon:SetText(nil)
spell:SetText(nil)
if GameTooltip:IsOwned(spellIcon.frame) and GameTooltip:IsVisible() then
GameTooltip:Hide()
end
end
update()
end)
spellIcon:SetCallback("OnEnter", function()
if value.spell then
GameTooltip:SetOwner(spellIcon.frame, "ANCHOR_BOTTOMRIGHT", 3)
GameTooltip:SetHyperlink("spell:" .. value.spell)
end
end)
spellIcon:SetCallback("OnLeave", function()
if GameTooltip:IsOwned(spellIcon.frame) then
GameTooltip:Hide()
end
end)
spellIcon:SetDisabled(value.disabled)
spell_group:AddChild(spellIcon)
if addon:ClientHasSpellRanks() and spec ~= (BOOKTYPE_PET or "pet") then
local nr_button = addon:CreateConditionCheckBox()
nr_button:SetLabel(L["Use this exact spell rank"])
nr_button.button.tooltip = RANK_TIP
nr_button:SetValue(value.ranked or false)
nr_button:SetCallback("OnValueChanged", function(_, _, val)
value.ranked = val
spell:SetUserData("norank", not val)
spell:SetText(value.spell and SpellData:SpellName(value.spell, not value.ranked))
update()
end)
nr_button:SetDisabled(value.disabled)
rankChoice=nr_button
end
spell:SetFullWidth(true)
spell:SetLabel('')
spell:SetText(value.spell and SpellData:SpellName(value.spell, not value.ranked))
spell:SetUserData("norank", not value.ranked)
spell:SetUserData("spec", spec)
spell:SetCallback("OnEnterPressed", function(_, _, v)
if not addon.isint(v) then
v = nametoid(v)
else
v = tonumber(v)
end
if isvalid(v) then
value.spell = v
spell:SetText(SpellData:SpellName(value.spell, not value.ranked))
else
value.spell = nil
spell:SetText(nil)
end
spellIcon:SetText(value.spell)
update()
end)
spell:SetDisabled(value.disabled)
spell_group:AddChild(spell)
if rankChoice then
rankChoice.frame.GetFontString=function() return rankChoice.button:GetFontString() end
spell_group:AddChild(rankChoice)
end
return spell_group




