translated code to English and a few bug fixes from latest alpha
This commit is contained in:
+166
-142
@@ -1,189 +1,213 @@
|
||||
|
||||
local Details = _G.Details
|
||||
local DF = _G.DetailsFramework
|
||||
local detailsFramework = _G.DetailsFramework
|
||||
local _
|
||||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
-- ~run ~runcode
|
||||
local addonName, Details222 = ...
|
||||
local CreateFrame = CreateFrame
|
||||
local UIParent = UIParent
|
||||
local load = loadstring
|
||||
|
||||
function Details:InitializeRunCodeWindow()
|
||||
local DetailsRunCodePanel = DF:CreateSimplePanel(UIParent, 700, 480, "Details! Run Code", "DetailsRunCodePanel")
|
||||
DetailsRunCodePanel.Frame = DetailsRunCodePanel
|
||||
DetailsRunCodePanel.__name = "Auto Run Code"
|
||||
DetailsRunCodePanel.real_name = "DETAILS_RUNCODEWINDOW"
|
||||
local detailsRunCodePanel = detailsFramework:CreateSimplePanel(UIParent, 700, 480, "Details! Run Code Automation", "DetailsRunCodePanel")
|
||||
detailsRunCodePanel.Frame = detailsRunCodePanel
|
||||
detailsRunCodePanel.__name = "Auto Run Code"
|
||||
detailsRunCodePanel.real_name = "DETAILS_RUNCODEWINDOW"
|
||||
--DetailsRunCodePanel.__icon = [[Interface\AddOns\Details\images\lua_logo]]
|
||||
DetailsRunCodePanel.__icon = [[Interface\AddOns\Details\images\run_code]]
|
||||
detailsRunCodePanel.__icon = [[Interface\AddOns\Details\images\run_code]]
|
||||
--DetailsRunCodePanel.__iconcoords = {0, 1, 0, 1}
|
||||
DetailsRunCodePanel.__iconcoords = {0, 30/32, 0, 25/32}
|
||||
DetailsRunCodePanel.__iconcoords = {0, 1, 0, 1}
|
||||
DetailsRunCodePanel.__iconcolor = "white"
|
||||
DetailsPluginContainerWindow.EmbedPlugin (DetailsRunCodePanel, DetailsRunCodePanel, true)
|
||||
|
||||
function DetailsRunCodePanel.RefreshWindow()
|
||||
Details.OpenRunCodeWindow()
|
||||
detailsRunCodePanel.__iconcoords = {0, 30/32, 0, 25/32}
|
||||
detailsRunCodePanel.__iconcoords = {0, 1, 0, 1}
|
||||
detailsRunCodePanel.__iconcolor = "white"
|
||||
DetailsPluginContainerWindow.EmbedPlugin(detailsRunCodePanel, detailsRunCodePanel, true)
|
||||
|
||||
function detailsRunCodePanel.RefreshWindow()
|
||||
Details222.AutoRunCode.OpenRunCodeWindow()
|
||||
end
|
||||
|
||||
DetailsRunCodePanel:Hide()
|
||||
|
||||
detailsRunCodePanel:Hide()
|
||||
|
||||
Details222.AutoRunCode.DetailsRunCodePanel = detailsRunCodePanel
|
||||
end
|
||||
|
||||
function Details.OpenRunCodeWindow()
|
||||
if (not DetailsRunCodePanel or not DetailsRunCodePanel.Initialized) then
|
||||
|
||||
DetailsRunCodePanel.Initialized = true
|
||||
|
||||
local f = DetailsRunCodePanel or DF:CreateSimplePanel(UIParent, 700, 480, "Details! Run Code", "DetailsRunCodePanel")
|
||||
function Details222.AutoRunCode.OpenRunCodeWindow()
|
||||
local detailsRunCodePanel = Details222.AutoRunCode.DetailsRunCodePanel
|
||||
|
||||
if (not detailsRunCodePanel or not detailsRunCodePanel.Initialized) then
|
||||
detailsRunCodePanel.Initialized = true
|
||||
|
||||
local autoRunCodeFrame = detailsRunCodePanel or detailsFramework:CreateSimplePanel(UIParent, 700, 480, "Details! Run Code", "DetailsRunCodePanel")
|
||||
|
||||
--lua editor
|
||||
local code_editor = DF:NewSpecialLuaEditorEntry(f, 885, 510, "text", "$parentCodeEditorWindow")
|
||||
f.CodeEditor = code_editor
|
||||
code_editor:SetPoint("topleft", f, "topleft", 20, -56)
|
||||
|
||||
--code editor appearance
|
||||
code_editor.scroll:SetBackdrop(nil)
|
||||
code_editor.editbox:SetBackdrop(nil)
|
||||
code_editor:SetBackdrop(nil)
|
||||
|
||||
DF:ReskinSlider(code_editor.scroll)
|
||||
|
||||
if (not code_editor.__background) then
|
||||
code_editor.__background = code_editor:CreateTexture(nil, "background")
|
||||
end
|
||||
|
||||
code_editor:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1})
|
||||
code_editor:SetBackdropBorderColor(0, 0, 0, 1)
|
||||
|
||||
code_editor.__background:SetColorTexture(0.2317647, 0.2317647, 0.2317647)
|
||||
code_editor.__background:SetVertexColor(0.27, 0.27, 0.27)
|
||||
code_editor.__background:SetAlpha(0.8)
|
||||
code_editor.__background:SetVertTile(true)
|
||||
code_editor.__background:SetHorizTile(true)
|
||||
code_editor.__background:SetAllPoints()
|
||||
|
||||
--code compile error warning
|
||||
local errortext_frame = CreateFrame("frame", nil, code_editor,"BackdropTemplate")
|
||||
errortext_frame:SetPoint("bottomleft", code_editor, "bottomleft", 1, 1)
|
||||
errortext_frame:SetPoint("bottomright", code_editor, "bottomright", -1, 1)
|
||||
errortext_frame:SetHeight(20)
|
||||
errortext_frame:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
|
||||
errortext_frame:SetBackdropBorderColor(0, 0, 0, 1)
|
||||
errortext_frame:SetBackdropColor(0, 0, 0)
|
||||
|
||||
DF:CreateFlashAnimation (errortext_frame)
|
||||
|
||||
local errortext_label = DF:CreateLabel(errortext_frame, "", DF:GetTemplate("font", "ORANGE_FONT_TEMPLATE"))
|
||||
errortext_label.textcolor = "red"
|
||||
errortext_label:SetPoint("left", errortext_frame, "left", 3, 0)
|
||||
code_editor.NextCodeCheck = 0.33
|
||||
|
||||
code_editor:HookScript ("OnUpdate", function(self, deltaTime)
|
||||
code_editor.NextCodeCheck = code_editor.NextCodeCheck - deltaTime
|
||||
local codeEditor = detailsFramework:NewSpecialLuaEditorEntry(UIParent, 885, 510, nil, nil, false, true, true)
|
||||
codeEditor:SetPoint("topleft", autoRunCodeFrame, "topleft", 20, -56)
|
||||
codeEditor:SetFrameStrata(autoRunCodeFrame:GetFrameStrata())
|
||||
codeEditor:SetFrameLevel(autoRunCodeFrame:GetFrameLevel()+1)
|
||||
|
||||
if (code_editor.NextCodeCheck < 0) then
|
||||
local script = code_editor:GetText()
|
||||
local func, errortext = loadstring (script, "Q")
|
||||
if (not func) then
|
||||
local firstLine = strsplit("\n", script, 2)
|
||||
errortext = errortext:gsub(firstLine, "")
|
||||
errortext = errortext:gsub("%[string \"", "")
|
||||
errortext = errortext:gsub("...\"]:", "")
|
||||
errortext = errortext:gsub("Q\"]:", "")
|
||||
errortext = "Line " .. errortext
|
||||
errortext_label.text = errortext
|
||||
else
|
||||
errortext_label.text = ""
|
||||
end
|
||||
|
||||
code_editor.NextCodeCheck = 0.33
|
||||
function Details222.AutoRunCode.CodeEditorSetText(codeKey)
|
||||
local text = Details222.AutoRunCode.CodeTable[codeKey]
|
||||
return codeEditor:SetText(text)
|
||||
end
|
||||
|
||||
detailsRunCodePanel:HookScript("OnShow", function()
|
||||
codeEditor:Show()
|
||||
end)
|
||||
detailsRunCodePanel:SetScript("OnHide", function()
|
||||
codeEditor:Hide()
|
||||
end)
|
||||
|
||||
--code editor appearance
|
||||
codeEditor.scroll:SetBackdrop(nil)
|
||||
codeEditor.editbox:SetBackdrop(nil)
|
||||
codeEditor:SetBackdrop(nil)
|
||||
|
||||
detailsFramework:ReskinSlider(codeEditor.scroll)
|
||||
|
||||
if (not codeEditor.__background) then
|
||||
codeEditor.__background = codeEditor:CreateTexture(nil, "background")
|
||||
end
|
||||
|
||||
codeEditor:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1})
|
||||
codeEditor:SetBackdropBorderColor(0, 0, 0, 1)
|
||||
|
||||
codeEditor.__background:SetColorTexture(0.2317647, 0.2317647, 0.2317647)
|
||||
codeEditor.__background:SetVertexColor(0.27, 0.27, 0.27)
|
||||
codeEditor.__background:SetAlpha(0.8)
|
||||
codeEditor.__background:SetVertTile(true)
|
||||
codeEditor.__background:SetHorizTile(true)
|
||||
codeEditor.__background:SetAllPoints()
|
||||
|
||||
--code compile error warning
|
||||
local errortext_frame = CreateFrame("frame", nil, codeEditor, "BackdropTemplate")
|
||||
errortext_frame:SetPoint("bottomleft", codeEditor, "bottomleft", 1, 1)
|
||||
errortext_frame:SetPoint("bottomright", codeEditor, "bottomright", -1, 1)
|
||||
errortext_frame:SetHeight(20)
|
||||
errortext_frame:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], tileSize = 64, tile = true})
|
||||
errortext_frame:SetBackdropBorderColor(0, 0, 0, 1)
|
||||
errortext_frame:SetBackdropColor(0, 0, 0)
|
||||
|
||||
detailsFramework:CreateFlashAnimation (errortext_frame)
|
||||
|
||||
local errortext_label = detailsFramework:CreateLabel(errortext_frame, "", detailsFramework:GetTemplate("font", "ORANGE_FONT_TEMPLATE"))
|
||||
errortext_label.textcolor = "red"
|
||||
errortext_label:SetPoint("left", errortext_frame, "left", 3, 0)
|
||||
codeEditor.NextCodeCheck = 0.33
|
||||
|
||||
codeEditor:HookScript ("OnUpdate", function(self, deltaTime)
|
||||
codeEditor.NextCodeCheck = codeEditor.NextCodeCheck - deltaTime
|
||||
|
||||
if (codeEditor.NextCodeCheck < 0) then
|
||||
local script = codeEditor:GetText()
|
||||
local func, errortext = load(script, "Q")
|
||||
if (not func) then
|
||||
local firstLine = strsplit("\n", script, 2)
|
||||
errortext = errortext:gsub(firstLine, "")
|
||||
errortext = errortext:gsub("%[string \"", "")
|
||||
errortext = errortext:gsub("...\"]:", "")
|
||||
errortext = errortext:gsub("Q\"]:", "")
|
||||
errortext = "Line " .. errortext
|
||||
errortext_label.text = errortext
|
||||
else
|
||||
errortext_label.text = ""
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
codeEditor.NextCodeCheck = 0.33
|
||||
end
|
||||
end)
|
||||
|
||||
--script selector
|
||||
local on_select_CodeType_option = function(self, fixedParameter, value)
|
||||
--set the current editing code type
|
||||
f.EditingCode = Details.RunCodeTypes [value].Value
|
||||
f.EditingCodeKey = Details.RunCodeTypes [value].ProfileKey
|
||||
|
||||
autoRunCodeFrame.EditingCode = Details.RunCodeTypes[value].Value
|
||||
autoRunCodeFrame.EditingCodeKey = Details.RunCodeTypes[value].ProfileKey
|
||||
|
||||
--load the code for the event
|
||||
local code = Details.run_code [f.EditingCodeKey]
|
||||
code_editor:SetText(code)
|
||||
Details222.AutoRunCode.CodeEditorSetText(autoRunCodeFrame.EditingCodeKey)
|
||||
end
|
||||
|
||||
|
||||
local build_CodeType_dropdown_options = function()
|
||||
local t = {}
|
||||
|
||||
|
||||
for i = 1, #Details.RunCodeTypes do
|
||||
local option = Details.RunCodeTypes [i]
|
||||
t [#t + 1] = {label = option.Name, value = option.Value, onclick = on_select_CodeType_option, desc = option.Desc}
|
||||
end
|
||||
|
||||
|
||||
return t
|
||||
end
|
||||
|
||||
local code_type_label = DF:CreateLabel(f, "Event:", DF:GetTemplate("font", "ORANGE_FONT_TEMPLATE"))
|
||||
local code_type_dropdown = DF:CreateDropDown (f, build_CodeType_dropdown_options, 1, 160, 20, "CodeTypeDropdown", _, DF:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
||||
|
||||
local code_type_label = detailsFramework:CreateLabel(autoRunCodeFrame, "Event:", detailsFramework:GetTemplate("font", "ORANGE_FONT_TEMPLATE"))
|
||||
local code_type_dropdown = detailsFramework:CreateDropDown(autoRunCodeFrame, build_CodeType_dropdown_options, 1, 160, 20, "CodeTypeDropdown", _, detailsFramework:GetTemplate("dropdown", "OPTIONS_DROPDOWN_TEMPLATE"))
|
||||
code_type_dropdown:SetPoint("left", code_type_label, "right", 2, 0)
|
||||
code_type_dropdown:SetFrameLevel(code_editor:GetFrameLevel() + 10)
|
||||
code_type_label:SetPoint("bottomleft", code_editor, "topleft", 0, 8)
|
||||
|
||||
code_type_dropdown:SetFrameLevel(codeEditor:GetFrameLevel() + 10)
|
||||
code_type_label:SetPoint("bottomleft", codeEditor, "topleft", 0, 8)
|
||||
|
||||
--create save button
|
||||
local save_script = function()
|
||||
local code = code_editor:GetText()
|
||||
local func, errortext = loadstring (code, "Q")
|
||||
|
||||
local code = codeEditor:GetText()
|
||||
local func, errortext = load(code, "Q")
|
||||
|
||||
if (func) then
|
||||
Details.run_code [f.EditingCodeKey] = code
|
||||
Details:RecompileAutoRunCode()
|
||||
Details222.AutoRunCode.CodeTable[autoRunCodeFrame.EditingCodeKey] = code
|
||||
Details222.AutoRunCode.RecompileAutoRunCode()
|
||||
Details:Msg("Code saved!")
|
||||
code_editor:ClearFocus()
|
||||
codeEditor:ClearFocus()
|
||||
else
|
||||
errortext_frame:Flash(0.2, 0.2, 0.4, true, nil, nil, "NONE")
|
||||
Details:Msg("Can't save the code: it has errors.")
|
||||
end
|
||||
end
|
||||
|
||||
local button_y = -6
|
||||
|
||||
local save_script_button = DF:CreateButton(f, save_script, 120, 20, "Save", -1, nil, nil, nil, nil, nil, DF:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE"), DF:GetTemplate("font", "PLATER_BUTTON"))
|
||||
save_script_button:SetIcon ([[Interface\BUTTONS\UI-Panel-ExpandButton-Up]], 20, 20, "overlay", {0.1, .9, 0.1, .9})
|
||||
save_script_button:SetPoint("topright", code_editor, "bottomright", 0, button_y)
|
||||
|
||||
--create cancel button
|
||||
|
||||
local cancel_script = function()
|
||||
code_editor:SetText(Details.run_code [f.EditingCodeKey])
|
||||
Details:Msg("Code cancelled!")
|
||||
code_editor:ClearFocus()
|
||||
Details222.AutoRunCode.CodeEditorSetText(autoRunCodeFrame.EditingCodeKey)
|
||||
codeEditor:ClearFocus()
|
||||
end
|
||||
|
||||
local cancel_script_button = DF:CreateButton(f, cancel_script, 120, 20, "Cancel", -1, nil, nil, nil, nil, nil, DF:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE"), DF:GetTemplate("font", "PLATER_BUTTON"))
|
||||
cancel_script_button:SetIcon ([[Interface\BUTTONS\UI-Panel-MinimizeButton-Up]], 20, 20, "overlay", {0.1, .9, 0.1, .9})
|
||||
cancel_script_button:SetPoint("topleft", code_editor, "bottomleft", 0, button_y)
|
||||
|
||||
--create run now button
|
||||
|
||||
|
||||
local execute_script = function()
|
||||
local script = code_editor:GetText()
|
||||
local func, errortext = loadstring (script, "Q")
|
||||
|
||||
local script = codeEditor:GetText()
|
||||
local func, errortext = load(script, "Q")
|
||||
|
||||
if (func) then
|
||||
DF:SetEnvironment(func)
|
||||
DF:QuickDispatch(func)
|
||||
detailsFramework:SetEnvironment(func)
|
||||
detailsFramework:QuickDispatch(func)
|
||||
else
|
||||
errortext_frame:Flash(0.2, 0.2, 0.4, true, nil, nil, "NONE")
|
||||
end
|
||||
end
|
||||
|
||||
local run_script_button = DF:CreateButton(f, execute_script, 120, 20, "Test Code", -1, nil, nil, nil, nil, nil, DF:GetTemplate("button", "OPTIONS_BUTTON_TEMPLATE"), DF:GetTemplate("font", "PLATER_BUTTON"))
|
||||
run_script_button:SetIcon ([[Interface\BUTTONS\UI-SpellbookIcon-NextPage-Up]], 20, 20, "overlay", {0.05, 0.95, 0.05, 0.95})
|
||||
run_script_button:SetPoint("bottomright", code_editor, "topright", 0, 3)
|
||||
|
||||
end
|
||||
|
||||
DetailsPluginContainerWindow.OpenPlugin (DetailsRunCodePanel)
|
||||
DetailsRunCodePanel.CodeTypeDropdown:Select(1, true)
|
||||
|
||||
--show the initialization code when showing up this window
|
||||
DetailsRunCodePanel.EditingCode = Details.RunCodeTypes [1].Value
|
||||
DetailsRunCodePanel.EditingCodeKey = Details.RunCodeTypes [1].ProfileKey
|
||||
|
||||
local code = Details.run_code [DetailsRunCodePanel.EditingCodeKey]
|
||||
DetailsRunCodePanel.CodeEditor:SetText(code)
|
||||
local button_y = -6
|
||||
|
||||
local saveButton = CreateFrame("button", nil, codeEditor)
|
||||
detailsFramework:ApplyStandardBackdrop(saveButton)
|
||||
saveButton:SetSize(120, 20)
|
||||
saveButton:SetText("Save")
|
||||
saveButton:SetScript("OnClick", save_script)
|
||||
saveButton:SetPoint("topright", codeEditor, "bottomright", 0, button_y)
|
||||
saveButton:SetNormalFontObject("GameFontNormal")
|
||||
|
||||
local cancelButton = CreateFrame("button", nil, codeEditor)
|
||||
detailsFramework:ApplyStandardBackdrop(cancelButton)
|
||||
cancelButton:SetSize(120, 20)
|
||||
cancelButton:SetText("Cancel")
|
||||
cancelButton:SetScript("OnClick", cancel_script)
|
||||
cancelButton:SetPoint("topleft", codeEditor, "bottomleft", 0, button_y)
|
||||
cancelButton:SetNormalFontObject("GameFontNormal")
|
||||
|
||||
--create run now button
|
||||
local runButton = CreateFrame("button", nil, codeEditor)
|
||||
detailsFramework:ApplyStandardBackdrop(runButton)
|
||||
runButton:SetSize(120, 20)
|
||||
runButton:SetText("Test Code")
|
||||
runButton:SetScript("OnClick", execute_script)
|
||||
runButton:SetPoint("bottomright", codeEditor, "topright", 0, 3)
|
||||
runButton:SetNormalFontObject("GameFontNormal")
|
||||
end
|
||||
|
||||
DetailsPluginContainerWindow.OpenPlugin(detailsRunCodePanel)
|
||||
detailsRunCodePanel.CodeTypeDropdown:Select(1, true)
|
||||
|
||||
--show the initialization code when showing up this window
|
||||
detailsRunCodePanel.EditingCode = Details.RunCodeTypes[1].Value
|
||||
detailsRunCodePanel.EditingCodeKey = Details.RunCodeTypes[1].ProfileKey
|
||||
|
||||
Details222.AutoRunCode.CodeEditorSetText(detailsRunCodePanel.EditingCodeKey)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user