From e77803cda8de28ec5370df497fd3cb9b07788b63 Mon Sep 17 00:00:00 2001 From: Lag Date: Wed, 7 Aug 2019 21:36:58 +0200 Subject: [PATCH] cleanup and namespace fix for locales --- .pkgmeta | 1 - AtlasLootClassic/Locales/constants.cn.lua | 2 +- AtlasLootClassic/Locales/constants.de.lua | 2 +- AtlasLootClassic/Locales/constants.es.lua | 2 +- AtlasLootClassic/Locales/constants.fr.lua | 2 +- AtlasLootClassic/Locales/constants.it.lua | 2 +- AtlasLootClassic/Locales/constants.kr.lua | 2 +- AtlasLootClassic/Locales/constants.lua | 2 +- AtlasLootClassic/Locales/constants.mx.lua | 2 +- AtlasLootClassic/Locales/constants.pt.lua | 2 +- AtlasLootClassic/Locales/constants.ru.lua | 2 +- AtlasLootClassic/Locales/constants.tw.lua | 2 +- .../Locales/constants.tw.lua | 2 +- .../Libs/LibDialog-1.0/LibDialog-1.0.lua | 991 ------------------ .../Libs/LibDialog-1.0/LibDialog-1.0.toc | 12 - .../Libs/LibDialog-1.0/lib.xml | 4 - AtlasLootClassic_Options/embeds.xml | 1 - 17 files changed, 12 insertions(+), 1021 deletions(-) delete mode 100644 AtlasLootClassic_Options/Libs/LibDialog-1.0/LibDialog-1.0.lua delete mode 100644 AtlasLootClassic_Options/Libs/LibDialog-1.0/LibDialog-1.0.toc delete mode 100644 AtlasLootClassic_Options/Libs/LibDialog-1.0/lib.xml diff --git a/.pkgmeta b/.pkgmeta index 7a61ef59..ece2a581 100644 --- a/.pkgmeta +++ b/.pkgmeta @@ -17,7 +17,6 @@ externals: AtlasLootClassic_Options/Libs/AceConfig-3.0: https://repos.wowace.com/wow/ace3/trunk/AceConfig-3.0 AtlasLootClassic_Options/Libs/AceGUI-3.0: https://repos.wowace.com/wow/ace3/trunk/AceGUI-3.0 AtlasLootClassic_Options/Libs/AceDBOptions-3.0: https://repos.wowace.com/wow/ace3/trunk/AceDBOptions-3.0 - AtlasLootClassic_Options/Libs/LibDialog-1.0: https://repos.wowace.com/wow/libdialog-1-0 AtlasLootClassic_Options/Libs/AceGUI-3.0-SharedMediaWidgets: https://repos.wowace.com/wow/ace-gui-3-0-shared-media-widgets/trunk/AceGUI-3.0-SharedMediaWidgets AtlasLootClassic/Libs/LibClassicItemSets-1.0: url: https://github.com/Hoizame/LibClassicItemSets-1.0.git diff --git a/AtlasLootClassic/Locales/constants.cn.lua b/AtlasLootClassic/Locales/constants.cn.lua index 3e929b85..9df3a89f 100644 --- a/AtlasLootClassic/Locales/constants.cn.lua +++ b/AtlasLootClassic/Locales/constants.cn.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="zhCN", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="zhCN", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.de.lua b/AtlasLootClassic/Locales/constants.de.lua index b71d5845..571ae84e 100644 --- a/AtlasLootClassic/Locales/constants.de.lua +++ b/AtlasLootClassic/Locales/constants.de.lua @@ -3,4 +3,4 @@ local AL = _G.AtlasLoot.GetLocales("deDE") if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="deDE", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="deDE", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.es.lua b/AtlasLootClassic/Locales/constants.es.lua index 9e569afb..40984b07 100644 --- a/AtlasLootClassic/Locales/constants.es.lua +++ b/AtlasLootClassic/Locales/constants.es.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="esES", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="esES", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.fr.lua b/AtlasLootClassic/Locales/constants.fr.lua index 85794684..20fde352 100644 --- a/AtlasLootClassic/Locales/constants.fr.lua +++ b/AtlasLootClassic/Locales/constants.fr.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="frFR", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="frFR", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.it.lua b/AtlasLootClassic/Locales/constants.it.lua index 34acba72..eb513cd4 100644 --- a/AtlasLootClassic/Locales/constants.it.lua +++ b/AtlasLootClassic/Locales/constants.it.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="itIT", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="itIT", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.kr.lua b/AtlasLootClassic/Locales/constants.kr.lua index 5b936a84..dfe8f4d7 100644 --- a/AtlasLootClassic/Locales/constants.kr.lua +++ b/AtlasLootClassic/Locales/constants.kr.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="koKR", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="koKR", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.lua b/AtlasLootClassic/Locales/constants.lua index a62afe5d..128748f1 100644 --- a/AtlasLootClassic/Locales/constants.lua +++ b/AtlasLootClassic/Locales/constants.lua @@ -1,3 +1,3 @@ local AL = _G.AtlasLoot.Locales -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="enUS", true-if-value-equals-key = true, format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="enUS", true-if-value-equals-key = true, format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.mx.lua b/AtlasLootClassic/Locales/constants.mx.lua index ec3bee41..f0426e77 100644 --- a/AtlasLootClassic/Locales/constants.mx.lua +++ b/AtlasLootClassic/Locales/constants.mx.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="esMX", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="esMX", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.pt.lua b/AtlasLootClassic/Locales/constants.pt.lua index 26201f97..5cee636a 100644 --- a/AtlasLootClassic/Locales/constants.pt.lua +++ b/AtlasLootClassic/Locales/constants.pt.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="ptBR", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="ptBR", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.ru.lua b/AtlasLootClassic/Locales/constants.ru.lua index 6bc5a026..cae585d3 100644 --- a/AtlasLootClassic/Locales/constants.ru.lua +++ b/AtlasLootClassic/Locales/constants.ru.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="ruRU", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="ruRU", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic/Locales/constants.tw.lua b/AtlasLootClassic/Locales/constants.tw.lua index fe57bc30..4389ac0c 100644 --- a/AtlasLootClassic/Locales/constants.tw.lua +++ b/AtlasLootClassic/Locales/constants.tw.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="zhTW", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="")@ \ No newline at end of file +--@localization(locale="zhTW", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore")@ \ No newline at end of file diff --git a/AtlasLootClassic_Factions/Locales/constants.tw.lua b/AtlasLootClassic_Factions/Locales/constants.tw.lua index 5d8ad2c9..4a2f8690 100644 --- a/AtlasLootClassic_Factions/Locales/constants.tw.lua +++ b/AtlasLootClassic_Factions/Locales/constants.tw.lua @@ -3,4 +3,4 @@ if not AL then return end -- These localization strings are translated on Curseforge: https://www.curseforge.com/wow/addons/atlaslootclassic/localization ---@localization(locale="zhTW", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="PvFactionsP")@ \ No newline at end of file +--@localization(locale="zhTW", format="lua_additive_table", table-name="AL", handle-unlocalized="ignore", namespace="Factions")@ \ No newline at end of file diff --git a/AtlasLootClassic_Options/Libs/LibDialog-1.0/LibDialog-1.0.lua b/AtlasLootClassic_Options/Libs/LibDialog-1.0/LibDialog-1.0.lua deleted file mode 100644 index 2d1546e6..00000000 --- a/AtlasLootClassic_Options/Libs/LibDialog-1.0/LibDialog-1.0.lua +++ /dev/null @@ -1,991 +0,0 @@ ---- **LibDialog-1.0** provides methods for creating dialogs similar to Blizzard's default StaticPopup dialogs, --- with additions (such as multiple CheckButtons) and improvements (such as multiple EditBoxes, frame and widget --- recycling, and not tainting default UI elements). --- @class file --- @name LibDialog-1.0.lua --- @release 1 - ------------------------------------------------------------------------ --- Upvalued Lua API. ------------------------------------------------------------------------ --- Functions -local error = _G.error -local pairs = _G.pairs -local tonumber = _G.tonumber - --- Libraries -local table = _G.table - ------------------------------------------------------------------------ --- Library namespace. ------------------------------------------------------------------------ -local LibStub = _G.LibStub -local MAJOR = "LibDialog-1.0" - -_G.assert(LibStub, MAJOR .. " requires LibStub") - -local MINOR = 8 -- Should be manually increased -local lib, oldminor = LibStub:NewLibrary(MAJOR, MINOR) - -if not lib then - return -end -- No upgrade needed - -local dialog_prototype = _G.CreateFrame("Frame", nil, _G.UIParent) -local dialog_meta = { - __index = dialog_prototype -} - ------------------------------------------------------------------------ --- Migrations. ------------------------------------------------------------------------ -lib.delegates = lib.delegates or {} -lib.queued_delegates = lib.queues_delegates or {} -lib.delegate_queue = lib.delegate_queue or {} - -lib.active_dialogs = lib.active_dialogs or {} -lib.active_buttons = lib.active_buttons or {} -lib.active_checkboxes = lib.active_checkboxes or {} -lib.active_editboxes = lib.active_editboxes or {} -lib.active_icons = lib.active_icons or {} - -lib.dialog_heap = lib.dialog_heap or {} -lib.button_heap = lib.button_heap or {} -lib.checkbox_heap = lib.checkbox_heap or {} -lib.editbox_heap = lib.editbox_heap or {} -lib.icon_heap = lib.icon_heap or {} - ------------------------------------------------------------------------ --- Constants. ------------------------------------------------------------------------ -local METHOD_USAGE_FORMAT = MAJOR .. ":%s() - %s." - -local DEFAULT_DIALOG_WIDTH = 320 -local DEFAULT_DIALOG_HEIGHT = 72 - -local DEFAULT_BUTTON_WIDTH = 128 -local DEFAULT_BUTTON_HEIGHT = 21 - -local DEFAULT_EDITBOX_WIDTH = 130 -local DEFAULT_EDITBOX_HEIGHT = 32 - -local DEFAULT_CHECKBOX_SIZE = 32 - -local DEFAULT_ICON_SIZE = 36 - -local DEFAULT_DIALOG_TEXT_WIDTH = 290 - -local MAX_DIALOGS = 4 -local MAX_BUTTONS = 3 - -local DEFAULT_DIALOG_BACKDROP = { - bgFile = [[Interface\DialogFrame\UI-DialogBox-Background]], - edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]], - tile = true, - tileSize = 32, - edgeSize = 32, - insets = { - left = 11, - right = 12, - top = 12, - bottom = 11, - }, -} - -local TEXT_HORIZONTAL_JUSTIFICATIONS = { - CENTER = "CENTER", - LEFT = "LEFT", - RIGHT = "RIGHT", -} - -local TEXT_VERTICAL_JUSTIFICATIONS = { - BOTTOM = "BOTTOM", - MIDDLE = "MIDDLE", - TOP = "TOP", -} - ------------------------------------------------------------------------ --- Upvalues. ------------------------------------------------------------------------ -local delegates = lib.delegates -local queued_delegates = lib.queued_delegates -local delegate_queue = lib.delegate_queue - -local active_dialogs = lib.active_dialogs -local active_buttons = lib.active_buttons -local active_checkboxes = lib.active_checkboxes -local active_editboxes = lib.active_editboxes - -local dialog_heap = lib.dialog_heap -local button_heap = lib.button_heap -local checkbox_heap = lib.checkbox_heap -local editbox_heap = lib.editbox_heap - ------------------------------------------------------------------------ --- Helper functions. ------------------------------------------------------------------------ -local function _ProcessQueue() - if #active_dialogs == MAX_DIALOGS then - return - end - local delegate = table.remove(delegate_queue) - - if not delegate then - return - end - local data = queued_delegates[delegate] - queued_delegates[delegate] = nil - - if data == "" then - data = nil - end - return lib:Spawn(delegate, data) -end - -local function _RefreshDialogAnchors() - for index = 1, #active_dialogs do - local current_dialog = active_dialogs[index] - current_dialog:ClearAllPoints() - - if index == 1 then - local default_dialog = _G.StaticPopup_DisplayedFrames[#_G.StaticPopup_DisplayedFrames] - - if default_dialog then - current_dialog:SetPoint("TOP", default_dialog, "BOTTOM", 0, 0) - else - current_dialog:SetPoint("TOP", _G.UIParent, "TOP", 0, -135) - end - else - current_dialog:SetPoint("TOP", active_dialogs[index - 1], "BOTTOM", 0, 0) - end - end -end - -local function _RecycleWidget(widget, actives, heap) - local remove_index - - for index = 1, #actives do - if actives[index] == widget then - remove_index = index - end - end - - if not remove_index then - return - end - table.remove(actives, remove_index):ClearAllPoints() - table.insert(heap, widget) -end - -local function _ReleaseCheckBox(checkbox) - checkbox.container:Hide() - _RecycleWidget(checkbox, active_checkboxes, checkbox_heap) - checkbox.container:ClearAllPoints() - checkbox.container:SetParent(nil) -end - -local function _ReleaseEditBox(editbox) - editbox:SetMaxLetters(0) - editbox:SetMaxBytes(0) - editbox:Hide() - _RecycleWidget(editbox, active_editboxes, editbox_heap) - editbox:SetParent(nil) -end - -local function _ReleaseButton(button) - button:Hide() - _RecycleWidget(button, active_buttons, button_heap) - button:SetParent(nil) -end - -local function _ReleaseDialog(dialog) - dialog.delegate = nil - dialog.data = nil - - if dialog.editboxes then - for index = 1, #dialog.editboxes do - _ReleaseEditBox(dialog.editboxes[index]) - end - dialog.editboxes = nil - end - - if dialog.checkboxes then - for index = 1, #dialog.checkboxes do - _ReleaseCheckBox(dialog.checkboxes[index]) - end - dialog.checkboxes = nil - end - - if dialog.buttons then - for index = 1, #dialog.buttons do - _ReleaseButton(dialog.buttons[index]) - end - dialog.buttons = nil - end - _RecycleWidget(dialog, active_dialogs, dialog_heap) - _RefreshDialogAnchors() -end - -local function _Dialog_OnShow(dialog) - local delegate = dialog.delegate - - if not delegate then - return - end - - _G.PlaySound(SOUNDKIT.IG_MAINMENU_OPEN, "Master") - - if delegate.on_show then - delegate.on_show(dialog, dialog.data) - end -end - -local function _Dialog_OnHide(dialog) - _G.PlaySound(SOUNDKIT.IG_MAINMENU_CLOSE, "Master") - - -- Required so lib:ActiveDialog() will return false if called from code which is called from the delegate's on_hide - _RecycleWidget(dialog, active_dialogs, dialog_heap) - - local delegate = dialog.delegate - if delegate.on_hide then - delegate.on_hide(dialog, dialog.data) - end - - _ReleaseDialog(dialog) - - if #delegate_queue > 0 then - local delegate - repeat - delegate = _ProcessQueue() - until not delegate - end -end - -local function _Dialog_OnUpdate(dialog, elapsed) - local delegate = dialog.delegate - - if dialog.time_remaining and dialog.time_remaining > 0 then - local remaining = dialog.time_remaining - elapsed - - if remaining <= 0 then - dialog.time_remaining = nil - - if delegate and delegate.on_cancel then - delegate.on_cancel(dialog, dialog.data, "timeout") - end - dialog:Hide() - return - end - dialog.time_remaining = remaining - end - - if delegate and delegate.on_update then - delegate.on_update(dialog, elapsed) - end -end - -local function _Dialog_OnEvent(self, event, ...) - if self[event] then - return self[event](self, event, ...) - end -end - -if not lib.hooked_onhide then - _G.hooksecurefunc("StaticPopup_OnHide", function() - _RefreshDialogAnchors() - - if #delegate_queue > 0 then - local delegate - repeat - delegate = _ProcessQueue() - until not delegate - end - end) - lib.hooked_onhide = true -end - -if not lib.hooked_set_up_position then - _G.hooksecurefunc("StaticPopup_SetUpPosition", function() - _RefreshDialogAnchors() - end) - lib.hooked_set_up_position = true -end - -if not lib.hooked_escape_pressed then - local dialogs_to_release = {} - - _G.hooksecurefunc("StaticPopup_EscapePressed", function() - table.wipe(dialogs_to_release) - - for index = 1, #active_dialogs do - local dialog = active_dialogs[index] - - if dialog.delegate.hide_on_escape then - dialogs_to_release[dialog] = true - end - end - - for dialog in pairs(dialogs_to_release) do - local delegate = dialog.delegate - - if delegate.on_cancel and not delegate.no_cancel_on_escape then - delegate.on_cancel(dialog) - end - dialog:Hide() - end - - if #delegate_queue > 0 then - local delegate - repeat - delegate = _ProcessQueue() - until not delegate - end - end) - lib.hooked_escape_pressed = true -end - -local function CheckBox_GetValue(checkbox) - local dialog = checkbox:GetParent():GetParent() - local get_value = dialog.delegate.checkboxes[checkbox:GetID()].get_value - - if get_value then - return get_value(checkbox, dialog.data) - end -end - -local function CheckBox_OnClick(checkbox, mouse_button, down) - local dialog = checkbox:GetParent():GetParent() - local set_value = dialog.delegate.checkboxes[checkbox:GetID()].set_value - - if set_value then - set_value(checkbox, CheckBox_GetValue(checkbox), dialog.data, mouse_button, down) - end - checkbox:SetChecked(CheckBox_GetValue(checkbox)) -end - -local function _AcquireCheckBox(parent, index) - local checkbox = table.remove(checkbox_heap) - - if not checkbox then - local container = _G.CreateFrame("Frame", ("%s_CheckBoxContainer%d"):format(MAJOR, #active_checkboxes + 1), _G.UIParent) - container:SetHeight(DEFAULT_CHECKBOX_SIZE) - - checkbox = _G.CreateFrame("CheckButton", ("%s_CheckBox%d"):format(MAJOR, #active_checkboxes + 1), container, "UICheckButtonTemplate") - checkbox:SetScript("OnClick", CheckBox_OnClick) - - checkbox.container = container - end - active_checkboxes[#active_checkboxes + 1] = checkbox - - checkbox:SetPoint("LEFT", 0, 0) - checkbox.text:SetText(parent.delegate.checkboxes[index].label or "") - checkbox.container:SetParent(parent) - checkbox:SetID(index) - checkbox:SetChecked(CheckBox_GetValue(checkbox)) - - checkbox.container:Show() - return checkbox -end - -local function EditBox_OnEnterPressed(editbox) - if not editbox.autoCompleteParams or not _G.AutoCompleteEditBox_OnEnterPressed(editbox) then - local dialog = editbox:GetParent() - local on_enter_pressed = dialog.delegate.editboxes[editbox:GetID()].on_enter_pressed - - if on_enter_pressed then - on_enter_pressed(editbox, dialog.data) - end - end -end - -local function EditBox_OnEscapePressed(editbox) - local dialog = editbox:GetParent() - local on_escape_pressed = dialog.delegate.editboxes[editbox:GetID()].on_escape_pressed - - if on_escape_pressed then - on_escape_pressed(editbox, dialog.data) - end -end - -local function EditBox_OnShow(editbox) - local dialog = editbox:GetParent() - local on_show = dialog.delegate.editboxes[editbox:GetID()].on_show - - if on_show then - on_show(editbox, dialog.data) - end -end - -local function EditBox_OnTextChanged(editbox, user_input) - if not editbox.autoCompleteParams or not _G.AutoCompleteEditBox_OnTextChanged(editbox, user_input) then - local dialog = editbox:GetParent() - local on_text_changed = dialog.delegate.editboxes[editbox:GetID()].on_text_changed - - if on_text_changed then - on_text_changed(editbox, dialog.data) - end - end -end - -local function _AcquireEditBox(dialog, index) - local editbox = table.remove(editbox_heap) - - if not editbox then - local editbox_name = ("%s_EditBox%d"):format(MAJOR, #active_editboxes + 1) - - editbox = _G.CreateFrame("EditBox", editbox_name, _G.UIParent, "AutoCompleteEditBoxTemplate") - editbox:SetWidth(130) - editbox:SetHeight(32) - editbox:SetFontObject("ChatFontNormal") - - local left = editbox:CreateTexture(("%sLeft"):format(editbox_name), "BACKGROUND") - left:SetTexture([[Interface\ChatFrame\UI-ChatInputBorder-Left2]]) - left:SetWidth(32) - left:SetHeight(32) - left:SetPoint("LEFT", -10, 0) - - local right = editbox:CreateTexture(("%sRight"):format(editbox_name), "BACKGROUND") - right:SetTexture([[Interface\ChatFrame\UI-ChatInputBorder-Right2]]) - right:SetWidth(32) - right:SetHeight(32) - right:SetPoint("RIGHT", 10, 0) - - local mid = editbox:CreateTexture(("%sMid"):format(editbox_name), "BACKGROUND") - mid:SetTexture([[Interface\ChatFrame\UI-ChatInputBorder-Mid2]]) - mid:SetHeight(32) - mid:SetPoint("TOPLEFT", left, "TOPRIGHT", 0, 0) - mid:SetPoint("TOPRIGHT", right, "TOPLEFT", 0, 0) - - local label = editbox:CreateFontString(("%sLabel"):format(editbox_name), "ARTWORK", "GameFontNormalSmall") - label:SetPoint("RIGHT", editbox, "LEFT", -15, 0) - - editbox.left = left - editbox.right = right - editbox.mid = mid - editbox.label = label - - editbox:SetScript("OnEnterPressed", EditBox_OnEnterPressed) - editbox:SetScript("OnEscapePressed", EditBox_OnEscapePressed) - editbox:SetScript("OnShow", EditBox_OnShow) - editbox:SetScript("OnTextChanged", EditBox_OnTextChanged) - end - local template = dialog.delegate.editboxes[index] - - active_editboxes[#active_editboxes + 1] = editbox - - editbox.addHighlightedText = true - - editbox:SetParent(dialog) - editbox:SetID(index) - editbox:SetWidth(template.width or DEFAULT_EDITBOX_WIDTH) - - editbox:SetAutoFocus(template.auto_focus) - - if not template.auto_focus then - editbox:ClearFocus() - end - editbox:SetMaxLetters(template.max_letters or 0) - editbox:SetMaxBytes(template.max_bytes or 0) - editbox:SetText(template.text or "") - - if template.label and template.label ~= "" then - editbox.label:SetText(template.label) - editbox.label:SetWidth(editbox.label:GetStringWidth()) - else - editbox.label:Hide() - end - editbox:Show() - - return editbox -end - -local function Button_OnClick(button, mouse_button, down) - local dialog = button:GetParent() - local hide = true - local on_click = dialog.delegate.buttons[button:GetID()].on_click - - if on_click then - hide = not on_click(dialog, dialog.data, "clicked") - end - - if hide then - dialog:Hide() - end -end - -local function _AcquireButton(parent, index) - local button = table.remove(button_heap) - - if not button then - local button_name = ("%s_Button%d"):format(MAJOR, #active_buttons + 1) - button = _G.CreateFrame("Button", button_name, _G.UIParent) - button:SetWidth(DEFAULT_BUTTON_WIDTH) - button:SetHeight(DEFAULT_BUTTON_HEIGHT) - - button:SetNormalTexture([[Interface\Buttons\UI-DialogBox-Button-Up]]) - button:GetNormalTexture():SetTexCoord(0, 1, 0, 0.71875) - - button:SetPushedTexture([[Interface\Buttons\UI-DialogBox-Button-Down]]) - button:GetPushedTexture():SetTexCoord(0, 1, 0, 0.71875) - - button:SetDisabledTexture([[Interface\Buttons\UI-DialogBox-Button-Disabled]]) - button:GetDisabledTexture():SetTexCoord(0, 1, 0, 0.71875) - - button:SetHighlightTexture([[Interface\Buttons\UI-DialogBox-Button-Highlight]], "ADD") - button:GetHighlightTexture():SetTexCoord(0, 1, 0, 0.71875) - - button:SetNormalFontObject("GameFontNormal") - button:SetDisabledFontObject("GameFontDisable") - button:SetHighlightFontObject("GameFontHighlight") - - button:SetScript("OnClick", Button_OnClick) - end - active_buttons[#active_buttons + 1] = button - - button:SetText(parent.delegate.buttons[index].text or "FOOF") - button:SetParent(parent) - button:SetID(index) - - button:Show() - return button -end - -local function _BuildDialog(delegate, data) - if #active_dialogs == MAX_DIALOGS then - if not queued_delegates[delegate] then - delegate_queue[#delegate_queue + 1] = delegate - queued_delegates[delegate] = data or "" - end - return - end - local dialog = table.remove(dialog_heap) - - if not dialog then - dialog = _G.setmetatable(_G.CreateFrame("Frame", ("%s_Dialog%d"):format(MAJOR, #active_dialogs + 1), _G.UIParent), dialog_meta) - dialog.is_new = true - - local close_button = _G.CreateFrame("Button", nil, dialog, "UIPanelCloseButton") - close_button:SetPoint("TOPRIGHT", -3, -3) - close_button:Hide() - - dialog.close_button = close_button - - local text = dialog:CreateFontString(nil, nil, "GameFontHighlight") - text:SetWidth(DEFAULT_DIALOG_TEXT_WIDTH) - text:SetPoint("TOP", 0, -16) - - dialog.text = text - end - dialog:Reset() - dialog.delegate = delegate - dialog.data = data - - dialog.text:SetText(delegate.text or "") - dialog.text:SetJustifyH(delegate.text_justify_h and TEXT_HORIZONTAL_JUSTIFICATIONS[delegate.text_justify_h:upper()] or "CENTER") - dialog.text:SetJustifyV(delegate.text_justify_v and TEXT_VERTICAL_JUSTIFICATIONS[delegate.text_justify_v:upper()] or "MIDDLE") - - if delegate.no_close_button then - dialog.close_button:Hide() - else - dialog.close_button:Show() - end - - if _G.type(delegate.icon) == "string" then - if not dialog.icon then - dialog.icon = dialog:CreateTexture(("%sIcon"):format(dialog:GetName()), "ARTWORK") - dialog.icon:SetPoint("LEFT", dialog, "LEFT", 16, 0) - end - - local icon_size = tonumber(delegate.icon_size) and delegate.icon_size or DEFAULT_ICON_SIZE - dialog.icon:SetSize(icon_size, icon_size) - dialog.icon:SetTexture(delegate.icon) - dialog.icon:Show() - elseif dialog.icon then - dialog.icon:SetTexture() - dialog.icon:Hide() - end - - if delegate.buttons and #delegate.buttons > 0 then - dialog.buttons = {} - - for index = 1, MAX_BUTTONS do - local button = delegate.buttons[index] - - if not button then - break - end - - if button.text then - table.insert(dialog.buttons, _AcquireButton(dialog, index)) - end - end - local NUM_BUTTONS = #dialog.buttons - - for index = 1, NUM_BUTTONS do - local button = dialog.buttons[index] - - if index == 1 then - if NUM_BUTTONS == 3 then - button:SetPoint("BOTTOMRIGHT", dialog, "BOTTOM", -72, 16) - elseif NUM_BUTTONS == 2 then - button:SetPoint("BOTTOMRIGHT", dialog, "BOTTOM", -6, 16) - elseif NUM_BUTTONS == 1 then - button:SetPoint("BOTTOM", dialog, "BOTTOM", 0, 16) - end - else - button:SetPoint("LEFT", dialog.buttons[index - 1], "RIGHT", 13, 0) - end - local width = button:GetTextWidth() - - if width > 110 then - button:SetWidth(width + 20) - else - button:SetWidth(120) - end - button:Enable() - end - end - local NUM_EDITBOXES = 0 - - if delegate.editboxes and #delegate.editboxes > 0 then - dialog.editboxes = {} - - for index = 1, #delegate.editboxes do - table.insert(dialog.editboxes, _AcquireEditBox(dialog, index)) - end - NUM_EDITBOXES = #dialog.editboxes - - for index = 1, NUM_EDITBOXES do - local editbox = dialog.editboxes[index] - - if index == 1 then - editbox:SetPoint("TOP", dialog.text, "BOTTOM", 0, -8) - else - editbox:SetPoint("TOP", dialog.editboxes[index - 1], "BOTTOM", 0, 0) - end - end - end - - if delegate.checkboxes and #delegate.checkboxes > 0 then - dialog.checkboxes = {} - - for index = 1, #delegate.checkboxes do - table.insert(dialog.checkboxes, _AcquireCheckBox(dialog, index)) - end - local max_string_width = 0 - - for index = 1, #dialog.checkboxes do - local string_width = dialog.checkboxes[index].text:GetStringWidth() - - if string_width > max_string_width then - max_string_width = string_width - end - end - - for index = 1, #dialog.checkboxes do - local checkbox = dialog.checkboxes[index] - checkbox.container:SetWidth(DEFAULT_CHECKBOX_SIZE + max_string_width) - - if index == 1 then - if NUM_EDITBOXES > 0 then - checkbox.container:SetPoint("TOPLEFT", dialog.editboxes[NUM_EDITBOXES], "BOTTOMLEFT", -12, 0) - else - checkbox.container:SetPoint("TOP", dialog.text, "BOTTOM", 0, -8) - end - else - checkbox.container:SetPoint("TOPLEFT", dialog.checkboxes[index - 1].container, "BOTTOMLEFT", 0, 0) - end - end - end - dialog.time_remaining = delegate.duration - return dialog -end - ------------------------------------------------------------------------ --- Library methods. ------------------------------------------------------------------------ ---- Register a new dialog delegate. --- @name LibDialog-1.0:Register --- @class function --- @paramsig delegate_name, delegate --- @param delegate_name The name the delegate table will be registered under. --- @param delegate The delegate table definition. -function lib:Register(delegate_name, delegate) - if _G.type(delegate_name) ~= "string" or delegate_name == "" then - error(METHOD_USAGE_FORMAT:format("Register", "delegate_name must be a non-empty string"), 2) - end - - if _G.type(delegate) ~= "table" then - error(METHOD_USAGE_FORMAT:format("Register", "delegate must be a table"), 2) - end - delegates[delegate_name] = delegate -end - -local function _FindDelegate(method_name, reference) - local reference_type = _G.type(reference) - - if reference == "" or (reference_type ~= "string" and reference_type ~= "table") then - error(METHOD_USAGE_FORMAT:format(method_name, "reference must be a delegate table or a non-empty string"), 3) - end - local delegate - - if reference_type == "string" then - if not delegates[reference] then - error(METHOD_USAGE_FORMAT:format(method_name, ("\"%s\" does not match a registered delegate"):format(reference)), 3) - end - delegate = delegates[reference] - else - delegate = reference - end - return delegate -end - ---- Spawns a dialog from a delegate reference. --- @name LibDialog-1.0:Spawn --- @class function --- @paramsig reference[, data] --- @param reference The delegate to be used for the spawned dialog. Can be either a string, in which case the delegate must be registered, or a delegate definition table. --- @param data Additional data to be passed on to the resultant dialog. -function lib:Spawn(reference, data) - local delegate = _FindDelegate("Spawn", reference) - - ----------------------------------------------------------------------- - -- Check delegate conditionals before building. - ----------------------------------------------------------------------- - if _G.UnitIsDeadOrGhost("player") and not delegate.show_while_dead then - if delegate.on_cancel then - delegate.on_cancel() - end - return - end - - if _G.InCinematic() and not delegate.show_during_cinematic then - if delegate.on_cancel then - delegate.on_cancel() - end - return - end - - if delegate.is_exclusive then - for index = 1, #active_dialogs do - local dialog = active_dialogs[index] - - if dialog.delegate.is_exclusive then - if dialog.delegate.on_cancel then - dialog.delegate.on_cancel(dialog, dialog.data, "override") - end - dialog:Hide() - end - end - end - local cancel_list = delegate.cancels_on_spawn - - if cancel_list then - for index = 1, #cancel_list do - local delegate_name = cancel_list[index] - local delegate_to_cancel = delegates[delegate_name] - - if delegate_to_cancel then - for index = 1, #active_dialogs do - local dialog = active_dialogs[index] - - if dialog.delegate == delegate_to_cancel then - dialog:Hide() - - if dialog.delegate.on_cancel then - dialog.delegate.on_cancel(dialog, dialog.data, "override") - end - end - end - else - error(("\"%s\" does not match a registered delegate - unable to cancel"):format(delegate_name), 2) - end - end - end - local dialog = self:ActiveDialog(reference, data) - - if dialog then - local delegate = dialog.delegate - - if not delegate.no_cancel_on_reuse and delegate.on_cancel then - delegate.on_cancel(dialog, dialog.data, "override") - end - dialog:Hide() - end - - ----------------------------------------------------------------------- - -- Build new dialog and anchor it. - ----------------------------------------------------------------------- - dialog = _BuildDialog(delegate, data) - - if not dialog then - return - end - - if delegate.sound then - _G.PlaySound(delegate.sound) - end - - -- Anchor to the bottom of existing dialogs. If none exist, check to see if there are visible default StaticPopupDialogs and anchor to that instead; else, anchor to UIParent. - if #active_dialogs > 0 then - dialog:SetPoint("TOP", active_dialogs[#active_dialogs], "BOTTOM", 0, 0) - else - local default_dialog = _G.StaticPopup_DisplayedFrames[#_G.StaticPopup_DisplayedFrames] - - if default_dialog then - dialog:SetPoint("TOP", default_dialog, "BOTTOM", 0, 0) - else - dialog:SetPoint("TOP", _G.UIParent, "TOP", 0, -135) - end - end - active_dialogs[#active_dialogs + 1] = dialog - dialog:Show() - - if dialog.is_new then - _Dialog_OnShow(dialog) - dialog.is_new = nil - end - dialog:Resize() - return dialog -end - ---- Determines whether or not a specific dialog is currently active. --- @name LibDialog-1.0:ActiveDialog --- @class function --- @paramsig reference[, data] --- @param reference The delegate criteria for the dialog being targeted. Can be either a string, in which case the delegate must be registered, or a delegate definition table. --- @param data Additional data to be used as further criteria to determine if the target dialog is active - this would be the same data used to spawn the dialog. -function lib:ActiveDialog(reference, data) - local delegate = _FindDelegate("ActiveDialog", reference) - - for index = 1, #active_dialogs do - local dialog = active_dialogs[index] - - if dialog.delegate == delegate and (not data or dialog.data == data) then - return dialog - end - end -end - ---- Dismisses a specific dialog. --- @name LibDialog-1.0:Dismiss --- @class function --- @paramsig reference[, data] --- @param reference The delegate criteria for the dialog being targeted. Can be either a string, in which case the delegate must be registered, or a delegate definition table. --- @param data Additional data to be used as further criteria to identify the target dialog - this would be the same data used to spawn the dialog. -function lib:Dismiss(reference, data) - local delegate = _FindDelegate("Dismiss", reference) - - for index = 1, #active_dialogs do - local dialog = active_dialogs[index] - - if dialog.delegate == delegate and (not data or dialog.data == data) then - dialog:Hide() - end - end -end - ------------------------------------------------------------------------ --- Dialog methods. ------------------------------------------------------------------------ -function dialog_prototype:Reset() - self:SetWidth(DEFAULT_DIALOG_WIDTH) - self:SetHeight(DEFAULT_DIALOG_HEIGHT) - self:SetBackdrop(DEFAULT_DIALOG_BACKDROP) - - self:SetToplevel(true) - self:EnableKeyboard(true) - self:EnableMouse(true) - self:SetFrameStrata("DIALOG") - - self:SetScript("OnShow", _Dialog_OnShow) - self:SetScript("OnHide", _Dialog_OnHide) - self:SetScript("OnUpdate", _Dialog_OnUpdate) - self:SetScript("OnEvent", _Dialog_OnEvent) - - self:RegisterEvent("DISPLAY_SIZE_CHANGED") -end - -function dialog_prototype:Resize() - local delegate = self.delegate - if not delegate then - return - end - - local width = delegate.width or DEFAULT_DIALOG_WIDTH - local height = delegate.height or 0 - - -- Static size ignores widgets for resizing purposes. - if delegate.static_size then - if width > 0 then - self:SetWidth(width) - self.text:SetWidth(self:GetWidth() - 30) - end - - if height > 0 then - self:SetHeight(height) - end - return - end - - if self.buttons and #self.buttons > 0 then - height = height + 8 + DEFAULT_BUTTON_HEIGHT - - if #self.buttons == MAX_BUTTONS then - width = 440 - end - end - - if self.editboxes and #self.editboxes > 0 then - local dialog_left = self:GetLeft() - local dialog_right = self:GetRight() - local label_offset = 0 - local editbox_offset = 0 - - for index = 1, #self.editboxes do - local editbox = self.editboxes[index] - local editbox_right = editbox:GetRight() - height = height + DEFAULT_EDITBOX_HEIGHT - - if editbox_right then - if editbox_offset < 25 and dialog_right > editbox_right and (dialog_right - editbox_right) < 25 then - editbox_offset = 25 - elseif editbox_right > dialog_right and editbox_offset < editbox_right - dialog_right then - editbox_offset = 25 + (editbox_right - dialog_right) - end - end - - if editbox.label:IsShown() then - local label_left = editbox.label:GetLeft() - - if label_left and label_left < dialog_left and label_offset < dialog_left - label_left then - label_offset = dialog_left - label_left - end - end - end - width = width + label_offset + editbox_offset - end - - if self.checkboxes then - height = height + (DEFAULT_CHECKBOX_SIZE * #self.checkboxes) - end - - if self.icon and self.icon:IsShown() then - local icon_width = self.icon:GetWidth() + 32 - width = width + icon_width - self.text:SetWidth(width - icon_width - (self.close_button:GetWidth() + 16)) - else - self.text:SetWidth(width - 60) - end - height = height + 32 + self.text:GetHeight() - - self:SetWidth(width) - self:SetHeight(height) -end - ------------------------------------------------------------------------ --- Default dialog events. ------------------------------------------------------------------------ -function dialog_prototype:DISPLAY_SIZE_CHANGED() - self:Resize() -end diff --git a/AtlasLootClassic_Options/Libs/LibDialog-1.0/LibDialog-1.0.toc b/AtlasLootClassic_Options/Libs/LibDialog-1.0/LibDialog-1.0.toc deleted file mode 100644 index c33bdc3d..00000000 --- a/AtlasLootClassic_Options/Libs/LibDialog-1.0/LibDialog-1.0.toc +++ /dev/null @@ -1,12 +0,0 @@ -## Interface: 80000 -## Title: Lib: Dialog-1.0 -## Notes: Replacement for the default UI's StaticPopup dialogs. -## Author: Torhal -## Version: r93 -## LoadOnDemand: 1 -## X-Date: 2018-07-21T5:53:20Z -## X-Category: Libraries -## X-License: All Rights Reserved - -LibStub\LibStub.lua -lib.xml diff --git a/AtlasLootClassic_Options/Libs/LibDialog-1.0/lib.xml b/AtlasLootClassic_Options/Libs/LibDialog-1.0/lib.xml deleted file mode 100644 index e7763266..00000000 --- a/AtlasLootClassic_Options/Libs/LibDialog-1.0/lib.xml +++ /dev/null @@ -1,4 +0,0 @@ - -