Chiamala come
UI.condition_display.buttonConstructor()
Registra la dipendenza UI.condition_display.buttonConstructor, poi chiamala con quel nome. Una chiamata con spazio dei nomi non passa self: usa una chiamata con i due punti o passa tu l'oggetto.
Cosa fa
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.
Argomenti
Nessuno.
Valori restituiti
| 1 | RMConditionWidget | The new button widget, registered with the condition widget system. |
|---|
Edizioni
Le funzioni di supporto integrate sono registrate su ogni edizione. Ciò che cambia è l'API di gioco che leggono; dove ne manca una, la funzione di supporto ripiega su un'alternativa o restituisce nil con un motivo.
- Non disponibile su quell'edizione (il motivo è nel suggerimento)
- Solo mentre sono attivi i ripieghi di Blizzard per le API deprecate
| API di gioco | |||||
|---|---|---|---|---|---|
GameTooltip | |||||
UIParent |
Esempio
-- 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)Dipendenze
defaultFont→UI.condition_display.defaultFont
Sorgente
UI/condition_display.lua, riga 110. Nel gioco è in sola lettura; Duplica crea una copia modificabile.
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)




