Files
wow_Meta/ui/UIObject.lua
2025-05-04 22:02:08 +02:00

121 lines
6.2 KiB
Lua

---@meta
---UIObject is an abstract UI object type that is used to group together methods that are common to all user interface types. All of the various user interface elements in World of Warcraft are derived from UIObject.
---@class UIObject
UIObject = {
---Returns the widget object's name
---@param self UIObject
---@return string Name of the object
GetName = function(self) end,
---Returns the widget object's widget type
---@param self UIObject
---@return string Name of the object's type (e.g. Frame, Button, FontString, etc.)
GetObjectType = function(self) end,
--- Returns whether the object belongs to a given widget type
---@param self UIObject
---@param type string Name of the object's type (e.g. Frame, Button, FontString, etc.)
---@return number|nil 1 if the object belongs to the given type (or a subtype thereof); otherwise nil
IsObjectType = function(self, type) end,
--- Gets the height and width, respectively, of an object.
---@param self Frame
---@return number # width The width of the frame.
GetWidth = function(self) end,
--- Gets the height of the frame.
---@param self Frame
---@return number # height The height of the frame.
GetHeight = function(self) end,
--- Sets the parent of the region.
--- @param self Frame
--- @param parent Frame? Reference to the parent widget. Unsets the parent if omitted.
--- Children inherit alpha and scale unless disallowed with SetIgnoreParentAlpha and SetIgnoreParentScale.
--- @example
--- local f = CreateFrame("Frame")
--- f:SetScale(0.5)
--- f:SetParent(UIParent)
--- print(UIParent:GetScale()) -- 0.63999998569489
--- print(f:GetScale(), f:GetEffectiveScale()) -- 0.5, 0.31999999284744
SetParent = function(self, parent) end,
--- Sets the widget script handler.
--- @param self Frame
--- @param scriptTypeName string Name of the script type, for example "OnShow".
--- @param script function|nil The script handler to call or explicitly nil to remove any existing script.
--- Setting a script will remove any scripts that were previously hooked with HookScript.
--- @example
--- local function OnEvent(self, event)
--- print(event)
--- end
--- local f = CreateFrame("Frame")
--- f:RegisterEvent("PLAYER_STARTED_MOVING")
--- f:SetScript("OnEvent", OnEvent)
SetScript = function(self, scriptTypeName, script) end,
--- Sets the size scaling of the region.
--- @param self Frame
--- @param scale number The scale of the region. Must be greater than 0.
--- @example
--- MinimapCluster:SetScale(1.2); -- Scales MinimapCluster and its child regions to 120%
SetScale = function(self, scale) end,
---Returns whether the mouse cursor is over the given region. This function replaces the previous MouseIsOver FrameXML function.
---
---If provided, the arguments are treated as offsets by which to adjust the hit rectangle when comparing it to the mouse. They are in screen coordinates; positive offsets move an edge right or up, negative values move it left or down. No frame edges are actually moved. For example:
---
--- if button:IsMouseOver(2, -2, -2, 2) then
---
---will return true if the mouse is within 2 pixels of the given frame.
---@overload fun(self: Frame): boolean
---@overload fun(self: Frame, topOffset: number): boolean
---@overload fun(self: Frame, topOffset: number, leftOffset: number): boolean
---@overload fun(self: Frame, topOffset: number, leftOffset: number, bottomOffset: number): boolean
---@overload fun(self: Frame, topOffset: number, leftOffset: number, bottomOffset: number, rightOffset: number): boolean
---@param self Frame
---@param topOffset number The amount by which to displace the top edge of the test rectangle
---@param leftOffset number The amount by which to displace the left edge of the test rectangle
---@param bottomOffset number The amount by which to displace the bottom edge of the test rectangle
---@param rightOffset number The amount by which to displace the right edge of the test rectangle
---@return boolean isOver true if the mouse is over the region; otherwise false
IsMouseOver = function(self, topOffset, leftOffset, bottomOffset, rightOffset) end,
---Sets the width of the frame.
---@param self Frame
---@param width number The width of the frame
SetWidth = function(self, width) end,
---Sets the height of the frame.
---@param self Frame
---@param height number The height of the frame
SetHeight = function(self, height) end,
---Sets the point of the frame.
---This method sets an attachment point of a UI component.
---@overload fun(self: Frame, point: string): nil
---@overload fun(self: Frame, point: string, relativeTo: Frame): nil
---@overload fun(self: Frame, point: string, relativeTo: Frame, relativePoint: string): nil
---@overload fun(self: Frame, point: string, relativeTo: Frame, relativePoint: string, offsetX: number): nil
---@overload fun(self: Frame, point: string, relativeTo: Frame, relativePoint: string, offsetX: number, offsetY: number): nil
---@param self Frame
---@param point string The point of the frame to adjust based on the anchor.
---@param relativeTo Frame The frame to anchor to (defaults to parent if omitted).
---@param relativePoint string The point of the relative frame (defaults to point if omitted).
---@param offsetX number The x-offset (defaults to 0 if not specified).
---@param offsetY number The y-offset (defaults to 0 if not specified).
SetPoint = function(self, point, relativeTo, relativePoint, offsetX, offsetY) end,
---Unregisters the frame from any events for which it is registered.
---@param self Frame
UnregisterAllEvents = function(self) end,
---Unregisters the frame for an event. Once unregistered, the frame's OnEvent script handler will not be called for that event.
---
---Unregistering from notifications for an event can be useful for improving addon performance at times when it's not necessary to process the event. For example, a frame which monitors target health does not need to receive the UNIT_HEALTH event while the player has no target. An addon that sorts the contents of the player's bags can register for the BAG_UPDATE event to keep track of when items are picked up, but unregister from the event while it performs its sorting.
---@param self Frame
---@param event string Name of an event
UnregisterEvent = function(self, event) end,
}