vanilla-wow-addons – Rev 1
?pathlinks?
-- Saved Data
NuNData = {};
NuNSettings = {};
-- Arrays
local dfltHeadings = NUN_DFLTHEADINGS;
local HRaces = NUN_HRACES;
local ARaces = NUN_ARACES;
local AllClasses = NUN_ALLCLASSES;
local HClasses = NUN_HCLASSES;
local AClasses = NUN_ACLASSES;
local HRanks = NUN_HRANKS;
local ARanks = NUN_ARANKS;
local Professions = NUN_PROFESSIONS;
local Sexes = NUN_SEXES;
local searchFor = NUN_SEARCHFOR;
local transmitTo = NUN_TRANSMITTO;
local invSlotList = NUN_INVENTORY_SLOT_LIST;
local noteTypes = NUN_NOTETYPES;
local Races = {};
local Ranks = {};
local Classes = {};
local foundNuN = {};
local c_continents = {};
local foundHNuN = {};
local foundANuN = {};
local foundNNuN = {};
local NuNQuestLog = {};
local NuN_Filtered = {};
local NuN_MapNotesValidVersions = {
"1800.7",
};
local NuN_MapNotesPlayedVersions = {};
local NuN_LastOpen = {};
-- Local Variables
local bttnChanges = {};
local uBttns = getn(dfltHeadings);
local detlOffset = uBttns;
local hdngOffset = (uBttns * 2);
local pHead = "~Hdng";
local pDetl = "~Detl";
local discard;
local c_name;
local prevName;
local c_class;
local c_race;
local c_guild;
local c_route;
local c_text;
local c_text_len;
local g_text;
local g_text_len;
local txtTxt = "txt";
local pName;
local pKey;
local pFaction;
local hdNbr;
local nameHdNbr;
local nameDtNbr;
local oriTxt;
local isTitle;
local bttnNumb;
local lastDD;
local switch;
local parm1;
local Notes = "notes~";
local itmIndex = "ItmIndex~";
local mrgIndex = "merged~";
local c_note;
local c_type;
local prevNote;
local tryI;
local lastBttn;
local lastBttnIndex;
local deletedE;
local visibles;
local lastVisible;
local lastBttnDetl;
local NuN_importing;
local updateInterval = 10;
local popUpUpdateInterval = 1;
local timeSinceLastUpdate = 0;
local popUpTimeSinceLastUpdate = 0;
local NuNRaceDropDown;
local NuNClassDropDown;
local NuNCRankDropDown;
local NuNHRankDropDown;
local unitTest;
local NuN_rType;
local ttName;
local gtName;
local NuN_Fade = "False";
local NuN_TT_Y_Offset = 0;
local NUN_TT_LEN = 80;
local NuN_GNote_OriTitle = nil;
local prevLink;
local NuN_PinUpHeader = false;
local lastPinned;
local pinnedTTMoved = true;
local typeIndex;
local NuN_Fingers;
local NuN_Trinkets;
local NuN_Hand;
local sendTo;
local msgSeq = 0;
local NuNSearchTitle = NUN_SEARCH;
local NuN_Parties = "parties~";
local NuN_MouseOver = false;
local NuN_QuestsUpdating = "False";
local oneDone = false;
local NuN_AtStartup = "True";
local popUpHide = true;
local NuN_IgnoreNextQUpdate = nil;
local qTriggs = 0;
local noTipAnchor = nil;
local inBG = false;
local NuN_FirstTime = true;
local NuN_QuestAccepted = nil;
-- Local Function Hooks
local NuNOri_FriendsFrameFriendButton_OnClick;
local NuNOri_FriendsFrameIgnoreButton_OnClick;
local NuNOri_FriendsFrameGuildPlayerStatusButton_OnClick;
local NuNOri_FriendsFrameGuildStatusButton_OnClick;
local NuNOri_FriendsFrameWhoButton_OnClick;
local NuNOri_FriendsList_Update;
local NuNOri_IgnoreList_Update;
local NuNOri_GuildStatus_Update;
local NuNOri_WhoList_Update;
local NuNOri_ContainerFrameItemButton_OnClick;
local NuNOri_SetItemRef;
local NuNOri_PaperDollItemSlotButton_OnClick;
local NuNOri_QuestLog_Update;
local NuNOri_QuestLogRewardItem_OnClick;
local NuNOri_QuestItem_OnClick;
local NuNOri_QuestRewardItem_OnClick;
local NuNOri_AbandonQuest;
local NuNOri_QuestDetailAcceptButton_OnClick;
local NuNOri_QuestRewardCompleteButton_OnClick;
-- Hook the MapNotes Function
local NuNOri_MapNotes_OnEnter;
local NuNOri_MapNotes_OnLeave;
local NuNOri_MapNotes_DeleteNote;
local NuNOri_MetaMapNotes_OnEnter;
local NuNOri_MetaMapNotes_OnLeave;
local NuNOri_MetaMapNotes_DeleteNote;
local NuN_GetZoneTableSize;
-- Constants
NUN_VERSION = "3.21";
NUN_MAX_PARTY_MEMBERS = 4;
NUN_AUTO_C = "A";
NUN_SELF_C = "S";
NUN_MANU_C = "M";
NUN_HORD_C = "H";
NUN_ALLI_C = "A";
NUN_NOTE_C = "N";
NUN_QUEST_C = "Q";
NUN_PARTY_C = "P";
NUN_MAX_ADD_TXT = 4;
NUN_MAX_TXT_CHR = 1012;
NUN_MAX_TXT_LIM = (NUN_MAX_ADD_TXT + 1) * NUN_MAX_TXT_CHR;
NUN_MAX_TXT_C = tostring(NUN_MAX_TXT_LIM);
NUN_MAX_TXT_BUF = NUN_MAX_TXT_LIM - 225;
NUN_SEP = " ";
NUN_OFF = "Offline";
NUN_TT_HDNG = "tooltip";
NUN_TT_MAX = 1012;
NUN_TT_KEYPHRASE = "TT::";
NUN_TT_END = "::";
NUN_TT_LINES_TRIGGER = 6;
NUN_TT_Y_SHIFT = 12;
NUN_TT_KEYPHRASE_LEN = string.len(NUN_TT_KEYPHRASE);
NUN_TT_ETC = " .....";
NUN_TXT_LABEL = "0 / "..NUN_MAX_TXT_LIM;
NUN_SPEED = "Speed";
NUN_GOLD = "|cffffB300|h";
NUN_GREEN = "|cff00ee00|h";
NUN_WHITE = "|cffffffff|h";
NUN_C_END = "|h|r";
NUN_PINNED_TT_PADDING = " ";
NUN_PLACE_HOLDER = "<Place Holder>";
NUN_CHAT_LIMIT = 180;
NUN_FRAMESCALE_MIN = 0.75;
NUN_FRAMESCALE_MAX = 1.75;
NUN_FRAMESCALE_STEP = 0.01;
NUN_TT_FONTSCALE_MIN = 0.90;
NUN_TT_FONTSCALE_MAX = 2.00;
NUN_FONTSCALE_STEP = 0.01;
NUN_TT_MAPFONTSCALE_MIN = 0.25;
NUN_TT_MAPFONTSCALE_MAX = 1.75;
NUN_MAPFONTSCALE_STEP = 0.01;
NUN_FRAMESCALE_MIN_TXT = tostring( NUN_FRAMESCALE_MIN * 100 ) .. "%";
NUN_FRAMESCALE_MAX_TXT = tostring( NUN_FRAMESCALE_MAX * 100 ) .. "%";
NUN_TT_FONTSCALE_MIN_TXT = tostring ( NUN_TT_FONTSCALE_MIN * 100 ) .. "%";
NUN_TT_FONTSCALE_MAX_TXT = tostring ( NUN_TT_FONTSCALE_MAX * 100 ) .. "%";
NUN_TT_MAPFONTSCALE_MIN_TXT = tostring ( NUN_TT_MAPFONTSCALE_MIN * 100 ) .. "%";
NUN_TT_MAPFONTSCALE_MAX_TXT = tostring ( NUN_TT_MAPFONTSCALE_MAX * 100 ) .. "%";
NUN_REPLACEQNAME_TXT = "$N";
NUN_REPLACEQCLASS_TXT = "$C";
-- MapNotes Version Warning
StaticPopupDialogs["NUN_MAPNOTES_VERSION_ALERT"] = {
text = TEXT(NUN_MAPNOTESVERSION_WARNING),
button1 = TEXT(OKAY),
showAlert = 1,
timeout = 0,
};
-- NotesUNeed Note Limit Exceeded
StaticPopupDialogs["NUN_NOTELIMIT_EXCEEDED"] = {
text = TEXT(NUN_TEXTLIM1..NUN_MAX_TXT_LIM..NUN_TEXTLIM2),
button1 = TEXT(OKAY),
showAlert = 1,
timeout = 0,
};
-- Mod Functions
function NuN_OnLoad()
local continentID, zoneID, continent, zone;
local c_zones = {};
NuNOri_FriendsFrameFriendButton_OnClick = FriendsFrameFriendButton_OnClick;
FriendsFrameFriendButton_OnClick = NuNNew_FriendsFrameFriendButton_OnClick;
NuNOri_FriendsFrameIgnoreButton_OnClick = FriendsFrameIgnoreButton_OnClick;
FriendsFrameIgnoreButton_OnClick = NuNNew_FriendsFrameIgnoreButton_OnClick;
NuNOri_FriendsFrameGuildPlayerStatusButton_OnClick = FriendsFrameGuildPlayerStatusButton_OnClick;
FriendsFrameGuildPlayerStatusButton_OnClick = NuNNew_FriendsFrameGuildPlayerStatusButton_OnClick;
NuNOri_FriendsFrameGuildStatusButton_OnClick = FriendsFrameGuildStatusButton_OnClick;
FriendsFrameGuildStatusButton_OnClick = NuNNew_FriendsFrameGuildStatusButton_OnClick;
NuNOri_FriendsFrameWhoButton_OnClick = FriendsFrameWhoButton_OnClick;
FriendsFrameWhoButton_OnClick = NuNNew_FriendsFrameWhoButton_OnClick;
NuNOri_FriendsList_Update = FriendsList_Update;
FriendsList_Update = NuNNew_FriendsList_Update;
NuNOri_IgnoreList_Update = IgnoreList_Update;
IgnoreList_Update = NuNNew_IgnoreList_Update;
NuNOri_GuildStatus_Update = GuildStatus_Update;
GuildStatus_Update = NuNNew_GuildStatus_Update;
NuNOri_WhoList_Update = WhoList_Update;
WhoList_Update = NuNNew_WhoList_Update;
NuNOri_ContainerFrameItemButton_OnClick = ContainerFrameItemButton_OnClick;
ContainerFrameItemButton_OnClick = NuNNew_ContainerFrameItemButton_OnClick;
NuNOri_SetItemRef = SetItemRef;
SetItemRef = NuNNew_SetItemRef;
NuNOri_PaperDollItemSlotButton_OnClick = PaperDollItemSlotButton_OnClick;
PaperDollItemSlotButton_OnClick = NuNNew_PaperDollItemSlotButton_OnClick;
NuNOri_QuestLog_Update = QuestLog_Update;
QuestLog_Update = NuNNew_QuestLog_Update;
NuNOri_QuestLogRewardItem_OnClick = QuestLogRewardItem_OnClick;
QuestLogRewardItem_OnClick = NuNNew_QuestLogRewardItem_OnClick;
NuNOri_QuestItem_OnClick = QuestItem_OnClick;
QuestItem_OnClick = NuNNew_QuestItem_OnClick;
NuNOri_QuestRewardItem_OnClick = QuestRewardItem_OnClick;
QuestRewardItem_OnClick = NuNNew_QuestRewardItem_OnClick;
NuNOri_AbandonQuest = AbandonQuest;
AbandonQuest = NuNNew_AbandonQuest;
NuNOri_QuestDetailAcceptButton_OnClick = QuestDetailAcceptButton_OnClick;
QuestDetailAcceptButton_OnClick = NuNNew_QuestDetailAcceptButton_OnClick;
NuNOri_QuestRewardCompleteButton_OnClick = QuestRewardCompleteButton_OnClick;
QuestRewardCompleteButton_OnClick = NuNNew_QuestRewardCompleteButton_OnClick;
this:RegisterEvent("IGNORELIST_UPDATE");
this:RegisterEvent("FRIENDLIST_UPDATE");
this:RegisterEvent("PLAYER_ENTERING_WORLD");
this:RegisterEvent("PLAYER_LEVEL_UP");
this:RegisterEvent("QUEST_LOG_UPDATE");
this:RegisterEvent("UPDATE_FACTION");
this:RegisterEvent("UNIT_QUEST_LOG_CHANGED");
this:RegisterEvent("QUEST_PROGRESS");
this:RegisterEvent("QUEST_COMPLETE");
this:RegisterEvent("QUEST_FINISHED");
this:RegisterEvent("QUEST_ITEM_UPDATE");
this:RegisterEvent("CHAT_MSG_SYSTEM");
this:RegisterEvent("PARTY_MEMBERS_CHANGED");
this:RegisterEvent("RAID_ROSTER_UPDATE");
this:RegisterEvent("VARIABLES_LOADED");
SlashCmdList["NOTEUN"] = function(pList)
local gap = string.find(pList, NUN_SEP);
if ( gap ) then
switch = string.sub(pList, 1, (gap - 1));
parm1 = string.sub(pList, (gap + 1));
else
switch = pList;
parm1 = nil;
end
NuN_CmdLine(switch, parm1, pList);
end
SLASH_NOTEUN1 = "/nun";
tryI = true;
pName = UnitName("player");
NuN_InitialiseSavedVariables();
ClearButtonChanges();
c_continents[1] = {};
c_continents[2] = {};
for continentID, continent in ipairs{GetMapContinents()} do
c_zones = {};
c_continents[continentID].name = continent;
for zoneID, zone in ipairs{GetMapZones(continentID)} do
c_zones[zoneID] = zone;
end
c_continents[continentID].zones = c_zones;
end
end
function NuN_CmdLine(option, parm1, pList)
local index;
local value;
local initial;
local remainder;
local contactName;
local switch;
local theUnitID = "target";
if ( ( option == "" ) or ( option == nil ) ) then
NuN_Options();
else
switch = string.lower(option);
if ( switch == "-h" ) then
DEFAULT_CHAT_FRAME:AddMessage(NUN_HELP_TEXT);
index = 0;
value = getglobal("NUN_HELP_TEXT"..index);
while( value ) do
DEFAULT_CHAT_FRAME:AddMessage(value);
index = index + 1;
value = getglobal("NUN_HELP_TEXT"..index);
end
DEFAULT_CHAT_FRAME:AddMessage(NUN_HELP_TEXT);
elseif ( switch == NUN_HTT ) then
NuN_ToggleToolTips();
elseif ( ( switch == "-ca" ) or ( switch == "-ch" ) ) then
initial = string.upper( string.sub(parm1, 1, 1) );
remainder = string.lower( string.sub(parm1,2) );
contactName = initial..remainder;
if ( NuNData[pKey][contactName] ) then
if ( NuNFrame:IsVisible() ) then
NuN_HideFrame();
end
NuN_ShowSavedNote(contactName);
else
NuN_CreateContact(contactName, switch);
end
elseif ( switch == "-a" ) then
NuN_DisplayAll();
elseif ( switch == "-micro" ) then
NuN_ToggleMicroButtons();
elseif ( switch == "-g" ) then
if ( ( parm1 ~= nil ) and ( parm1 ~= "") ) then
NuN_GNoteExists(parm1);
NuNGNoteFrame.fromQuest = nil;
if ( c_note ) then
NuN_ShowSavedGNote();
else
c_note = parm1;
c_type = NuNGet_CommandID(noteTypes, " ");
NuN_ShowTitledGNote("");
end
else
NuN_ShowNewGNote();
end
elseif ( switch == "-t" ) then
NuN_FromTarget(false);
elseif ( ( switch == "->de" ) or ( switch == "->en" ) ) then
NuN_LangPatch(switch);
else
initial = string.upper( string.sub(switch, 1, 1) );
remainder = string.lower( string.sub(switch,2) );
contactName = initial..remainder;
if ( NuNData[pKey][contactName] ) then
if ( NuNFrame:IsVisible() ) then
NuN_HideFrame();
end
NuN_ShowSavedNote(contactName);
elseif ( NuN_GNoteExists(pList) ) then
NuNGNoteFrame.fromQuest = nil;
NuN_ShowSavedGNote();
else
c_name = contactName;
unitTest = true;
theUnitID = NuN_Target();
if ( theUnitID ~= nil ) then
NuN_NewContact(theUnitID);
else
NuN_Options();
end
end
end
end
end
function NuN_FromTarget(autoHide)
local tstValue = NuN_CheckTarget();
local theUnitID = "target";
local npcText;
if ( IsAltKeyDown() ) then
NuN_LastOpen.type = "Contact";
NuN_ReOpen();
return;
end
if ( IsShiftKeyDown() ) then
autoHide = true;
end
if ( tstValue == "N" ) then
NuNGNoteFrame.fromQuest = nil;
if ( ( NuNData[pKey][Notes][c_note] ) or ( NuNData[Notes][c_note] ) ) then
if ( autoHide ~= true ) then
NuN_ShowSavedGNote();
end
else
npcText = NuN_NPCInfo();
c_type = NuNGet_CommandID(noteTypes, "NPC");
NuN_ShowTitledGNote(npcText);
if ( autoHide == true ) then
NuNGNote_WriteNote();
if ( not NuN_ConfirmFrame:IsVisible() ) then
HideUIPanel(NuNGNoteFrame);
NuN_Message(c_note..NUN_AUTONOTED);
end
end
end
else
if ( NuNData[pKey][c_name] ) then
if ( autoHide ~= true ) then
NuN_ShowSavedNote(c_name);
end
else
NuN_NewContact(theUnitID);
if ( autoHide == true ) then
NuN_WriteNote();
HideUIPanel(NuNFrame);
NuN_Message(c_name..NUN_AUTONOTED);
end
end
end
end
function NuN_CheckTarget()
local chkName = UnitName("target");
if ( ( ( UnitPlayerControlled("target") ) and (not UnitIsUnit("player", "target") ) ) or ( UnitInParty("target") ) or ( UnitInRaid("target") ) )then
c_name = chkName;
return "F";
elseif ( ( not UnitPlayerControlled("target") ) and ( chkName ) ) then
c_note = chkName;
return "N";
else
c_name = pName;
return "S";
end
end
function NuN_DisplayAll()
if ( NuNSearchFrame:IsVisible() ) then
NuNSearchFrame:Hide();
else
NuNSearchFrameBackButton:Disable();
NuNSearchFrame.backEnabled = nil;
ddSearch = NuNGet_CommandID(searchFor, "All");
searchType = searchFor[ddSearch].Command;
NuNOptions_Search();
end
end
function NuN_Options()
if ( NuNOptionsFrame:IsVisible() ) then
HideUIPanel(NuNOptionsFrame);
else
if ( ( MapNotes_OnLoad ) or ( MetaMapNotes_OnLoad ) ) then
NuN_AutoMapCheckBox:Enable();
if ( NuNSettings[pKey].autoMapNotes ) then
NuN_AutoMapCheckBox:SetChecked(1);
else
NuN_AutoMapCheckBox:SetChecked(0);
end
else
NuN_AutoMapCheckBox:SetChecked(0);
NuN_AutoMapCheckBoxLabel:SetText(NUN_NOMAPNOTES);
NuN_AutoMapCheckBox:Disable();
end
if ( NuNFrame:IsVisible() ) then
NuN_HideFrame();
end
if ( NuNSearchFrame:IsVisible() ) then
HideUIPanel(NuNSearchFrame);
end
if ( NuNGNoteFrame:IsVisible() ) then
HideUIPanel(NuNGNoteFrame);
end
UIDropDownMenu_SetSelectedID(NuNOptionsSearchDropDown, 1);
UIDropDownMenu_SetText(searchFor[1].Display, NuNOptionsSearchDropDown);
ddSearch = NuNGet_CommandID(searchFor, "All");
if ( NuNSettings[pKey].autoG ) then
NuNOptionsGuildCheckButton:SetChecked(1);
else
NuNOptionsGuildCheckButton:SetChecked(0);
end
if ( NuNSettings[pKey].autoA ) then
NuNOptionsAddCheckButton:SetChecked(1);
else
NuNOptionsAddCheckButton:SetChecked(0);
end
if ( NuNSettings[pKey].autoD ) then
NuNOptionsDeleteCheckButton:SetChecked(1);
else
NuNOptionsDeleteCheckButton:SetChecked(0);
end
if ( NuNSettings[pKey].autoQ ) then
NuN_AutoQuestCheckBox:SetChecked(1);
else
NuN_AutoQuestCheckBox:SetChecked(0);
end
if ( NuNSettings[pKey].autoN ) then
NuN_AutoNoteCheckBox:SetChecked(1);
else
NuN_AutoNoteCheckBox:SetChecked(0);
end
if ( NuNSettings[pKey].dLevel ) then
NuN_DefaultLevelCheckBox:SetChecked(1);
else
NuN_DefaultLevelCheckBox:SetChecked(0);
end
if ( NuNSettings[pKey].toolTips ) then
NuN_HelpTTCheckBox:SetChecked(1);
else
NuN_HelpTTCheckBox:SetChecked(0);
end
if ( NuNSettings[pKey].autoP ) then
NuN_AutoPartyCheckBox:SetChecked(1);
else
NuN_AutoPartyCheckBox:SetChecked(0);
end
if ( NuNSettings[pKey].minOver ) then
NuN_OverTTCheckBox:SetChecked(1);
else
NuN_OverTTCheckBox:SetChecked(0);
end
if ( NuNSettings[pKey].bHave ) then
NuN_BehaveCheckBox:SetChecked(1);
else
NuN_BehaveCheckBox:SetChecked(0);
end
NuNOptionsTTLengthTextBox:SetText( NuNSettings[pKey].ttLen );
NuNOptionsTTLineLengthTextBox:SetText( NuNSettings[pKey].ttLLen );
NuNSearchFrameBackButton:Enable();
NuNSearchFrame.backEnabled = true;
NuNOptionsFrame:SetScale(NuNSettings[pKey].pScale);
ShowUIPanel(NuNOptionsFrame);
end
end
function ClearButtonChanges()
for i = 1, (uBttns * 2), 1 do
bttnChanges[i] = "";
end
end
function NuN_ShowSavedNote(cName)
c_name = cName;
c_class = nil;
c_race = nil;
c_guild = nil;
gRank = nil;
gRankIndex = nil;
gNote = nil;
gOfficerNote = nil;
c_route = "Saved";
if ( NuNData[pKey][c_name].faction == "Horde" ) then
NuN_HordeSetup();
else
NuN_AllianceSetup();
end
NuN_ShowNote();
end
function NuN_ShowWhoNote(cName)
c_name = cName;
c_class = nil;
c_race = nil;
c_guild = nil;
gRank = nil;
gRankIndex = nil;
gNote = nil;
gOfficerNote = nil;
c_route = "Who";
if ( horde ) then
NuN_HordeSetup();
else
NuN_AllianceSetup();
end
NuN_ShowNote();
end
function NuN_ShowNote()
local hText;
local theText;
if ( ( NuNFrame:IsVisible() ) and ( prevName == c_name ) ) then
NuNFrame:Hide();
else
prevName = c_name;
if ( NuNOptionsFrame:IsVisible() ) then
HideUIPanel(NuNOptionsFrame);
end
lastDD = nil;
NuNButtonClrDD:Disable();
ClearButtonChanges();
NuNHeader:SetText(c_name);
if ( NuNData[pKey][c_name] ) then
c_text = NuN_GetCText(c_name);
if ( ( c_text == nil ) or ( c_text == "" ) ) then
c_text = "\n";
end
NuNText:SetText( c_text );
NuNButtonDelete:Enable();
NuNCOpenChatButton:Enable();
NuNCTTCheckBoxLabel:Show();
NuN_CTTCheckBox:Show();
NuN_CTTCheckBox:SetChecked(0);
if ( NuN_PinnedTooltip.type == "Contact" ) then
NuN_CTTCheckBox:SetChecked( NuN_CheckPinnedBox(c_name) );
end
if ( c_name == pName ) then
NuNHeader:SetText(NUN_PLAYER.." : "..c_name);
elseif ( NuNData[pKey][c_name].type == NUN_AUTO_C ) then
NuNHeader:SetText(NUN_AUTO.." : "..c_name);
elseif ( NuNData[pKey][c_name].type == NUN_MANU_C ) then
NuNHeader:SetText(NUN_MANU.." : "..c_name);
elseif ( NuNData[pKey][c_name].type == NUN_PARTY_C ) then
NuNHeader:SetText(NUN_PARTY.." : "..c_name );
elseif ( NuNData[pKey][c_name].type == NUN_SELF_C ) then
NuNHeader:SetText(NUN_SELF.." : "..c_name);
else
NuNHeader:SetText(c_name);
end
else
theText = "";
NuNHeader:SetText(NUN_NEW.." : "..c_name);
if ( gNote ~= nil ) then
theText = "\n"..gNote;
end
if ( gOfficerNote ~= nil ) then
theText = theText.."\n"..gOfficerNote;
end
if ( theText == "" ) then
theText = "\n";
end
NuNText:SetText(theText);
NuNButtonDelete:Disable();
NuNCOpenChatButton:Disable();
NuNCTTCheckBoxLabel:Hide();
NuN_CTTCheckBox:Hide();
end
UserButtons_Initialise();
DropDowns_Initialise();
ddRace = nil;
ddClass = nil;
ddSex = nil;
ddProf1 = nil;
ddProf2 = nil;
ddCRank = nil;
ddHRank = nil;
if ( NuNEditDetailsFrame:IsVisible() ) then
HideUIPanel(NuNEditDetailsFrame);
end
if ( NuNcDeleteFrame:IsVisible() ) then
HideUIPanel(NuNcDeleteFrame);
end
if ( ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name][pName] ) and ( NuNData[pKey][c_name][pName].partied ) ) then
NuNPartiedLabel:Show();
NuNPartiedNumberLabel:SetText("(x"..tostring(NuNData[pKey][c_name][pName].partied)..")");
NuNPartiedNumberLabel:Show();
NuNFramePartyDownButton:Show();
else
NuNPartiedLabel:Hide();
NuNPartiedNumberLabel:SetText("(0)");
NuNPartiedNumberLabel:Hide();
NuNFramePartyDownButton:Hide();
end
NuNFrame:SetScale(NuNSettings[pKey].pScale);
ShowUIPanel(NuNFrame);
if ( not NuNSettings[pKey].bHave ) then
NuNText:SetFocus();
else
NuNText:ClearFocus();
end
end
end
function NuN_Update_Ignored()
local index;
local value;
local x;
local iName;
if ( pFaction ~= nil ) then
-- Check every Ignored player to make sure we have a Saved note
if ( NuNSettings[pKey].autoA ) then
for i = 1, GetNumIgnores(), 1 do
iName = GetIgnoreName(i);
if ( ( iName ~= nil ) and ( not NuNData[pKey][iName] ) ) then
NuNData[pKey][iName] = {};
NuNData[pKey][iName].type = NUN_AUTO_C;
NuNData[pKey][iName].faction = pFaction;
NuNData[pKey][iName][txtTxt] = NUN_AUTO_IGNORE..NuN_GetDateStamp();
NuNData[pKey][iName].ignoreLst = {};
NuNData[pKey][iName].ignoreLst[1] = pName;
end
end
end
-- Check every Saved entry to see if it is ignored, and upated Saved inofrmation on that basis
for index, value in NuNData[pKey] do
if ( ( NuNData[pKey][index].faction) and ( NuNData[pKey][index].faction == pFaction ) and ( index ~= pName ) ) then
if ( NuN_Is_Ignored(index) ) then
if ( not NuNData[pKey][index].ignoreLst ) then -- Ignored but no ignore list currently
x = 1;
NuNData[pKey][index].ignoreLst = {};
NuNData[pKey][index].ignoreLst[x] = pName;
else -- Ignored but not on ignore list yet
if (not NuNGet_TableID(NuNData[pKey][index].ignoreLst, pName) ) then
x = getn( NuNData[pKey][index].ignoreLst ) + 1;
NuNData[pKey][index].ignoreLst[x] = pName;
end
end
else
if ( NuNData[pKey][index].ignoreLst ) then
x = NuNGet_TableID(NuNData[pKey][index].ignoreLst, pName);
if ( x ~= nil ) then -- Not ignored, but on ignore list > come off list
local tmpTable = Remove_Entry(NuNData[pKey][index].ignoreLst, x);
NuNData[pKey][index].ignoreLst = tmpTable;
if ( getn(NuNData[pKey][index].ignoreLst) == 0 ) then
-- If no more ignore list, and auto-deleting, and Auto-note, then delete note entirely
if ((NuNData[pKey][index].type == NUN_AUTO_C) and (NuNSettings[pKey].autoD) and (not NuNData[pKey][index].friendLst)) then
NuNData[pKey][index] = nil;
else
NuNData[pKey][index].ignoreLst = nil;
end
end
elseif ( getn(NuNData[pKey][index].ignoreLst) > 0 ) then
-- If (Not Ignored) & (There is an Ignore List we are NOT On) & (Settings say we should try to Ignore)
-- & (Only 1 attempt per 'log on' OR Manual refresh ) then....
if ( ( tryI == true ) and ( NuN_NotInfiniteIgored(index) ) ) then
if ( AddIgnore(index) ) then
x = getn(NuNData[pKey][index].ignoreLst) + 1;
NuNData[pKey][index].ignoreLst[x] = pName;
end
end
end
end
end
end
end
tryI = false;
end
end
function NuN_Update_Friends()
local index;
local value;
local x;
local iName;
if ( pFaction ~= nil ) then
if ( NuNSettings[pKey].autoA ) then
for i = 1, GetNumFriends(), 1 do
iName = GetFriendInfo(i);
if ( ( iName ~= nil ) and ( not NuNData[pKey][iName] ) ) then
NuNData[pKey][iName] = {};
NuNData[pKey][iName].type = NUN_AUTO_C;
NuNData[pKey][iName].faction = pFaction;
NuNData[pKey][iName][txtTxt] = NUN_AUTO_FRIEND..NuN_GetDateStamp();
NuNData[pKey][iName].friendLst = {};
NuNData[pKey][iName].friendLst[1] = pName;
end
end
end
-- Check every Saved entry to see if it is friendly, and upated Saved information on that basis
for index, value in NuNData[pKey] do
if ( index == pName ) then
NuNData[pKey][index].type = NUN_SELF_C;
elseif ( ( NuNData[pKey][index].faction ) and ( NuNData[pKey][index].faction == pFaction ) ) then
if ( NuN_Is_Friendly(index) ) then
if ( not NuNData[pKey][index].friendLst ) then
x = 1;
NuNData[pKey][index].friendLst = {};
NuNData[pKey][index].friendLst[x] = pName;
else
if (not NuNGet_TableID(NuNData[pKey][index].friendLst, pName) ) then
x = getn( NuNData[pKey][index].friendLst ) + 1;
NuNData[pKey][index].friendLst[x] = pName;
end
end
else
if ( NuNData[pKey][index].friendLst ) then
x = NuNGet_TableID(NuNData[pKey][index].friendLst, pName);
if ( x ~= nil ) then
local tmpTable = Remove_Entry(NuNData[pKey][index].friendLst, x);
NuNData[pKey][index].friendLst = tmpTable;
if ( getn(NuNData[pKey][index].friendLst) == 0 ) then
if ((NuNData[pKey][index].type == NUN_AUTO_C) and (NuNSettings[pKey].autoD) and (not NuNData[pKey][index].ignoreLst)) then
NuNData[pKey][index] = nil;
else
NuNData[pKey][index].friendLst = nil;
end
end
end
end
end
end
end
end
end
function Remove_Entry(table, entry)
local sorted = {};
local innerI = 0;
for i = 1, getn(table), 1 do
if ( i ~= entry ) then
innerI = innerI + 1;
sorted[innerI] = table[i];
end
end
return sorted;
end
function NuN_Is_Ignored(aName)
for i = 1, GetNumIgnores(), 1 do
iName = GetIgnoreName(i);
if ( aName == GetIgnoreName(i) ) then
return true;
end
end
return false;
end
function NuN_Is_Friendly(aName)
local iName;
for i = 1, GetNumFriends(), 1 do
iName = GetFriendInfo(i);
if ( iName == aName ) then
return true;
end
end
return false;
end
function UserButtons_Initialise()
for n = 1, uBttns, 1 do
bttnHeadingText = getglobal("NuNTitleButton"..n.."ButtonTextHeading");
bttnDetailText = getglobal("NuNInforButton"..n.."ButtonTextDetail");
bttnDetail = getglobal("NuNInforButton"..n);
hdNbr = pHead..n;
nameHdNbr = c_name..hdNbr;
nameDtNbr = c_name..pDetl..n;
if ( NuNData[pKey][nameHdNbr] ) then
bttnHeadingText:SetText(NuNData[pKey][nameHdNbr].txt);
elseif (NuNSettings[pKey][hdNbr]) then
bttnHeadingText:SetText(NuNSettings[pKey][hdNbr].txt);
else
bttnHeadingText:SetText(dfltHeadings[n]);
end
if ( bttnHeadingText:GetText() == nil ) then
bttnDetailText:SetText("");
bttnDetail:Disable();
else
bttnDetail:Enable();
if ( NuNData[pKey][nameDtNbr] ) then
bttnDetailText:SetText(NuNData[pKey][nameDtNbr].txt);
else
bttnDetailText:SetText("");
end
end
if ( n == 1 ) and ( c_guild ~= nil ) then
if ( bttnHeadingText:GetText() == dfltHeadings[n] ) and ( (bttnDetailText:GetText() == "") or (bttnDetailText:GetText() == nil) ) then
bttnDetailText:SetText(c_guild);
bttnChanges[n+detlOffset] = c_guild;
end
end
if ( n == 2 ) and ( gRank ~= nil ) then
if ( bttnHeadingText:GetText() == dfltHeadings[n] ) and ( (bttnDetailText:GetText() == "") or (bttnDetailText:GetText() == nil) ) then
if ( gRankIndex == 0 ) then
GuildRank = ("GM : "..gRank);
else
GuildRank = (gRankIndex.." : "..gRank);
end
bttnDetailText:SetText(GuildRank);
bttnChanges[n+detlOffset] = GuildRank;
end
end
end
end
function DropDowns_Initialise()
if ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].race ~= nil ) then
UIDropDownMenu_SetSelectedID(NuNRaceDropDown, NuNData[pKey][c_name].race);
UIDropDownMenu_SetText(Races[ (NuNData[pKey][c_name].race) ], NuNRaceDropDown);
elseif ( c_race ~= nil ) then
ddRace = NuNGet_TableID(Races, c_race);
UIDropDownMenu_SetSelectedID(NuNRaceDropDown, ddRace);
UIDropDownMenu_SetText(c_race, NuNRaceDropDown);
else
UIDropDownMenu_ClearAll(NuNRaceDropDown);
end
if ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].cls ~= nil ) then
UIDropDownMenu_SetSelectedID(NuNClassDropDown, NuNData[pKey][c_name].cls);
UIDropDownMenu_SetText(Classes[ (NuNData[pKey][c_name].cls) ], NuNClassDropDown);
elseif ( c_class ~= nil ) then
ddClass = NuNGet_TableID(Classes, c_class);
UIDropDownMenu_SetSelectedID(NuNClassDropDown, ddClass);
UIDropDownMenu_SetText(c_class, NuNClassDropDown);
else
UIDropDownMenu_ClearAll(NuNClassDropDown);
end
if ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].sex ~= nil ) then
UIDropDownMenu_SetSelectedID(NuNSexDropDown, NuNData[pKey][c_name].sex);
UIDropDownMenu_SetText(Sexes[ (NuNData[pKey][c_name].sex) ], NuNSexDropDown);
else
UIDropDownMenu_ClearAll(NuNSexDropDown);
end
if ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].prof1 ~= nil ) then
UIDropDownMenu_SetSelectedID(NuNProf1DropDown, NuNData[pKey][c_name].prof1);
UIDropDownMenu_SetText(Professions[ (NuNData[pKey][c_name].prof1) ], NuNProf1DropDown);
else
UIDropDownMenu_ClearAll(NuNProf1DropDown);
end
if ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].prof2 ~= nil ) then
UIDropDownMenu_SetSelectedID(NuNProf2DropDown, NuNData[pKey][c_name].prof2);
UIDropDownMenu_SetText(Professions[ (NuNData[pKey][c_name].prof2) ], NuNProf2DropDown);
else
UIDropDownMenu_ClearAll(NuNProf2DropDown);
end
if ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].crank ~= nil ) then
UIDropDownMenu_SetSelectedID(NuNCRankDropDown, NuNData[pKey][c_name].crank);
UIDropDownMenu_SetText(Ranks[ (NuNData[pKey][c_name].crank) ], NuNCRankDropDown);
else
UIDropDownMenu_ClearAll(NuNCRankDropDown);
end
if ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].hrank ~= nil ) then
UIDropDownMenu_SetSelectedID(NuNHRankDropDown, NuNData[pKey][c_name].hrank);
UIDropDownMenu_SetText(Ranks[ (NuNData[pKey][c_name].hrank) ], NuNHRankDropDown);
else
UIDropDownMenu_ClearAll(NuNHRankDropDown);
end
end
function NuNGet_TableID(tab, txt)
for i = 1, getn(tab), 1 do
if ( tab[i] == txt ) then return i; end
end
return nil;
end
function NuNGet_CommandID(tab, txt)
for i = 1, getn(tab), 1 do
if ( tab[i].Command == txt ) then return i; end
end
return nil;
end
function NuN_WriteNote()
if (not NuNData[pKey][c_name]) then
NuNData[pKey][c_name] = {};
end
if ( c_name == pName ) then
NuNData[pKey][c_name].type = NUN_SELF_C;
NuNHeader:SetText(NUN_PLAYER.." : "..c_name);
elseif ( ( not NuNData[pKey][c_name].type ) or ( NuNData[pKey][c_name].type == NUN_AUTO_C ) ) then
NuNData[pKey][c_name].type = NUN_MANU_C;
NuNHeader:SetText(NUN_MANU.." : "..c_name);
end
if ( not NuNData[pKey][c_name].faction ) then
if ( ( c_route == "Target" ) or ( c_route == "Create" ) ) then
NuNData[pKey][c_name].faction = c_faction;
else
NuNData[pKey][c_name].faction = pFaction;
end
end
if ( FriendsListFrame:IsVisible() ) then
NuNNew_FriendsList_Update();
elseif ( IgnoreListFrame:IsVisible() ) then
NuNNew_IgnoreList_Update();
elseif ( GuildPlayerStatusFrame:IsVisible() ) then
NuNNew_GuildStatus_Update();
elseif ( GuildStatusFrame:IsVisible() ) then
NuNNew_GuildStatus_Update();
elseif ( WhoFrame:IsVisible() ) then
NuNNew_WhoList_Update();
end
if ( c_guild ~= nil ) then
NuNData[pKey][c_name].guild = c_guild;
end
if ( not NuNData[pKey][c_name].guild ) then
NuNData[pKey][c_name].guild = "";
end
if ( NuN_Is_Ignored(c_name) ) then
if ( not NuNData[pKey][c_name].ignoreLst ) then
NuNData[pKey][c_name].ignoreLst = {};
end
if (not NuNGet_TableID(NuNData[pKey][c_name].ignoreLst, pName) ) then
local x = getn(NuNData[pKey][c_name].ignoreLst) + 1;
NuNData[pKey][c_name].ignoreLst[x] = pName;
end
end
if ( NuN_Is_Friendly(c_name) ) then
if ( not NuNData[pKey][c_name].friendLst ) then
NuNData[pKey][c_name].friendLst = {};
end
if ( not NuNGet_TableID(NuNData[pKey][c_name].friendLst, pName) ) then
local x = getn(NuNData[pKey][c_name].friendLst) + 1;
NuNData[pKey][c_name].friendLst[x] = pName;
end
end
if (ddRace) then
if ( ddRace == -1 ) then
NuNData[pKey][c_name].race = nil;
else
NuNData[pKey][c_name].race = ddRace;
end
ddRace = nil;
elseif ( c_race ~= nil ) then
NuNData[pKey][c_name].race = NuNGet_TableID(Races, c_race);
end
if (ddClass) then
if ( ddClass == -1 ) then
NuNData[pKey][c_name].cls = nil;
else
NuNData[pKey][c_name].cls = ddClass;
end
ddClass = nil;
elseif ( c_class ~= nil ) then
NuNData[pKey][c_name].cls = NuNGet_TableID(Classes, c_class);
end
if (ddSex) then
if ( ddSex == -1 ) then
NuNData[pKey][c_name].sex = nil;
else
NuNData[pKey][c_name].sex = ddSex;
end
ddSex = nil;
end
if (ddProf1) then
if ( ddProf1 == -1 ) then
NuNData[pKey][c_name].prof1 = nil;
else
NuNData[pKey][c_name].prof1 = ddProf1;
end
ddProf1 = nil;
end
if (ddProf2) then
if ( ddProf2 == -1 ) then
NuNData[pKey][c_name].prof2 = nil;
else
NuNData[pKey][c_name].prof2 = ddProf2;
end
ddProf2 = nil;
end
if (ddCRank) then
if ( ddCRank == -1 ) then
NuNData[pKey][c_name].crank = nil;
else
NuNData[pKey][c_name].crank = ddCRank;
end
ddCRank = nil;
end
if (ddHRank) then
if ( ddHRank == -1 ) then
NuNData[pKey][c_name].hrank = nil;
else
NuNData[pKey][c_name].hrank = ddHRank;
end
ddHRank = nil;
end
c_text = NuNText:GetText();
NuN_SetCText(c_name);
for n = 1, uBttns, 1 do
if (bttnChanges[n] ~= "") and (bttnChanges[n] ~= nil) then
hdNbr = pHead..n;
nameHdNbr = c_name..hdNbr;
if (not NuNData[pKey][nameHdNbr]) then
NuNData[pKey][nameHdNbr] = {};
end
if (bttnChanges[n] == 1) then
NuNData[pKey][nameHdNbr].txt = "";
else
NuNData[pKey][nameHdNbr].txt = bttnChanges[n];
end
end
end
for n = 1, uBttns, 1 do
b = n + detlOffset;
if (bttnChanges[b] ~= "") and (bttnChanges[b] ~= nil) then
nameDtNbr = c_name..pDetl..n;
if (not NuNData[pKey][nameDtNbr]) then
NuNData[pKey][nameDtNbr] = {};
end
if (bttnChanges[b] == 1) then
NuNData[pKey][nameDtNbr].txt = nil;
else
NuNData[pKey][nameDtNbr].txt = bttnChanges[b];
end
end
end
if ( ( NuNSearchFrame:IsVisible() ) and ( not string.find(NuNSearchTitleText:GetText(), NUN_QUESTS_TEXT) ) ) then
NuNSearch_Search();
end
ClearButtonChanges();
NuNButtonDelete:Enable();
NuNCOpenChatButton:Enable();
NuNCTTCheckBoxLabel:Show();
NuN_CTTCheckBox:Show();
end
function NuNGNote_WriteNote()
local conflict = false;
local value, index, pad;
local conflicts = 0;
local saveLvl;
local NuN_Creating = nil;
if ( NuNGNoteTitleButton:IsVisible() ) then
c_note = NuNGNoteTitleButtonText:GetText();
else
c_note = NuNGNoteTextBox:GetText();
end
NuNConflictedRealmsLabel:SetText(" ");
if ( ( NuN_GLevel_CheckBox:GetChecked() ) and ( not NuNGNoteFrame.confirmed ) ) then
for index, value in NuNData do
if ( ( index ~= pKey ) and ( NuNData[index][Notes] ) ) then
if ( NuNData[index][Notes][c_note] ) then
conflicts = conflicts + 1;
if ( conflicts == 1 ) then
pad = "";
else
pad = ", ";
end
if ( conflicts < 5 ) then
NuNConflictedRealmsLabel:SetText( NuNConflictedRealmsLabel:GetText()..pad..index );
end
conflict = true;
end
end
end
end
if ( ( conflict ) and ( not NuNGNoteFrame.confirmed ) ) then
if ( conflicts > 4 ) then
NuNConflictedRealmsLabel:SetText( NuNConflictedRealmsLabel:GetText().."..." );
end
ShowUIPanel(NuN_ConfirmFrame);
else
if ( NuN_ConfirmFrame:IsVisible() ) then
HideUIPanel(NuN_ConfirmFrame);
end
if ( not NuN_GNote_OriTitle ) then
NuN_Creating = true;
end
if ( ( ( NuN_GNote_OriTitle ) and ( NuN_GNote_OriTitle ~= c_note ) ) or ( not NuN_GNote_OriTitle ) ) then
if ( ( NuNData[pKey][Notes][c_note] ) or ( NuNData[Notes][c_note] ) ) then
message(NUN_DUPLICATE);
return;
else
if ( NuNData[pKey][Notes][NuN_GNote_OriTitle] ) then
NuNData[pKey][Notes][NuN_GNote_OriTitle] = nil;
elseif ( NuNData[Notes][NuN_GNote_OriTitle] ) then
NuNData[Notes][NuN_GNote_OriTitle] = nil;
end
end
end
NuN_GNote_OriTitle = c_note;
g_text = NuNGNoteTextScroll:GetText();
if ( g_text == nil ) then
g_text = "";
end
if ( NuN_GLevel_CheckBox:GetChecked() ) then
saveLvl = "Account";
NuNData[Notes][c_note] = {};
for index, value in NuNData do
if ( NuNData[index][Notes] ) then
if ( NuNData[index][Notes][c_note] ) then
NuNData[index][Notes][c_note] = nil;
end
end
end
else
saveLvl = "Realm";
NuNData[pKey][Notes][c_note] = {};
if ( NuNData[Notes][c_note] ) then
NuNData[Notes][c_note] = nil;
end
end
NuN_SetGText(saveLvl);
if ( string.find(c_note, "|Hitem:") ) then
simpleName = NuN_GetSimpleName(c_note);
if ( simpleName ~= nil ) then
NuNData[itmIndex][simpleName] = c_note;
end
end
if ( NuNGNoteFrame.type ) then
if ( NuN_GLevel_CheckBox:GetChecked() ) then
NuNData[Notes][c_note].type = NuNGNoteFrame.type;
else
NuNData[pKey][Notes][c_note].type = NuNGNoteFrame.type;
end
if ( noteTypes[NuNGNoteFrame.type].Command == "QST" ) then
if ( not NuNData[pKey].QuestHistory[pName][c_note] ) then
NuNData[pKey].QuestHistory[pName][c_note] = {};
NuNData[pKey].QuestHistory[pName][c_note].sortDate = tostring(date("%Y%m%d%H%M%S"));
NuNData[pKey].QuestHistory[pName][c_note].pLevel = UnitLevel("player");
NuNData[pKey].QuestHistory[pName][c_note].txt = NUN_CREATED.."\n "..NuN_GetDateStamp().."\n "..NuN_GetLoc().."\n";
NuN_UpdateQuestNotes("Write");
end
elseif ( ( noteTypes[NuNGNoteFrame.type].Command == "NPC" ) and ( NuN_Creating ) and ( NuNSettings[pKey].autoMapNotes ) ) then
NuN_MapNote("Target", "", "", nil);
end
end
if ( QuestLogFrame:IsVisible() ) then
NuNNew_QuestLog_Update();
end
if ( ( NuNSearchFrame:IsVisible() ) and ( NuNGNoteFrame.fromQuest ) ) then
NuN_FetchQuestHistory();
elseif ( ( NuNSearchFrame:IsVisible() ) and ( not string.find(NuNSearchTitleText:GetText(), NUN_QUESTS_TEXT) ) ) then
NuNSearch_Search();
end
NuNGNoteButtonDelete:Enable();
if ( ( MapNotes_OnLoad ) or ( MetaMapNotes_OnLoad ) ) then
NuNMapNoteButton:Enable();
end
NuNGOpenChatButton:Enable();
NuN_GTTCheckBox:Show();
NuN_GTTCheckBox:SetChecked(0);
if ( NuN_PinnedTooltip.type == "General" ) then
NuN_GTTCheckBox:SetChecked( NuN_CheckPinnedBox(c_note) );
end
NuNGTTCheckBoxLabel:Show();
NuNGNoteTitleButtonText:SetText(c_note);
NuNGNoteTextBox:Hide();
NuNGNoteTitleButton:Show();
NuNGNoteHeader:SetText(NUN_SAVED_NOTE);
end
end
function NuN_HideFrame()
HideUIPanel(NuNEditDetailsFrame);
HideUIPanel(NuNFrame);
end
function NuNGNote_HideFrame()
HideUIPanel(NuNGNoteFrame);
end
function NuN_OnEvent()
if ( event == "VARIABLES_LOADED" ) then
--NuN_Message("NotesUNeed "..NUN_VERSION.." "..NUN_LOADED);
elseif ( ( event == "IGNORELIST_UPDATE" ) and ( not NuN_importing ) )then
NuN_Update_Ignored();
elseif ( event == "PLAYER_ENTERING_WORLD" ) then
pFaction = UnitFactionGroup("player");
if ( pFaction == "Horde" ) then
horde = true;
else
horde = false;
end
tryI = true;
pName = UnitName("player");
NuN_InitialiseSavedVariables();
if ( not NuNData[pKey][pName] ) then
NuN_AutoNote();
end
NuN_Update_Friends();
NuN_Update_Ignored();
if ( not NuNSettings[pKey].hideMicro ) then
ShowUIPanel(NuNMicroFrame);
else
HideUIPanel(NuNMicroFrame);
end
NuN_PinnedTooltip:SetScale(NuNSettings[pKey].tScale);
NuN_Tooltip:SetScale(NuNSettings[pKey].tScale);
WorldMapTooltip:SetScale(NuNSettings[pKey].mScale);
NuN_MapTooltip:SetScale(NuNSettings[pKey].mScale);
NuNPopup:SetScale(NuNSettings[pKey].mScale);
if ( ( MapNotes_OnLoad ) or ( MetaMapNotes_OnLoad ) ) then
NuN_MapIndexHouseKeeping();
end
NuN_AtStartup = "True";
if ( NuN_FirstTime ) then
NuN_FirstTime = nil;
if ( MetaMapNotes_OnLoad ) then
NuNOri_MetaMapNotes_OnEnter = MetaMapNotes_OnEnter;
MetaMapNotes_OnEnter = NuNNew_MetaMapNotes_OnEnter;
NuNOri_MetaMapNotes_OnLeave = MetaMapNotes_OnLeave;
MetaMapNotes_OnLeave = NuNNew_MetaMapNotes_OnLeave;
NuNOri_MetaMapNotes_DeleteNote = MetaMapNotes_DeleteNote;
MetaMapNotes_DeleteNote = NuNNew_MetaMapNotes_DeleteNote;
NuN_GetZoneTableSize = MetaMapNotes_GetZoneTableSize;
elseif ( MapNotes_OnLoad ) then
NuNOri_MapNotes_OnEnter = MapNotes_OnEnter;
MapNotes_OnEnter = NuNNew_MapNotes_OnEnter;
NuNOri_MapNotes_OnLeave = MapNotes_OnLeave;
MapNotes_OnLeave = NuNNew_MapNotes_OnLeave;
NuNOri_MapNotes_DeleteNote = MapNotes_DeleteNote;
MapNotes_DeleteNote = NuNNew_MapNotes_DeleteNote;
NuN_GetZoneTableSize = MapNotes_GetZoneTableSize;
end
end
elseif ( ( event == "FRIENDLIST_UPDATE" ) and ( not NuN_importing ) ) then
NuN_Update_Friends();
elseif( event == "PLAYER_LEVEL_UP" ) then
if ( NuNData[pKey][pName] ) then
local lvl = UnitLevel("player");
local cxp = UnitXP("player");
local nxp = UnitXPMax("player");
if ( cxp ) and ( nxp ) then
local diff = nxp - cxp;
if ( cxp > diff ) then
lvl = lvl + 1;
end
end
c_text = NuN_GetCText(pName);
local len = string.len(c_text);
if ( len < NUN_MAX_TXT_BUF ) then
c_text = c_text..NUN_LVL_REACHED..lvl.." : ";
c_text = c_text.."\n "..NuN_GetDateStamp();
c_text = c_text.."\n "..NuN_GetLoc();
NuN_SetCText(pName);
end
end
-- elseif ( event == "CHAT_MSG_SYSTEM" ) then
-- if ( arg1 ) then
-- local p = string.find(arg1, NUN_COMPLETED);
-- if ( p ) then
-- local q = string.sub(arg1, 1, (p-1));
-- NuN_QuestHandIn(q);
-- timeSinceLastUpdate = 0;
-- NuN_IgnoreNextQUpdate = true;
-- end
-- end
elseif ( ( event == "PARTY_MEMBERS_CHANGED" ) or ( event == "RAID_ROSTER_UPDATE" ) ) then
if ( NuNSettings[pKey].autoP ) then
NuN_ProcessParty();
end
elseif ( ( NuN_QuestsUpdating == "False" ) and ( NuN_AtStartup == "False" ) and ( event == "QUEST_LOG_UPDATE" ) ) then
if ( ( NuNGNoteFrame:IsVisible() ) and ( noteTypes[NuNGNoteFrame.type].Command == "QST" ) ) then
HideUIPanel(NuNGNoteFrame);
end
if ( NuN_QuestAccepted ) then
local qHeader = nil;
local qCollapsed = nil;
local qIndex, qLevel, qTag, qComplete = NuN_CheckQuestList(NuN_QuestAccepted);
if ( qIndex > 0 ) then
NuN_ProcessQuest(NuN_QuestAccepted, qLevel, qTag, qHeader, qCollapsed, qComplete, qIndex);
end
NuN_QuestAccepted = nil;
return;
end
if ( NuN_IgnoreNextQUpdate ) then
NuN_IgnoreNextQUpdate = nil;
else
NuN_UpdateQuestNotes(event);
end
end
end
function NuNHRaceDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNHRaceDropDown, NuNHRaceDropDown_Initialise);
UIDropDownMenu_SetWidth(75);
end
function NuNHRaceDropDown_Initialise()
local info;
for i=1, getn(HRaces), 1 do
info = {};
info.text = HRaces[i];
info.func = NuNHRaceButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNHRaceButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNHRaceDropDown, this:GetID());
ddRace = this:GetID();
lastDD = "Race";
NuNButtonClrDD:Enable();
end
function NuNARaceDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNARaceDropDown, NuNARaceDropDown_Initialise);
UIDropDownMenu_SetWidth(75);
end
function NuNARaceDropDown_Initialise()
local info;
for i=1, getn(ARaces), 1 do
info = {};
info.text = ARaces[i];
info.func = NuNARaceButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNARaceButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNARaceDropDown, this:GetID());
ddRace = this:GetID();
lastDD = "Race";
NuNButtonClrDD:Enable();
end
function NuNHClassDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNHClassDropDown, NuNHClassDropDown_Initialise);
UIDropDownMenu_SetWidth(75);
end
function NuNHClassDropDown_Initialise()
local info;
for i=1, getn(HClasses), 1 do
info = {};
info.text = HClasses[i];
info.func = NuNHClassButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNHClassButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNHClassDropDown, this:GetID());
ddClass = this:GetID();
lastDD = "Class";
NuNButtonClrDD:Enable();
end
function NuNAClassDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNAClassDropDown, NuNAClassDropDown_Initialise);
UIDropDownMenu_SetWidth(75);
end
function NuNAClassDropDown_Initialise()
local info;
for i=1, getn(AClasses), 1 do
info = {};
info.text = AClasses[i];
info.func = NuNAClassButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNAClassButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNAClassDropDown, this:GetID());
ddClass = this:GetID();
lastDD = "Class";
NuNButtonClrDD:Enable();
end
function NuNSexDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNSexDropDown, NuNSexDropDown_Initialise);
UIDropDownMenu_SetWidth(75);
end
function NuNSexDropDown_Initialise()
local info;
for i=1, getn(Sexes), 1 do
info = {};
info.text = Sexes[i];
info.func = NuNSexButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNSexButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNSexDropDown, this:GetID());
ddSex = this:GetID();
lastDD = "Sex";
NuNButtonClrDD:Enable();
end
function NuNProf1DropDown_OnLoad()
UIDropDownMenu_Initialize(NuNProf1DropDown, NuNProf1DropDown_Initialise);
UIDropDownMenu_SetWidth(210);
end
function NuNProf1DropDown_Initialise()
local info;
for i=1, getn(Professions), 1 do
info = {};
info.text = Professions[i];
info.func = NuNProf1Button_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNProf1Button_OnClick()
UIDropDownMenu_SetSelectedID(NuNProf1DropDown, this:GetID());
ddProf1 = this:GetID();
lastDD = "Prof1";
NuNButtonClrDD:Enable();
end
function NuNProf2DropDown_OnLoad()
UIDropDownMenu_Initialize(NuNProf2DropDown, NuNProf2DropDown_Initialise);
UIDropDownMenu_SetWidth(210);
end
function NuNProf2DropDown_Initialise()
local info;
for i=1, getn(Professions), 1 do
info = {};
info.text = Professions[i];
info.func = NuNProf2Button_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNProf2Button_OnClick()
UIDropDownMenu_SetSelectedID(NuNProf2DropDown, this:GetID());
ddProf2 = this:GetID();
lastDD = "Prof2";
NuNButtonClrDD:Enable();
end
function NuNHCRankDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNHCRankDropDown, NuNHCRankDropDown_Initialise);
UIDropDownMenu_SetWidth(125);
end
function NuNHCRankDropDown_Initialise()
local info;
for i=1, getn(HRanks), 1 do
info = {};
info.text = HRanks[i];
info.func = NuNHCRankButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNHCRankButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNHCRankDropDown, this:GetID());
ddCRank = this:GetID();
lastDD = "CRank";
NuNButtonClrDD:Enable();
end
function NuNACRankDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNACRankDropDown, NuNACRankDropDown_Initialise);
UIDropDownMenu_SetWidth(125);
end
function NuNACRankDropDown_Initialise()
local info;
for i=1, getn(ARanks), 1 do
info = {};
info.text = ARanks[i];
info.func = NuNACRankButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNACRankButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNACRankDropDown, this:GetID());
ddCRank = this:GetID();
lastDD = "CRank";
NuNButtonClrDD:Enable();
end
function NuNHHRankDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNHHRankDropDown, NuNHHRankDropDown_Initialise);
UIDropDownMenu_SetWidth(125);
end
function NuNHHRankDropDown_Initialise()
local info;
for i=1, getn(HRanks), 1 do
info = {};
info.text = HRanks[i];
info.func = NuNHHRankButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNHHRankButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNHHRankDropDown, this:GetID());
ddHRank = this:GetID();
lastDD = "HRank";
NuNButtonClrDD:Enable();
end
function NuNAHRankDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNAHRankDropDown, NuNAHRankDropDown_Initialise);
UIDropDownMenu_SetWidth(125);
end
function NuNAHRankDropDown_Initialise()
local info;
for i=1, getn(ARanks), 1 do
info = {};
info.text = ARanks[i];
info.func = NuNAHRankButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNAHRankButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNAHRankDropDown, this:GetID());
ddHRank = this:GetID();
lastDD = "HRank";
NuNButtonClrDD:Enable();
end
function NuNOptionsSearchDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNOptionsSearchDropDown, NuNOptionsSearchDropDown_Initialise);
UIDropDownMenu_SetWidth(165);
end
function NuNOptionsSearchDropDown_Initialise()
local info;
for i=1, getn(searchFor), 1 do
info = {};
info.text = searchFor[i].Display;
info.func = NuNOptionsSearchDropDown_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNOptionsSearchDropDown_OnClick()
UIDropDownMenu_SetSelectedID(NuNOptionsSearchDropDown, this:GetID());
ddSearch = this:GetID();
end
function NuNSearchClassDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNSearchClassDropDown, NuNSearchClassDropDown_Initialise);
UIDropDownMenu_SetWidth(204);
end
function NuNSearchClassDropDown_Initialise()
local info;
for i=1, getn(AllClasses), 1 do
info = {};
info.text = AllClasses[i];
info.func = NuNSearchClassButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNSearchClassButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNSearchClassDropDown, this:GetID());
ddClassSearch = this:GetID();
end
function NuNSearchProfDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNSearchProfDropDown, NuNSearchProfDropDown_Initialise);
UIDropDownMenu_SetWidth(204);
end
function NuNSearchProfDropDown_Initialise()
local info;
for i=1, getn(Professions), 1 do
info = {};
info.text = Professions[i];
info.func = NuNSearchProfButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNSearchProfButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNSearchProfDropDown, this:GetID());
ddProfSearch = this:GetID();
end
function NuNChatDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNChatDropDown, NuNChatDropDown_Initialise);
UIDropDownMenu_SetWidth(110);
end
function NuNChatDropDown_Initialise()
local info;
for i=1, getn(transmitTo), 1 do
info = {};
info.text = transmitTo[i].Display;
info.func = NuNChatButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNChatButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNChatDropDown, this:GetID());
sendTo = transmitTo[this:GetID()].Command;
if ( sendTo == "WHISPER" ) or ( sendTo == "NuN" ) then
NuNChatTextBox:SetText("");
NuNChatTextBox:Show();
NuNTransmit:Disable();
else
if ( NuNChatTextBox:IsVisible() ) then
NuNChatTextBox:Hide();
end
NuNTransmit:Enable();
end
end
function NuNGTypeDropDown_OnLoad()
UIDropDownMenu_Initialize(NuNGTypeDropDown, NuNGTypeDropDown_Initialise);
UIDropDownMenu_SetWidth(70);
end
function NuNGTypeDropDown_Initialise()
local info;
for i=1, getn(noteTypes), 1 do
info = {};
info.text = noteTypes[i].Display;
info.func = NuNGTypeButton_OnClick;
UIDropDownMenu_AddButton(info);
end
end
function NuNGTypeButton_OnClick()
UIDropDownMenu_SetSelectedID(NuNGTypeDropDown, this:GetID());
NuNGNoteFrame.type = this:GetID();
if ( noteTypes[NuNGNoteFrame.type].Command == "NPC" ) then
NuNNPCTargetButton:Show();
else
NuNNPCTargetButton:Hide();
end
end
function NuNEditDetails()
local prntObj;
local prntTxtObj;
newTxt = (NuNEditDetailsBox:GetText());
if (newTxt ~= oriTxt) then
chldObj = getglobal("NuNInforButton"..bttnNumb);
if ((newTxt == "") and (isTitle)) or ((newTxt == nil) and (isTitle)) then
chldTxtObj = getglobal("NuNInforButton"..bttnNumb.."ButtonTextDetail");
chldTxt = chldTxtObj:SetText("");
chldObj:Disable();
else
chldObj:Enable();
end
bttnTxtObj:SetText(newTxt);
if (isTitle) then
if ( NuNEditDetail_CheckButton:GetChecked() ) then
hdNbr = pHead..bttnNumb;
nameHdNbr = c_name..hdNbr;
if (not NuNSettings[pKey][hdNbr]) then
NuNSettings[pKey][hdNbr] = {};
end
NuNSettings[pKey][hdNbr].txt = newTxt;
if ( NuNData[pKey][nameHdNbr] ) then
NuNData[pKey][nameHdNbr] = nil;
end
else
index = tonumber(bttnNumb);
if ( ( newTxt == "" ) or ( newTxt == nil ) )then
bttnChanges[index] = 1;
else
bttnChanges[index] = newTxt;
end
end
else
index = bttnNumb + detlOffset;
if ( newTxt == "" ) then
bttnChanges[index] = 1;
else
bttnChanges[index] = newTxt;
end
if ( index == (detlOffset + 1) ) then
prntTxtObj = getglobal("NuNTitleButton"..bttnNumb.."ButtonTextHeading");
if ( prntTxtObj:GetText() == dfltHeadings[1] ) then
c_guild = newTxt;
end
end
end
NuNEditDetails_HideFrame();
else
NuNEditDetails_HideFrame();
end
end
function NuNEditDetails_HideFrame()
NuNButtonSaveNote:Enable();
HideUIPanel(NuNEditDetailsFrame);
end
function NuNUserButton_OnClick(bttn)
local bttnName = bttn:GetName();
local prfx = (string.sub(bttnName, 1, 8));
bttnNumb = (string.sub(bttnName, 15, 15));
if (prfx == "NuNTitle") then
isTitle = true;
bttnTxtObj = getglobal(bttnName.."ButtonTextHeading");
else
isTitle = false;
bttnTxtObj = getglobal(bttnName.."ButtonTextDetail");
end
oriTxt = bttnTxtObj:GetText();
NuNEditDetails_ShowFrame(isTitle);
end
function NuNEditDetails_ShowFrame(isTitle)
NuNButtonSaveNote:Disable();
NuNText:ClearFocus();
if (oriTxt == nil) then
NuNEditDetailsBox:SetText("");
else
NuNEditDetailsBox:SetText(oriTxt);
end
if (isTitle) then
NuNCheckBoxLabel:SetText("Save as Default");
NuNEditDetail_CheckButton:SetChecked(0);
NuNEditDetailsRestoreButton:Enable();
NuNEditDetail_CheckButton:Show();
NuNEditDetailsRestoreButton:Show();
else
NuNCheckBoxLabel:SetText("");
NuNEditDetail_CheckButton:Hide();
NuNEditDetailsRestoreButton:Hide();
end
ShowUIPanel(NuNEditDetailsFrame);
NuNEditDetailsBox:SetFocus();
end
function NuN_EditDetailCheckButtonOnClick()
if ( NuNEditDetail_CheckButton:GetChecked() ) then
NuNEditDetailsRestoreButton:Disable();
else
NuNEditDetailsRestoreButton:Enable();
end
end
function NuNEditDetailsRestore()
nameHdNbr = c_name..pHead..bttnNumb;
if ( NuNData[pKey][nameHdNbr] ) then
NuNData[pKey][nameHdNbr] = nil;
end
NuNEditDetails_HideFrame();
NuN_HideFrame();
NuN_ShowNote();
end
-------------------------------------------------------------------------------------------
-- Succesful Function Hooks
function NuNNew_FriendsFrameFriendButton_OnClick(button)
NuNOri_FriendsFrameFriendButton_OnClick(button);
if ( ( button == "LeftButton" ) and ( NuNFrame:IsVisible() ) ) then
NuN_HideFrame();
NuN_ShowFriendNote();
end
end
function NuNNew_FriendsFrameIgnoreButton_OnClick()
NuNOri_FriendsFrameIgnoreButton_OnClick();
if ( ( button == "LeftButton" ) and ( NuNFrame:IsVisible() ) ) then
NuN_HideFrame();
NuN_ShowIgnoreNote();
end
end
function NuNNew_FriendsFrameGuildPlayerStatusButton_OnClick(button)
NuNOri_FriendsFrameGuildPlayerStatusButton_OnClick(button);
if ( ( button == "LeftButton" ) and ( NuNFrame:IsVisible() ) ) then
NuN_HideFrame();
NuN_ShowGuildNote();
end
end
function NuNNew_FriendsFrameGuildStatusButton_OnClick(button)
NuNOri_FriendsFrameGuildStatusButton_OnClick(button);
if ( ( button == "LeftButton" ) and ( NuNFrame:IsVisible() ) ) then
NuN_HideFrame();
NuN_ShowGuildNote();
end
end
function NuNNew_FriendsFrameWhoButton_OnClick(button)
NuNOri_FriendsFrameWhoButton_OnClick(button);
if ( ( button == "LeftButton" ) and ( NuNFrame:IsVisible() ) ) then
NuN_HideFrame();
NuN_ShowWhoNote(WhoFrame.selectedName);
end
end
function NuNNew_FriendsList_Update()
local bttnIndx;
NuNOri_FriendsList_Update();
for i = 1, 10, 1 do
bttnIndx = getglobal("NuN_FriendNotesButton"..i);
NuN_UpdateNoteButton(bttnIndx, i, "F");
end
end
function NuNNew_IgnoreList_Update()
local bttnIndx;
NuNOri_IgnoreList_Update();
for i = 1, 20, 1 do
bttnIndx = getglobal("NuN_IgnoreNotesButton"..i);
NuN_UpdateNoteButton(bttnIndx, i, "I");
end
end
function NuNNew_GuildStatus_Update()
local bttnIndx;
NuNOri_GuildStatus_Update();
for i = 1, 13, 1 do
bttnIndx = getglobal("NuN_GuildSNotesButton"..i);
NuN_UpdateNoteButton(bttnIndx, i, "GS");
bttnIndx = getglobal("NuN_GuildNotesButton"..i);
NuN_UpdateNoteButton(bttnIndx, i, "G");
end
end
function NuNNew_WhoList_Update()
local bttnIndx;
NuNOri_WhoList_Update();
for i = 1, 17, 1 do
bttnIndx = getglobal("NuN_WhoNotesButton"..i);
NuN_UpdateNoteButton(bttnIndx, i, "W");
end
end
function NuNNew_QuestLog_Update()
local bttnIndx;
NuNOri_QuestLog_Update();
for i = 1, 6, 1 do
bttnIndx = getglobal("NuN_QuestNotesButton"..i);
NuN_UpdateNoteButton(bttnIndx, i, NUN_QUEST_C);
end
end
function NuNNew_ContainerFrameItemButton_OnClick(button, ignoreShift)
if ( ( IsAltKeyDown() ) and ( IsShiftKeyDown() ) ) then
local itmLink = GetContainerItemLink( this:GetParent():GetID(), this:GetID() );
if ( ( itmLink ~= nil ) and ( itmLink ~= "" ) ) then
if ( button == "LeftButton" ) then
if ( ( NuNGNoteFrame:IsVisible() ) or ( NuNFrame:IsVisible() ) ) then
if ( NuNGNoteFrame:IsVisible() ) then
local cText = NuNGNoteTextScroll:GetText().."\n"..itmLink;
NuNGNoteTextScroll:SetText(cText);
return;
elseif ( NuNFrame:IsVisible() ) then
local cText = NuNText:GetText().."\n"..itmLink;
NuNText:SetText(cText);
return;
end
else
NuNGNoteFrame.fromQuest = nil;
if ( ( NuNData[pKey][Notes][itmLink] ) or ( NuNData[Notes][itmLink] ) ) then
c_note = itmLink;
NuN_ShowSavedGNote();
else
NuN_GNoteFromItem(itmLink, "GameTooltip");
end
return;
end
end
end
end
NuNOri_ContainerFrameItemButton_OnClick(button, ignoreShift);
end
function NuNNew_SetItemRef(link, text, button)
if ( strsub(link, 1, 6) == "player" ) then
local name = string.sub(link, 8);
if ( name and (string.len(name) > 0) ) then
name = string.gsub(name, "([^%s]*)%s+([^%s]*)%s+([^%s]*)", "%3");
name = string.gsub(name, "([^%s]*)%s+([^%s]*)", "%2");
if ( IsShiftKeyDown() ) then
local NuN_staticPopup = StaticPopup_Visible("ADD_IGNORE");
if ( not NuN_staticPopup ) then
if ( IsAltKeyDown() ) then
if ( NuNData[pKey][name] ) then
NuN_ShowSavedNote(name);
else
NuN_CreateContact(name, pFaction);
end
else
ttName = name;
NuN_ClearPinnedTT();
NuN_PinnedTooltip:SetOwner(this, "ANCHOR_RIGHT");
NuN_PinUpHeader = true;
NuN_PinnedTooltip.type = "Contact";
NuN_BuildTT(NuN_PinnedTooltip);
NuN_PinUpHeader = false;
NuN_PinnedTooltip:Show();
end
end
end
end
elseif ( IsShiftKeyDown() ) and ( IsAltKeyDown() ) then
if ( button == "LeftButton" ) then
if ( ( NuNGNoteFrame:IsVisible() ) or ( NuNFrame:IsVisible() ) ) then
if ( NuNGNoteFrame:IsVisible() ) then
local cText = NuNGNoteTextScroll:GetText().."\n"..text;
NuNGNoteTextScroll:SetText(cText);
return;
elseif ( NuNFrame:IsVisible() ) then
local cText = NuNText:GetText().."\n"..text;
NuNText:SetText(cText);
return;
end
else
NuNGNoteFrame.fromQuest = nil;
if ( ( NuNData[pKey][Notes][text] ) or ( NuNData[Notes][text] ) ) then
c_note = text;
NuN_ShowSavedGNote();
else
ItemRefTooltip:SetHyperlink(link);
NuN_GNoteFromItem(text, "ItemRefTooltip");
end
return;
end
end
end
NuNOri_SetItemRef(link, text, button);
if ( ItemRefTooltip:IsVisible() ) then
NuN_ItemRefTooltip_OnShow();
end
end
function NuNNew_PaperDollItemSlotButton_OnClick(button)
local itmLink;
if ( ( IsShiftKeyDown() ) and ( IsAltKeyDown() ) ) then
if ( ( InspectFrame ) and ( InspectFrame:IsVisible() ) ) then
itmLink = GetInventoryItemLink("target", this:GetID());
else
itmLink = GetInventoryItemLink("player", this:GetID());
end
if ( ( itmLink ~= nil ) and ( itmLink ~= "" ) ) then
if ( button == "LeftButton" ) then
if ( ( NuNGNoteFrame:IsVisible() ) or ( NuNFrame:IsVisible() ) ) then
if ( NuNGNoteFrame:IsVisible() ) then
local cText = NuNGNoteTextScroll:GetText().."\n"..itmLink;
NuNGNoteTextScroll:SetText(cText);
return;
elseif ( NuNFrame:IsVisible() ) then
local cText = NuNText:GetText().."\n"..itmLink;
NuNText:SetText(cText);
return;
end
else
NuNGNoteFrame.fromQuest = nil;
if ( ( NuNData[pKey][Notes][itmLink] ) or ( NuNData[Notes][itmLink] ) ) then
c_note = itmLink;
NuN_ShowSavedGNote();
else
NuN_GNoteFromItem(itmLink, "GameTooltip");
end
return;
end
end
end
end
NuNOri_PaperDollItemSlotButton_OnClick(button);
end
function NuNNew_QuestLogRewardItem_OnClick()
if ( ( IsShiftKeyDown() ) and ( IsAltKeyDown() ) and ( this.rewardType ~= "spell" ) ) then
local itmLink = GetQuestLogItemLink(this.type, this:GetID());
if ( ( itmLink ~= nil ) and ( itmLink ~= "" ) ) then
local sLink = NuN_GetSimpleName(itmLink);
if ( ( NuNGNoteFrame:IsVisible() ) and ( sLink == prevLink ) ) then
HideUIPanel(NuNGNoteFrame);
else
prevLink = sLink;
NuNGNoteFrame.fromQuest = nil;
if ( ( NuNData[pKey][Notes][itmLink] ) or ( NuNData[Notes][itmLink] ) ) then
c_note = itmLink;
NuN_ShowSavedGNote();
else
NuN_GNoteFromItem(itmLink, "GameTooltip");
local q = GetQuestLogSelection();
if ( q ) then
q = GetQuestLogTitle(q);
if ( q ) then
if ( NuNGNoteFrame:IsVisible() ) then
NuNGNoteTextScroll:SetText( NuNGNoteTextScroll:GetText().."\n"..NUN_QUEST..q );
end
end
end
end
end
return;
end
end
NuNOri_QuestLogRewardItem_OnClick();
end
function NuNNew_QuestItem_OnClick()
if ( ( IsShiftKeyDown() ) and ( IsAltKeyDown() ) and ( this.rewardType ~= "spell" ) ) then
local itmLink = GetQuestItemLink(this.type, this:GetID());
if ( ( itmLink ~= nil ) and ( itmLink ~= "" ) ) then
local sLink = NuN_GetSimpleName(itmLink);
if ( ( NuNGNoteFrame:IsVisible() ) and ( sLink == prevLink ) ) then
HideUIPanel(NuNGNoteFrame);
else
prevLink = sLink;
NuNGNoteFrame.fromQuest = nil;
if ( ( NuNData[pKey][Notes][itmLink] ) or ( NuNData[Notes][itmLink] ) ) then
c_note = itmLink;
NuN_ShowSavedGNote();
else
NuN_GNoteFromItem(itmLink, "GameTooltip");
local giver = QuestFrameNpcNameText:GetText();
local quest = QuestTitleText:GetText();
if ( giver ) then
giver = "\n"..giver.."\n"..NuN_GetLoc();
end
if ( quest ) then
giver = giver.."\n"..NUN_QUEST..quest;
end
if ( giver ) then
NuNGNoteTextScroll:SetText( NuNGNoteTextScroll:GetText()..giver );
end
end
end
return;
end
end
NuNOri_QuestItem_OnClick();
end
function NuNNew_QuestRewardItem_OnClick()
if ( ( IsShiftKeyDown() ) and ( IsAltKeyDown() ) and ( this.rewardType ~= "spell" ) ) then
local itmLink = GetQuestItemLink(this.type, this:GetID());
if ( ( itmLink ~= nil ) and ( itmLink ~= "" ) ) then
local sLink = NuN_GetSimpleName(itmLink);
if ( ( NuNGNoteFrame:IsVisible() ) and ( sLink == prevLink ) ) then
HideUIPanel(NuNGNoteFrame);
else
prevLink = sLink;
NuNGNoteFrame.fromQuest = nil;
if ( ( NuNData[pKey][Notes][itmLink] ) or ( NuNData[Notes][itmLink] ) ) then
c_note = itmLink;
NuN_ShowSavedGNote();
else
NuN_GNoteFromItem(itmLink, "GameTooltip");
end
end
return;
end
end
NuNOri_QuestRewardItem_OnClick();
end
function NuNNew_AbandonQuest()
local qN = GetAbandonQuestName();
timeSinceLastUpdate = 0;
NuN_IgnoreNextQUpdate = true;
NuN_AbandonQuest(qN);
NuNOri_AbandonQuest();
end
function NuNNew_QuestDetailAcceptButton_OnClick()
NuNOri_QuestDetailAcceptButton_OnClick();
NuN_QuestAccepted = GetTitleText();
end
function NuNNew_QuestRewardCompleteButton_OnClick()
local qN = GetTitleText();
NuN_QuestHandIn(qN);
NuNOri_QuestRewardCompleteButton_OnClick();
end
-------------------------------------------------------------------------------------------
-- Attempt to Hook MapNotes functions
function NuNNew_MapNotes_OnEnter(id)
if ( NuNPopup:IsVisible() ) then
return;
end
NuNOri_MapNotes_OnEnter(id);
NuN_WorldMapTooltip_OnShow(id);
end
function NuNNew_MapNotes_OnLeave(id)
if ( NuNPopup:IsVisible() ) then
popUpHide = true;
return;
end
NuNOri_MapNotes_OnLeave(id);
end
function NuNNew_MapNotes_DeleteNote(id, cont, zone)
local lId = id;
local lCont, lZone, lLst;
if ( id > 0 ) then
lCont, lZone, lLst = NuN_PreDeleteMapIndex(id, cont, zone);
end
NuNOri_MapNotes_DeleteNote(id, cont, zone);
if ( ( lId > 0 ) and ( cont ~= 0 ) ) then
NuN_DeleteMapIndex(lId, lCont, lZone, lLst);
end
end
-------------------------------------------------------------------------------------------
-- Attempt to Hook MetaMapNotes functions
function NuNNew_MetaMapNotes_OnEnter(id)
if ( NuNPopup:IsVisible() ) then
return;
end
NuNOri_MetaMapNotes_OnEnter(id);
WorldMapTooltip:SetScale(NuNSettings[pKey].mScale);
WorldMapTooltip:Show();
NuN_WorldMapTooltip_OnShow(id);
end
function NuNNew_MetaMapNotes_OnLeave(id)
if ( NuNPopup:IsVisible() ) then
popUpHide = true;
return;
end
NuNOri_MetaMapNotes_OnLeave(id);
end
function NuNNew_MetaMapNotes_DeleteNote(id, cont, zone)
local lId = id;
local lCont, lZone, lLst;
if ( id > 0 ) then
lCont, lZone, lLst = NuN_PreDeleteMapIndex(id, cont, zone);
end
NuNOri_MetaMapNotes_DeleteNote(id, cont, zone);
if ( ( lId > 0 ) and ( cont ~= 0 ) ) then
NuN_DeleteMapIndex(lId, lCont, lZone, lLst);
end
end
-------------------------------------------------------------------------------------------
function NuN_GNoteFromItem(link, theTT)
local catTxt = "";
catTxt = NuN_ExtractTooltipInfo(catTxt, theTT);
c_note = link;
c_type = NuNGet_CommandID(noteTypes, "ITM");
NuN_ShowTitledGNote(catTxt);
end
function NuN_ExtractTooltipInfo(xTTText, theTT)
local lftTxt, rgtTxt, needRight;
local endLine = "\n";
local tmpTxt;
local foundTTInfo = false;
local ttLLen = NUN_TT_LEN;
if ( NuNSettings[pKey].ttLLen ) then
if ( NuNSettings[pKey].ttLLen == "" ) then
ttLLen = 0;
else
ttLLen = tonumber( NuNSettings[pKey].ttLLen );
end
end
for i=2, 23, 1 do
lftTxt = getglobal(theTT.."TextLeft"..i):GetText();
rgtTxt = getglobal(theTT.."TextRight"..i):GetText();
needRight = false;
tmpTxt = "";
if ( lftTxt ~= nil ) then
if ( ( string.find(lftTxt, "\"" ) ) or ( ( string.find(lftTxt, "/") ) and ( string.find(lftTxt, "\)") ) ) ) then
tmpTxt = NUN_GOLD..lftTxt;
elseif ( string.find(lftTxt, ":") ) then
tmpTxt = NUN_GREEN..lftTxt;
else
tmpTxt = NUN_WHITE..lftTxt;
end
if ( rgtTxt ~= nil ) then
needRight = NuN_TestLeftTT(lftTxt);
if ( needRight ) then
local lLen = string.len(lftTxt);
local rLen = string.len(rgtTxt);
local spaces = ttLLen - (lLen + rLen) - 10;
local pad = string.rep(" ", spaces);
tmpTxt = tmpTxt..pad..rgtTxt;
end
end
xTTText = xTTText..tmpTxt..NUN_C_END..endLine;
foundTTInfo = true;
end
end
return xTTText;
end
function NuN_TestLeftTT(lftTxt)
if ( string.find(lftTxt, NUN_HAND ) ) or ( string.find(lftTxt, NUN_HAND2) ) or ( string.find(lftTxt, NUN_FEET ) ) or ( string.find(lftTxt, NUN_LEGS ) ) or ( string.find(lftTxt, NUN_HEAD ) ) or ( string.find(lftTxt, NUN_WAIST ) ) or ( string.find(lftTxt, NUN_SHOULDER ) ) or ( string.find(lftTxt, NUN_CHEST ) ) or ( string.find(lftTxt, NUN_WRIST ) ) or ( string.find(lftTxt, NUN_DAMAGE ) ) then
return true;
else
return false;
end
end
function NuN_Who()
local wName = nil;
local wGuildName = nil;
local wRace = nil;
local wClass = nil;
local bttnHeadingText1;
local bttnDetailText1;
SendWho(c_name);
local n = GetNumWhoResults();
for i = 1, n, 1 do
wName = GetWhoInfo(i);
if ( wName == c_name ) then
wName, wGuildName, wLvl, wRace, wClass, wZone = GetWhoInfo(i);
if ( wGuildName ~= nil ) then
c_guild = wGuildName;
end
bttnHeadingText1 = getglobal("NuNTitleButton1ButtonTextHeading");
bttnDetailText1 = getglobal("NuNInforButton1ButtonTextDetail");
if ( bttnHeadingText1:GetText() == dfltHeadings[1] ) and ( wGuildName ~= nil) then
bttnDetailText1:SetText(wGuildName);
c_guild = wGuildName;
if ( wGuildName == "" ) then
bttnChanges[6] = 1;
else
bttnChanges[6] = wGuildName;
end
end
if ( wClass ~= nil ) then
c_class = wClass;
ddClass = NuNGet_TableID(Classes, c_class);
UIDropDownMenu_SetSelectedID(NuNClassDropDown, ddClass);
UIDropDownMenu_SetText(c_class, NuNClassDropDown);
end
if ( wRace ~= nil ) then
c_race = wRace;
ddRace = NuNGet_TableID(Races, c_race);
UIDropDownMenu_SetSelectedID(NuNRaceDropDown, ddRace);
UIDropDownMenu_SetText(c_race, NuNRaceDropDown);
end
end
end
end
function NuN_Target()
local lName;
local lRace;
local lClass;
local lSex;
local lPvPRank;
local lPvPRankID;
local lgName;
local lgRank;
local lgRankIndex;
local theUnitID = nil;
if ( ( UnitInParty("target") ) or ( UnitInRaid("target") ) ) then
theUnitID = "target";
end
if ( theUnitID == nil ) then
theUnitID = NuN_CheckPartyByName(c_name);
end
if ( theUnitID == nil ) then
theUnitID = NuN_CheckRaidByName(c_name);
end
if ( theUnitID == nil ) then
TargetByName(c_name);
lName = UnitName("target");
if ( lName == c_name ) then
theUnitID = "target";
else
ClearTarget();
end
end
if ( unitTest == true ) then
unitTest = false;
else
if ( theUnitID ~= nil ) then
lRace = UnitRace(theUnitID);
if ( lRace ~= nil ) then
c_race = lRace;
ddRace = NuNGet_TableID(Races, c_race);
UIDropDownMenu_SetSelectedID(NuNRaceDropDown, ddRace);
UIDropDownMenu_SetText(c_race, NuNRaceDropDown);
end
lClass = UnitClass(theUnitID);
if ( lClass ~= nil ) then
c_class = lClass;
ddClass = NuNGet_TableID(Classes, c_class);
UIDropDownMenu_SetSelectedID(NuNClassDropDown, ddClass);
UIDropDownMenu_SetText(c_class, NuNClassDropDown);
end
lSex = UnitSex(theUnitID);
if ( lSex ~= nil ) then
if ( lSex == 0 ) then
lsex = NUN_MALE;
else
lsex = NUN_FEMALE;
end
ddSex = NuNGet_TableID(Sexes, lsex);
UIDropDownMenu_SetSelectedID(NuNSexDropDown, ddSex);
UIDropDownMenu_SetText(lsex, NuNSexDropDown);
end
lPvPRankID = UnitPVPRank(theUnitID);
if ( lPvPRankID ~= nil ) and ( lPvPRankID > 0 ) then
lPvPRank = GetPVPRankInfo(lPvPRankID);
ddCRank = NuNGet_TableID(Ranks, lPvPRank);
UIDropDownMenu_SetSelectedID(NuNCRankDropDown, ddCRank);
UIDropDownMenu_SetText(lPvPRank, NuNCRankDropDown);
end
lgName, lgRank, lgRankIndex = GetGuildInfo(theUnitID);
if ( lgName ~= nil ) then
c_guild = lgName;
end
bttnHeadingText1 = getglobal("NuNTitleButton1ButtonTextHeading");
bttnDetailText1 = getglobal("NuNInforButton1ButtonTextDetail");
bttnHeadingText2 = getglobal("NuNTitleButton2ButtonTextHeading");
bttnDetailText2 = getglobal("NuNInforButton2ButtonTextDetail");
if ( lgName ~= "" ) and ( lgName ~= nil ) then
if ( bttnHeadingText1:GetText() == dfltHeadings[1] ) then
bttnDetailText1:SetText(lgName);
bttnChanges[6] = lgName;
end
if ( bttnHeadingText2:GetText() == dfltHeadings[2] ) then
if ( lgRankIndex == 0 ) then
lgRankTxt = ( "GM : "..lgRank );
else
lgRankTxt = ( lgRankIndex.." : "..lgRank );
end
bttnDetailText2:SetText(lgRankTxt);
bttnChanges[7] = lgRankTxt;
end
end
if ( theUnitID == "target" ) then
for index = 1, getn(invSlotList), 1 do
local text = GetInventoryItemLink(theUnitID, index);
if ( text ) then
local link = NuN_GetLink(text);
if ( link ) then
ItemRefTooltip:SetHyperlink(link);
NuN_CheckSlot();
if ( typeIndex ) then
NuNText:SetText( NuNText:GetText() .. "\n" .. invSlotList[typeIndex].name .. text );
else
NuNText:SetText( NuNText:GetText() .. "\n" .. text );
end
end
end
end
end
end
end
return theUnitID;
end
function NuN_CheckSlot()
local lftTxt;
typeIndex = nil;
NuN_Fingers = 0;
NuN_Trinkets = 0;
NuN_Hand = 0;
for i=2, 5, 1 do
lftTxt = getglobal("ItemRefTooltipTextLeft"..i):GetText();
if ( lftTxt ) then
typeIndex = NuN_Wearable(lftTxt);
if ( typeIndex ~= nil ) then
break;
end
end
end
end
function NuN_Wearable(txt)
if ( string.find(txt, NUN_HEAD) ) then
return 1;
elseif ( string.find(txt, NUN_NECK) ) then
return 2;
elseif ( string.find(txt, NUN_SHOULDER) ) then
return 3;
elseif ( string.find(txt, NUN_SHIRT) ) then
return 4;
elseif ( string.find(txt, NUN_CHEST) ) then
return 5;
elseif ( string.find(txt, NUN_WAIST) ) then
return 6;
elseif ( string.find(txt, NUN_LEGS) ) then
return 7;
elseif ( string.find(txt, NUN_FEET) ) then
return 8;
elseif ( string.find(txt, NUN_WRIST) ) then
return 9;
elseif ( string.find(txt, NUN_HANDS) ) then
return 10;
elseif ( string.find(txt, NUN_FINGER) ) then
NuN_Fingers = NuN_Fingers + 1;
return 11 + NuN_Fingers;
elseif ( string.find(txt, NUN_TRINKET) ) then
NuN_Trinkets = NuN_Trinkets + 1;
return 13 + NuN_Trinkets;
elseif ( string.find(txt, NUN_BACK) ) then
return 15;
elseif ( string.find(txt, NUN_HAND) ) then
NuN_Hand = NuN_Hand + 1;
return 16 + NuN_Hand;
elseif ( string.find(txt, NUN_HAND2) ) then
return 16;
elseif ( string.find(txt, NUN_GUN) ) or ( string.find(txt, NUN_RANGED) ) or ( string.find(txt, NUN_BOW_U) ) or ( string.find(txt, NUN_BOW_L) ) or ( string.find(txt, NUN_WAND) or ( string.find(txt, NUN_THROWN) ) ) then
return 18;
elseif ( string.find(txt, NUN_TABARD) ) then
return 19;
else
return nil;
end
end
function NuN_Delete()
if ( NuNData[pKey][c_name] ) then
NuNData[pKey][c_name] = nil;
end
for n = 1, uBttns, 1 do
nameHdNbr = c_name..pHead..n;
nameDtNbr = c_name..pDetl..n;
if ( NuNData[pKey][nameHdNbr] ) then
NuNData[pKey][nameHdNbr] = nil;
end
if ( NuNData[pKey][nameDtNbr] ) then
NuNData[pKey][nameDtNbr] = nil;
end
end
if ( NuN_CTTCheckBox:GetChecked() ) then
NuN_ClearPinnedTT();
end
NuN_HideFrame();
if ( ( NuNSearchFrame:IsVisible() ) and ( not string.find(NuNSearchTitleText:GetText(), NUN_QUESTS_TEXT) ) ) then
deletedE = true;
NuNSearch_Search();
end
if ( FriendsListFrame:IsVisible() ) then
NuNNew_FriendsList_Update();
elseif ( IgnoreListFrame:IsVisible() ) then
NuNNew_IgnoreList_Update();
elseif ( GuildPlayerStatusFrame:IsVisible() ) then
NuNNew_GuildStatus_Update();
elseif ( GuildStatusFrame:IsVisible() ) then
NuNNew_GuildStatus_Update();
elseif ( WhoFrame:IsVisible() ) then
NuNNew_WhoList_Update();
end
end
function NuNGNote_Delete()
local c_note = NuNGNoteTitleButtonText:GetText();
if ( NuNGNoteFrame.fromQuest ) then
NuNData[pKey].QuestHistory[pName][c_note] = nil;
HideUIPanel(NuNGNoteFrame);
if ( NuNSearchFrame:IsVisible() ) then
deletedE = true;
NuN_FetchQuestHistory();
end
else
if ( string.find(c_note, "|Hitem:") ) then
NuN_DeleteItem(c_note);
end
if ( NuNData[pKey][Notes][c_note] ) then
NuNData[pKey][Notes][c_note] = nil;
elseif ( NuNData[Notes][c_note] ) then
NuNData[Notes][c_note] = nil;
end
if ( NuN_GTTCheckBox:GetChecked() ) then
NuN_ClearPinnedTT();
end
HideUIPanel(NuNGNoteFrame);
if ( NuNSearchFrame:IsVisible() ) then
deletedE = true;
NuNSearch_Search();
end
if ( ( QuestLogFrame:IsVisible() ) and ( not NuNGNoteFrame.fromQuest ) ) then
NuNNew_QuestLog_Update();
end
NuN_UpdateMapNotesIndex(c_note);
end
end
function NuNOptions_ResetDefaults()
NuNSettings[pKey] = {};
NuNSettings[pKey].autoG = nil;
NuNSettings[pKey].autoA = nil;
NuNSettings[pKey].autoD = nil;
NuNSettings[pKey].toolTips = "1";
NuNSettings[pKey].pScale = 1.00;
NuNSettings[pKey].tScale = 1.00;
NuNSettings[pKey].mScale = 1.00;
NuN_PinnedTooltip:SetScale(1);
NuN_Tooltip:SetScale(1);
WorldMapTooltip:SetScale(1);
NuN_MapTooltip:SetScale(1);
NuNPopup:SetScale(1);
NuNSettings[pKey].dLevel = "1";
NuNSettings[pKey].autoQ = nil;
NuNSettings[pKey].autoN = nil;
NuNSettings[pKey].autoP = nil;
NuNSettings[pKey].minOver = "1";
NuNSettings[pKey].ttLen = NUN_TT_MAX;
NuNSettings[pKey].ttLLen = NUN_TT_LEN;
NuNSettings[pKey].hideMicro = nil;
HideUIPanel(NuNOptionsFrame);
NuNFrame:SetUserPlaced(0);
NuNFrame:ClearAllPoints();
NuNFrame:SetPoint("CENTER", UIParent, "CENTER", 220, 15);
NuNGNoteFrame:SetUserPlaced(0);
NuNGNoteFrame:ClearAllPoints();
NuNGNoteFrame:SetPoint("CENTER", UIParent, "CENTER", 250, -15);
NuNSearchFrame:SetUserPlaced(0);
NuNSearchFrame:ClearAllPoints();
NuNSearchFrame:SetPoint("TOPLEFT", UIParent, "TOPLEFT", 60, -144);
if ( NuNMicroFrame:IsVisible() ) then
HideUIPanel(NuNMicroFrame);
end
NuNMicroFrame:SetUserPlaced(0);
NuNMicroFrame:ClearAllPoints();
NuNMicroFrame:SetPoint("TOP", UIParent, "TOP", 0, -30);
ShowUIPanel(NuNMicroFrame);
NuN_Options();
end
function NuNOptions_Import()
local x;
local index;
local value;
local isInGuild = false;
local lGuild = GetGuildInfo("player");
if ( lGuild ~= nil ) then
isInGuild = true;
end
NuN_importing = true;
for index, value in NuNData[pKey] do
if ( ( NuNData[pKey][index].faction ) and ( index == pName ) ) then
NuNData[pKey][index].type = NUN_SELF_C;
elseif ( ( NuNData[pKey][index].faction == pFaction ) and ( index ~= pName ) ) then
if ( NuNData[pKey][index].ignoreLst ) then
if ( not NuN_Is_Ignored(index) ) then
if ( NuN_NotInfiniteIgored(index) ) then
if ( AddIgnore(index) ) then
x = getn(NuNData[pKey][index].ignoreLst) + 1;
NuNData[pKey][index].ignoreLst[x] = pName;
end
end
end
elseif ( ( isInGuild ) and ( NuNData[pKey][index].guild == lGuild ) and ( not NuNSettings[pKey].autoG ) ) then
-- Forget this entry as they are guild mates with current player and settings say not to add as friend
elseif ( NuNData[pKey][index].friendLst ) then
if ( not NuN_Is_Friendly(index) ) then
AddFriend(index);
if ( not NuNData[pKey][index].friendLst ) then
NuNData[pKey][index].friendLst = {};
end
if ( not NuNGet_TableID(NuNData[pKey][index].friendLst, pName) ) then
x = getn( NuNData[pKey][index].friendLst) + 1;
NuNData[pKey][index].friendLst[x] = pName;
end
end
end
end
end
NuN_importing = false;
end
function NuNOptions_Export()
local iName;
for i = 1, GetNumFriends(), 1 do
iName = GetFriendInfo(i);
if ( not NuNData[pKey][iName] ) then
NuNData[pKey][iName] = {};
NuNData[pKey][iName].type = NUN_AUTO_C;
NuNData[pKey][iName].faction = pFaction;
NuNData[pKey][iName][txtTxt] = NUN_AUTO_FRIEND..NuN_GetDateStamp();
NuNData[pKey][iName].friendLst = {};
NuNData[pKey][iName].friendLst[1] = pName;
end
end
for i = 1, GetNumIgnores(), 1 do
iName = GetIgnoreName(i);
if ( not NuNData[pKey][iName] ) then
NuNData[pKey][iName] = {};
NuNData[pKey][iName].type = NUN_AUTO_C;
NuNData[pKey][iName].faction = pFaction;
NuNData[pKey][iName][txtTxt] = NUN_AUTO_IGNORE..NuN_GetDateStamp();
NuNData[pKey][iName].ignoreLst = {};
NuNData[pKey][iName].ignoreLst[1] = pName;
end
end
end
function NuNOptions_Search()
local lDisplay = searchFor[ddSearch].Display;
local lCommand = searchFor[ddSearch].Command;
ddClassSearch = nil;
ddProfSearch = nil;
ddText = nil;
lastBttnIndex = 0;
lastBttn = nil;
lastBttnDetl = nil;
NuN_Filtered = nil;
foundNuN = {};
NuNSearchFrame:SetScale(NuNSettings[pKey].pScale);
ShowUIPanel(NuNSearchFrame);
HideUIPanel(NuNOptionsFrame);
NuNSearchFrame.searchType = lDisplay;
NuNSearchTitleText:SetText(lDisplay);
NuNSearchFrameSearchButton:Enable();
if ( ( lCommand == "All" ) or ( string.find(lCommand, "Notes") ) ) then
NuNSearchClassDropDown:Hide();
NuNSearchProfDropDown:Hide();
NuNSearchTextBox:Hide();
NuNSearch_Search();
elseif ( lCommand == "Class" ) then
UIDropDownMenu_ClearAll(NuNSearchClassDropDown);
NuNSearchClassDropDown:Show();
NuNSearchProfDropDown:Hide();
NuNSearchTextBox:Hide();
NuNSearch_Update();
elseif ( lCommand == "Profession" ) then
NuNSearchClassDropDown:Hide();
UIDropDownMenu_ClearAll(NuNSearchProfDropDown);
NuNSearchProfDropDown:Show();
NuNSearchTextBox:Hide();
NuNSearch_Update();
elseif ( lCommand == "Quest History" ) then
NuNSearchFrameSearchButton:Disable();
NuNSearchClassDropDown:Hide();
NuNSearchProfDropDown:Hide();
NuNSearchTextBox:Hide();
NuNSearchTitleText:SetText(NUN_QUESTS_TEXT.." : "..pName);
NuN_FetchQuestHistory();
else
NuNSearchClassDropDown:Hide();
NuNSearchProfDropDown:Hide();
-- NuNSearchTextBox:SetText("");
NuNSearchTextBox:Show();
NuNSearchTextBox:SetFocus();
-- NuNSearch_Update();
NuNSearch_Search();
end
end
function NuNSearch_Search()
local index;
local value;
local tstTxt;
local srchText;
local countH = 0;
local countA = 0;
local countN = 0;
local classType;
local searchType = searchFor[ddSearch].Command;
local subType = "";
local noteType = 0;
local results = 0;
if ( searchType == "Class" ) then
classType = AllClasses[ddClassSearch];
end
if ( string.find(searchType, "Notes:") ) then
subType = string.sub(searchType, 7);
searchType = string.sub(searchType, 1, 5);
end
foundNuN = {};
foundHNuN = {};
foundANuN = {};
foundNNuN = {};
for index, value in NuNData[pKey] do
if ( searchType == "All" ) then
if ( NuNData[pKey][index].faction == "Horde" ) then
countH = countH + 1;
foundHNuN[countH] = index;
elseif ( NuNData[pKey][index].faction == "Alliance" ) then
countA = countA + 1;
foundANuN[countA] = index;
end
elseif ( searchType == "Class" ) then
if ( NuNData[pKey][index].faction == "Horde" ) then
if ( HClasses[NuNData[pKey][index].cls] == classType ) then
countH = countH + 1;
foundHNuN[countH] = index;
end
elseif ( NuNData[pKey][index].faction == "Alliance" ) then
if ( AClasses[NuNData[pKey][index].cls] == classType ) then
countA = countA + 1;
foundANuN[countA] = index;
end
end
elseif ( searchType == "Profession" ) then
if ( NuNData[pKey][index].faction == "Horde" ) then
if ( ( NuNData[pKey][index].prof1 == ddProfSearch ) or ( NuNData[pKey][index].prof2 == ddProfSearch ) ) then
countH = countH + 1;
foundHNuN[countH] = index;
end
elseif ( NuNData[pKey][index].faction == "Alliance" ) then
if ( ( NuNData[pKey][index].prof1 == ddProfSearch ) or ( NuNData[pKey][index].prof2 == ddProfSearch ) ) then
countA = countA + 1;
foundANuN[countA] = index;
end
end
elseif ( searchType == "Text" ) then
tstTxt = NuNSearchTextBox:GetText();
if ( NuNData[pKey][index].txt ) then
srchText = NuN_GetCText(index);
if ( srchText == nil ) then
srchText = "";
end
if ( ( string.find(srchText, tstTxt) ) or ( string.find(NuNData[pKey][index].txt, tstTxt) ) or ( string.find(index, tstTxt) ) ) then
local tName = index;
if ( not NuNData[pKey][index].faction ) then
tName = nil;
local pos = string.find(index, pDetl);
if ( pos == nil ) then
pos = string.find(index, pHead);
if ( pos ~= nil ) then
tName = string.sub(index, 1, (pos - 1));
end
else
tName = string.sub(index, 1, (pos - 1));
end
end
if ( tName ~= nil ) then
if ( NuNData[pKey][tName].faction == "Horde" ) then
if ( NuNGet_TableID(foundHNuN, tName) == nil ) then
countH = countH + 1;
foundHNuN[countH] = tName;
end
else
if ( NuNGet_TableID(foundANuN, tName) == nil ) then
countA = countA + 1;
foundANuN[countA] = tName;
end
end
end
end
end
end
end
for index, value in NuNData[pKey][Notes] do
if ( ( NuNData[pKey][Notes][index] ) and ( NuNData[pKey][Notes][index].type ) ) then
noteType = NuNData[pKey][Notes][index].type;
else
noteType = 1;
end
if ( ( searchType == "All" ) or ( searchType == "Notes" ) ) then
if ( ( subType == "" ) or ( ( subType == "Generic" ) and ( noteType == 1 ) ) or ( ( subType == "Items" ) and ( noteType == 2 ) ) or ( ( subType == "Logs" ) and ( noteType == 3 ) ) or ( ( subType == "NPCs" ) and ( noteType == 4 ) ) or ( ( subType == "Quests" ) and ( noteType == 5 ) ) ) then
countN = countN + 1;
foundNNuN[countN] = index;
end
elseif ( searchType == "Text" ) then
tstTxt = NuNSearchTextBox:GetText();
srchText = NuN_GetGText(index);
if ( srchText == nil ) then
srchText = "";
end
if ( ( string.find(srchText, tstTxt)) or ( string.find(index, tstTxt ) ) ) then
countN = countN + 1;
foundNNuN[countN] = index;
end
end
end
for index, value in NuNData[Notes] do
if ( ( NuNData[Notes][index] ) and ( NuNData[Notes][index].type ) ) then
noteType = NuNData[Notes][index].type;
else
noteType = 1;
end
if ( ( searchType == "All" ) or ( searchType == "Notes" ) ) then
if ( ( subType == "" ) or ( ( subType == "Generic" ) and ( noteType == 1 ) ) or ( ( subType == "Items" ) and ( noteType == 2 ) ) or ( ( subType == "Logs" ) and ( noteType == 3 ) ) or ( ( subType == "NPCs" ) and ( noteType == 4 ) ) or ( ( subType == "Quests" ) and ( noteType == 5 ) ) ) then
countN = countN + 1;
foundNNuN[countN] = index;
end
elseif ( searchType == "Text" ) then
tstTxt = NuNSearchTextBox:GetText();
srchText = NuN_GetGText(index);
if ( srchText == nil ) then
srchText = "";
end
if ( ( string.find(srchText, tstTxt)) or ( string.find(index, tstTxt ) ) ) then
countN = countN + 1;
foundNNuN[countN] = index;
end
end
end
table.sort(foundANuN);
table.sort(foundHNuN);
table.sort(foundNNuN);
NuN_DefaultSort();
if ( ( searchType ~= "Class" ) and ( searchType ~= "Profession" ) ) then
NuNSearchTextBox:Show();
ddSearch = NuNGet_CommandID(searchFor, "Text");
if ( NuN_Filtered ) then
local tmpNuN = {};
local c = 0;
for i=1, getn(foundNuN), 1 do
if ( NuNGet_TableID(NuN_Filtered, foundNuN[i]) ) then
c = c + 1;
tmpNuN[c] = foundNuN[i];
end
end
foundNuN = tmpNuN;
else
NuN_Filtered = foundNuN;
end
end
results = getn(foundNuN);
NuNSearchTitleText:SetText(NuNSearchFrame.searchType.." ("..results..")");
NuNSearch_Update();
if ( ( deletedE ) and ( visibles > 0 ) and ( lastBttn ~= nil ) ) then
deletedE = false;
if ( lastBttnIndex > visibles ) then
NuNSearch_HighlightRefresh(lastVisible);
NuNSearchNote_OnClick(lastVisible);
else
NuNSearch_HighlightRefresh(lastBttn);
NuNSearchNote_OnClick(lastBttn);
end
else
NuNSearch_HighlightRefresh(nil);
end
end
function NuN_DefaultSort()
if ( horde ) then
NuN_copyT(foundNuN, foundHNuN, NUN_HORD_C);
NuN_copyT(foundNuN, foundANuN, NUN_ALLI_C);
NuN_copyT(foundNuN, foundNNuN, NUN_NOTE_C);
else
NuN_copyT(foundNuN, foundANuN, NUN_ALLI_C);
NuN_copyT(foundNuN, foundHNuN, NUN_HORD_C);
NuN_copyT(foundNuN, foundNNuN, NUN_NOTE_C);
end
end
function NuN_copyT(t1, t2, c_prefix)
local i1 = getn(t1);
for i2=1, getn(t2), 1 do
i1 = i1 + 1;
t1[i1] = c_prefix..t2[i2];
end
end
function NuNSearch_Back()
if ( NuNFrame:IsVisible() ) then
NuN_HideFrame();
end
if ( NuNGNoteFrame:IsVisible() ) then
HideUIPanel(NuNGNoteFrame);
end
HideUIPanel(NuNSearchFrame);
NuNOptionsFrame:SetScale(NuNSettings[pKey].pScale);
NuN_Options();
end
function NuNSearch_Update()
local theNoteIndex;
local theOffsetNoteIndex;
local theNote;
local theNoteHFlag;
local theNoteAFlag;
local theNoteNFlag;
local numNuNFound = getn(foundNuN);
NuN_CheckQuestList();
visibles = 0;
FauxScrollFrame_Update(NuNSearchListScrollFrame, numNuNFound, NUN_SHOWN, NUN_NOTE_HEIGHT);
for theNoteIndex=1, NUN_SHOWN, 1 do
theOffsetNoteIndex = theNoteIndex + FauxScrollFrame_GetOffset(NuNSearchListScrollFrame);
theNote = getglobal( "NuNSearchNote"..theNoteIndex );
if ( theOffsetNoteIndex > numNuNFound ) then
theNote:Hide();
else
theNote:SetTextColor(1, 0.82, 0, 1);
theNoteHFlag = getglobal( "NuNSearchNote"..theNoteIndex.."FrameHFlag" );
theNoteAFlag = getglobal( "NuNSearchNote"..theNoteIndex.."FrameAFlag" );
theNoteNFlag = getglobal( "NuNSearchNote"..theNoteIndex.."FrameNFlag" );
theNoteLFlag = getglobal( "NuNSearchNote"..theNoteIndex.."FrameLFlag" );
theNoteType = getglobal( "NuNSearchNote"..theNoteIndex.."FrameType" );
theNoteLFlag:Hide();
local typ = string.sub(foundNuN[theOffsetNoteIndex], 1, 1);
local noteName = string.sub(foundNuN[theOffsetNoteIndex], 2);
theNote:SetText( noteName );
if ( typ == NUN_HORD_C ) then
theNoteAFlag:Hide();
theNoteNFlag:Hide();
theNoteHFlag:Show();
elseif ( typ == NUN_ALLI_C ) then
theNoteHFlag:Hide();
theNoteNFlag:Hide();
theNoteAFlag:Show();
elseif ( typ == NUN_QUEST_C ) then
theNoteHFlag:Hide();
theNoteAFlag:Hide();
if ( ( NuNData[Notes][noteName] ) or ( NuNData[pKey][Notes][noteName] ) ) then
theNoteNFlag:Show();
else
theNoteNFlag:Hide();
end
else
theNoteHFlag:Hide();
theNoteAFlag:Hide();
theNoteNFlag:Show();
end
theNote.type = typ;
if ( typ == NUN_HORD_C ) or ( typ == NUN_ALLI_C ) then
if ( NuNData[pKey][noteName].type ) then
typ = NuNData[pKey][noteName].type;
if ( typ == NUN_AUTO_C ) then
theNoteType:SetText(NUN_AUTO);
elseif ( noteName == pName ) then
theNoteType:SetText(NUN_PLAYER);
elseif ( typ == NUN_SELF_C ) then
theNoteType:SetText(NUN_SELF);
elseif ( typ == NUN_MANU_C ) then
theNoteType:SetText(NUN_MANU);
elseif ( typ == NUN_PARTY_C ) then
theNoteType:SetText(NUN_PARTY);
else
theNoteType:SetText(" ");
end
else
theNoteType:SetText(" ");
end
elseif ( typ == NUN_QUEST_C ) then
theNoteLFlag:Hide();
if ( ( not NuNQuestLog[noteName] ) and ( ( NuNData[pKey].QuestHistory[pName][noteName].handedIn ) or ( NuNData[pKey].QuestHistory[pName][noteName].complete ) ) ) then
theNoteLFlag:Show();
elseif ( ( NuNData[pKey].QuestHistory[pName][noteName] ) and ( NuNData[pKey].QuestHistory[pName][noteName].abandoned ) ) then
theNote:SetTextColor(0.9, 0, 0, 0.9);
elseif ( NuNQuestLog[noteName] ) then
theNote:SetTextColor(0, 0.9, 0, 0.9);
end
theNoteType:SetText(NuNData[pKey].QuestHistory[pName][noteName].pLevel);
else
if ( ( NuNData[pKey][Notes][noteName] ) and ( NuNData[pKey][Notes][noteName].type ) ) then
typ = NuNData[pKey][Notes][noteName].type;
elseif ( NuNData[Notes][noteName] ) then
theNoteLFlag:Show();
if ( NuNData[Notes][noteName].type ) then
typ = NuNData[Notes][noteName].type;
end
else
typ = 1;
end
theNoteType:SetText(noteTypes[typ].Display);
if ( noteTypes[typ].Command == "QST" ) then
if ( NuNQuestLog[noteName] ) then
theNote:SetTextColor(0, 0.9, 0, 0.9);
elseif ( ( NuNData[pKey].QuestHistory[pName][noteName] ) and ( NuNData[pKey].QuestHistory[pName][noteName].abandoned ) ) then
theNote:SetTextColor(0.9, 0, 0, 0.9);
end
end
end
theNote:Show();
visibles = visibles + 1;
lastVisible = theNote;
if ( theOffsetNoteIndex == lastBttnDetl ) then
theNote:LockHighlight();
else
theNote:UnlockHighlight();
end
end
end
end
function NuNSearchNote_OnEnter(bttnNote)
local bttnName = bttnNote:GetName();
local storePinned = NuN_PinnedTooltip.type;
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_LEFT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_RIGHT");
end
ttName = bttnNote:GetText();
NuN_Tooltip:ClearLines();
if ( bttnNote.type == "N" ) then
NuN_PinnedTooltip.type = "General";
elseif ( bttnNote.type == "A" ) or ( bttnNote.type == "H" ) then
NuN_PinnedTooltip.type = "Contact";
elseif ( bttnNote.type == NUN_QUEST_C ) then
NuN_PinnedTooltip.type = "QuestHistory";
end
NuN_BuildTT(NuN_Tooltip);
NuN_PinnedTooltip.type = storePinned;
NuN_Fade = "False";
NuN_Tooltip:Show();
end
function NuNSearchNote_OnClick(bttnNote)
local noteName = bttnNote:GetText();
local lclNote;
local lclNoteHFlag;
local lclNoteAFlag;
local lclNoteNFlag;
local lastBttnDetlN;
local nType;
if ( IsShiftKeyDown() ) then
if ( ChatFrameEditBox:IsVisible() ) then
ChatFrameEditBox:Insert(noteName);
elseif ( NuNGNoteFrame:IsVisible() ) then
local cText = NuNGNoteTextScroll:GetText().."\n"..noteName;
NuNGNoteTextScroll:SetText(cText);
elseif ( NuNFrame:IsVisible() ) then
local cText = NuNText:GetText().."\n"..noteName;
NuNText:SetText(cText);
end
else
lastBttn = bttnNote;
lastBttnIndex = bttnNote:GetID();
lastBttnDetlN = bttnNote.type..noteName;
lastBttnDetl = NuNGet_TableID(foundNuN, lastBttnDetlN);
NuNSearch_HighlightRefresh(bttnNote);
if ( ( bttnNote.type == NUN_HORD_C ) or ( bttnNote.type == NUN_ALLI_C ) ) then
c_name = noteName;
NuN_ShowSavedNote( c_name );
else
if ( bttnNote.type == NUN_QUEST_C ) then
NuNGNoteFrame.fromQuest = "1";
c_type = NuNGet_CommandID(noteTypes, "QST");
else
NuNGNoteFrame.fromQuest = nil;
end
c_note = noteName;
if ( ( NuNData[Notes][c_note] ) or ( NuNData[pKey][Notes][c_note] ) ) then
NuN_ShowSavedGNote();
else
NuN_ShowTitledGNote("");
end
end
end
end
function NuNSearch_HighlightRefresh(tstNote)
local theNote;
for i=1, NUN_SHOWN, 1 do
theNote = getglobal("NuNSearchNote"..i);
if ( ( theNote == tstNote ) and ( theNote:IsVisible() ) ) then
theNote:LockHighlight();
else
theNote:UnlockHighlight();
end
end
end
function NuN_DateStamp()
NuNText:SetText(NuNText:GetText().."\n"..NuN_GetDateStamp());
end
function NuNGNote_DateStamp()
NuNGNoteTextScroll:SetText(NuNGNoteTextScroll:GetText().."\n"..NuN_GetDateStamp());
end
function NuN_GetDateStamp()
local dateStamp = date("%A, %d %B %Y %H:%M:%S");
dateStamp = NuN_LocaliseDateStamp(dateStamp);
return dateStamp;
end
function NuN_Loc()
NuNText:SetText(NuNText:GetText().."\n"..NuN_GetLoc());
end
function NuNGNote_Loc()
NuNGNoteTextScroll:SetText(NuNGNoteTextScroll:GetText().."\n"..NuN_GetLoc());
end
function NuN_GetLoc()
local locData = pName.."'s "..NUN_LOC.." : ";
local myCID, myC, mySubZ, myZID, myZ, px, py, coords;
local loc = false;
myCID = GetCurrentMapContinent();
if ( ( myCID ~= nil) and ( myCID > 0 ) ) then
myC = c_continents[myCID].name;
end
if ( myC ~= nil ) then
locData = locData..myC..", ";
loc = true;
end
myZ = GetZoneText();
if ( ( myZ == nil ) or ( myZ == "" ) ) then
myZID = GetCurrentMapZone();
if ( ( myZID ~= nil ) and ( myCID ~= nil ) and ( myCID > 0 ) ) then
myZ = c_continents[myCID].zones[myZID];
end
end
if ( ( myZ ~= nil ) and ( myZ ~= "" ) ) then
locData = locData..myZ..", ";
end
mySubZ = GetSubZoneText();
if ( ( mySubZ == nil ) or ( mySubZ == "" ) ) then
mySubZ = GetMinimapZoneText();
end
if ( mySubZ ~= nil ) then
locData = locData..mySubZ..", ";
loc = true;
end
px, py = GetPlayerMapPosition("player");
if ( ( px ~= nil ) and ( py ~= nil ) ) then
coords = format("(%d, %d)", px * 100.0, py * 100.0);
locData = locData..coords;
loc = true;
end
if ( loc == true ) then
return locData;
else
return "";
end
end
function NuN_AutoNote()
if ( NuNSettings[pKey].autoN ) then
local lName;
local lRace;
local lClass;
local lSex;
local lPvPRank;
local lPvPRankID;
local lgName;
local lgRank;
local lgRankIndex;
local bttnKey;
if ( pFaction ~= nil ) then
NuNData[pKey][pName] = {};
NuNData[pKey][pName].type = NUN_SELF_C;
NuNData[pKey][pName].faction = pFaction;
NuNData[pKey][pName][txtTxt] = "";
lRace = UnitRace("player");
if ( lRace ~= nil ) then
ddRace = NuNGet_TableID(Races, lRace);
NuNData[pKey][pName].race = ddRace;
end
lClass = UnitClass("player");
if ( lClass ~= nil ) then
ddClass = NuNGet_TableID(Classes, lClass);
NuNData[pKey][pName].cls = ddClass;
end
lSex = UnitSex("player");
if ( lSex ~= nil ) then
NuNData[pKey][pName].sex = lSex + 1;
end
lPvPRankID = UnitPVPRank("player");
if ( lPvPRankID ~= nil ) and ( lPvPRankID > 0 ) then
lPvPRank = GetPVPRankInfo(lPvPRankID);
ddCRank = NuNGet_TableID(Ranks, lPvPRank);
NuNData[pKey][pName].crank = ddCRank;
end
lgName, lgRank, lgRankIndex = GetGuildInfo("player");
if ( lgName ~= "" ) and ( lgName ~= nil ) then
bttnKey = pName..pDetl.."1";
NuNData[pKey][bttnKey] = {};
NuNData[pKey][bttnKey].txt = lgName;
bttnKey = pName..pDetl.."2";
NuNData[pKey][bttnKey] = {};
if ( lgRankIndex == 0 ) then
NuNData[pKey][bttnKey].txt = ( "GM : "..lgRank );
else
NuNData[pKey][bttnKey].txt = ( lgRankIndex.." : "..lgRank );
end
end
end
end
end
function NuN_ClrDD()
if ( lastDD == "Race" ) then
UIDropDownMenu_ClearAll(NuNRaceDropDown);
if ( ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].race ) ) then
ddRace = -1;
else
ddRace = nil;
end
elseif ( lastDD == "Class" ) then
UIDropDownMenu_ClearAll(NuNClassDropDown);
if ( ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].cls ) ) then
ddClass = -1;
else
ddClass = nil;
end
elseif ( lastDD == "Sex" ) then
UIDropDownMenu_ClearAll(NuNSexDropDown);
if ( ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].sex ) ) then
ddSex = -1;
else
ddSex = nil;
end
elseif ( lastDD == "Prof1" ) then
UIDropDownMenu_ClearAll(NuNProf1DropDown);
if ( ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].prof1 ) ) then
ddProf1 = -1;
else
ddProf1 = nil;
end
elseif ( lastDD == "Prof2" ) then
UIDropDownMenu_ClearAll(NuNProf2DropDown);
if ( ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].prof2 ) ) then
ddProf2 = -1;
else
ddProf2 = nil;
end
elseif ( lastDD == "CRank" ) then
UIDropDownMenu_ClearAll(NuNCRankDropDown);
if ( ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].crank ) ) then
ddCRank = -1;
else
ddCRank = nil;
end
elseif ( lastDD == "HRank" ) then
UIDropDownMenu_ClearAll(NuNHRankDropDown);
if ( ( NuNData[pKey][c_name] ) and ( NuNData[pKey][c_name].hrank ) ) then
ddHRank = -1;
else
ddHRank = nil;
end
end
lastDD = nil;
NuNButtonClrDD:Disable();
end
function NuN_GTypeDependant_Setup()
UIDropDownMenu_SetSelectedID(NuNGTypeDropDown, c_type);
UIDropDownMenu_SetText(noteTypes[c_type].Display, NuNGTypeDropDown);
if ( noteTypes[c_type].Command == "NPC" ) then
NuNNPCTargetButton:Show();
else
NuNNPCTargetButton:Hide();
end
end
function NuN_ShowSavedGNote()
if ( ( NuNGNoteFrame:IsVisible() ) and ( prevNote == c_note ) ) then
NuNGNoteFrame:Hide();
else
if ( ( NuNData[pKey][Notes][c_note] ) and ( NuNData[pKey][Notes][c_note].type ) ) then
c_type = NuNData[pKey][Notes][c_note].type;
NuNGNoteFrame.type = c_type;
NuN_GTypeDependant_Setup();
elseif ( ( NuNData[Notes][c_note] ) and ( NuNData[Notes][c_note].type ) ) then
c_type = NuNData[Notes][c_note].type;
NuNGNoteFrame.type = c_type;
NuN_GTypeDependant_Setup();
else
c_type = NuNGet_CommandID(noteTypes, " ");
NuNGNoteFrame.type = c_type;
NuN_GTypeDependant_Setup();
end
if ( NuNData[pKey][Notes][c_note] ) then
NuN_GLevel_CheckBox:SetChecked(0);
elseif ( NuNData[Notes][c_note] ) then
NuN_GLevel_CheckBox:SetChecked(1);
end
NuN_GNote_OriTitle = c_note;
prevNote = c_note;
if ( NuNOptionsFrame:IsVisible() ) then
HideUIPanel(NuNOptionsFrame);
end
if ( NuNcDeleteFrame:IsVisible() ) then
HideUIPanel(NuNcDeleteFrame);
end
NuNGNoteFrame:SetScale(NuNSettings[pKey].pScale);
ShowUIPanel(NuNGNoteFrame);
NuNGNoteTextBox:Hide();
g_text = NuN_GetGText(c_note);
if ( g_text == "" ) then
g_text = "\n";
end
NuNGNoteTextScroll:SetText(g_text);
NuNGNoteTitleButtonText:SetText(c_note);
NuNGNoteTitleButton:Show();
if ( not NuNSettings[pKey].bHave ) then
NuNGNoteTextScroll:SetFocus();
end
if ( NuNGNoteFrame.fromQuest ) then
NuNGNoteHeader:SetText(NUN_QUEST_NOTE);
NuNGNoteButtonDelete:Enable();
NuNGNoteTitleButton:Disable();
NuNGNoteButtonSaveNote:Disable();
else
NuNGNoteHeader:SetText(NUN_SAVED_NOTE);
NuNGNoteButtonDelete:Disable();
NuNGNoteTitleButton:Enable();
NuNGNoteButtonSaveNote:Enable();
end
NuNGNoteButtonDateStamp:Enable();
NuNGNoteButtonLoc:Enable();
NuNGNoteButtonDelete:Enable();
if ( ( MapNotes_OnLoad ) or ( MetaMapNotes_OnLoad ) ) then
NuNMapNoteButton:Enable();
end
NuNGOpenChatButton:Enable();
NuNGTTCheckBoxLabel:Show();
NuN_GTTCheckBox:Show();
NuN_GTTCheckBox:SetChecked(0);
if ( NuN_PinnedTooltip.type == "General" ) then
NuN_GTTCheckBox:SetChecked( NuN_CheckPinnedBox(c_note) );
end
end
end
function NuN_ShowTitledGNote(GNoteText)
if ( ( NuNGNoteFrame:IsVisible() ) and ( prevNote == c_note ) ) then
NuNGNoteFrame:Hide();
else
if ( NuNSettings[pKey].dLevel ) then
NuN_GLevel_CheckBox:SetChecked(1);
else
NuN_GLevel_CheckBox:SetChecked(0);
end
prevNote = c_note;
NuNGNoteFrame.type = c_type;
NuN_GTypeDependant_Setup();
NuN_GNote_OriTitle = nil;
if ( NuNOptionsFrame:IsVisible() ) then
HideUIPanel(NuNOptionsFrame);
end
if ( NuNcDeleteFrame:IsVisible() ) then
HideUIPanel(NuNcDeleteFrame);
end
NuNGNoteFrame:SetScale(NuNSettings[pKey].pScale);
ShowUIPanel(NuNGNoteFrame);
NuNGNoteTextScroll:SetText(GNoteText);
NuNGNoteTextBox:Hide();
NuNGNoteTitleButtonText:SetText(c_note);
NuNGNoteTitleButton:Show();
if ( not NuNSettings[pKey].bHave ) then
NuNGNoteTextScroll:SetFocus();
end
NuNGNoteButtonDateStamp:Enable();
NuNGNoteButtonLoc:Enable();
if ( NuNGNoteFrame.fromQuest ) then
NuNGNoteHeader:SetText(NUN_QUEST_NOTE);
NuNGNoteButtonDelete:Enable();
if ( ( MapNotes_OnLoad ) or ( MetaMapNotes_OnLoad ) ) then
NuNMapNoteButton:Enable();
end
NuNGNoteTitleButton:Disable();
NuNGNoteButtonSaveNote:Disable();
else
NuNGNoteHeader:SetText(NUN_NEW_NOTE);
NuNGNoteButtonDelete:Disable();
NuNMapNoteButton:Disable();
NuNGNoteTitleButton:Enable();
NuNGNoteButtonSaveNote:Enable();
end
NuNGOpenChatButton:Disable();
NuNGTTCheckBoxLabel:Hide();
NuN_GTTCheckBox:Hide();
end
end
function NuN_ShowNewGNote()
local tstTxt = NuNGNoteTextBox:GetText();
if ( ( NuNGNoteFrame:IsVisible() ) and ( NuNGNoteTextBox:IsVisible() ) and ( tstTxt == "" ) ) then
NuNGNoteFrame:Hide();
else
if ( IsAltKeyDown() ) then
NuN_LastOpen.type = "General";
NuN_ReOpen();
return;
end
if ( NuNSettings[pKey].dLevel ) then
NuN_GLevel_CheckBox:SetChecked(1);
else
NuN_GLevel_CheckBox:SetChecked(0);
end
c_type = NuNGet_CommandID(noteTypes, " ");
NuNGNoteFrame.type = c_type;
NuNGNoteFrame.fromQuest = nil;
NuN_GTypeDependant_Setup();
NuN_GNote_OriTitle = nil;
if ( NuNOptionsFrame:IsVisible() ) then
HideUIPanel(NuNOptionsFrame);
end
if ( NuNcDeleteFrame:IsVisible() ) then
HideUIPanel(NuNcDeleteFrame);
end
if ( NuNGNoteFrame.fromQuest ) then
NuNGNoteHeader:SetText(NUN_QUEST_NOTE);
else
NuNGNoteHeader:SetText(NUN_NEW_NOTE);
end
NuNGNoteButtonSaveNote:Disable();
NuNGNoteFrame:SetScale(NuNSettings[pKey].pScale);
ShowUIPanel(NuNGNoteFrame);
NuNGNoteTextScroll:SetText("");
NuNGNoteTitleButton:Hide();
NuNGNoteTextBox:SetText("");
NuNGNoteTextBox:Show();
NuNGNoteTextBox:SetFocus();
NuNGNoteButtonDelete:Disable();
NuNMapNoteButton:Disable();
NuNGOpenChatButton:Disable();
NuNGTTCheckBoxLabel:Hide();
NuN_GTTCheckBox:Hide();
end
end
function NuN_OptionsGuildCheckBox_OnClick()
if ( NuNOptionsGuildCheckButton:GetChecked() ) then
NuNSettings[pKey].autoG = "1";
else
NuNSettings[pKey].autoG = nil;
end
end
function NuN_OptionsAddCheckBox_OnClick()
if ( NuNOptionsAddCheckButton:GetChecked() ) then
NuNSettings[pKey].autoA = "1";
NuN_Update_Friends();
NuN_Update_Ignored();
else
NuNSettings[pKey].autoA = nil;
end
end
function NuN_OptionsDeleteCheckBox_OnClick()
if ( NuNOptionsDeleteCheckButton:GetChecked() ) then
NuNSettings[pKey].autoD = "1";
NuN_Update_Friends();
NuN_Update_Ignored();
else
NuNSettings[pKey].autoD = nil;
end
end
function NuN_DefaultLevelCheckBox_OnClick()
if ( NuN_DefaultLevelCheckBox:GetChecked() ) then
NuNSettings[pKey].dLevel = "1";
else
NuNSettings[pKey].dLevel = nil;
end
end
function NuN_HelpTTCheckBox_OnClick()
if ( NuN_HelpTTCheckBox:GetChecked() ) then
NuNSettings[pKey].toolTips = "1";
else
NuNSettings[pKey].toolTips = nil;
end
end
function NuN_AutoQuestCheckBox_OnClick()
if ( NuN_AutoQuestCheckBox:GetChecked() ) then
NuNSettings[pKey].autoQ = "1";
NuN_UpdateQuestNotes("SwitchedOn");
else
NuNSettings[pKey].autoQ = nil;
end
end
function NuN_AutoNoteCheckBox_OnClick()
if ( NuN_AutoNoteCheckBox:GetChecked() ) then
NuNSettings[pKey].autoN = "1";
if ( not NuNData[pKey][pName] ) then
NuN_AutoNote();
end
else
NuNSettings[pKey].autoN = nil;
end
end
function NuN_OnUpdate(arg1)
if ( ( NuNMicroFrame:IsVisible() ) and ( MouseIsOver(NuNMicroFrame) ) ) then
NuNMicroBorder:Show();
else
NuNMicroBorder:Hide();
end
if ( noTipAnchor ) then
NuN_GameTooltip_OnShow();
end
timeSinceLastUpdate = timeSinceLastUpdate + arg1;
if ( ( timeSinceLastUpdate > updateInterval ) and ( not UnitAffectingCombat("player") ) ) then
if ( not NuNData[pKey][pName] ) then
NuN_AutoNote();
end
if ( oneDone == true ) then
oneDone = false;
NuN_AtStartup = "False";
NuN_QuestsUpdating = "False";
if ( InfinateIgnore_Config ) then
NuN_Update_Ignored();
end
else
oneDone = true;
if ( not QuestLogFrame:IsVisible() ) then
NuN_CheckQuestList();
if ( not NuN_IgnoreNextQUpdate ) then
NuN_UpdateQuestNotes("Timed");
end
end
end
timeSinceLastUpdate = 0;
end
end
function NuN_NewContact(unitType)
local Friendly;
if ( ( unitType == "target" ) and ( c_name ~= pName ) ) then
if ( UnitIsFriend("player", "target") ) then
Friendly = true;
else
Friendly = false;
end
else
Friendly = true;
end
if ( ((horde) and (Friendly)) or ((not horde) and (not Friendly)) ) then
c_faction = "Horde";
NuN_HordeSetup();
else
c_faction = "Alliance";
NuN_AllianceSetup();
end
c_route = "Target";
c_race = nil;
c_class = nil;
c_guild = nil;
gRank = nil;
gRankIndex = nil;
gNote = nil;
gOfficerNote = nil;
NuN_ShowNote();
NuN_Target();
if ( c_name == pName ) then
ClearTarget();
end
end
function NuN_CreateContact(contactName, tFaction)
c_name = contactName;
c_route = "Create";
if ( ( tFaction == "-ch" ) or ( tFaction == "Horde" ) ) then
c_faction = "Horde";
NuN_HordeSetup();
else
c_faction = "Alliance";
NuN_AllianceSetup();
end
c_race = nil;
c_class = nil;
c_guild = nil;
gRank = nil;
gRankIndex = nil;
gNote = nil;
gOfficerNote = nil;
NuN_ShowNote();
end
function NuN_HordeSetup()
NuNRaceDropDown = NuNHRaceDropDown;
NuNClassDropDown = NuNHClassDropDown;
NuNCRankDropDown = NuNHCRankDropDown;
NuNHRankDropDown = NuNHHRankDropDown;
NuNARaceDropDown:Hide();
NuNHRaceDropDown:Show();
NuNAClassDropDown:Hide();
NuNHClassDropDown:Show();
NuNACRankDropDown:Hide();
NuNHCRankDropDown:Show();
NuNAHRankDropDown:Hide();
NuNHHRankDropDown:Show();
Classes = HClasses;
Races = HRaces;
Ranks = HRanks;
NuNAFlag:Hide();
NuNHFlag:Show();
end
function NuN_AllianceSetup()
NuNRaceDropDown = NuNARaceDropDown;
NuNClassDropDown = NuNAClassDropDown;
NuNCRankDropDown = NuNACRankDropDown;
NuNHRankDropDown = NuNAHRankDropDown;
NuNHRaceDropDown:Hide();
NuNARaceDropDown:Show();
NuNHClassDropDown:Hide();
NuNAClassDropDown:Show();
NuNHCRankDropDown:Hide();
NuNACRankDropDown:Show();
NuNHHRankDropDown:Hide();
NuNAHRankDropDown:Show();
Classes = AClasses;
Races = ARaces;
Ranks = ARanks;
NuNHFlag:Hide();
NuNAFlag:Show();
end
function NuN_CheckPartyByName(parmN)
local partym;
for groupIndex = 1, NUN_MAX_PARTY_MEMBERS, 1 do
if (GetPartyMember(groupIndex)) then
partym = "party"..groupIndex;
lName = UnitName(partym);
if ( lName == parmN) then
return partym;
end
end
end
return nil;
end
function NuN_CheckRaidByName(parmN)
local raidm;
local lclName;
local numRaid = GetNumRaidMembers();
for raidIndex = 1, numRaid, 1 do
lclName = GetRaidRosterInfo(raidIndex);
if ( lclName == parmN ) then
raidm = "raid"..raidIndex;
return raidm;
end
end
return nil;
end
function NuN_GetCText(gLclName)
local txtIndex;
local catText;
catText = "";
if ( NuNData[pKey][gLclName][txtTxt] ) then
catText = NuNData[pKey][gLclName][txtTxt];
end
for i = 1, NUN_MAX_ADD_TXT, 1 do
txtIndex = txtTxt..i;
if ( NuNData[pKey][gLclName][txtIndex] ) then
catText = catText..NuNData[pKey][gLclName][txtIndex];
end
end
return catText;
end
function NuN_GetGText(gLclNote)
local txtIndex;
local catText;
catText = "";
if ( ( NuNData[pKey][Notes][gLclNote] ) and ( NuNData[pKey][Notes][gLclNote][txtTxt] ) ) then
catText = NuNData[pKey][Notes][gLclNote][txtTxt];
elseif ( ( NuNData[Notes][gLclNote] ) and ( NuNData[Notes][gLclNote][txtTxt] ) ) then
catText = NuNData[Notes][gLclNote][txtTxt];
end
for i = 1, NUN_MAX_ADD_TXT, 1 do
txtIndex = txtTxt..i;
if ( ( NuNData[pKey][Notes][gLclNote] ) and ( NuNData[pKey][Notes][gLclNote][txtIndex] ) ) then
catText = catText..NuNData[pKey][Notes][gLclNote][txtIndex];
elseif ( ( NuNData[Notes][gLclNote] ) and ( NuNData[Notes][gLclNote][txtIndex] ) ) then
catText = catText..NuNData[Notes][gLclNote][txtIndex];
end
end
return catText;
end
function NuN_SetCText(sLclName)
local cLower;
local cUpper;
local txtIndex;
c_text_len = string.len(c_text);
if ( c_text_len < NUN_MAX_TXT_CHR ) then
cUpper = c_text_len;
else
cUpper = NUN_MAX_TXT_CHR;
end
NuNData[pKey][sLclName][txtTxt] = string.sub(c_text, 1, cUpper);
for i = 1, NUN_MAX_ADD_TXT, 1 do
cLower = NUN_MAX_TXT_CHR * i;
txtIndex = txtTxt..i;
if ( c_text_len > cLower ) then
cLower = cLower + 1;
cUpper = NUN_MAX_TXT_CHR * ( i + 1 );
if ( c_text_len < cUpper ) then
cUpper = c_text_len;
end
NuNData[pKey][sLclName][txtIndex] = string.sub(c_text, cLower, cUpper);
else
NuNData[pKey][sLclName][txtIndex] = "";
end
end
end
function NuN_SetGText(saveLvl)
local cLower;
local cUpper;
local txtIndex;
g_text_len = string.len(g_text);
if ( g_text_len < NUN_MAX_TXT_CHR ) then
cUpper = g_text_len;
else
cUpper = NUN_MAX_TXT_CHR;
end
if ( saveLvl == "Realm" ) then
NuNData[pKey][Notes][c_note][txtTxt] = string.sub(g_text, 1, NUN_MAX_TXT_CHR);
for i = 1, NUN_MAX_ADD_TXT, 1 do
cLower = NUN_MAX_TXT_CHR * i;
txtIndex = txtTxt..i;
if ( g_text_len > cLower ) then
cLower = cLower + 1;
cUpper = NUN_MAX_TXT_CHR * ( i + 1 );
if ( g_text_len < cUpper ) then
cUpper = g_text_len;
end
NuNData[pKey][Notes][c_note][txtIndex] = string.sub(g_text, cLower, cUpper);
else
NuNData[pKey][Notes][c_note][txtIndex] = "";
end
end
else
NuNData[Notes][c_note][txtTxt] = string.sub(g_text, 1, NUN_MAX_TXT_CHR);
for i = 1, NUN_MAX_ADD_TXT, 1 do
cLower = NUN_MAX_TXT_CHR * i;
txtIndex = txtTxt..i;
if ( g_text_len > cLower ) then
cLower = cLower + 1;
cUpper = NUN_MAX_TXT_CHR * ( i + 1 );
if ( g_text_len < cUpper ) then
cUpper = g_text_len;
end
NuNData[Notes][c_note][txtIndex] = string.sub(g_text, cLower, cUpper);
else
NuNData[Notes][c_note][txtIndex] = "";
end
end
end
end
function NuN_TextWarning(box, tLabel)
local lenTxt, lenTxtL, oLabel;
lenTxt = box:GetText();
lenTxtL = string.len(lenTxt);
oLabel = getglobal(tLabel);
if ( ( lenTxtL == nil ) or ( lenTxtL == 0 ) ) then
oLabel:SetText("0 / "..NUN_MAX_TXT_LIM);
else
oLabel:SetText(lenTxtL.." / "..NUN_MAX_TXT_LIM);
end
if ( lenTxtL > NUN_MAX_TXT_LIM ) then
StaticPopup_Show("NUN_NOTELIMIT_EXCEEDED");
end
end
function NuN_OptionsButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_MICROOPTIONS_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_MICROOPTIONS_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_BrowseButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_MICROBROWSEA_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_MICROBROWSEA_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_ContactButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_MICROCONTACT_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_MICROCONTACT_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_MICROCONTACT_TOOLTIP_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_GNoteButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_MICROGENNOTE_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_MICROGENNOTE_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_ResetButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_RESETBUTTON_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_RESETBUTTON_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_LocButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_LOCBUTTON_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_LOCBUTTON_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_GNoteTitle_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_GNOTETITLE_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_GNOTETITLE_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_SaveDefCheck_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_SAVEDEF_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_SAVEDEF_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_RestoreDefButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_RESTOREDEF_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_RESTOREDEF_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_RESTOREDEF_TOOLTIP_TXT3, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_RESTOREDEF_TOOLTIP_TXT4, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_TargetButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TARGETBUTTON_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TARGETBUTTON_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TARGETBUTTON_TOOLTIP_TXT3, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TARGETBUTTON_TOOLTIP_TXT4, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_NPCTargetButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_NPCTARGETBUTTON_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_NPCTARGETBUTTON_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_WhoButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_WHOBUTTON_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_WHOBUTTON_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_WHOBUTTON_TOOLTIP_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_UserButtons_OnEnter(owner)
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_USERBUTTON_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_USERBUTTON_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_USERBUTTON_TOOLTIP_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_ClearDD_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_CLEARDD_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_CLEARDD_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_FFButton_OnEnter()
NuN_FFButton_StateLit:Show();
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
NuN_Tooltip:SetOwner(this, "ANCHOR_RIGHT");
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_FFBUTTON_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_FFBUTTON_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuNMapNoteButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_MAPNOTES_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_MAPNOTES_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_MAPNOTES_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_PinnedTT_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_PIN_EDIT_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_PIN_EDIT_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_PIN_EDIT_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_OpenChat_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_OPENCHAT_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_OPENCHAT_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_OPENCHAT_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_GNoteButtonDelete_OnEnter()
if ( ( NuNSettings[pKey].toolTips ) and ( NuNGNoteFrame.fromQuest ) ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_GDELETE_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_GDELETE_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_GDELETE_TXT3, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_GDELETE_TXT4, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_FFButton_OnLeave()
NuN_FFButton_StateLit:Hide();
NuN_Tooltip:Hide();
end
function NuN_TTButton_OnLeave()
NuN_Tooltip:Hide();
end
function NuN_ToggleToolTips()
if ( NuNSettings[pKey].toolTips ) then
NuNSettings[pKey].toolTips = nil;
else
NuNSettings[pKey].toolTips = "1";
end
end
function NuN_NPCInfo()
local NPCInfo = "";
local NPCloc;
local NPCtimed;
local someInfo = false;
local listText = nil;
NPClvl = UnitLevel("target");
NPCcls = UnitClass("target");
NPCclsXtra = UnitClassification("target");
NPCtype = UnitCreatureType("target");
NPCsex = UnitSex("target");
if ( NPClvl ~= nil ) then
if ( NPClvl == -1 ) then
NPCInfo = NUN_LEVEL.." : ?? ";
else
NPCInfo = NUN_LEVEL.." : "..NPClvl.." ";
end
end
if ( NPCcls ~= nil ) then
NPCInfo = NPCInfo..NUN_CLASS.." : "..NPCcls..", ";
end
if ( NPCsex ~= nil ) then
local sex = Sexes[NPCsex + 1];
if ( sex ) then
NPCInfo = NPCInfo..sex..", ";
end
end
if ( NPCtype ~= nil ) then
NPCInfo = NPCInfo..NPCtype.." ";
end
if ( NPCclsXtra ~= "normal" ) then
NPCInfo = NPCInfo..( string.upper(NPCclsXtra) );
end
GameTooltip:SetUnit("target");
NPCprof = GameTooltipTextLeft2:GetText();
if ( ( string.find(NPCprof, NUN_LEVEL) or ( NPCprof == nil ) ) ) then
-- skip
else
NPCInfo = NPCInfo.."\n"..NUN_PROF.." : "..NPCprof.." ";
end
NPCtimed = NuN_GetDateStamp();
NPCloc = NuN_GetLoc();
NPCInfo = NPCInfo.."\n\n"..NPCtimed.."\n"..NPCloc;
if ( MerchantFrame:IsVisible() ) then
listText = NuN_BuildShoppingList();
end
if ( listText ) then
NPCInfo = NPCInfo.."\n\n"..listText;
end
return NPCInfo;
end
function NuN_ShowFriendNote()
local numFriends = GetNumFriends();
if (numFriends ~= nil) and (numFriends > 0) then
if ( FriendsFrame.selectedFriend ) then
FriendsFrame.selectedFriend = GetSelectedFriend();
c_name, discard, c_class, discard, connected = GetFriendInfo(FriendsFrame.selectedFriend);
if ( c_class == "Unknown" ) then
c_class = nil;
end;
c_race = nil;
c_guild = nil;
gRank = nil;
gRankIndex = nil;
gNote = nil;
gOfficerNote = nil;
c_route = "Friend";
if ( horde ) then
NuN_HordeSetup();
else
NuN_AllianceSetup();
end
NuN_ShowNote();
end
end
end
function NuN_ShowIgnoreNote()
local numIgnores = GetNumIgnores();
if (numIgnores ~= nil) and (numIgnores > 0) then
if ( FriendsFrame.selectedIgnore ) then
FriendsFrame.selectedIgnore = GetSelectedIgnore();
c_name = GetIgnoreName(FriendsFrame.selectedIgnore);
c_class = nil;
c_race = nil;
c_guild = nil;
gRank = nil;
gRankIndex = nil;
gNote = nil;
gOfficerNote = nil;
c_route = "Ignore";
if ( horde ) then
NuN_HordeSetup();
else
NuN_AllianceSetup();
end
NuN_ShowNote();
end
end
end
function NuN_ShowGuildNote()
local numGuildMembers = GetNumGuildMembers();
if (numGuildMembers ~= nil) and (numGuildMembers > 0) then
c_class = nil;
c_race = nil;
c_name, gRank, gRankIndex, discard, c_class, discard, discard, gNote, gOfficerNote, discard = GetGuildRosterInfo( GetGuildRosterSelection() );
if ( c_name ~= nil ) then
c_guild = GetGuildInfo("player");
c_route = "Guild";
if ( horde ) then
NuN_HordeSetup();
else
NuN_AllianceSetup();
end
NuN_ShowNote();
end
end
end
function NuN_UpdateNoteButton(nBttn, nBttnID, NuN_rType)
local bName = nBttn:GetName();
local pBttnTxt, discard, qHeader;
local bttnNoteHFlag = getglobal(bName.."FrameHFlag");
local bttnNoteAFlag = getglobal(bName.."FrameAFlag");
local bttnNoteNFlag = getglobal(bName.."FrameNFlag");
local bttnNoteQFlag = getglobal(bName.."FrameQFlag");
if ( NuN_rType == "A" ) then
if ( FriendsListFrame:IsVisible() ) then
NuN_rType = "F";
elseif ( IgnoreListFrame:IsVisible() ) then
NuN_rType = "I";
elseif ( GuildPlayerStatusFrame:IsVisible() ) then
NuN_rType = "G";
elseif ( GuildStatusFrame:IsVisible() ) then
NuN_rType = "GS";
elseif ( WhoFrame:IsVisible() ) then
NuN_rType = "W";
elseif ( QuestFrame:IsVisible() ) then
NuN_rType = NUN_QUEST_C;
end
end
if ( ( FriendsFrame:IsVisible() ) and ( bttnNoteAFlag ) and ( bttnNoteHFlag ) and ( bttnNoteNFlag ) ) then
pBttnTxt = NuN_GetName_FrameButton(nBttnID, NuN_rType);
if ( NuNData[pKey][pBttnTxt] ) then
if ( NuNData[pKey][pBttnTxt].faction == "Horde" ) then
bttnNoteAFlag:Hide();
bttnNoteNFlag:Hide();
bttnNoteHFlag:Show();
else
bttnNoteHFlag:Hide();
bttnNoteNFlag:Hide();
bttnNoteAFlag:Show();
end
else
bttnNoteAFlag:Hide();
bttnNoteHFlag:Hide();
bttnNoteNFlag:Show();
end
elseif ( ( QuestLogFrame:IsVisible() ) and ( bttnNoteQFlag ) and ( bttnNoteNFlag ) ) then
local lOffset = nBttnID + FauxScrollFrame_GetOffset(QuestLogListScrollFrame);
pBttnTxt, discard, discard, qHeader = GetQuestLogTitle(lOffset);
if ( qHeader ) then
nBttn:Hide();
elseif ( pBttnTxt ) then
nBttn:Show();
if ( ( NuNData[pKey][Notes][pBttnTxt] ) or ( NuNData[Notes][pBttnTxt] ) ) then
bttnNoteNFlag:Hide();
bttnNoteQFlag:Show();
else
bttnNoteQFlag:Hide();
bttnNoteNFlag:Show();
end
end
end
end
function NuN_NoteButton_OnInteract(nBttnID, uAction)
local pBttnTxt;
local lOffset;
local qLevel, qTag, qHeader, qCollapsed, qComplete;
local qText = "";
if ( FriendsListFrame:IsVisible() ) then
pBttnTxt = NuN_GetName_FrameButton(nBttnID, "F");
if ( uAction == "Click" ) then
lOffset = FauxScrollFrame_GetOffset(FriendsFrameFriendsScrollFrame);
SetSelectedFriend( (tonumber(nBttnID)+lOffset) );
NuNOri_FriendsList_Update();
if ( NuNData[pKey][pBttnTxt] ) then
NuN_ShowSavedNote(pBttnTxt);
else
NuN_ShowFriendNote();
end
elseif ( uAction == "MouseOver" ) then
ttName = pBttnTxt;
NuN_StaticTT();
end
elseif ( IgnoreListFrame:IsVisible() ) then
pBttnTxt = NuN_GetName_FrameButton(nBttnID, "I");
if ( uAction == "Click" ) then
lOffset = FauxScrollFrame_GetOffset(FriendsFrameIgnoreScrollFrame);
SetSelectedIgnore( (tonumber(nBttnID)+lOffset) );
NuNOri_IgnoreList_Update();
if ( NuNData[pKey][pBttnTxt] ) then
NuN_ShowSavedNote(pBttnTxt);
else
NuN_ShowIgnoreNote();
end
elseif ( uAction == "MouseOver" ) then
ttName = pBttnTxt;
NuN_StaticTT();
end
elseif ( GuildPlayerStatusFrame:IsVisible() ) then
pBttnTxt = NuN_GetName_FrameButton(nBttnID, "G");
if ( uAction == "Click" ) then
GuildFrame.selectedGuildMember = getglobal("GuildFrameButton"..nBttnID).guildIndex;
GuildFrame.selectedName = getglobal("GuildFrameButton"..nBttnID.."Name"):GetText();
SetGuildRosterSelection(GuildFrame.selectedGuildMember);
NuNNew_GuildStatus_Update();
if ( NuNData[pKey][pBttnTxt] ) then
NuN_ShowSavedNote(pBttnTxt);
else
NuN_ShowGuildNote();
end
elseif ( uAction == "MouseOver" ) then
ttName = pBttnTxt;
NuN_StaticTT();
end
elseif ( GuildStatusFrame:IsVisible() ) then
pBttnTxt = NuN_GetName_FrameButton(nBttnID, "GS");
if ( uAction == "Click" ) then
GuildFrame.selectedGuildMember = getglobal("GuildFrameGuildStatusButton"..nBttnID).guildIndex;
GuildFrame.selectedName = getglobal("GuildFrameGuildStatusButton"..nBttnID.."Name"):GetText();
SetGuildRosterSelection(GuildFrame.selectedGuildMember);
NuNOri_GuildStatus_Update();
if ( NuNData[pKey][pBttnTxt] ) then
NuN_ShowSavedNote(pBttnTxt);
else
NuN_ShowGuildNote();
end
elseif ( uAction == "MouseOver" ) then
ttName = pBttnTxt;
NuN_StaticTT();
end
elseif ( WhoFrame:IsVisible() ) then
pBttnTxt = NuN_GetName_FrameButton(nBttnID, "W");
if ( uAction == "Click" ) then
WhoFrame.selectedWho = getglobal("WhoFrameButton"..nBttnID).whoIndex;
WhoFrame.selectedName = getglobal("WhoFrameButton"..nBttnID.."Name"):GetText();
NuNOri_WhoList_Update();
if ( NuNData[pKey][pBttnTxt] ) then
NuN_ShowSavedNote(pBttnTxt);
else
NuN_ShowWhoNote(pBttnTxt);
end
elseif ( uAction == "MouseOver" ) then
ttName = pBttnTxt;
NuN_StaticTT();
end
elseif ( QuestLogFrame:IsVisible() ) then
lOffset = nBttnID + FauxScrollFrame_GetOffset(QuestLogListScrollFrame);
pBttnTxt, qLevel, qTag, qHeader, qCollapsed, qComplete = GetQuestLogTitle(lOffset);
c_note = pBttnTxt;
if ( uAction == "Click" ) then
QuestLog_SetSelection(lOffset);
NuNOri_QuestLog_Update();
if ( qHeader ) then
qText = "";
else
NuNGNoteFrame.fromQuest = nil;
if ( ( NuNData[pKey][Notes][c_note] ) or ( NuNData[Notes][c_note] ) ) then
NuN_ShowSavedGNote();
else
if ( qLevel == nil ) then
qLevel = "--";
end
if ( qTag == nil ) then
qTag = "";
end
qText = "\n"..c_note.." "..NUN_QLVL..qLevel.." "..qTag.." ".."\n\n"..NuN_BuildQuestText().."\n";
if ( qHeader ) then
c_type = NuNGet_CommandID(noteTypes, " ");
else
c_type = NuNGet_CommandID(noteTypes, "QST");
end
NuN_ShowTitledGNote( qText );
end
end
elseif ( uAction == "MouseOver" ) then
ttName = c_note;
NuN_StaticTT();
end
end
end
function NuN_GetName_FrameButton(lBttnID, NuN_rType)
local lBttn, lBttnTxt;
if ( NuN_rType == "F" ) then
lBttn = getglobal("FriendsFrameFriendButton"..lBttnID.."ButtonTextNameLocation");
lBttnTxt = lBttn:GetText();
local pos = string.find(lBttnTxt, NUN_SEP);
if ( string.find(lBttnTxt, NUN_OFF) ) then
lBttnTxt = string.sub(lBttnTxt, 11, (pos - 1));
else
lBttnTxt = string.sub(lBttnTxt, 1, (pos - 1));
end
elseif ( NuN_rType == "I" ) then
lBttn = getglobal("FriendsFrameIgnoreButton"..lBttnID.."ButtonTextName");
lBttnTxt = lBttn:GetText();
elseif ( NuN_rType == "G" ) then
lBttn = getglobal("GuildFrameButton"..lBttnID.."Name");
lBttnTxt = lBttn:GetText();
elseif ( NuN_rType == "GS" ) then
lBttn = getglobal("GuildFrameGuildStatusButton"..lBttnID.."Name");
lBttnTxt = lBttn:GetText();
elseif ( NuN_rType == "W" ) then
lBttn = getglobal("WhoFrameButton"..lBttnID.."Name");
lBttnTxt = lBttn:GetText();
elseif ( NuN_rType == NUN_QUEST_C ) then
lBttn = getglobal("QuestLogTitle"..lBttnID.."NormalText");
lBttnTxt = lBttn:GetText();
end
return lBttnTxt;
end
function NuN_StaticTT()
local storePinned = NuN_PinnedTooltip.type;
NuN_Tooltip:ClearLines();
NuN_PinnedTooltip.type = "Nil";
NuN_BuildTT(NuN_Tooltip);
NuN_PinnedTooltip.type = storePinned;
NuN_Fade = "False";
NuN_Tooltip:Show();
end
function NuN_BuildTT(nunTT)
local lGuild = nil;
local lGuildR = nil;
local lprof = "";
local tt = {};
local tti = 0;
local srchText, sStart, sStop, tipText;
local lineCount = 0;
local finalTipText;
local txtLines;
local NuN_trunc = false;
local gttLines = 0;
local ttLinesDiff = 0;
local ttLen = NUN_TT_MAX;
local ttLLen = NUN_TT_LEN;
if ( ( NuNSettings[pKey].toolTips ) or ( nunTT == NuN_PinnedTooltip ) ) then
if ( NuN_PinnedTooltip.type ~= "General" ) and ( NuN_PinnedTooltip.type ~= "QuestHistory" ) and ( NuNData[pKey][ttName] ) then
nunTT:AddLine(NUN_NOTESUNEED_INFO..NUN_PINNED_TT_PADDING, 1, 0.7, 0);
lineCount = lineCount + 1;
if ( NuN_PinUpHeader == true ) then
nunTT:AddLine(ttName);
lastPinned = ttName;
lineCount = lineCount + 1;
end
for n = 1, uBttns, 1 do
hdNbr = pHead..n
nameHdNbr = ttName..hdNbr;
nameDtNbr = ttName..pDetl..n;
if ( ( (n == 1) and (not NuNData[pKey][nameHdNbr]) ) or ( (n==1) and ( NuNData[pKey][nameHdNbr].txt == dfltHeadings[n] ) ) ) then
if ( NuNData[pKey][nameDtNbr] ) then
lGuild = NuNData[pKey][nameDtNbr].txt;
end
elseif ( ( (n == 2) and (not NuNData[pKey][nameHdNbr]) ) or ( (n==2) and ( NuNData[pKey][nameHdNbr].txt == dfltHeadings[n] ) ) ) then
if ( NuNData[pKey][nameDtNbr] ) then
lGuildR = NuNData[pKey][nameDtNbr].txt;
end
elseif ( NuNData[pKey][nameHdNbr] ) then
local ttDetl = (string.lower(NuNData[pKey][nameHdNbr].txt));
if ( string.find(ttDetl, NUN_TT_HDNG) ) then
if ( NuNData[pKey][nameDtNbr] ) then
tti = tti + 1;
tt[tti] = NuNData[pKey][nameDtNbr].txt;
end
end
elseif ( NuNSettings[pKey][hdNbr] ) then
local ttDetl = (string.lower(NuNSettings[pKey][hdNbr].txt));
if ( string.find(ttDetl, NUN_TT_HDNG) ) then
if ( NuNData[pKey][nameDtNbr] ) then
tti = tti + 1;
tt[tti] = NuNData[pKey][nameDtNbr].txt;
end
end
end
end
for i = 1, getn(tt), 1 do
nunTT:AddLine(tt[i], 0.9, 0.2, 0.2);
lineCount = lineCount + 1;
end
if ( ( lGuild ~= nil) and ( lGuild ~= "" ) ) then
if ( ( lGuildR ~= nil ) and ( lGuildR ~= "" ) ) then
lGuild = lGuild.." : "..lGuildR;
end
nunTT:AddLine(lGuild, 0.9, 0.9, 0);
lineCount = lineCount + 1;
end
if ( NuNData[pKey][ttName].prof1 ) then
lprof = Professions[NuNData[pKey][ttName].prof1];
end
if ( NuNData[pKey][ttName].prof2 ) then
if (lprof == "") then
lprof = Professions[NuNData[pKey][ttName].prof2];
else
lprof = lprof.." - "..Professions[NuNData[pKey][ttName].prof2];
end
end
if ( lprof ~= "" ) then
nunTT:AddLine(lprof, 0.8, 0.2, 0.8);
lineCount = lineCount + 1;
end
srchText = NuN_GetCText(ttName);
elseif ( ( NuN_PinnedTooltip.type ~= "Contact" ) and ( NuN_PinnedTooltip.type ~= "QuestHistory" ) and ( ( NuNData[pKey][Notes][ttName] ) or ( NuNData[Notes][ttName] ) ) ) then
nunTT:AddLine(NUN_NOTESUNEED_INFO..NUN_PINNED_TT_PADDING, 1, 0.7, 0);
lineCount = lineCount + 1;
if ( NuN_PinUpHeader == true ) then
nunTT:AddLine(ttName);
lastPinned = ttName;
lineCount = lineCount + 1;
end
srchText = NuN_GetGText(ttName);
elseif ( ( NuN_PinnedTooltip.type == "QuestHistory" ) and ( NuNData[pKey].QuestHistory[pName][ttName] ) ) then
nunTT:AddLine(NUN_NOTESUNEED_INFO..NUN_PINNED_TT_PADDING, 1, 0.7, 0);
lineCount = lineCount + 1;
if ( NuN_PinUpHeader == true ) then
nunTT:AddLine(ttName);
lastPinned = ttName;
lineCount = lineCount + 1;
end
srchText = NuNData[pKey].QuestHistory[pName][ttName].txt;
end
if ( NuN_PinnedTooltip.type ~= "QuestHistory" ) then
if ( NuNSettings[pKey].ttLen ) then
if ( NuNSettings[pKey].ttLen == "" ) then
ttLen = 0;
else
ttLen = tonumber( NuNSettings[pKey].ttLen );
end
end
if ( NuNSettings[pKey].ttLLen ) then
if ( NuNSettings[pKey].ttLLen == "" ) then
ttLLen = 0;
else
ttLLen = tonumber( NuNSettings[pKey].ttLLen );
end
end
end
if ( ( NuN_MouseOver == true ) and ( NuNSettings[pKey].minOver ) ) then
srchText = "";
end
if ( ( srchText ~= nil ) and ( srchText ~= "" ) ) then
sStart = string.find(srchText, NUN_TT_KEYPHRASE);
if ( sStart ~= nil ) then
sStart = sStart + NUN_TT_KEYPHRASE_LEN;
sStop = string.find(srchText, NUN_TT_END, sStart);
if ( sStop == nil ) then
sStop = sStart + ttLen - 1;
else
sStop = sStop - 1;
local sDiff = sStop - sStart;
if ( ( sDiff > ttLen ) or ( sDiff < 0 ) ) then
sStop = sStart + ttLen - 1;
NuN_trunc = true;
end
end
tipText = string.sub(srchText, sStart, sStop);
else
if ( string.len(srchText) > ttLen ) then
NuN_trunc = true;
end
tipText = string.sub(srchText, 1, ttLen);
end
if ( string.len(tipText) > ttLLen ) then
finalTipText, txtLines = NuN_ParseTT(tipText, ttLLen);
else
finalTipText = tipText;
txtLines = 1;
end
if ( NuN_trunc == true ) then
finalTipText = finalTipText..NUN_TT_ETC;
end
nunTT:AddLine(finalTipText, 0, 1, 0);
lineCount = lineCount + txtLines;
end
local gttLines = GameTooltip:NumLines();
local ttLinesDiff = lineCount - gttLines;
if ( ttLinesDiff > NUN_TT_LINES_TRIGGER ) then
local scaleUp = math.floor( 4 * (NuNSettings[pKey].tScale - 1) );
NuN_TT_Y_Offset = ( ( ttLinesDiff - NUN_TT_LINES_TRIGGER ) * ( NUN_TT_Y_SHIFT + scaleUp ) );
NuN_TT_Y_Offset = math.floor( NuN_TT_Y_Offset );
end
end
end
function NuN_ParseTT(txtIn, fragLen)
local p1 = 0;
local p2 = 0;
local txtOut = "";
local txtTmp = "";
local xtraLines = "";
local parsedLines = 1;
while ( true ) do
p2 = string.find(txtIn, "\n", ( p1 + 1 ) );
if ( p2 == nil ) then
break;
end
txtTmp = string.sub(txtIn, ( p1 + 1 ), p2);
txtTmpL = string.len(txtTmp);
if ( txtTmpL > ( fragLen + 10 ) ) then
txtTmp, xtraLines = NuN_Fragment(txtTmp, fragLen);
else
xtraLines = 1;
end
p1 = p2;
parsedLines = parsedLines + xtraLines;
txtOut = txtOut..txtTmp;
end
txtTmp = string.sub(txtIn, ( p1 + 1 ) );
txtTmpL = string.len(txtTmp);
if ( txtTmpL > fragLen ) then
txtTmp, xtraLines = NuN_Fragment(txtTmp, fragLen);
else
xtraLines = 1;
end
parsedLines = parsedLines + xtraLines;
txtOut = txtOut..txtTmp;
return txtOut, parsedLines;
end
function NuN_Fragment(txtWhole, fragLen)
local p1 = 0;
local p2 = 0;
local lst = 0;
local txtFrags = "";
local count = 1;
while ( true ) do
p2 = string.find(txtWhole, " ", ( p1 + 1 ) )
if ( p2 == nil ) then
break
end
if ( p2 > ( lst + fragLen ) ) then
lst = p1;
txtFrags = txtFrags.."\n";
count = count + 1;
end
txtFrags = txtFrags..string.sub(txtWhole, ( p1 + 1 ), p2);
p1 = p2;
end
txtFrags = txtFrags..string.sub(txtWhole, ( p1 + 1 ) );
return txtFrags, count;
end
function NuN_Tooltip_OnUpdate()
if ( ( NuN_Fade == "True" ) and ( not UnitExists("mouseover") ) ) then
local gt = GameTooltipTextLeft1:GetText();
if ( gt ~= gtName ) then
this:Hide();
return;
end
if ( this.fadeStartTime == 0 ) then
this.fadeStartTime = GetTime();
end
local elapsed = GetTime() - this.fadeStartTime;
local fadeHoldTime = this.fadeHoldTime;
local fadeOutTime = this.fadeOutTime;
if ( elapsed >= ( fadeHoldTime + fadeOutTime ) ) then
this:ClearLines();
this:Hide();
elseif ( elapsed > fadeHoldTime ) then
local alpha = 1 - ( ( elapsed - fadeHoldTime ) / fadeOutTime );
this:SetAlpha(alpha);
end
end
end
function NuN_FFButton_OnShow()
NuN_FFButton_Up();
end
function NuN_FFButton_Down()
if ( pFaction == "Horde" ) then
NuN_FFButton_StateADown:Hide();
NuN_FFButton_StateAUp:Hide();
NuN_FFButton_StateHUp:Hide();
NuN_FFButton_StateHDown:Show();
else
NuN_FFButton_StateHDown:Hide();
NuN_FFButton_StateHUp:Hide();
NuN_FFButton_StateAUp:Hide();
NuN_FFButton_StateADown:Show();
end
if ( FriendsListFrame:IsVisible() ) then
NuN_ShowFriendNote();
elseif ( IgnoreListFrame:IsVisible() ) then
NuN_ShowIgnoreNote();
elseif ( GuildPlayerStatusFrame:IsVisible() ) then
NuN_ShowGuildNote();
elseif ( GuildStatusFrame:IsVisible() ) then
NuN_ShowGuildNote();
elseif ( WhoFrame:IsVisible() ) then
if ( WhoFrame.selectedName ) then
NuN_ShowWhoNote(WhoFrame.selectedName);
end
elseif ( RaidFrame:IsVisible() ) then
local tstValue = NuN_CheckTarget();
if ( UnitInRaid("target") ) then
c_name = UnitName("target");
if ( NuNData[pKey][c_name] ) then
NuN_ShowSavedNote(c_name);
else
NuN_NewContact("target");
end
end
end
end
function NuN_FFButton_Up()
if ( pFaction == "Horde" ) then
NuN_FFButton_StateADown:Hide();
NuN_FFButton_StateAUp:Hide();
NuN_FFButton_StateHDown:Hide();
NuN_FFButton_StateHUp:Show();
else
NuN_FFButton_StateHDown:Hide();
NuN_FFButton_StateHUp:Hide();
NuN_FFButton_StateADown:Hide();
NuN_FFButton_StateAUp:Show();
end
end
function NuN_GNoteTitle_OnClick()
NuN_ClearPinnedTT();
NuNGTTCheckBoxLabel:Hide();
NuN_GTTCheckBox:Hide();
NuNGNoteTextBox:SetText( NuNGNoteTitleButtonText:GetText() );
NuNGNoteTitleButton:Hide();
NuNGNoteTextBox:Show();
NuNGNoteTextBox:SetFocus();
end
function NuN_GNoteTitleSet()
NuNGNoteTitleButtonText:SetText( NuNGNoteTextBox:GetText() );
NuNGNoteTextBox:Hide();
NuNGNoteTitleButton:Show();
end
function NuN_GetSimpleName(cmplxName)
local smplName, posB, posE;
posB = string.find(cmplxName, "|h");
posE = string.find(cmplxName, "]|h");
if ( posB ~= nil ) and ( posE ~= nil ) and ( posB < posE ) then
smplName = string.sub(cmplxName, (posB + 3), (posE - 1));
return smplName
else
return nil;
end
end
function NuN_GetLink(cmplxName)
local link, posB, posE;
posB = string.find(cmplxName, "|Hitem:");
posE = string.find(cmplxName, "|h");
if ( posB ~= nil ) and ( posE ~= nil ) and ( posB < posE ) then
link = string.sub(cmplxName, (posB + 2), (posE - 1));
return link;
else
return nil;
end
end
function NuN_GNoteExists(tstNote)
local cmplxName;
if ( ( NuNData[pKey][Notes][tstNote] ) or ( NuNData[Notes][tstNote] ) ) then
c_note = tstNote;
return true;
elseif ( NuNData[itmIndex][tstNote] ) then
cmplxName = NuNData[itmIndex][tstNote];
if ( ( NuNData[pKey][Notes][cmplxName] ) or ( NuNData[Notes][cmplxName] ) ) then
c_note = cmplxName;
return true;
end
end
c_note = nil;
return false;
end
function NuN_DeleteItem(toDelete)
local index;
local value;
for index, value in NuNData[itmIndex] do
if ( NuNData[itmIndex][index] == toDelete ) then
NuNData[itmIndex][index] = nil;
return;
end
end
end
function NuN_GameTooltip_OnShow()
local storePinned = NuN_PinnedTooltip.type;
local p1 = 1;
local strippedName = "";
local sNLen = 0;
local anchorBy, anchorTo;
local tx, ty;
tx, ty = GameTooltip:GetCenter();
if ( ( not tx ) or ( not ty ) ) then
noTipAnchor = true;
return;
end
gtName = GameTooltipTextLeft1:GetText();
if ( not UnitExists("mouseover") ) then
sNLen = string.len(gtName);
for i=sNLen, 1, -1 do
local tstChar = string.sub(gtName, i, i);
if ( tstChar == " " ) then
p1 = i + 1;
break;
end
end
strippedName = string.sub(gtName, p1);
if ( NuNData[pKey][strippedName] ) then
gtName = strippedName;
end
end
if ( ( UnitExists("mouseover") ) or ( ( RaidFrame:IsVisible() ) and ( MouseIsOver(RaidFrame) ) ) or ( ( TargetFrame:IsVisible() ) and ( MouseIsOver(TargetFrame) ) ) ) then
if ( UnitExists("mouseover") ) then
ttName = UnitName("mouseover");
NuN_Fade = "True";
else
ttName = gtName;
NuN_Fade = "False";
end
if ( ( ttName ~= nil ) and ( ( NuNData[pKey][ttName] ) or ( NuNData[pKey][Notes][ttName] ) or ( NuNData[Notes][ttName] ) ) ) then
anchorBy, anchorTo = NuN_GetTipAnchor(GameTooltip);
NuN_Tooltip:Hide();
NuN_Tooltip:SetOwner(this, "ANCHOR_NONE");
NuN_TT_Y_Offset = 0;
NuN_PinnedTooltip.type = "Nil";
NuN_MouseOver = true;
NuN_BuildTT(NuN_Tooltip);
NuN_MouseOver = false;
NuN_PinnedTooltip.type = storePinned;
NuN_Tooltip:SetPoint(anchorBy, "GameTooltip", anchorTo, -1, 0);
NuN_Tooltip:Show();
else
NuN_Tooltip:ClearLines();
NuN_Tooltip:Hide();
end
else
ttName = gtName;
if ( NuNData[itmIndex][ttName] ) then
ttName = ( NuNData[itmIndex][ttName] );
end
if ( ( ttName ~= nil ) and ( ( NuNData[pKey][ttName] ) or ( NuNData[pKey][Notes][ttName] ) or ( NuNData[Notes][ttName] ) ) ) then
NuN_Fade = "False";
NuN_Tooltip:ClearLines();
NuN_Tooltip:Hide();
NuN_Tooltip:SetOwner(this, "ANCHOR_NONE");
NuN_TT_Y_Offset = 0;
NuN_PinnedTooltip.type = "Nil";
NuN_BuildTT(NuN_Tooltip);
NuN_PinnedTooltip.type = storePinned;
local num1 = ShoppingTooltip1:NumLines();
local num2 = ShoppingTooltip2:NumLines();
if ( num2 and ( num2 > 0 ) and ShoppingTooltip2 and MerchantFrame and ( MerchantFrame:IsVisible() ) and ( MouseIsOver(MerchantFrame) ) ) or ( num2 and ( num2 > 0 ) and ShoppingTooltip2 and AuctionFrame and ( AuctionFrame:IsVisible() ) and ( MouseIsOver(AuctionFrame) ) ) then
anchorBy, anchorTo = NuN_GetTipAnchor(ShoppingTooltip2);
NuN_Tooltip:SetPoint(anchorBy, "ShoppingTooltip2", anchorTo, 0, 0);
elseif ( num1 and ( num1 > 0 ) ) and ( ShoppingTooltip1 and MerchantFrame and ( MerchantFrame:IsVisible() ) and ( MouseIsOver(MerchantFrame) ) ) or ( num1 and ( num1 > 0 ) ) and ( ShoppingTooltip1 and AuctionFrame and ( AuctionFrame:IsVisible() ) and ( MouseIsOver(AuctionFrame) ) ) then
anchorBy, anchorTo = NuN_GetTipAnchor(ShoppingTooltip1);
NuN_Tooltip:SetPoint(anchorBy, "ShoppingTooltip1", anchorTo, 0, 0);
else
anchorBy, anchorTo = NuN_GetTipAnchor(GameTooltip);
NuN_Tooltip:SetPoint(anchorBy, "GameTooltip", anchorTo, 1, 0);
end
NuN_Tooltip:Show();
else
NuN_Tooltip:ClearLines();
NuN_Tooltip:Hide();
end
end
end
function NuN_WorldMapTooltip_OnShow(id)
local noPopup = true;
local MapNoting = true;
local nName = WorldMapTooltipTextLeft1:GetText();
NuNPopup:Hide();
if ( NuNData[itmIndex][nName] ) then
nName = ( NuNData[itmIndex][nName] );
end
local MNCont = nil;
local MNZone = nil;
local NuN_Key = nil;
MNCont = GetCurrentMapContinent();
if ( MNCont == -1 ) then
MNCont = GetRealZoneText();
MNZone = 0;
else
if ( MetaMapNotes_OnLoad ) then
MNZone = MetaMapNotes_ZoneShift[MNCont][GetCurrentMapZone()];
elseif ( MapNotes_OnLoad ) then
MNZone = MapNotes_ZoneShift[MNCont][GetCurrentMapZone()];
else
MapNoting = nil;
end
if ( ( MapNoting ) and ( ( not MNZone ) or ( MNZone < 1 ) ) ) then
return;
end
end
if ( id ) then
NuN_Key = MNCont.."-"..MNZone.."-"..id;
end
if ( NuN_Key ) then
if ( ( NuNData[mrgIndex] ) and ( NuNData[mrgIndex][NuN_Key] ) ) then
local index, value, lBttn, lHeight;
local lWidth = NuNPopupTitle:GetWidth();
local lCount = 0;
NuNPopupButton1:SetText("");
NuNPopupButton1:Hide();
NuNPopupButton2:SetText("");
NuNPopupButton2:Hide();
NuNPopupButton3:SetText("");
NuNPopupButton3:Hide();
NuNPopupButton4:SetText("");
NuNPopupButton4:Hide();
NuNPopupButton5:SetText("");
NuNPopupButton5:Hide();
for index, value in NuNData[mrgIndex][NuN_Key] do
if ( index ~= "noteCounter" ) then
if ( ( NuNData[Notes][index] ) or ( NuNData[pKey][Notes][index] ) ) then
lCount = lCount + 1;
lBttn = getglobal("NuNPopupButton"..lCount);
lBttn.note = index;
lBttn:SetText(index);
lBttn:Show();
local tWidth = lBttn:GetTextWidth();
if ( ( tWidth ) and ( tWidth > lWidth ) ) then
lWidth = tWidth;
end
end
end
end
if ( lCount > 0 ) then
local lHeight = math.ceil( ((20*(lCount + 1)) + 10) );
lWidth = math.ceil( (lWidth) * 1.15 );
if ( lCount > 2 ) then
lHeight = lHeight - (lCount * lCount);
end
NuNPopup:SetHeight(lHeight);
NuNPopup:SetWidth(lWidth);
NuNPopupButton1:SetWidth(lWidth - 4);
NuNPopupButton2:SetWidth(lWidth - 4);
NuNPopupButton3:SetWidth(lWidth - 4);
NuNPopupButton4:SetWidth(lWidth - 4);
NuNPopupButton5:SetWidth(lWidth - 4);
NuNPopup:ClearAllPoints();
NuNPopup.id = id;
local x, y = GetCursorPosition();
if ( y > 300 ) then
if ( x > 500 ) then
NuNPopup:SetPoint("TOPRIGHT", "WorldMapTooltip", "BOTTOMRIGHT", 0, 0);
NuNPopup.point = "TOPRIGHT";
NuNPopup.relativePoint = "BOTTOMRIGHT";
else
NuNPopup:SetPoint("TOPLEFT", "WorldMapTooltip", "BOTTOMLEFT", 0, 0);
NuNPopup.point = "TOPLEFT";
NuNPopup.relativePoint = "BOTTOMLEFT";
end
else
if ( x > 500 ) then
NuNPopup:SetPoint("BOTTOMRIGHT", "WorldMapTooltip", "TOPRIGHT", 0, 0);
NuNPopup.point = "BOTTOMRIGHT";
NuNPopup.relativePoint = "TOPRIGHT";
else
NuNPopup:SetPoint("BOTTOMLEFT", "WorldMapTooltip", "TOPLEFT", 0, 0);
NuNPopup.point = "BOTTOMLEFT";
NuNPopup.relativePoint = "TOPLEFT";
end
end
NuNPopupTitle:SetTextColor(0.1, 0.9, 0.1, 0.9);
popUpHide = nil;
NuNPopup:SetAlpha(1);
NuNPopup:Show();
NuN_MapTooltipShow(NuNPopupButton1.note, "NuNPopup", NuNPopup.point, NuNPopup.relativePoint);
NuNPopupButton1:LockHighlight();
noPopup = nil;
end
end
end
if ( noPopup ) then
if ( ( NuNData[pKey][nName] ) or ( NuNData[pKey][Notes][nName] ) or ( NuNData[Notes][nName] ) ) then
NuN_MapTooltipShow(nName, "WorldMapTooltip", nil, nil);
end
end
end
function NuN_MapTooltipShow(nName, relativeTo, point, relativePoint)
local storePinned = NuN_PinnedTooltip.type;
NuNPopupButton1:UnlockHighlight();
if ( not nName ) then
return;
end
gtName = nName;
ttName = gtName;
if ( ( ttName ~= nil ) and ( ( NuNData[pKey][ttName] ) or ( NuNData[pKey][Notes][ttName] ) or ( NuNData[Notes][ttName] ) ) ) then
NuN_Fade = "False";
NuN_MapTooltip:ClearLines();
NuN_MapTooltip:Hide();
NuN_MapTooltip:SetOwner(this, "ANCHOR_NONE");
NuN_PinnedTooltip.type = "Nil";
NuN_BuildTT(NuN_MapTooltip);
NuN_PinnedTooltip.type = storePinned;
if ( ( point ) and ( relativePoint ) ) then
NuN_MapTooltip:SetPoint(point, relativeTo, relativePoint, 0, 0);
else
local x, y = GetCursorPosition();
if ( y > 300 ) then
if ( x > 500 ) then
NuN_MapTooltip:SetPoint("TOPRIGHT", "WorldMapTooltip", "BOTTOMRIGHT", 0, 0);
else
NuN_MapTooltip:SetPoint("TOPLEFT", "WorldMapTooltip", "BOTTOMLEFT", 0, 0);
end
else
if ( x > 500 ) then
NuN_MapTooltip:SetPoint("BOTTOMRIGHT", "WorldMapTooltip", "TOPRIGHT", 0, 0);
else
NuN_MapTooltip:SetPoint("BOTTOMLEFT", "WorldMapTooltip", "TOPLEFT", 0, 0);
end
end
end
NuN_MapTooltip:SetFrameLevel( WorldMapTooltip:GetFrameLevel() );
NuN_MapTooltip:Show();
else
NuN_MapTooltip:ClearLines();
NuN_MapTooltip:Hide();
end
end
function NuN_WorldMapTooltip_OnHide()
NuNPopup:Hide();
NuN_MapTooltip:ClearLines();
NuN_MapTooltip:Hide();
end
function NuN_ItemRefTooltip_OnShow()
gtName = ItemRefTooltipTextLeft1:GetText();
ttName = gtName;
if ( NuNData[itmIndex][ttName] ) then
ttName = ( NuNData[itmIndex][ttName] );
end
if ( ( ttName ~= nil ) and ( ( NuNData[pKey][Notes][ttName] ) or ( NuNData[Notes][ttName] ) ) ) then
NuN_Fade = "False";
NuN_ClearPinnedTT();
NuN_PinnedTooltip:SetOwner(ItemRefTooltip, "ANCHOR_TOPLEFT");
NuN_PinUpHeader = true;
NuN_PinnedTooltip.type = "General";
NuN_BuildTT(NuN_PinnedTooltip);
NuN_PinUpHeader = false;
NuN_PinnedTooltip:Show();
pinnedTTMoved = false;
elseif ( not pinnedTTMoved ) then
NuN_ClearPinnedTT();
end
end
function NuN_ItemRefTooltip_OnHide()
if ( not pinnedTTMoved ) then
NuN_ClearPinnedTT();
pinnedTTMoved = true;
end
end
function NuN_FlagMoved()
pinnedTTMoved = true;
end
function NuN_GameTooltip_OnHide()
noTipAnchor = nil;
if ( NuN_Fade == "False" ) then
NuN_Tooltip:ClearLines();
NuN_Tooltip:Hide();
end
end
function NuN_TTCheckBox_OnClick(frameType)
if ( frameType == "Contact" ) then
if ( NuN_CTTCheckBox:GetChecked() ) then
ttName = c_name;
NuN_ClearPinnedTT();
NuN_PinnedTooltip:SetOwner(this, ANCHOR_BOTTOMRIGHT);
NuN_PinUpHeader = true;
NuN_PinnedTooltip.type = frameType;
NuN_BuildTT(NuN_PinnedTooltip);
NuN_PinUpHeader = false;
NuN_PinnedTooltip:Show();
else
NuN_ClearPinnedTT();
end
elseif ( frameType == "General" ) then
if ( NuN_GTTCheckBox:GetChecked() ) then
ttName = c_note;
NuN_ClearPinnedTT();
NuN_PinnedTooltip:SetOwner(this, ANCHOR_BOTTOMRIGHT);
NuN_PinUpHeader = true;
NuN_PinnedTooltip.type = frameType;
NuN_BuildTT(NuN_PinnedTooltip);
NuN_PinUpHeader = false;
NuN_PinnedTooltip:Show();
else
NuN_ClearPinnedTT();
end
end
end
function NuN_TTCheckBox_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_PIN_TOOLTIP_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_PIN_TOOLTIP_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_PIN_TOOLTIP_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_ClearPinnedTT()
if ( NuN_PinnedTooltip:IsVisible() ) then
NuN_PinnedTooltip:ClearLines();
NuN_PinnedTooltip:Hide();
end
end
function NuN_CheckPinnedBox(tst)
if ( NuN_PinnedTooltip:IsVisible() ) then
if ( tst == lastPinned ) then
return 1;
else
return 0;
end
else
return 0;
end
end
function NuN_PinnedTT_OnClick()
local ttTitle = NuN_PinnedTooltipTextLeft2:GetText();
if ( NuN_PinnedTooltip.type == "Contact" ) then
if ( NuNData[pKey][ttTitle] ) then
NuN_ShowSavedNote(ttTitle);
end
elseif ( NuN_PinnedTooltip.type == "General" ) then
if ( NuNData[itmIndex][ttTitle] ) then
ttTitle = NuNData[itmIndex][ttTitle];
end
if ( ( NuNData[pKey][Notes][ttTitle] ) or ( NuNData[Notes][ttTitle] ) ) then
c_note = ttTitle;
NuNGNoteFrame.fromQuest = nil;
NuN_ShowSavedGNote();
end
end
end
function NuN_PinnedTT_OnHide()
if ( NuN_PinnedTooltip.type == "Contact" ) then
if ( ( NuNFrame:IsVisible() ) and ( NuN_CTTCheckBox:GetChecked() ) ) then
NuN_CTTCheckBox:SetChecked(0);
end
elseif ( NuN_PinnedTooltip.type == "General" ) then
if ( ( NuNGNoteFrame:IsVisible() ) and ( NuN_GTTCheckBox:GetChecked() ) ) then
NuN_GTTCheckBox:SetChecked(0);
end
end
end
function NuN_OpenChat(noteType)
local dspText, dspTextL;
local hdrMax = 29;
UIDropDownMenu_ClearAll(NuNChatDropDown);
NuNTransmit:Disable();
NuNChatTextBox:Hide();
NuN_ChatFrame.type = noteType;
if ( noteType == "Contact" ) then
dspText = c_name;
NuN_ChatCheckBox:Show();
elseif ( noteType == "General" ) then
dspText = c_note;
NuN_ChatCheckBox:Hide();
end
if ( string.find(dspText, "|Hitem:") ) then
hdrMax = hdrMax + 50;
end
dspTextL = string.len(dspText);
if ( dspTextL > hdrMax ) then
dspText = string.sub(dspText, 1, hdrMax).."...";
end
NuNChatNoteTitle:SetText(dspText);
ShowUIPanel(NuN_ChatFrame);
end
function NuN_Transmit()
local dfltLang;
local user = nil;
local error = nil;
local singleLine;
local parsedArray = {};
local contents = nil;
local linesInError = {};
local nonCriticalError = false;
local e = 0;
local tLog = "Transmit Log ";
local chatTarget;
local prfx;
local logText = "";
local saveLvl;
NuNTransmit:Disable();
msgSeq = msgSeq + 1;
if ( msgSeq > 9 ) then
msgSeq = 1;
end
msgKey = pName..msgSeq..":";
tLog = tLog..msgKey;
if ( NuNSettings[pKey].dLevel ) then
NuNData[Notes][tLog] = {};
logText = NuN_GetDateStamp().."\n";
NuNData[Notes][tLog].type = 3;
saveLvl = "Account";
else
NuNData[pKey][Notes][tLog] = {};
logText = NuN_GetDateStamp().."\n";
NuNData[pKey][Notes][tLog].type = 3;
saveLvl = "Realm";
end
if ( NuNChatTextBox:IsVisible() ) then
user = NuNChatTextBox:GetText();
end
if ( sendTo == "WHISPER" ) or ( sendTo == "NuN" ) then
chatTarget = user;
else
chatTarget = sendTo;
end
if ( horde ) then
dfltLang = "Orcish";
else
dfltLang = "Common";
end
prfx = msgKey..NUN_TRANSMISSION_PREFIX1..pName.." ---> "..chatTarget;
logText = logText.."\n"..prfx;
if ( NuN_ChatFrame.type == "Contact" ) then
parsedArray, error = NuN_TransmitContact(dfltLang, user);
else
parsedArray, error = NuN_TransmitGeneral(dfltLang, user);
end
if ( parsedArray ) then
local tmp_c_note = c_note;
local tmp_g_text = g_text;
contents = getn(parsedArray);
local lineCount = 0;
local flagged = nil;
for i=1, contents, 1 do
singleLine = parsedArray[i];
singleLine = string.gsub(singleLine, "\n", " ");
singleLine = string.gsub(singleLine, "\\n", " ");
if ( string.len(singleLine) > 255 ) then
error = "Err02";
break;
end
local beginnings = NuN_Validate(singleLine, "|c");
local endings = NuN_Validate(singleLine, "|h|r");
if ( beginnings == endings ) then
parsedArray[i] = singleLine;
lineCount = lineCount + 1;
if ( ( string.len(logText) < (NUN_MAX_TXT_LIM - 360) ) and ( lineCount < 109 ) ) then
logText = logText.."\n"..singleLine;
elseif ( not flagged ) then
flagged = true;
logText = logText.."\n"..NUN_NOROOM;
end
else
parsedArray[i] = "";
nonCriticalError = true;
e = e + 1;
linesInError[e] = NUN_LINEERROR_TEXT.."----->"..i.." : \n";
e = e + 1;
linesInError[e] = singleLine.."\n";
end
end
c_note = tLog;
g_text = logText;
NuN_SetGText(saveLvl);
c_note = tmp_c_note;
g_text = tmp_g_text;
end
if ( contents ) and ( not error ) then
if ( sendTo == "SELF" ) then
DEFAULT_CHAT_FRAME:AddMessage(prfx);
else
SendChatMessage(prfx, sendTo, dfltLang, user);
end
for i=1, contents, 1 do
if ( sendTo == "SELF" ) then
DEFAULT_CHAT_FRAME:AddMessage(msgKey..parsedArray[i]);
else
SendChatMessage(msgKey..parsedArray[i], sendTo, dfltLang, user);
end
end
elseif ( error ) then
NuN_Message(NUN_TRANSMISSION_ERROR..error);
else
NuN_Message(NUN_TRANSMISSION_MISSING);
end
if ( nonCriticalError ) then
if ( NuNSettings[pKey].dLevel ) then
NuNData[Notes][msgKey] = {};
NuNData[Notes][msgKey].txt = "";
else
NuNData[pKey][Notes][msgKey] = {};
NuNData[pKey][Notes][msgKey].txt = "";
end
for i=1, getn(linesInError), 1 do
if ( NuNSettings[pKey].dLevel ) then
NuNData[Notes][msgKey].txt = NuNData[Notes][msgKey].txt..linesInError[i].."\n";
else
NuNData[pKey][Notes][msgKey].txt = NuNData[pKey][Notes][msgKey].txt..linesInError[i].."\n";
end
end
NuN_Message(NUN_NONCRITICAL_ERROR..msgKey);
end
NuNTransmit:Enable();
end
function NuN_TransmitContact(dfltLang, user)
local parsedArray = {};
local singleLine = "";
if ( NuNData[pKey][c_name] ) then
local parsedArray = {};
local singleLine = "";
local arrayCounter = 1;
local parseText = "";
local txtArray = {};
parsedArray[arrayCounter] = NUN_TRANSMISSION_PREFIX2.."Contact : "..c_name;
if ( not NuN_ChatCheckBox:GetChecked() ) then
singleLine = NuNData[pKey][c_name].faction.." ";
if ( NuNData[pKey][c_name].race ) then
if ( horde ) then
singleLine = singleLine..HRaces[NuNData[pKey][c_name].race].." ";
else
singleLine = singleLine..ARaces[NuNData[pKey][c_name].race].." ";
end
end
if ( NuNData[pKey][c_name].cls ) then
if ( horde ) then
singleLine = singleLine..HClasses[NuNData[pKey][c_name].cls].." ";
else
singleLine = singleLine..AClasses[NuNData[pKey][c_name].cls].." ";
end
end
if ( NuNData[pKey][c_name].sex ) then
singleLine = singleLine..Sexes[NuNData[pKey][c_name].sex].." ";
end
if ( NuNData[pKey][c_name].prof1 ) then
singleLine = singleLine..Professions[NuNData[pKey][c_name].prof1].." ";
end
if ( NuNData[pKey][c_name].prof2 ) then
singleLine = singleLine..Professions[NuNData[pKey][c_name].prof2].." ";
end
if ( NuNData[pKey][c_name].crank ) then
if ( horde ) then
singleLine = singleLine..HRanks[NuNData[pKey][c_name].crank].." ";
else
singleLine = singleLine..ARanks[NuNData[pKey][c_name].crank].." ";
end
end
if ( NuNData[pKey][c_name].hrank ) then
if ( horde ) then
singleLine = singleLine..HRanks[NuNData[pKey][c_name].hrank].." ";
else
singleLine = singleLine..ARanks[NuNData[pKey][c_name].hrank].." ";
end
end
if ( singleLine ~= "" ) then
singleLine = "G:"..singleLine;
arrayCounter = arrayCounter + 1;
parsedArray[arrayCounter] = singleLine;
end
for n = 1, uBttns, 1 do
singleLine = "";
hdNbr = pHead..n;
nameHdNbr = c_name..hdNbr;
nameDtNbr = c_name..pDetl..n;
if ( NuNData[pKey][nameHdNbr] ) then
singleLine = NuNData[pKey][nameHdNbr].txt.."~ ";
elseif ( NuNSettings[pKey][hdNbr] ) then
singleLine = NuNSettings[pKey][hdNbr].txt.."~ ";
else
singleLine = dfltHeadings[n].."~ ";
end
if ( NuNData[pKey][nameDtNbr] ) then
singleLine = singleLine.."~"..NuNData[pKey][nameDtNbr].txt;
end
if ( singleLine ~= "" ) then
arrayCounter = arrayCounter + 1;
singleLine = "U"..n..":"..singleLine;
parsedArray[arrayCounter] = singleLine;
end
end
end
-- parseText = NuN_GetCText(c_name);
parseText = NuNText:GetText();
txtArray = NuN_ParseNote(parseText);
if ( txtArray ) then
for i=1, getn(txtArray), 1 do
arrayCounter = arrayCounter + 1;
parsedArray[arrayCounter] = "T:"..txtArray[i];
end
end
arrayCounter = arrayCounter + 1;
parsedArray[arrayCounter] = NUN_TRANSMISSION_POSTFIX.."Contact : "..c_name;
return parsedArray, nil;
else
return nil, "Err01";
end
end
function NuN_TransmitGeneral(dfltLang, user)
local ref = c_note;
if ( NuNData[itmIndex][ref] ) then
ref = NuNData[itmIndex][ref];
end
if ( ( NuNData[pKey][Notes][ref] ) or ( NuNData[Notes][ref] ) ) then
local parsedArray = {};
local singleLine = "";
local arrayCounter = 1;
local parseText = "";
local txtArray = {};
parsedArray[arrayCounter] = NUN_TRANSMISSION_PREFIX2.."General : "..c_note;
-- parseText = NuN_GetGText(c_note);
parseText = NuNGNoteTextScroll:GetText();
txtArray = NuN_ParseNote(parseText);
if ( txtArray ) then
for i=1, getn(txtArray), 1 do
arrayCounter = arrayCounter + 1;
parsedArray[arrayCounter] = "T:"..txtArray[i];
end
end
arrayCounter = arrayCounter + 1;
parsedArray[arrayCounter] = NUN_TRANSMISSION_POSTFIX.."General : "..c_note;
return parsedArray, nil;
else
return nil, "Err01";
end
end
function NuN_ParseNote(parseText)
local parsedArray = {};
local arrayCounter = 0;
local p1 = 0;
local p2 = 0;
local txtTmp = "";
parseText = NuN_RemoveColours(parseText);
parseText = NuN_CheckHyperlinkPositions(parseText);
local parseTextLen = string.len(parseText);
local negOffset = -1 * (parseTextLen);
while ( negOffset < 0 ) do
p2 = string.find(parseText, "\n", (p1+1) );
if ( ( p2 == nil ) or ( p2 > ( NUN_CHAT_LIMIT + p1 ) ) ) then
negOffset = p1 + NUN_CHAT_LIMIT - parseTextLen;
if ( negOffset < 0 ) then
p2 = string.find(parseText, " ", negOffset);
if ( ( p2 == nil ) or ( p2 <= p1 ) ) then
txtTmp = string.sub(parseText, (p1+1), (p1+NUN_CHAT_LIMIT));
else
txtTmp = string.sub(parseText, (p1+1), p2);
end
else
txtTmp = string.sub(parseText, (p1+1));
end
else
txtTmp = string.sub(parseText, (p1+1), p2);
end
if ( p2 ) then
p1 = p2;
else
p1 = parseTextLen;
end
if ( txtTmp ~= "" ) and ( txtTmp ~= " " ) then
arrayCounter = arrayCounter + 1;
parsedArray[arrayCounter] = txtTmp;
end
end
return parsedArray;
end
function NuN_RemoveColours(colouredText)
local gp1 = 0;
local gp2a = 0;
local gp2b = 0;
local gp3 = 0;
local plainText="";
local malformed = false;
local postfix = "";
while ( true ) do
gp2a = string.find(colouredText, "|c", (gp1+1));
if ( gp2a == nil ) then
break;
else
if ( gp2a ~= (gp1+1) ) then
plainText = plainText..string.sub(colouredText, (gp1+1), (gp2a-1));
end
gp2b = string.find(colouredText, "|Hitem:", (gp1+1));
gp3 = string.find(colouredText, "|h|r", gp2a);
if ( gp3 == nil ) then
malformed = true;
break;
end
if ( gp2b == nil ) or ( gp2b > gp3 ) then
plainText = plainText..string.sub(colouredText, (gp2a+12), (gp3-1));
elseif ( (gp2b-gp2a) == 10 ) then
plainText = plainText..string.sub(colouredText, gp2a, (gp3+3));
else
malformed = true;
break;
end
gp1 = gp3 + 3;
end
end
if ( not malformed ) then
postfix = string.sub(colouredText, (gp1+1));
if ( postfix ) then
plainText = plainText..postfix;
end
else
plainText = "";
NuN_Message(NUN_COLOUR_ERROR_REPORT);
end
return plainText;
end
function NuN_Validate(txt, tst)
local p1 = 0;
local p2 = 0;
local count = 0;
while ( true ) do
p2 = string.find(txt, tst, (p1+1));
if ( p2 == nil ) then
break;
else
count = count + 1;
p1 = p2;
end
end
return count;
end
function NuN_ChatCheckBox_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_CHATCHECK_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_CHATCHECK_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_CHATCHECK_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_CheckHyperlinkPositions(theText)
local hypBegs = {};
local p1 = 0;
local p2 = 0;
local counter = 0;
local Begs = 0;
local rtrnText = "";
while ( true ) do
p2 = string.find(theText, "|Hitem:", (p1+1) );
if ( p2 == nil ) then
break;
else
counter = counter + 1;
hypBegs[counter] = p2 - 10;
p1 = p2;
end
end
if ( hypBegs ) then
local base = 1;
local preText = "";
local len = 0;
for i=1, getn(hypBegs), 1 do
preText = string.sub(theText, base, (hypBegs[i] - 1));
len = string.len(preText);
local p3 = 0;
local p4 = 0;
p2 = nil;
while ( true ) do
p4 = string.find(preText, "\n", (p3+1));
if ( p4 == nil ) then
break;
else
p2 = p4;
p3 = p4;
end
end
if ( p2 == nil ) and ( len > 120 ) then
rtrnText = rtrnText..preText.."\n";
base = base + len;
elseif ( p2 ) and ( (len - p2) > 120 ) then
rtrnText = rtrnText..preText.."\n";
base = base + len;
elseif ( p2 ) then
rtrnText = rtrnText..string.sub(theText, base, (base + p2));
base = base + p2 + 1;
end
end
rtrnText = rtrnText..string.sub(theText, base);
end
return rtrnText;
end
function NuN_Level_CheckBox_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_LEVEL_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_LEVEL_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_LEVEL_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuNGTypeDropDown_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_GTYPE_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_GTYPE_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_GTYPE_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuNScaleFrameButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_SCALE_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_SCALE_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_SCALE_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_NPCTarget()
local chkName = UnitName("target");
local npcText = "";
if ( ( chkName ) and ( not UnitPlayerControlled("target") ) ) then
npcText = NuN_NPCInfo();
NuNGNoteTextScroll:SetText( NuNGNoteTextScroll:GetText().."\n"..npcText );
end
end
function NuNScaleFrameShow()
if ( NuN_ScaleFrame:IsVisible() ) then
HideUIPanel(NuN_ScaleFrame);
else
ShowUIPanel(NuN_ScaleFrame);
end
end
function NuNFrameScaleSlider_OnShow()
local pScale = NuNSettings[pKey].pScale;
NuNFrameScaleSliderCurrent:SetText( string.format("%d", (pScale * 100)) .. "%");
this:SetMinMaxValues(NUN_FRAMESCALE_MIN, NUN_FRAMESCALE_MAX);
this:SetValueStep(NUN_FRAMESCALE_STEP);
this:SetValue(NUN_FRAMESCALE_MIN + NUN_FRAMESCALE_MAX - pScale);
this.previousValue = this:GetValue();
end
function NuNFrameScaleSlider_OnValueChanged()
local pScale;
if (this:GetValue() ~= this.previousValue) then
this.previousValue = this:GetValue();
pScale = (NUN_FRAMESCALE_MIN + NUN_FRAMESCALE_MAX - this:GetValue());
NuNSettings[pKey].pScale = pScale;
NuNFrameScaleSliderCurrent:SetText( string.format("%d", (pScale * 100)) .. "%");
if ( NuNOptionsFrame:IsVisible() ) then
NuNOptionsFrame:SetScale(NuNSettings[pKey].pScale);
end
if ( NuNFrame:IsVisible() ) then
NuNFrame:SetScale(NuNSettings[pKey].pScale);
end
if ( NuNGNoteFrame:IsVisible() ) then
NuNGNoteFrame:SetScale(NuNSettings[pKey].pScale);
end
if ( NuNSearchFrame:IsVisible() ) then
NuNSearchFrame:SetScale(NuNSettings[pKey].pScale);
end
end
end
function NuNFontScaleSlider_OnShow()
local tScale = NuNSettings[pKey].tScale;
NuNFontScaleSliderCurrent:SetText( string.format("%d", (tScale * 100)) .. "%");
this:SetMinMaxValues(NUN_TT_FONTSCALE_MIN, NUN_TT_FONTSCALE_MAX);
this:SetValueStep(NUN_FONTSCALE_STEP);
this:SetValue(NUN_TT_FONTSCALE_MIN + NUN_TT_FONTSCALE_MAX - tScale);
this.previousValue = this:GetValue();
end
function NuNFontScaleSlider_OnValueChanged()
local tScale;
if (this:GetValue() ~= this.previousValue) then
this.previousValue = this:GetValue();
tScale = (NUN_TT_FONTSCALE_MIN + NUN_TT_FONTSCALE_MAX - this:GetValue());
NuNSettings[pKey].tScale = tScale;
NuNFontScaleSliderCurrent:SetText( string.format("%d", (tScale * 100)) .. "%");
NuN_PinnedTooltip:SetScale(NuNSettings[pKey].tScale);
NuN_Tooltip:SetScale(NuNSettings[pKey].tScale);
end
end
function NuNMapFontScaleSlider_OnShow()
local mScale = NuNSettings[pKey].mScale;
NuNMapFontScaleSliderCurrent:SetText( string.format("%d", (mScale * 100)) .. "%");
this:SetMinMaxValues(NUN_TT_MAPFONTSCALE_MIN, NUN_TT_MAPFONTSCALE_MAX);
this:SetValueStep(NUN_MAPFONTSCALE_STEP);
this:SetValue(NUN_TT_MAPFONTSCALE_MIN + NUN_TT_MAPFONTSCALE_MAX - mScale);
this.previousValue = this:GetValue();
end
function NuNMapFontScaleSlider_OnValueChanged()
local mScale;
if (this:GetValue() ~= this.previousValue) then
this.previousValue = this:GetValue();
mScale = (NUN_TT_MAPFONTSCALE_MIN + NUN_TT_MAPFONTSCALE_MAX - this:GetValue());
NuNSettings[pKey].mScale = mScale;
NuNMapFontScaleSliderCurrent:SetText( string.format("%d", (mScale * 100)) .. "%");
mScale = UIParent:GetScale() * NuNSettings[pKey].mScale;
WorldMapTooltip:SetScale(NuNSettings[pKey].mScale);
NuN_MapTooltip:SetScale(NuNSettings[pKey].mScale);
NuNPopup:SetScale(NuNSettings[pKey].mScale);
end
end
function NuN_BuildQuestText()
local numQuestRewards, numQuestChoices, numQuestSpellRewards;
local QuestRewardMoney, QuestRequiredMoney;
local qText = "\n";
local obj, objTxt, objType, itm, itmTxt;
local gold, silver, copper, moneyTxt;
local tmpQText1 = "";
local tmpQText2 = "";
local questItem = "QuestLogItem";
local error = false;
numQuestRewards = GetNumQuestLogRewards();
numQuestChoices = GetNumQuestLogChoices();
if ( GetQuestLogRewardSpell() ) then
numQuestSpellRewards = 1;
end
QuestRewardMoney = GetQuestLogRewardMoney();
QuestRequiredMoney = GetQuestLogRequiredMoney();
tmpQText1, tmpQText2 = GetQuestLogQuestText();
qText = tmpQText2.."\n\n";
if ( GetQuestLogTimeLeft() ) then
qText = qText.."\nTimed Quest\n";
end
if ( QuestRequiredMoney ) and ( QuestRequiredMoney > 0 ) then
if ( QuestRequiredMoney > 9999 ) then
gold = ( QuestRequiredMoney / 10000 );
gold = string.format("%d", gold);
QuestRequiredMoney = QuestRequiredMoney - ( gold * 10000 );
else
gold = 0;
end
if ( QuestRequiredMoney > 99 ) then
silver = ( QuestRequiredMoney / 100 );
silver = string.format("%d", silver);
QuestRequiredMoney = QuestRequiredMoney - ( silver * 100 );
else
silver = 0;
end
copper = QuestRequiredMoney;
QuestRequiredMoneyTxt = string.format("\n%dg %ds %dc", gold, silver, copper);
qText = qText..QuestRequiredMoneyTxt.."\n\n";
end
qText = qText.."\n\n"..tmpQText1.."\n";
if ( ( QuestRewardMoney ) and ( QuestRewardMoney > 0 ) ) or ( numQuestRewards > 0 ) then
qText = qText.."\n"..NUN_REWARDS.."\n";
end
if ( QuestRewardMoney ) and ( QuestRewardMoney > 0 ) then
QuestRewardMoneyTxt = NuN_BuildMoneyString(QuestRewardMoney);
qText = qText..QuestRewardMoneyTxt.."\n";
end
for i=1, numQuestRewards, 1 do
bttn = getglobal("QuestLogItem"..i + numQuestChoices);
if ( bttn.type ) then
local link = GetQuestLogItemLink(bttn.type, bttn:GetID());
if ( link ) then
qText = qText..link.."\n";
else
link = GetQuestLogItemLink(bttn.type, ( i + numQuestChoices ) );
if ( link ) then
qText = qText..link.."\n";
else
error = true;
qText = NUN_SLOWSERVER.." : NuN Err03";
return qText, error;
end
end
end
end
if ( numQuestChoices > 1 ) then
qText = qText.."\n"..NUN_CHOICES.."\n";
end
for i=1, numQuestChoices, 1 do
bttn = getglobal("QuestLogItem"..i);
if ( bttn.type ) then
local link = GetQuestLogItemLink(bttn.type, bttn:GetID());
if ( link ) then
if ( i > 1 ) then
qText = qText.." / "..link;
else
qText = qText..link;
end
else
link = GetQuestLogItemLink(bttn.type, i);
if ( link ) then
if ( i > 1 ) then
qText = qText.." / "..link;
else
qText = qText..link;
end
else
error = true;
qText = NUN_SLOWSERVER.." : NuN Err03";
return qText, error;
end
end
end
end
if ( qText ) then
qText = NuN_CleanQuestText(qText);
end
return qText, error;
end
function NuN_CheckQuestList(findName)
local qTitle, qLevel, qTag, qHeader, qCollapsed, qComplete;
local foundIndex = -1;
local rLevel, rTag, rComplete;
NuNQuestLog = {};
for i = 1, GetNumQuestLogEntries(), 1 do
qTitle, qLevel, qTag, qHeader, qCollapsed, qComplete = GetQuestLogTitle(i);
if ( ( qTitle ) and ( not qHeader ) ) then
NuNQuestLog[qTitle] = 1;
if ( ( findName ) and ( findName == qTitle ) ) then
foundIndex = i;
rLevel = qLevel;
rTag = qTag;
rComplete = qComplete;
end
end
end
return foundIndex, rLevel, rTag, rComplete;
end
function NuN_UpdateQuestNotes(qEvent)
local quest, qLevel, qTag, qHeader, qCollapsed, qComplete;
qTriggs = 0;
if ( pFaction ) then
for qI=1, GetNumQuestLogEntries(), 1 do
quest, qLevel, qTag, qHeader, qCollapsed, qComplete = GetQuestLogTitle(qI);
if ( ( quest ) and ( not qHeader ) ) then
NuN_ProcessQuest(quest, qLevel, qTag, qHeader, qCollapsed, qComplete, qI);
end
end
end
if ( qTriggs > 2 ) then
timeSinceLastUpdate = 0;
NuN_QuestsUpdating = "True";
end
end
function NuN_ProcessQuest(quest, qLevel, qTag, qHeader, qCollapsed, qComplete, qI)
local saveLvl = nil;
local qText;
local location = NuN_GetLoc();
local l_c_note = c_note;
local l_g_text = g_text;
local l_c_name = c_name;
if ( ( NuNData[pKey].QuestHistory[pName][quest] ) and ( NuNData[pKey].QuestHistory[pName][quest].abandoned ) ) then
NuNData[pKey].QuestHistory[pName][quest].abandoned = nil;
return;
end
QuestLog_SetSelection(qI);
local qChar = NuN_CheckTarget();
if ( qChar == "N" ) then
qChar = c_note;
else
qChar = "";
end
if ( ( not NuNData[pKey].QuestHistory[pName][quest] ) and ( NuNSettings[pKey].autoQ ) ) then
NuNData[pKey].QuestHistory[pName][quest] = {};
NuNData[pKey].QuestHistory[pName][quest].sortDate = tostring(date("%Y%m%d%H%M%S"))..":"..qI;
NuNData[pKey].QuestHistory[pName][quest].pLevel = UnitLevel("player");
NuNData[pKey].QuestHistory[pName][quest].txt = NUN_CREATED.." "..qChar.."\n "..NuN_GetDateStamp().."\n "..location.."\n";
qTriggs = qTriggs + 1;
end
local chk = NuN_CleanQuestText( GetQuestLogQuestText() );
if ( qLevel == nil ) then
qLevel = "--";
end
if ( qTag == nil ) then
qTag = "";
end
if ( qChar ~= "" ) then
qChar = qChar.." "..NuN_LocStrip(location);
end
qText = "\n"..quest.." "..NUN_QLVL..qLevel.." "..qTag.."\n"..qChar.."\n\n"..NuN_BuildQuestText().."\n";
if ( not string.find(chk, "Unknown Entity") ) then
if ( ( qComplete ) and ( NuNData[pKey].QuestHistory[pName][quest] ) and ( ( not NuNData[pKey].QuestHistory[pName][quest].complete ) or ( ( NuNData[pKey].QuestHistory[pName][quest].complete ~= chk ) and ( string.find(qText, chk) ) ) ) ) then
NuNData[pKey].QuestHistory[pName][quest].complete = chk;
NuNData[pKey].QuestHistory[pName][quest].txt = NuNData[pKey].QuestHistory[pName][quest].txt.."\n\n"..NUN_COMPLETE.."\n "..NuN_GetDateStamp().."\n "..location.."\n";
end
if ( NuNData[Notes][quest] ) then
c_note = quest;
g_text = NuN_GetGText(c_note);
if ( ( not string.find( g_text, chk) ) and ( string.find(qText, chk) ) ) then
if ( ( NuNGNoteFrame:IsVisible() ) and ( noteTypes[NuNGNoteFrame.type].Command == "QST" ) ) then
HideUIPanel(NuNGNoteFrame);
end
g_text = g_text.."\n\n".."--------------".."\n\n"..qText;
NuN_SetGText("Account");
end
elseif ( NuNData[pKey][Notes][quest] ) then
c_note = quest;
g_text = NuN_GetGText(c_note);
if ( ( not string.find( g_text, chk ) ) and ( string.find(qText, chk) ) ) then
if ( ( NuNGNoteFrame:IsVisible() ) and ( noteTypes[NuNGNoteFrame.type].Command == "QST" ) ) then
HideUIPanel(NuNGNoteFrame);
end
g_text = g_text.."\n\n".."--------------".."\n\n"..qText;
NuN_SetGText("Realm");
end
elseif ( ( not NuNData[Notes][quest] ) and ( not NuNData[pKey][Notes][quest] ) and ( NuNSettings[pKey].autoQ ) ) then
if ( NuNSettings[pKey].dLevel ) then
NuNData[Notes][quest] = {};
NuNData[Notes][quest].type = 5;
saveLvl = "Account";
else
NuNData[pKey][Notes][quest] = {};
NuNData[pKey][Notes][quest].type = 5;
saveLvl = "Realm";
end
c_note = quest;
g_text = qText;
NuN_SetGText(saveLvl);
if ( ( qChar ~= "" ) and ( NuNSettings[pKey].autoMapNotes ) ) then
NuN_MapNote("Target", NUN_QUEST_GIVER, "", 9);
end
end
end
c_note = l_c_note;
g_text = l_g_text;
c_name = l_c_name;
end
function NuN_AbandonQuest(qTitle)
if ( NuNData[pKey].QuestHistory[pName][qTitle] ) then
NuNData[pKey].QuestHistory[pName][qTitle].abandoned = true;
if ( NuNQuestLog[qTitle] ) then
NuNQuestLog[qTitle] = nil;
end
end
end
function NuN_QuestHandIn(q)
if ( NuNData[pKey].QuestHistory[pName][q] ) then
local l_c_note = c_note;
local l_c_name = c_name;
local qChar = NuN_CheckTarget();
if ( qChar == "N" ) then
qChar = c_note;
else
qChar = "";
end
NuNData[pKey].QuestHistory[pName][q].handedIn = 1;
NuNData[pKey].QuestHistory[pName][q].txt = NuNData[pKey].QuestHistory[pName][q].txt.."\n\n"..NUN_FINISHED.." "..qChar.."\n "..NuN_GetDateStamp().."\n "..NuN_GetLoc().."\n";
c_note = l_c_note;
c_name = l_c_name;
end
end
function NuN_InitialiseSavedVariables()
local index, value;
pKey = GetCVar("realmName");
if (not NuNData[pKey]) then
NuNData[pKey] = {};
NuNSettings[pKey] = {};
NuNSettings[pKey].toolTips = "1";
NuNSettings[pKey].pScale = 1.00;
NuNSettings[pKey].tScale = 1.00;
NuNSettings[pKey].mScale = 1.00;
NuNSettings[pKey].ttLen = NUN_TT_MAX;
NuNSettings[pKey].ttLLen = NUN_TT_LEN;
NuNData[pKey][Notes] = {};
NuNSettings[pKey].minOver = "1";
NuNSettings[pKey].dLevel = "1";
end
if ( not NuNSettings.Version ) then
for index, value in NuNSettings do
if ( index ~= "Version" ) then
NuNSettings[index].toolTips = "1";
NuNSettings[index].pScale = 1.00;
NuNSettings[index].tScale = 1.00;
NuNSettings[index].mScale = 1.00;
NuNSettings[index].ttLen = NUN_TT_MAX;
NuNSettings[index].ttLLen = NUN_TT_LEN;
NuNSettings[index].minOver = "1";
NuNSettings[pKey].dLevel = "1";
end
end
NuNSettings.Version = NUN_VERSION;
end
if ( NuNSettings.Version < "2.51" ) then
for index, value in NuNSettings do
if ( index ~= "Version" ) then
NuNSettings[index].mScale = 1.00;
NuNSettings[index].minOver = "1";
end
end
NuNSettings.Version = NUN_VERSION;
end
if ( NuNSettings.Version < "3.00" ) then
for index, value in NuNSettings do
if ( index ~= "Version" ) then
NuNSettings[index].mScale = 1.00;
end
end
NuNSettings.Version = NUN_VERSION;
end
if ( NuNSettings.Version < NUN_VERSION ) then
NuNSettings.Version = NUN_VERSION;
end
if ( not NuNData[itmIndex] ) then
NuNData[itmIndex] = {};
end
if ( not NuNData[Notes] ) then
NuNData[Notes] = {};
end
if ( not NuNData[pKey].QuestHistory ) then
NuNData[pKey].QuestHistory = {};
end
if ( not NuNData[pKey].QuestHistory[pName] ) then
NuNData[pKey].QuestHistory[pName] = {};
end
if ( not NuNData[mrgIndex] ) then
NuNData[mrgIndex] = {};
end
end
function NuN_OptionsTextLengthSet()
local len = this:GetText();
if ( len ) then
NuNSettings[pKey].ttLen = len;
else
NuNSettings[pKey].ttLen = "0";
end
end
function NuN_OptionsTextLineLengthSet()
local len = this:GetText();
if ( len ) then
NuNSettings[pKey].ttLLen = len;
else
NuNSettings[pKey].ttLLen = "0";
end
end
function NuN_FetchQuestHistory()
local index, value;
local counter = 0;
local results = 0;
foundNuN = {};
for index, value in NuNData[pKey].QuestHistory[pName] do
counter = counter + 1;
foundNuN[counter] = NUN_QUEST_C..index;
end
table.sort(foundNuN, NuN_SortQuestHistory);
results = getn(foundNuN);
NuNSearchTitleText:SetText(pName.."'s "..NUN_QUESTS_TEXT.." ("..results..")");
NuNSearch_Update();
if ( ( deletedE ) and ( visibles > 0 ) and ( lastBttn ~= nil ) ) then
deletedE = false;
if ( lastBttnIndex > visibles ) then
NuNSearch_HighlightRefresh(lastVisible);
NuNSearchNote_OnClick(lastVisible);
else
NuNSearch_HighlightRefresh(lastBttn);
NuNSearchNote_OnClick(lastBttn);
end
else
NuNSearch_HighlightRefresh(nil);
end
end
function NuN_SortQuestHistory(ele1, ele2)
ele1 = string.sub(ele1, 2);
ele2 = string.sub(ele2, 2);
if ( NuNData[pKey].QuestHistory[pName][ele1].sortDate > NuNData[pKey].QuestHistory[pName][ele2].sortDate ) then
return true;
end
return false;
end
function NuN_CleanQuestText(dirtyText)
local cleanText = string.gsub(dirtyText, pName, NUN_REPLACEQNAME_TXT);
cleanText = string.gsub(cleanText, "$N", NUN_REPLACEQNAME_TXT);
local class = UnitClass("player");
cleanText = string.gsub(cleanText, class, NUN_REPLACEQCLASS_TXT);
cleanText = string.gsub(cleanText, strlower(class), NUN_REPLACEQCLASS_TXT);
return cleanText;
end
function NuN_ToggleMicroButtons()
if ( NuNMicroFrame:IsVisible() ) then
HideUIPanel(NuNMicroFrame);
NuNSettings[pKey].hideMicro = "1";
else
ShowUIPanel(NuNMicroFrame);
NuNSettings[pKey].hideMicro = nil;
end
end
function NuN_ProcessParty()
local pChanged = nil;
local lMember, index, value;
local partyA = {};
local lMembers = GetNumPartyMembers();
if ( not NuNData[pKey][NuN_Parties] ) then
NuNData[pKey][NuN_Parties] = {};
end
if ( ( not NuNData[pKey][NuN_Parties][pName] ) or ( ( not UnitInRaid("player") ) and ( lMembers == 0 ) ) ) then
NuNData[pKey][NuN_Parties][pName] = {};
end
for i = 1, lMembers, 1 do
lMember = UnitName("party"..i);
if ( lMember == "Unknown Entity" ) then
return;
end
if ( lMember ) then
partyA[lMember] = {};
partyA[lMember].pos = i;
if ( not NuNData[pKey][NuN_Parties][pName][lMember] ) then
NuNData[pKey][NuN_Parties][pName][lMember] = {};
NuNData[pKey][NuN_Parties][pName][lMember].pos = i;
if ( not NuNData[pKey][lMember] ) then
NuNData[pKey][lMember] = {};
NuNData[pKey][lMember].type = NUN_PARTY_C;
NuNData[pKey][lMember].faction = pFaction;
NuNData[pKey][lMember][txtTxt] = NUN_AUTO_PARTIED..NuN_GetDateStamp();
NuNData[pKey][lMember][pName] = {};
NuNData[pKey][lMember][pName].partied = 1;
else
if ( not NuNData[pKey][lMember][pName] ) then
NuNData[pKey][lMember][pName] = {};
NuNData[pKey][lMember][pName].partied = 1;
elseif ( not NuNData[pKey][lMember][pName].partied ) then
NuNData[pKey][lMember][pName].partied = 1;
else
NuNData[pKey][lMember][pName].partied = NuNData[pKey][lMember][pName].partied + 1;
end
end
end
end
end
for index, value in NuNData[pKey][NuN_Parties][pName] do
if ( not partyA[index] ) then
if ( UnitInRaid("player") ) then
local rID = NuN_CheckRaidByName(index);
if ( not rID ) then
NuNData[pKey][NuN_Parties][pName][index] = nil;
end
else
NuNData[pKey][NuN_Parties][pName][index] = nil;
end
end
end
end
function NuN_PartyDownButton_OnClick()
local lParties = NuNData[pKey][c_name][pName].partied;
lParties = lParties - 1;
if ( lParties < 1 ) then
NuNData[pKey][c_name][pName].partied = nil;
NuNPartiedLabel:Hide();
NuNPartiedNumberLabel:SetText("(0)");
NuNPartiedNumberLabel:Hide();
NuNFramePartyDownButton:Hide();
else
NuNData[pKey][c_name][pName].partied = lParties;
NuNPartiedNumberLabel:SetText("(x"..tostring(lParties)..")");
end
end
function NuN_PartyDownButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_PDOWN_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_PDOWN_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_PDOWN_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_bHaveTTCheckBox_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
NuN_Tooltip:SetOwner(this);
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_BHAVE_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_BHAVE_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_BHAVE_TXT3, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_BHAVE_TXT4, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_BHAVE_TXT5, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_BuildShoppingList()
local listText = "";
local mName = MerchantNameText:GetText();
if ( mName == c_note ) then
local iPrice, iPriceTxt, iQuant, iNumAvail, iLink, iDiscard;
local numMerchantItems = GetMerchantNumItems();
for i=1, numMerchantItems, 1 do
iLink = GetMerchantItemLink(i);
if ( iLink ) then
listText = listText.."\n"..iLink;
end
iDiscard, iDiscard, iPrice, iQuant, iNumAvail = GetMerchantItemInfo(i);
if ( ( iQuant ) and ( iQuant > 1 ) ) then
listText = listText.." ("..iQuant..") ";
end
if ( ( iPrice ) and ( iPrice > 0 ) ) then
iPriceTxt = NuN_BuildMoneyString(iPrice);
listText = listText.." "..iPriceTxt;
end
if ( ( iNumAvail ) and ( iNumAvail > 0 ) ) then
listText = listText.." "..NUN_LIMITED;
end
end
end
if ( listText == "" ) then
return nil;
else
return listText;
end
end
function NuN_BuildMoneyString(moneyVal)
local moneyTxt = nil;
local gold, silver, copper;
if ( ( moneyVal ) and ( moneyVal > 0 ) ) then
if ( moneyVal > 9999 ) then
gold = ( moneyVal / 10000 );
gold = string.format("%d", gold);
moneyVal = moneyVal - ( gold * 10000 );
else
gold = 0;
end
if ( moneyVal > 99 ) then
silver = ( moneyVal / 100 );
silver = string.format("%d", silver);
moneyVal = moneyVal - ( silver * 100 );
else
silver = 0;
end
copper = moneyVal;
moneyTxt = string.format("%dg %ds %dc", gold, silver, copper);
end
return moneyTxt;
end
function NuN_SaveOpen()
if ( NuNFrame:IsVisible() ) then
NuN_WriteNote();
end
if ( NuNGNoteFrame:IsVisible() ) then
NuNGNote_WriteNote();
end
end
function NuN_TextEscape(lFrame, lText)
if ( NuNSettings[pKey].bHave ) then
lText:ClearFocus();
if ( ( lText:GetText() == nil ) or ( lText:GetText() == "" ) ) then
lText:SetText("\n");
end
else
HideUIPanel(lFrame);
end
end
function NuN_OverTTCheckBox_OnClick()
if ( NuN_OverTTCheckBox:GetChecked() ) then
NuNSettings[pKey].minOver = "1";
else
NuNSettings[pKey].minOver = nil;
end
end
function NuN_AutoPartyCheckBox_OnClick()
if ( NuN_AutoPartyCheckBox:GetChecked() ) then
NuNSettings[pKey].autoP = "1";
NuN_ProcessParty();
else
NuNSettings[pKey].autoP = nil;
end
end
function NuN_BehaveCheckBox_OnClick()
if ( NuN_BehaveCheckBox:GetChecked() ) then
NuNSettings[pKey].bHave = "1";
else
NuNSettings[pKey].bHave = nil;
end
end
function NuN_DeleteNote(dType)
if ( NuNcDeleteFrame:IsVisible() ) then
NuNcDeleteFrame:Hide();
end
NuNcDeleteFrame.type = dType;
if ( dType == "Contact" ) then
NuNcDeleteLabel:SetText(NUN_CONTACT_TXT.." :\n"..c_name);
ShowUIPanel(NuNcDeleteFrame);
NuNText:ClearFocus();
NuNcDeleteGhostTextBox:SetFocus();
else
if ( NuNGNoteFrame.fromQuest ) then
NuNcDeleteLabel:SetText(NUN_QUEST_NOTE.." :\n"..c_note);
else
NuNcDeleteLabel:SetText(NUN_GENERAL_TXT.." :\n"..c_note);
end
ShowUIPanel(NuNcDeleteFrame);
NuNGNoteTextScroll:ClearFocus();
NuNcDeleteGhostTextBox:SetFocus();
end
end
function NuNcDeleteButton_OnClick()
if ( NuNcDeleteFrame.type == "Contact" ) then
HideUIPanel(NuNcDeleteFrame);
NuN_Delete();
elseif ( NuNcDeleteFrame.type == "General" ) then
HideUIPanel(NuNcDeleteFrame);
NuNGNote_Delete();
end
end
function NuN_LocStrip(locData)
if ( locData ) then
local p = string.find(locData, " : ");
if ( p ) then
locData = string.sub(locData, (p+3));
end
end
return locData;
end
function NuN_MapNote(MNType, MNxtra1, MNxtra2, MNColour)
local MNCont, MNZone, x, y;
local checknote = nil;
local nKey = nil;
if ( ( MetaMapNotes_OnLoad ) or ( MapNotes_OnLoad ) ) then
else
return;
end
MNCont, MNZone, x, y, checknote, nKey = NuN_GetMapNotesKey();
if ( ( not MNCont ) or ( ( x == 0 ) and ( y == 0 ) ) ) then
if ( MetaMapNotes_OnLoad ) then
MetaMap_StatusPrint(METAMAPNOTES_QUICKNOTE_NOPOSITION);
elseif ( MapNotes_OnLoad ) then
MapNotes_StatusPrint(MAPNOTES_QUICKNOTE_NOPOSITION);
end
return;
end
local MNLine1, MNLine2, MNAuthor, NuN_Reaction;
local MNName;
local tName = UnitName("target");
if ( ( MNType == "Target" ) and ( tName ) and ( not UnitPlayerControlled("target") ) ) then
NuN_Reaction = UnitReaction("player", "target");
if ( not MNColour ) then
if ( NuN_Reaction < 4 ) then
MNColour = 1;
elseif ( NuN_Reaction == 4 ) then
MNColour = 0;
end
end
MNName = UnitName("target");
else
MNName = c_note;
end
if ( not MNColour ) then
MNColour = 3;
end
local theData;
if ( MetaMapNotes_OnLoad ) then
theData = MetaMapNotes_Data[MNCont];
elseif ( MapNotes_OnLoad ) then
theData = MapNotes_Data[MNCont];
end
if (checknote) then
if ( ( inBG ) and ( MNName == theData[checknote].name ) ) then
NuN_ReLinkMapNote(MNName, MNCont, MNZone, checknote);
return;
elseif ( ( not inBG ) and ( MNName == theData[MNZone][checknote].name ) ) then
NuN_ReLinkMapNote(MNName, MNCont, MNZone, checknote);
return;
end
local mergeFailed = NuN_MergeMapNote(MNCont, MNZone, checknote, MNName, nKey, MNxtra1, MNxtra2);
if ( mergeFailed ) then
local repName;
if ( inBG ) then
repName = theData[checknote].name;
else
repName = theData[zone][checknote].name;
end
if ( MetaMapNotes_OnLoad ) then
MetaMap_StatusPrint( format(METAMAPNOTES_QUICKNOTE_NOTETONEAR, repName));
elseif ( MapNotes_OnLoad ) then
MapNotes_StatusPrint( format(MAPNOTES_QUICKNOTE_NOTETONEAR, repName));
end
NuN_Message( NUN_MAX_MERGED );
end
else
MNLine1 = MNxtra1;
MNLine2 = MNxtra2;
MNAuthor = "NotesUNeed - "..pName;
NuN_WriteMapNote(MNCont, MNZone, x, y, MNColour, MNName, MNLine1, MNLine2, MNAuthor);
end
end
function NuN_ReLinkMapNote(MNName, MNCont, MNZone, tmpID)
local NuN_Key = MNCont.."-"..MNZone.."-"..tmpID;
if ( not NuNData[mrgIndex] ) then
NuNData[mrgIndex] = {};
end
if ( not NuNData[mrgIndex][NuN_Key] ) then
NuNData[mrgIndex][NuN_Key] = {};
NuNData[mrgIndex][NuN_Key].noteCounter = 0;
end
if ( NuNData[mrgIndex][NuN_Key][MNName] ) then
NuN_Message(NUN_NOTESUNEED_INFO);
return;
end
if ( not NuNData[mrgIndex][NuN_Key].noteCounter ) then
NuNData[mrgIndex][NuN_Key].noteCounter = 0;
end
NuNData[mrgIndex][NuN_Key].noteCounter = NuNData[mrgIndex][NuN_Key].noteCounter + 1;
NuNData[mrgIndex][NuN_Key][MNName] = "1";
if ( MetaMapNotes_OnLoad ) then
NuN_Message("NotesUNeed <> MetaMapNote");
elseif ( MapNotes_OnLoad ) then
NuN_Message("NotesUNeed <> MapNote");
end
end
function NuN_MergeMapNote(MNCont, MNZone, id, MNName, NuN_Key, MNxtra1, MNxtra2)
local Merged = nil;
local MNLine1, MNLine2, MNAuthor;
local mrgEntry = nil;
local oriNote;
local mapNoted = true;
local theData;
if ( MetaMapNotes_OnLoad ) then
if ( inBG ) then
theData = MetaMapNotes_Data[MNCont];
else
theData = MetaMapNotes_Data[MNCont][MNZone];
end
elseif ( MapNotes_OnLoad ) then
if ( inBG ) then
theData = MapNotes_Data[MNCont];
else
theData = MapNotes_Data[MNCont][MNZone];
end
else
return;
end
oriNote = theData[id].name;
if ( not string.find(oriNote, MNName) ) then
mapNoted = nil;
end
if ( not NuNData[mrgIndex] ) then
NuNData[mrgIndex] = {};
end
if ( not NuNData[mrgIndex][NuN_Key] ) then
NuNData[mrgIndex][NuN_Key] = {};
else
mrgEntry = true;
end
if ( mrgEntry ) then
if ( not NuNData[mrgIndex][NuN_Key].noteCounter ) then
local counter = 0;
local index, value;
for index, value in NuNData[mrgIndex][NuN_Key] do
counter = counter + 1;
end
NuNData[mrgIndex][NuN_Key].noteCounter = counter;
end
if ( NuNData[mrgIndex][NuN_Key].noteCounter > 4 ) then
return "Failed";
end
if ( NuNData[mrgIndex][NuN_Key][MNName] ) then
return nil;
else
NuNData[mrgIndex][NuN_Key].noteCounter = NuNData[mrgIndex][NuN_Key].noteCounter + 1;
NuNData[mrgIndex][NuN_Key][MNName] = "1";
end
elseif ( mapNoted ) then
NuN_ReLinkMapNote(MNName, MNCont, MNZone, id);
else
if ( ( not NuNData[Notes][oriNote] ) and ( not NuNData[pKey][Notes][oriNote] ) ) then
NuNData[mrgIndex][NuN_Key].noteCounter = 1;
NuNData[mrgIndex][NuN_Key][MNName] = "1";
else
NuNData[mrgIndex][NuN_Key].noteCounter = 2;
NuNData[mrgIndex][NuN_Key][MNName] = "1";
NuNData[mrgIndex][NuN_Key][oriNote] = "1";
end
end
if ( not mapNoted ) then
theData[id].name = theData[id].name.." | "..MNName;
theData[id].inf1 = theData[id].inf1.." | "..MNxtra1;
theData[id].inf2 = theData[id].inf2.." | "..MNxtra2;
theData[id].creator = NUN_POPUP_TITLE.." - "..pName;
end
if ( MetaMapNotes_OnLoad ) then
MetaMap_StatusPrint( format(NUN_MERGING.." "..theData[id].name) );
elseif ( MapNotes_OnLoad ) then
MapNotes_StatusPrint( format(NUN_MERGING.." "..theData[id].name) );
end
return nil;
end
function NuN_WriteMapNote(MNCont, MNZone, x, y, MNColour, MNName, MNLine1, MNLine2, MNAuthor)
local id = 0;
local NuN_Key;
local theData, theMiniData;
local NuN_SetNextAsMiniNote;
local numNotes, i, j, tmpID;
if ( MetaMapNotes_OnLoad ) then
if ( inBG ) then
theData = MetaMapNotes_Data[MNCont];
else
theData = MetaMapNotes_Data[MNCont][MNZone];
end
theMiniData = MetaMapNotes_MiniNote_Data;
NuN_SetNextAsMiniNote = MetaMapNotes_SetNextAsMiniNote;
numNotes = MetaMapNotes_NotesPerZone;
i = MetaMapNotes_GetZoneTableSize(theData);
elseif ( MapNotes_OnLoad ) then
if ( inBG ) then
theData = MapNotes_Data[MNCont];
else
theData = MapNotes_Data[MNCont][MNZone];
end
theMiniData = MapNotes_MiniNote_Data;
NuN_SetNextAsMiniNote = MapNotes_SetNextAsMiniNote;
numNotes = MapNotes_NotesPerZone;
i = 0;
for j, value in MapNotes_Data[MNCont][MNZone] do
i = i + 1;
end
else
return;
end
if (NuN_SetNextAsMiniNote ~= 2) then
if (i < numNotes) then
tmpID = i + 1;
theData[tmpID] = {};
theData[tmpID].name = MNName;
theData[tmpID].ncol = 0;
theData[tmpID].inf1 = MNLine1;
theData[tmpID].in1c = 0;
theData[tmpID].inf2 = MNLine2;
theData[tmpID].in2c = 0;
theData[tmpID].creator = MNAuthor;
theData[tmpID].icon = MNColour;
theData[tmpID].xPos = x;
theData[tmpID].yPos = y;
if ( MetaMapNotes_OnLoad ) then
MetaMap_StatusPrint(format(METAMAPNOTES_QUICKNOTE_OK, GetRealZoneText()));
else
MapNotes_StatusPrint(format(MAPNOTES_QUICKNOTE_OK, GetRealZoneText()));
end
NuN_Key = MNCont.."-"..MNZone.."-"..tmpID;
if ( not NuNData[mrgIndex] ) then
NuNData[mrgIndex] = {};
end
if ( not NuNData[mrgIndex][NuN_Key] ) then
NuNData[mrgIndex][NuN_Key] = {};
end
NuNData[mrgIndex][NuN_Key].noteCounter = 1;
NuNData[mrgIndex][NuN_Key][MNName] = "1";
else
if ( MetaMapNotes_OnLoad ) then
MetaMap_StatusPrint(format(METAMAPNOTES_QUICKNOTE_TOOMANY, GetRealZoneText()));
elseif ( MapNotes_OnLoad ) then
MapNotes_StatusPrint(format(MAPNOTES_QUICKNOTE_TOOMANY, GetRealZoneText()));
end
end
end
if (NuN_SetNextAsMiniNote ~= 0) then
theMiniData.xPos = x;
theMiniData.yPos = y;
theMiniData.MNCont = MNCont;
theMiniData.MNZone = MNZone;
theMiniData.id = id;
theMiniData.name = MNName;
theMiniData.color = 0;
theMiniData.icon = MNColour;
MiniNotePOITexture:SetTexture("Interface\\AddOns\\MapNotes\\POIIcons\\Icon"..MNColour);
MiniNotePOI:Show();
if ( MetaMapNotes_OnLoad ) then
MetaMapNotes_SetNextAsMiniNote = 0;
MetaMap_StatusPrint(METAMAPNOTES_SETMININOTE.." - "..MNName);
elseif ( MapNotes_OnLoad ) then
MapNotes_SetNextAsMiniNote = 0;
MapNotes_StatusPrint(MAPNOTES_SETMININOTE.." - "..MNName);
end
end
end
function NuN_GetMapNotesKey()
local id = nil;
local nKey = nil;
local x, y;
local MNCont = nil;
local MNZone = nil;
inBG = false;
SetMapToCurrentZone();
MNCont = GetCurrentMapContinent();
if ( MetaMapNotes_OnLoad ) then
if ( MNCont == -1 ) then
if ( not MetaMapNotes_Data[GetRealZoneText()] ) then
MetaMapNotes_Data[GetRealZoneText()] = {};
end
MNCont = GetRealZoneText();
MNZone = 0;
inBG = true;
else
MNZone = MetaMapNotes_ZoneShift[MNCont][GetCurrentMapZone()];
if ( not MetaMapNotes_Data[MNCont][MNZone] ) then
MetaMapNotes_Data[MNCont][MNZone] = {};
end
end
elseif ( MapNotes_OnLoad ) then
if ( MNCont == -1 ) then
if ( not MapNotes_Data[GetRealZoneText()] ) then
MapNotes_Data[GetRealZoneText()] = {};
end
MNCont = GetRealZoneText();
MNZone = 0;
inBG = true;
else
MNZone = MapNotes_ZoneShift[MNCont][GetCurrentMapZone()];
if ( not MapNotes_Data[MNCont][MNZone] ) then
MapNotes_Data[MNCont][MNZone] = {};
end
end
end
x, y = GetPlayerMapPosition("player");
if ( ( ( x == 0 ) and ( y == 0 ) ) or ( MNCont == 0 ) ) then
return nil;
end
if ( inBG ) then
id = NuN_ProximityCheck(MNCont, x, y);
elseif ( MetaMapNotes_OnLoad ) then
id = MetaMapNotes_CheckNearNotes(MNCont, MNZone, x, y);
elseif ( MapNotes_OnLoad ) then
id = MapNotes_CheckNearNotes(MNCont, MNZone, x, y);
end
if ( id ) then
nKey = MNCont.."-"..MNZone.."-"..id;
end
return MNCont, MNZone, x, y, id, nKey;
end
function NuN_ProximityCheck(theBG, xPos, yPos)
local chkData = {};
local minDiff;
local chkData = {};
if ( MetaMapNotes_OnLoad ) then
chkData = MetaMapNotes_Data[theBG];
minDiff = MetaMapNotes_MinDiff;
elseif ( MapNotes_OnLoad ) then
chkData = MapNotes_Data[theBG];
minDiff = MapNotes_MinDiff;
end
if ( ( not minDiff ) or ( minDiff == 0 ) ) then
minDiff = 7;
end
if ( not chkData ) then
return;
end
local i = 1;
for j, value in chkData do
local deltax = abs(chkData[i].xPos - xPos);
local deltay = abs(chkData[i].yPos - yPos);
if(deltax <= 0.0009765625 * minDiff and deltay <= 0.0013020833 * minDiff) then
return i;
end
i = i + 1;
end
return nil;
end
function NuN_AutoMapCheckBox_OnClick()
if ( NuN_AutoMapCheckBox:GetChecked() ) then
NuNSettings[pKey].autoMapNotes = "1";
else
NuNSettings[pKey].autoMapNotes = nil;
end
end
function NuN_AutoMapCheckBox_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_MAPCHECK_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_MAPCHECK_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_MAPCHECK_TXT3, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_MAPCHECK_TXT4, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_MAPCHECK_TXT5, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_HyperButton_OnClick(nType)
local p1, p2;
local linkA = {};
local aCounter = 0;
local lText, lTextLen;
if ( nType == "Contact" ) then
lText = NuNText:GetText();
elseif ( nType == "General" ) then
lText = NuNGNoteTextScroll:GetText();
else
NuN_Message(NUN_LINKFAILURE);
return;
end
lTextLen = string.len(lText);
p1 = string.find(lText, "|Hitem");
while ( ( p1 ) and ( p1 > 10 ) ) do
p2 = string.find(lText, "|h|r", p1);
if ( ( not p2 ) or ( (p2+3) > lTextLen ) ) then
break;
end
p1 = p1 - 10;
p2 = p2 + 3;
local link = string.sub(lText, p1, p2);
aCounter = aCounter + 1;
linkA[aCounter] = link;
p1 = string.find(lText, "|Hitem", (p2+1));
end
local loops = getn(linkA);
if ( loops ) and ( loops > 0 ) then
for i=1, loops, 1 do
DEFAULT_CHAT_FRAME:AddMessage(linkA[i]);
end
else
NuN_Message(NUN_NOLINKS);
end
end
function NuN_HyperButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPRIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_TOPLEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_HYPERLINKS_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_HYPERLINKS_TXT2, 0, 1, 0);
NuN_Tooltip:AddLine(NUN_TT_HYPERLINKS_TXT3, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuNPopup_OnClick(bttn, noteN)
if ( IsAltKeyDown() ) then
if ( bttn == "LeftButton" ) then
HideUIPanel(WorldMapFrame);
if ( NuNGNoteFrame:IsVisible() ) then
if ( c_note == noteN ) then
return;
end
NuNGNoteFrame:Hide();
end
NuNGNoteFrame.fromQuest = nil;
c_note = noteN;
NuN_ShowSavedGNote();
elseif ( bttn == "RightButton" ) then
NuN_DeleteMapIndexNote(NuNPopup.id, noteN);
end
end
end
function NuNPopup_OnShow()
popUpHide = nil;
end
function NuNPopup_OnUpdate(arg1)
popUpTimeSinceLastUpdate = popUpTimeSinceLastUpdate + arg1;
if ( popUpTimeSinceLastUpdate > popUpUpdateInterval ) then
if ( ( popUpHide ) and ( not MouseIsOver(NuNPopup) ) ) then
NuNPopup:Hide();
end
popUpTimeSinceLastUpdate = 0;
end
end
function NuN_Message(msg)
msg = "NotesUNeed : "..msg;
if DEFAULT_CHAT_FRAME then
DEFAULT_CHAT_FRAME:AddMessage(msg, 0.64, 0.21, 0.93);
end
end
function NuN_UpdateMapNotesIndex(deletedNote)
local MNindex, MNvalue, nIndex, nValue;
for MNindex, MNvalue in NuNData[mrgIndex] do
for nIndex, nValue in NuNData[mrgIndex][MNindex] do
if ( nIndex == deletedNote ) then
NuNData[mrgIndex][MNindex][nIndex] = nil;
NuNData[mrgIndex][MNindex].noteCounter = NuNData[mrgIndex][MNindex].noteCounter - 1;
break;
end
if ( NuNData[mrgIndex][MNindex].noteCounter < 1 ) then
NuNData[mrgIndex][MNindex] = nil;
end
end
end
end
function NuN_PreDeleteMapIndex(id, cont, zone)
local nKey, lstKey, curZ, lstEntry;
if ( MetaMapNotes_OnLoad ) then
curZ = MetaMapNotes_Data;
elseif ( MapNotes_OnLoad ) then
curZ = MapNotes_Data;
end
if ( ( not cont ) or ( cont < 1 ) or ( not zone ) or ( zone < 1 ) ) then
cont = GetCurrentMapContinent();
if ( cont == -1 ) then
cont = GetRealZoneText();
zone = 0;
curZ = curZ[cont];
elseif ( cont == 0 ) then
return 0, 0, 0;
else
if ( MetaMapNotes_OnLoad ) then
zone = MetaMapNotes_ZoneShift[cont][GetCurrentMapZone()];
elseif ( MapNotes_OnLoad ) then
zone = MapNotes_ZoneShift[cont][GetCurrentMapZone()];
end
if ( ( not zone ) or ( zone < 1 ) ) then
return 0, 0, 0;
end
curZ = curZ[cont][zone];
end
end
lstEntry = NuN_GetZoneTableSize(curZ);
return cont, zone, lstEntry;
end
-- Called when a MapNote is deleted
function NuN_DeleteMapIndex(id, cont, zone, lstEntry)
local nKey = cont.."-"..zone.."-"..id;
local lstKey = cont.."-"..zone.."-"..lstEntry;
if ( NuNData[mrgIndex][nKey] ) then
NuNData[mrgIndex][nKey] = nil;
end
if ( ( lstEntry ~= 0 ) and ( nKey ~= lstKey ) and ( NuNData[mrgIndex][lstKey] ) ) then
local index, value;
NuNData[mrgIndex][nKey] = {};
for index, value in NuNData[mrgIndex][lstKey] do
NuNData[mrgIndex][nKey][index] = NuNData[mrgIndex][lstKey][index];
end
NuNData[mrgIndex][lstKey] = nil;
end
end
-- Called when Alt-Right Clicking on a button in the Popup to remove a single NuN - MapNote link
function NuN_DeleteMapIndexNote(id, noteN)
local cont = GetCurrentMapContinent();
if ( cont == -1 ) then
cont = GetRealZoneText();
zone = 0;
elseif ( cont == 0 ) then
return;
else
if ( MetaMapNotes_OnLoad ) then
zone = MetaMapNotes_ZoneShift[cont][GetCurrentMapZone()];
elseif ( MapNotes_OnLoad ) then
zone = MapNotes_ZoneShift[cont][GetCurrentMapZone()];
end
if ( ( not zone ) or ( zone < 1 ) ) then
return;
end
end
local nKey = cont.."-"..zone.."-"..id;
if ( ( NuNData[mrgIndex][nKey] ) and ( NuNData[mrgIndex][nKey][noteN] ) ) then
NuNData[mrgIndex][nKey][noteN] = nil;
NuNData[mrgIndex][nKey].noteCounter = NuNData[mrgIndex][nKey].noteCounter - 1;
if ( NuNData[mrgIndex][nKey].noteCounter < 1 ) then
NuNData[mrgIndex][nKey] = nil;
end
end
WorldMapTooltip:Hide();
NuNPopup:Hide();
NuN_MapTooltip:Hide();
end
function NuN_MapIndexHouseKeeping()
local MNindex, MNvalue;
if ( ( MetaMapNotes_OnLoad ) and ( MapNotes_OnLoad ) ) then
return;
end
for MNindex, MNvalue in NuNData[mrgIndex] do
local valid = NuN_ExtractMapNotesInfo(MNindex);
if ( not valid ) then
NuNData[mrgIndex][MNindex] = nil;
end
end
end
function NuN_ExtractMapNotesInfo(nKey)
local cont, zone, id;
local sep = "-";
local p, q;
p = string.find(nKey, sep);
if ( not p ) then
return nil;
end
q = string.find(nKey, sep, (p+1));
if ( not q ) then
return nil;
end
cont = tonumber( string.sub(nKey, 1, (p-1)) );
zone = tonumber( string.sub(nKey, (p+1), (q-1)) );
id = tonumber( string.sub(nKey, (q+1)) );
if ( MetaMapNotes_OnLoad ) then
theData = MetaMapNotes_Data;
elseif ( MapNotes_OnLoad ) then
theData = MapNotes_Data;
end
if ( ( zone == 0 ) and ( theData[cont] ) and ( theData[cont][id] ) ) then
return true;
elseif ( ( theData[cont] ) and ( theData[cont][zone] ) and ( theData[cont][zone][id] ) ) then
return true;
else
return nil;
end
end
function NuN_ValidateMapNotesVersion()
if ( MAPNOTES_VERSION ) then
local MNVersion = MAPNOTES_VERSION;
for i = 1, getn(NuN_MapNotesValidVersions), 1 do
if ( NuN_MapNotesValidVersions[1] == MNVersion ) then
return true;
end
end
if ( NuNSettings[pKey].mapNotesPlayedVersions ) then
local vs = getn(NuNSettings[pKey].mapNotesPlayedVersions);
for i = 1, vs, 1 do
if ( NuNSettings[pKey].mapNotesPlayedVersions[i] == MNVersion ) then
return true;
end
end
vs = vs + 1;
NuNSettings[pKey].mapNotesPlayedVersions[vs] = MNVersion;
else
NuNSettings[pKey].mapNotesPlayedVersions = {};
NuNSettings[pKey].mapNotesPlayedVersions[1] = MNVersion;
end
end
return nil;
end
function NuN_NotInfiniteIgored(ctact)
ctact = string.lower(ctact);
if ( ( InfinateIgnore_Config ) and ( InfinateIgnore_Config[pKey] ) and ( InfinateIgnore_Config[pKey].Ignoring ) and ( InfinateIgnore_Config[pKey].Ignoring[ctact] ) ) then
return nil;
end
return true;
end
function NuN_SaveLast(saveType)
NuN_LastOpen.type = saveType;
if ( saveType == "Contact" ) then
NuN_LastOpen.name = c_name;
elseif ( saveType == "General" ) then
NuN_LastOpen.note = c_note;
end
end
function NuN_ReOpen()
if ( NuN_LastOpen.type ) then
if ( NuN_LastOpen.type == "Contact" ) then
if ( NuNData[pKey][NuN_LastOpen.name] ) then
NuN_ShowSavedNote(NuN_LastOpen.name);
end
elseif ( NuN_LastOpen.type == "General" ) then
if ( ( NuNData[pKey][Notes][NuN_LastOpen.note] ) or ( NuNData[Notes][NuN_LastOpen.note] ) ) then
c_note = NuN_LastOpen.note;
NuN_ShowSavedGNote();
end
end
end
end
function NuN_RunButton_OnClick()
local script = NuNGNoteTextScroll:GetText();
RunScript(script);
end
function NuN_RunButton_OnEnter()
if ( NuNSettings[pKey].toolTips ) then
NuN_Fade = "False";
local x, y = GetCursorPosition();
if ( x > 500 ) then
NuN_Tooltip:SetOwner(this, "ANCHOR_RIGHT");
else
NuN_Tooltip:SetOwner(this, "ANCHOR_LEFT");
end
NuN_Tooltip:ClearLines();
NuN_Tooltip:AddLine(NUN_TT_RUN_TXT1, 1, 0.7, 0);
NuN_Tooltip:AddLine(NUN_TT_RUN_TXT2, 0, 1, 0);
NuN_Tooltip:Show();
end
end
function NuN_GetTipAnchor(theTT)
local anchorBy, anchorTo;
local x1, y1 = theTT:GetCenter();
local x2, y2 = UIParent:GetCenter();
if ( theTT == ShoppingTooltip1 ) then
anchorBy = "TOPLEFT";
anchorTo = "TOPRIGHT";
return anchorBy, anchorTo;
elseif ( theTT == ShoppingTooltip2 ) then
anchorBy = "TOPLEFT";
anchorTo = "BOTTOMLEFT";
return anchorBy, anchorTo;
end
if ( ( not x1 ) or ( not y1 ) ) then
anchorBy = "BOTTOMRIGHT";
anchorTo = "BOTTOMLEFT";
else
if ( y1 > y2 ) then
if ( x1 > x2 ) then
anchorBy = "TOPRIGHT";
anchorTo = "TOPLEFT";
else
anchorBy = "TOPLEFT";
anchorTo = "TOPRIGHT";
end
else
if ( x1 > x2 ) then
anchorBy = "BOTTOMRIGHT";
anchorTo = "BOTTOMLEFT";
else
anchorBy = "BOTTOMLEFT";
anchorTo = "BOTTOMRIGHT";
end
end
end
return anchorBy, anchorTo;
end
--------------------------------------------------------------------------------
function NuN_LocaliseDateStamp(dateStamp)
if ( ( GetLocale() ~= "enUS" ) and ( NUN_DAY_LIST ) and ( NUN_MONTH_LIST ) ) then
dateStamp = string.gsub(dateStamp, "Monday", NUN_DAY_LIST[1]);
dateStamp = string.gsub(dateStamp, "Tuesday", NUN_DAY_LIST[2]);
dateStamp = string.gsub(dateStamp, "Wednesday", NUN_DAY_LIST[3]);
dateStamp = string.gsub(dateStamp, "Thursday", NUN_DAY_LIST[4]);
dateStamp = string.gsub(dateStamp, "Friday", NUN_DAY_LIST[5]);
dateStamp = string.gsub(dateStamp, "Saturday", NUN_DAY_LIST[6]);
dateStamp = string.gsub(dateStamp, "Sunday", NUN_DAY_LIST[7]);
dateStamp = string.gsub(dateStamp, "January", NUN_MONTH_LIST[1]);
dateStamp = string.gsub(dateStamp, "February", NUN_MONTH_LIST[2]);
dateStamp = string.gsub(dateStamp, "March", NUN_MONTH_LIST[3]);
dateStamp = string.gsub(dateStamp, "April", NUN_MONTH_LIST[4]);
dateStamp = string.gsub(dateStamp, "May", NUN_MONTH_LIST[5]);
dateStamp = string.gsub(dateStamp, "June", NUN_MONTH_LIST[6]);
dateStamp = string.gsub(dateStamp, "July", NUN_MONTH_LIST[7]);
dateStamp = string.gsub(dateStamp, "August", NUN_MONTH_LIST[8]);
dateStamp = string.gsub(dateStamp, "September", NUN_MONTH_LIST[9]);
dateStamp = string.gsub(dateStamp, "October", NUN_MONTH_LIST[10]);
dateStamp = string.gsub(dateStamp, "November", NUN_MONTH_LIST[11]);
dateStamp = string.gsub(dateStamp, "December", NUN_MONTH_LIST[12]);
end
return dateStamp;
end
--------------------------------------------------------------------------------
function NuN_LangPatch(langDirection)
local toDeutschAR = {
4,
1,
2,
3
}
local toDeutschHC = {
1,
3,
5,
6,
8,
7,
2,
4
}
local toDeutschAC = {
1,
3,
5,
6,
7,
8,
2,
4
}
local toDeutschP = {
1,
12,
13,
14,
15,
16,
18,
3,
4,
5,
6,
8,
9,
10,
11,
2,
7,
17
}
local index, value;
if ( NuNData[pKey] ) then
if ( langDirection == "->de" ) then
for index, value in NuNData[pKey] do
if ( NuNData[pKey][index].faction ) then
if ( NuNData[pKey][index].faction == "Horde" ) then
if ( NuNData[pKey][index].cls ) then
NuNData[pKey][index].cls = toDeutschHC[NuNData[pKey][index].cls];
end
else
if ( NuNData[pKey][index].race ) then
NuNData[pKey][index].race = toDeutschAR[NuNData[pKey][index].race];
end
if ( NuNData[pKey][index].cls ) then
NuNData[pKey][index].cls = toDeutschAC[NuNData[pKey][index].cls];
end
end
if ( NuNData[pKey][index].prof1 ) then
NuNData[pKey][index].prof1 = toDeutschP[NuNData[pKey][index].prof1];
end
if ( NuNData[pKey][index].prof2 ) then
NuNData[pKey][index].prof2 = toDeutschP[NuNData[pKey][index].prof2];
end
end
end
elseif ( langDirection == "->en" ) then
for index, value in NuNData[pKey] do
if ( NuNData[pKey][index].faction ) then
if ( NuNData[pKey][index].faction == "Horde" ) then
if ( NuNData[pKey][index].cls ) then
NuNData[pKey][index].cls = NuNGet_TableID(toDeutschHC, NuNData[pKey][index].cls);
end
else
if ( NuNData[pKey][index].race ) then
NuNData[pKey][index].race = NuNGet_TableID(toDeutschAR, NuNData[pKey][index].race);
end
if ( NuNData[pKey][index].cls ) then
NuNData[pKey][index].cls = NuNGet_TableID(toDeutschAC, NuNData[pKey][index].cls);
end
end
if ( NuNData[pKey][index].prof1 ) then
NuNData[pKey][index].prof1 = NuNGet_TableID(toDeutschP, NuNData[pKey][index].prof1);
end
if ( NuNData[pKey][index].prof2 ) then
NuNData[pKey][index].prof2 = NuNGet_TableID(toDeutschP, NuNData[pKey][index].prof2);
end
end
end
end
end
end