/trunk
frame:SetPoint(point, MultiScreenSupportParent, relativePoint, xOfs, yOfs) |
end |
function MultiScreenSupport:tableMerge(first_table, second_table) |
for k,v in pairs(second_table) do first_table[k] = v end |
return first_table |
end |
function MultiScreenSupport:initSettings() |
--[[MacroFrame_LoadUI() |
TalentFrame_LoadUI() |
GuildFrame_LoadUI() |
Garrison_LoadUI() |
GuildBankFrame_LoadUI() |
AuctionFrame_LoadUI() |
CollectionsJournal_LoadUI() |
BlackMarket_LoadUI() |
Calendar_LoadUI() |
EncounterJournal_LoadUI() |
LookingForGuildFrame_LoadUI() |
ItemAlteration_LoadUI() |
ItemUpgrade_LoadUI() |
ArchaeologyFrame_LoadUI() |
VoidStorage_LoadUI() |
BarberShopFrame_LoadUI() |
ItemSocketingFrame_LoadUI() |
TradeSkillFrame_LoadUI() |
InspectFrame_LoadUI() |
ClassTrainerFrame_LoadUI()]] |
--BattlefieldMinimap_LoadUI() --CAN'T be move correctly anyway |
local MSSVersion = GetAddOnMetadata("MultiScreenSupport", "Version"); |
if type(_G['multiscreensupportsave']) ~= "table" or _G['multiscreensupportsave']['MSSVersion'] < '2.0' then |
_G['multiscreensupportsave'] = { |
standart = { |
["PVEFrame"] = true, |
["CharacterFrame"] = true, |
["PlayerTalentFrame"] = true, |
["SpellBookFrame"] = true, |
["AchievementFrame"] = true, |
["FriendsFrame"] = true, |
["TradeSkillFrame"] = true, |
["GuildFrame"] = true, |
["CollectionsJournal"] = true, |
["MerchantFrame"] = true, |
["GossipFrame"] = true, |
["MailFrame"] = true, |
--["EventTraceFrame"] = true, MOVABLE |
["GarrisonCapacitiveDisplayFrame"] = true, |
["GarrisonRecruiterFrame"] = true, |
["AuctionFrame"] = true, |
["BlackMarketFrame"] = true, |
["QuestFrame"] = true, |
["MacroFrame"] = true, |
["TimeManagerFrame"] = true, |
["CalendarFrame"] = true, |
["GarrisonLandingPage"] = true, |
["EncounterJournal"] = true, |
["LookingForGuildFrame"] = true, |
["TransmogrifyFrame"] = true, |
["ItemUpgradeFrame"] = true, |
["ArchaeologyFrame"] = true, |
["VoidStorageFrame"] = true, |
["BarberShopFrame"] = true, |
["ItemSocketingFrame"] = true, |
["InspectFrame"] = true, |
["GuildBankFrame"] = true, |
["QuestLogPopupDetailFrame"] = true, |
["ClassTrainerFrame"] = true, |
}, |
specific = { |
["WorldMapScreenAnchor"] = true, |
["MinimapCluster"] = true, |
} |
} |
end |
_G['multiscreensupportsave']["MSSVersion"] = MSSVersion |
end |
function MultiScreenSupport:PLAYER_LOGIN(event) |
local allActiveFramesOrder = {} |
local allFramesOrder = {} |
local j |
local Resolution = GetCVar("gxResolution") |
--width = 1280 |
--height = 720 |
TalentFrame_LoadUI() |
GuildFrame_LoadUI() |
Garrison_LoadUI() |
GuildBankFrame_LoadUI() |
AuctionFrame_LoadUI() |
CollectionsJournal_LoadUI() |
BlackMarket_LoadUI() |
MultiScreenSupport:initSettings() |
MultiScreenSupportParent = CreateFrame('Frame', 'MultiScreenSupportParent', UIParent) |
MultiScreenSupportParent:SetFrameLevel(UIParent:GetFrameLevel()) |
local setting = {} |
local specificSetting = {} |
if type(_G['multiscreensupportsave']) ~= "table" then |
_G['multiscreensupportsave'] = { |
standart = { |
["PVEFrame"] = true, |
["CharacterFrame"] = true, |
["PlayerTalentFrame"] = true, |
["SpellBookFrame"] = true, |
["AchievementFrame"] = true, |
["FriendsFrame"] = true, |
["TradeSkillFrame"] = true, |
["GuildFrame"] = true, |
["CollectionsJournal"] = true, |
["MerchantFrame"] = true, |
["GossipFrame"] = true, |
["MailFrame"] = true, |
--["EventTraceFrame"] = true, MOVABLE |
["GarrisonCapacitiveDisplayFrame"] = true, |
["GarrisonRecruiterFrame"] = true, |
["AuctionFrame"] = true, |
["BlackMarketFrame"] = true, |
["QuestFrame"] = true, |
}, |
specific = { |
["WorldMapScreenAnchor"] = true, |
["MinimapCluster"] = true, |
} |
} |
end |
_G['MultiScreenSupportChildren'] = {} |
local childs = { UIParent:GetChildren() } |
i = 2 |
return _G['multiscreensupportsave']['standart'][childname] |
end |
} |
table.insert(allFramesOrder, childname) |
_G['MultiScreenSupportChildren'][childname] = true |
if _G['multiscreensupportsave']['standart'][childname] then |
table.insert(allActiveFramesOrder, childname) |
else |
table.insert(allFramesOrder, childname) |
end |
i = i+1 |
end |
end |
end |
end |
table.sort(allActiveFramesOrder) |
table.sort(allFramesOrder) |
j=1 |
j=2 |
table.foreach(allActiveFramesOrder, function(k,v) |
setting[v].order = j |
j=j+1 |
end) |
if j > 2 then |
setting['enabled'] = { |
order = 1, |
name = "Enabled", |
type = "header" |
} |
j=j+1 |
setting['available'] = { |
order = j, |
name = "Available", |
type = "header" |
} |
j=j+1 |
end |
table.foreach(allFramesOrder, function(k,v) |
setting[v].order = j |
j=j+1 |
end) |
config = { |
local config = { |
name = "MultiScreenSupport", |
handler = MultiScreenSupport, |
type = "group", |
end |
end |
specificconfig = { |
local specificconfig = { |
name = "MultiScreenSupport Specific options", |
handler = MultiScreenSupport, |
type = "group", |
AceConfig:RegisterOptionsTable("MultiScreenSupport", config) |
AceConfig:RegisterOptionsTable("MultiScreenSupport_specific", specificconfig) |
local SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MultiScreenSupport","MultiScreenSupport "..GetAddOnMetadata("MultiScreenSupport", "Version")) |
local SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MultiScreenSupport","MultiScreenSupport ".._G['multiscreensupportsave']["MSSVersion"]) |
SetDefaultOpttion.default = function() _G['multiscreensupportsave'] = { standart = {}, specific = {} } end |
SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MultiScreenSupport_specific","MultiScreenSupport specific frame","MultiScreenSupport "..GetAddOnMetadata("MultiScreenSupport", "Version")) |
SetDefaultOpttion.default = function() SliceCommander:ResetOptions() end |
SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MultiScreenSupport_specific","MultiScreenSupport specific frame","MultiScreenSupport ".._G['multiscreensupportsave']["MSSVersion"]) |
SetDefaultOpttion.default = function() _G['multiscreensupportsave'] = { standart = {}, specific = {} } end |
table.foreach(_G['multiscreensupportsave']['standart'], function(k,v) |
if v and _G[k] then |
MultiScreenSupport:setSpecificParentAnchor(_G[k]) |
end |
end) |
--to add specific addon frame like blizzard one. |
MultiScreenSupport:RegisterEvent("ADDON_LOADED") |
end |
function MultiScreenSupport:ADDON_LOADED(event, addon) |
--[[local addons = { |
['Blizzard_MacroUI'] = true, |
} |
if addons[addon] then |
print(addon) |
end]] |
local allActiveFramesOrder = {} |
local allFramesOrder = {} |
local setting = {} |
local childs = { UIParent:GetChildren() } |
i = 2 |
for _, child in ipairs(childs) do |
if not child:IsForbidden() then |
local childname = child:GetName() |
if childname ~= 'MultiScreenSupportParent' and childname ~= nil and _G['MultiScreenSupportChildren'][childname] == nil then |
local point, relativeTo, relativePoint, xOfs, yOfs = child:GetPoint() |
if relativeTo == nil or relativeTo:GetName() == UIParent:GetName() then |
setting[childname] = { |
order = i, |
name = childname, |
desc = childname, |
type = "toggle", |
set = function(info,val) |
if val then |
MultiScreenSupport:setParentAnchor(child) |
else |
print('Reload UI is needed to reset a frame ankor') |
end |
_G['multiscreensupportsave']['standart'][childname] = val |
end, |
get = function(info) |
if _G['multiscreensupportsave']['standart'][childname] == nil then |
_G['multiscreensupportsave']['standart'][childname] = false |
end |
return _G['multiscreensupportsave']['standart'][childname] |
end |
} |
_G['MultiScreenSupportChildren'][childname] = true |
if _G['multiscreensupportsave']['standart'][childname] then |
table.insert(allActiveFramesOrder, childname) |
else |
table.insert(allFramesOrder, childname) |
end |
i = i+1 |
end |
end |
end |
end |
table.sort(allActiveFramesOrder) |
table.sort(allFramesOrder) |
j=2 |
table.foreach(allActiveFramesOrder, function(k,v) |
setting[v].order = j |
j=j+1 |
end) |
if j > 2 then |
setting['enabled'] = { |
order = 1, |
name = "Enabled", |
type = "header" |
} |
j=j+1 |
setting['available'] = { |
order = j, |
name = "Available", |
type = "header" |
} |
j=j+1 |
end |
table.foreach(allFramesOrder, function(k,v) |
setting[v].order = j |
j=j+1 |
end) |
local addonconfig = { |
name = "MultiScreenSupport Specific options", |
handler = MultiScreenSupport, |
type = "group", |
args = setting |
} |
if j > 2 then |
AceConfig:RegisterOptionsTable("MultiScreenSupport_"..addon, addonconfig) |
SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MultiScreenSupport_"..addon, addon, "MultiScreenSupport ".._G['multiscreensupportsave']["MSSVersion"]) |
SetDefaultOpttion.default = function() _G['multiscreensupportsave'] = { standart = {}, specific = {} } end |
table.foreach(_G['multiscreensupportsave']['standart'], function(k,v) |
if v and _G[k] then |
MultiScreenSupport:setParentAnchor(_G[k]) |
end |
end) |
end |
--print(addon..' LOADED') |
end |
SLASH_MULTISCREENSUPPORT1 = "/MultiScreenSupport" |
SLASH_MULTISCREENSUPPORT2 = "/MSS" |
SlashCmdList["MULTISCREENSUPPORT"] = function(msg) |
## Interface: 60200 |
## Author: Tomate |
## Version: 1.0 |
## Version: 2.0 |
## Title: MultiScreenSupport |
## Notes: Eyefinity and Surround gaming assist to ank frame to the center monitor. |
## Notes: Eyefinity and Surround gaming assist to anchor default UI panels to the center monitor. |
## X-Embeds: Ace3 |
## X-Category: Interface Enhancements |
## SavedVariables: multiscreensupportsave |