diff --git a/.pkgmeta b/.pkgmeta new file mode 100644 index 0000000..37b3557 --- /dev/null +++ b/.pkgmeta @@ -0,0 +1,51 @@ +externals: + Libs/LibStub: + url: svn://svn.wowace.com/wow/libstub/mainline/trunk + tag: latest + Libs/CallbackHandler-1.0: svn://svn.wowace.com/wow/callbackhandler/mainline/tags/1.0.3/CallbackHandler-1.0 + Libs/AceAddon-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceAddon-3.0 + tag: latest + Libs/AceHook-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceHook-3.0 + tag: latest + Libs/AceTimer-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceTimer-3.0 + tag: latest + Libs/AceConfig-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConfig-3.0 + tag: latest + Libs/AceConsole-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConsole-3.0 + tag: latest + Libs/AceDB-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDB-3.0 + tag: latest + Libs/AceEvent-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceEvent-3.0 + tag: latest + Libs/AceGUI-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceGUI-3.0 + tag: latest + Libs/AceLocale-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceLocale-3.0 + tag: latest + Libs/AceDBOptions-3.0: + url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDBOptions-3.0 + tag: latest + Libs/LibSharedMedia-3.0: + url: svn://svn.wowace.com/wow/libsharedmedia-3-0/mainline/trunk + tag: latest + Libs/LibTalentQuery-1.0: + url: svn://svn.wowace.com/wow/libtalentquery-1-0/mainline/trunk + Libs/LibDBIcon-1.0: + url: svn://svn.wowace.com/wow/libdbicon-1-0/mainline/trunk/LibDBIcon-1.0 + tag: latest + Libs/LibDataBroker-1.1: + url: git://github.com/tekkub/libdatabroker-1-1.git + tag: v1.1.4 + Libs/LibQtip-1.0: + url: svn://svn.wowace.com/wow/libqtip-1-0/mainline/trunk + tag: latest + Libs/StarLibs-1.0: + url: svn://svn.curseforge.net/wow/starlibs-1-0/mainline/trunk \ No newline at end of file diff --git a/Driver.lua b/Driver.lua new file mode 100644 index 0000000..62a8c0a --- /dev/null +++ b/Driver.lua @@ -0,0 +1,401 @@ +local mod = LCD4WoW:NewModule("LCD4WoWDriver") +mod.name = "LCD Display" +mod.toggled = true +mod.defaultOff = true +local Evaluator = LibStub("StarLibEvaluator-1.0") +local LibCore = LibStub("StarLibCore-1.0") +local LibLCDText = LibStub("StarLibLCDText-1.0") +local LibDriverQTip = LibStub("StarLibDriverQTip-1.0") +local WidgetText = LibStub("StarLibWidgetText-1.0") +local WidgetBar = LibStub("StarLibWidgetBar-1.0") +local WidgetHistogram = LibStub("StarLibWidgetHistogram-1.0") +local WidgetKey = LibStub("StarLibWidgetKey-1.0") +local WidgetTimer = LibStub("StarLibWidgetTimer-1.0") +local LayoutOptions = LibStub("StarLibLayoutOptions-1.0") + +local _G = _G +local GameTooltip = _G.GameTooltip + +local function copy(tbl) + local new = {} + for k, v in pairs(tbl) do + if type(v) == "table" then + new[k] = copy(v) + else + new[k] = v + end + end + return new +end + +local defaults = {profile= {config=copy(LCD4WoW.config)}} +local displays = {} + +local options +local blankOptions = { + restart = { + name = "Restart Displays", + type = "execute", + func = function() + mod:StopDisplays() + mod:StartDisplays() + end, + order = 1 + }, + defaults = { + name = "Restore Defaults", + type = "execute", + func = function() + mod.db.profile.config = copy(LCD4WoW.config) + LCD4WoW:RebuildOpts() + end, + order = 2 + }, + displays = { + name = "Displays", + type = "group", + args = {}, + order = 3 + }, + layouts = { + name = "Layouts", + type = "group", + args = {}, + order = 4 + }, + widgets = { + name = "Widgets", + type = "group", + args = {}, + order = 5 + } +} + +function mod:RebuildOpts() + options = copy(blankOptions) + options.displays.args.add = { + name = "Add Display", + type = "input", + set = function(info, v) + self.db.profile.config["display_" .. v] = {name = v, layouts = {}, widgets = {}} + LCD4WoW:RebuildOpts() + end, + order = 1 + } + options.layouts.args.add = { + name = "Add Layout", + type = "input", + set = function(info, v) + self.db.profile.config["layout_" .. v] = {name = v} + LCD4WoW:RebuildOpts() + end, + order = 1 + } + options.widgets.args.text = { + name = "Text Widgets", + type = "group", + args = { + add = { + name = "Add", + desc = "Enter a name for your text widget", + type = "input", + set = function(info, v) + self.db.profile.config["widget_" .. v] = {type = "text"} + LCD4WoW:RebuildOpts() + end, + order = 1 + }, + } + } + options.widgets.args.bar = { + name = "Bars", + type = "group", + args = { + add = { + name = "Add", + desc = "Enter a name for your bar widget", + type = "input", + set = function(info, v) + self.db.profile.config["widget_" .. v] = {type = "bar"} + LCD4WoW:RebuildOpts() + end, + order = 1 + } + } + } + options.widgets.args.histogram = { + name = "Histograms", + type = "group", + args = { + add = { + name = "Add", + desc = "Enter a name for your histogram widget", + type = "input", + set = function(info, v) + self.db.profile.config["widget_" .. v] = {type = "histogram"} + LCD4WoW:RebuildOpts() + end, + order = 1 + } + } + } + options.widgets.args.icon = { + name = "Icons", + type = "group", + args = { + add = { + name = "Add", + desc = "Enter a name for your icon widget", + type = "input", + set = function(info, v) + self.db.profile.config["widget_" .. v] = {type = "icon"} + LCD4WoW:RebuildOpts() + end, + order = 1 + } + } + } + options.widgets.args.key = { + name = "Keys", + type = "group", + args = { + add = { + name = "Add", + desc = "Enter a name for your key widget", + type = "input", + set = function(info, v) + self.db.profile.config["widget_" .. v] = {type = "key"} + LCD4WoW:RebuildOpts() + end, + order = 1 + } + } + } + options.widgets.args.timer = { + name = "Timers", + type = "group", + args = { + add = { + name = "Add", + type = "input", + desc = "Enter a name for your timer widget", + set = function(info, v) + self.db.profile.config["widget_" .. v] = {type = "timer"} + LCD4WoW:RebuildOpts() + end, + order = 1 + } + } + } + for k, v in pairs(self.db.profile.config) do + if k:match("^display_.*") then + options.displays.args[k:gsub(" ", "_")] = { + name = k:gsub("display_", ""), + type = "group", + args = { + enable = { + name = "Enable", + type = "toggle", + get = function() + return v.enabled + end, + set = function(info, val) + v.enabled = val + end, + order = 1 + }, + driver = { + name = "Driver", + desc = "This display's driver type", + type = "select", + values = LibCore.driverList, + get = function() return LibCore.driverDict[v.driver] end, + set = function(info, val) + v.driver = LibCore.driverList[val] + LCD4WoW:RebuildOpts() + end, + order = 2 + + }, + delete = { + name = "Delete", + type = "execute", + func = function() + self.db.profile.config[k] = nil + LCD4WoW:RebuildOpts() + end, + order = 100 + } + } + } + local driverOptions = {} + if v.driver == "QTip" then + driverOptions = LibDriverQTip:RebuildOpts(LCD4WoW, v, k) + end + + for kk, vv in pairs(driverOptions) do + options.displays.args[k:gsub(" ", "_")].args[kk] = vv + end + end + if k:match("^layout_") then + options.layouts.args[k:gsub(" ", "_")] = { + name = k, + type = "group", + args = {} + } + options.layouts.args[k:gsub(" ", "_")].args = LayoutOptions:RebuildOpts(LCD4WoW, v, k) + options.layouts.args[k:gsub(" ", "_")].args.delete = { + name = "Delete", + type = "execute", + func = function() + self.db.profile.config[k] = nil + LCD4WoW:RebuildOpts() + end + } + + end + if k:match("^widget_") then + if v.type == "text" then + options.widgets.args.text.args[k:gsub(" ", "_")] = { + name = k:gsub("widget_", ""), + type = "group", + args = WidgetText:GetOptions(LCD4WoW, v, k), + order = 1 + } + options.widgets.args.text.args[k:gsub(" ", "_")].args.delete = { + name = "Delete", + type = "execute", + func = function() + self.db.profile.config[k] = nil + LCD4WoW:RebuildOpts() + end, + order = 100 + } + elseif v.type == "bar" then + options.widgets.args.bar.args[k:gsub(" ", "_")] = { + name = k, + type = "group", + args = WidgetBar:GetOptions(LCD4WoW, v, k), + order = 1 + } + options.widgets.args.bar.args[k:gsub(" ", "_")].args.delete = { + name = "Delete", + type = "execute", + func = function() + self.db.profile.config[k] = nil + LCD4WoW:RebuildOpts() + end, + order = 100 + } + elseif v.type == "histogram" then + options.widgets.args.histogram.args[k:gsub(" ", "_")] = { + name = k, + type = "group", + args = WidgetHistogram:GetOptions(LCD4WoW, v, k), + order = 1 + } + options.widgets.args.histogram.args[k:gsub(" ", "_")].args.delete = { + name = "Delete", + type = "execute", + func = function() + self.db.profile.config[k] = nil + LCD4WoW:RebuildOpts() + end, + order = 100 + } + elseif v.type == "icon" then + options.widgets.args.icon.args[k:gsub(" ", "_")] = { + name = k, + type = "group", + args = {}, --WidgetIcon:GetOptions(LCD4WoW, v, k)}, + order = 2 + } + options.widgets.args.icon.args[k:gsub(" ", "_")].args.delete = { + name = "Delete", + type = "execute", + func = function() + self.db.profile.config[k] = nil + LCD4WoW:RebuildOpts() + end, + order = 100 + } + elseif v.type == "key" then + options.widgets.args.key.args[k:gsub(" ", "_")] = { + name = k, + type = "group", + args = WidgetKey:GetOptions(LCD4WoW, v, k), + order = 3 + } + options.widgets.args.key.args[k:gsub(" ", "_")].args.delete = { + name = "Delete", + type = "execute", + func = function() + self.db.profile.config[k] = nil + LCD4WoW:RebuildOpts() + end, + order = 100 + } + elseif v.type == "timer" then + options.widgets.args.timers.args[k:gsub(" ", "_")] = { + name = k, + type = "group", + args = WidgetTimer:GetOptions(LCD4WoW, v, k), + order = 3 + } + options.widgets.args.timers.args[k:gsub(" ", "_")].args.delete = { + name = "Delete", + type = "execute", + func = function() + self.db.profile.config[k] = nil + LCD4WoW:RebuildOpts() + end, + order = 100 + } + end + end + end +end + +function mod:GetOptions() + self:RebuildOpts() + return options +end + +function mod:OnInitialize() + self.db = LCD4WoW.db:RegisterNamespace(self:GetName(), defaults) + self.environment = {_G=_G} +end + +function mod:OnEnable() + self:StartDisplays() +end + +function mod:OnDisable() + self:StopDisplays() +end + +function mod:StartDisplays() + for k, v in pairs(self.db.profile.config) do + if k:match("^display_") then + if v.driver == "QTip" then + local display = LibDriverQTip:New(self, self.environment, k, self.db.profile.config, LCD4WoW.db.profile.errorLevel) + display:Show() + tinsert(displays, display) + end + end + end +end + +function mod:StopDisplays() + for i, v in ipairs(displays) do + v:Hide() + v:Del() + end + table.wipe(displays) +end + +function mod:MODIFIER_STATE_CHANGED(ev, modifier, up, ...) + for i, display in ipairs(displays) do + display:KeyEvent(modifier, up) + end +end \ No newline at end of file diff --git a/LCD4WoW.lua b/LCD4WoW.lua new file mode 100644 index 0000000..4d70c8a --- /dev/null +++ b/LCD4WoW.lua @@ -0,0 +1,143 @@ +LCD4WoW = StarTip or LibStub("AceAddon-3.0"):NewAddon("LCD4WoW: @project-version@", "AceConsole-3.0", "AceHook-3.0", "AceEvent-3.0") +LCD4WoW.version = GetAddOnMetadata("LCD4WoW", "X-LCD4WoW-Version") or "" +if StarTip then return end +local LibDBIcon = LibStub("LibDBIcon-1.0") +local LSM = _G.LibStub("LibSharedMedia-3.0") +local LDB = LibStub:GetLibrary("LibDataBroker-1.1") +local AceConfigDialog = LibStub("AceConfigDialog-3.0") +local LibError = LibStub("StarLibError-1.0") +local LibQTip = LibStub("LibQTip-1.0") + +local _G = _G +local GameTooltip = _G.GameTooltip +local ipairs, pairs = _G.ipairs, _G.pairs + +local LDB = LibStub("LibDataBroker-1.1"):NewDataObject("LCD4WoW", { + type = "data source", + text = "LCD4WoW", + icon = "Interface\\Icons\\INV_Chest_Cloth_17", + OnClick = function() LCD4WoW:OpenConfig() end +}) + +local defaults = {profile={minimap={}, modules={}, errorLevel=2}} + +local options = { + name = "LCD4WoW", + type = "group", + args = {} +} + +function LCD4WoW:OnInitialize() + self.db = LibStub("AceDB-3.0"):New("LCD4WoWDB", defaults, "Default") + + LibStub("AceConfig-3.0"):RegisterOptionsTable("LCD4WoW", options) + self:RegisterChatCommand("lcd4wow", "OpenConfig") + self:RegisterChatCommand("lcd4linux4wow", "OpenConfig") + AceConfigDialog:AddToBlizOptions("LCD4WoW") + LibDBIcon:Register("LCD4WoWLDB", LDB, self.db.profile.minimap) + +end + +function LCD4WoW:OnEnable() + if self.db.profile.minimap.hide then + LibDBIcon:Hide("LCD4WoWLDB") + else + LibDBIcon:Show("LCD4WoWLDB") + end + + for k,v in self:IterateModules() do + if (self.db.profile.modules[k] == nil and not v.defaultOff) or self.db.profile.modules[k] then + v:Enable() + end + end + + self:RebuildOpts() + + self:RegisterEvent("MODIFIER_STATE_CHANGED") +end + +function LCD4WoW:OnDisable() + for k, v in self:IterateModules() do + v:Disable() + end + self:UnRegisterEvent("MODIFIER_STATE_CHANGED") +end + +function LCD4WoW:OpenConfig() + AceConfigDialog:SetDefaultSize("LCD4WoW", 800, 450) + AceConfigDialog:Open("LCD4WoW") +end + + +function LCD4WoW:RebuildOpts() + local driver = self:GetModule("LCD4WoWDriver") + options.args = driver:GetOptions() + options.args.errorLevel = { + name = "Error Verbosity", + type = "select", + values = LibError.defaultTexts, + get = function() + return self.db.profile.errorLevel + end, + set = function(info, v) + self.db.profile.errorLevel = v + end, + order = 100 + } +end + +-- Taken from CowTip and modified a bit +function LCD4WoW:MODIFIER_STATE_CHANGED(ev, modifier, up, ...) + for i, v in self:IterateModules() do + if v.MODIFIER_STATE_CHANGED then + v:MODIFIER_STATE_CHANGED(ev, modifier, up, ...) + end + end + + local mod + if self.db.profile.modifier == 2 then + mod = (modifier == "LCTRL" or modifier == "RCTRL") and "LCTRL" + modifier = "LCTRL" + elseif self.db.profile.modifier == 3 then + mod = (modifier == "LALT" or modifier == "RALT") and "LALT" + modifier = "LALT" + elseif self.db.profilemodifier == 4 then + mod = (modifier == "LSHIFT" or modifier == "RSHIFT") and "LSHIFT" + modifier = "LSHIFT" + end + + if mod ~= modifier then + return + end + + if up == 0 then + GameTooltip:Hide() + return + end + + local mouseover_unit = StarTip:GetMouseoverUnit() + + local frame = GetMouseFocus() + if frame == WorldFrame or frame == UIParent then + if not UnitExists(mouseover_unit) then + GameTooltip:Hide() + return + end + GameTooltip:Hide() + GameTooltip_SetDefaultAnchor(GameTooltip, UIParent) + GameTooltip:SetUnit(mouseover_unit) + GameTooltip:Show() + else + local OnLeave, OnEnter = frame:GetScript("OnLeave"), frame:GetScript("OnEnter") + if OnLeave then + _G.this = frame + OnLeave(frame) + _G.this = nil + end + if OnEnter then + _G.this = frame + OnEnter(frame) + _G.this = nil + end + end +end diff --git a/LCDWoW.toc b/LCDWoW.toc new file mode 100644 index 0000000..b118cd1 --- /dev/null +++ b/LCDWoW.toc @@ -0,0 +1,23 @@ +## Interface: 30000 +## Title: LCD4WoW +## Notes: LCDs for WoW +## Author: Starlon +## Version: 1.0 +## X-LCD4WoW-Version: @project-version@ +## OptionalDeps: Ace3, LibTalentQuery-1.0, LibMobHealth-4.0, DBM-Core, BigWigs, StarLibs-1.0, StarTip +## SavedVariables: LCD4WoWDB + +Localization\enUS.lua + +Libs\LibStub\LibStub.lua +Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua + +embeds.xml + +LCD4WoW.lua + +config.lua + +modules.xml + + diff --git a/config.lua b/config.lua new file mode 100644 index 0000000..5e08cb6 --- /dev/null +++ b/config.lua @@ -0,0 +1,369 @@ + + +local ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT, ALIGN_MARQUEE, ALIGN_AUTOMATIC, ALIGN_PINGPONG = 1, 2, 3, 4, 5, 6 +local SCROLL_RIGHT, SCROLL_LEFT = 1, 2 + +local foo = 500 + +LCD4WoW.config = { + ["display_startip"] = { + ["enabled"] = true, + ["driver"] = "QTip", + ["layers"] = 3, + ["background"] = "d9ccf16f", + ["rows"] = 6, + ["cols"] = 30, + ["timeout"] = 7000, + ["transition_speed"] = 50, + ["widgets"] = {"widget_key_up", "widget_key_down"}, + ["layouts"] = {"layout_startip", "layout_histogram"}, + ["font"] = {normal="Interface\\AddOns\\startip\\Fonts\\ttf-bitstream-vera-1.10\\VeraMo.ttf", bold="Interface\\AddOns\\startip\\Fonts\\ttf-bitstream-vera-1.10\\VeraMoBd.ttf", size=12}, + --["font"] = {file = GameTooltipText:GetFont(), size = 12} + }, + ["layout_blank"] = { + ["keyless"] = 1, + ["layout-timeout"] = 0 + }, + ["layout_startip"] = { + [1] = { -- row + [1] = "widget_name_label", -- column + [10] = "widget_name" + }, + [2] = { + [1] = "widget_class_label", + [10] = "widget_class" + }, + [3] = { + [1] = "widget_race_label", + [10] = "widget_race", + }, + [4] = { + [1] = "widget_level_label", + [10] = "widget_level", + }, + [5] = { + [1] = "widget_mem_label", + [10] = "widget_mem", + [20] = "widget_mem_bar" + }, + [6] = { + [1] = "widget_cpu_label", + [10] = "widget_cpu", + [20] = "widget_cpu_bar" + }, + ["transition"] = 1, + ["timeout"] = 5000 + }, + ["layout_histogram"] = { + ["layer2"] = { + [1] = { + [1] = "widget_mem_histogram" + }, + }, + ["layer1"] = { + [3] = { + [1] = "widget_mem_perc" + } + }, + ["transition"] = 2, + ["timeout"] = 5000 + }, + ["widget_name_label"] = { + type = "text", + value = 'return "Name:"', + precision = 0xbabe, + align = ALIGN_RIGHT, + cols = 9, + color = "return 0xffffffff" + }, + ["widget_name"] = { + type = "text", + value = "return '--' .. select(1, UnitName('player')) .. '--'", + cols = 20, + align = ALIGN_PINGPONG, + update = 1000, + speed = 100, + direction = SCROLL_LEFT, + dontRtrim = true + }, + ["widget_class_label"] = { + type = "text", + value = 'return "Class:"', + cols = 9, + align = ALIGN_RIGHT + }, + ["widget_class"] = { + type = "text", + value = "return UnitClass('player')", + cols = 10 + }, + ["widget_race_label"] = { + type = "text", + value = 'return "Race:"', + cols = 9, + align = ALIGN_RIGHT + }, + ["widget_race"] = { + type = "text", + value = "return UnitRace('player')", + cols = 10 + }, + ["widget_level_label"] = { + type = "text", + value = 'return "Level:"', + cols = 9, + align = ALIGN_RIGHT, + }, + ["widget_level"] = { + type = "text", + value = "return UnitLevel('player')", + cols = 10 + }, + ["widget_mem_label"] = { + type = "text", + value = "return 'Memory:'", + cols = 9, + align = ALIGN_RIGHT + }, + ["widget_mem"] = { + type = "text", + value = [[ +mem = GetMemUsage("StarTip") +if mem then + return memshort(tonumber(format("%.2f", mem))) +end +]], + cols = 10, + update = 1000, + dontRtrim = true + }, + ["widget_mem_perc"] = { + type = "text", + value = [[ +mem, percent, memdiff, totalMem, totaldiff = GetMemUsage("StarTip") +if mem then + if totaldiff == 0 then totaldiff = 1 end + return '--------' .. format("%.2f", memdiff / totaldiff * 100) .. "%" .. "-------" +end +]], + align = ALIGN_PINGPONG, + direction = SCROLL_RIGHT, + cols = 30, + update = 1000, + speed = 100, + dontRtrim = true + }, + ["widget_mem_bar"] = { + type = "bar", + expression = [[ +mem, percent, memdiff, totalMem, totaldiff = GetMemUsage("StarTip") +if mem then + if totaldiff == 0 then return 0 end + return memdiff / totaldiff * 100 +end +]], + min = "return 0", + max = "return 100", + length = 10 + }, + ["widget_mem_histogram"] = { + type = "histogram", + expression = [[ +mem, percent, memdiff, totalMem, totaldiff = GetMemUsage("StarTip") +if mem then + if totaldiff == 0 then return 0 end + return memdiff / totaldiff * 100 +end +]], + min = "return 0", + max = "return 100", + width = 30, + height = 6, + layer = 1 + }, + ["widget_cpu_label"] = { + type = "text", + value = "return 'CPU:'", + cols = 9, + align = ALIGN_RIGHT + }, + ["widget_cpu"] = { + type = "text", + value = [[ +cpu = GetCPUUsage("StarTip") +if cpu then + return timeshort(cpu) +end +]], + cols = 10, + update = 1000, + dontRtrim = true + }, + ["widget_cpu_bar"] = { + type = "bar", + expression = [[ +cpu, percent, cpudiff, totalCPU, totaldiff = GetCPUUsage("StarTip") +if cpu then + if totaldiff == 0 then return 0 end + return cpudiff / totaldiff * 100 +end +]], + min = "return 0", + max = "return 100", + length = 10 + }, + ["widget_cpu_histogram"] = { + type = "histogram", + expression = [[ +cpu, percent, cpudiff, totalCPU, totaldiff = GetCPUUsage("StarTip") +if cpu then + if totaldiff == 0 then return 0 end + return cpudiff / totaldiff * 100 +end +]], + min = "return 0", + max = "return 100", + width = 30, + height = 6 + }, + ["widget_icon_blob"] = { + ["bitmap"] = { + ["row1"] = ".....|.....|.....", + ["row2"] = ".....|.....|.***.", + ["row3"] = ".....|.***.|*...*", + ["row4"] = "..*..|.*.*.|*...*", + ["row5"] = ".....|.***.|*...*", + ["row6"] = ".....|.....|.***.", + ["row7"] = ".....|.....|.....", + ["row8"] = ".....|.....|....." + }, + ["speed"] = "return foo", + ["type"] = "icon" + }, + ["widget_icon_ekg"] = { + ["bitmap"] = { + ["row1"] = ".....|.....|.....|.....|.....|.....|.....|.....", + ["row2"] = ".....|....*|...*.|..*..|.*...|*....|.....|.....", + ["row3"] = ".....|....*|...*.|..*..|.*...|*....|.....|.....", + ["row4"] = ".....|....*|...**|..**.|.**..|**...|*....|.....", + ["row5"] = ".....|....*|...**|..**.|.**..|**...|*....|.....", + ["row6"] = ".....|....*|...*.|..*.*|.*.*.|*.*..|.*...|*....", + ["row7"] = "*****|*****|****.|***..|**..*|*..**|..***|.****", + ["row8"] = ".....|.....|.....|.....|.....|.....|.....|....." + }, + ["speed"] = "return foo", + ["type"] = "icon" + }, + ["widget_icon_heart"] = { + ["bitmap"] = { + ["row1"] = ".....|.....|.....|.....|.....|.....", + ["row2"] = ".*.*.|.....|.*.*.|.....|.....|.....", + ["row3"] = "*****|.*.*.|*****|.*.*.|.*.*.|.*.*.", + ["row4"] = "*****|.***.|*****|.***.|.***.|.***.", + ["row5"] = ".***.|.***.|.***.|.***.|.***.|.***.", + ["row6"] = ".***.|..*..|.***.|..*..|..*..|..*..", + ["row7"] = "..*..|.....|..*..|.....|.....|.....", + ["row8"] = ".....|.....|.....|.....|.....|....." + }, + ["speed"] = "return foo", + ["type"] = "icon" + }, + ["widget_icon_heartbeat"] = { + ["bitmap"] = { + ["row1"] = ".....|.....", + ["row2"] = ".*.*.|.*.*.", + ["row3"] = "*****|*.*.*", + ["row4"] = "*****|*...*", + ["row5"] = ".***.|.*.*.", + ["row6"] = ".***.|.*.*.", + ["row7"] = "..*..|..*..", + ["row8"] = ".....|....." + }, + ["speed"] = "return foo", + ["type"] = "icon" + }, + ["widget_icon_karo"] = { + ["bitmap"] = { + ["row1"] = ".....|.....|.....|.....|..*..|.....|.....|.....", + ["row2"] = ".....|.....|.....|..*..|.*.*.|..*..|.....|.....", + ["row3"] = ".....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....", + ["row4"] = ".....|..*..|.*.*.|*...*|.....|*...*|.*.*.|..*..", + ["row5"] = ".....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....", + ["row6"] = ".....|.....|.....|..*..|.*.*.|..*..|.....|.....", + ["row7"] = ".....|.....|.....|.....|..*..|.....|.....|.....", + ["row8"] = ".....|.....|.....|.....|.....|.....|.....|....." + }, + ["speed"] = "return foo", + ["type"] = "icon" + }, + ["widget_icon_rain"] = { + ["bitmap"] = { + ["row1"] = "...*.|.....|.....|.*...|....*|..*..|.....|*....", + ["row2"] = "*....|...*.|.....|.....|.*...|....*|..*..|.....", + ["row3"] = ".....|*....|...*.|.....|.....|.*...|....*|..*..", + ["row4"] = "..*..|.....|*....|...*.|.....|.....|.*...|....*", + ["row5"] = "....*|..*..|.....|*....|...*.|.....|.....|.*...", + ["row6"] = ".*...|....*|..*..|.....|*....|...*.|.....|.....", + ["row7"] = ".....|.*...|....*|..*..|.....|*....|...*.|.....", + ["row8"] = ".....|.....|.*...|....*|..*..|.....|*....|...*." + }, + ["speed"] = "return foo", + ["type"] = "icon" + }, + ["widget_icon_squirrel"] = { + ["bitmap"] = { + ["row1"] = ".....|.....|.....|.....|.....|.....", + ["row2"] = ".....|.....|.....|.....|.....|.....", + ["row3"] = ".....|.....|.....|.....|.....|.....", + ["row4"] = "**...|.**..|..**.|...**|....*|.....", + ["row5"] = "*****|*****|*****|*****|*****|*****", + ["row6"] = "...**|..**.|.**..|**...|*....|.....", + ["row7"] = ".....|.....|.....|.....|.....|.....", + ["row8"] = ".....|.....|.....|.....|.....|....." + }, + ["speed"] = "return foo", + ["type"] = "icon" + }, + ["widget_icon_timer"] = { + ["bitmap"] = { + ["row1"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|", + ["row2"] = ".***.|.*+*.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.+++.|.+*+.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|", + ["row3"] = "*****|**+**|**++*|**+++|**++.|**++.|**+++|**+++|**+++|**+++|**+++|+++++|+++++|++*++|++**+|++***|++**.|++**.|++***|++***|++***|++***|++***|*****|", + ["row4"] = "*****|**+**|**+**|**+**|**+++|**+++|**+++|**+++|**+++|**+++|+++++|+++++|+++++|++*++|++*++|++*++|++***|++***|++***|++***|++***|++***|*****|*****|", + ["row5"] = "*****|*****|*****|*****|*****|***++|***++|**+++|*++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++**|+++**|++***|+****|*****|*****|*****|", + ["row6"] = ".***.|.***.|.***.|.***.|.***.|.***.|.**+.|.*++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.++*.|.+**.|.***.|.***.|.***.|.***.|", + ["row7"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|", + ["row8"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|" + }, + ["speed"] = "return foo", + ["type"] = "icon" + }, + ["widget_icon_wave"] = { + ["bitmap"] = { + ["row1"] = "..**.|.**..|**...|*....|.....|.....|.....|.....|....*|...**", + ["row2"] = ".*..*|*..*.|..*..|.*...|*....|.....|.....|....*|...*.|..*..", + ["row3"] = "*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...", + ["row4"] = "*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...", + ["row5"] = "*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...", + ["row6"] = ".....|.....|....*|...*.|..*..|.*..*|*..*.|..*..|.*...|*....", + ["row7"] = ".....|.....|.....|....*|...**|..**.|.**..|**...|*....|.....", + ["row8"] = ".....|.....|.....|.....|.....|.....|.....|.....|.....|....." + }, + ["speed"] = "return foo", + ["type"] = "icon" + }, + ["widget_key_down"] = { + ["expression"] = "lcd.Transition(-1)", + ["key"] = 2, + ["type"] = "key" + }, + ["widget_key_up"] = { + ["expression"] = "lcd.Transition(1)", + ["key"] = 1, + ["type"] = "key" + }, + ["widget_percent"] = { + ["expression"] = "'%'", + ["type"] = "text" + } +} \ No newline at end of file diff --git a/embeds.xml b/embeds.xml new file mode 100644 index 0000000..67ef9ed --- /dev/null +++ b/embeds.xml @@ -0,0 +1,23 @@ +<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ +..\FrameXML\UI.xsd"> + +<Include file = "Libs\StarLibs-1.0\StarLibs-1.0.xml"/> + +<Include file = "Libs\AceAddon-3.0\AceAddon-3.0.xml"/> +<Include file = "Libs\AceEvent-3.0\AceEvent-3.0.xml"/> +<Include file = "Libs\AceHook-3.0\AceHook-3.0.xml"/> +<Include file = "Libs\AceDB-3.0\AceDB-3.0.xml"/> +<Include file = "Libs\AceDBOptions-3.0\AceDBOptions-3.0.xml"/> +<Include file = "Libs\AceConsole-3.0\AceConsole-3.0.xml"/> +<Include file = "Libs\AceGUI-3.0\AceGUI-3.0.xml"/> +<Include file = "Libs\AceLocale-3.0\AceLocale-3.0.xml"/> +<Include file = "Libs\AceConfig-3.0\AceConfig-3.0.xml"/> +<Include file = "Libs\AceTimer-3.0\AceTimer-3.0.xml"/> + +<Include file = "Libs\LibSharedMedia-3.0\lib.xml"/> +<Include file = "Libs\LibMobHealth-4.0\lib.xml"/> +<Script file = "Libs\LibTalentQuery-1.0\LibTalentQuery-1.0.lua"/> +<Script file = "Libs\LibDatabroker-1.1\LibDatabroker-1.1.lua"/> +<Script file = "Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua"/> + +</Ui> diff --git a/modules.xml b/modules.xml new file mode 100644 index 0000000..d1e7e98 --- /dev/null +++ b/modules.xml @@ -0,0 +1,6 @@ +<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ +..\FrameXML\UI.xsd"> + +<Script file = "Driver.lua"/> + +</Ui>