You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
5.0 KiB
88 lines
5.0 KiB
|
|
--exemples for world of warcraft library "Details Framework" file: scrollbox.lua
|
|
--a scrollbox is a frame with a scrollbar and lines, these lines can be used to show data or show more frames in the case of a grid frame
|
|
--a grid of frames if a frame with lines and columns, each line can have multiple columns, a column is a frame
|
|
|
|
--------Start of the Grid Scroll Box Example--------
|
|
|
|
--in world of warcraft, UIParent is the default parent, this frame is created by the game and is the base frame for all other frames
|
|
local parent = UIParent
|
|
local name = "GridScrollBoxExample"
|
|
|
|
--declare a function which receives a frame and the data which will be used to refresh it
|
|
local refreshOptionFunc = function(optionButton, data)
|
|
optionButton.text:SetText(data.text)
|
|
optionButton:SetScript("OnClick", function(self) print("clicked option " .. data.text) end)
|
|
optionButton:Show()
|
|
end
|
|
|
|
--declare a function to create a column within a scroll line
|
|
--this function will receive the line, the line index within the scrollbox and the column index within the line
|
|
local createOptionFrameFunc = function(line, lineIndex, columnIndex)
|
|
local optionButton = CreateFrame("button", "$parentOptionFrame" .. lineIndex .. columnIndex, line)
|
|
optionButton:SetSize(100, 20)
|
|
optionButton.text = optionButton:CreateFontString(nil, "overlay", "GameFontNormal")
|
|
optionButton.text:SetPoint("center", optionButton, "center", 0, 0)
|
|
optionButton.text:SetText("Option " .. lineIndex .. columnIndex)
|
|
|
|
local highlightTexture = optionButton:CreateTexture(nil, "highlight")
|
|
highlightTexture:SetAllPoints()
|
|
highlightTexture:SetColorTexture(1, 1, 1, 0.2)
|
|
|
|
DetailsFramework:ApplyStandardBackdrop(optionButton)
|
|
|
|
return optionButton
|
|
end
|
|
|
|
--when creatin a grid scrollbox, some of the settings for the grid is clared into a table to be passed as an argument
|
|
local options = {
|
|
width = 600,
|
|
height = 400,
|
|
--amount of horizontal lines
|
|
line_amount = 12,
|
|
--amount of columns per line
|
|
columns_per_line = 4,
|
|
--height of each line
|
|
line_height = 30,
|
|
auto_amount = false,
|
|
no_scroll = false,
|
|
no_backdrop = false,
|
|
}
|
|
|
|
--grid scrollbox data, can also be set with gridScrollBox:SetData(data) if the data is only available later on
|
|
--the data table is passed within the optionFrame when calling the refresh function
|
|
local data = {
|
|
{text = "1"}, {text = "2"}, {text = "3"}, {text = "4"}, {text = "5"}, {text = "6"}, {text = "7"}, {text = "8"}, {text = "9"}, {text = "10"},
|
|
{text = "11"}, {text = "12"}, {text = "13"}, {text = "14"}, {text = "15"}, {text = "16"}, {text = "17"}, {text = "18"}, {text = "19"}, {text = "20"},
|
|
{text = "21"}, {text = "22"}, {text = "23"}, {text = "24"}, {text = "25"}, {text = "26"}, {text = "27"}, {text = "28"}, {text = "29"}, {text = "30"},
|
|
{text = "31"}, {text = "32"}, {text = "33"}, {text = "34"}, {text = "35"}, {text = "36"}, {text = "37"}, {text = "38"}, {text = "39"}, {text = "40"},
|
|
{text = "41"}, {text = "42"}, {text = "43"}, {text = "44"}, {text = "45"}, {text = "46"}, {text = "47"}, {text = "48"}, {text = "49"}, {text = "50"},
|
|
{text = "51"}, {text = "52"}, {text = "53"}, {text = "54"}, {text = "55"}, {text = "56"}, {text = "57"}, {text = "58"}, {text = "59"}, {text = "60"},
|
|
{text = "61"}, {text = "62"}, {text = "63"}, {text = "64"}, {text = "65"}, {text = "66"}, {text = "67"}, {text = "68"}, {text = "69"}, {text = "70"},
|
|
{text = "71"}, {text = "72"}, {text = "73"}, {text = "74"}, {text = "75"}, {text = "76"}, {text = "77"}, {text = "78"}, {text = "79"}, {text = "80"},
|
|
{text = "81"}, {text = "82"}, {text = "83"}, {text = "84"}, {text = "85"}, {text = "86"}, {text = "87"}, {text = "88"}, {text = "89"}, {text = "90"},
|
|
{text = "91"}, {text = "92"}, {text = "93"}, {text = "94"}, {text = "95"}, {text = "96"}, {text = "97"}, {text = "98"}, {text = "99"}, {text = "100"},
|
|
}
|
|
|
|
--create the grid scrollbox
|
|
local gridScrollBox = DetailsFramework:CreateGridScrollBox(parent, name, refreshOptionFunc, data, createOptionFrameFunc, options)
|
|
gridScrollBox:SetPoint("center", parent, "center", 0, 0)
|
|
gridScrollBox:Refresh()
|
|
|
|
--------End of the Grid Scroll Box Example--------
|
|
|
|
|
|
--------Start of the Canvas Scroll Box Example--------
|
|
|
|
--display frame is the frame which will be shown within the canvas, this frame can have any size and if it is bigger than the canvas, it will be scrollable
|
|
local displayFrame = CreateFrame("frame", "CanvasScrollBoxDisplayFrameExample", nil, "BackdropTemplate")
|
|
displayFrame:SetSize(800, 1200)
|
|
displayFrame:SetBackdrop({bgFile = "Interface\\FrameGeneral\\UI-Background-Marble", tile = true, tileSize = 32})
|
|
|
|
--signature: CreateCanvasScrollBox(parentFrame, displayFrame, frameName)
|
|
--display frame is the frame which will be shown within the canvas
|
|
local canvasScrollFrame = DetailsFramework:CreateCanvasScrollBox(UIParent, displayFrame, "CanvasScrollBoxExample")
|
|
canvasScrollFrame:SetPoint("center", UIParent, "center", 0, 0)
|
|
canvasScrollFrame:SetSize(300, 500)
|
|
|
|
--------End of the Canvas Scroll Box Example--------
|