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.
228 lines
7.9 KiB
228 lines
7.9 KiB
-- ========================================================================= --
|
|
-- SylingTracker --
|
|
-- https://www.curseforge.com/wow/addons/sylingtracker --
|
|
-- --
|
|
-- Repository: --
|
|
-- https://github.com/Skamer/SylingTracker --
|
|
-- --
|
|
-- ========================================================================= --
|
|
Syling "SylingTracker.UI.HelperWindow" ""
|
|
-- ========================================================================= --
|
|
namespace "SLT"
|
|
-- ========================================================================= --
|
|
export {
|
|
FetchFontObject = Fonts.FetchFontObject
|
|
}
|
|
-- ========================================================================= --
|
|
local DESCRIPTION_TEXT_FORMAT = "Wowhead may help you to find your way for completing this %s"
|
|
local ACHIEVEMENT_TEXT = "achievement"
|
|
local QUEST_TEXT = "quest"
|
|
local WOWHEAD_LINK_FORMAT = "https://www.wowhead.com/%s=%i"
|
|
-- ========================================================================= --
|
|
-- @TODO: Move "SLTEditBox" in a its own file or a better place.
|
|
-- ========================================================================= --
|
|
class "SLTEditBox" (function(_ENV)
|
|
inherit "EditBox"
|
|
-----------------------------------------------------------------------------
|
|
-- Methods --
|
|
-----------------------------------------------------------------------------
|
|
function SetSharedMediaFont(self, font)
|
|
local _, fontHeight, flags = self:GetFont()
|
|
if font.outline then
|
|
if font.outline == "NORMAL" then
|
|
flags = "OUTLINE"
|
|
elseif font.outline == "THICK" then
|
|
flags = "THICKOUTLINE"
|
|
end
|
|
end
|
|
|
|
if font.monochrome then
|
|
if flags then
|
|
flags = flags..",MONOCHROME"
|
|
else
|
|
flags = "MONOCHROME"
|
|
end
|
|
end
|
|
|
|
if font.height then
|
|
fontHeight = font.height
|
|
end
|
|
|
|
local ft = _LibSharedMedia:Fetch("font", font.font)
|
|
|
|
return self:SetFontObject(FetchFontObject(ft, fontHeight or 10, flags))
|
|
end
|
|
-----------------------------------------------------------------------------
|
|
-- Properties --
|
|
-----------------------------------------------------------------------------
|
|
property "SharedMediaFont" {
|
|
type = FontType,
|
|
handler = function(self, font) self:SetSharedMediaFont(font) end
|
|
}
|
|
|
|
end)
|
|
-- ========================================================================= --
|
|
class "HelperWindow" (function(_ENV)
|
|
inherit "Frame"
|
|
-----------------------------------------------------------------------------
|
|
-- Handlers --
|
|
-----------------------------------------------------------------------------
|
|
local function OnFocusGain(self)
|
|
self:HighlightText()
|
|
end
|
|
-----------------------------------------------------------------------------
|
|
-- Methods --
|
|
-----------------------------------------------------------------------------
|
|
__Arguments__ { Number }
|
|
function SetID(self, id)
|
|
self.ID = id
|
|
end
|
|
|
|
__Arguments__ { String }
|
|
function SetType(self, type)
|
|
self.Type = type
|
|
end
|
|
|
|
function UpdateText(self)
|
|
if self.Type == "quest" then
|
|
Style[self].Description.text = DESCRIPTION_TEXT_FORMAT:format(QUEST_TEXT)
|
|
Style[self].LinkBox.text = WOWHEAD_LINK_FORMAT:format("quest", self.ID)
|
|
elseif self.Type == "achievement" then
|
|
Style[self].Description.text = DESCRIPTION_TEXT_FORMAT:format(ACHIEVEMENT_TEXT)
|
|
Style[self].LinkBox.text = WOWHEAD_LINK_FORMAT:format("achievement", self.ID)
|
|
end
|
|
end
|
|
-----------------------------------------------------------------------------
|
|
-- Methods --
|
|
-----------------------------------------------------------------------------
|
|
property "ID " {
|
|
type = Number
|
|
}
|
|
|
|
property "Type" {
|
|
type = String
|
|
}
|
|
-----------------------------------------------------------------------------
|
|
-- Constructors --
|
|
-----------------------------------------------------------------------------
|
|
__Template__{
|
|
CloseButton = Button,
|
|
HeaderText = SLTFontString,
|
|
Description = SLTFontString,
|
|
CopyHelpText = SLTFontString,
|
|
LinkBox = SLTEditBox
|
|
}
|
|
function __ctor(self)
|
|
HelperFrameInstance = self
|
|
local linkBox = self:GetChild("LinkBox")
|
|
linkBox.OnEditFocusGained = OnFocusGain
|
|
|
|
local closeButton = self:GetChild("CloseButton")
|
|
closeButton.OnClick = function() self:Hide() end
|
|
end
|
|
|
|
end)
|
|
-- ========================================================================= --
|
|
-- Styles --
|
|
-- ========================================================================= --
|
|
Style.UpdateSkin("Default", {
|
|
[HelperWindow] = {
|
|
width = 600,
|
|
height = 175,
|
|
backdrop = {
|
|
bgFile = [[Interface\AddOns\SylingTracker\Media\Textures\Window-Background.blp]]
|
|
},
|
|
|
|
CloseButton = {
|
|
width = 24,
|
|
height = 24,
|
|
registerForClicks = { "LeftButtonDown" },
|
|
|
|
NormalTexture = {
|
|
file = [[Interface\AddOns\SylingTracker\Media\Textures\Icons\close]],
|
|
vertexColor = { r = 1, g = 0, b = 0, a = 0.5},
|
|
setAllPoints = true,
|
|
},
|
|
HighlightTexture = {
|
|
file = [[Interface\AddOns\SylingTracker\Media\Textures\Icons\close]],
|
|
vertexColor = { r = 1, g = 0, b = 0, a = 0.15},
|
|
setAllPoints = true,
|
|
},
|
|
|
|
location = {
|
|
Anchor("TOPRIGHT", -5, -5)
|
|
}
|
|
},
|
|
|
|
HeaderText = {
|
|
height = 24,
|
|
text = "Need Help ?",
|
|
sharedMediaFont = FontType("PT Sans Narrow Bold", 16),
|
|
textColor = Color(0, 0.9, 0.9, 0.9),
|
|
justifyH = "CENTER",
|
|
location = {
|
|
Anchor("TOP", 0, -10),
|
|
}
|
|
},
|
|
|
|
Description = {
|
|
height = 24,
|
|
sharedMediaFont = FontType("PT Sans Narrow Bold", 14),
|
|
textColor = Color(0.75, 0.75, 0.75, 0.9),
|
|
justifyH = "CENTER",
|
|
location = {
|
|
Anchor("TOP", 0, -50),
|
|
}
|
|
},
|
|
|
|
CopyHelpText = {
|
|
height = 24,
|
|
text = "Ctrl + C to copy",
|
|
sharedMediaFont = FontType("PT Sans Narrow Bold", 13),
|
|
textColor = Color(0.9, 0.37, 0, 0.9),
|
|
justifyH = "CENTER",
|
|
location = {
|
|
Anchor("BOTTOM", 0, 5, "LinkBox", "TOP"),
|
|
}
|
|
},
|
|
|
|
LinkBox = {
|
|
height = 36,
|
|
backdrop = {
|
|
bgFile = [[Interface\Buttons\WHITE8X8]]
|
|
},
|
|
backdropColor = { r = 255/255, g = 255/255, b = 255/255, a = 0.07 },
|
|
sharedMediaFont = FontType("PT Sans Narrow Bold", 15),
|
|
textColor = Color(0.9, 195/255, 0, 0.9),
|
|
textInsets = Inset(10, 0, 5, 5),
|
|
autoFocus = false,
|
|
location = {
|
|
Anchor("LEFT", 20),
|
|
Anchor("RIGHT", -20),
|
|
Anchor("BOTTOM", 0, 20)
|
|
}
|
|
}
|
|
}
|
|
})
|
|
-- ========================================================================= --
|
|
local HelperWindowObj = HelperWindow("SylingTracker_HelperWindow", UIParent)
|
|
HelperWindowObj:Hide()
|
|
HelperWindowObj:SetPoint("CENTER")
|
|
-- ========================================================================= --
|
|
-- Enchance the API
|
|
-- ========================================================================= --
|
|
class "API" (function(_ENV)
|
|
|
|
__Arguments__{ String, Number }
|
|
__Static__() function ShowHelperWindow(type, id)
|
|
|
|
HelperWindowObj:SetType(type)
|
|
HelperWindowObj:SetID(id)
|
|
HelperWindowObj:UpdateText()
|
|
HelperWindowObj:Show()
|
|
end
|
|
|
|
__Static__() function HideHelperWindow()
|
|
HelperWindowObj:Hide()
|
|
end
|
|
end)
|