Skip to content
This repository has been archived by the owner on Aug 3, 2023. It is now read-only.

Commit

Permalink
Update layout to use AceGUI widgets
Browse files Browse the repository at this point in the history
  • Loading branch information
onechiporenko committed Oct 22, 2020
1 parent 367035d commit bc92e13
Show file tree
Hide file tree
Showing 42 changed files with 666 additions and 1,178 deletions.
1 change: 1 addition & 0 deletions Locales/enUS.lua
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ L["Casts"] = "Casts";
-- Settings start
L["Performance"] = "Performance";
L["Run garbage collector on close"] = "Run garbage collector on close";
L["Show DEV Tab"] = "Show DEV Tab";
L["Verbose"] = "Verbose";
L["MainFrame_Show DEBUG messages"] = "MainFrame_Show DEBUG messages";
L["MainFrame_Show LOG messages"] = "MainFrame_Show LOG messages";
Expand Down
6 changes: 4 additions & 2 deletions MyDungeonsBook.toc
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ UI/ChallengeDetails/Tabs/Mechanics/Tabs/Casts/Tabs/CastsByPartyMembers.lua
UI/ChallengeDetails/Tabs/Mechanics/Tabs/Casts/Tabs/OwnCastsByPartyMembers.lua
UI/ChallengeDetails/Tabs/Mechanics/Tabs/Casts/Tabs/OwnCastsByPartyMembers/Tabs.lua
UI/ChallengeDetails/Tabs/Mechanics/Tabs/Casts/Tabs/OwnCastsByPartyMembers/Tabs/OwnCastsByPartyMember.lua

UI/ChallengeDetails/Tabs/Mechanics/Tabs/Damage.lua
UI/ChallengeDetails/Tabs/Mechanics/Tabs/Damage/Tabs.lua
UI/ChallengeDetails/Tabs/Mechanics/Tabs/Damage/Tabs/AvoidableDamage.lua
Expand All @@ -48,12 +47,15 @@ UI/ChallengeDetails/Tabs/Mechanics/Tabs/EffectsAndAuras/Tabs/AllBuffsOnPartyMemb
UI/ChallengeDetails/Tabs/Mechanics/Tabs/EffectsAndAuras/Tabs/AllDebuffsOnPartyMembers.lua
UI/ChallengeDetails/Tabs/Mechanics/Tabs/EffectsAndAuras/Tabs/Dispels.lua

Widgets/Table.lua
Widgets/Tabs.lua
Widgets/TabContentWrapper.lua

Events.lua
Challenge.lua
Mechanics/Common.lua
Mechanics/BfA/Common.lua
Mechanics/SL/Common.lua
Utils/Utils.lua
Utils/Table.lua
Utils/Tabs.lua
Utils/JSON.lua
11 changes: 9 additions & 2 deletions MyDungeonsBook.wowproj
Original file line number Diff line number Diff line change
Expand Up @@ -165,10 +165,16 @@
<Content Include="Utils\Table.lua">
<SubType>Code</SubType>
</Content>
<Content Include="Utils\Tabs.lua">
<Content Include="Utils\Utils.lua">
<SubType>Code</SubType>
</Content>
<Content Include="Utils\Utils.lua">
<Content Include="Widgets\TabContentWrapper.lua">
<SubType>Code</SubType>
</Content>
<Content Include="Widgets\Table.lua">
<SubType>Code</SubType>
</Content>
<Content Include="Widgets\Tabs.lua">
<SubType>Code</SubType>
</Content>
</ItemGroup>
Expand All @@ -192,6 +198,7 @@
<Folder Include="UI" />
<Folder Include="UI\ChallengeDetails" />
<Folder Include="UI\ChallengeDetails\Tabs" />
<Folder Include="Widgets" />
</ItemGroup>
<Import Project="$(DevEnvDir)\Extensions\Tools\MSBuild\AddonStudio\Wow\3.0\WowAddonStudio.targets" />
<!--
Expand Down
38 changes: 17 additions & 21 deletions Options.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ MyDungeonsBook.OptionsDefaults = {
profile = {
display = {
x = 0,
y = 0,
scale = 1
y = 0
},
verbose = {
debug = true,
log = true
},
performance = {
collectgarbage = true
collectgarbage = true,
showdevtab = false
}
},
global = {
Expand All @@ -43,23 +43,7 @@ MyDungeonsBook.Options = {
order = 1,
name = L["UI"],
type="group",
args = {
scale = {
order = 1,
name = L["Main Window Scale"],
type = "range",
min = 0.8,
max = 2.0,
step = 0.1,
width = "full",
get = function()
return MyDungeonsBook.db.profile.display.scale;
end,
set = function(_, v)
MyDungeonsBook.db.profile.display.scale = v;
end
}
}
args = {}
},
verbose = {
order = 1,
Expand Down Expand Up @@ -108,8 +92,20 @@ MyDungeonsBook.Options = {
set = function (_, v)
MyDungeonsBook.db.profile.performance.collectgarbage = v;
end
},
showdevtab = {
order = 2,
name = L["Show DEV Tab"],
type = "toggle",
width = "full",
get = function()
return MyDungeonsBook.db.profile.performance.showdevtab;
end,
set = function (_, v)
MyDungeonsBook.db.profile.performance.showdevtab = v;
end
}
}
}
}
};
};
79 changes: 33 additions & 46 deletions UI/ChallengeDetails.lua
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ UI
]]

local L = LibStub("AceLocale-3.0"):GetLocale("MyDungeonsBook");
local AceGUI = LibStub("AceGUI-3.0");

--[[--
Click-handler for challenges table. Used on row click.
Expand All @@ -18,8 +19,8 @@ function MyDungeonsBook:ChallengeDetailsFrame_Show(challengeId)
self:DebugPrint("Show details for challenge #" .. challengeId);
self.activeChallengeId = challengeId;
self:ChallengeDetailsFrame_Update(challengeId);
self.challengeDetailsFrame:Show();
self:Tab_Click(self.challengeDetailsFrame, "roster");
self.challengeDetailsFrame.frame:Show();
self.challengeDetailsFrame.tabButtonsFrame:SelectTab("roster");
end

--[[--
Expand All @@ -29,25 +30,22 @@ Creates all frames related to the challenge details frames (with itself).
@return[type=Frame] challengeDetailsFrame
]]
function MyDungeonsBook:ChallengeDetailsFrame_Create(parentFrame)
local challengeDetailsFrame = CreateFrame("Frame", nil, parentFrame);
challengeDetailsFrame:SetPoint("TOPLEFT", 500, -30);
local parentFrameHeight = parentFrame.frame:GetHeight();
local challengeDetailsFrame = AceGUI:Create("SimpleGroup");
challengeDetailsFrame:SetLayout("List");
challengeDetailsFrame:SetFullHeight(true);
challengeDetailsFrame:SetWidth(700);
challengeDetailsFrame:SetHeight(650);
challengeDetailsFrame.titleFrame = self:ChallengeDetailsFrame_TitleFrame_Create(challengeDetailsFrame);
challengeDetailsFrame.tabButtonsFrame = self:ChallengeDetailsFrame_CreateTabButtonsFrame(challengeDetailsFrame);
challengeDetailsFrame.challengeRosterFrame = self:RosterFrame_Create(challengeDetailsFrame);
challengeDetailsFrame.detailsFrame = self:DetailsFrame_Create(challengeDetailsFrame);
challengeDetailsFrame.encountersFrame = self:EncountersFrame_Create(challengeDetailsFrame);
challengeDetailsFrame.mechanicsFrame = self:MechanicsFrame_Create(challengeDetailsFrame);
challengeDetailsFrame.devFrame = self:DevFrame_Create(challengeDetailsFrame);
challengeDetailsFrame.tabs = {
roster = challengeDetailsFrame.challengeRosterFrame,
details = challengeDetailsFrame.detailsFrame,
dev = challengeDetailsFrame.devFrame,
encounters = challengeDetailsFrame.encountersFrame,
mechanics = challengeDetailsFrame.mechanicsFrame
};
challengeDetailsFrame:Hide();
parentFrame:AddChild(challengeDetailsFrame);
local grid = AceGUI:Create("SimpleGroup");
grid:SetLayout("List");
grid:SetFullWidth(true);
challengeDetailsFrame:AddChild(grid);
local titleAffixes, titleText = self:ChallengeDetailsFrame_TitleFrame_Create(grid);
challengeDetailsFrame.titleAffixes = titleAffixes;
challengeDetailsFrame.titleText = titleText;
local tabButtonsFrame = self:ChallengeDetailsFrame_CreateTabButtonsFrame(grid);
challengeDetailsFrame.tabButtonsFrame = tabButtonsFrame;
challengeDetailsFrame.frame:Hide();
return challengeDetailsFrame;
end

Expand All @@ -58,27 +56,21 @@ Creates a frame with challenge name and affixes.
@return[type=Frame] titleFrame
]]
function MyDungeonsBook:ChallengeDetailsFrame_TitleFrame_Create(parentFrame)
local titleFrame = CreateFrame("Frame", nil, parentFrame);
titleFrame:SetPoint("TOPLEFT", 0, 0);
titleFrame:SetWidth(700);
titleFrame:SetHeight(50);
local grid = AceGUI:Create("SimpleGroup");
grid:SetLayout("Flow");
grid:SetFullWidth(true);
parentFrame:AddChild(grid);
grid:SetFullHeight(true);
local titleAffixes = AceGUI:Create("Label");
titleAffixes:SetFontObject(GameFontNormal);
titleAffixes:SetWidth(200);
grid:AddChild(titleAffixes);

local titleText = titleFrame:CreateFontString(nil, "ARTWORK");
local titleText = AceGUI:Create("Label");
titleText:SetFontObject(GameFontNormalLarge);
titleText:SetTextColor(0.6, 0.6, 0.6);
titleText:SetPoint("TOPRIGHT", titleFrame, "TOPRIGHT", -10, 0);
titleText:SetPoint("BOTTOMRIGHT", titleFrame);
titleText:SetHeight(50);
titleFrame.titleText = titleText;

local titleAffixes = titleFrame:CreateFontString(nil, "ARTWORK");
titleAffixes:SetFontObject(GameFontNormal);
titleAffixes:SetTextColor(0.6, 0.6, 0.6);
titleAffixes:SetPoint("TOPLEFT", titleFrame, "TOPLEFT", 0, 0);
titleAffixes:SetPoint("BOTTOMLEFT", titleFrame);
titleAffixes:SetHeight(50);
titleFrame.titleAffixes = titleAffixes;
return titleFrame;
titleText:SetWidth(300);
grid:AddChild(titleText);
return titleAffixes, titleText;
end

--[[--
Expand All @@ -89,13 +81,8 @@ Update all frames related to challenge details.
function MyDungeonsBook:ChallengeDetailsFrame_Update(challengeId)
local challenge = self.db.char.challenges[challengeId];
if (challenge) then
self.challengeDetailsFrame.titleFrame.titleText:SetText(string.format(L["%s (%s) %s"], challenge.challengeInfo.zoneName, challenge.challengeInfo.cmLevel, self:GetKeyUpgradeStr(challenge)));
self.challengeDetailsFrame.titleFrame.titleAffixes:SetText(self:GetChallengeAffixesIconsStr(challengeId, 30));
self:DetailsFrame_Update(challengeId);
self:DevFrame_Update(challengeId);
self:RosterFrame_Update(challengeId);
self:EncountersFrame_Update(challengeId);
self:MechanicsFrame_Update(challengeId);
self.challengeDetailsFrame.titleText:SetText(string.format(L["%s (%s) %s"], challenge.challengeInfo.zoneName, challenge.challengeInfo.cmLevel, self:GetKeyUpgradeStr(challenge)));
self.challengeDetailsFrame.titleAffixes:SetText(self:GetChallengeAffixesIconsStr(challengeId, 30));
else
self:DebugPrint(string.format("Challenge #%s not found", challengeId));
end
Expand Down
38 changes: 31 additions & 7 deletions UI/ChallengeDetails/Tabs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,35 @@ Created frame has a field `tabButtons` with tab-buttons. Keys in the `tabButtons
@return[type=Frame] tabsButtonsFrame
]]
function MyDungeonsBook:ChallengeDetailsFrame_CreateTabButtonsFrame(parentFrame)
return self:Tabs_Create(parentFrame, {
{id = "roster", title = L["Roster"]},
{id = "details", title = L["Details"]},
{id = "encounters", title = L["Encounters"]},
{id = "mechanics", title = L["Mechanics"]},
{id = "dev", title = L["DEV"]}
});
local tabs = self:TabsWidget_Create(parentFrame);
local tabsConfig = {
{value = "roster", text = L["Roster"]},
{value = "details", text = L["Details"]},
{value = "encounters", text = L["Encounters"]},
{value = "mechanics", text = L["Mechanics"]}
};
if (self.db.profile.performance.showdevtab) then
tinsert(tabsConfig, {value = "dev", text = L["DEV"]});
end
tabs:SetTabs(tabsConfig);
tabs:SetCallback("OnGroupSelected", function (container, _, tabId)
container:ReleaseChildren();
if (tabId == "roster") then
self:RosterFrame_Create(container, self.activeChallengeId);
end
if (tabId == "details") then
self:DetailsFrame_Create(container, self.activeChallengeId);
end
if (tabId == "encounters") then
self:EncountersFrame_Create(container, self.activeChallengeId);
end
if (tabId == "dev") then
self:DevFrame_Create(container, self.activeChallengeId);
end
if (tabId == "mechanics") then
self:MechanicsFrame_Create(container, self.activeChallengeId);
end
end);
tabs:SetHeight(618);
return tabs;
end
38 changes: 15 additions & 23 deletions UI/ChallengeDetails/Tabs/DEV.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,28 @@
UI
@section UI
]]

local AceGUI = LibStub("AceGUI-3.0");
--[[--
Creates a frame for DEV tab.
@param[type=Frame] parentFrame
@return[type=Frame] devWrapper
]]
function MyDungeonsBook:DevFrame_Create(parentFrame)
local devWrapper = CreateFrame("Frame", nil, parentFrame);
devWrapper:SetWidth(700);
devWrapper:SetHeight(490);
devWrapper:SetPoint("TOPLEFT", 0, -80);
local textarea = CreateFrame("EditBox", nil, devWrapper, "InputBoxTemplate");
textarea:SetFontObject(GameFontNormal);
textarea:SetPoint("TOPLEFT", 0, 0);
textarea:SetWidth(650);
textarea:SetHeight(30);
devWrapper.textarea = textarea;
return devWrapper;
end

--[[--
Update DEV-tab for challenge with id `challengeId`.
@param[type=number] challengeId
@return[type=Frame] devFrame
]]
function MyDungeonsBook:DevFrame_Update(challengeId)
function MyDungeonsBook:DevFrame_Create(parentFrame, challengeId)
local devFrame = self:TabContentWrapperWidget_Create(parentFrame);
devFrame:SetFullHeight(true);
local challenge = self.db.char.challenges[challengeId];
if (challenge) then
self.challengeDetailsFrame.devFrame.textarea:SetText(self:Table2Json(challenge));
self.challengeDetailsFrame.devFrame.textarea:HighlightText();
local editBox = AceGUI:Create("EditBox");
editBox:SetFullWidth(true);
editBox.button:SetText("Get JSON");
editBox.button:Show();
editBox:SetCallback("OnEnterPressed", function ()
editBox:SetText(self:Table2Json(challenge));
editBox:HighlightText();
end);
devFrame:AddChild(editBox);
end
return devFrame;
end
33 changes: 9 additions & 24 deletions UI/ChallengeDetails/Tabs/Details.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,28 @@ UI

local L = LibStub("AceLocale-3.0"):GetLocale("MyDungeonsBook");


--[[--
Creates a frame for Details tab (data should be from `details` section for challenge).
@param[type=Frame] parentFrame
@param[type=number] challengeId
@return[type=Frame]
]]
function MyDungeonsBook:DetailsFrame_Create(parentFrame)
local ScrollingTable = LibStub("ScrollingTable");
local cols = self:DetailsFrame_GetHeadersForTable();
local detailsFrame = CreateFrame("Frame", nil, parentFrame);
detailsFrame:SetWidth(825);
detailsFrame:SetHeight(250);
detailsFrame:SetPoint("TOPLEFT", 0, -110);
local table = ScrollingTable:CreateST(cols, 5, 40, nil, detailsFrame);
detailsFrame.table = table;
function MyDungeonsBook:DetailsFrame_Create(parentFrame, challengeId)
local detailsFrame = self:TabContentWrapperWidget_Create(parentFrame);
local cols = self:DetailsFrame_GetColumnsForTable();
local table = self:TableWidget_Create(cols, 5, 40, nil, detailsFrame, "details");
table:SetData(self:DetailsFrame_GetDataForTable(challengeId));
table:SortData();
return detailsFrame;
end

--[[--
Generate columns for avoidable damage table.
Generate columns for Details table.
@return[type=Frame]
]]
function MyDungeonsBook:DetailsFrame_GetHeadersForTable()
function MyDungeonsBook:DetailsFrame_GetColumnsForTable()
return {
{
name = L["Player"],
Expand Down Expand Up @@ -141,15 +138,3 @@ function MyDungeonsBook:DetailsFrame_GetDataForTable(challengeId)
end
return tableData;
end

--[[--
Updates a Details frame with data for challenge with id `challengeId`.
@param[type=number] challengeId
]]
function MyDungeonsBook:DetailsFrame_Update(challengeId)
local challenge = self.db.char.challenges[challengeId];
if (challenge) then
self.challengeDetailsFrame.detailsFrame.table:SetData(self:DetailsFrame_GetDataForTable(challengeId));
end
end

0 comments on commit bc92e13

Please sign in to comment.