This commit is contained in:
Andrew6810
2022-10-21 06:50:13 -07:00
parent 8571e98fb1
commit 39c0ed874e
466 changed files with 52263 additions and 2 deletions
+229
View File
@@ -0,0 +1,229 @@
-- *********************************************************
-- ** Deadly Boss Mods - GUI **
-- ** http://www.deadlybossmods.com **
-- *********************************************************
--
-- This addon is written and copyrighted by:
-- * Paul Emmerich (Tandanu @ EU-Aegwynn) (DBM-Core)
-- * Martin Verges (Nitram @ EU-Azshara) (DBM-GUI)
--
-- The localizations are written by:
-- * enGB/enUS: Tandanu http://www.deadlybossmods.com
-- * deDE: Tandanu http://www.deadlybossmods.com
-- * zhCN: Diablohu http://wow.gamespot.com.cn
-- * ruRU: BootWin bootwin@gmail.com
-- * zhTW: Hman herman_c1@hotmail.com
-- * zhTW: Azael/kc10577 kc10577@hotmail.com
-- * koKR: BlueNyx bluenyx@gmail.com
-- * esES: Interplay/1nn7erpLaY http://www.1nn7erpLaY.com
--
-- Special thanks to:
-- * Arta (DBM-Party)
-- * Omegal @ US-Whisperwind (some patches, and DBM-Party updates)
-- * Tennberg (a lot of fixes in the enGB/enUS localization)
--
--
-- The code of this addon is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License. (see license.txt)
-- All included textures and sounds are copyrighted by their respective owners, license information for these media files can be found in the modules that make use of them.
--
--
-- You are free:
-- * to Share - to copy, distribute, display, and perform the work
-- * to Remix - to make derivative works
-- Under the following conditions:
-- * Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). (A link to http://www.deadlybossmods.com is sufficient)
-- * Noncommercial. You may not use this work for commercial purposes.
-- * Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
--
do
local MAX_BUTTONS = 10
local TabFrame1 = CreateFrame("Frame", "DBM_GUI_DropDown", UIParent)
TabFrame1:SetBackdrop({
bgFile="Interface\\DialogFrame\\UI-DialogBox-Background",
edgeFile="Interface\\DialogFrame\\UI-DialogBox-Border",
tile=1, tileSize=32, edgeSize=32,
insets={left=11, right=12, top=12, bottom=11}
});
TabFrame1:EnableMouseWheel(1)
TabFrame1:SetScript("OnMouseWheel", function(self, arg1)
if arg1 > 0 then -- scroll up
self.offset = self.offset - 1
if self.offset < 0 then
self.offset = 0
end
else -- scroll down
self.offset = self.offset + 1
end
self:Refresh()
end)
TabFrame1:Hide()
TabFrame1:SetParent( DBM_GUI_OptionsFrame )
TabFrame1:SetFrameStrata("TOOLTIP")
TabFrame1.offset = 0
local function ButtonDefaultFunction(self)
self:GetParent():HideMenu()
self:GetParent().dropdown.value = self.entry.value
self:GetParent().dropdown.text = self.entry.text
if self.entry.sound then
PlaySoundFile(self.entry.value)
end
if self.entry.func then
self.entry.func(self.entry.value)
end
if self:GetParent().dropdown.callfunc then
self:GetParent().dropdown.callfunc(self.entry.value)
end
getglobal(self:GetParent().dropdown:GetName().."Text"):SetText(self.entry.text)
end
TabFrame1.buttons = {}
for i=1, MAX_BUTTONS, 1 do
TabFrame1.buttons[i] = CreateFrame("Button", TabFrame1:GetName().."Button"..i, TabFrame1, "DBM_GUI_DropDownMenuButtonTemplate")
TabFrame1.buttons[i]:SetScript("OnClick", ButtonDefaultFunction)
if i == 1 then
TabFrame1.buttons[i]:SetPoint("TOPLEFT", TabFrame1, "TOPLEFT", 11, -13)
else
TabFrame1.buttons[i]:SetPoint("TOPLEFT", TabFrame1.buttons[i-1], "BOTTOMLEFT", 0,0)
end
end
local default_button_width = TabFrame1.buttons[1]:GetWidth()
TabFrame1:SetWidth(default_button_width+22)
TabFrame1:SetHeight(MAX_BUTTONS*TabFrame1.buttons[1]:GetHeight()+24)
TabFrame1.text = TabFrame1:CreateFontString(TabFrame1:GetName().."Text", 'BACKGROUND')
TabFrame1.text:SetPoint('CENTER', TabFrame1, 'BOTTOM', 0, 0)
TabFrame1.text:SetFontObject('GameFontNormalSmall')
TabFrame1.text:SetText("scroll with mouse")
TabFrame1.text:Hide()
local BackDropTable = { bgFile = "" }
function TabFrame1:ShowMenu(values)
self:Show()
if self.offset > #values-MAX_BUTTONS then self.offset = #values-MAX_BUTTONS end
if self.offset < 0 then self.offset = 0 end
if #values > MAX_BUTTONS then
self:SetHeight(MAX_BUTTONS*TabFrame1.buttons[1]:GetHeight()+24)
self.text:Show()
elseif #values == MAX_BUTTONS then
self:SetHeight(MAX_BUTTONS*TabFrame1.buttons[1]:GetHeight()+24)
self.text:Hide()
elseif #values < MAX_BUTTONS then
self:SetHeight( #values * self.buttons[1]:GetHeight() + 24)
self.text:Hide()
end
for i=1, MAX_BUTTONS, 1 do
if i + self.offset <= #values then
self.buttons[i]:SetText(values[i+self.offset].text)
self.buttons[i].entry = values[i+self.offset]
if values[i+self.offset].texture then
BackDropTable.bgFile = values[i+self.offset].texture
self.buttons[i]:SetBackdrop(BackDropTable)
end
if values[i+self.offset].font then
_G[self.buttons[i]:GetName().."NormalText"]:SetFont(values[i+self.offset].font, values[i+self.offset].fontsize or 14)
else
_G[self.buttons[i]:GetName().."NormalText"]:SetFont(STANDARD_TEXT_FONT, 10)
end
self.buttons[i]:Show()
else
self.buttons[i]:Hide()
end
end
local width = self.buttons[1]:GetWidth()
local bwidth = 0
for k, button in pairs(self.buttons) do
bwidth = button:GetTextWidth()
if bwidth > width then
TabFrame1:SetWidth(bwidth+32)
width = bwidth
end
end
for k, button in pairs(self.buttons) do
button:SetWidth(width)
end
end
function TabFrame1:HideMenu()
for i=1, MAX_BUTTONS, 1 do
self.buttons[i]:Hide()
self.buttons[i]:SetBackdrop(nil)
self.buttons[i]:SetWidth(default_button_width)
_G[self.buttons[i]:GetName().."NormalText"]:SetFontObject(GameFontHighlightSmall)
end
self:SetWidth(default_button_width+22)
self:Hide()
self.text:Hide()
end
function TabFrame1:Refresh()
self:ShowMenu(self.dropdown.values)
end
local FrameTitle = "DBM_GUI_DropDown"
function DBM_GUI:CreateDropdown(title, values, selected, callfunc, width)
-- Check Values
self:CheckValues(values)
-- Create the Dropdown Frame
local dropdown = CreateFrame("Frame", FrameTitle..self:GetNewID(), self.frame, "DBM_GUI_DropDownMenuTemplate")
dropdown.creator = self
dropdown.values = values
dropdown.callfunc = callfunc
dropdown:SetWidth((width or 120)+30) -- required to fix some setpoint problems
getglobal(dropdown:GetName().."Middle"):SetWidth(width or 120)
getglobal(dropdown:GetName().."Button"):SetScript("OnClick", function(self)
PlaySound("igMainMenuOptionCheckBoxOn")
if TabFrame1:IsShown() then
TabFrame1:HideMenu()
TabFrame1.dropdown = nil
else
TabFrame1:ClearAllPoints()
TabFrame1:SetPoint("TOPRIGHT", self, "BOTTOMRIGHT", 0, -3)
TabFrame1.dropdown = self:GetParent()
TabFrame1:ShowMenu(self:GetParent().values)
end
end)
for k,v in next, dropdown.values do
if v.value ~= nil and v.value == selected or v.text == selected then
getglobal(dropdown:GetName().."Text"):SetText(v.text)
dropdown.value = v.value
dropdown.text = v.text
end
end
if not (not title or title == "") then
dropdown.titletext = dropdown:CreateFontString(FrameTitle..self:GetCurrentID().."Text", 'BACKGROUND')
dropdown.titletext:SetPoint('BOTTOMLEFT', dropdown, 'TOPLEFT', 21, 0)
dropdown.titletext:SetFontObject('GameFontNormalSmall')
dropdown.titletext:SetText(title)
end
return dropdown
end
end
function DBM_GUI:CheckValues(values)
if type(values) == "table" then
for _,entry in next,values do
entry.text = entry.text or "Missing entry.text"
entry.value = entry.value or entry.text
end
end
return false
end