Referenz › Funktionsreferenz › UI

UI.condition_display.buttonConstructor

Abhängigkeit

Aufruf als

UI.condition_display.buttonConstructor()

Erfassen Sie die Abhängigkeit UI.condition_display.buttonConstructor und rufen Sie sie dann unter diesem Namen auf. Ein Aufruf über den Namensraum übergibt kein self: Verwenden Sie einen Doppelpunkt-Aufruf oder übergeben Sie das Objekt selbst.

Was sie bewirkt

Constructs a new RM-ConditionButton widget around a 200-pixel workbench button, with SetText, SetAutoWidth and SetDisabled, firing OnClick (with the mouse button), OnEnter and OnLeave only while its lease is live. It returns the registered but not yet acquired widget; addon:CreateConditionButton passes it to addon:AcquireConditionWidget.

Argumente

Keine.

Rückgabewerte

1RMConditionWidgetThe new button widget, registered with the condition widget system.

Editionen

Integrierte Hilfsfunktionen werden auf jeder Edition registriert. Unterschiedlich ist die Spiel-API, die sie lesen; fehlt eine, weicht die Hilfsfunktion aus oder gibt nil mit einem Grund zurück.

  • Auf dieser Edition nicht verfügbar (den Grund nennt der Tooltip)
  • Nur, solange Blizzards Ersatz für veraltete Funktionen aktiv ist
Spiel-APIClassic EraTBC AnniversaryClassic ProgressionForeverRetail
GameTooltipClassic EraTBC AnniversaryClassic ProgressionForeverRetail
UIParentClassic EraTBC AnniversaryClassic ProgressionForeverRetail

Beispiel

-- needs the dependency UI.condition_display.buttonConstructor
local button = addon:AcquireConditionWidget("RM-ConditionButton", UI.condition_display.buttonConstructor)
button:SetText(L["Clear"])
button:SetAutoWidth(true)
button:SetCallback("OnClick", function() value.spell = nil end)
parent:AddChild(button)

Abhängigkeiten

Quelle

UI/condition_display.lua, Zeile 110. Im Spiel schreibgeschützt; Duplizieren erstellt eine bearbeitbare Kopie.

UI.condition_display.buttonConstructor()
    local w={type='RM-ConditionButton',text='',disabled=false,autoWidth=false}
    local frame=addon:CreateWorkbenchButton(UIParent,'',200);w.frame=frame
    local label=frame:GetFontString();w.label=label;label:SetWordWrap(false)
    local enter,leave=frame:GetScript('OnEnter'),frame:GetScript('OnLeave')
    function w:OnWidthSet(width) label:SetWidth(math.max(1,width-12)) end
    function w:SetText(text)
        self.text=text==nil and '' or tostring(text);frame:SetText(self.text);label:SetText(self.text)
        if self.autoWidth then self:SetWidth(label:GetStringWidth()+30) end
    end
    function w:SetAutoWidth(value)
        self.autoWidth=value==true
        if self.autoWidth then self:SetWidth(label:GetStringWidth()+30) end
    end
    function w:SetDisabled(value) self.disabled=value==true;if self.disabled then frame:Disable() else frame:Enable() end end
    function w:OnAcquire()
        self:SetAutoWidth(false);self:SetWidth(200);self:SetHeight(24);self:SetDisabled(false);self:SetText('')
        label:SetFontObject(defaultFont());frame:SetSelected(false);frame.tooltip=nil;frame:RegisterForClicks('LeftButtonUp')
        local lease=self.rmLease
        local function live() return w.rmActive and w.rmLease==lease and not w:IsReleasing() end
        addon:SetUIScript(frame,'OnClick',function(_,button) if live() and not w.disabled then w:Fire('OnClick',button) end end)
        addon:SetUIScript(frame,'OnEnter',function() if live() then if enter then enter(frame) end;w:Fire('OnEnter') end end)
        addon:SetUIScript(frame,'OnLeave',function() if live() then if leave then leave(frame) end;w:Fire('OnLeave') end end)
    end
    function w:OnRelease()
        if GameTooltip and GameTooltip:IsOwned(frame) then GameTooltip:Hide() end
        self.text='';frame:SetText('');label:SetText('');frame.tooltip=nil
    end
    return addon:RegisterConditionWidget(w)

Zurück zu Funktionsreferenz