From b6d64d65b531071f401e6e87ed51501fa256766d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Jaro=C5=A1?= Date: Fri, 7 Mar 2025 13:57:47 +0100 Subject: [PATCH] Checkbox also update settings --- Addon/Code/Options.lua | 61 ++++++++++++++++++++------------------- Addon/Code/Paragraphs.lua | 10 +++++-- Addon/Code/Quest.lua | 2 +- Addon/Code/QuestFrame.lua | 2 +- Addon/Code/Speech.lua | 6 ++-- sync.sh | 4 +-- 6 files changed, 45 insertions(+), 40 deletions(-) diff --git a/Addon/Code/Options.lua b/Addon/Code/Options.lua index e58dbe8..7639860 100644 --- a/Addon/Code/Options.lua +++ b/Addon/Code/Options.lua @@ -29,29 +29,20 @@ local function RegisterProxySettings(name, title, setter) ) end -local function CreateCheckbox(name, title) - Settings.CreateCheckbox( - Options.category, - RegisterAddOnSettings(name, title) - ) +local function CreateCheckbox(name, title, setter) + local register = RegisterAddOnSettings(name, title) + register:SetValueChangedCallback(setter) + Settings.CreateCheckbox(Options.category, register) end local function CreateDropdown(name, title, items, setter) - Settings.CreateDropdown( - Options.category, - RegisterProxySettings(name, title, setter), - items - ) + Settings.CreateDropdown(Options.category, RegisterProxySettings(name, title, setter), items) end local function CreateSlider(name, title, min, max, step, setter) local options = Settings.CreateSliderOptions(min, max, step) options:SetLabelFormatter(MinimalSliderWithSteppersMixin.Label.Right); - Settings.CreateSlider( - Options.category, - RegisterProxySettings(name, title, setter), - options - ) + Settings.CreateSlider(Options.category, RegisterProxySettings(name, title, setter), options) end local function CreateButton(title, label, setter) @@ -61,27 +52,30 @@ local function CreateButton(title, label, setter) end local function InitQuests() + local function Update(name, value) + CzechQuestsAddon_Store.config[name] = value + addon.QuestFrame:UpdateSettings() + end + + local function CreateQuestCheckbox(name, title) + CreateCheckbox(name, title, function (_, value) Update(name, value) end) + end + local function CreateQuestDropdown(name, title, items) - CreateDropdown(name, title, items, function (value) - CzechQuestsAddon_Store.config[name] = value - addon.QuestFrame:UpdateSettings() - end) + CreateDropdown(name, title, items, function (value) Update(name, value) end) end local function CreateQuestSlider(name, title, min, max, step) - CreateSlider(name, title, min, max, step, function (value) - CzechQuestsAddon_Store.config[name] = value - addon.QuestFrame:UpdateSettings() - end) + CreateSlider(name, title, min, max, step, function (value) Update(name, value) end) end local layout = Options.layout layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Questy")) - CreateCheckbox("QUEST_ENABLED", "Zapnout") + CreateQuestCheckbox("QUEST_ENABLED", "Zapnout") if (WOW_PROJECT_ID == WOW_PROJECT_CLASSIC) then - CreateCheckbox("QUEST_DARK_MODE", "Pouzit tmavy rezim") + CreateQuestCheckbox("QUEST_DARK_MODE", "Pouzit tmavy rezim") end CreateQuestDropdown("QUEST_HEADER_FONT_NAME", "Pismo nadpisu", addon.API.GetFontContainer) @@ -90,11 +84,18 @@ local function InitQuests() CreateQuestSlider("QUEST_HEADER_FONT_SIZE", "Velikost nadpisu", 10, 30, 1) CreateQuestSlider("QUEST_TEXT_FONT_SIZE", "Velikost textu", 10, 30, 1) - CreateSlider("QUEST_TEXTURE_ALPHA", "Pruhlednost pozadi", 10, 100, 10) - CreateCheckbox("QUEST_TEXTURE_ALPHA_ONLY_MOVING", "Pruhlednost pouze pri chuzi") + CreateQuestSlider("QUEST_TEXTURE_ALPHA", "Pruhlednost pozadi", 10, 100, 10) + CreateQuestCheckbox("QUEST_TEXTURE_ALPHA_ONLY_MOVING", "Pruhlednost pouze pri chuzi") end local function InitSpeeches() + local function CreateSpeechCheckbox(name, title) + CreateCheckbox(name, title, function (_, value) + CzechQuestsAddon_Store.config[name] = value + addon.SpeechFrame:UpdateSettings() + end) + end + local function CreateSpeechDropdown(name, title, items) CreateDropdown(name, title, items, function (value) CzechQuestsAddon_Store.config[name] = value @@ -112,14 +113,14 @@ local function InitSpeeches() local layout = Options.layout layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Bubliny")) - CreateCheckbox("SPEECH_ENABLED", "Zapnout") + CreateSpeechCheckbox("SPEECH_ENABLED", "Zapnout") CreateSpeechDropdown("SPEECH_TEXT_FONT_NAME", "Pismo *", addon.API.GetFontContainer) CreateSpeechSlider("SPEECH_TEXT_FONT_SIZE", "Velikost pisma *", 10, 30, 1) CreateSpeechSlider("SPEECH_FRAME_WIDTH", "Sirka okna", 200, 1000, 10) - CreateCheckbox("SPEECH_ORIGINAL_WHEN_MISSING", "Original pokud nenĂ­ preklad ") + CreateSpeechCheckbox("SPEECH_ORIGINAL_WHEN_MISSING", "Original pokud nenĂ­ preklad ") CreateButton('Resetovat pozici okna', "RESET", function() CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION = { x = 0, y = 0} @@ -135,7 +136,7 @@ local function InitOthers() local layout = Options.layout layout:AddInitializer(CreateSettingsListSectionHeaderInitializer("Ostatni")) - CreateCheckbox("DEBUG_MODE", "Zapnout DEBUG") + CreateCheckbox("DEBUG_MODE", "Zapnout DEBUG", function() end) end local function InitOptions() diff --git a/Addon/Code/Paragraphs.lua b/Addon/Code/Paragraphs.lua index 524461e..3c53c7a 100755 --- a/Addon/Code/Paragraphs.lua +++ b/Addon/Code/Paragraphs.lua @@ -19,6 +19,10 @@ local function SplitSentences(paragraph) return sentences end +local function ReplaceMultipleBreakLines(text) + return text:gsub("\r?\n+", "\n\n") +end + local function ParseParagraphs(original_text, translation_text) if original_text == "" or original_text == nil then return translation_text @@ -54,8 +58,8 @@ local function ParseParagraphs(original_text, translation_text) table.insert(translation_paragraphs, table.concat(collected, " ")) end - local final_text = table.concat(translation_paragraphs, "\n") - - return final_text + return ReplaceMultipleBreakLines( + table.concat(translation_paragraphs, "\n") + ) end addon.API.ParseParagraphs = ParseParagraphs \ No newline at end of file diff --git a/Addon/Code/Quest.lua b/Addon/Code/Quest.lua index f924188..167b3f0 100644 --- a/Addon/Code/Quest.lua +++ b/Addon/Code/Quest.lua @@ -17,7 +17,7 @@ local function ShowQuestTranslation(event) local data = CzechQuestsAddon:GetData("quest", questId) if data then local title = GetQuestTitle(data.title, questId) - frame:SetData(title, data.objective, "Popis", data.description, QuestLogFrame, 0, 0) + frame:SetData(title, data.objective, "Popis", data.description, QuestLogFrame, -20, -20) end end end diff --git a/Addon/Code/QuestFrame.lua b/Addon/Code/QuestFrame.lua index ab6b578..114a86c 100755 --- a/Addon/Code/QuestFrame.lua +++ b/Addon/Code/QuestFrame.lua @@ -71,7 +71,7 @@ function QuestFrame:ApplyTheme() self.Texture:SetTexture("Interface/QUESTFRAME/QuestBG"); self.Texture:SetTexCoord(0, .58, 0.005, 0.66) self:SetTextColor(0, 0, 0, 1) - if not CzechQuestsAddon_Store.config.QUEST_DARK_MODE then + if CzechQuestsAddon_Store.config.QUEST_DARK_MODE then self:SetBackdropColor(0, 0, 0, 1) self.Texture:SetColorTexture(0, 0, 0, 1) self:SetTextColor(255, 255, 255, 1) diff --git a/Addon/Code/Speech.lua b/Addon/Code/Speech.lua index 352475d..bb6fef0 100755 --- a/Addon/Code/Speech.lua +++ b/Addon/Code/Speech.lua @@ -24,9 +24,9 @@ local function ReflowMessages() addon.SpeechFrame.ContentFrame:SetHeight(offsetY) -- Scroll down - addon.SpeechFrame:UpdateScrollChildRect() - local maxScroll = addon.SpeechFrame:GetVerticalScrollRange() - addon.SpeechFrame:SetVerticalScroll(maxScroll) + --addon.SpeechFrame:UpdateScrollChildRect() + --local maxScroll = addon.SpeechFrame:GetVerticalScrollRange() + --addon.SpeechFrame:SetVerticalScroll(maxScroll) end local function RemoveMessage(frame) diff --git a/sync.sh b/sync.sh index 661846a..622b798 100644 --- a/sync.sh +++ b/sync.sh @@ -4,7 +4,7 @@ src_folder="." wow_source_folder="retail" wow_destiny_folder="retail" -#wow_destiny_folder="beta" +wow_destiny_folder="beta" #wow_source_folder="classic_era" #wow_destiny_folder="classic_era" @@ -16,4 +16,4 @@ fswatch -o "$src_folder" | while read -r change; do rsync -avu --delete "$src_folder" "$dest_folder" --exclude={'.*','*.png','*.sh','*.md','Addon/Data/**','downloader/**'} rsync -au --delete "$src_folder/Addon/Data/$wow_source_folder/" "$dest_folder/Addon/Data/" cp "$src_folder/Addon/Data/other.lua" "$dest_folder/Addon/Data/" -done \ No newline at end of file +done