1
0
Bifurcation 0
Ce dépôt a été archivé le 2020-03-15. Vous pouvez voir ses fichiers ou le cloner, mais pas ouvrir de ticket ou de demandes d'ajout, ni soumettre de changements.
questhelperredux/QuestHelper/textviewer.lua
Nathanial.C.Jones 965e8589c9 Everything SEEMS to work, less of course the db. Something I did before screwed everything up.
I implemented a QuestHelper_GetTime function for the next time Blizzard decides to fiddle with the time functions. It returns debugprofilestop() / 1000, to exactly match the precision of GetTime().

I also re-removed references to Cartographer from the rollback.
2012-01-01 03:01:18 +00:00

160 lignes
5,4 Kio
Lua

local GetTime = QuestHelper_GetTime
QuestHelper_File["textviewer.lua"] = "4.0.1.$svnversion$"
QuestHelper_Loadtime["textviewer.lua"] = GetTime()
local viewer
local function viewer_cancelmove(self)
if self.isMoving then
self:StopMovingOrSizing()
self.isMoving = false
end
end
local function viewer_mousedown(self, button)
if button == "LeftButton" then
self:StartMoving()
self.isMoving = true
end
end
local function viewer_closebutton(self)
for i = 1, #viewer.text do
viewer.text[i]:SetText("")
end
viewer:Hide()
end
local frammis = {}
function QuestHelper:ShowText(text, title, width, border, divide)
local border = border or 8
local divide = divide or 4
if type(text) == "string" then text = {text} end
if not frammis[border] then frammis[border] = {} end
viewer = frammis[border][divide]
local suffix = string.format("_%d_%d", border, divide)
if not viewer then
viewer = CreateFrame("Frame", "QuestHelperTextViewer", nil) -- With no parent, this will always be visible.
viewer:SetFrameStrata("FULLSCREEN_DIALOG")
viewer:SetPoint("CENTER", UIParent)
viewer:EnableMouse(true)
viewer:SetMovable(true)
QH_Hook(viewer, "OnMouseDown", viewer_mousedown)
QH_Hook(viewer, "OnMouseUp", viewer_cancelmove)
QH_Hook(viewer, "OnHide", viewer_cancelmove)
-- This will cause it to be hidden if Esc is pressed.
table.insert(UISpecialFrames, viewer:GetName())
viewer.title = viewer:CreateFontString()
viewer.title:SetFont(self.font.serif, 14)
viewer.title:SetPoint("TOPLEFT", viewer, border, -border)
viewer.title:SetPoint("RIGHT", viewer, -border, 0)
viewer:SetBackdrop({
bgFile = "Interface/Tooltips/UI-Tooltip-Background",
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
edgeSize = 16,
tile = true,
tileSize = 16,
insets = { left = 4, right = 4, top = 4, bottom = 4 }})
viewer:SetBackdropColor(0, 0, 0, 0.8)
viewer:SetBackdropBorderColor(1, 1, 1, 0.7)
viewer.scrollframe = CreateFrame("ScrollFrame", "QuestHelperTextViewer_ScrollFrame" .. suffix, viewer, "UIPanelScrollFrameTemplate")
viewer.scrollframe:SetPoint("LEFT", viewer, "LEFT", border, 0)
viewer.scrollframe:SetPoint("TOP", viewer.title, "BOTTOM", 0, -divide)
viewer.scrollbar = _G["QuestHelperTextViewer_ScrollFrame" .. suffix .. "ScrollBar"]
--QuestHelperTextViewer_ScrollFrameThumbTexture = self:CreateIconTexture(viewer.scrollbar, 26) -- Use the snazzy blue thumb
viewer.scrollbar:SetBackdrop({ -- Note: These settings are coppied from UIPanelScrollBarTemplateLightBorder in UIPanelTemplates.xml
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
edgeSize = 12,
tileSize = 16,
insets = { left = 0, right = 0, top = 5, bottom = 5 }})
viewer.closebutton = CreateFrame("Button", "QuestHelperTextViewer_CloseButton" .. suffix, viewer, "UIPanelCloseButton")
viewer.closebutton:SetPoint("TOPRIGHT", viewer)
QH_Hook(viewer.closebutton, "OnClick", viewer_closebutton)
viewer.frame = CreateFrame("Frame", "QuestHelperTextViewer_Frame" .. suffix, viewer.scrollframe)
viewer.scrollframe:SetScrollChild(viewer.frame)
viewer.text = {}
end
local maxw = 0
for i = 1, #text do
if not viewer.text[i] then
viewer.text[i] = viewer.frame:CreateFontString()
viewer.text[i]:SetFont(self.font.sans, 12)
viewer.text[i]:SetJustifyH("LEFT")
if i > 1 then
viewer.text[i]:SetPoint("TOPLEFT", viewer.text[i - 1], "BOTTOMLEFT")
else
viewer.text[i]:SetPoint("TOPLEFT", viewer.frame)
end
end
viewer.text[i]:Show()
viewer.text[i]:SetText(text[i] or "No text.")
maxw = math.max(maxw, viewer.text[i]:GetStringWidth())
end
for i = #text + 1, #viewer.text do
viewer.text[i]:Hide()
end
viewer:Show()
viewer.title:SetText(title or "QuestHelper")
viewer.scrollframe:SetVerticalScroll(0)
local w = width or math.min(600, math.max(100, maxw))
for i = 1, #viewer.text do
viewer.text[i]:SetWidth(w)
end
viewer:SetWidth(w+border * 2)
viewer.scrollframe:SetWidth(w)
viewer.frame:SetWidth(w)
local toth = 0
for i = 1, #text do
toth = toth + viewer.text[i]:GetHeight()
end
local h = math.max(10, toth)
local title_h = viewer.title:GetHeight()
if h > 400 then
viewer.frame:SetHeight(400)
viewer.scrollframe:SetHeight(400)
viewer:SetHeight(420+title_h+border * 2+divide)
viewer:SetWidth(w+border * 2 + 22)
viewer.scrollbar:Show()
else
viewer.frame:SetHeight(h)
viewer.scrollframe:SetHeight(h)
viewer:SetHeight(h+border * 2 + divide+title_h)
viewer.scrollbar:Hide()
--[[
WoW Bug: For some reason, setting the thumb texture on the scrollbar causes the following scenario:
1. Display the viewer with scrollable text (eg /qh)
2. Display the viewer with smaller text (eg /qh help filter)
The second time the viewer is displayed, the close button doesn't show its normal state.
When you hover over it, the glow appears. If you press the left button over it, the depressed state appears.
If you drag off of it, then release, the normal state appears, and the button is fine until you repeat 1 & 2.
]]
viewer.closebutton:SetButtonState("PUSHED") -- Workaround: there's a wierd quirk that's causing it to not show sometimes...
viewer.closebutton:SetButtonState("NORMAL") -- Workaround, part 2
end
frammis[border][divide] = viewer
end