Widget API

Widgets (or frames) are user interface elements. Widget scripts allow you to respond to user interaction by e.g. clicking a button. Frames drawn on the UI can be inspected with /fstack and /tinspect or with debug addons. Widgets are created from Lua or from XML, which supports creating virtual templates other frames can inherit from.

For convenience the list of widget types can be arranged in a hierarchy of classes, grouping widgets by inherited methods.

AnimationGroup
AnimationGroups (inherits from ParentedObject and ScriptObject, created with ) control how various animations are actually applied to a region.
 * AnimationGroup:CreateAnimation(animationType, [name[,inheritsFrom]]) - Create and return an Animation as a child of this group.
 * AnimationGroup:Finish - Notify this group to stop playing once the current loop cycle is done. Does nothing if this group is not playing.
 * AnimationGroup:GetAnimations
 * AnimationGroup:GetDuration - Gets the total duration across all child Animations that the group will take to complete one loop cycle.
 * AnimationGroup:GetLoopState - Gets the current loop state of the group. Output is [NONE, FORWARD, or REVERSE].
 * AnimationGroup:GetLooping - Gets the type of looping for the group.
 * AnimationGroup:GetProgress - Returns the progress of this animation as a unit value [0,1].
 * AnimationGroup:IsDone - Returns true if the group has finished playing.
 * AnimationGroup:IsPaused - Returns true if the group is paused.
 * AnimationGroup:IsPendingFinish
 * AnimationGroup:IsPlaying - Returns true if the group is playing.
 * AnimationGroup:IsSetToFinalAlpha
 * AnimationGroup:Pause - Pause the animations in this group.
 * AnimationGroup:Play - Start playing the animations in this group.
 * AnimationGroup:Restart
 * AnimationGroup:SetLooping(loopType) - Sets the type of looping for the group. Input is [NONE, REPEAT, or BOUNCE].
 * AnimationGroup:SetPlaying(play)
 * AnimationGroup:SetToFinalAlpha - Apply the animations final resulting alpha to all animating regions.
 * AnimationGroup:Stop - Stop all animations in this group.

Alpha
This animation changes the alpha value of its parent region.

Alpha has all the methods from Animation, plus the following:
 * Alpha:GetFromAlpha - Gets the start value that the alpha of this animation's parent Region changes by.
 * Alpha:GetToAlpha - Gets the end value that the alpha of this animation's parent Region changes by.
 * Alpha:SetFromAlpha(fromAlpha) - Sets the start value from which the alpha of this animation's parent Region changes by.
 * Alpha:SetToAlpha(toAlpha) - Sets the end value from which the alpha of this animation's parent Region changes by.

Scale
This is an affine transformation that scales a parent Region about an origin. The scale can be non-uniform.

Scale has all the methods from Animation, plus the following:
 * Scale:GetFromScale - Gets the X scalar and the Y scalar that the animation will scale from if set.
 * Scale:GetOrigin - Gets the point, X offset, and Y offset of the animation's origin of rotation for its parent Region.
 * Scale:GetScale - Gets the X scalar and the Y scalar that the animation's parent Region should scale by.
 * Scale:GetToScale - Gets the X scalar and the Y scalar that the animation will scale to if set.
 * Scale:SetFromScale(x, y) - Sets the X scalar and the Y scalar that the animation will scale from.
 * Scale:SetOrigin(point, offsetX, offsetY) - Sets the animation's origin of rotation for its parent Region.
 * Scale:SetScale(x, y) - Sets the X scalar and the Y scalar that the animation's parent Region should scale by.
 * Scale:SetToScale(x, y) - Sets the X scalar and the Y scalar that the animation will scale to.

LineScale
LineScale has the same methods as Scale.

Translation
This is an affine transformation that moves a parent Region by an offset. Translation has all the methods from Animation, plus the following:
 * Translation:GetOffset - Gets the offset that the animation's parent Region would travel.
 * Translation:SetOffset(x, y) - Sets the offset that the animation's parent Region would travel.

LineTranslation
LineTranslation has the same methods as Translation.

Path
This is a set of translations, which lets you move a frame smoothly along a path.

Path has all the methods from Animation, plus the following:
 * Path:CreateControlPoint([name [, template [, order]]]) - Creates a new control point.
 * Path:GetControlPoints - Gets the control points of the Path.
 * Path:GetCurve - Gets the current curve type.
 * Path:GetMaxOrder - Gets the maximum order of the Path.
 * Path:SetCurve(curveType) - Sets the curve type, which can be "SMOOTH" or "NONE".

Rotation
This is an affine transformation that rotates a parent Region about an origin.

Rotation has all the methods from Animation, plus the following:
 * Rotation:GetDegrees - Gets the amount of degrees that the animation's parent Region would rotate.
 * Rotation:GetOrigin - Gets the point, X offset, and Y offset of the animation's origin of rotation for its parent Region.
 * Rotation:GetRadians - Gets the amount of radians that the animation's parent Region would travel.
 * Rotation:SetDegrees(degrees) - Sets the amount of degrees that the animation's parent Region would rotate.
 * Rotation:SetOrigin(point, offsetX, offsetY) - Sets the animation's origin of rotation for its parent Region.
 * Rotation:SetRadians(radians) - Sets the amount of radians that the animation's parent Region would travel.

TextureCoordTranslation
TextureCoordTranslation has all the methods from Animation but does not have any other methods.

ControlPoint
ControlPoint can be created from Path:CreateControlPoint and has all the methods from UIObject, plus the following:
 * ControlPoint:GetOffset
 * ControlPoint:GetOrder
 * ControlPoint:SetOffset
 * ControlPoint:SetOrder(order)
 * ControlPoint:SetParent

MaskTexture
MaskTexture has the same methods as except the texture mask API. It is created from.

Line
The Region methods regarding Points (SetAllPoints, SetPoint, etc.) and Size (SetSize, SetWidth, etc.) are not included in this widget, thus those attributes for a Line must be done solely through the below listed methods. Edge methods are still available. Line can be created from Frame:CreateLine and has almost all the methods from Texture, plus the following:
 * Line:GetEndPoint - Gets the point at which the line ends.
 * Line:GetStartPoint - Gets the point from where the line starts.
 * Line:GetThickness - Gets this line's thickness.
 * Line:SetEndPoint(relativePoint [,relativeFrame or relativeObject [, xOfs [, yOfs]]]) - Sets the point at which the line ends.
 * Line:SetStartPoint(relativePoint [,relativeFrame or relativeObject [, xOfs [, yOfs]]]) - Sets the point from where the line starts.
 * Line:SetThickness(thickness) - Sets this line's thickness.

Browser
Browser has all the methods from Frame, plus the following:
 * Browser:ClearFocus
 * Browser:CopyExternalLink
 * Browser:DeleteCookies
 * Browser:NavigateBack
 * Browser:NavigateForward
 * Browser:NavigateHome(tag)
 * Browser:NavigateReload
 * Browser:NavigateStop
 * Browser:OpenExternalLink
 * Browser:OpenTicket(index)
 * Browser:SetFocus
 * Browser:SetZoom(zoom)

ItemButton
ItemButton is an intrinsic frame.

It has all the methods from Button and ItemButtonMixin.

Checkout
Checkout has all the methods from Frame, plus the following:
 * Checkout:CancelOpenCheckout
 * Checkout:ClearFocus
 * Checkout:CloseCheckout
 * Checkout:CopyExternalLink
 * Checkout:OpenCheckout
 * Checkout:OpenExternalLink
 * Checkout:SetFocus
 * Checkout:SetZoom
 * REMOVED (8.2.0) Checkout:ClearRenderSize
 * REMOVED (8.2.0) Checkout:SetRenderSize

ColorSelect
ColorSelect has all the methods from Frame, plus the following:
 * ColorSelect:GetColorHSV - Get the HSV values of the selected color.
 * ColorSelect:GetColorRGB - Get the RGB values of the selected color.
 * ColorSelect:GetColorValueTexture - Get the texture used to show color value - new in 1.11.
 * ColorSelect:GetColorValueThumbTexture - Get the texture for the color value thumb - New in 1.11.
 * ColorSelect:GetColorWheelTexture - Get the texture for the color wheel - New in 1.11.
 * ColorSelect:GetColorWheelThumbTexture - Get the texture for the color wheel thumb - New in 1.11.
 * ColorSelect:SetColorHSV(h, s, v) - Set to a specific HSV color.
 * ColorSelect:SetColorRGB(r, g, b) - Set to a specific RGB color.
 * ColorSelect:SetColorValueTexture(texturebool) - Set the texture used to show color value - New in 1.11.
 * ColorSelect:SetColorValueThumbTexture(texturebool) - Set the texture for the color value thumb - New in 1.11.
 * ColorSelect:SetColorWheelTexture(texturebool) - Set the texture for the color wheel - New in 1.11.
 * ColorSelect:SetColorWheelThumbTexture(texturebool) - Set the texture for the color wheel thumb - New in 1.11.

EditBox
EditBox has all the methods from Frame and FontInstance, plus the following:
 * EditBox:AddHistoryLine(text) - Add text to the edit history.
 * EditBox:ClearFocus
 * EditBox:ClearHistory
 * EditBox:Disable
 * EditBox:Enable
 * EditBox:GetAltArrowKeyMode - Return whether only alt+arrow keys work for navigating the edit box, not arrow keys alone.
 * EditBox:GetBlinkSpeed - Gets the blink speed of the EditBox in seconds - New in 1.11.
 * EditBox:GetCursorPosition - Gets the position of the cursor inside the EditBox - New in 2.3.
 * EditBox:GetDisplayText
 * EditBox:GetHighlightColor
 * EditBox:GetHistoryLines - Get the number of history lines for this edit box
 * EditBox:GetInputLanguage - Get the input language (locale based not in-game)
 * EditBox:GetMaxBytes - Gets the maximum number bytes allowed in the EditBox - New in 1.11.
 * EditBox:GetMaxLetters - Gets the maximum number of letters allowed in the EditBox - New in 1.11.
 * EditBox:GetNumLetters - Gets the number of letters in the box.
 * EditBox:GetNumber
 * EditBox:GetText - Get the current text contained in the edit box.
 * EditBox:GetTextInsets - Gets the text display insets for the EditBox - New in 1.11.
 * EditBox:GetUTF8CursorPosition
 * EditBox:GetVisibleTextByteLimit
 * EditBox:HasFocus - Returns whether the edit box is currently being edited (has edit focus).
 * EditBox:HighlightText([startPos, endPos]) - Set the highlight to all or some of the edit box text.
 * EditBox:Insert(text) - Insert text into the edit box.
 * EditBox:IsAutoFocus - Determine if the EditBox has autofocus enabled - New in 1.11.
 * EditBox:IsCountInvisibleLetters
 * EditBox:IsEnabled
 * EditBox:IsInIMECompositionMode
 * EditBox:IsMultiLine - Determine if the EditBox accepts multiple lines - New in 1.11.
 * EditBox:IsNumeric - Determine if the EditBox only accepts numeric input - New in 1.11.
 * EditBox:IsPassword - Determine if the EditBox performs password masking - New in 1.11.
 * EditBox:IsSecureText
 * EditBox:SetAltArrowKeyMode(enable) - Make only alt+arrow keys work for navigating the edit box, not arrow keys alone.
 * EditBox:SetAutoFocus(state) - Set whether or not the editbox will attempt to get input focus when it gets shown (default: yes) - New in 1.11.
 * EditBox:SetBlinkSpeed(speed)
 * EditBox:SetCountInvisibleLetters
 * EditBox:SetCursorPosition(position) - Set the position of the cursor within the EditBox - New in 2.3.
 * EditBox:SetEnabled
 * EditBox:SetFocus - Move input focus (the cursor) to this editbox
 * EditBox:SetHighlightColor
 * EditBox:SetHistoryLines(numLines) - Set the number of history lines to remember.
 * EditBox:SetMaxBytes(maxBytes) - Set the maximum byte size for entered text.
 * EditBox:SetMaxLetters(maxLetters) - Set the maximum number of letters for entered text.
 * EditBox:SetMultiLine(state) - Set the EditBox's multi-line state - New in 1.11.
 * EditBox:SetNumber(number)
 * EditBox:SetNumeric(state) - Set if the EditBox only accepts numeric input - New in 1.11.
 * EditBox:SetPassword(state) - Set the EditBox's password masking state - New in 1.11.
 * EditBox:SetSecureText
 * EditBox:SetSecurityDisablePaste
 * EditBox:SetSecurityDisableSetText
 * EditBox:SetText(text) - Set the text contained in the edit box.
 * EditBox:SetTextInsets(l, r, t, b)
 * EditBox:SetVisibleTextByteLimit(maxVisibleBytes)
 * EditBox:ToggleInputLanguage

FogOfWarFrame
FogOfWarFrame has all the methods from Frame, plus the following:
 * FogOfWarFrame:GetFogOfWarBackgroundAtlas
 * FogOfWarFrame:GetFogOfWarBackgroundTexture
 * FogOfWarFrame:GetFogOfWarMaskAtlas
 * FogOfWarFrame:GetFogOfWarMaskTexture
 * FogOfWarFrame:GetMaskScalar
 * FogOfWarFrame:GetUiMapID
 * FogOfWarFrame:SetFogOfWarBackgroundAtlas(atlasName)
 * FogOfWarFrame:SetFogOfWarBackgroundTexture(textureName or FileDataID, [horizontalTile, verticalTile])
 * FogOfWarFrame:SetFogOfWarMaskAtlas(atlasName)
 * FogOfWarFrame:SetFogOfWarMaskTexture(textureName)
 * FogOfWarFrame:SetMaskScalar(mapID)
 * FogOfWarFrame:SetUiMapID

GameTooltip
The tooltip automatically resizes itself when its Region:Show method is called.

GameTooltip has all the methods from Frame, plus the following:
 * GameTooltip:AddAtlas(atlas [, minx, maxx, miny, maxy] or [, textureInfoTable])
 * GameTooltip:AddDoubleLine(textL, textR, rL, gL, bL, rR, gR, bR)
 * GameTooltip:AddFontStrings(leftstring, rightstring) - Dynamically expands the size of a tooltip - New in 1.11.
 * GameTooltip:AddLine(tooltipText [, r, g, b [, wrapText]]) - Appends the new line to the tooltip.
 * GameTooltip:AddSpellByID(spellID)
 * GameTooltip:AddTexture(texture) - Add a texture to the last line added.
 * GameTooltip:AdvanceSecondaryCompareItem
 * GameTooltip:AppendText(text) - Append text to the end of the first line of the tooltip.
 * GameTooltip:ClearLines - Clear all lines of tooltip (both left and right ones)
 * GameTooltip:CopyTooltip
 * GameTooltip:FadeOut
 * GameTooltip:GetAnchorType - Returns the current anchoring type.
 * GameTooltip:GetAzeritePowerID
 * GameTooltip:GetItem - Returns name, link.
 * GameTooltip:GetMinimumWidth
 * GameTooltip:GetOwner - Returns owner frame, anchor.
 * GameTooltip:GetPadding
 * GameTooltip:GetSpell - Returns name, rank, id.
 * GameTooltip:GetUnit - Returns unit name, unit id.
 * GameTooltip:IsEquippedItem
 * GameTooltip:IsOwned(frame)
 * GameTooltip:IsUnit(unit) - Returns bool.
 * GameTooltip:NumLines - Get the number of lines in the tooltip.
 * GameTooltip:ResetSecondaryCompareItem
 * GameTooltip:SetAchievementByID(id)
 * GameTooltip:SetAction(slot) - Shows the tooltip for the specified action button.
 * GameTooltip:SetAllowShowWithNoLines
 * GameTooltip:SetAnchorType(anchorType [,Xoffset] [,Yoffset])
 * GameTooltip:SetArtifactItem
 * GameTooltip:SetArtifactPowerByID
 * GameTooltip:SetAzeriteEssence(essenceID)
 * GameTooltip:SetAzeriteEssenceSlot(slot)
 * GameTooltip:SetAzeritePower(itemID, itemLevel, powerID[, owningItemLink])
 * GameTooltip:SetBackpackToken(id)
 * GameTooltip:SetBagItem(bag, slot)
 * GameTooltip:SetBagItemChild
 * GameTooltip:SetBuybackItem(slot)
 * GameTooltip:SetCompanionPet
 * GameTooltip:SetCompareAzeritePower(itemID, itemLevel, powerID[, owningItemLink])
 * GameTooltip:SetCompareItem(shoppingTooltipTwo, primaryMouseover)
 * GameTooltip:SetConduit(id, rank)
 * GameTooltip:SetCurrencyByID(id)
 * GameTooltip:SetCurrencyToken(tokenId) - Shows the tooltip for the specified token
 * GameTooltip:SetCurrencyTokenByID(currencyID)
 * GameTooltip:SetEquipmentSet(name) - Shows details for the equipment manager set identified by "name".
 * GameTooltip:SetExistingSocketGem(index, [toDestroy])
 * GameTooltip:SetFrameStack(showhidden) - Shows the mouseover frame stack, used for debugging.
 * GameTooltip:SetGuildBankItem(tab, id) - Shows the tooltip for the specified guild bank item
 * GameTooltip:SetHeirloomByItemID(itemID)
 * GameTooltip:SetHyperlink(itemString or itemLink) - Changes the item which is displayed in the tooltip according to the passed argument.
 * GameTooltip:SetInboxItem(index) - Shows the tooltip for the specified mail inbox item.
 * GameTooltip:SetInstanceLockEncountersComplete(index)
 * GameTooltip:SetInventoryItem(unit, slot[, nameOnly, hideUselessStats])
 * GameTooltip:SetInventoryItemByID(itemID)
 * GameTooltip:SetItemByID(itemID) - Shows the tooltip for a specified Item ID. (added in 4.2.0.14002 along with the Encounter Journal)
 * GameTooltip:SetItemKey(itemID, itemLevel, itemSuffix)
 * GameTooltip:SetLFGDungeonReward(dungeonID, lootIndex)
 * GameTooltip:SetLFGDungeonShortageReward(dungeonID, shortageSeverity, lootIndex)
 * GameTooltip:SetLootCurrency(lootSlot)
 * GameTooltip:SetLootItem(lootSlot)
 * GameTooltip:SetLootRollItem(id) - Shows the tooltip for the specified loot roll item.
 * GameTooltip:SetMerchantCostItem(index, item)
 * GameTooltip:SetMerchantItem(merchantSlot)
 * GameTooltip:SetMinimumWidth(width) - (Formerly SetMoneyWidth)
 * GameTooltip:SetMountBySpellID
 * GameTooltip:SetOwnedItemByID(ID)
 * GameTooltip:SetOwner(owner, anchor[, x, y])
 * GameTooltip:SetPadding(width, height)
 * GameTooltip:SetPetAction(slot) - Shows the tooltip for the specified pet action.
 * GameTooltip:SetPossession(slot)
 * GameTooltip:SetPvpBrawl
 * GameTooltip:SetPvpTalent(talentID[, talentIndex])
 * GameTooltip:SetQuestCurrency(type, index)
 * GameTooltip:SetQuestItem(type, index)
 * GameTooltip:SetQuestLogCurrency(type, index)
 * GameTooltip:SetQuestLogItem(type, index)
 * GameTooltip:SetQuestLogRewardSpell(rewardSpellIndex[, questID])
 * GameTooltip:SetQuestLogSpecialItem(index)
 * GameTooltip:SetQuestPartyProgress(questID, omitTitle, ignoreActivePlayer)
 * GameTooltip:SetQuestRewardSpell(rewardSpellIndex)
 * GameTooltip:SetRecipeRankInfo(recipeID, learnedRank)
 * GameTooltip:SetRecipeReagentItem(recipeID, reagentIndex)
 * GameTooltip:SetRecipeResultItem(recipeID)
 * GameTooltip:SetRuneforgeResultItem(itemID, itemLevel [, powerID, modifiers])
 * GameTooltip:SetSendMailItem
 * GameTooltip:SetShapeshift(slot) - Shows the tooltip for the specified shapeshift form.
 * GameTooltip:SetShrinkToFitWrapped
 * GameTooltip:SetSocketedItem
 * GameTooltip:SetSocketedRelic(relicSlotIndex)
 * GameTooltip:SetSocketGem(index)
 * GameTooltip:SetSpellBookItem(spellId, bookType) - Shows the tooltip for the specified spell in the spellbook.
 * GameTooltip:SetSpellByID(spellId) - Shows the tooltip for the specified spell by global spell ID.
 * GameTooltip:SetTalent(talentIndex [, isInspect, talentGroup, inspectedUnit, classId]) - Shows the tooltip for the specified talent.
 * GameTooltip:SetText(text, r, g, b[, alphaValue[, textWrap]]) - Set the text of the tooltip.
 * GameTooltip:SetTotem(slot)
 * GameTooltip:SetToyByItemID(itemID)
 * GameTooltip:SetTradePlayerItem(tradeSlot)
 * GameTooltip:SetTradeTargetItem(tradeSlot)
 * GameTooltip:SetTrainerService(index)
 * GameTooltip:SetTransmogrifyItem(slotId) - Shows the tooltip when there is a pending (de)transmogrification
 * GameTooltip:SetUnit(unit[, hideStatus])
 * GameTooltip:SetUnitAura(unit, auraIndex [, filter]) - Shows the tooltip for a unit's aura. (Exclusive to 3.x.x / WotLK)
 * GameTooltip:SetUnitBuff(unit, buffIndex [, raidFilter]) - Shows the tooltip for a unit's buff.
 * GameTooltip:SetUnitDebuff(unit, buffIndex [, raidFilter]) - Shows the tooltip for a unit's debuff.
 * GameTooltip:SetUpgradeItem
 * GameTooltip:SetVoidDepositItem(slotIndex) - Shows the tooltip for the specified Void Transfer deposit slot (added in 4.3.0)
 * GameTooltip:SetVoidItem(slotIndex) - Shows the tooltip for the specified Void Storage slot (added in 4.3.0)
 * GameTooltip:SetVoidWithdrawalItem(slotIndex) - Shows the tooltip for the specified Void Transfer withdrawal slot (added in 4.3.0)
 * GameTooltip:SetWeeklyReward(itemDBID)
 * GameTooltip:SetAuctionItem(type, index) - Shows the tooltip for the specified auction item.
 * GameTooltip:SetAuctionSellItem
 * GameTooltip:SetCraftItem(index, reagent)
 * GameTooltip:SetCraftSpell(index)
 * GameTooltip:SetTrackingSpell
 * GameTooltip:SetTradeSkillItem(index [, reagent])

MessageFrame
MessageFrame has all the methods from Frame and FontInstance, plus the following:
 * MessageFrame:AddMessage(text, r, g, b, messageGroup, holdTime) - Add a message to the frame which will fade eventually.
 * MessageFrame:Clear - Clear the messages from the frame - New in 1.11.
 * MessageFrame:GetFadeDuration - Gets the fade duration in seconds - New in 1.11.
 * MessageFrame:GetFadePower
 * MessageFrame:GetFading - Get whether the frame is fading - New in 1.11.
 * MessageFrame:GetFontStringByID(messageID)
 * MessageFrame:GetInsertMode - Get the insert mode for the frame - New in 1.11.
 * MessageFrame:GetTimeVisible - Get the message visibility time in seconds - New in 1.11.
 * MessageFrame:HasMessageByID
 * MessageFrame:ResetMessageFadeByID(messageID)
 * MessageFrame:SetFadeDuration(seconds) - Set the fade duration - New in 1.11.
 * MessageFrame:SetFadePower(power)
 * MessageFrame:SetFading(status) - Set whether the frame fades messages - New in 1.11.
 * MessageFrame:SetInsertMode(TOP or BOTTOM) - Set where new messages are inserted - New in 1.11.
 * MessageFrame:SetTimeVisible(seconds) - Sets the message visibility time - New in 1.11.

Minimap
Addons are not able to create additional Minimap frames.

Minimap has all the methods from Frame, plus the following:
 * Minimap:GetPingPosition - Get the last ping location.
 * Minimap:GetZoom - Get the current zoom level.
 * Minimap:GetZoomLevels - Get the maximum zoom level.
 * Minimap:PingLocation(x, y) - Perform a ping at the specified location. As of 2.4.2 protected while targeting area of effect spells.
 * Minimap:SetArchBlobInsideAlpha(alpha)
 * Minimap:SetArchBlobInsideTexture(textureFile)
 * Minimap:SetArchBlobOutsideAlpha(alpha)
 * Minimap:SetArchBlobOutsideTexture(textureFile)
 * Minimap:SetArchBlobRingAlpha(alpha)
 * Minimap:SetArchBlobRingScalar(scalar)
 * Minimap:SetArchBlobRingTexture(textureFile)
 * Minimap:SetBlipTexture(textureFile) - Set the file to use for blips (ObjectIcons)
 * Minimap:SetCorpsePOIArrowTexture(textureFile)
 * Minimap:SetIconTexture(textureFile)
 * Minimap:SetMaskTexture(file or fileDataID)
 * Minimap:SetPOIArrowTexture(textureFile)
 * Minimap:SetPlayerTexture(textureFile) - Set the file to use for the player arrow texture.
 * Minimap:SetQuestBlobInsideAlpha(alpha)
 * Minimap:SetQuestBlobInsideTexture(textureFile)
 * Minimap:SetQuestBlobOutsideAlpha(alpha)
 * Minimap:SetQuestBlobOutsideSelectedTexture(textureFile)
 * Minimap:SetQuestBlobOutsideTexture(textureFile)
 * Minimap:SetQuestBlobRingAlpha(alpha)
 * Minimap:SetQuestBlobRingScalar(scalar)
 * Minimap:SetQuestBlobRingTexture(textureFile)
 * Minimap:SetStaticPOIArrowTexture(textureFile)
 * Minimap:SetTaskBlobInsideAlpha(alpha)
 * Minimap:SetTaskBlobInsideTexture(textureFile)
 * Minimap:SetTaskBlobOutsideAlpha(alpha)
 * Minimap:SetTaskBlobOutsideSelectedTexture(file)
 * Minimap:SetTaskBlobOutsideTexture(textureFile)
 * Minimap:SetTaskBlobRingAlpha(alpha)
 * Minimap:SetTaskBlobRingScalar(scalar)
 * Minimap:SetTaskBlobRingTexture(textureFile)
 * Minimap:SetZoom(level) - Set the current zoom level.
 * Minimap:UpdateBlips

Model
Used to display real 3D-mesh geometry as part of the UI.

Model has all the methods from Frame, plus the following:
 * Model:AdvanceTime
 * Model:ClearFog - Removes all fogging effects currently active in rendering.
 * Model:ClearModel - Removes all geometry from the Model (i.e. makes it empty)
 * Model:ClearTransform
 * Model:GetCameraDistance
 * Model:GetCameraFacing
 * Model:GetCameraPosition
 * Model:GetCameraRoll
 * Model:GetCameraTarget
 * Model:GetDesaturation
 * Model:GetFacing - Returns the direction the model is facing.
 * Model:GetFogColor - Gets the fog color (r, g, b, a) - New in 1.11.
 * Model:GetFogFar - Gets the fog far distance - New in 1.11.
 * Model:GetFogNear - Gets the fog near distance - New in 1.11.
 * Model:GetLight - Gets the light specification for the model, returns a list of results compatible with the SetLight method - New in 1.11.
 * Model:GetModelAlpha
 * Model:GetModelDrawLayer
 * Model:GetModelFileID - Gets the model file ID for this Model - New in 7.0, replaces Model:GetModel.
 * Model:GetModelScale - Returns the current mesh scaling factor.
 * Model:GetPaused
 * Model:GetPitch
 * Model:GetPosition - Returns the current position of the mesh as x, y, z
 * Model:GetRoll
 * Model:GetShadowEffect
 * Model:GetViewInsets
 * Model:GetViewTranslation
 * Model:GetWorldScale
 * Model:HasAttachmentPoints
 * Model:HasCustomCamera
 * Model:IsUsingModelCenterToTransform
 * Model:MakeCurrentCameraCustom
 * Model:ReplaceIconTexture(texture or fileDataID)
 * Model:SetCamera(index) - Select a pre-defined camera.
 * Model:SetCameraDistance(distance)
 * Model:SetCameraFacing(radians)
 * Model:SetCameraPosition(x, y, z)
 * Model:SetCameraRoll(radians)
 * Model:SetCameraTarget(x, y, z)
 * Model:SetCustomCamera(defaultIndex)
 * Model:SetDesaturation(strength)
 * Model:SetFacing(facing) - Set the direction that the model is facing.
 * Model:SetFogColor(r, g, b[, a]) - Set the fog color and enable fogging.
 * Model:SetFogFar(value) - Set the far-clipping plane distance for fogging.
 * Model:SetFogNear(value) - Set the near-clipping plane distance for fogging.
 * Model:SetGlow(...)
 * Model:SetLight(enabled[, omni, dirX, dirY, dirZ, ambIntensity[, ambR, ambG, ambB[, dirIntensity[, dirR, dirG, dirB]]]]) - Place the light source used for rendering
 * Model:SetModel(file) - Set the mesh that is displayed in the frame.
 * Model:SetModelAlpha(alpha)
 * Model:SetModelDrawLayer(layer)
 * Model:SetModelScale(scale) - Sets the scale factor for the mesh before rendering.
 * Model:SetParticlesEnabled(bool)
 * Model:SetPaused(bool)
 * Model:SetPitch(pitch)
 * Model:SetPosition(x, y, z) - Set the position of the mesh inside the frame's coordinate system.
 * Model:SetRoll(roll)
 * Model:SetSequence(sequence) - Set the animation to be played.
 * Model:SetSequenceTime(sequence, time)
 * Model:SetShadowEffect(strength)
 * Model:SetTransform
 * Model:SetViewInsets(l, r, t, b)
 * Model:SetViewTranslation(x, y)
 * Model:TransformCameraSpaceToModelSpace(positionX, positionY, positionZ)
 * Model:UseModelCenterToTransform

PlayerModel
PlayerModel has all the methods from Model, plus the following:
 * PlayerModel:ApplySpellVisualKit(id, [oneShot])
 * PlayerModel:CanSetUnit(unit)
 * PlayerModel:FreezeAnimation(animation, variation, frame)
 * PlayerModel:GetDisplayInfo
 * PlayerModel:GetDoBlend
 * PlayerModel:GetKeepModelOnHide
 * PlayerModel:HasAnimation(animation)
 * PlayerModel:PlayAnimKit(id, [loop])
 * PlayerModel:RefreshCamera
 * PlayerModel:RefreshUnit
 * PlayerModel:SetAnimation(animation[, variation])
 * PlayerModel:SetBarberShopAlternateForm
 * PlayerModel:SetCamDistanceScale(scale)
 * PlayerModel:SetCreature(CreatureId)
 * PlayerModel:SetCustomRace(raceId [, sexId])
 * PlayerModel:SetDisplayInfo(displayID)
 * PlayerModel:SetDoBlend
 * PlayerModel:SetItem(itemID[, appearanceModID, itemVisualID])
 * PlayerModel:SetItemAppearance(itemAppearanceID[, itemVisualID])
 * PlayerModel:SetKeepModelOnHide(bool)
 * PlayerModel:SetPortraitZoom(zoom)
 * PlayerModel:SetRotation(rotationRadians)
 * PlayerModel:SetUnit(unit)
 * PlayerModel:StopAnimKit
 * PlayerModel:ZeroCachedCenterXY

CinematicModel
CinematicModel was added in Patch 6.0.2 and has all the methods from PlayerModel, plus the following:
 * CinematicModel:EquipItem(itemID)
 * CinematicModel:InitializeCamera
 * CinematicModel:InitializePanCamera
 * CinematicModel:SetAnimOffset(offset)
 * CinematicModel:SetCreatureData(creatureID)
 * CinematicModel:SetFacingLeft(isFacingLeft)
 * CinematicModel:SetFadeTimes(fadeIn, fadeOut)
 * CinematicModel:SetHeightFactor(factor)
 * CinematicModel:SetJumpInfo(length, height)
 * CinematicModel:SetPanDistance(scale)
 * CinematicModel:SetSpellVisualKit(kitID)
 * CinematicModel:SetTargetDistance(scale)
 * CinematicModel:StartPan(panType, timeInSeconds[, doFade, visualKitID])
 * CinematicModel:StopPan
 * CinematicModel:UnequipItems

DressUpModel
DressUpModel has all the methods from PlayerModel, plus the following:
 * DressUpModel:Dress - Sets the model to reflect the character's current inventory.
 * DressUpModel:GetAutoDress
 * DressUpModel:GetSheathed
 * DressUpModel:GetSlotTransmogSources(slotIndex)
 * DressUpModel:GetUseTransmogSkin
 * DressUpModel:SetAutoDress(bool)
 * DressUpModel:SetSheathed(bool)
 * DressUpModel:SetUseTransmogSkin(bool)
 * DressUpModel:TryOn(itemID or sourceID [, slotName, illusionID]) - Adds the specified item to the model by sourceID.
 * DressUpModel:Undress - Sets the model to reflect the character without inventory.
 * DressUpModel:UndressSlot(slotIndex)

TabardModel
TabardModel has all the methods from PlayerModel, plus the following:
 * TabardModel:CanSaveTabardNow - Indicate if the tabard can be saved.
 * TabardModel:CycleVariation(variationIndex, delta)
 * TabardModel:GetLowerBackgroundFileName
 * TabardModel:GetLowerEmblemFile
 * TabardModel:GetLowerEmblemTexture(textureName)
 * TabardModel:GetUpperBackgroundFileName
 * TabardModel:GetUpperEmblemFile
 * TabardModel:GetUpperEmblemTexture(textureName)
 * TabardModel:InitializeTabardColors
 * TabardModel:Save - Save the tabard.

ModelScene
ModelScene has all the methods from Frame, plus the following:
 * ModelScene:ClearFog
 * ModelScene:CreateActor([name, template])
 * ModelScene:GetActorAtIndex(actorIndex)
 * ModelScene:GetCameraFarClip
 * ModelScene:GetCameraFieldOfView
 * ModelScene:GetCameraForward
 * ModelScene:GetCameraNearClip
 * ModelScene:GetCameraPosition
 * ModelScene:GetCameraRight
 * ModelScene:GetCameraUp
 * ModelScene:GetDrawLayer
 * ModelScene:GetFogColor
 * ModelScene:GetFogFar
 * ModelScene:GetFogNear
 * ModelScene:GetLightAmbientColor
 * ModelScene:GetLightDiffuseColor
 * ModelScene:GetLightDirection
 * ModelScene:GetLightPosition
 * ModelScene:GetLightType
 * ModelScene:GetNumActors
 * ModelScene:GetViewInsets
 * ModelScene:GetViewTranslation
 * ModelScene:IsLightVisible
 * ModelScene:Project3DPointTo2D(x, y, z)
 * ModelScene:SetCameraFarClip(value)
 * ModelScene:SetCameraFieldOfView(radians)
 * ModelScene:SetCameraNearClip(value)
 * ModelScene:SetCameraOrientationByAxisVectors(forwardX, forwardY, forwardZ, rightX, rightY, rightZ, upX, upY, upZ) each vector must be orthonormal
 * ModelScene:SetCameraOrientationByYawPitchRoll(yaw, pitch, roll)
 * ModelScene:SetCameraPosition(x, y, z)
 * ModelScene:SetDrawLayer(layer)
 * ModelScene:SetFogColor(r, g, b)
 * ModelScene:SetFogFar(value)
 * ModelScene:SetFogNear(value)
 * ModelScene:SetLightAmbientColor(r, g, b)
 * ModelScene:SetLightDiffuseColor(r, g, b)
 * ModelScene:SetLightDirection(x, y, z)
 * ModelScene:SetLightPosition(x, y, z)
 * ModelScene:SetLightType(LE_MODEL_LIGHT_TYPE)
 * ModelScene:SetLightVisible
 * ModelScene:SetPaused(paused, [affectsGlobalPause])
 * ModelScene:SetViewInsets(l, r, t, b)
 * ModelScene:SetViewTranslation(x, y)
 * ModelScene:TakeActor

ModelSceneActor
ModelSceneActor can be created from ModelScene:CreateActor. It has the following methods:
 * ModelSceneActor:AttachToMount
 * ModelSceneActor:CalculateMountScale
 * ModelSceneActor:ClearModel
 * ModelSceneActor:Dress
 * ModelSceneActor:GetActiveBoundingBox
 * ModelSceneActor:GetAlpha
 * ModelSceneActor:GetAnimation
 * ModelSceneActor:GetAnimationBlendOperation
 * ModelSceneActor:GetAnimationVariation
 * ModelSceneActor:GetAutoDress
 * ModelSceneActor:GetDebugName
 * ModelSceneActor:GetDesaturation
 * ModelSceneActor:GetMaxBoundingBox
 * ModelSceneActor:GetModelFileID
 * ModelSceneActor:GetModelPath
 * ModelSceneActor:GetModelUnitGUID
 * ModelSceneActor:GetParent
 * ModelSceneActor:GetParticleOverrideScale
 * ModelSceneActor:GetPaused
 * ModelSceneActor:GetPitch
 * ModelSceneActor:GetPosition
 * ModelSceneActor:GetRoll
 * ModelSceneActor:GetScale
 * ModelSceneActor:GetSheathed
 * ModelSceneActor:GetSlotTransmogSources
 * ModelSceneActor:GetSpellVisualKit
 * ModelSceneActor:GetUseTransmogSkin
 * ModelSceneActor:GetYaw
 * ModelSceneActor:Hide
 * ModelSceneActor:IsForbidden
 * ModelSceneActor:IsLoaded
 * ModelSceneActor:IsShown
 * ModelSceneActor:IsUsingCenterForOrigin
 * ModelSceneActor:IsVisible
 * ModelSceneActor:PlayAnimationKit(id [, loop])
 * ModelSceneActor:SetAlpha(alpha)
 * ModelSceneActor:SetAnimation(animation [, variation, animSpeed, timeOffsetSecs])
 * ModelSceneActor:SetAnimationBlendOperation(LE_MODEL_BLEND_OPERATION)
 * ModelSceneActor:SetAutoDress(true/false)
 * ModelSceneActor:SetDesaturation(strength)
 * ModelSceneActor:SetForbidden - Protected
 * ModelSceneActor:SetModelByCreatureDisplayID(creatureDisplayID)
 * ModelSceneActor:SetModelByFileID(fileID [, enableMips])
 * ModelSceneActor:SetModelByPath(filePath [, enableMips])
 * ModelSceneActor:SetModelByUnit("unit" [,sheatheWeapons, autoDress])
 * ModelSceneActor:SetParticleOverrideScale
 * ModelSceneActor:SetPaused(paused [, affectsGlobalPause = true])
 * ModelSceneActor:SetPitch(pitch)
 * ModelSceneActor:SetPlayerModelFromGlues
 * ModelSceneActor:SetPosition(x, y, z)
 * ModelSceneActor:SetRoll(roll)
 * ModelSceneActor:SetScale(scale)
 * ModelSceneActor:SetSheathed(true/false)
 * ModelSceneActor:SetShown(true/false)
 * ModelSceneActor:SetSpellVisualKit
 * ModelSceneActor:SetUseCenterForOrigin
 * ModelSceneActor:SetUseTransmogSkin(true/false)
 * ModelSceneActor:SetYaw(facing)
 * ModelSceneActor:Show
 * ModelSceneActor:StopAnimationKit
 * ModelSceneActor:TryOn
 * ModelSceneActor:Undress
 * ModelSceneActor:UndressSlot(slotIndex)

MovieFrame
MovieFrame has all the methods from Frame, plus the following:
 * MovieFrame:EnableSubtitles(enable) - Enables or disables subtitles for movies played in the frame.
 * MovieFrame:StartMovie(movieID [, loop]) - Plays a specified movie in the frame
 * MovieFrame:StopMovie(enable) - Stops the movie currently playing in the frame

OffScreenFrame
OffScreenFrame has all the methods from Frame, plus the following:
 * OffScreenFrame:ApplySnapshot(texture, ID)
 * OffScreenFrame:Flush
 * OffScreenFrame:GetMaxSnapshots
 * OffScreenFrame:IsSnapshotValid(ID)
 * OffScreenFrame:SetMaxSnapshots(maxSnapshots)
 * OffScreenFrame:TakeSnapshot
 * OffScreenFrame:UsesNPOT

POIFrame
POIFrame is an abstract object type for points of interest on the map and has all the methods from Frame, plus the following:
 * POIFrame:DrawAll
 * POIFrame:DrawBlob
 * POIFrame:DrawNone
 * POIFrame:EnableMerging
 * POIFrame:EnableSmoothing
 * POIFrame:GetMapID
 * POIFrame:SetBorderAlpha
 * POIFrame:SetBorderScalar
 * POIFrame:SetBorderTexture([texture or fileDataID])
 * POIFrame:SetFillAlpha
 * POIFrame:SetFillTexture
 * POIFrame:SetMapID
 * POIFrame:SetMergeThreshold
 * POIFrame:SetNumSplinePoints

ArchaeologyDigSiteFrame
ArchaeologyDigSiteFrame has all the methods from POIFrame but does not have any other methods.

QuestPOIFrame
QuestPOIFrame has all the methods from POIFrame, plus the following:
 * QuestPOIFrame:GetNumTooltips
 * QuestPOIFrame:GetTooltipIndex
 * QuestPOIFrame:UpdateMouseOverTooltip

ScenarioPOIFrame
ScenarioPOIFrame has all the methods from POIFrame, plus the following:
 * ScenarioPOIFrame:GetScenarioTooltipText
 * ScenarioPOIFrame:UpdateMouseOverTooltip

ScrollFrame
ScrollFrame has all the methods from Frame, plus the following:
 * ScrollFrame:GetHorizontalScroll
 * ScrollFrame:GetHorizontalScrollRange
 * ScrollFrame:GetScrollChild
 * ScrollFrame:GetVerticalScroll
 * ScrollFrame:GetVerticalScrollRange
 * ScrollFrame:SetHorizontalScroll(offset)
 * ScrollFrame:SetScrollChild
 * ScrollFrame:SetVerticalScroll(offset)
 * ScrollFrame:UpdateScrollChildRect - no longer required after patch 2.3

ScrollingMessageFrame
ScrollingMessageFrame is an intrinsic frame.

It has all the methods from Frame, FontInstance and ScrollingMessageFrameMixin.

SimpleHTML
SimpleHTML has all the methods from Frame and FontInstance, plus the following:
 * SimpleHTML:GetContentHeight
 * SimpleHTML:GetHyperlinkFormat - Set the string.format format to use for displaying hyperlinks - New in 1.11.
 * SimpleHTML:GetTextData
 * SimpleHTML:SetHyperlinkFormat(format) - Set the string.format format to use for displaying hyperlinks.
 * SimpleHTML:SetText(text) - Set the HTML markup to be displayed (note: if there is any markup error, it will be displayed as plain text)

Slider
Slider has all the methods from Frame, plus the following:
 * Slider:Disable - Disables the slider
 * Slider:Enable - Enables the slider
 * Slider:GetMinMaxValues - Get the current bounds of the slider.
 * Slider:GetObeyStepOnDrag - Returns whether the slider constrains values to value steps when dragged.
 * Slider:GetOrientation - Returns "HORIZONTAL" or "VERTICAL".
 * Slider:GetStepsPerPage - Returns the number of steps the slider's value changes by when the slider is clicked.
 * Slider:GetThumbTexture - Get the texture for this slider's thumb - New in 1.11.
 * Slider:GetValue - Get the current value of the slider.
 * Slider:GetValueStep - Get the current step size of the slider.
 * Slider:IsDraggingThumb
 * Slider:IsEnabled - Returns enabled status of the slider.
 * Slider:SetEnabled
 * Slider:SetMinMaxValues(min, max) - Set the bounds of the slider.
 * Slider:SetObeyStepOnDrag(obeyStep) - Sets whether the slider constrains values to to value steps when dragged.
 * Slider:SetOrientation(orientation) - "HORIZONTAL" or "VERTICAL".
 * Slider:SetStepsPerPage(steps) - Controls slider behavior when the user clicks within the slider's tracking area.
 * Slider:SetThumbTexture(texture or fileDataIDbool)
 * Slider:SetValue(value) - Set the value of the slider. Also causes the thumb to show on the first call.
 * Slider:SetValueStep(value) - Set the step size of the slider.

StatusBar
StatusBar has all the methods from Frame, plus the following:
 * StatusBar:GetFillStyle
 * StatusBar:GetMinMaxValues - Get the current bounds of the bar.
 * StatusBar:GetOrientation
 * StatusBar:GetReverseFill
 * StatusBar:GetRotatesTexture
 * StatusBar:GetStatusBarAtlas
 * StatusBar:GetStatusBarColor
 * StatusBar:GetStatusBarTexture - Returns the texture object for the bar - Before 1.11 it returned the filename.
 * StatusBar:GetValue - Get the current value of the bar.
 * StatusBar:SetFillStyle(style) - Set the style in which the bar will be filled.
 * StatusBar:SetMinMaxValues(min, max) - Set the bounds of the bar.
 * StatusBar:SetOrientation(orientation) - "HORIZONTAL" or "VERTICAL".
 * StatusBar:SetReverseFill(state) - Sets the fill direction.
 * StatusBar:SetRotatesTexture
 * StatusBar:SetStatusBarAtlas(atlasName)
 * StatusBar:SetStatusBarColor(r, g, b[, alpha]) - Set the color of the bar.
 * StatusBar:SetStatusBarTexture(texture or fileDataIDbool [, layer[, subLayer]]) - Sets the texture of the bar - Added texture as valid arg in 1.11.
 * StatusBar:SetValue(value) - Set the value of the bar.

UnitPositionFrame
UnitPositionFrame has all the methods from Frame, plus the following:
 * UnitPositionFrame:AddUnit(unit, texture, width, height, r, g, b, a, subLayer, showFacing)
 * UnitPositionFrame:AddUnitAtlas(unit, texture, width, height, r, g, b, a, subLayer)
 * UnitPositionFrame:AddUnitFileID(unit, fileID, width, height, r, g, b, a, subLayer, showFacing)
 * UnitPositionFrame:ClearUnits
 * UnitPositionFrame:FinalizeUnits
 * UnitPositionFrame:GetMouseOverUnits
 * UnitPositionFrame:GetPlayerPingScale
 * UnitPositionFrame:GetUiMapID
 * UnitPositionFrame:SetPlayerPingScale(scale)
 * UnitPositionFrame:SetPlayerPingTexture(textureIndex, textureName or fileDataID, [width, height])
 * UnitPositionFrame:SetUiMapID(mapID)
 * UnitPositionFrame:SetUnitColor(unit, r, g, b, a)
 * UnitPositionFrame:StartPlayerPing
 * UnitPositionFrame:StopPlayerPing

WorldFrame
WorldFrame is the frame which is used to display 3D world itself; it inherits methods of a normal frame widget. The frame is initially nonprotected, but because nameplates are protected children of the world frame, becomes protected when the first nameplate is seen. No additional WorldFrames may be created by addons.

The 3D content of this frame is rendered while keeping the vertical field of vision. So, if you widen (or flatten) WorldFrame, you'll indeed gain a wider horizontal vision angle. Also, if you're designing interface elements covering large areas of valuable screen estate, you might consider sizing WorldFrame down and thus moving it out from under your interface, so that they do not overlap too much.