You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

153 lines
5.4 KiB

-- Neuron is a World of Warcraft® user interface addon.
-- Copyright (c) 2017-2021 Britt W. Yazel
-- Copyright (c) 2006-2014 Connor H. Chenoweth
-- This code is licensed under the MIT license (see LICENSE for details)
local _, addonTable = ...
local Neuron = addonTable.Neuron
local NeuronGUI = Neuron.NeuronGUI
local L = LibStub("AceLocale-3.0"):GetLocale("Neuron")
local AceGUI = LibStub("AceGUI-3.0")
local currentTab = "general" --remember which tab we were using between refreshes
local selectedBarType --remember which bar type was selected for creating new bars between refreshes
-----------------------------------------------------------------------------
--------------------------Bar Editor-----------------------------------------
-----------------------------------------------------------------------------
function NeuronGUI:BarEditPanel(tabFrame)
Neuron:ToggleBarEditMode(true)
-------------------------------
--Container for the top Row
local topRow = AceGUI:Create("SimpleGroup")
topRow:SetFullWidth(true)
topRow:SetHeight(50)
topRow:SetAutoAdjustHeight(false)
topRow:SetLayout("Flow")
tabFrame:AddChild(topRow)
-------------------------------
local spacer1 = AceGUI:Create("SimpleGroup")
spacer1:SetWidth(20)
spacer1:SetHeight(40)
spacer1:SetLayout("Fill")
topRow:AddChild(spacer1)
-------------------------------
local barList = {}
for _, bar in pairs(Neuron.bars) do
barList[bar] = bar:GetBarName()
end
--Scroll frame that will contain the Bar List
local barListDropdown = AceGUI:Create("Dropdown")
barListDropdown:SetWidth(180)
barListDropdown:SetLabel("Switch selected bar:")
barListDropdown:SetText(Neuron.currentBar:GetBarName() or "")
barListDropdown:SetList(barList) --assign the bar type table to the dropdown menu
barListDropdown:SetCallback("OnValueChanged", function(self, callBackType, key) Neuron.Bar.ChangeSelectedBar(key); NeuronGUI:RefreshEditor() end)
topRow:AddChild(barListDropdown)
-------------------------------
local spacer2 = AceGUI:Create("SimpleGroup")
spacer2:SetWidth(20)
spacer2:SetHeight(40)
spacer2:SetLayout("Fill")
topRow:AddChild(spacer2)
-------------------------------
--populate the dropdown menu with available bar types
local barTypes = {}
for class, info in pairs(Neuron.registeredBarData) do
barTypes[class] = info.barLabel
end
local newBarButton
--bar type list dropdown menu
local barTypeDropdown = AceGUI:Create("Dropdown")
barTypeDropdown:SetWidth(180)
barTypeDropdown:SetLabel("Create a new bar:")
if selectedBarType then
barTypeDropdown:SetText(selectedBarType)
else
barTypeDropdown:SetText("- select a bar type -")
end
barTypeDropdown:SetList(barTypes) --assign the bar type table to the dropdown menu
barTypeDropdown:SetCallback("OnValueChanged", function(self, callBackType, key) selectedBarType = key; newBarButton:SetDisabled(false) end)
topRow:AddChild(barTypeDropdown)
-------------------------------
local spacer3 = AceGUI:Create("SimpleGroup")
spacer3:SetWidth(5)
spacer3:SetHeight(40)
spacer3:SetLayout("Fill")
topRow:AddChild(spacer3)
-------------------------------
--Create New Bar button
newBarButton = AceGUI:Create("Button")
newBarButton:SetWidth(120)
newBarButton:SetText("Create")
newBarButton:SetCallback("OnClick", function() if selectedBarType then Neuron.Bar:CreateNewBar(selectedBarType); NeuronGUI:RefreshEditor() end end)
if selectedBarType then
newBarButton:SetDisabled(false)
else
newBarButton:SetDisabled(true) --we want to disable it until they chose a bar type in the dropdown
end
topRow:AddChild(newBarButton)
---------------------------------
------ Settings Tab Group -------
---------------------------------
if Neuron.currentBar then
--Tab group that will contain all of our settings to configure
local innerTabFrame = AceGUI:Create("TabGroup")
innerTabFrame:SetLayout("Fill")
innerTabFrame:SetFullHeight(true)
innerTabFrame:SetFullWidth(true)
--only show the states tab if the bar is an ActionBar
if Neuron.currentBar.class=="ActionBar" then
innerTabFrame:SetTabs({{text="General Configuration", value="general"}, {text="Bar States", value="states"}, {text="Bar Visibility", value="visibility"}})
else
innerTabFrame:SetTabs({{text="General Configuration", value="general"}, {text="Bar Visibility", value="visibility"}})
if currentTab == "states" then
currentTab = "general"
end
end
innerTabFrame:SetCallback("OnGroupSelected", function(self, _, value) NeuronGUI:SelectInnerBarTab(self, _, value) end)
tabFrame:AddChild(innerTabFrame)
innerTabFrame:SelectTab(currentTab)
else
local selectBarMessage = AceGUI:Create("Label")
selectBarMessage:SetText("Please select a bar to continue")
selectBarMessage:SetFont("Fonts\\FRIZQT__.TTF", 30)
tabFrame:AddChild(selectBarMessage)
end
end
-----------------------------------------------------------------------------
----------------------Inner Tab Frame----------------------------------------
-----------------------------------------------------------------------------
function NeuronGUI:SelectInnerBarTab(tabFrame, _, value)
local registeredGUIData = Neuron:RegisterGUI()
tabFrame:ReleaseChildren()
if value == "general" then
NeuronGUI:GeneralConfigPanel(tabFrame, registeredGUIData)
currentTab = "general"
elseif value == "states" then
NeuronGUI:BarStatesPanel(tabFrame)
currentTab = "states"
elseif value == "visibility" then
NeuronGUI:BarVisibilityPanel(tabFrame)
currentTab = "visibility"
end
end