Справочник › Справочник функций › Conditions

Conditions.common.Widget_SpellWidget

общедоступный

Как вызывать

addon:Widget_SpellWidget(spec, editbox, value, nametoid, isvalid, update)

Доступен напрямую через addon; зависимость не нужна.

Что делает

Создать поле ввода заклинания с подсказками, проверкой и поддержкой ссылок на заклинания для виджетов пользовательских условий. Сохранение выбранного значения выполняет обратный вызов обновления; добавьте возвращённый виджет к родителю обратного вызова.

Аргументы

ИмяТипЧто делает
selfRMAddonЭкземпляр аддона Rotation Master (неявно при вызове через двоеточие).
specnumberОбласть специализации для определения подсказок заклинаний.
editboxstringВид входного элемента-образца, например Spec_EditBox, используемый для подсказок заклинаний.
valuetableЗапись значения условия с полями spell, ranked и disabled; обновляется на месте.
nametoidfunctionСопоставитель набранного названия заклинания и его ID.
isvalidfunctionПредикат, проверяющий предлагаемое значение заклинания.
updatefunctionОбратный вызов, получающий подтверждённое значение заклинания.

Возвращает

1RMConditionGroupГруппа поля заклинания с иконкой действия, полем ссылки и необязательным выбором ранга.

Издания

Встроенные помощники регистрируются во всех изданиях. Различается игровой API, который они читают; если нужного API нет, помощник использует запасной вариант или возвращает nil с причиной.

  • Недоступно в этом издании (причина — во всплывающей подсказке)
  • Только пока включены запасные реализации Blizzard для устаревших функций
Игровой APIClassic EraTBC AnniversaryClassic ProgressionForeverRetail
GameTooltipClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Как его вызывает аддон

и ещё 19: Заклинание питомца доступно (widget), Заряды заклинания питомца (widget), Восстановление заклинания питомца (widget), История применений питомца (widget), Время в истории применений питомца (widget), Заклинание питомца в зоне досягаемости (widget), Время перезарядки заклинания питомца (widget), Заклинание активно или ожидает (widget), Автоповтор заклинания активен (widget), Заклинание доступно (widget), Заряды заклинания (widget), Восстановление заклинания (widget), Свечение эффекта заклинания (widget), История применений (widget), Время в истории применений (widget), Заклинание в зоне досягаемости (widget), Время перезарядки заклинания (widget), Определённый тотем установлен (widget), Оставшееся время определённого тотема (widget)

Зависимости

Исходный код

Conditions/common.lua, строка 82. В игре только для чтения; «Дублировать» создаёт редактируемую копию.

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

Назад: Справочник функций