Files
Freewood-OctoWoW-Codex/CodexFavUI.lua
T
2026-10-27 14:08:13 +00:00

104 lines
3.6 KiB
Lua

-- Freewood-OctoWoW-Codex: Favoriten und Notizen sichern / uebertragen (Export und Import als Text)
local ADDON, NS = ...
local FW = _G.Freewood
local Codex = NS.Codex
if not FW or not Codex or not FW.UI then
return
end
local UI = FW.UI
local FavUI = {}
NS.FavUI = FavUI
Codex.FavUI = FavUI
local win
local function Build()
local L = FW.L
local w = UI.CreatePanel(UIParent, "bg", "gold")
w:SetSize(520, 190)
w:SetPoint("CENTER", UIParent, "CENTER", 0, 0)
w:SetFrameStrata("DIALOG")
w:EnableMouse(true)
w:Hide()
local title = UI.CreateLabel(w, L.CODEX_FAVX_TITLE, { font = "heading", size = 14, color = "goldLight" })
title:SetPoint("TOPLEFT", w, "TOPLEFT", 16, -14)
local note = UI.CreateLabel(w, L.CODEX_FAVX_NOTE, { size = 11, color = "textDim", justifyV = "TOP" })
note:SetPoint("TOPLEFT", w, "TOPLEFT", 16, -40)
note:SetPoint("TOPRIGHT", w, "TOPRIGHT", -16, -40)
note:SetHeight(44)
note:SetWordWrap(true)
local box = UI.CreatePanel(w, "bgDeep", "bronze")
box:SetHeight(26)
box:SetPoint("TOPLEFT", w, "TOPLEFT", 16, -92)
box:SetPoint("TOPRIGHT", w, "TOPRIGHT", -16, -92)
local edit = CreateFrame("EditBox", nil, box)
edit:SetAutoFocus(false)
edit:SetPoint("TOPLEFT", box, "TOPLEFT", 8, -2)
edit:SetPoint("BOTTOMRIGHT", box, "BOTTOMRIGHT", -8, 2)
edit:SetMaxLetters(0)
if not edit:SetFont(UI.GetFontPath("body"), 12, "") then
edit:SetFont("Fonts\\FRIZQT__.TTF", 12, "")
end
edit:SetTextColor(UI.Color("text"))
edit:SetScript("OnEscapePressed", function(self) self:ClearFocus() end)
w.edit = edit
local status = UI.CreateLabel(w, "", { size = 11, color = "textDim" })
status:SetPoint("TOPLEFT", w, "TOPLEFT", 16, -126)
status:SetPoint("TOPRIGHT", w, "TOPRIGHT", -16, -126)
w.status = status
local export = UI.CreateButton(w, L.CODEX_FAVX_EXPORT, 150, 26, function()
local text, n = Codex.FavExport()
edit:SetText(text)
edit:SetFocus()
edit:HighlightText()
status:SetText(string.format(L.CODEX_FAVX_EXPORTED, n))
end, "default")
export:SetPoint("BOTTOMLEFT", w, "BOTTOMLEFT", 16, 14)
local import = UI.CreateButton(w, L.CODEX_FAVX_IMPORT, 150, 26, function()
local added, notes, bad = Codex.FavImport(edit:GetText())
if not added then
status:SetText(L.CODEX_FAVX_BAD)
return
end
status:SetText(string.format(L.CODEX_FAVX_IMPORTED, added, notes, bad))
FW:Fire("CODEX_CHANGED", "import")
end, "primary")
import:SetPoint("LEFT", export, "RIGHT", 8, 0)
local close = UI.CreateButton(w, L.CODEX_FAVX_CLOSE, 100, 26, function() w:Hide() end, "default")
close:SetPoint("BOTTOMRIGHT", w, "BOTTOMRIGHT", -16, 14)
w.exportButton, w.importButton = export, import
return w
end
function FavUI.Open()
win = win or Build()
win.status:SetText("")
win:Show()
return win
end
if UI.RegisterSettingsSection then
UI:RegisterSettingsSection("codex-fav", {
order = 107,
height = 110,
build = function(parent)
local L = FW.L
local f, stack = UI.CreateSection(parent, L.CODEX_FAVX_HEADER)
local note = UI.CreateLabel(f, L.CODEX_FAVX_SECTION_NOTE, { size = 11, color = "textDim", justifyV = "TOP" })
stack:Add(note, { fit = true, gap = 8 })
local open = UI.CreateButton(f, L.CODEX_FAVX_OPEN, 240, 26, function() FavUI.Open() end, "default")
stack:Add(open, { height = 26, gap = 10 })
stack:Layout()
return f
end,
refresh = function() end,
})
end