Quantcast

inspect changes

Repooc [04-02-14 - 00:43]
inspect changes
Filename
ElvUI_SLE/modules/characterframe/communication.lua
ElvUI_SLE/modules/characterframe/inspectframe.lua
ElvUI_SLE/modules/characterframe/notifyinspect.lua
diff --git a/ElvUI_SLE/modules/characterframe/communication.lua b/ElvUI_SLE/modules/characterframe/communication.lua
index c8ec762..757ee98 100644
--- a/ElvUI_SLE/modules/characterframe/communication.lua
+++ b/ElvUI_SLE/modules/characterframe/communication.lua
@@ -93,12 +93,10 @@ if not AISM then
 		['ASP'] = 'ActiveSpec',
 		['SID'] = 'SetItemData',
 	}
-
 	for groupNum = 1, MAX_TALENT_GROUPS do
 		AISM.DataTypeTable['SP'..groupNum] = 'Specialization'
 		AISM.DataTypeTable['GL'..groupNum] = 'Glyph'
 	end
-
 	for _, keyName in pairs(AISM.GearList) do
 		AISM.DataTypeTable[keyName] = 'Gear'
 	end
@@ -222,9 +220,9 @@ if not AISM then

 		self.Updater.ProfessionUpdated = true
 	end
-
 	AISM.Updater:RegisterEvent('CHAT_MSG_SYSTEM')

+
 	--<< Specialization String >>--
 	function AISM:GetPlayerSpecSetting()
 		local DataString, isSelected, selectedSlot
@@ -275,6 +273,7 @@ if not AISM then
 	AISM.Updater:RegisterEvent('ACTIVE_TALENT_GROUP_CHANGED')
 	AISM.Updater:RegisterEvent('CHARACTER_POINTS_CHANGED')

+
 	--<< Glyph String >>--
 	function AISM:GetPlayerGlyphString()
 		local ShortString, FullString
@@ -348,8 +347,9 @@ if not AISM then

 			if slotLink then
 				self.Tooltip:ClearLines()
-				self.Tooltip:SetInventoryItem('player', slotID)
-
+				self.Tooltip:SetHyperlink(slotLink)
+				--self.Tooltip:SetInventoryItem('player', slotID)
+
 				checkSpace = 2

 				for i = 1, self.Tooltip:NumLines() do
@@ -433,7 +433,6 @@ if not AISM then

 		return nil
 	end
-
 	AISM.Updater:RegisterEvent('SOCKET_INFO_SUCCESS')
 	AISM.Updater:RegisterEvent('PLAYER_EQUIPMENT_CHANGED')
 	--AISM.Updater:RegisterEvent('UNIT_INVENTORY_CHANGED')
@@ -455,6 +454,17 @@ if not AISM then
 				TableToSave.GuildInfo = TableToSave.GuildInfo..'/'..DataString
 			end
 		end
+
+		TableToSave.PvP = GetPVPLifetimeStats()
+
+		local Rating, Played, Won
+		for i, Type in pairs({ '2vs2', '3vs3', '5vs5', 'RB' }) do
+			Rating, _, _, Played, Won = GetPersonalRatedInfo(i)
+
+			if Played > 0 then
+				TableToSave.PvP = TableToSave.PvP..'/'..Type..'_'..Rating..'_'..Played..'_'..Won
+			end
+		end
 	end


@@ -509,6 +519,10 @@ if not AISM then
 		if InputData.GuildInfo then
 			Data[#Data + 1] = 'GLD:'..InputData.GuildInfo
 		end
+
+		if InputData.PvP then
+			Data[#Data + 1] = 'PvP:'..InputData.PvP
+		end

 		local DataString = ''
 		local stringLength = 0
@@ -602,7 +616,6 @@ if not AISM then
 									self.GroupMemberData[TableIndex] = nil
 								elseif not self.GroupMemberData[TableIndex] then
 									self.needSendDataGroup = true
-
 									self.GroupMemberData[TableIndex] = true
 								end
 							end
@@ -811,6 +824,16 @@ if not AISM then
 								TableToSave.guildEmblem = TableToSave.guildEmblem or {}
 								TableToSave.guildEmblem[i - 2] = stringTable[i]
 							end
+						elseif self.DataTypeTable[DataType] == 'PvPInfo' then
+							TableToSave.PvP = TableToSave.PvP or {}
+
+							TableToSave.PvP.Honor = stringTable[1]
+
+							local PvPType, Rating, Played, Won
+							for i = 2, #stringTable do
+								PvPType, Rating, Played, Won = strsplit('_', stringTable[i])
+								TableToSave.PvP[PvPType] = { tonumber(Rating), tonumber(Played), tonumber(Won) }
+							end
 						end
 					end
 				end
diff --git a/ElvUI_SLE/modules/characterframe/inspectframe.lua b/ElvUI_SLE/modules/characterframe/inspectframe.lua
index 37612c6..a862c68 100644
--- a/ElvUI_SLE/modules/characterframe/inspectframe.lua
+++ b/ElvUI_SLE/modules/characterframe/inspectframe.lua
@@ -10,9 +10,9 @@ local SLI = CreateFrame('Frame', 'KnightInspect', E.UIParent)
 local ENI = _G['EnhancedNotifyInspectFrame'] or { ['CancelInspect'] = function() end, }
 local C = SLArmoryConstants

-local CoreFrameLevel = 10
+local CORE_FRAME_LEVEL = 10
 local SLOT_SIZE = 37
-local PANEL_HEIGHT = 22
+local TAB_HEIGHT = 22
 local SIDE_BUTTON_WIDTH = 16
 local SPACING = 3
 local INFO_TAB_SIZE = 22
@@ -91,10 +91,11 @@ local function Button_OnLeave(self)
 	self.text:SetText(self.buttonString)
 end

-function SLI:ChangePage(buttonName)
+function SLI:ChangePage(Type)
 	for pageType in pairs(self.PageList) do
 		if self[pageType] then
-			if buttonName == pageType..'Button' then
+			if Type == pageType..'Button' then
+				Type = pageType
 				self[pageType]:Show()
 			else
 				self[pageType]:Hide()
@@ -104,7 +105,7 @@ function SLI:ChangePage(buttonName)

 	self.MainHandSlot:ClearAllPoints()
 	self.SecondaryHandSlot:ClearAllPoints()
-	if buttonName == 'CharacterButton' then
+	if Type == 'Character' then
 		for _, slotName in pairs(C.GearList) do
 			self[slotName].ItemLevel:Hide()
 		end
@@ -119,6 +120,19 @@ function SLI:ChangePage(buttonName)
 		self.MainHandSlot:Point('BOTTOMLEFT', self.BP, 'TOPLEFT', 1, SPACING)
 		self.SecondaryHandSlot:Point('BOTTOMRIGHT', self.BP, 'TOPRIGHT', -1, SPACING)
 	end
+
+	if self[Type].Message then
+		self.Message:SetText(self[Type].Message)
+		self.MessageFrame.Page:Width(self.Message:GetWidth())
+		self.MessageFrame.UpdatedTime = nil
+		self.MessageFrame.Offset = 0
+		self.MessageFrame.Page:ClearAllPoints()
+		self.MessageFrame.Page:Point('TOPLEFT', self.MessageFrame)
+		self.MessageFrame.Page:Point('BOTTOMLEFT', self.MessageFrame)
+		self.MessageFrame:Show()
+	else
+		self.MessageFrame:Hide()
+	end
 end

 SLI.EquipmentSlot_OnEnter = function(self)
@@ -260,7 +274,7 @@ function SLI:CreateInspectFrame()
 		self:Size(450, 480)
 		self:CreateBackdrop('Transparent')
 		self:SetFrameStrata('DIALOG')
-		self:SetFrameLevel(CoreFrameLevel)
+		self:SetFrameLevel(CORE_FRAME_LEVEL)
 		self:SetMovable(true)
 		self:SetClampedToScreen(true)
 		self:SetScript('OnHide', function()
@@ -291,7 +305,7 @@ function SLI:CreateInspectFrame()
 	do --<< Tab >>--
 		self.Tab = CreateFrame('Frame', nil, self)
 		self.Tab:Point('TOPLEFT', self, SPACING, -SPACING)
-		self.Tab:Point('BOTTOMRIGHT', self, 'TOPRIGHT', -SPACING, -(SPACING + PANEL_HEIGHT))
+		self.Tab:Point('BOTTOMRIGHT', self, 'TOPRIGHT', -SPACING, -(SPACING + TAB_HEIGHT))
 		self.Tab:SetBackdrop({
 			bgFile = E.media.normTex,
 			edgeFile = E.media.blankTex,
@@ -306,7 +320,7 @@ function SLI:CreateInspectFrame()

 	do --<< Close Button >>--
 		self.Close = CreateFrame('Button', nil, self.Tab)
-		self.Close:Size(PANEL_HEIGHT - 8)
+		self.Close:Size(TAB_HEIGHT - 8)
 		self.Close:SetTemplate()
 		self.Close.backdropTexture:SetVertexColor(0.1, 0.1, 0.1)
 		self.Close:Point('RIGHT', -4, 0)
@@ -319,7 +333,7 @@ function SLI:CreateInspectFrame()

 	do --<< Bottom Panel >>--
 		self.BP = CreateFrame('Frame', nil, self)
-		self.BP:Point('TOPLEFT', self, 'BOTTOMLEFT', SPACING, SPACING + PANEL_HEIGHT)
+		self.BP:Point('TOPLEFT', self, 'BOTTOMLEFT', SPACING, SPACING + TAB_HEIGHT)
 		self.BP:Point('BOTTOMRIGHT', self, -SPACING, SPACING)
 		self.BP:SetBackdrop({
 			bgFile = E.media.normTex,
@@ -329,9 +343,58 @@ function SLI:CreateInspectFrame()
 		})
 		self.BP:SetBackdropColor(0.09, 0.3, 0.45)
 		self.BP:SetBackdropBorderColor(unpack(E.media.bordercolor))
-		self.BP:SetFrameLevel(CoreFrameLevel + 2)
-		C.Toolkit.TextSetting(self.BP, '', { ['FontSize'] = 10, ['FontOutline'] = 'OUTLINE', }, 'LEFT', 4, 1)
-		self.Message = self.BP.text
+		self.BP:SetFrameLevel(CORE_FRAME_LEVEL + 2)
+
+		self.MessageFrame = CreateFrame('ScrollFrame', nil, self.BP)
+		self.MessageFrame:Point('TOPLEFT', self.BP, SPACING * 2 + TAB_HEIGHT, 0)
+		self.MessageFrame:Point('BOTTOMRIGHT', self.BP, -10, 1)
+		self.MessageFrame.UpdateInterval = 3
+		self.MessageFrame.ScrollSpeed = 1
+		self.MessageFrame:SetScript('OnEnter', function() self.MessageFrame.UpdatedTime = 0 end)
+
+		local PageWidth
+		local VisibleWidth
+		self.MessageFrame:SetScript('OnUpdate', function(self, elapsed)
+			PageWidth = self.Page:GetWidth()
+			VisibleWidth = self:GetWidth()
+
+			if PageWidth > VisibleWidth then
+				self.UpdatedTime = (self.UpdatedTime or -self.UpdateInterval) + elapsed
+
+				if self.UpdatedTime > 0 then
+					if self.Offset then
+						self.Offset = self.Offset - self.ScrollSpeed
+					else
+						self.UpdatedTime = nil
+						self.Offset = 0
+					end
+
+					self.Page:ClearAllPoints()
+					if self.Offset < VisibleWidth - PageWidth then
+						self.UpdatedTime = -self.UpdateInterval - 2
+						self.Offset = nil
+						self.Page:Point('TOPRIGHT', self)
+						self.Page:Point('BOTTOMRIGHT', self)
+					else
+						self.Page:Point('TOPLEFT', self, self.Offset, 0)
+						self.Page:Point('BOTTOMLEFT', self, self.Offset, 0)
+					end
+				end
+			end
+		end)
+
+		self.MessageFrame.Icon = self.MessageFrame:CreateTexture(nil, 'OVERLAY')
+		self.MessageFrame.Icon:Size(TAB_HEIGHT)
+		self.MessageFrame.Icon:Point('TOPLEFT', self.BP, 'TOPLEFT', SPACING * 2, -1)
+		self.MessageFrame.Icon:SetTexture('Interface\\HELPFRAME\\HelpIcon-ReportAbuse')
+
+		self.MessageFrame.Page = CreateFrame('Frame', nil, self.MessageFrame)
+		self.MessageFrame:SetScrollChild(self.MessageFrame.Page)
+		self.MessageFrame.Page:Point('TOPLEFT', self.MessageFrame)
+		self.MessageFrame.Page:Point('BOTTOMLEFT', self.MessageFrame)
+		C.Toolkit.TextSetting(self.MessageFrame.Page, '', { ['FontSize'] = 10, ['FontOutline'] = 'OUTLINE', ['directionH'] = 'LEFT' }, 'LEFT', self.MessageFrame.Page)
+
+		self.Message = self.MessageFrame.Page.text
 	end

 	do --<< Background >>--
@@ -354,7 +417,7 @@ function SLI:CreateInspectFrame()
 				insets = { left = 0, right = 0, top = 0, bottom = 0}
 			})
 			self[buttonName]:SetBackdropBorderColor(unpack(E.media.bordercolor))
-			self[buttonName]:SetFrameLevel(CoreFrameLevel + 1)
+			self[buttonName]:SetFrameLevel(CORE_FRAME_LEVEL + 1)
 			C.Toolkit.TextSetting(self[buttonName], _G[buttonString], { ['FontSize'] = 9, ['FontOutline'] = 'OUTLINE' })
 			self[buttonName]:SetScript('OnEnter', Button_OnEnter)
 			self[buttonName]:SetScript('OnLeave', Button_OnLeave)
@@ -417,7 +480,7 @@ function SLI:CreateInspectFrame()
 	do --<< Player Model >>--
 		self.Model = CreateFrame('DressUpModel', nil, UIParent)
 		self.Model:SetFrameStrata('DIALOG')
-		self.Model:SetFrameLevel(CoreFrameLevel + 1)
+		self.Model:SetFrameLevel(CORE_FRAME_LEVEL + 1)
 		self.Model:EnableMouse(1)
 		self.Model:EnableMouseWheel(1)
 		self.Model:SetUnit('player')
@@ -475,7 +538,7 @@ function SLI:CreateInspectFrame()
 				tile = false, tileSize = 0, edgeSize = E.mult,
 				insets = { left = 0, right = 0, top = 0, bottom = 0}
 			})
-			Slot:SetFrameLevel(CoreFrameLevel + 3)
+			Slot:SetFrameLevel(CORE_FRAME_LEVEL + 3)
 			Slot:SetScript('OnEnter', self.EquipmentSlot_OnEnter)
 			Slot:SetScript('OnLeave', C.CommonScript.OnLeave)
 			Slot:SetScript('OnClick', self.OnClick)
@@ -500,8 +563,8 @@ function SLI:CreateInspectFrame()
 			-- Gradation
 			Slot.Gradation = CreateFrame('Frame', nil, self.Character)
 			Slot.Gradation:Size(130, SLOT_SIZE + 4)
+			Slot.Gradation:SetFrameLevel(CORE_FRAME_LEVEL + 2)
 			Slot.Gradation:Point(Slot.Direction, Slot, Slot.Direction == 'LEFT' and -1 or 1, 0)
-			Slot.Gradation:SetFrameLevel(CoreFrameLevel + 2)
 			Slot.Gradation.Texture = Slot.Gradation:CreateTexture(nil, 'OVERLAY')
 			Slot.Gradation.Texture:SetInside()
 			Slot.Gradation.Texture:SetTexture('Interface\\AddOns\\ElvUI_SLE\\media\\textures\\Gradation')
@@ -538,7 +601,7 @@ function SLI:CreateInspectFrame()
 					})
 					Slot['Socket'..i]:SetBackdropColor(0, 0, 0, 1)
 					Slot['Socket'..i]:SetBackdropBorderColor(0, 0, 0)
-					Slot['Socket'..i]:SetFrameLevel(CoreFrameLevel + 3)
+					Slot['Socket'..i]:SetFrameLevel(CORE_FRAME_LEVEL + 3)

 					Slot['Socket'..i].Socket = CreateFrame('Button', nil, Slot['Socket'..i])
 					Slot['Socket'..i].Socket:SetBackdrop({
@@ -548,7 +611,7 @@ function SLI:CreateInspectFrame()
 						insets = { left = 0, right = 0, top = 0, bottom = 0}
 					})
 					Slot['Socket'..i].Socket:SetInside()
-					Slot['Socket'..i].Socket:SetFrameLevel(CoreFrameLevel + 4)
+					Slot['Socket'..i].Socket:SetFrameLevel(CORE_FRAME_LEVEL + 4)
 					Slot['Socket'..i].Socket:SetScript('OnEnter', C.CommonScript.GemSocket_OnEnter)
 					Slot['Socket'..i].Socket:SetScript('OnLeave', C.CommonScript.OnLeave)
 					Slot['Socket'..i].Socket:SetScript('OnClick', self.GemSocket_OnClick)
@@ -604,12 +667,12 @@ function SLI:CreateInspectFrame()

 	do --<< Information Page >>--
 		self.Info = CreateFrame('ScrollFrame', nil, self)
-		self.Info:SetFrameLevel(CoreFrameLevel + 5)
+		self.Info:SetFrameLevel(CORE_FRAME_LEVEL + 5)
 		self.Info:EnableMouseWheel(1)
 		self.Info:SetScript('OnMouseWheel', self.ScrollFrame_OnMouseWheel)

 		self.Info.BG = CreateFrame('Frame', nil, self.Info)
-		self.Info.BG:SetFrameLevel(CoreFrameLevel + 1)
+		self.Info.BG:SetFrameLevel(CORE_FRAME_LEVEL + 1)
 		self.Info.BG:Point('TOPLEFT', self.HeadSlot, 'TOPRIGHT', SPACING, 0)
 		self.Info.BG:Point('RIGHT', self.Trinket1Slot, 'BOTTOMLEFT', -SPACING, 0)
 		self.Info.BG:Point('BOTTOM', self.BP, 'TOP', 0, SPACING)
@@ -626,7 +689,7 @@ function SLI:CreateInspectFrame()

 		self.Info.Page = CreateFrame('Frame', nil, self.Info)
 		self.Info:SetScrollChild(self.Info.Page)
-		self.Info.Page:SetFrameLevel(CoreFrameLevel + 2)
+		self.Info.Page:SetFrameLevel(CORE_FRAME_LEVEL + 2)
 		self.Info.Page:Point('TOPLEFT', self.Info)
 		self.Info.Page:Point('TOPRIGHT', self.Info, -1, 0)

@@ -670,14 +733,14 @@ function SLI:CreateInspectFrame()
 			self.Info[CategoryType].Tooltip = CreateFrame('Button', nil, self.Info[CategoryType])
 			self.Info[CategoryType].Tooltip:Point('TOPLEFT', self.Info[CategoryType].Icon)
 			self.Info[CategoryType].Tooltip:Point('BOTTOMRIGHT', self.Info[CategoryType].Tab)
-			self.Info[CategoryType].Tooltip:SetFrameLevel(CoreFrameLevel + 4)
+			self.Info[CategoryType].Tooltip:SetFrameLevel(CORE_FRAME_LEVEL + 4)
 			self.Info[CategoryType].Tooltip:SetScript('OnClick', SLI.Category_OnClick)

 			C.Toolkit.TextSetting(self.Info[CategoryType].Tab, CategoryType, { ['FontSize'] = 10 }, 'LEFT', 6, 1)

 			self.Info[CategoryType].Page = CreateFrame('Frame', nil, self.Info[CategoryType])
 			self.Info[CategoryType]:SetScrollChild(self.Info[CategoryType].Page)
-			self.Info[CategoryType].Page:SetFrameLevel(CoreFrameLevel + 2)
+			self.Info[CategoryType].Page:SetFrameLevel(CORE_FRAME_LEVEL + 2)
 			self.Info[CategoryType].Page:Point('TOPLEFT', self.Info[CategoryType].IconSlot, 'BOTTOMLEFT', 0, -SPACING)
 			self.Info[CategoryType].Page:Point('BOTTOMRIGHT', self.Info[CategoryType], -SPACING, SPACING)
 		end
@@ -738,19 +801,18 @@ function SLI:CreateInspectFrame()
 			self.Info.PvP.PageLeft:Point('TOP', self.Info.PvP.Page)
 			self.Info.PvP.PageLeft:Point('LEFT', self.Info.PvP.Page)
 			self.Info.PvP.PageLeft:Point('BOTTOMRIGHT', self.Info.PvP.Page, 'BOTTOM')
-			self.Info.PvP.PageLeft:SetFrameLevel(CoreFrameLevel + 3)
+			self.Info.PvP.PageLeft:SetFrameLevel(CORE_FRAME_LEVEL + 3)
 			self.Info.PvP.PageRight = CreateFrame('Frame', nil, self.Info.PvP.Page)
 			self.Info.PvP.PageRight:Point('TOP', self.Info.PvP.Page)
 			self.Info.PvP.PageRight:Point('RIGHT', self.Info.PvP.Page)
 			self.Info.PvP.PageRight:Point('BOTTOMLEFT', self.Info.PvP.Page, 'BOTTOM')
-			self.Info.PvP.PageRight:SetFrameLevel(CoreFrameLevel + 3)
+			self.Info.PvP.PageRight:SetFrameLevel(CORE_FRAME_LEVEL + 3)

 			for i = 1, 3 do
 				self.Info.PvP['Bar'..i] = self.Info.PvP.Page:CreateTexture(nil, 'OVERLAY')
 				self.Info.PvP['Bar'..i]:SetTexture(0, 0, 0)
 				self.Info.PvP['Bar'..i]:Width(2)
 			end
-
 			self.Info.PvP.Bar1:Point('TOP', self.Info.PvP.PageLeft, 0, -SPACING * 2)
 			self.Info.PvP.Bar1:Point('BOTTOM', self.Info.PvP.PageLeft, 0, SPACING * 2)
 			self.Info.PvP.Bar2:Point('TOP', self.Info.PvP.Page, 0, -SPACING * 2)
@@ -760,7 +822,7 @@ function SLI:CreateInspectFrame()

 			for _, Type in pairs({ '2vs2', '3vs3', '5vs5', 'RB' }) do
 				self.Info.PvP[Type] = CreateFrame('Frame', nil, self.Info.PvP.Page)
-				self.Info.PvP[Type]:SetFrameLevel(CoreFrameLevel + 4)
+				self.Info.PvP[Type]:SetFrameLevel(CORE_FRAME_LEVEL + 4)
 				--self.Info.PvP[Type]:Height(70)

 				self.Info.PvP[Type].Rank = self.Info.PvP.Page:CreateTexture(nil, 'OVERLAY')
@@ -814,7 +876,7 @@ function SLI:CreateInspectFrame()

 			self.Info.Guild.Banner = CreateFrame('Frame', nil, self.Info.Guild.Page)
 			self.Info.Guild.Banner:SetInside()
-			self.Info.Guild.Banner:SetFrameLevel(CoreFrameLevel + 3)
+			self.Info.Guild.Banner:SetFrameLevel(CORE_FRAME_LEVEL + 3)

 			self.Info.Guild.BG = self.Info.Guild.Banner:CreateTexture(nil, 'BACKGROUND')
 			self.Info.Guild.BG:Size(33, 44)
@@ -840,12 +902,12 @@ function SLI:CreateInspectFrame()

 	do --<< Specialization Page >>--
 		self.Spec = CreateFrame('ScrollFrame', nil, self)
-		self.Spec:SetFrameLevel(CoreFrameLevel + 5)
+		self.Spec:SetFrameLevel(CORE_FRAME_LEVEL + 5)
 		self.Spec:EnableMouseWheel(1)
 		self.Spec:SetScript('OnMouseWheel', self.ScrollFrame_OnMouseWheel)

 		self.Spec.BGFrame = CreateFrame('Frame', nil, self.Spec)
-		self.Spec.BGFrame:SetFrameLevel(CoreFrameLevel + 1)
+		self.Spec.BGFrame:SetFrameLevel(CORE_FRAME_LEVEL + 1)
 		self.Spec.BG = self.Spec.BGFrame:CreateTexture(nil, 'BACKGROUND')
 		self.Spec.BG:Point('TOP', self.HeadSlot, 'TOPRIGHT', 0, -30)
 		self.Spec.BG:Point('LEFT', self.WristSlot, 'TOPRIGHT', SPACING, 0)
@@ -858,7 +920,7 @@ function SLI:CreateInspectFrame()

 		self.Spec.Page = CreateFrame('Frame', nil, self.Spec)
 		self.Spec:SetScrollChild(self.Spec.Page)
-		self.Spec.Page:SetFrameLevel(CoreFrameLevel + 2)
+		self.Spec.Page:SetFrameLevel(CORE_FRAME_LEVEL + 2)
 		self.Spec.Page:Point('TOPLEFT', self.Spec)
 		self.Spec.Page:Point('TOPRIGHT', self.Spec)
 		self.Spec.Page:Height((TALENT_SLOT_SIZE + SPACING * 3) * MAX_NUM_TALENT_TIERS + (SPACING + GLYPH_SLOT_HEIGHT) * 3 + 22)
@@ -944,7 +1006,7 @@ function SLI:CreateInspectFrame()
 			})
 			self.Spec['TalentTier'..i]:SetBackdropColor(.08, .08, .08)
 			self.Spec['TalentTier'..i]:SetBackdropBorderColor(0, 0, 0)
-			self.Spec['TalentTier'..i]:SetFrameLevel(CoreFrameLevel + 2)
+			self.Spec['TalentTier'..i]:SetFrameLevel(CORE_FRAME_LEVEL + 2)
 			self.Spec['TalentTier'..i]:Size(352, TALENT_SLOT_SIZE + SPACING * 2)

 			for k = 1, NUM_TALENT_COLUMNS do
@@ -955,7 +1017,7 @@ function SLI:CreateInspectFrame()
 					tile = false, tileSize = 0, edgeSize = E.mult,
 					insets = { left = 0, right = 0, top = 0, bottom = 0}
 				})
-				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetFrameLevel(CoreFrameLevel + 3)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetFrameLevel(CORE_FRAME_LEVEL + 3)
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:Size(114, TALENT_SLOT_SIZE)
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon = CreateFrame('Frame', nil, self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)])
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon:Size(20)
@@ -974,7 +1036,7 @@ function SLI:CreateInspectFrame()
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].text:Point('RIGHT', -SPACING, 0)

 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip = CreateFrame('Button', nil, self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)])
-				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetFrameLevel(CoreFrameLevel + 4)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetFrameLevel(CORE_FRAME_LEVEL + 4)
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetInside()
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetScript('OnClick', self.OnClick)
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetScript('OnEnter', C.CommonScript.OnEnter)
@@ -1015,7 +1077,7 @@ function SLI:CreateInspectFrame()
 				tile = false, tileSize = 0, edgeSize = E.mult,
 				insets = { left = 0, right = 0, top = 0, bottom = 0}
 			})
-			self.Spec['Glyph'..i]:SetFrameLevel(CoreFrameLevel + 2)
+			self.Spec['Glyph'..i]:SetFrameLevel(CORE_FRAME_LEVEL + 2)
 			self.Spec['Glyph'..i]:Height(GLYPH_SLOT_HEIGHT)

 			self.Spec['Glyph'..i].NeedLevel = (i == 1 or i == 2) and 25 or (i == 3 or i == 4) and 50 or 75
@@ -1029,14 +1091,14 @@ function SLI:CreateInspectFrame()
 				insets = { left = 0, right = 0, top = 0, bottom = 0}
 			})
 			self.Spec['Glyph'..i].Icon:SetBackdropColor(.15, .15, .15)
-			self.Spec['Glyph'..i].Icon:SetFrameLevel(CoreFrameLevel + 3)
+			self.Spec['Glyph'..i].Icon:SetFrameLevel(CORE_FRAME_LEVEL + 3)
 			self.Spec['Glyph'..i].Icon.Texture = self.Spec['Glyph'..i].Icon:CreateTexture(nil, 'OVERLAY')
 			self.Spec['Glyph'..i].Icon.Texture:SetTexCoord(unpack(E.TexCoords))
 			self.Spec['Glyph'..i].Icon.Texture:SetInside()
 			self.Spec['Glyph'..i].Icon:Point('LEFT', self.Spec['Glyph'..i], SPACING, 0)

 			self.Spec['Glyph'..i].Tooltip = CreateFrame('Button', nil, self.Spec['Glyph'..i])
-			self.Spec['Glyph'..i].Tooltip:SetFrameLevel(CoreFrameLevel + 4)
+			self.Spec['Glyph'..i].Tooltip:SetFrameLevel(CORE_FRAME_LEVEL + 4)
 			self.Spec['Glyph'..i].Tooltip:SetInside()
 			self.Spec['Glyph'..i].Tooltip:SetScript('OnClick', self.OnClick)
 			self.Spec['Glyph'..i].Tooltip:SetScript('OnEnter', C.CommonScript.OnEnter)
@@ -1095,20 +1157,12 @@ function SLI:CreateInspectFrame()
 				self.Anchored = nil
 				self.Data = nil
 				self:SetParent(nil)
-				self:ClearAllPoints()
-
 				self:Hide()
 			end
 		end)
 		KnightInspect_UnitPopup:SetScript('OnClick', function(self)
 			local SendChannel

-			print('--------------------------')
-			for a, b in pairs(self.Data) do
-				print(a..' : '..b)
-			end
-			print('--------------------------')
-
 			if AISM and AISM.GuildMemberData[self.Data.TableIndex] then
 				if self.Data.Realm == E.myrealm then
 					SendChannel = 'WHISPER'
@@ -1141,16 +1195,19 @@ function SLI:CreateInspectFrame()
 						return true
 					end
 				end, self.Data.TableIndex, true)
-				print('Addon Communication Inspect')
 				SendAddonMessage('AISM_Inspect', 'AISM_DataRequestForInspecting:'..self.Data.Name..'-'..self.Data.Realm, SendChannel, self.Data.TableIndex)
 			elseif self.Data.Unit then
 				SLI.InspectUnit(self.Data.Unit)
-				print('Direct Inspect')
 			end

 			DropDownList1:Hide()
 		end)
 		KnightInspect_UnitPopup:SetScript('OnUpdate', function(self)
+			if not (self:GetPoint() and self:GetParent()) then
+				self:Hide()
+				return
+			end
+
 			if AISM and (type(AISM.GroupMemberData[self.Data.TableIndex]) == 'table' or AISM.GuildMemberData[self.Data.TableIndex]) or self.Data.Unit and UnitIsVisible(self.Data.Unit) and UnitIsConnected(self.Data.Unit) and not UnitIsDeadOrGhost('player') then
 				self:Enable()
 			else
@@ -1202,6 +1259,7 @@ function SLI:CreateInspectFrame()
 					KnightInspect_UnitPopup:SetParent('DropDownList1')
 					KnightInspect_UnitPopup:SetFrameStrata(Button:GetFrameStrata())
 					KnightInspect_UnitPopup:SetFrameLevel(Button:GetFrameLevel() + 1)
+					KnightInspect_UnitPopup:ClearAllPoints()
 					KnightInspect_UnitPopup:Point('TOPLEFT', Button)
 					KnightInspect_UnitPopup:Point('BOTTOMRIGHT', Button)
 					KnightInspect_UnitPopup.Anchored = true
@@ -1230,10 +1288,10 @@ SLI.INSPECT_HONOR_UPDATE = function(Event)
 			end
 		end
 		SLI.CurrentInspectData.PvP.RB = { GetInspectRatedBGData() }
-		SLI.CurrentInspectData.PvP.Honor = { GetInspectHonorData() }
+		SLI.CurrentInspectData.PvP.Honor = select(5, GetInspectHonorData())
 	end

-	if not (SLI.ForbidUpdatePvPInformation) then
+	if not SLI.ForbidUpdatePvPInformation then
 		SLI:InspectFrame_PvPSetting(SLI.CurrentInspectData)
 	end
 end
@@ -1733,7 +1791,8 @@ function SLI:InspectFrame_DataSetting(DataTable)
 		end

 		self.SetItem = E:CopyTable({}, SLI.CurrentInspectData.SetItem)
-		self.Character.AverageItemLevel:SetText(C.Toolkit.Color_Value(STAT_AVERAGE_ITEM_LEVEL)..' : '..format('%.2f', ItemTotal / ItemCount))
+		self.Character.AverageItemLevel:SetText('|c'..RAID_CLASS_COLORS[DataTable.Class].colorStr..STAT_AVERAGE_ITEM_LEVEL..'|r : '..format('%.2f', ItemTotal / ItemCount))
+		--self.Character.AverageItemLevel:SetText(C.Toolkit.Color_Value(STAT_AVERAGE_ITEM_LEVEL)..' : '..format('%.2f', ItemTotal / ItemCount))
 	end

 	if needUpdate then
@@ -1746,29 +1805,8 @@ function SLI:InspectFrame_DataSetting(DataTable)
 	r, g, b = RAID_CLASS_COLORS[DataTable.Class].r, RAID_CLASS_COLORS[DataTable.Class].g, RAID_CLASS_COLORS[DataTable.Class].b

 	do --<< Basic Information >>--
-		self.Name:SetText('|c'..RAID_CLASS_COLORS[DataTable.Class].colorStr..DataTable.Name)
 		self.Title:SetText((DataTable.Realm and DataTable.Realm ~= E.myrealm and DataTable.Realm..L[" Server's "] or '')..'|cff93daff'..(DataTable.Title and string.gsub(DataTable.Title, DataTable.Name, '') or ''))
-		self.LevelRace:SetText(format('|cff%02x%02x%02x%s|r '..LEVEL..'|n%s', GetQuestDifficultyColor(DataTable.Level).r * 255, GetQuestDifficultyColor(DataTable.Level).g * 255, GetQuestDifficultyColor(DataTable.Level).b * 255, DataTable.Level, DataTable.Race))
 		self.Guild:SetText(DataTable.guildName and '<|cff2eb7e4'..DataTable.guildName..'|r>  [|cff2eb7e4'..DataTable.guildRankName..'|r]' or '')
-		self.ClassIcon:SetTexture('Interface\\ICONS\\ClassIcon_'..DataTable.Class..'.blp')
-	end
-
-	do --<< Color Setting >>--
-		self.Info.BG:SetBackdropBorderColor(r, g, b)
-
-		self.Info.Profession.IconSlot:SetBackdropBorderColor(r, g, b)
-		self.Info.Profession.Tab:SetBackdropColor(r, g, b, .3)
-		self.Info.Profession.Tab:SetBackdropBorderColor(r, g, b)
-		self.Info.Profession.Prof1.Bar:SetStatusBarColor(r, g, b)
-		self.Info.Profession.Prof2.Bar:SetStatusBarColor(r, g, b)
-
-		self.Info.Guild.IconSlot:SetBackdropBorderColor(r, g, b)
-		self.Info.Guild.Tab:SetBackdropColor(r, g, b, .3)
-		self.Info.Guild.Tab:SetBackdropBorderColor(r, g, b)
-
-		self.Info.PvP.IconSlot:SetBackdropBorderColor(r, g, b)
-		self.Info.PvP.Tab:SetBackdropColor(r, g, b, .3)
-		self.Info.PvP.Tab:SetBackdropBorderColor(r, g, b)
 	end

 	do --<< Information Page Setting >>--
@@ -1869,6 +1907,8 @@ function SLI:InspectFrame_DataSetting(DataTable)
 	do --<< Model and Frame Setting When InspectUnit Changed >>--
 		if DataTable.UnitID and UnitIsVisible(DataTable.UnitID) then
 			self.Model:SetUnit(DataTable.UnitID)
+
+			self.Character.Message = 'This is a test string. When contained string is too long then string will scrolling. If you check this scrolling ingame then erase this string part and make a nil. Like this : "self.Character.Message = nil". Congratulation your birthday Trevor :D'
 		else
 			self.Model:SetCustomRace(self.ModelList[DataTable.RaceID].RaceID, DataTable.GenderID - 2)
 			self.Model:TryOn(HeadSlotItem)
@@ -1886,17 +1926,43 @@ function SLI:InspectFrame_DataSetting(DataTable)
 					end
 				end
 			end
+
+			self.Character.Message = L["Character model may differ because it was constructed by the inspect data."]
 		end

 		if not (self.LastDataSetting and self.LastDataSetting == DataTable.Name..(DataTable.Realm and '-'..DataTable.Realm or '')) then
+			--<< Initialize Inspect Page >>--
+			self.Name:SetText('|c'..RAID_CLASS_COLORS[DataTable.Class].colorStr..DataTable.Name)
+			self.LevelRace:SetText(format('|cff%02x%02x%02x%s|r '..LEVEL..'|n%s', GetQuestDifficultyColor(DataTable.Level).r * 255, GetQuestDifficultyColor(DataTable.Level).g * 255, GetQuestDifficultyColor(DataTable.Level).b * 255, DataTable.Level, DataTable.Race))
+			self.ClassIcon:SetTexture('Interface\\ICONS\\ClassIcon_'..DataTable.Class..'.blp')
+
 			self.Model:SetPosition(self.ModelList[DataTable.RaceID][DataTable.GenderID] and self.ModelList[DataTable.RaceID][DataTable.GenderID].z or 0, self.ModelList[DataTable.RaceID][DataTable.GenderID] and self.ModelList[DataTable.RaceID][DataTable.GenderID].x or 0, self.ModelList[DataTable.RaceID][DataTable.GenderID] and self.ModelList[DataTable.RaceID][DataTable.GenderID].y or 0)
 			self.Model:SetFacing(-5.67)
 			self.Model:SetPortraitZoom(1)
 			self.Model:SetPortraitZoom(0)

 			self:ChangePage('CharacterButton')
-			self.ClassIconSlot:SetBackdropBorderColor(RAID_CLASS_COLORS[DataTable.Class].r, RAID_CLASS_COLORS[DataTable.Class].g, RAID_CLASS_COLORS[DataTable.Class].b)
-			self.SpecIconSlot:SetBackdropBorderColor(RAID_CLASS_COLORS[DataTable.Class].r, RAID_CLASS_COLORS[DataTable.Class].g, RAID_CLASS_COLORS[DataTable.Class].b)
+
+			do --<< Color Setting >>--
+				self.ClassIconSlot:SetBackdropBorderColor(r, g, b)
+				self.SpecIconSlot:SetBackdropBorderColor(r, g, b)
+
+				self.Info.BG:SetBackdropBorderColor(r, g, b)
+
+				self.Info.Profession.IconSlot:SetBackdropBorderColor(r, g, b)
+				self.Info.Profession.Tab:SetBackdropColor(r, g, b, .3)
+				self.Info.Profession.Tab:SetBackdropBorderColor(r, g, b)
+				self.Info.Profession.Prof1.Bar:SetStatusBarColor(r, g, b)
+				self.Info.Profession.Prof2.Bar:SetStatusBarColor(r, g, b)
+
+				self.Info.Guild.IconSlot:SetBackdropBorderColor(r, g, b)
+				self.Info.Guild.Tab:SetBackdropColor(r, g, b, .3)
+				self.Info.Guild.Tab:SetBackdropBorderColor(r, g, b)
+
+				self.Info.PvP.IconSlot:SetBackdropBorderColor(r, g, b)
+				self.Info.PvP.Tab:SetBackdropColor(r, g, b, .3)
+				self.Info.PvP.Tab:SetBackdropBorderColor(r, g, b)
+			end

 			self:ToggleSpecializationTab(DataTable.Specialization.ActiveSpec or 1, DataTable)
 		elseif not (self.LastActiveSpec and self.LastActiveSpec == (DataTable.Specialization.ActiveSpec or 1)) then
@@ -2008,12 +2074,12 @@ function SLI:ToggleSpecializationTab(Group, DataTable)
 		if i == Group then
 			self.Spec['Spec'..i].BottomLeftBorder:Show()
 			self.Spec['Spec'..i].BottomRightBorder:Show()
-			self.Spec['Spec'..i].Tab:SetFrameLevel(CoreFrameLevel + 3)
+			self.Spec['Spec'..i].Tab:SetFrameLevel(CORE_FRAME_LEVEL + 3)
 			self.Spec['Spec'..i].Tab.text:Point('BOTTOMRIGHT', 0, -10)
 		else
 			self.Spec['Spec'..i].BottomLeftBorder:Hide()
 			self.Spec['Spec'..i].BottomRightBorder:Hide()
-			self.Spec['Spec'..i].Tab:SetFrameLevel(CoreFrameLevel + 2)
+			self.Spec['Spec'..i].Tab:SetFrameLevel(CORE_FRAME_LEVEL + 2)
 			self.Spec['Spec'..i].Tab.text:Point('BOTTOMRIGHT', 0, 0)
 		end
 	end
@@ -2103,8 +2169,10 @@ function IFO:Initialize()
 		SLI:CreateInspectFrame()
 	end

-	_G['NotifyInspect'] = ENI.NotifyInspect or _G['NotifyInspect']
-	_G['InspectUnit'] = SLI.InspectUnit
+	--_G['NotifyInspect'] = ENI.NotifyInspect or _G['NotifyInspect']
+	NotifyInspect = ENI.NotifyInspect or NotifyInspect
+	InspectUnit = SLI.InspectUnit
+	--_G['InspectUnit'] = SLI.InspectUnit

 	--[[
 	tinsert(UnitPopupMenus.FRIEND, 5, 'KnightInspect')
diff --git a/ElvUI_SLE/modules/characterframe/notifyinspect.lua b/ElvUI_SLE/modules/characterframe/notifyinspect.lua
index bd40504..0d801c4 100644
--- a/ElvUI_SLE/modules/characterframe/notifyinspect.lua
+++ b/ElvUI_SLE/modules/characterframe/notifyinspect.lua
@@ -1,13 +1,10 @@
 local type, tinsert = type, tinsert
 local ENI = _G['EnhancedNotifyInspectFrame']
+local CurrentFileRevision = 1.0

 if not ENI then
-	local BlizzardNotifyInspect = _G['NotifyInspect']
-	local playerRealm = GetRealmName()
-
 	ENI = CreateFrame('Frame', 'EnhancedNotifyInspectFrame', UIParent)
 	ENI.UpdatedTime = 0
-	ENI.UpdateInterval = 1
 	ENI.InspectList = {}
 	ENI:SetScript('OnEvent', function(self, Event, ...)
 		if self[Event] then
@@ -15,28 +12,40 @@ if not ENI then
 		end
 	end)
 	ENI:Hide()
+end

+if not (ENI.Revision and ENI.Revision >= CurrentFileRevision) then
+	ENI.Revision = CurrentFileRevision
+	ENI.UpdateInterval = 1
+
+	local BlizzardNotifyInspect = _G['NotifyInspect']
+	local playerRealm = GetRealmName()
+
+	local UnitID
 	ENI.TryInspect = function()
-		if ENI.InspectList[1] and ENI.InspectList[(ENI.InspectList[1])] then
-			local CurrentUnitGUID = UnitGUID(ENI.InspectList[(ENI.InspectList[1])].UnitID)
-
-			if CurrentUnitGUID and not (ENI.CurrentInspectUnitGUID and CurrentUnitGUID ~= ENI.CurrentInspectUnitGUID) then
-				ENI.CurrentInspectUnitGUID = CurrentUnitGUID
-				BlizzardNotifyInspect(ENI.InspectList[(ENI.InspectList[1])].UnitID)
-
-				if ENI.InspectList[(ENI.InspectList[1])].CancelInspectByManual then
-					RequestInspectHonorData()
+		for i = 1, #ENI.InspectList do
+			if ENI.InspectList[(ENI.InspectList[i])] then
+				UnitID = ENI.InspectList[(ENI.InspectList[i])].UnitID
+
+				if UnitID and UnitIsConnected(UnitID) and CanInspect(UnitID) then
+					ENI.CurrentInspectUnitGUID = UnitGUID(UnitID)
+
+					BlizzardNotifyInspect(UnitID)
+
+					if ENI.InspectList[(ENI.InspectList[i])].CancelInspectByManual then
+						RequestInspectHonorData()
+					end
+				else
+					ENI.CancelInspect(ENI.InspectList[i])
 				end
-			else
-				ENI.CancelInspect(ENI.InspectList[1])
+				return
 			end
-			return
 		end
-
+
 		ENI.UpdatedTime = 0
 		ENI:Hide()
 	end
-
+
 	ENI.NotifyInspect = function(Unit, InspectFirst)
 		if Unit ~= 'target' and UnitIsUnit(Unit, 'target') then
 			Unit = 'target'
@@ -49,51 +58,54 @@ if not ENI then
 		if UnitInParty(Unit) or UnitInRaid(Unit) then
 			Unit = GetUnitName(Unit, true)
 		end
-
+
 		if UnitIsPlayer(Unit) and CanInspect(Unit) then
 			local TableIndex = GetUnitName(Unit, true)
-
+
 			if not ENI.InspectList[TableIndex] then
 				if InspectFirst then
 					tinsert(ENI.InspectList, 1, TableIndex)
 				else
 					tinsert(ENI.InspectList, TableIndex)
 				end
-
+
 				ENI.InspectList[TableIndex] = {
-					['Index'] = InspectFirst and 1 or #ENI.InspectList,
 					['UnitID'] = Unit,
 					['CancelInspectByManual'] = InspectFirst,
 				}
-				ENI.CurrentInspectUnitGUID = UnitGUID(Unit)
 				ENI:Show()
 			elseif InspectFirst and ENI.InspectList[TableIndex] then
 				ENI.CancelInspect(TableIndex)
 				ENI.NotifyInspect(Unit, InspectFirst)
 			end
 		end
-
+
 		return Unit
 	end
-
+
 	ENI.CancelInspect = function(Unit)
 		if ENI.InspectList[Unit] then
-			if ENI.InspectList[Unit].Index == 1 then
-				ENI.CurrentInspectUnitGUID = nil
+			local Index
+
+			for i = 1, #ENI.InspectList do
+				if ENI.InspectList[i] == Unit then
+					Index = i
+					break
+				end
 			end

-			tremove(ENI.InspectList, ENI.InspectList[Unit].Index)
-			ENI.CurrentInspectUnitGUID = nil
+			tremove(ENI.InspectList, Index)
 			ENI.InspectList[Unit] = nil
 		end
 	end
-
+
 	ENI.INSPECT_READY = function(InspectedUnitGUID)
 		if InspectedUnitGUID == ENI.CurrentInspectUnitGUID then
 			local Name, Realm
+
 			_, _, _, _, _, Name, Realm = GetPlayerInfoByGUID(InspectedUnitGUID)
 			Name = Name..(Realm and Realm ~= '' and Realm ~= playerRealm and '-'..Realm or '')
-
+
 			if ENI.InspectList[Name] then
 				if ENI.InspectList[Name].CancelInspectByManual then
 					return
@@ -110,18 +122,17 @@ if not ENI then
 		end
 	end
 	ENI:RegisterEvent('INSPECT_READY')
-
+
 	ENI.Updater = function(_, elapsed)
 		ENI.UpdatedTime = ENI.UpdatedTime + elapsed
-
+
 		if ENI.UpdatedTime < 0 then
 			return
 		else
 			ENI.UpdatedTime = -ENI.UpdateInterval
 		end
-
+
 		ENI.TryInspect()
 	end
-
 	ENI:SetScript('OnUpdate', ENI.Updater)
 end
\ No newline at end of file