File choir.lua changed (mode: 100644) (index b86a41c..46822a8) |
... |
... |
local function createUnitButton(parentFrame, frameName, unit, |
750 |
750 |
return u |
return u |
751 |
751 |
end |
end |
752 |
752 |
|
|
|
753 |
|
local function createSpoilerPaginatorButton(buttonDesignation, spoiler, clickButton, labelText) |
|
754 |
|
assert (buttonDesignation ~= nil) |
|
755 |
|
assert (spoiler ~= nil) |
|
756 |
|
assert (clickButton ~= nil) |
|
757 |
|
assert (labelText ~= nil) |
|
758 |
|
|
|
759 |
|
local paginatorButton = CreateFrame('BUTTON', buttonDesignation, spoiler, 'SecureActionButtonTemplate') |
|
760 |
|
paginatorButton:SetSize(36, 24) |
|
761 |
|
paginatorButton:SetPoint('TOPRIGHT', 0, 0) |
|
762 |
|
|
|
763 |
|
local artwork = createBackground(paginatorButton) |
|
764 |
|
paginatorButton:SetNormalTexture(artwork) |
|
765 |
|
|
|
766 |
|
local label = createLabel(paginatorButton, UnifontRegular16) |
|
767 |
|
paginatorButton:SetFontString(label) |
|
768 |
|
paginatorButton:SetText(labelText) |
|
769 |
|
|
|
770 |
|
paginatorButton:SetAttribute('type', 'click') |
|
771 |
|
paginatorButton:SetAttribute('clickbutton', clickButton) |
|
772 |
|
|
|
773 |
|
createBindingKeyHandler(paginatorButton) |
|
774 |
|
|
|
775 |
|
return paginatorButton |
|
776 |
|
end |
|
777 |
|
|
|
778 |
|
local function createSpoilerPaginator(spoiler, previousSpoiler, nextSpoiler) |
|
779 |
|
assert (spoiler ~= nil) |
|
780 |
|
assert (previousSpoiler ~= nil) |
|
781 |
|
assert (nextSpoiler ~= nil) |
|
782 |
|
|
|
783 |
|
local padding = 6 |
|
784 |
|
local n = spoiler:GetName() |
|
785 |
|
local previousButton = createSpoilerPaginatorButton(n .. 'PreviousButton', spoiler, previousSpoiler, '←') |
|
786 |
|
local nextButton = createSpoilerPaginatorButton(n .. 'NextButton', spoiler, nextSpoiler, '→') |
|
787 |
|
local closeButton = createSpoilerPaginatorButton(n .. 'CloseButton', spoiler, spoiler, '⨯') |
|
788 |
|
|
|
789 |
|
previousButton:SetAttribute('choirBindingKey', 'SHIFT-TAB') |
|
790 |
|
nextButton:SetAttribute('choirBindingKey', 'TAB') |
|
791 |
|
closeButton:SetAttribute('choirBindingKey', 'ESCAPE') |
|
792 |
|
|
|
793 |
|
closeButton:SetPoint('TOPRIGHT', 0, -padding) |
|
794 |
|
nextButton:SetPoint('TOPRIGHT', -padding - closeButton:GetWidth(), -padding) |
|
795 |
|
previousButton:SetPoint('TOPRIGHT', -padding -nextButton:GetWidth() - padding - closeButton:GetWidth(), -padding) |
|
796 |
|
|
|
797 |
|
return previousButton, nextButton, closeButton |
|
798 |
|
end |
|
799 |
|
|
753 |
800 |
local function createSpoiler(spoilerParent, spoilerDesignation) |
local function createSpoiler(spoilerParent, spoilerDesignation) |
754 |
801 |
local spoiler = CreateFrame('BUTTON', spoilerDesignation, spoilerParent, 'SecureHandlerClickTemplate') |
local spoiler = CreateFrame('BUTTON', spoilerDesignation, spoilerParent, 'SecureHandlerClickTemplate') |
755 |
802 |
spoiler:EnableMouse(true) |
spoiler:EnableMouse(true) |
|
... |
... |
local function createSpoiler(spoilerParent, spoilerDesignation) |
760 |
807 |
return |
return |
761 |
808 |
end |
end |
762 |
809 |
|
|
763 |
|
--[[ Override binding key to toggle the spoiler on Escape key press. ]]-- |
|
764 |
|
self:SetBindingClick(true, 'CTRL-W', self) |
|
765 |
|
self:SetBindingClick(true, 'ESCAPE', self) |
|
766 |
|
|
|
767 |
810 |
self:Show() |
self:Show() |
768 |
811 |
|
|
769 |
812 |
local childTable = self:GetChildList(newtable()) |
local childTable = self:GetChildList(newtable()) |
|
... |
... |
local function createGroup(rootFrame, groupNumber, unitTable) |
953 |
996 |
assert ('table' == type(u)) |
assert ('table' == type(u)) |
954 |
997 |
assert (#u == groupSize) |
assert (#u == groupSize) |
955 |
998 |
|
|
956 |
|
local spoiler = createSpoiler(rootFrame, 'ChoirSpoiler' .. tostring(groupNumber)) |
|
|
999 |
|
local nm = 'ChoirSpoiler' |
|
1000 |
|
local spoiler = createSpoiler(rootFrame, nm .. tostring(groupNumber)) |
957 |
1001 |
|
|
958 |
1002 |
local bgr = createBackground(spoiler) |
local bgr = createBackground(spoiler) |
959 |
1003 |
bgr:SetTexture(0, 0, 0, 0.2) |
bgr:SetTexture(0, 0, 0, 0.2) |
|
... |
... |
local function initSpoiler(rootFrame, contextualMenu) |
1390 |
1434 |
local spoilerHolder = CreateFrame('FRAME', 'ChoirSpoilerRootFrame', rootFrame) |
local spoilerHolder = CreateFrame('FRAME', 'ChoirSpoilerRootFrame', rootFrame) |
1391 |
1435 |
spoilerHolder:SetAllPoints() |
spoilerHolder:SetAllPoints() |
1392 |
1436 |
|
|
1393 |
|
createGroup(spoilerHolder, 1) |
|
1394 |
|
createGroup(spoilerHolder, 2) |
|
1395 |
|
createGroup(spoilerHolder, 3) |
|
1396 |
|
createGroup(spoilerHolder, 4) |
|
1397 |
|
createGroup(spoilerHolder, 5) |
|
1398 |
|
createGroup(spoilerHolder, 6) |
|
1399 |
|
createGroup(spoilerHolder, 7) |
|
1400 |
|
createGroup(spoilerHolder, 8) |
|
|
1437 |
|
local t = {} |
|
1438 |
|
local i = 0 |
|
1439 |
|
while (i < 8) do |
|
1440 |
|
i = i + 1 |
|
1441 |
|
t[i] = createGroup(spoilerHolder, i) |
|
1442 |
|
end |
1401 |
1443 |
|
|
1402 |
1444 |
--[[ TODO Generalize the interface to be used with any kind of child frames, |
--[[ TODO Generalize the interface to be used with any kind of child frames, |
1403 |
1445 |
-- especially nested spoilers and spell buttons. ]]-- |
-- especially nested spoilers and spell buttons. ]]-- |
|
... |
... |
local function initSpoiler(rootFrame, contextualMenu) |
1409 |
1451 |
local spoilerParty = createGroup(spoilerHolder, 9, {'player', 'party1', 'party2', 'party3', 'party4'}) |
local spoilerParty = createGroup(spoilerHolder, 9, {'player', 'party1', 'party2', 'party3', 'party4'}) |
1410 |
1452 |
spoilerParty.text:SetText('Party') |
spoilerParty.text:SetText('Party') |
1411 |
1453 |
_G['BINDING_NAME_CLICK ' .. spoilerParty:GetName() .. ':LeftButton'] = 'Party' |
_G['BINDING_NAME_CLICK ' .. spoilerParty:GetName() .. ':LeftButton'] = 'Party' |
|
1454 |
|
t[i + 1] = spoilerParty |
|
1455 |
|
|
|
1456 |
|
i = 0 |
|
1457 |
|
while (i < #t) do |
|
1458 |
|
local p = i |
|
1459 |
|
if p < 1 then |
|
1460 |
|
p = #t |
|
1461 |
|
end |
|
1462 |
|
i = i + 1 |
|
1463 |
|
local n = i + 1 |
|
1464 |
|
if n > #t then |
|
1465 |
|
n = 1 |
|
1466 |
|
end |
|
1467 |
|
createSpoilerPaginator(t[i], t[p], t[n]) |
|
1468 |
|
end |
1412 |
1469 |
|
|
1413 |
1470 |
BINDING_HEADER_CHOIR = 'Choir' |
BINDING_HEADER_CHOIR = 'Choir' |
1414 |
1471 |
|
|