Quantcast

v8.2.0-Release-v2.2(0131)

Jennifer [07-27-19 - 12:39]
v8.2.0-Release-v2.2(0131)
Filename
CHANGELOG.txt
Core/Communications.lua
EMA.toc
Locales/Core-Locale-enUS.lua
Media/Sounds/desktop.ini
Modules/Guild.lua
Modules/Information.lua
Modules/Mail.lua
Modules/Purchase.lua
Modules/Sell.lua
Modules/Trade.lua
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 37a88ff..0a252c8 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -2,6 +2,28 @@
 ChangeLogs:
 ---------------------------

+EMA Version: v8.2.0-Release-v2.2(0131)
+Game Version: 8.2.0
+Release Date: 27/7/2019
+
+## Trade, Vender, Purchase, Mail, Guild
+	-- You can Now Use Shift+Click to add the Item to the EditBox.
+	(Dev Note: The Ui Is Protected On Normal Click And Could Not Use Items )
+
+## Trade
+	-- Holding "Shift Key" will not trade items to master. (If For Some Reason U Did Not Want To Use Ema-Trade)
+
+## Communications
+	-- Now Uses Its Own Prefix And Not Jamba's
+	-- Changed LayOut
+	-- Removed Boost Communications ( As Chat Chatthrottlelib Now Uses The Same Settings )
+
+## Currency
+	-- Added 8.2 Currencys
+		- Prismatic Manapearl
+
+---------------------------
+
 EMA Version: v8.2.0-Release-v2.1(0127)
 Game Version: 8.2.0
 Release Date: 26/6/2019
@@ -16,13 +38,7 @@ Release Date: 26/6/2019
 ## Message
 	- Fixed 8.2 Sound changes
 		- Added new sound EMA Warning (from jamba-extras)
-		- Had to added blizzard own Riad warning Sound for libsheardmedia to work. (hacky)
-
-
-
-
-
-
+		- Had to added blizzard own Raid warning Sound for libsheardmedia to work. (hacky)
 ---------------------------

 EMA Version: v8.1.5-Release-v2.1(0126)
diff --git a/Core/Communications.lua b/Core/Communications.lua
index f201f0e..7199aa9 100644
--- a/Core/Communications.lua
+++ b/Core/Communications.lua
@@ -50,8 +50,7 @@ EMA.COMMUNICATION_GROUP = "RAID"
 EMA.COMMUNICATION_GUILD = "GUILD"

 -- Communication message prefix.
-EMA.MESSAGE_PREFIX = "JmbCmMsg"
-
+EMA.MESSAGE_PREFIX = "EmaMainComms"

 -- Communication priorities.
 EMA.COMMUNICATION_PRIORITY_BULK = "BULK"
@@ -59,12 +58,12 @@ EMA.COMMUNICATION_PRIORITY_NORMAL = "NORMAL"
 EMA.COMMUNICATION_PRIORITY_ALERT = "ALERT"

 -- Communication command.
-EMA.COMMAND_PREFIX = "JmbCmCmd"
+EMA.COMMAND_PREFIX = "EmaCmdComms"
 EMA.COMMAND_SEPERATOR = "\004"
 EMA.COMMAND_ARGUMENT_SEPERATOR = "\005"

 -- Internal commands sent by EMA Communications.
-EMA.COMMAND_INTERNAL_SEND_SETTINGS = "JmbCmSdSet"
+EMA.COMMAND_INTERNAL_SEND_SETTINGS = "EmaSetComms"

 -------------------------------------------------------------------------------------------------------------
 -- Messages module sends.
@@ -86,7 +85,7 @@ EMA.settings = {
 	profile = {
 		autoSetTeamOnlineorOffline = true,
 		boostCommunication = true,
-		useGuildComms = false,
+		useGuildComms = false
 	},
 }

@@ -158,18 +157,10 @@ local function CreateCommandToSend( moduleName, commandName, ... )
 			message = message..EMA.COMMAND_ARGUMENT_SEPERATOR
 		end
 	end
-	-- Return the command to send.
-	--EMA:Print("Create", moduleName, commandName, iterateArguments)
 	return message
 end
-
-
-local function CommandAll( moduleName, commandName, ... )
-   -- EMA:DebugMessage( "Command All: ", moduleName, commandName, ... )
-	--EMA:Print( "Command All: ", moduleName, commandName, ... )
-	-- Get the message to send.
-	local message = CreateCommandToSend( moduleName, commandName, ... )
-	local channel
+
+local function CommandGuild(  message, ... )
 	if EMA.db.useGuildComms == true then
 			EMA:SendCommMessage(
 			EMA.COMMAND_PREFIX,
@@ -178,11 +169,13 @@ local function CommandAll( moduleName, commandName, ... )
 			nil,
 			EMA.COMMUNICATION_PRIORITY_ALERT
 			)
-		return
-	end
+	end
+end
+
+local function DefaultCommand( message )
+	local channel = nil
 	-- toon has to be in a group
 	if UnitInBattleground( "player" ) then
-		EMA:DebugMessage( "PvP_INSTANCE")
 		channel = "INSTANCE_CHAT"
 	elseif IsInGroup() then
 		EMA:DebugMessage( "Group")
@@ -218,8 +211,7 @@ local function CommandAll( moduleName, commandName, ... )
 			nil,
 			EMA.COMMUNICATION_PRIORITY_ALERT
 			)
-			--EMA:Print("testChennel", EMA.COMMAND_PREFIX, channel, EMA.COMMUNICATION_PRIORITY_ALERT)
-			--return
+			--EMA:Print("testChennel", EMA.COMMAND_PREFIX, channel, EMA.COMMUNICATION_PRIORITY_ALERT)
 	end
 	--if the unit is not in the party then it unlikely did not get the party message,
 	for characterName, characterOrder in EMAPrivate.Team.TeamList() do
@@ -240,7 +232,17 @@ local function CommandAll( moduleName, commandName, ... )
 	end
 end

-
+local function CommandAll( moduleName, commandName, ... )
+   -- EMA:DebugMessage( "Command All: ", moduleName, commandName, ... )
+	--EMA:Print( "Command All: ", moduleName, commandName, ... )
+	-- Get the message to send.
+	local message = CreateCommandToSend( moduleName, commandName, ... )
+	if EMA.db.useGuildComms == true then
+		CommandGuild(  message )
+	else
+		DefaultCommand ( message )
+	end
+end

 -- Should this get removed at some point and use all comms on one channel???
 -- WHISPER's don't work cross-realm but do work connected-realm so sending msg to masters would not send.
@@ -283,9 +285,7 @@ local function CommandToon( moduleName, characterName, commandName, ... )
 		end
 end

--- EbonyTest
--- hide offline player spam Not really the best way but it works, Maybe adding tick box's to set members offline? This should now work with elvUI?
-
+-- Hide Player "Offline" Using to set the team memberm online.
 local function SystemSpamFilter(frame, event, message)
 	if( event == "CHAT_MSG_SYSTEM") then
 		if message:match(string.format(ERR_CHAT_PLAYER_NOT_FOUND_S, "(.+)")) then
@@ -401,7 +401,7 @@ end

 -- Initialize the addon.
 function EMA:OnInitialize()
-	--EMA.channelPollTimer = nil
+	--EMA.lastChannel = nil
 	-- Register commands with AceComms - tell AceComms to call the CommandReceived function when a command is received.
 	EMA:RegisterComm( EMA.COMMAND_PREFIX, "CommandReceived" )
 	-- Create the settings database supplying the settings values along with defaults.
@@ -428,7 +428,6 @@ function EMA:OnInitialize()
 end

 function EMA:OnEnable()
-
 	EMA:RegisterEvent("GUILD_ROSTER_UPDATE")
 	if EMA.db.boostCommunication == true then
 		EMA:BoostCommunication()
@@ -450,6 +449,7 @@ function EMA:BoostCommunication()
 	end
 end

+
 -- Handle the chat command.
 function EMA:EMAChatCommand( input )
     if not input or input:trim() == "" then
@@ -505,6 +505,7 @@ end

 function EMA:SettingsCreateOptions( top )
 	-- Get positions and dimensions.
+	local buttonControlWidth = 105
 	local checkBoxHeight = EMAHelperSettings:GetCheckBoxHeight()
 	local labelContinueHeight = EMAHelperSettings:GetContinueLabelHeight()
 	local editBoxHeight = EMAHelperSettings:GetEditBoxHeight()
@@ -531,6 +532,7 @@ function EMA:SettingsCreateOptions( top )
 		L["AUTO_SET_TEAM"],
 		EMA.CheckBoxAutoSetTeamOnlineorOffline
 	)
+	--[[
 	movingTop = movingTop - checkBoxHeight
 	EMA.settingsControl.checkBoxBoostCommunication = EMAHelperSettings:CreateCheckBox(
 		EMA.settingsControl,
@@ -541,7 +543,27 @@ function EMA:SettingsCreateOptions( top )
 		EMA.CheckBoxBoostCommunication,
 		L["BOOST_COMMUNICATIONS_HELP"]
 	)
-	movingTop = movingTop - checkBoxHeight
+	]]
+	movingTop = movingTop - checkBoxHeight
+	movingTop = movingTop - checkBoxHeight
+	EMAHelperSettings:CreateHeading( EMA.settingsControl, L["COMMUNICATIONS_AVD"]..L[" "]..L["OPTIONS"] , movingTop, false )--
+	movingTop = movingTop - headingHeight
+	EMA.settingsControl.labelCommsInformation1 = EMAHelperSettings:CreateContinueLabel(
+		EMA.settingsControl,
+		headingWidth,
+		column1Left,
+		movingTop,
+		L["AVD_INFORMATION_ONE"]
+	)
+	movingTop = movingTop - labelContinueHeight
+	EMA.settingsControl.labelCommsInformation1 = EMAHelperSettings:CreateContinueLabel(
+		EMA.settingsControl,
+		headingWidth,
+		column1Left,
+		movingTop,
+		L["AVD_INFORMATION_TWO"]
+	)
+	movingTop = movingTop - labelContinueHeight
 	EMA.settingsControl.checkBoxUseGuildComms = EMAHelperSettings:CreateCheckBox(
 		EMA.settingsControl,
 		headingWidth,
@@ -551,15 +573,10 @@ function EMA:SettingsCreateOptions( top )
 		EMA.CheckBoxUseGuildComms,
 		L["USE_GUILD_COMMS_INFO"]
 	)
-	movingTop = movingTop - checkBoxHeight
+	movingTop = movingTop - checkBoxHeight
 	return movingTop
 end

-function EMA:CheckBoxUseGuildComms( event, value )
-	EMA.db.useGuildComms = value
-	EMA:SettingsRefresh()
-end
-
 function EMA:CheckBoxBoostCommunication( event, value )
 	EMA.db.boostCommunication = value
 	EMA:SettingsRefresh()
@@ -575,17 +592,25 @@ function EMA:CheckBoxAutoSetTeamOnlineorOffline( event, value )
 	EMA:SettingsRefresh()
 end

+
+function EMA:CheckBoxUseGuildComms( event, value )
+	EMA.db.useGuildComms = value
+	EMA:SettingsRefresh()
+end
+
+
 function EMA:BeforeEMAProfileChanged()
 end

-function EMA:OnEMAProfileChanged()
+function EMA:OnEMAProfileChanged()
 	EMA:SettingsRefresh()
 end

 function EMA:SettingsRefresh()
 	EMA.settingsControl.checkBoxAutoSetTeamOnlineorOffline:SetValue( EMA.db.autoSetTeamOnlineorOffline )
-	EMA.settingsControl.checkBoxBoostCommunication:SetValue( EMA.db.boostCommunication )
+	--EMA.settingsControl.checkBoxBoostCommunication:SetValue( EMA.db.boostCommunication )
 	EMA.settingsControl.checkBoxUseGuildComms:SetValue( EMA.db.useGuildComms )
+
 end

 -- Settings received.
@@ -598,7 +623,7 @@ function EMA:EMAOnSettingsReceived( characterName, settings )
 	if characterName ~= EMA.characterName then
 		-- Update the settings.
 		EMA.db.autoSetTeamOnlineorOffline = settings.autoSetTeamOnlineorOffline
-		EMA.db.boostCommunication = settings.boostCommunication
+	--	EMA.db.boostCommunication = settings.boostCommunication
 		EMA.db.useGuildComms = settings.useGuildComms
 		-- Refresh the settings.
 		EMA:SettingsRefresh()
@@ -622,8 +647,6 @@ local function SendChatMessage( text, chatDestination, characterOrChannelName, p
 	if text:len() <= 255 then
 		--EMA:Print("test TURE!!!!! TOBIG" )
 		ChatThrottleLib:SendChatMessage( priority, EMA.MESSAGE_PREFIX, text, chatDestination, nil, characterOrChannelName, nil )
-
-
 	else
 		-- No, message is too big, split into smaller messages, taking UTF8 characters into account.
 		local bytesAvailable = string.utf8len(text1)
diff --git a/EMA.toc b/EMA.toc
index da37bbd..806d64c 100644
--- a/EMA.toc
+++ b/EMA.toc
@@ -2,7 +2,7 @@
 ## Title: EMA
 ## Notes: Ebony's MultiBoxing Assistant
 ## Author: Jennifer Calladine 'Ebony'
-## Version: v8.1.5-Release-v2.1(0127)
+## Version: v8.2.0-Release-v2.2(0131)
 ## SavedVariables: CoreProfileDB, CommunicationsProfileDB, TeamProfileDB, TagProfileDB, MessageProfileDB, CurrProfileDB, DisplayTeamProfileDB, FollowProfileDB, GuildProfileDB, InteractionProfileDB, ItemUseProfileDB, PurchaseProfileDB, QuestProfileDB,  QuestWatcherProfileDB, SellProfileDB, TalkProfileDB, ToonProfileDB, TradeProfileDB, MailProfileDB, ISBoxerProfileDB

 #Libs
diff --git a/Locales/Core-Locale-enUS.lua b/Locales/Core-Locale-enUS.lua
index 33a8b02..3fe9cf3 100644
--- a/Locales/Core-Locale-enUS.lua
+++ b/Locales/Core-Locale-enUS.lua
@@ -150,12 +150,12 @@ L["RESETTING_PROFILE"] = "Resetting profile: "
 L["PROFILE_DELETED"] = "Profile deleted - iterating all modules."
 L["DELETING_PROFILE"] = "Deleting profile: "
 L["Failed_LOAD_MODULE"] =  "Failed to load EMA Module: "
-L["TEXT1"] = "Ebony's MultiBoxing Assistant v2.0 For 8.1.0!"
+L["TEXT1"] = "Ebony's MultiBoxing Assistant v2.2 For 8.2.0!"
 L["TEXT2"] = ""
-L["TEXT3"] = "Welcome To v2! 2019!"
+L["TEXT3"] = "Welcome To v2.2!"
 L["TEXT4"] = ""
 L["TEXT5"] = ""
-L["TEXT6"] = "Read The ChangeLog For More Information"
+L["TEXT6"] = "|cFFFFFFFFRead The ChangeLog For More Information"
 L["TEXT7"] = ""
 L["TEXT8"] = ""
 L["TEXT9"] = ""
@@ -165,21 +165,21 @@ L["THANKS1"] = "Michael \"Jafula\" Miller For Making Jamba That Some Of This Cod
 L["THANKS2"] = "tk911 For Translating EMA To German (DE)"
 L["THANKS3"] = ""
 L["WEBSITES"] = "Websites"
-L["ME"] = "Current Project Manger Jennifer (Ebony) Cally"
+L["ME"] = "Current Project Manger Jennifer (Ebony) Calladine"
 L["ME_TWITTER"] = "https://twitter.com/Jenn_Ebony"
 L["D-B"] = "http://Dual-boxing.com"
 L["ISB"] = ""
 L["TEMP_WEBSITE1"] = ""
 L["TEMP_WEBSITE2"] = ""
 L["TEMP_WEBSITE3"] = ""
-L["COPYRIGHT"] = "Copyright (c) 2015-2019  Jennifer Cally"
+L["COPYRIGHT"] = "Copyright (c) 2015-2019  Jennifer (Cally) Calladine"
 L["COPYRIGHTTWO"] = "Released Under License: All Rights Reserved unless otherwise explicitly stated"
 L["FRAME_RESET"] = "Frame Reset"
 -- Msg 8000
 L["ALL_SETTINGS_RESET"] = "Thank You For Using EMA \nYour settings have been reset. \n\nPlease report any bugs to the source control issue tracker."
 L["CAN_NOT_RUN_JAMBA_AND_EMA"] = "|cFFFF0000 You Can Not Run \"Jamba\" With EMA \nDisabling Jamba Addon \n\nThis Will Reload Your UI"
--- BETA CHANGE ME!!!
-L["v2_NEWS"] = "|cFFFFFF00Thank You For Upgrading EMA \nYou Are Now On Beta v2.0 \n\n|cFFFFFFFFRead Changelog For More Information"
+-- CHANGE ME!!!
+L["v2_NEWS"] = "|cFFFFFF00Thank You For Upgrading EMA \nYou Are Now On Release v2.2 \n\n|cFFFFFFFFRead Changelog For More Information"

 --------------------------
 -- Communications Locale
@@ -191,7 +191,12 @@ L["AUTO_SET_TEAM"] = "Auto Set Team Members On and Off Line"
 L["BOOST_COMMUNICATIONS"] = "Boost EMA Communications"
 L["BOOST_COMMUNICATIONS_HELP"] = "Reload UI To Take Effect, May Cause Disconnections"
 L["USE_GUILD_COMMS"] = "Use Guild Communications"
-L["USE_GUILD_COMMS_INFO"] = "Use Guild Communications All Of Team Needs To Be In Same Guild"
+L["USE_GUILD_COMMS_INFO"] = "Use Guild Communications \nAll Of Team Needs To Be In Same Guild"
+L["USE_CHANNEL_COMMS"] = "Use Channel Communications"
+L["USE_CHANNEL_COMMS_INFO"] = "Use Chennel Communications \nAll Of Team Needs To Be On The Same Realm"
+L["AVD_INFORMATION_ONE"] = "All Characters Will Need To Be on the Same Realm Or A Connect Realms"
+L["AVD_INFORMATION_TWO"] = "This Is The Recommended System To Use"
+L["COMMUNICATIONS_AVD"] = "Advanced Communications"

 ----------------------------
 -- Helper Locale
@@ -378,7 +383,7 @@ L["AUTO_SELL_TOYS"] = "|cff00ccff Sell Already Known Toys"
 L["AUTO_SELL_TOYS_HELP"] = "Sell Or Destroy Already Known SoulBound Toys"
 L["AUTO_SELL_MOUNTS"] = "|cff00ccff Already Known Mounts"
 L["AUTO_SELL_MOUNTS_HELP"] = "Sell Or Destroy Already Known SoulBound Mounts"
-L["SELL_LIST_DROP_ITEM"] = "Sell Other Item (DRAG ITEM TO BOX)"
+L["SELL_LIST_DROP_ITEM"] = "Sell Other Item (Shift+Click Item In Bag)"
 L["ITEM_TAG_ERR"] = "Item Tags Must Only Be Made Up Of Letters And Numbers."
 L["POPUP_REMOVE_ITEM"] = "Are You Sure You Wish To Remove The Selected Item From The Auto Sell: Items List?"
 L["ADD_TO_LIST"] = "Adds Item To List"
@@ -580,7 +585,7 @@ L["PVP_FOLLOW_ERR"] = "Can Not Follow You, I Am Engaged In PvP Combat"
 L["AUTO_BUY_ITEMS"] = "Auto Buy Items"
 L["OVERFLOW"] = "Overflow"
 L["REMOVE_VENDER_LIST"] = "Remove From Vendor List"
-L["ITEM_DROP"] = "Item (DRAG ITEM TO BOX)"
+L["ITEM_DROP"] = "Item (Shift+Click Item In Bag)"
 L["PURCHASE_ITEMS"] = "Auto Purchase Items"
 L["ADD_ITEM"] = "Add Item"
 L["AMOUNT"] = "Amount"
diff --git a/Media/Sounds/desktop.ini b/Media/Sounds/desktop.ini
deleted file mode 100644
index d957fd1..0000000
--- a/Media/Sounds/desktop.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[ViewState]
-Mode=
-Vid=
-FolderType=Generic
diff --git a/Modules/Guild.lua b/Modules/Guild.lua
index 6cc9206..1c9c8e9 100644
--- a/Modules/Guild.lua
+++ b/Modules/Guild.lua
@@ -178,6 +178,7 @@ end
 -- Called when the addon is enabled.
 function EMA:OnEnable()
 	EMA:RegisterEvent( "GUILDBANKFRAME_OPENED" )
+	EMA:RawHook( "ContainerFrameItemButton_OnModifiedClick", true)
 	EMA:RegisterMessage( EMAApi.MESSAGE_MESSAGE_AREAS_CHANGED, "OnMessageAreasChanged" )
 	EMA:RegisterMessage( EMAApi.GROUP_LIST_CHANGED , "OnGroupAreasChanged" )
 	-- Update DropDownList
@@ -504,6 +505,7 @@ function EMA:SettingsGuildItemsAddClick( event )
 	if EMA.autoGuildItemLink ~= nil and EMA.autoGuildBankTab ~= nil and EMA.db.guildTagName ~= nil then
 		EMA:AddItem( EMA.autoGuildItemLink, EMA.autoGuildBankTab, EMA.db.guildTagName, EMA.db.blackListItem )
 		EMA.autoGuildItemLink = nil
+		EMA.settingsControl.GuildItemsEditBoxGuildItem:SetText( "" )
 		EMA:SettingsRefresh()
 	end
 end
@@ -723,6 +725,48 @@ end
 -- Guild functionality.
 -------------------------------------------------------------------------------------------------------------

+function EMA:ContainerFrameItemButton_OnClick(self, event, ... )
+	--EMA:Print("tester")
+	if EMAPrivate.SettingsFrame.Widget:IsVisible() == true then
+		local GUIPanel = EMAPrivate.SettingsFrame.TreeGroupStatus.selected
+		local currentModule = string.find(GUIPanel, EMA.moduleDisplayName)
+		--EMA:Print("test2", GUIPanel, "vs", currentModule )
+		if currentModule ~= nil then
+			local itemID, itemLink = GameTooltip:GetItem()
+				--EMA:Print("test1", itemID, itemLink )
+			if itemLink ~= nil then
+				EMA.settingsControl.GuildItemsEditBoxGuildItem:SetText( itemLink )
+				EMA.autoGuildItemLink = itemLink
+			end
+		else
+			return EMA.hooks["ContainerFrameItemButton_OnClick"]( self, event, ... )
+		end
+	else
+		return EMA.hooks["ContainerFrameItemButton_OnClick"]( self, event, ... )
+	end
+end
+
+function EMA:ContainerFrameItemButton_OnModifiedClick( self, event, ... )
+	local isConfigOpen = EMAPrivate.SettingsFrame.Widget:IsVisible()
+	if isConfigOpen == true and IsShiftKeyDown() == true then
+		local GUIPanel = EMAPrivate.SettingsFrame.TreeGroupStatus.selected
+		local currentModule = string.find(GUIPanel, EMA.moduleDisplayName)
+		--EMA:Print("test2", GUIPanel, "vs", currentModule )
+		if currentModule ~= nil then
+			local itemID, itemLink = GameTooltip:GetItem()
+			--EMA:Print("test1", itemID, itemLink )
+			if itemLink ~= nil then
+				EMA.settingsControl.GuildItemsEditBoxGuildItem:SetText( "" )
+				EMA.settingsControl.GuildItemsEditBoxGuildItem:SetText( itemLink )
+				EMA.autoGuildItemLink = itemLink
+				return
+			end
+		end
+	end
+	return EMA.hooks["ContainerFrameItemButton_OnModifiedClick"]( self, event, ... )
+end
+
+
 function EMA:GetGuildItemsMaxPosition()
 	if EMA.db.globalGuildList == true then
 		return #EMA.db.global.autoGuildItemsListGlobal
diff --git a/Modules/Information.lua b/Modules/Information.lua
index d41e940..b2e167e 100644
--- a/Modules/Information.lua
+++ b/Modules/Information.lua
@@ -89,7 +89,8 @@ EMA.currTypes.WarSupplies = 1587
 EMA.currTypes.SeventhLegionService = 1717
 EMA.currTypes.HonorboundService = 1716
 EMA.currTypes.TitanResiduum = 1718
-
+--8.2
+EMA.currTypes.PrismaticManapearl = 1721

 -------------------------------------- End of edit --------------------------------------------------------------

diff --git a/Modules/Mail.lua b/Modules/Mail.lua
index b4e6dff..f9aeecd 100644
--- a/Modules/Mail.lua
+++ b/Modules/Mail.lua
@@ -162,6 +162,7 @@ function EMA:OnEnable()
 	EMA:RegisterEvent( "MAIL_SHOW" )
 	EMA:RegisterEvent( "MAIL_CLOSED" )
 	EMA:RegisterEvent( "MAIL_SEND_SUCCESS")
+	EMA:RawHook( "ContainerFrameItemButton_OnModifiedClick", true)
 	EMA:RegisterMessage( EMAApi.MESSAGE_MESSAGE_AREAS_CHANGED, "OnMessageAreasChanged" )
 	EMA:RegisterMessage( EMAApi.GROUP_LIST_CHANGED , "OnGroupAreasChanged" )
 end
@@ -512,6 +513,7 @@ function EMA:SettingsMailItemsAddClick( event )
 	if EMA.autoMailItemLink ~= nil and EMA.autoMailToonName ~= nil and EMA.db.MailTagName ~= nil then
 		EMA:AddItem( EMA.autoMailItemLink, EMA.autoMailToonName, EMA.db.MailTagName, EMA.db.blackListItem )
 		EMA.autoMailItemLink = nil
+		EMA.settingsControl.MailItemsEditBoxMailItem:SetText( "" )
 		EMA:SettingsRefresh()
 	end
 end
@@ -757,6 +759,28 @@ end
 -- Mail functionality.
 -------------------------------------------------------------------------------------------------------------

+function EMA:ContainerFrameItemButton_OnModifiedClick( self, event, ... )
+	local isConfigOpen = EMAPrivate.SettingsFrame.Widget:IsVisible()
+	if isConfigOpen == true and IsShiftKeyDown() == true then
+		local GUIPanel = EMAPrivate.SettingsFrame.TreeGroupStatus.selected
+		local currentModule = string.find(GUIPanel, EMA.moduleDisplayName)
+		--EMA:Print("test2", GUIPanel, "vs", currentModule )
+		if currentModule ~= nil then
+			local itemID, itemLink = GameTooltip:GetItem()
+			--EMA:Print("test1", itemID, itemLink )
+			if itemLink ~= nil then
+				EMA.settingsControl.MailItemsEditBoxMailItem:SetText( "" )
+				EMA.settingsControl.MailItemsEditBoxMailItem:SetText( itemLink )
+				EMA.autoMailItemLink = itemLink
+				return
+			end
+		end
+	end
+	return EMA.hooks["ContainerFrameItemButton_OnModifiedClick"]( self, event, ... )
+end
+
+
+
 function EMA:GetMailItemsMaxPosition()
 	if EMA.db.globalMailList == true then
 		return #EMA.db.global.autoMailItemsListGlobal
@@ -914,7 +938,7 @@ function EMA:MAIL_SEND_SUCCESS( event, ... )
 	--EMA:Print("try sendMail Again")
 	if EMA.db.showEMAMailWindow == true then
 		if EMA.ShiftkeyDown == false and EMA.Count < 1 then
-			EMA:ScheduleTimer( "AddAllToMailBox", 1, nil )
+			EMA:ScheduleTimer( "AddAllToMailBox", 1.55, nil )
 		end
 	end
 	if EMA.db.adjustMoneyWithMail == true and EMA.db.showEMAMailWindow == true then
@@ -927,7 +951,6 @@ function EMA:DoSendMail( gold )
 	for iterateMailSlots = 1, ATTACHMENTS_MAX_SEND do
 		if HasSendMailItem( iterateMailSlots ) == true or gold == true then
 			--EMA:Print("canSend")
-			--SendMailFrame_SendMail()
 			SendMailMailButton:Click()
 			EMA.Count = 0
 			break
@@ -970,7 +993,7 @@ function EMA:AddGoldToMailBox()
 				end
 			end
 		else
-			EMA:Print("[PH] Can Only Mail From BlizzardUI Mail Frame!")
+			EMA:Print("[PH] Can Only Send Mail From BlizzardUI Mail Frame!")
 		end
 	end
 end
\ No newline at end of file
diff --git a/Modules/Purchase.lua b/Modules/Purchase.lua
index f278180..697cb84 100644
--- a/Modules/Purchase.lua
+++ b/Modules/Purchase.lua
@@ -15,7 +15,8 @@ local EMA = LibStub( "AceAddon-3.0" ):NewAddon(
 	"Purchase",
 	"Module-1.0",
 	"AceConsole-3.0",
-	"AceEvent-3.0"
+	"AceEvent-3.0",
+	"AceHook-3.0"
 )

 -- Load libraries.
@@ -470,6 +471,7 @@ end
 -- Called when the addon is enabled.
 function EMA:OnEnable()
 	EMA:RegisterEvent( "MERCHANT_SHOW" )
+	EMA:RawHook( "ContainerFrameItemButton_OnModifiedClick", true)
 	EMA:RegisterMessage( EMAApi.MESSAGE_MESSAGE_AREAS_CHANGED, "OnMessageAreasChanged" )
 	EMA:RegisterMessage( EMAApi.GROUP_LIST_CHANGED , "OnGroupAreasChanged" )
 end
@@ -479,9 +481,29 @@ function EMA:OnDisable()
 end

 -------------------------------------------------------------------------------------------------------------
--- EMAPurchase functionality.
+-- Purchase functionality.
 -------------------------------------------------------------------------------------------------------------

+function EMA:ContainerFrameItemButton_OnModifiedClick( self, event, ... )
+	local isConfigOpen = EMAPrivate.SettingsFrame.Widget:IsVisible()
+	if isConfigOpen == true and IsShiftKeyDown() == true then
+		local GUIPanel = EMAPrivate.SettingsFrame.TreeGroupStatus.selected
+		local currentModule = string.find(GUIPanel, EMA.moduleDisplayName)
+		--EMA:Print("test2", GUIPanel, "vs", currentModule )
+		if currentModule ~= nil then
+			local itemID, itemLink = GameTooltip:GetItem()
+			--EMA:Print("test1", itemID, itemLink )
+			if itemLink ~= nil then
+				EMA.settingsControl.editBoxItem:SetText( "" )
+				EMA.settingsControl.editBoxItem:SetText( itemLink )
+				EMA.autoBuyItemLink = itemLink
+				return
+			end
+		end
+	end
+	return EMA.hooks["ContainerFrameItemButton_OnModifiedClick"]( self, event, ... )
+end
+
 function EMA:GetItemsMaxPosition()
 	if EMA.db.globalBuyList == true then
 		return #EMA.db.global.autoBuyItemsListGlobal
diff --git a/Modules/Sell.lua b/Modules/Sell.lua
index 413f21d..80ea5ed 100644
--- a/Modules/Sell.lua
+++ b/Modules/Sell.lua
@@ -752,6 +752,7 @@ end


 function EMA:SettingslistAddClick( event )
+	EMA:Print("test",  EMA.autoSellOtherItemLink, EMA.autoSellOtherItemTag )
 	if EMA.autoSellOtherItemLink ~= nil and EMA.autoSellOtherItemTag ~= nil then
 		EMA:AddOther( EMA.autoSellOtherItemLink, EMA.autoSellOtherItemTag, EMA.db.blackListItem,  EMA.db.destroyItem  )
 		EMA.autoSellOtherItemLink = nil
@@ -832,6 +833,22 @@ function EMA:ContainerFrameItemButton_OnModifiedClick( self, event, ... )
 		local texture, count, locked, quality, readable, lootable, link = GetContainerItemInfo( bag, slot )
 		EMA:EMASendCommandToTeam( EMA.COMMAND_SELL_ITEM, link )
 	end
+	local isConfigOpen = EMAPrivate.SettingsFrame.Widget:IsVisible()
+	if isConfigOpen == true and IsShiftKeyDown() == true then
+		local GUIPanel = EMAPrivate.SettingsFrame.TreeGroupStatus.selected
+		local currentModule = string.find(GUIPanel, EMA.moduleDisplayName)
+		--EMA:Print("test2", GUIPanel, "vs", currentModule )
+		if currentModule ~= nil then
+			local itemID, itemLink = GameTooltip:GetItem()
+			--EMA:Print("test1", itemID, itemLink )
+			if itemLink ~= nil then
+				EMA.settingsControl.listEditBoxOtherItem:SetText( "" )
+				EMA.settingsControl.listEditBoxOtherItem:SetText( itemLink )
+				EMA.autoSellOtherItemLink = itemLink
+				return
+			end
+		end
+	end
 	return EMA.hooks["ContainerFrameItemButton_OnModifiedClick"]( self, event, ... )
 end

diff --git a/Modules/Trade.lua b/Modules/Trade.lua
index dcd7166..d15cdb1 100644
--- a/Modules/Trade.lua
+++ b/Modules/Trade.lua
@@ -154,6 +154,7 @@ end
 function EMA:OnEnable()
 	EMA:RegisterEvent( "TRADE_SHOW" )
 	EMA:RegisterEvent( "TRADE_CLOSED" ) -- Unsued but we keep it for now!
+	EMA:RawHook( "ContainerFrameItemButton_OnModifiedClick", true)
 	EMA:RegisterMessage( EMAApi.MESSAGE_MESSAGE_AREAS_CHANGED, "OnMessageAreasChanged" )
 	EMA:RegisterMessage( EMAApi.GROUP_LIST_CHANGED , "OnGroupAreasChanged" )
 end
@@ -274,7 +275,6 @@ function EMA:SettingsCreateTrade( top )
 		movingTop,
 		L["ITEM_DROP"]
 	)
-	--EMA.settingsControl.tradeItemsEditBoxTradeItem:SetCallback( "OnTextChanged", EMA.SettingsEditBoxChangedTradeItem )
 	EMA.settingsControl.tradeItemsEditBoxTradeItem:SetCallback( "OnEnterPressed", EMA.SettingsEditBoxChangedTradeItem )
 	movingTop = movingTop - editBoxHeight
 		EMA.settingsControl.listCheckBoxBoxOtherBlackListItem = EMAHelperSettings:CreateCheckBox(
@@ -629,6 +629,27 @@ end
 -- Trade functionality.
 -------------------------------------------------------------------------------------------------------------

+function EMA:ContainerFrameItemButton_OnModifiedClick( self, event, ... )
+	local isConfigOpen = EMAPrivate.SettingsFrame.Widget:IsVisible()
+	if isConfigOpen == true and IsShiftKeyDown() == true then
+		local GUIPanel = EMAPrivate.SettingsFrame.TreeGroupStatus.selected
+		local currentModule = string.find(GUIPanel, EMA.moduleDisplayName)
+		--EMA:Print("test2", GUIPanel, "vs", currentModule )
+		if currentModule ~= nil then
+			local itemID, itemLink = GameTooltip:GetItem()
+			--EMA:Print("test1", itemID, itemLink )
+			if itemLink ~= nil then
+				EMA.settingsControl.tradeItemsEditBoxTradeItem:SetText( "" )
+				EMA.settingsControl.tradeItemsEditBoxTradeItem:SetText( itemLink )
+				EMA.autoTradeItemLink = itemLink
+				return
+			end
+		end
+	end
+	return EMA.hooks["ContainerFrameItemButton_OnModifiedClick"]( self, event, ... )
+end
+
+
 -- New Trade stuff
 function EMA:GetTradeItemsMaxPosition()
 	if EMA.db.globalTradeList == true then
@@ -680,11 +701,15 @@ end
 function EMA:TRADE_SHOW( event, ... )
 	--Keep for tradeing gold!
 	if EMA.db.adjustMoneyWithMasterOnTrade == true then
-		EMA:ScheduleTimer( "TradeShowAdjustMoneyWithMaster", 0.3 )
+		if not IsShiftKeyDown() then
+			EMA:ScheduleTimer( "TradeShowAdjustMoneyWithMaster", 0.3 )
+		end
 	end
 	-- do trade list with Gold!
 	if EMA.db.showEMATradeWindow == true then
-		EMA:ScheduleTimer("TradeAllItems", 0.5 )
+		if not IsShiftKeyDown() then
+			EMA:ScheduleTimer("TradeAllItems", 0.5 )
+		end
 	end
 end