/TelUI_AddonSkins/skins/ArkInventory.lua

http://github.com/Asphyxia/Tukui · Lua · 267 lines · 108 code · 13 blank · 146 comment · 22 complexity · 4e1cab611287dee76dcc8fceb036073a MD5 · raw file

  1. --[[
  2. ArkInventory skin for TelUI
  3. TODO:
  4. + Add Integration options
  5. + Strip config options
  6. Based partially on the work done by devxwill / Mankar - Runetotem
  7. File version v91.109
  8. (C)2010 Darth Android / Telroth - The Venture Co.
  9. ]]
  10. if not Mod_AddonSkins or not IsAddOnLoaded("ArkInventory") then return end
  11. local ArkInventory = LibStub("AceAddon-3.0"):GetAddon("ArkInventory")
  12. if not ArkInventory then return end
  13. local _G = _G
  14. Mod_AddonSkins:RegisterSkin("ArkInventory",function(Skin,skin,Layout,layout,config)
  15. -- Hook paint function to strip background and borders
  16. ArkInventory.Frame_Main_Paint_ = ArkInventory.Frame_Main_Paint
  17. ArkInventory.Frame_Main_Paint = function(frame)
  18. --ArkInventory.Frame_Main_Paint_(frame)
  19. if not ArkInventory.ValidFrame(frame, true) then return end
  20. for i = 1, select("#",frame:GetChildren()) do
  21. local subframe = select(i,frame:GetChildren())
  22. local name = subframe:GetName()
  23. if name then
  24. if _G[name.."ArkBorder"] then _G[name.."ArkBorder"]:Hide() end
  25. if _G[name.."Background"] then _G[name.."Background"]:Hide() end
  26. end
  27. skin:SkinBackgroundFrame(subframe)
  28. -- Whew! We just saved the wasteful creation of over 7 tables!
  29. end
  30. end
  31. --[[ Item Containers ]]
  32. ArkInventory.Frame_Container_Draw_ = ArkInventory.Frame_Container_Draw
  33. ArkInventory.Frame_Container_Draw = function(frame)
  34. local loc_id = frame.ARK_Data.loc_id
  35. -- lock a few settings
  36. ArkInventory.LocationOptionSet(loc_id, "bar", "pad", "external", 2)
  37. ArkInventory.LocationOptionSet(loc_id, "window", "pad", 0)
  38. return ArkInventory.Frame_Container_Draw_(frame)
  39. end
  40. --[[ Scaling ]]
  41. ArkInventory.Frame_Main_Scale_ = ArkInventory.Frame_Main_Scale
  42. ArkInventory.Frame_Main_Scale = function(loc_id)
  43. -- Lock the scale at 1 to protect our pixel-perfect borders!
  44. ArkInventory.Frame_Main_Get( loc_id ):SetScale(1)
  45. ArkInventory.Frame_Main_Anchor_Set(loc_id)
  46. end
  47. --[[ Anchoring ]]
  48. ArkInventory.Frame_Main_Anchor_Set_ = ArkInventory.Frame_Main_Anchor_Set
  49. ArkInventory.Frame_Main_Anchor_Set = function(loc_id)
  50. ArkInventory.Frame_Main_Anchor_Set_(loc_id)
  51. local frame = ArkInventory.Frame_Main_Get(loc_id)
  52. frame = frame:GetName()
  53. local title = _G[frame..ArkInventory.Const.Frame.Title.Name]
  54. local search = _G[frame..ArkInventory.Const.Frame.Search.Name]
  55. local container = _G[frame..ArkInventory.Const.Frame.Container.Name]
  56. local changer = _G[frame..ArkInventory.Const.Frame.Changer.Name]
  57. local status = _G[frame..ArkInventory.Const.Frame.Status.Name]
  58. title:ClearAllPoints()
  59. title:SetPoint("TOPLEFT")
  60. title:SetPoint("TOPRIGHT")
  61. search:ClearAllPoints()
  62. search:SetPoint("TOPLEFT",title,"BOTTOMLEFT",0,-config.buttonSpacing)
  63. search:SetPoint("TOPRIGHT",title,"BOTTOMRIGHT",0,-config.buttonSpacing)
  64. container:ClearAllPoints()
  65. container:SetPoint("TOPLEFT",search,"BOTTOMLEFT",0,-config.buttonSpacing)
  66. container:SetPoint("TOPRIGHT",search,"BOTTOMRIGHT",0,-config.buttonSpacing)
  67. changer:ClearAllPoints()
  68. changer:SetPoint("TOPLEFT",container,"BOTTOMLEFT",0,-config.buttonSpacing)
  69. changer:SetPoint("TOPRIGHT",container,"BOTTOMRIGHT",0,-config.buttonSpacing)
  70. status:ClearAllPoints()
  71. status:SetPoint("TOPLEFT",changer,"BOTTOMLEFT",0,-config.buttonSpacing)
  72. status:SetPoint("TOPRIGHT",changer,"BOTTOMRIGHT",0,-config.buttonSpacing)
  73. -- Reanchor & resize internal components
  74. -- Status
  75. ArkInventory.Const.Frame.Status.Height = config.fontSize + config.borderWidth * 4
  76. _G[status:GetName().."EmptyText"]:SetPoint("LEFT",config.borderWidth,0)
  77. _G[status:GetName().."EmptyText"]:SetFont(config.font,config.fontSize+5,config.fontFlags)
  78. -- Restructure the gold display
  79. _G[status:GetName().."GoldCopperButton"]:SetPoint("RIGHT",-config.borderWidth,0)
  80. _G[status:GetName().."GoldCopperButtonText"]:SetFont(config.font,config.fontSize+5,config.fontFlags)
  81. --_G[status:GetName().."GoldCopperButtonText"]:SetPoint("RIGHT",-13,1)
  82. _G[status:GetName().."GoldSilverButton"]:SetPoint("RIGHT",_G[status:GetName().."GoldCopperButtonText"],"LEFT",-config.borderWidth,0)
  83. _G[status:GetName().."GoldSilverButtonText"]:SetFont(config.font,config.fontSize+5,config.fontFlags)
  84. --_G[status:GetName().."GoldSilverButtonText"]:SetPoint("RIGHT",-13,1)
  85. _G[status:GetName().."GoldGoldButton"]:SetPoint("RIGHT",_G[status:GetName().."GoldSilverButtonText"],"LEFT",-config.borderWidth,0)
  86. _G[status:GetName().."GoldGoldButtonText"]:SetFont(config.font,config.fontSize+5,config.fontFlags)
  87. --_G[status:GetName().."GoldSilverButtonText"]:SetPoint("RIGHT",-13,1)
  88. end
  89. ArkInventory.Const.Frame.Title.Height2 = 32
  90. -- Skin each bar
  91. ArkInventory.Frame_Bar_Paint_ = ArkInventory.Frame_Bar_Paint
  92. ArkInventory.Frame_Bar_Paint = function(bar)
  93. -- Option overrides
  94. local loc_id = bar.ARK_Data.loc_id
  95. ArkInventory.LocationOptionSet(loc_id, "bar", "pad", "internal" , 2)
  96. ArkInventory.LocationOptionSet(loc_id, "bar", "name", "height", 18)
  97. ArkInventory.Frame_Bar_Paint_(bar)
  98. if not bar then return end
  99. local name = bar:GetName()
  100. if _G[name.."ArkBorder"] then _G[name.."ArkBorder"]:Hide() end
  101. if _G[name.."Background"] then _G[name.."Background"]:Hide() end
  102. skin:SkinFrame(bar)
  103. -- Edit mode
  104. if ArkInventory.Global.Mode.Edit then
  105. bar:SetBackdropBorderColor(1,0,0,1)
  106. bar:SetBackdropColor(1,0,0,.1)
  107. end
  108. end
  109. --[[ Item Icons ]]
  110. ArkInventory.SetItemButtonTexture_ = ArkInventory.SetItemButtonTexture
  111. ArkInventory.SetItemButtonTexture = function(frame, texture, r, g, b)
  112. if not frame or not _G[frame:GetName().."IconTexture"] then return end
  113. local obj = _G[frame:GetName().."IconTexture"]
  114. if not texture then
  115. obj:Hide()
  116. else
  117. obj:SetTexture(texture)
  118. obj:SetTexCoord(unpack(config.buttonZoom))
  119. obj:SetVertexColor(r or 1, r and g or 1, r and b or 1)
  120. obj:ClearAllPoints()
  121. obj:SetPoint("TOPLEFT",config.borderWidth,-config.borderWidth)
  122. obj:SetPoint("BOTTOMRIGHT",-config.borderWidth,config.borderWidth)
  123. end
  124. end
  125. --[[ Item Border ]]
  126. ArkInventory.Frame_Item_Update_Border_ = ArkInventory.Frame_Item_Update_Border
  127. ArkInventory.Frame_Item_Update_Border = function(frame)
  128. ArkInventory.Frame_Item_Update_Border_(frame)
  129. if not frame or not _G[frame:GetName().."ArkBorder"] then return end
  130. local obj = _G[frame:GetName().."ArkBorder"]
  131. local r,g,b,a = obj:GetBackdropBorderColor()
  132. obj:Hide()
  133. skin:SkinFrame(frame)
  134. frame:SetBackdropBorderColor(r,g,b,a)
  135. end
  136. end)
  137. --[[
  138. do
  139. -- hook the main draw function
  140. ArkInventory.Frame_Main_Draw_ = ArkInventory.Frame_Main_Draw
  141. ArkInventory.Frame_Main_Draw = function( frame )
  142. ArkInventory.Frame_Main_Draw_( frame )
  143. local af = frame:GetName( )
  144. for _, v in pairs{ "Title", "Search", "Container", "Changer", "Status" } do
  145. TukuiDB:SetTemplate( _G[af..v] )
  146. end
  147. end
  148. TukuiDB:SetTemplate( _G["ARKINV_RulesTitle"] )
  149. TukuiDB:SetTemplate( _G["ARKINV_RulesFrame"] )
  150. TukuiDB:SetTemplate( _G["ARKINV_RulesFrameViewTitle"] )
  151. TukuiDB:SetTemplate( _G["ARKINV_RulesFrameViewSearch"] )
  152. TukuiDB:SetTemplate( _G["ARKINV_RulesFrameViewSort"] )
  153. TukuiDB:SetTemplate( _G["ARKINV_RulesFrameViewTable"] )
  154. TukuiDB:SetTemplate( _G["ARKINV_RulesFrameViewMenu"] )
  155. TukuiDB:SetTemplate( _G["ARKINV_RulesFrame"] )
  156. TukuiDB:SetTemplate( _G["ARKINV_RulesFrameModifyTitle"] )
  157. TukuiDB:SetTemplate( _G["ARKINV_RulesFrameModifyMenu"] )
  158. TukuiDB:SetTemplate( _G["ARKINV_RulesFrameModifyData"] )
  159. TukuiDB:SetTemplate( _G["ARKINV_RulesFrameModifyDataScrollTextBorder"] )
  160. TukuiDB:SetTemplate( _G["ARKINV_SearchTitle"] )
  161. TukuiDB:SetTemplate( _G["ARKINV_SearchFrameViewSearch"] )
  162. TukuiDB:SetTemplate( _G["ARKINV_SearchFrameViewTable"] )
  163. TukuiDB:SetTemplate( _G["ARKINV_SearchFrame"] )
  164. TukuiDB:SetTemplate( _G["ARKINV_Frame4Log"] )
  165. -- hook the anchors
  166. ArkInventory.Frame_Main_Anchor_Set_ = ArkInventory.Frame_Main_Anchor_Set
  167. ArkInventory.Frame_Main_Anchor_Set = function( loc_id, rescale )
  168. local frame = ArkInventory.Frame_Main_Get( loc_id )
  169. local f1 = _G[frame:GetName( ) .. ArkInventory.Const.Frame.Title.Name]
  170. local f2 = _G[frame:GetName( ) .. ArkInventory.Const.Frame.Search.Name]
  171. local f3 = _G[frame:GetName( ) .. ArkInventory.Const.Frame.Container.Name]
  172. local f4 = _G[frame:GetName( ) .. ArkInventory.Const.Frame.Changer.Name]
  173. local f5 = _G[frame:GetName( ) .. ArkInventory.Const.Frame.Status.Name]
  174. frame:ClearAllPoints( )
  175. f1:ClearAllPoints( )
  176. f2:ClearAllPoints( )
  177. f3:ClearAllPoints( )
  178. f4:ClearAllPoints( )
  179. f5:ClearAllPoints( )
  180. if loc_id == 3 or loc_id == 4 or loc_id == 5 then
  181. frame:SetPoint( "BOTTOMLEFT", InfoLeft, "TOPLEFT", 0, TukuiDB:Scale( 5 ) )
  182. f5:SetPoint( "BOTTOMLEFT", frame )
  183. f5:SetPoint( "RIGHT", frame )
  184. f4:SetPoint( "BOTTOMLEFT", f5, "TOPLEFT", 0, -3 )
  185. f4:SetPoint( "RIGHT", frame )
  186. f3:SetPoint( "BOTTOMLEFT", f4, "TOPLEFT", 0, -3 )
  187. f3:SetPoint( "RIGHT", frame )
  188. f2:SetPoint( "BOTTOMLEFT", f3, "TOPLEFT", 0, -4 )
  189. f2:SetPoint( "RIGHT", frame )
  190. f1:SetPoint( "BOTTOMLEFT", f2, "TOPLEFT", 0, -3 )
  191. f1:SetPoint( "RIGHT", frame )
  192. else
  193. frame:SetPoint( "BOTTOMRIGHT", InfoRight, "TOPRIGHT", 0, TukuiDB:Scale( 5 ) )
  194. f5:SetPoint( "BOTTOMRIGHT", frame )
  195. f5:SetPoint( "LEFT", frame )
  196. f4:SetPoint( "BOTTOMRIGHT", f5, "TOPRIGHT", 0, -3 )
  197. f4:SetPoint( "LEFT", frame )
  198. f3:SetPoint( "BOTTOMRIGHT", f4, "TOPRIGHT", 0, -3 )
  199. f3:SetPoint( "LEFT", frame )
  200. f2:SetPoint( "BOTTOMRIGHT", f3, "TOPRIGHT", 0, -4 )
  201. f2:SetPoint( "LEFT", frame )
  202. f1:SetPoint( "BOTTOMRIGHT", f2, "TOPRIGHT", 0, -3 )
  203. f1:SetPoint( "LEFT", frame )
  204. end
  205. if ArkInventory.LocationOptionGet( loc_id, { "anchor", loc_id, "locked" } ) then
  206. frame:RegisterForDrag( )
  207. else
  208. frame:RegisterForDrag( "LeftButton" )
  209. end
  210. if rescale then
  211. ArkInventory.Frame_Main_Anchor_Save( frame )
  212. end
  213. end
  214. -- Set some settings to make it look better
  215. for i = 1, 9 do
  216. ArkInventory.LocationOptionSet( i, { "changer", "hide" }, true )
  217. ArkInventory.LocationOptionSet( i, { "title", "size" }, ArkInventory.Const.Window.Title.SizeThin )
  218. if TukuiDB["panels"].tinfowidth >= 405 then
  219. ArkInventory.LocationOptionSet( i, { "window", "width" }, 12 )
  220. elseif TukuiDB["panels"].tinfowidth >= 370 and TukuiDB["panels"].tinfowidth < 405 then
  221. ArkInventory.LocationOptionSet( i, { "window", "width" }, 11 )
  222. elseif TukuiDB["panels"].tinfowidth >= 335 and TukuiDB["panels"].tinfowidth < 370 then
  223. ArkInventory.LocationOptionSet( i, { "window", "width" }, 10 )
  224. else
  225. ArkInventory.LocationOptionSet( i, { "window", "width" }, 9 )
  226. end
  227. end
  228. end
  229. ]]