Mercurial > wow > inventory
comparison Widgets.lua @ 74:8d11fc88ecab
Default summary width is now 700 pixels (up from 650).
Changed the item data table into a class which is now also used at the custom widgets.
author | Zerotorescue |
---|---|
date | Fri, 24 Dec 2010 21:55:11 +0100 |
parents | 6216b754350d |
children |
comparison
equal
deleted
inserted
replaced
73:6216b754350d | 74:8d11fc88ecab |
---|---|
53 | 53 |
54 | 54 |
55 | 55 |
56 -- Set our own events, since we disabled the normal event-names, we'll call them our custom versions | 56 -- Set our own events, since we disabled the normal event-names, we'll call them our custom versions |
57 self:SetCallback("CustomOnEnter", function(this) | 57 self:SetCallback("CustomOnEnter", function(this) |
58 local itemId = this:GetUserData("itemId"); | 58 local itemData = this:GetUserData("ItemData"); |
59 | 59 |
60 if itemId then | 60 if itemData then |
61 GameTooltip:SetOwner(this.frame, "ANCHOR_TOPRIGHT"); | 61 GameTooltip:SetOwner(this.frame, "ANCHOR_TOPRIGHT"); |
62 GameTooltip:SetHyperlink(("item:%d"):format(itemId)); | 62 GameTooltip:SetHyperlink(("item:%d"):format(itemData.id)); |
63 GameTooltip:Show(); | 63 GameTooltip:Show(); |
64 end | 64 end |
65 end); | 65 end); |
66 self:SetCallback("CustomOnLeave", function(this) | 66 self:SetCallback("CustomOnLeave", function(this) |
67 GameTooltip:Hide(); | 67 GameTooltip:Hide(); |
71 if this.OnClick then | 71 if this.OnClick then |
72 this.OnClick(this, ...); | 72 this.OnClick(this, ...); |
73 end | 73 end |
74 | 74 |
75 local func = this:GetUserData("exec"); | 75 local func = this:GetUserData("exec"); |
76 local itemId = this:GetUserData("itemId"); | 76 local itemData = this:GetUserData("ItemData"); |
77 | 77 |
78 if func then | 78 if func then |
79 -- If this is a config option we will need the group id | 79 -- If this is a config option we will need the group id |
80 local path = this:GetUserData("path"); | 80 local path = this:GetUserData("path"); |
81 local groupId = (path and path[2]) or nil; | 81 local groupId = (path and path[2]) or nil; |
82 | 82 |
83 func(groupId, itemId, ...); | 83 func(groupId, itemData, ...); |
84 end | 84 end |
85 end); | 85 end); |
86 | 86 |
87 | 87 |
88 | 88 |
91 end; | 91 end; |
92 | 92 |
93 -- Remember the original SetText as this might get overwritten by the config-widget | 93 -- Remember the original SetText as this might get overwritten by the config-widget |
94 widget.originalSetText = widget.SetText; | 94 widget.originalSetText = widget.SetText; |
95 | 95 |
96 widget.SetItemId = function(self, itemId) | 96 widget.SetItem = function(self, item) |
97 self:SetUserData("itemId", itemId); | 97 self:SetUserData("ItemData", item); |
98 | 98 |
99 -- Put the icon in front of it | 99 -- Put the icon in front of it |
100 self:SetImage(GetItemIcon(itemId)); | 100 self:SetImage(item.icon); |
101 -- Standardize the size | |
102 self:SetImageSize(16, 16); | |
103 | |
104 -- Make readable font | |
105 self:SetFontObject(GameFontHighlight); | |
106 | |
107 -- We don't want to set the itemId as text, but rather the item link, so get that. | |
108 local itemLink = select(2, GetItemInfo(itemId)) or ("Unknown (#%d)"):format(itemId); | |
109 | |
110 self:originalSetText(itemLink); | |
111 end; | |
112 widget.SetItem = function(self, item) | |
113 self:SetUserData("itemId", item.id); | |
114 | |
115 -- Put the icon in front of it | |
116 self:SetImage(GetItemIcon(item.id)); | |
117 -- Standardize the size | 101 -- Standardize the size |
118 self:SetImageSize(16, 16); | 102 self:SetImageSize(16, 16); |
119 | 103 |
120 -- Make readable font | 104 -- Make readable font |
121 self:SetFontObject(GameFontHighlight); | 105 self:SetFontObject(GameFontHighlight); |
130 item.link = itemLink; | 114 item.link = itemLink; |
131 item.rarity = itemRarity; | 115 item.rarity = itemRarity; |
132 end | 116 end |
133 | 117 |
134 -- We don't want to set the itemId as text, but rather the item link, so get that. | 118 -- We don't want to set the itemId as text, but rather the item link, so get that. |
135 local itemLink = item.link or ("Unknown (#%d)"):format(itemId); | 119 local itemLink = item.link or ("Unknown (#%d)"):format(item.id); |
136 | 120 |
137 self:originalSetText(itemLink); | 121 self:originalSetText(itemLink); |
138 end; | 122 end; |
139 | 123 |
140 return widget; | 124 return widget; |
164 | 148 |
165 -- SetText is called when this button is being created and contains the itemId | 149 -- SetText is called when this button is being created and contains the itemId |
166 -- Forward that itemId to the ItemLinkButton | 150 -- Forward that itemId to the ItemLinkButton |
167 widget.SetText = function(self, value, ...) | 151 widget.SetText = function(self, value, ...) |
168 if value and tonumber(value) then | 152 if value and tonumber(value) then |
169 self:SetItemId(tonumber(value)); | 153 local newItemData = addon.ItemData:New(tonumber(value)); |
154 | |
155 self:SetItem(newItemData); | |
170 end | 156 end |
171 end; | 157 end; |
172 | 158 |
173 widget.OnClick = function(self, ...) | 159 widget.OnClick = function(self, ...) |
174 local option = self:GetUserData("option"); | 160 local option = self:GetUserData("option"); |