/trunk
local AceConfig = LibStub("AceConfig-3.0") |
local AceConfigDialog = LibStub("AceConfigDialog-3.0") |
--local L = LibStub("AceLocale-3.0"):GetLocale("MultiScreenSupport") |
local FrameNumber = 0 |
local self = MultiScreenSupport |
function MultiScreenSupport:OnInitialize() |
MultiScreenSupport:RegisterEvent("PLAYER_LOGIN") |
end |
if not(_G['multiscreensupportsave']['MSSVersion']) or _G['multiscreensupportsave']['MSSVersion'] < '2.2' then |
_G['multiscreensupportsave']['standart']["DressUpFrame"] = true |
end |
_G['multiscreensupportsave']["MSSVersion"] = MSSVersion |
end |
function MultiScreenSupport:PLAYER_LOGIN(event) |
function MultiScreenSupport:PLAYER_LOGIN() |
local allActiveFramesOrder = {} |
local allFramesOrder = {} |
local j |
local Resolution = GetCVar("gxWindowedResolution") |
local ScreenHeight = tonumber(string.match(Resolution, "%d+x(%d+)")) |
local ScreenWidth = tonumber(string.match(Resolution, "(%d+)x+%d")) |
local j, eyefinity |
local Resolution = ({GetScreenResolutions()})[GetCurrentResolution()] |
if Resolution == nil then |
print("MultiScreenSupport: The resolution for the PixelPerfect option can not be found properly. You should try to change your client to fullscreen and then back to windowed.") |
return false |
end |
local ScreenWidth, ScreenHeight = DecodeResolution(Resolution) |
--Pixel Perfect scale |
SetCVar("uiScale", 768/ScreenHeight) |
if (ScreenWidth > 3840) or (UIParent:GetWidth() + 1 > ScreenWidth) then |
local width = ScreenWidth |
local height = ScreenHeight |
-- because some user enable bezel compensation, we need to find the real width of a single monitor. |
-- I don't know how it really work, but i'm assuming they add pixel to width to compensate the bezel. :P |
-- HQ resolution |
if width >= 9840 then width = 3280 end -- WQSXGA |
if width >= 7680 and width < 9840 then width = 2560 end -- WQXGA |
if width >= 5760 and width < 7680 then width = 1920 end -- WUXGA & HDTV |
if width >= 5040 and width < 5760 then width = 1680 end -- WSXGA+ |
-- adding height condition here to be sure it work with bezel compensation because WSXGA+ and UXGA/HD+ got approx same width |
if width >= 4800 and width < 5760 and height == 900 then width = 1600 end -- UXGA & HD+ |
-- low resolution screen |
if width >= 4320 and width < 4800 then width = 1440 end -- WSXGA |
if width >= 4080 and width < 4320 then width = 1360 end -- WXGA |
if width >= 3840 and width < 4080 then width = 1224 end -- SXGA & SXGA (UVGA) & WXGA & HDTV |
-- register a constant, we will need it later for launch.lua |
eyefinity = width |
end |
if not eyefinity then |
print('ERROR WITH THE DETECTION OF SURROUND GAMING / EYEFINITY, MultiSreenSupport WILL NOT WORK'); |
return |
end |
local width = eyefinity |
local height = ScreenHeight |
MultiScreenSupport:initSettings() |
MultiScreenSupportParent = CreateFrame('Frame', 'MultiScreenSupportParent', UIParent) |
local MultiScreenSupportParent = CreateFrame('Frame', 'MultiScreenSupportParent', UIParent) |
MultiScreenSupportParent:SetFrameLevel(UIParent:GetFrameLevel()) |
MultiScreenSupportParent:SetPoint('CENTER', UIParent, 'CENTER') |
MultiScreenSupportParent:SetSize(width, height) |
--MultiScreenSupportParent:SetBackdrop({bgFile = "Interface/Tooltips/UI-Tooltip-Background", |
-- edgeFile = "Interface/Tooltips/UI-Tooltip-Border", |
-- tile = true, tileSize = 16, edgeSize = 1, |
-- insets = { left = 1, right = 1, top = 1, bottom = 1 }}) |
-- edgeFile = "Interface/Tooltips/UI-Tooltip-Border", |
-- tile = true, tileSize = 16, edgeSize = 1, |
-- insets = { left = 1, right = 1, top = 1, bottom = 1 }}) |
local setting = {} |
local specificSetting = {} |
_G['MultiScreenSupportChildren'] = {} |
local childs = { UIParent:GetChildren() } |
i = 2 |
local i = 2 |
for _, child in ipairs(childs) do |
if not child:IsForbidden() then |
local childname = child:GetName() |
end |
_G['multiscreensupportsave']['standart'][childname] = val |
end, |
get = function(info) |
get = function(info) |
if _G['multiscreensupportsave']['standart'][childname] == nil then |
_G['multiscreensupportsave']['standart'][childname] = false |
end |
end |
end |
end |
table.sort(allActiveFramesOrder) |
table.sort(allFramesOrder) |
j=2 |
setting[v].order = j |
j=j+1 |
end) |
local standartconfig = { |
name = "MultiScreenSupport Standard options", |
handler = MultiScreenSupport, |
type = "group", |
args = setting |
} |
local childs = { WorldMapScreenAnchor, MinimapCluster } |
i = 2 |
for _, child in ipairs(childs) do |
end |
_G['multiscreensupportsave']['specific'][childname] = val |
end, |
get = function(info) |
get = function(info) |
if _G['multiscreensupportsave']['specific'][childname] == nil then |
_G['multiscreensupportsave']['specific'][childname] = false |
end |
i = i+1 |
end |
end |
local specificconfig = { |
name = "MultiScreenSupport Specific options", |
handler = MultiScreenSupport, |
type = "group", |
args = specificSetting |
} |
AceConfig:RegisterOptionsTable("MultiScreenSupport_standart", standartconfig) |
AceConfig:RegisterOptionsTable("MultiScreenSupport_specific", specificconfig) |
local SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MultiScreenSupport_standart","MultiScreenSupport ".._G['multiscreensupportsave']["MSSVersion"]) |
SetDefaultOpttion.default = function() _G['multiscreensupportsave'] = { standart = {}, specific = {} } end |
SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MultiScreenSupport_specific","Specific frames","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) |
table.foreach(_G['multiscreensupportsave']['specific'], function(k,v) |
if v then |
MultiScreenSupport:setSpecificParentAnchor(_G[k]) |
end |
end) |
--to add specific addon frame like blizzard one. |
MultiScreenSupport:RegisterEvent("ADDON_LOADED") |
end |
local allFramesOrder = {} |
local setting = {} |
local childs = { UIParent:GetChildren() } |
i = 2 |
local i = 2 |
for _, child in ipairs(childs) do |
if not child:IsForbidden() then |
local childname = child:GetName() |
end |
_G['multiscreensupportsave']['standart'][childname] = val |
end, |
get = function(info) |
get = function(info) |
if _G['multiscreensupportsave']['standart'][childname] == nil then |
_G['multiscreensupportsave']['standart'][childname] = false |
end |
end |
end |
end |
table.sort(allActiveFramesOrder) |
table.sort(allFramesOrder) |
j=2 |
local j=2 |
table.foreach(allActiveFramesOrder, function(k,v) |
setting[v].order = j |
j=j+1 |
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"]) |
local 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]) |
_G['multiscreensupportsave']['standart'][rest2] = false |
end |
if command == 'frame' then |
local arg |
if rest2 ~= "" then |
arg = _G[rest2] |
else |
if arg:GetParent() and arg:GetParent():GetName() then |
ChatFrame1:AddMessage("Parent: |cffFFD100"..arg:GetParent():GetName()) |
end |
ChatFrame1:AddMessage("Width: |cffFFD100"..format("%.2f",arg:GetWidth())) |
ChatFrame1:AddMessage("Height: |cffFFD100"..format("%.2f",arg:GetHeight())) |
ChatFrame1:AddMessage("Strata: |cffFFD100"..arg:GetFrameStrata()) |
ChatFrame1:AddMessage("Level: |cffFFD100"..arg:GetFrameLevel()) |
if xOfs then |
ChatFrame1:AddMessage("X: |cffFFD100"..format("%.2f",xOfs)) |
end |
if arg:GetParent() and arg:GetParent():GetName() then |
ChatFrame1:AddMessage("Parent: |cffFFD100"..arg:GetParent():GetName()) |
end |
ChatFrame1:AddMessage("Width: |cffFFD100"..format("%.2f",arg:GetWidth())) |
ChatFrame1:AddMessage("Height: |cffFFD100"..format("%.2f",arg:GetHeight())) |
ChatFrame1:AddMessage("Strata: |cffFFD100"..arg:GetFrameStrata()) |
ChatFrame1:AddMessage("Level: |cffFFD100"..arg:GetFrameLevel()) |
if xOfs then |
ChatFrame1:AddMessage("X: |cffFFD100"..format("%.2f",xOfs)) |
end |
ScrollFrame Container |
Plain container that scrolls its content and doesn't grow in height. |
-------------------------------------------------------------------------------]] |
local Type, Version = "ScrollFrame", 23 |
local Type, Version = "ScrollFrame", 24 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
local IsLegion = select(4, GetBuildInfo()) >= 70000 |
-- Lua APIs |
local pairs, assert, type = pairs, assert, type |
local min, max, floor, abs = math.min, math.max, math.floor, math.abs |
local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND") |
scrollbg:SetAllPoints(scrollbar) |
scrollbg:SetTexture(0, 0, 0, 0.4) |
if IsLegion then |
scrollbg:SetColorTexture(0, 0, 0, 0.4) |
else |
scrollbg:SetTexture(0, 0, 0, 0.4) |
end |
--Container Support |
local content = CreateFrame("Frame", nil, scrollframe) |
--[[ $Id: AceGUIWidget-DropDown-Items.lua 996 2010-12-01 18:34:17Z nevcairiel $ ]]-- |
--[[ $Id: AceGUIWidget-DropDown-Items.lua 1137 2016-05-15 10:57:36Z nevcairiel $ ]]-- |
local AceGUI = LibStub("AceGUI-3.0") |
local IsLegion = select(4, GetBuildInfo()) >= 70000 |
-- Lua APIs |
local select, assert = select, assert |
-- A single line to separate items |
do |
local widgetType = "Dropdown-Item-Separator" |
local widgetVersion = 1 |
local widgetVersion = 2 |
-- exported, override |
local function SetDisabled(self, disabled) |
local line = self.frame:CreateTexture(nil, "OVERLAY") |
line:SetHeight(1) |
line:SetTexture(.5, .5, .5) |
if IsLegion then |
line:SetColorTexture(.5, .5, .5) |
else |
line:SetTexture(.5, .5, .5) |
end |
line:SetPoint("LEFT", self.frame, "LEFT", 10, 0) |
line:SetPoint("RIGHT", self.frame, "RIGHT", -10, 0) |
local _G = _G |
local PlaySound, CreateFrame, UIParent = PlaySound, CreateFrame, UIParent |
local wowMoP |
do |
local _, _, _, interface = GetBuildInfo() |
wowMoP = (interface >= 50000) |
end |
--[[----------------------------------------------------------------------------- |
Scripts |
-------------------------------------------------------------------------------]] |
-------------------------------------------------------------------------------]] |
local function Constructor() |
local name = "AceGUI30Button" .. AceGUI:GetNextWidgetNum(Type) |
local frame = CreateFrame("Button", name, UIParent, wowMoP and "UIPanelButtonTemplate" or "UIPanelButtonTemplate2") |
local frame = CreateFrame("Button", name, UIParent, "UIPanelButtonTemplate") |
frame:Hide() |
frame:EnableMouse(true) |
TreeGroup Container |
Container that uses a tree control to switch between groups. |
-------------------------------------------------------------------------------]] |
local Type, Version = "TreeGroup", 38 |
local Type, Version = "TreeGroup", 40 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
local IsLegion = select(4, GetBuildInfo()) >= 70000 |
-- Lua APIs |
local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type |
local math_min, math_max, floor = math.min, math.max, floor |
["OnAcquire"] = function(self) |
self:SetTreeWidth(DEFAULT_TREE_WIDTH, DEFAULT_TREE_SIZABLE) |
self:EnableButtonTooltips(true) |
self.frame:SetScript("OnUpdate", FirstFrameUpdate) |
end, |
["OnRelease"] = function(self) |
local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND") |
scrollbg:SetAllPoints(scrollbar) |
scrollbg:SetTexture(0,0,0,0.4) |
if IsLegion then |
scrollbg:SetColorTexture(0,0,0,0.4) |
else |
scrollbg:SetTexture(0,0,0,0.4) |
end |
local border = CreateFrame("Frame",nil,frame) |
border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT") |
border:SetPoint("BOTTOMRIGHT") |
--[[----------------------------------------------------------------------------- |
ColorPicker Widget |
-------------------------------------------------------------------------------]] |
local Type, Version = "ColorPicker", 22 |
local Type, Version = "ColorPicker", 23 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
local IsLegion = select(4, GetBuildInfo()) >= 70000 |
-- Lua APIs |
local pairs = pairs |
local texture = frame:CreateTexture(nil, "BACKGROUND") |
texture:SetWidth(16) |
texture:SetHeight(16) |
texture:SetTexture(1, 1, 1) |
if IsLegion then |
texture:SetColorTexture(1, 1, 1) |
else |
texture:SetTexture(1, 1, 1) |
end |
texture:SetPoint("CENTER", colorSwatch) |
texture:Show() |
local Type, Version = "MultiLineEditBox", 27 |
local Type, Version = "MultiLineEditBox", 28 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
-- List them here for Mikk's FindGlobals script |
-- GLOBALS: ACCEPT, ChatFontNormal |
local wowMoP |
do |
local _, _, _, interface = GetBuildInfo() |
wowMoP = (interface >= 50000) |
end |
--[[----------------------------------------------------------------------------- |
Support functions |
-------------------------------------------------------------------------------]] |
self.frame:SetScript("OnShow", OnShowFocus) |
end |
end, |
["HighlightText"] = function(self, from, to) |
self.editBox:HighlightText(from, to) |
end, |
["GetCursorPosition"] = function(self) |
return self.editBox:GetCursorPosition() |
end, |
label:SetText(ACCEPT) |
label:SetHeight(10) |
local button = CreateFrame("Button", ("%s%dButton"):format(Type, widgetNum), frame, wowMoP and "UIPanelButtonTemplate" or "UIPanelButtonTemplate2") |
local button = CreateFrame("Button", ("%s%dButton"):format(Type, widgetNum), frame, "UIPanelButtonTemplate") |
button:SetPoint("BOTTOMLEFT", 0, 4) |
button:SetHeight(22) |
button:SetWidth(label:GetStringWidth() + 24) |
Keybinding Widget |
Set Keybindings in the Config UI. |
-------------------------------------------------------------------------------]] |
local Type, Version = "Keybinding", 24 |
local Type, Version = "Keybinding", 25 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
-- List them here for Mikk's FindGlobals script |
-- GLOBALS: NOT_BOUND |
local wowMoP |
do |
local _, _, _, interface = GetBuildInfo() |
wowMoP = (interface >= 50000) |
end |
--[[----------------------------------------------------------------------------- |
Scripts |
-------------------------------------------------------------------------------]] |
local self = frame.obj |
if self.waitingForKey then |
frame:EnableKeyboard(false) |
frame:EnableMouseWheel(false) |
self.msgframe:Hide() |
frame:UnlockHighlight() |
self.waitingForKey = nil |
else |
frame:EnableKeyboard(true) |
frame:EnableMouseWheel(true) |
self.msgframe:Show() |
frame:LockHighlight() |
self.waitingForKey = true |
end |
frame:EnableKeyboard(false) |
frame:EnableMouseWheel(false) |
self.msgframe:Hide() |
frame:UnlockHighlight() |
self.waitingForKey = nil |
Keybinding_OnKeyDown(frame, button) |
end |
local function Keybinding_OnMouseWheel(frame, direction) |
local button |
if direction >= 0 then |
button = "MOUSEWHEELUP" |
else |
button = "MOUSEWHEELDOWN" |
end |
Keybinding_OnKeyDown(frame, button) |
end |
--[[----------------------------------------------------------------------------- |
Methods |
-------------------------------------------------------------------------------]] |
self.msgframe:Hide() |
self:SetDisabled(false) |
self.button:EnableKeyboard(false) |
self.button:EnableMouseWheel(false) |
end, |
-- ["OnRelease"] = nil, |
local name = "AceGUI30KeybindingButton" .. AceGUI:GetNextWidgetNum(Type) |
local frame = CreateFrame("Frame", nil, UIParent) |
local button = CreateFrame("Button", name, frame, wowMoP and "UIPanelButtonTemplate" or "UIPanelButtonTemplate2") |
local button = CreateFrame("Button", name, frame, "UIPanelButtonTemplate") |
button:EnableMouse(true) |
button:EnableMouseWheel(false) |
button:RegisterForClicks("AnyDown") |
button:SetScript("OnEnter", Control_OnEnter) |
button:SetScript("OnLeave", Control_OnLeave) |
button:SetScript("OnClick", Keybinding_OnClick) |
button:SetScript("OnKeyDown", Keybinding_OnKeyDown) |
button:SetScript("OnMouseDown", Keybinding_OnMouseDown) |
button:SetScript("OnMouseWheel", Keybinding_OnMouseWheel) |
button:SetPoint("BOTTOMLEFT") |
button:SetPoint("BOTTOMRIGHT") |
button:SetHeight(24) |
local select, pairs, print = select, pairs, print |
-- WoW APIs |
local CreateFrame, UIParent, GetBuildInfo = CreateFrame, UIParent, GetBuildInfo |
local CreateFrame, UIParent = CreateFrame, UIParent |
--[[----------------------------------------------------------------------------- |
Scripts |
for method, func in pairs(methods) do |
widget[method] = func |
end |
-- SetText is deprecated, but keep it around for a while. (say, to WoW 4.0) |
if (select(4, GetBuildInfo()) < 40000) then |
widget.SetText = widget.SetLabel |
else |
widget.SetText = function(self, ...) print("AceGUI-3.0-Icon: SetText is deprecated! Use SetLabel instead!"); self:SetLabel(...) end |
end |
widget.SetText = function(self, ...) print("AceGUI-3.0-Icon: SetText is deprecated! Use SetLabel instead!"); self:SetLabel(...) end |
return AceGUI:RegisterAsWidget(widget) |
end |
--[[----------------------------------------------------------------------------- |
EditBox Widget |
-------------------------------------------------------------------------------]] |
local Type, Version = "EditBox", 25 |
local Type, Version = "EditBox", 26 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
if not self.frame:IsShown() then |
self.frame:SetScript("OnShow", Frame_OnShowFocus) |
end |
end, |
["HighlightText"] = function(self, from, to) |
self.editbox:HighlightText(from, to) |
end |
} |
-- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName". |
-- @class file |
-- @name AceConfigRegistry-3.0 |
-- @release $Id: AceConfigRegistry-3.0.lua 1105 2013-12-08 22:11:58Z nevcairiel $ |
local MAJOR, MINOR = "AceConfigRegistry-3.0", 15 |
-- @release $Id: AceConfigRegistry-3.0.lua 1139 2016-07-03 07:43:51Z nevcairiel $ |
local MAJOR, MINOR = "AceConfigRegistry-3.0", 16 |
local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR) |
if not AceConfigRegistry then return end |
local ismethodtable={["table"]=true,["string"]=true,["function"]=true, _="methodname, funcref or table"} |
local optstring={["nil"]=true,["string"]=true, _="string"} |
local optstringfunc={["nil"]=true,["string"]=true,["function"]=true, _="string or funcref"} |
local optstringnumberfunc={["nil"]=true,["string"]=true,["number"]=true,["function"]=true, _="string, number or funcref"} |
local optnumber={["nil"]=true,["number"]=true, _="number"} |
local optmethod={["nil"]=true,["string"]=true,["function"]=true, _="methodname or funcref"} |
local optmethodfalse={["nil"]=true,["string"]=true,["function"]=true,["boolean"]={[false]=true}, _="methodname, funcref or false"} |
dialogHidden=optmethodbool, |
dropdownHidden=optmethodbool, |
cmdHidden=optmethodbool, |
icon=optstringfunc, |
icon=optstringnumberfunc, |
iconCoords=optmethodtable, |
handler=opttable, |
get=optmethodfalse, |
local typedkeys={ |
header={}, |
description={ |
image=optstringfunc, |
image=optstringnumberfunc, |
imageCoords=optmethodtable, |
imageHeight=optnumber, |
imageWidth=optnumber, |
childGroups=optstring, |
}, |
execute={ |
image=optstringfunc, |
image=optstringnumberfunc, |
imageCoords=optmethodtable, |
imageHeight=optnumber, |
imageWidth=optnumber, |
}, |
toggle={ |
tristate=optbool, |
image=optstringfunc, |
image=optstringnumberfunc, |
imageCoords=optmethodtable, |
}, |
tristate={ |
--- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. |
-- @class file |
-- @name AceConfigDialog-3.0 |
-- @release $Id: AceConfigDialog-3.0.lua 1126 2014-11-10 06:38:01Z nevcairiel $ |
-- @release $Id: AceConfigDialog-3.0.lua 1139 2016-07-03 07:43:51Z nevcairiel $ |
local LibStub = LibStub |
local MAJOR, MINOR = "AceConfigDialog-3.0", 60 |
local MAJOR, MINOR = "AceConfigDialog-3.0", 61 |
local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) |
if not AceConfigDialog then return end |
local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) |
local image, width, height = GetOptionsMemberValue("image",v, options, path, appName) |
if type(image) == "string" then |
if type(image) == "string" or type(image) == "number" then |
control = gui:Create("Icon") |
if not width then |
width = GetOptionsMemberValue("imageWidth",v, options, path, appName) |
local image = GetOptionsMemberValue("image", v, options, path, appName) |
local imageCoords = GetOptionsMemberValue("imageCoords", v, options, path, appName) |
if type(image) == "string" then |
if type(image) == "string" or type(image) == "number" then |
if type(imageCoords) == "table" then |
control:SetImage(image, unpack(imageCoords)) |
else |
local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) |
local image, width, height = GetOptionsMemberValue("image",v, options, path, appName) |
if type(image) == "string" then |
if type(image) == "string" or type(image) == "number" then |
if not width then |
width = GetOptionsMemberValue("imageWidth",v, options, path, appName) |
end |
## Interface: 70000 |
## Author: Tomate |
## Version: 3.0 |
## Version: 3.1 |
## Title: MultiScreenSupport |
## Notes: Eyefinity and Surround gaming assist to anchor default UI panels to the center monitor. |
## X-Embeds: Ace3 |