Llamar como
UI.condition_display.buttonConstructor()
Registra la dependencia UI.condition_display.buttonConstructor y luego llámala con ese nombre. Una llamada con espacio de nombres no pasa self: usa una llamada con dos puntos o pasa tú mismo el objeto.
Qué hace
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.
Argumentos
Ninguno.
Retornos
| 1 | RMConditionWidget | The new button widget, registered with the condition widget system. |
|---|
Ediciones
Las funciones auxiliares integradas se registran en todas las ediciones. Lo que cambia es la API del juego que leen; donde falta alguna, la función auxiliar recurre a una alternativa o devuelve nil con un motivo.
- No disponible en esa edición (el motivo aparece en la información emergente)
- Solo mientras estén activas las alternativas de Blizzard para API obsoletas
| API del juego | |||||
|---|---|---|---|---|---|
GameTooltip | |||||
UIParent |
Ejemplo
-- 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)Dependencias
defaultFont→UI.condition_display.defaultFont
Código fuente
UI/condition_display.lua, línea 110. Solo lectura en el juego; Duplicar crea una copia editable.
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)




