initial commit
This commit is contained in:
142
Core/UI/MainUI/Settings/Crafting.lua
Normal file
142
Core/UI/MainUI/Settings/Crafting.lua
Normal file
@@ -0,0 +1,142 @@
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
-- TradeSkillMaster --
|
||||
-- https://tradeskillmaster.com --
|
||||
-- All Rights Reserved - Detailed license information included with addon. --
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
|
||||
local _, TSM = ...
|
||||
local Crafting = TSM.MainUI.Settings:NewPackage("Crafting")
|
||||
local L = TSM.Include("Locale").GetTable()
|
||||
local PlayerInfo = TSM.Include("Service.PlayerInfo")
|
||||
local UIElements = TSM.Include("UI.UIElements")
|
||||
local private = {
|
||||
altCharacters = {},
|
||||
altGuilds = {},
|
||||
}
|
||||
local BAD_MAT_PRICE_SOURCES = {
|
||||
matprice = true,
|
||||
}
|
||||
local BAD_CRAFT_VALUE_PRICE_SOURCES = {
|
||||
crafting = true,
|
||||
}
|
||||
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- Module Functions
|
||||
-- ============================================================================
|
||||
|
||||
function Crafting.OnInitialize()
|
||||
TSM.MainUI.Settings.RegisterSettingPage(L["Crafting"], "middle", private.GetCraftingSettingsFrame)
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- Crafting Settings UI
|
||||
-- ============================================================================
|
||||
|
||||
function private.GetCraftingSettingsFrame()
|
||||
TSM.UI.AnalyticsRecordPathChange("main", "settings", "crafting")
|
||||
wipe(private.altCharacters)
|
||||
wipe(private.altGuilds)
|
||||
for _, character in PlayerInfo.CharacterIterator(true) do
|
||||
tinsert(private.altCharacters, character)
|
||||
end
|
||||
for name in PlayerInfo.GuildIterator() do
|
||||
tinsert(private.altGuilds, name)
|
||||
end
|
||||
|
||||
return UIElements.New("ScrollFrame", "craftingSettings")
|
||||
:SetPadding(8, 8, 8, 0)
|
||||
:AddChild(TSM.MainUI.Settings.CreateExpandableSection("Crafting", "inventory", L["Inventory Options"], "")
|
||||
:AddChild(UIElements.New("Frame", "inventoryOptionsLabels")
|
||||
:SetLayout("HORIZONTAL")
|
||||
:SetMargin(0, 0, 0, 4)
|
||||
:SetHeight(20)
|
||||
:AddChild(UIElements.New("Text", "label")
|
||||
:SetMargin(0, 12, 0, 0)
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(L["Ignore Characters"])
|
||||
)
|
||||
:AddChild(UIElements.New("Text", "label")
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetText(L["Ignore Guilds"])
|
||||
)
|
||||
)
|
||||
:AddChild(UIElements.New("Frame", "inventoryOptionsDropdowns")
|
||||
:SetLayout("HORIZONTAL")
|
||||
:SetHeight(24)
|
||||
:AddChild(UIElements.New("MultiselectionDropdown", "charDropdown")
|
||||
:SetMargin(0, 12, 0, 0)
|
||||
:SetItems(private.altCharacters, private.altCharacters)
|
||||
:SetSettingInfo(TSM.db.global.craftingOptions, "ignoreCharacters")
|
||||
:SetSelectionText(L["No Characters"], L["%d Characters"], L["All Characters"])
|
||||
)
|
||||
:AddChild(UIElements.New("MultiselectionDropdown", "guildDropdown")
|
||||
:SetItems(private.altGuilds, private.altGuilds)
|
||||
:SetSettingInfo(TSM.db.global.craftingOptions, "ignoreGuilds")
|
||||
:SetSelectionText(L["No Guilds"], L["%d Guilds"], L["All Guilds"])
|
||||
)
|
||||
)
|
||||
)
|
||||
:AddChild(TSM.MainUI.Settings.CreateExpandableSection("Crafting", "price", L["Default price configuration"], "")
|
||||
:AddChild(UIElements.New("Text", "matCostLabel")
|
||||
:SetHeight(20)
|
||||
:SetMargin(0, 0, 0, 4)
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetTextColor("TEXT_ALT")
|
||||
:SetText(L["Default material cost method"])
|
||||
)
|
||||
:AddChild(UIElements.New("MultiLineInput", "matCostInput")
|
||||
:SetHeight(70)
|
||||
:SetMargin(0, 0, 0, 12)
|
||||
:SetValidateFunc("CUSTOM_PRICE", BAD_MAT_PRICE_SOURCES)
|
||||
:SetSettingInfo(TSM.db.global.craftingOptions, "defaultMatCostMethod")
|
||||
)
|
||||
:AddChild(UIElements.New("Text", "craftValueLabel")
|
||||
:SetHeight(20)
|
||||
:SetMargin(0, 0, 0, 4)
|
||||
:SetFont("BODY_BODY2_MEDIUM")
|
||||
:SetTextColor("TEXT_ALT")
|
||||
:SetText(L["Default craft value method"])
|
||||
)
|
||||
:AddChild(UIElements.New("MultiLineInput", "matCostInput")
|
||||
:SetHeight(70)
|
||||
:SetValidateFunc("CUSTOM_PRICE", BAD_CRAFT_VALUE_PRICE_SOURCES)
|
||||
:SetSettingInfo(TSM.db.global.craftingOptions, "defaultCraftPriceMethod")
|
||||
)
|
||||
)
|
||||
:AddChild(TSM.MainUI.Settings.CreateExpandableSection("Crafting", "cooldowns", L["Ignored Cooldowns"], L["Use this list to manage what cooldowns you'd like TSM to ignore from crafting."])
|
||||
:AddChild(UIElements.New("QueryScrollingTable", "items")
|
||||
:SetHeight(126)
|
||||
:GetScrollingTableInfo()
|
||||
:NewColumn("item")
|
||||
:SetTitle(L["Cooldown"])
|
||||
:SetFont("BODY_BODY3")
|
||||
:SetJustifyH("LEFT")
|
||||
:SetTextInfo(nil, private.CooldownGetText)
|
||||
:DisableHiding()
|
||||
:Commit()
|
||||
:Commit()
|
||||
:SetQuery(TSM.Crafting.CreateIgnoredCooldownQuery())
|
||||
:SetAutoReleaseQuery(true)
|
||||
:SetSelectionDisabled(true)
|
||||
:SetScript("OnRowClick", private.IgnoredCooldownOnRowClick)
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
-- Private Helper Functions
|
||||
-- ============================================================================
|
||||
|
||||
function private.CooldownGetText(row)
|
||||
return row:GetField("characterKey").." - "..TSM.Crafting.GetName(row:GetField("spellId"))
|
||||
end
|
||||
|
||||
function private.IgnoredCooldownOnRowClick(_, row)
|
||||
TSM.Crafting.RemoveIgnoredCooldown(row:GetFields("characterKey", "spellId"))
|
||||
end
|
||||
Reference in New Issue
Block a user