Files
moonwell-client/reference/FrameXML/StaticPopup.lua

3622 lines
86 KiB
Lua

StaticPopup_DisplayedFrames = { };
STATICPOPUP_NUMDIALOGS = 4;
STATICPOPUP_TEXTURE_ALERT = "Interface\\DialogFrame\\UI-Dialog-Icon-AlertNew";
STATICPOPUP_TEXTURE_ALERTGEAR = "Interface\\DialogFrame\\UI-Dialog-Icon-AlertOther";
StaticPopupDialogs = { };
StaticPopupDialogs["CONFIRM_OVERWRITE_EQUIPMENT_SET"] = {
text = CONFIRM_OVERWRITE_EQUIPMENT_SET,
button1 = YES,
button2 = NO,
OnAccept = function (self) SaveEquipmentSet(self.data, self.selectedIcon); GearManagerDialogPopup:Hide(); end,
OnCancel = function (self) end,
OnHide = function (self) self.data = nil; self.selectedIcon = nil; end,
hideOnEscape = 1,
timeout = 0,
exclusive = 1,
whileDead = 1,
}
StaticPopupDialogs["CONFIRM_DELETE_EQUIPMENT_SET"] = {
text = CONFIRM_DELETE_EQUIPMENT_SET,
button1 = YES,
button2 = NO,
OnAccept = function (self) DeleteEquipmentSet(self.data); end,
OnCancel = function (self) end,
hideOnEscape = 1,
timeout = 0,
exclusive = 1,
whileDead = 1,
}
StaticPopupDialogs["CONFIRM_REMOVE_GLYPH"] = {
text = CONFIRM_REMOVE_GLYPH,
button1 = YES,
button2 = NO,
OnAccept = function (self)
local talentGroup = PlayerTalentFrame and PlayerTalentFrame.talentGroup or 1;
if ( talentGroup == GetActiveTalentGroup() ) then
RemoveGlyphFromSocket(self.data);
end
end,
OnCancel = function (self)
end,
hideOnEscape = 1,
timeout = 0,
exclusive = 1,
}
StaticPopupDialogs["CONFIRM_GLYPH_PLACEMENT"] = {
text = CONFIRM_GLYPH_PLACEMENT,
button1 = YES,
button2 = NO,
OnAccept = function (self) PlaceGlyphInSocket(self.data); end,
OnCancel = function (self) end,
hideOnEscape = 1,
timeout = 0,
exclusive = 1,
}
StaticPopupDialogs["CONFIRM_RESET_VIDEO_SETTINGS"] = {
text = CONFIRM_RESET_SETTINGS,
button1 = ALL_SETTINGS,
button3 = CURRENT_SETTINGS,
button2 = CANCEL,
OnAccept = function ()
VideoOptionsFrame_SetAllToDefaults();
end,
OnAlt = function ()
VideoOptionsFrame_SetCurrentToDefaults();
end,
OnCancel = function() end,
showAlert = 1,
timeout = 0,
exclusive = 1,
hideOnEscape = 1,
whileDead = 1,
}
StaticPopupDialogs["CONFIRM_RESET_AUDIO_SETTINGS"] = {
text = CONFIRM_RESET_SETTINGS,
button1 = ALL_SETTINGS,
button3 = CURRENT_SETTINGS,
button2 = CANCEL,
OnAccept = function ()
AudioOptionsFrame_SetAllToDefaults();
end,
OnAlt = function ()
AudioOptionsFrame_SetCurrentToDefaults();
end,
OnCancel = function() end,
showAlert = 1,
timeout = 0,
exclusive = 1,
hideOnEscape = 1,
whileDead = 1,
}
StaticPopupDialogs["CONFIRM_RESET_INTERFACE_SETTINGS"] = {
text = CONFIRM_RESET_INTERFACE_SETTINGS,
button1 = ALL_SETTINGS,
button3 = CURRENT_SETTINGS,
button2 = CANCEL,
OnAccept = function ()
InterfaceOptionsFrame_SetAllToDefaults();
end,
OnAlt = function ()
InterfaceOptionsFrame_SetCurrentToDefaults();
end,
OnCancel = function() end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1,
whileDead = 1,
}
StaticPopupDialogs["CONFIRM_PURCHASE_TOKEN_ITEM"] = {
text = CONFIRM_PURCHASE_TOKEN_ITEM,
button1 = YES,
button2 = NO,
OnAccept = function()
BuyMerchantItem(MerchantFrame.itemIndex, MerchantFrame.count);
end,
OnCancel = function()
end,
OnShow = function()
end,
OnHide = function()
end,
timeout = 0,
hideOnEscape = 1,
hasItemFrame = 1,
}
StaticPopupDialogs["CONFIRM_REFUND_TOKEN_ITEM"] = {
text = CONFIRM_REFUND_TOKEN_ITEM,
button1 = YES,
button2 = NO,
OnAccept = function()
local currentHonor, maxHonor = GetHonorCurrency();
local currentArenaPoints, maxArenaPoints = GetArenaCurrency();
local overflowHonor = MerchantFrame.honorPoints and ( MerchantFrame.honorPoints + currentHonor > maxHonor );
local overflowArena = MerchantFrame.arenaPoints and ( MerchantFrame.arenaPoints + currentArenaPoints > maxArenaPoints );
if ( overflowHonor and overflowArena ) then
StaticPopup_Show("CONFIRM_REFUND_MAX_HONOR_AND_ARENA", (MerchantFrame.honorPoints + currentHonor - maxHonor), (MerchantFrame.arenaPoints + currentArenaPoints - maxArenaPoints) )
elseif ( overflowHonor ) then
StaticPopup_Show("CONFIRM_REFUND_MAX_HONOR", (MerchantFrame.honorPoints + currentHonor - maxHonor) )
elseif ( overflowArena ) then
StaticPopup_Show("CONFIRM_REFUND_MAX_ARENA_POINTS", (MerchantFrame.arenaPoints + currentArenaPoints - maxArenaPoints))
else
ContainerRefundItemPurchase(MerchantFrame.refundBag, MerchantFrame.refundSlot, MerchantFrame.refundItemEquipped);
end
StackSplitFrame:Hide();
end,
OnCancel = function()
ClearCursor();
end,
OnShow = function(self)
if(MerchantFrame.price ~= 0) then
MoneyFrame_Update(self.moneyFrame, MerchantFrame.price);
end
end,
OnHide = function()
MerchantFrame_ResetRefundItem();
end,
timeout = 0,
hideOnEscape = 1,
hasItemFrame = 1,
}
StaticPopupDialogs["CONFIRM_REFUND_MAX_HONOR"] = {
text = CONFIRM_REFUND_MAX_HONOR,
button1 = YES,
button2 = NO,
OnAccept = function()
ContainerRefundItemPurchase(MerchantFrame.refundBag, MerchantFrame.refundSlot);
StackSplitFrame:Hide();
end,
OnCancel = function()
ClearCursor();
end,
OnShow = function()
end,
OnHide = function()
MerchantFrame_ResetRefundItem();
end,
timeout = 0,
hideOnEscape = 1,
}
StaticPopupDialogs["CONFIRM_REFUND_MAX_ARENA_POINTS"] = {
text = CONFIRM_REFUND_MAX_ARENA_POINTS,
button1 = YES,
button2 = NO,
OnAccept = function()
ContainerRefundItemPurchase(MerchantFrame.refundBag, MerchantFrame.refundSlot);
StackSplitFrame:Hide();
end,
OnCancel = function()
ClearCursor();
end,
OnShow = function()
end,
OnHide = function()
MerchantFrame_ResetRefundItem();
end,
timeout = 0,
hideOnEscape = 1,
}
StaticPopupDialogs["CONFIRM_REFUND_MAX_HONOR_AND_ARENA"] = {
text = CONFIRM_REFUND_MAX_HONOR_AND_ARENA,
button1 = YES,
button2 = NO,
OnAccept = function()
ContainerRefundItemPurchase(MerchantFrame.refundBag, MerchantFrame.refundSlot);
StackSplitFrame:Hide();
end,
OnCancel = function()
ClearCursor();
end,
OnShow = function()
end,
OnHide = function()
MerchantFrame_ResetRefundItem();
end,
timeout = 0,
hideOnEscape = 1,
}
StaticPopupDialogs["CONFIRM_HIGH_COST_ITEM"] = {
text = CONFIRM_HIGH_COST_ITEM,
button1 = YES,
button2 = NO,
OnAccept = function()
BuyMerchantItem(MerchantFrame.itemIndex, MerchantFrame.count);
end,
OnCancel = function()
end,
OnShow = function(self)
MoneyFrame_Update(self.moneyFrame, MerchantFrame.price*MerchantFrame.count);
end,
OnHide = function()
end,
timeout = 0,
hideOnEscape = 1,
hasMoneyFrame = 1,
}
StaticPopupDialogs["CONFIRM_COMPLETE_EXPENSIVE_QUEST"] = {
text = CONFIRM_COMPLETE_EXPENSIVE_QUEST,
button1 = COMPLETE_QUEST,
button2 = CANCEL,
OnAccept = function()
GetQuestReward(QuestInfoFrame.itemChoice);
PlaySound("igQuestListComplete");
end,
OnCancel = function()
DeclineQuest();
PlaySound("igQuestCancel");
end,
OnShow = function()
QuestInfoFrame.acceptButton:Disable();
QuestInfoFrame.cancelButton:Disable();
end,
OnHide = function()
QuestInfoFrame.cancelButton:Enable();
end,
timeout = 0,
hideOnEscape = 1,
hasMoneyFrame = 1,
};
StaticPopupDialogs["CONFIRM_ACCEPT_PVP_QUEST"] = {
text = CONFIRM_ACCEPT_PVP_QUEST,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function()
AcceptQuest();
end,
OnCancel = function()
DeclineQuest();
PlaySound("igQuestCancel");
end,
OnShow = function()
QuestFrameAcceptButton:Disable();
QuestFrameDeclineButton:Disable();
end,
OnHide = function()
QuestFrameDeclineButton:Enable();
end,
timeout = 0,
hideOnEscape = 1,
};
StaticPopupDialogs["USE_GUILDBANK_REPAIR"] = {
text = USE_GUILDBANK_REPAIR,
button1 = USE_PERSONAL_FUNDS,
button2 = OKAY,
OnAccept = function()
RepairAllItems();
PlaySound("ITEM_REPAIR");
end,
OnCancel = function ()
RepairAllItems(1);
PlaySound("ITEM_REPAIR");
end,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["GUILDBANK_WITHDRAW"] = {
text = GUILDBANK_WITHDRAW,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
WithdrawGuildBankMoney(MoneyInputFrame_GetCopper(self.moneyInputFrame));
end,
OnHide = function(self)
MoneyInputFrame_ResetMoney(self.moneyInputFrame);
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent():GetParent();
WithdrawGuildBankMoney(MoneyInputFrame_GetCopper(parent.moneyInputFrame));
parent:Hide();
end,
hasMoneyInputFrame = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["GUILDBANK_DEPOSIT"] = {
text = GUILDBANK_DEPOSIT,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
DepositGuildBankMoney(MoneyInputFrame_GetCopper(self.moneyInputFrame));
end,
OnHide = function(self)
MoneyInputFrame_ResetMoney(self.moneyInputFrame);
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent():GetParent();
DepositGuildBankMoney(MoneyInputFrame_GetCopper(parent.moneyInputFrame));
parent:Hide();
end,
hasMoneyInputFrame = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_BUY_GUILDBANK_TAB"] = {
text = CONFIRM_BUY_GUILDBANK_TAB,
button1 = YES,
button2 = NO,
OnAccept = function(self)
BuyGuildBankTab();
end,
OnShow = function(self)
MoneyFrame_Update(self.moneyFrame, GetGuildBankTabCost());
end,
hasMoneyFrame = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["TOO_MANY_LUA_ERRORS"] = {
text = TOO_MANY_LUA_ERRORS,
button1 = DISABLE_ADDONS,
button2 = IGNORE_ERRORS,
OnAccept = function(self)
DisableAllAddOns();
ReloadUI();
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_ACCEPT_SOCKETS"] = {
text = CONFIRM_ACCEPT_SOCKETS,
button1 = YES,
button2 = NO,
OnAccept = function(self)
AcceptSockets();
PlaySound("JewelcraftingFinalize");
end,
timeout = 0,
showAlert = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["TAKE_GM_SURVEY"] = {
text = TAKE_GM_SURVEY,
button1 = YES,
button2 = NO,
OnAccept = function(self)
GMSurveyFrame_LoadUI();
ShowUIPanel(GMSurveyFrame);
TicketStatusFrame:Hide();
end,
OnCancel = function(self)
TicketStatusFrame.hasGMSurvey = false;
TicketStatusFrame:Hide();
end,
timeout = 0,
hideOnEscape = 1,
};
StaticPopupDialogs["CONFIRM_RESET_INSTANCES"] = {
text = CONFIRM_RESET_INSTANCES,
button1 = YES,
button2 = NO,
OnAccept = function(self)
ResetInstances();
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["CONFIRM_GUILD_DISBAND"] = {
text = CONFIRM_GUILD_DISBAND,
button1 = YES,
button2 = NO,
OnAccept = function(self)
GuildDisband();
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["CONFIRM_BUY_BANK_SLOT"] = {
text = CONFIRM_BUY_BANK_SLOT,
button1 = YES,
button2 = NO,
OnAccept = function(self)
PurchaseSlot();
end,
OnShow = function(self)
MoneyFrame_Update(self.moneyFrame, BankFrame.nextSlotCost);
end,
hasMoneyFrame = 1,
timeout = 0,
hideOnEscape = 1,
};
StaticPopupDialogs["MACRO_ACTION_FORBIDDEN"] = {
text = MACRO_ACTION_FORBIDDEN,
button1 = OKAY,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ADDON_ACTION_FORBIDDEN"] = {
text = ADDON_ACTION_FORBIDDEN,
button1 = DISABLE,
button2 = IGNORE_DIALOG,
OnAccept = function(self, data)
DisableAddOn(data);
ReloadUI();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_LOOT_DISTRIBUTION"] = {
text = CONFIRM_LOOT_DISTRIBUTION,
button1 = YES,
button2 = NO,
OnAccept = function(self, data)
GiveMasterLoot(LootFrame.selectedSlot, data);
end,
timeout = 0,
hideOnEscape = 1,
};
StaticPopupDialogs["CONFIRM_BATTLEFIELD_ENTRY"] = {
text = CONFIRM_BATTLEFIELD_ENTRY,
button1 = ENTER_BATTLE,
button2 = LEAVE_QUEUE,
OnShow = function(self, data)
local status, mapName, instanceID, levelRangeMin, levelRangeMax, teamSize, registeredMatch = GetBattlefieldStatus(data);
if ( teamSize == 0 ) then
self.button2:Enable();
else
self.button2:Disable();
end
end,
OnAccept = function(self, data)
if ( not AcceptBattlefieldPort(data, 1) ) then
return 1;
end
if( StaticPopup_Visible( "DEATH" ) ) then
StaticPopup_Hide( "DEATH" );
end
end,
OnCancel = function(self, data)
if ( not AcceptBattlefieldPort(data, 0) ) then --Actually declines the battlefield port.
return 1;
end
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
noCancelOnEscape = 1,
noCancelOnReuse = 1,
multiple = 1,
closeButton = 1,
closeButtonIsHide = 1,
};
StaticPopupDialogs["BFMGR_CONFIRM_WORLD_PVP_QUEUED"] = {
text = WORLD_PVP_QUEUED,
button1 = OKAY,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["BFMGR_CONFIRM_WORLD_PVP_QUEUED_WARMUP"] = {
text = WORLD_PVP_QUEUED_WARMUP,
button1 = OKAY,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["BFMGR_DENY_WORLD_PVP_QUEUED"] = {
text = WORLD_PVP_FAIL,
button1 = OKAY,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["BFMGR_INVITED_TO_QUEUE"] = {
text = WORLD_PVP_INVITED,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, data)
BattlefieldMgrQueueInviteResponse(1,1);
end,
OnCancel = function(self, data)
BattlefieldMgrQueueInviteResponse(1,0);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
multiple = 1
};
StaticPopupDialogs["BFMGR_INVITED_TO_QUEUE_WARMUP"] = {
text = WORLD_PVP_INVITED_WARMUP;
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, data)
BattlefieldMgrQueueInviteResponse(1,1);
end,
OnCancel = function(self, data)
BattlefieldMgrQueueInviteResponse(1,0);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
multiple = 1
};
StaticPopupDialogs["BFMGR_INVITED_TO_ENTER"] = {
text = WORLD_PVP_ENTER,
button1 = ACCEPT,
button2 = CANCEL,
OnShow = function(self)
self.timeleft = select(4, GetWorldPVPQueueStatus(1));
end,
OnAccept = function(self, data)
BattlefieldMgrEntryInviteResponse(1,1);
end,
OnCancel = function(self, data)
BattlefieldMgrEntryInviteResponse(1,0);
end,
timeout = 0,
timeoutInformationalOnly = 1;
whileDead = 1,
hideOnEscape = 1,
multiple = 1
};
StaticPopupDialogs["BFMGR_EJECT_PENDING"] = {
text = WORLD_PVP_PENDING,
button1 = OKAY,
showAlert = 1,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["BFMGR_EJECT_PENDING_REMOTE"] = {
text = WORLD_PVP_PENDING_REMOTE,
button1 = OKAY,
showAlert = 1,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["BFMGR_PLAYER_EXITED_BATTLE"] = {
text = WORLD_PVP_EXITED_BATTLE,
button1 = OKAY,
showAlert = 1,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["BFMGR_PLAYER_LOW_LEVEL"] = {
text = WORLD_PVP_LOW_LEVEL,
button1 = OKAY,
showAlert = 1,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["CONFIRM_GUILD_LEAVE"] = {
text = CONFIRM_GUILD_LEAVE,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
GuildLeave();
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_GUILD_PROMOTE"] = {
text = CONFIRM_GUILD_PROMOTE,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, name)
GuildSetLeader(name);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["RENAME_GUILD"] = {
text = RENAME_GUILD_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 24,
OnAccept = function(self)
local text = self.editBox:GetText();
RenamePetition(text);
end,
EditBoxOnEnterPressed = function(self)
local text = self:GetParent().editBox:GetText();
RenamePetition(text);
self:GetParent():Hide();
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["RENAME_ARENA_TEAM"] = {
text = RENAME_ARENA_TEAM_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 24,
OnAccept = function(self)
local text = self.editBox:GetText();
RenamePetition(text);
end,
EditBoxOnEnterPressed = function(self)
local text = self:GetText();
RenamePetition(text);
self:GetParent():Hide();
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_TEAM_LEAVE"] = {
text = CONFIRM_TEAM_LEAVE,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, team)
ArenaTeamLeave(team);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_TEAM_PROMOTE"] = {
text = CONFIRM_TEAM_PROMOTE,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, team, name)
ArenaTeamSetLeaderByName(team, name);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_TEAM_KICK"] = {
text = CONFIRM_TEAM_KICK,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, team, name)
ArenaTeamUninviteByName(team, name);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["HELP_TICKET_QUEUE_DISABLED"] = {
text = HELP_TICKET_QUEUE_DISABLED,
button1 = OKAY,
showAlert = 1,
timeout = 0,
}
StaticPopupDialogs["CLIENT_RESTART_ALERT"] = {
text = CLIENT_RESTART_ALERT,
button1 = OKAY,
showAlert = 1,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["CLIENT_LOGOUT_ALERT"] = {
text = CLIENT_LOGOUT_ALERT,
button1 = OKAY,
showAlert = 1,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["COD_ALERT"] = {
text = COD_INSUFFICIENT_MONEY,
button1 = CLOSE,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["COD_CONFIRMATION"] = {
text = COD_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
TakeInboxItem(InboxFrame.openMailID, OpenMailFrame.lastTakeAttachment);
end,
OnShow = function(self)
MoneyFrame_Update(self.moneyFrame, OpenMailFrame.cod);
end,
hasMoneyFrame = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["COD_CONFIRMATION_AUTO_LOOT"] = {
text = COD_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, index)
AutoLootMailItem(index);
end,
OnShow = function(self)
MoneyFrame_Update(self.moneyFrame, OpenMailFrame.cod);
end,
hasMoneyFrame = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["DELETE_MAIL"] = {
text = DELETE_MAIL_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
DeleteInboxItem(InboxFrame.openMailID);
InboxFrame.openMailID = nil;
HideUIPanel(OpenMailFrame);
end,
showAlert = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["DELETE_MONEY"] = {
text = DELETE_MONEY_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
DeleteInboxItem(InboxFrame.openMailID);
InboxFrame.openMailID = nil;
HideUIPanel(OpenMailFrame);
end,
OnShow = function(self)
MoneyFrame_Update(self.moneyFrame, OpenMailFrame.money);
end,
hasMoneyFrame = 1,
showAlert = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["SEND_MONEY"] = {
text = SEND_MONEY_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
if ( SetSendMailMoney(MoneyInputFrame_GetCopper(SendMailMoney)) ) then
SendMailFrame_SendMail();
end
end,
OnCancel = function(self)
SendMailMailButton:Enable();
end,
OnShow = function(self)
MoneyFrame_Update(self.moneyFrame, MoneyInputFrame_GetCopper(SendMailMoney));
end,
hasMoneyFrame = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_REPORT_SPAM_CHAT"] = {
text = REPORT_SPAM_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, lineID)
ComplainChat(lineID);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_REPORT_SPAM_MAIL"] = {
text = REPORT_SPAM_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, index)
ComplainInboxItem(index);
end,
OnCancel = function(self, index)
OpenMailReportSpamButton:Enable();
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["JOIN_CHANNEL"] = {
text = ADD_CHANNEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 31,
whileDead = 1,
OnAccept = function(self)
local channel = self.editBox:GetText();
JoinPermanentChannel(channel, nil, FCF_GetCurrentChatFrameID(), 1);
ChatFrame_AddChannel(FCF_GetCurrentChatFrame(), channel);
self.editBox:SetText("");
end,
timeout = 0,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
local editBox = parent.editBox;
local channel = editBox:GetText();
JoinPermanentChannel(channel, nil, FCF_GetCurrentChatFrameID(), 1);
ChatFrame_AddChannel(FCF_GetCurrentChatFrame(), channel);
editBox:SetText("");
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
hideOnEscape = 1
};
StaticPopupDialogs["CHANNEL_INVITE"] = {
text = CHANNEL_INVITE,
button1 = ACCEPT_ALT,
button2 = CANCEL,
hasEditBox = 1,
autoCompleteParams = AUTOCOMPLETE_LIST.CHANINVITE,
maxLetters = 31,
whileDead = 1,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
OnAccept = function(self, data)
local name = self.editBox:GetText();
ChannelInvite(data, name);
self.editBox:SetText("");
end,
timeout = 0,
EditBoxOnEnterPressed = function(self, data)
local parent = self:GetParent();
local editBox = parent.editBox;
ChannelInvite(data, editBox:GetText());
editBox:SetText("");
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
hideOnEscape = 1
};
StaticPopupDialogs["CHANNEL_PASSWORD"] = {
text = CHANNEL_PASSWORD,
button1 = ACCEPT_ALT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 31,
whileDead = 1,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
OnAccept = function(self, data)
local password = self.editBox:GetText();
SetChannelPassword(data, password);
self.editBox:SetText("");
end,
timeout = 0,
EditBoxOnEnterPressed = function(self, data)
local parent = self:GetParent();
local editBox = parent.editBox
local password = editBox:GetText();
SetChannelPassword(data, password);
editBox:SetText("");
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
hideOnEscape = 1
};
StaticPopupDialogs["NAME_CHAT"] = {
text = NAME_CHAT_WINDOW,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 31,
whileDead = 1,
OnAccept = function(self, renameID)
local name = self.editBox:GetText();
if ( renameID ) then
FCF_SetWindowName(_G["ChatFrame"..renameID], name);
else
local frame = FCF_OpenNewWindow(name);
FCF_CopyChatSettings(frame, DEFAULT_CHAT_FRAME);
end
self.editBox:SetText("");
FCF_DockUpdate();
end,
timeout = 0,
EditBoxOnEnterPressed = function(self, renameID)
local parent = self:GetParent();
local editBox = parent.editBox
local name = editBox:GetText();
if ( renameID ) then
FCF_SetWindowName(_G["ChatFrame"..renameID], name);
else
local frame = FCF_OpenNewWindow(name);
FCF_CopyChatSettings(frame, DEFAULT_CHAT_FRAME);
end
editBox:SetText("");
FCF_DockUpdate();
parent:Hide();
end,
EditBoxOnEscapePressed = function (self)
self:GetParent():Hide();
end,
hideOnEscape = 1
};
StaticPopupDialogs["RESET_CHAT"] = {
text = RESET_CHAT_WINDOW,
button1 = ACCEPT,
button2 = CANCEL,
whileDead = 1,
OnAccept = function(self)
FCF_ResetChatWindows();
if ( ChatConfigFrame:IsShown() ) then
ChatConfig_UpdateChatSettings();
end
end,
timeout = 0,
EditBoxOnEscapePressed = function (self)
self:GetParent():Hide();
end,
hideOnEscape = 1
};
StaticPopupDialogs["HELP_TICKET_ABANDON_CONFIRM"] = {
text = HELP_TICKET_ABANDON_CONFIRM,
button1 = YES,
button2 = NO,
OnAccept = function(self, prevFrame)
DeleteGMTicket();
end,
OnCancel = function(self, prevFrame)
end,
OnShow = function(self)
HideUIPanel(HelpFrame);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["HELP_TICKET"] = {
text = HELP_TICKET_EDIT_ABANDON,
button1 = HELP_TICKET_EDIT,
button2 = HELP_TICKET_ABANDON,
OnAccept = function(self)
if ( HelpFrame_IsGMTicketQueueActive() ) then
HelpFrame_ShowFrame("OpenTicket");
else
HideUIPanel(HelpFrame);
StaticPopup_Show("HELP_TICKET_QUEUE_DISABLED");
end
end,
OnCancel = function(self)
local currentFrame = self:GetParent();
local dialogFrame = StaticPopup_Show("HELP_TICKET_ABANDON_CONFIRM");
dialogFrame.data = currentFrame;
end,
timeout = 0,
whileDead = 1,
closeButton = 1,
};
StaticPopupDialogs["GM_RESPONSE_NEED_MORE_HELP"] = {
text = GM_RESPONSE_POPUP_NEED_MORE_HELP_WARNING,
button1 = YES,
button2 = NO,
OnAccept = function(self)
HelpFrame_ShowFrame("NeedMoreHelp");
end,
OnCancel = function(self)
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["GM_RESPONSE_RESOLVE_CONFIRM"] = {
text = GM_RESPONSE_POPUP_RESOLVE_CONFIRM,
button1 = YES,
button2 = NO,
OnAccept = function(self)
GMResponseResolve();
HideUIPanel(HelpFrame);
end,
OnCancel = function(self)
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["GM_RESPONSE_MUST_RESOLVE_RESPONSE"] = {
text = GM_RESPONSE_POPUP_MUST_RESOLVE_RESPONSE,
button1 = GM_RESPONSE_POPUP_VIEW_RESPONSE,
button2 = CANCEL,
OnAccept = function(self)
HelpFrame_ShowFrame("GMResponse");
end,
OnCancel = function(self)
end,
OnShow = function(self)
HideUIPanel(HelpFrame);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
showAlert = 1,
};
StaticPopupDialogs["PETRENAMECONFIRM"] = {
text = PET_RENAME_CONFIRMATION,
button1 = YES,
button2 = NO,
OnAccept = function(self, data)
PetRename(data);
end,
OnUpdate = function(self, elapsed)
if ( not UnitExists("pet") ) then
self:Hide();
end
end,
timeout = 0,
hideOnEscape = 1,
};
StaticPopupDialogs["DEATH"] = {
text = DEATH_RELEASE_TIMER,
button1 = DEATH_RELEASE,
button2 = USE_SOULSTONE,
OnShow = function(self)
self.timeleft = GetReleaseTimeRemaining();
local text = HasSoulstone();
if ( text ) then
self.button2:SetText(text);
end
if ( IsActiveBattlefieldArena() ) then
self.text:SetText(DEATH_RELEASE_SPECTATOR);
elseif ( self.timeleft == -1 ) then
self.text:SetText(DEATH_RELEASE_NOTIMER);
end
end,
OnAccept = function(self)
if ( IsActiveBattlefieldArena() ) then
local info = ChatTypeInfo["SYSTEM"];
DEFAULT_CHAT_FRAME:AddMessage(ARENA_SPECTATOR, info.r, info.g, info.b, info.id);
end
RepopMe();
if ( CannotBeResurrected() ) then
return 1
end
end,
OnCancel = function(self, data, reason)
if ( reason == "override" ) then
return;
end
if ( reason == "timeout" ) then
return;
end
if ( reason == "clicked" ) then
if ( HasSoulstone() ) then
UseSoulstone();
else
RepopMe();
end
if ( CannotBeResurrected() ) then
return 1
end
end
end,
OnUpdate = function(self, elapsed)
if ( IsFalling() and (not IsOutOfBounds()) ) then
self.button1:Disable();
self.button2:Disable();
elseif ( HasSoulstone() ) then --Bug ID 153643
self.button1:Enable();
self.button2:Enable();
else
self.button1:Enable();
self.button2:Disable();
end
end,
DisplayButton2 = function(self)
return HasSoulstone();
end,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1,
cancels = "RECOVER_CORPSE"
};
StaticPopupDialogs["RESURRECT"] = {
StartDelay = GetCorpseRecoveryDelay,
delayText = RESURRECT_REQUEST_TIMER,
text = RESURRECT_REQUEST,
button1 = ACCEPT,
button2 = DECLINE,
OnShow = function(self)
self.timeleft = GetCorpseRecoveryDelay() + 60;
end,
OnAccept = function(self)
AcceptResurrect();
end,
OnCancel = function(self)
DeclineResurrect();
if ( UnitIsDead("player") and not UnitIsControlling("player") ) then
StaticPopup_Show("DEATH");
end
end,
timeout = 60,
whileDead = 1,
cancels = "DEATH",
interruptCinematic = 1,
notClosableByLogout = 1,
hideOnEscape = 1,
noCancelOnReuse = 1
};
StaticPopupDialogs["RESURRECT_NO_SICKNESS"] = {
StartDelay = GetCorpseRecoveryDelay,
delayText = RESURRECT_REQUEST_NO_SICKNESS_TIMER,
text = RESURRECT_REQUEST_NO_SICKNESS,
button1 = ACCEPT,
button2 = DECLINE,
OnShow = function(self)
self.timeleft = GetCorpseRecoveryDelay() + 60;
end,
OnAccept = function(self)
AcceptResurrect();
end,
OnCancel = function(self)
DeclineResurrect();
if ( UnitIsDead("player") and not UnitIsControlling("player") ) then
StaticPopup_Show("DEATH");
end
end,
timeout = 60,
whileDead = 1,
cancels = "DEATH",
interruptCinematic = 1,
notClosableByLogout = 1,
hideOnEscape = 1,
noCancelOnReuse = 1
};
StaticPopupDialogs["RESURRECT_NO_TIMER"] = {
text = RESURRECT_REQUEST_NO_SICKNESS,
button1 = ACCEPT,
button2 = DECLINE,
OnShow = function(self)
self.timeleft = GetCorpseRecoveryDelay() + 60;
end,
OnAccept = function(self)
AcceptResurrect();
end,
OnCancel = function(self)
DeclineResurrect();
if ( UnitIsDead("player") and not UnitIsControlling("player") ) then
StaticPopup_Show("DEATH");
end
end,
timeout = 60,
whileDead = 1,
cancels = "DEATH",
interruptCinematic = 1,
notClosableByLogout = 1,
hideOnEscape = 1,
noCancelOnReuse = 1
};
StaticPopupDialogs["SKINNED"] = {
text = DEATH_CORPSE_SKINNED,
button1 = ACCEPT,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1,
};
StaticPopupDialogs["SKINNED_REPOP"] = {
text = DEATH_CORPSE_SKINNED,
button1 = DEATH_RELEASE,
button2 = DECLINE,
OnAccept = function(self)
StaticPopup_Hide("RESURRECT");
StaticPopup_Hide("RESURRECT_NO_SICKNESS");
StaticPopup_Hide("RESURRECT_NO_TIMER");
RepopMe();
end,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1,
hideOnEscape = 1
};
StaticPopupDialogs["TRADE"] = {
text = TRADE_WITH_QUESTION,
button1 = YES,
button2 = NO,
OnAccept = function(self)
BeginTrade();
end,
OnCancel = function(self)
CancelTrade();
end,
timeout = 60,
hideOnEscape = 1
};
StaticPopupDialogs["PARTY_INVITE"] = {
text = INVITATION,
button1 = ACCEPT,
button2 = DECLINE,
sound = "igPlayerInvite",
OnShow = function(self)
self.inviteAccepted = nil;
end,
OnAccept = function(self)
AcceptGroup();
self.inviteAccepted = 1;
end,
OnCancel = function(self)
DeclineGroup();
end,
OnHide = function(self)
if ( not self.inviteAccepted ) then
DeclineGroup();
self:Hide();
end
end,
timeout = 60,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["GUILD_INVITE"] = {
text = GUILD_INVITATION,
button1 = ACCEPT,
button2 = DECLINE,
OnAccept = function(self)
AcceptGuild();
end,
OnCancel = function(self)
DeclineGuild();
end,
timeout = 60,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CHAT_CHANNEL_INVITE"] = {
text = CHAT_INVITE_NOTICE_POPUP,
button1 = ACCEPT,
button2 = DECLINE,
sound = "igPlayerInvite",
OnShow = function(self)
StaticPopupDialogs["CHAT_CHANNEL_INVITE"].inviteAccepted = nil;
end,
OnAccept = function(self, data)
local name = data;
local zoneChannel, channelName = JoinPermanentChannel(name, nil, DEFAULT_CHAT_FRAME:GetID(), 1);
if ( channelName ) then
name = channelName;
end
if ( not zoneChannel ) then
return;
end
local i = 1;
while ( DEFAULT_CHAT_FRAME.channelList[i] ) do
i = i + 1;
end
DEFAULT_CHAT_FRAME.channelList[i] = name;
DEFAULT_CHAT_FRAME.zoneChannelList[i] = zoneChannel;
end,
EditBoxOnEnterPressed = function(self, data)
local name = data;
local zoneChannel, channelName = JoinPermanentChannel(name, nil, DEFAULT_CHAT_FRAME:GetID(), 1);
if ( channelName ) then
name = channelName;
end
if ( not zoneChannel ) then
return;
end
local i = 1;
while ( DEFAULT_CHAT_FRAME.channelList[i] ) do
i = i + 1;
end
DEFAULT_CHAT_FRAME.channelList[i] = name;
DEFAULT_CHAT_FRAME.zoneChannelList[i] = zoneChannel;
StaticPopupDialogs["CHAT_CHANNEL_INVITE"].inviteAccepted = 1;
self:GetParent():Hide();
end,
EditBoxOnEscapePressed = function(self, data)
self:GetParent():Hide();
end,
OnHide = function(self, data)
local name = data;
DeclineInvite(name);
end,
timeout = 60,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["LEVEL_GRANT_PROPOSED"] = {
text = LEVEL_GRANT,
button1 = ACCEPT,
button2 = DECLINE,
sound = "igPlayerInvite",
OnAccept = function(self)
AcceptLevelGrant();
end,
OnCancel = function(self)
DeclineLevelGrant();
end,
OnHide = function()
DeclineLevelGrant();
end,
timeout = 60,
whileDead = 1,
hideOnEscape = 1
};
function ChatChannelPasswordHandler(self, data)
local password = _G[self:GetName().."EditBox"]:GetText();
local name = data;
local zoneChannel, channelName = JoinPermanentChannel(name, password, DEFAULT_CHAT_FRAME:GetID(), 1);
if ( channelName ) then
name = channelName;
end
if ( not zoneChannel ) then
return;
end
local i = 1;
while ( DEFAULT_CHAT_FRAME.channelList[i] ) do
i = i + 1;
end
DEFAULT_CHAT_FRAME.channelList[i] = name;
DEFAULT_CHAT_FRAME.zoneChannelList[i] = zoneChannel;
StaticPopupDialogs["CHAT_CHANNEL_INVITE"].inviteAccepted = 1;
end
StaticPopupDialogs["CHAT_CHANNEL_PASSWORD"] = {
text = CHAT_PASSWORD_NOTICE_POPUP,
hasEditBox = 1,
maxLetters = 31,
button1 = OKAY,
button2 = CANCEL,
sound = "igPlayerInvite",
OnAccept = function(self, data)
ChatChannelPasswordHandler(self, data);
end,
EditBoxOnEnterPressed = function(self, data)
ChatChannelPasswordHandler(self:GetParent(), data);
self:GetParent():Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 60,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ARENA_TEAM_INVITE"] = {
text = ARENA_TEAM_INVITATION,
button1 = ACCEPT,
button2 = DECLINE,
OnAccept = function(self)
AcceptArenaTeam();
end,
OnCancel = function(self)
DeclineArenaTeam();
end,
timeout = 60,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CAMP"] = {
text = CAMP_TIMER,
button1 = CANCEL,
--button2 = CAMP_NOW,
OnAccept = function(self)
CancelLogout();
--ForceLogout();
-- uncomment the next line once forced logouts are completely implemented (they currently have a failure case)
-- this.timeleft = 0;
end,
OnHide = function(self)
if ( self.timeleft > 0 ) then
CancelLogout();
self:Hide();
end
end,
timeout = 20,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["QUIT"] = {
text = QUIT_TIMER,
button1 = QUIT_NOW,
button2 = CANCEL,
OnAccept = function(self)
ForceQuit();
self.timeleft = 0;
end,
OnHide = function(self)
if ( self.timeleft > 0 ) then
CancelLogout();
self:Hide();
end
end,
timeout = 20,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["LOOT_BIND"] = {
text = LOOT_NO_DROP,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self, slot)
ConfirmLootSlot(slot);
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["EQUIP_BIND"] = {
text = EQUIP_NO_DROP,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self, slot)
EquipPendingItem(slot);
end,
OnCancel = function(self, slot)
CancelPendingEquip(slot);
end,
OnHide = function(self, slot)
CancelPendingEquip(slot);
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["AUTOEQUIP_BIND"] = {
text = EQUIP_NO_DROP,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self, slot)
EquipPendingItem(slot);
end,
OnCancel = function(self, slot)
CancelPendingEquip(slot);
end,
OnHide = function(self, slot)
CancelPendingEquip(slot);
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["USE_BIND"] = {
text = USE_NO_DROP,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
ConfirmBindOnUse();
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["DELETE_ITEM"] = {
text = DELETE_ITEM,
button1 = YES,
button2 = NO,
OnAccept = function(self)
DeleteCursorItem();
end,
OnCancel = function (self)
ClearCursor();
end,
OnUpdate = function (self)
if ( not CursorHasItem() ) then
self:Hide();
end
end,
OnHide = function()
MerchantFrame_ResetRefundItem();
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["DELETE_GOOD_ITEM"] = {
text = DELETE_GOOD_ITEM,
button1 = YES,
button2 = NO,
OnAccept = function(self)
DeleteCursorItem();
end,
OnCancel = function (self)
ClearCursor();
end,
OnUpdate = function (self)
if ( not CursorHasItem() ) then
self:Hide();
end
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
showAlert = 1,
hideOnEscape = 1,
hasEditBox = 1,
maxLetters = 32,
OnShow = function(self)
self.button1:Disable();
self.button2:Enable();
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
MerchantFrame_ResetRefundItem();
end,
EditBoxOnEnterPressed = function(self)
if ( self:GetParent().button1:IsEnabled() == 1 ) then
DeleteCursorItem();
self:GetParent():Hide();
end
end,
EditBoxOnTextChanged = function (self)
local parent = self:GetParent();
if ( strupper(parent.editBox:GetText()) == DELETE_ITEM_CONFIRM_STRING ) then
parent.button1:Enable();
else
parent.button1:Disable();
end
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
ClearCursor();
end
};
StaticPopupDialogs["QUEST_ACCEPT"] = {
text = QUEST_ACCEPT,
button1 = YES,
button2 = NO,
OnAccept = function(self)
ConfirmAcceptQuest();
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["QUEST_ACCEPT_LOG_FULL"] = {
text = QUEST_ACCEPT_LOG_FULL,
button1 = YES,
button2 = NO,
OnShow = function(self)
self.button1:Disable();
end,
OnAccept = function(self)
ConfirmAcceptQuest();
end,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["ABANDON_PET"] = {
text = ABANDON_PET,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
PetAbandon();
end,
OnUpdate = function(self, elapsed)
if ( not UnitExists("pet") ) then
self:Hide();
end
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ABANDON_QUEST"] = {
text = ABANDON_QUEST_CONFIRM,
button1 = YES,
button2 = NO,
OnAccept = function(self)
AbandonQuest();
if ( QuestLogDetailFrame:IsShown() ) then
HideUIPanel(QuestLogDetailFrame);
end
PlaySound("igQuestLogAbandonQuest");
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ABANDON_QUEST_WITH_ITEMS"] = {
text = ABANDON_QUEST_CONFIRM_WITH_ITEMS,
button1 = YES,
button2 = NO,
OnAccept = function(self)
AbandonQuest();
if ( QuestLogDetailFrame:IsShown() ) then
HideUIPanel(QuestLogDetailFrame);
end
PlaySound("igQuestLogAbandonQuest");
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ADD_FRIEND"] = {
text = ADD_FRIEND_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
autoCompleteParams = AUTOCOMPLETE_LIST.ADDFRIEND,
maxLetters = 12 + 1 + 64,
OnAccept = function(self)
AddFriend(self.editBox:GetText());
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
AddFriend(parent.editBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["SET_FRIENDNOTE"] = {
text = SET_FRIENDNOTE_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 48,
hasWideEditBox = 1,
OnAccept = function(self)
SetFriendNotes(FriendsFrame.NotesID, self.wideEditBox:GetText());
end,
OnShow = function(self)
local name, level, class, area, connected, status, note = GetFriendInfo(FriendsFrame.NotesID);
if ( note ) then
self.wideEditBox:SetText(note);
end
self.wideEditBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.wideEditBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
SetFriendNotes(FriendsFrame.NotesID, parent.wideEditBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["SET_BNFRIENDNOTE"] = {
text = SET_FRIENDNOTE_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 127,
hasWideEditBox = 1,
OnAccept = function(self)
BNSetFriendNote(FriendsFrame.NotesID, self.wideEditBox:GetText());
end,
OnShow = function(self)
local presenceID, givenName, surname, toonName, toonID, client, isOnline, lastOnline, isAFK, isDND, messageText, noteText = BNGetFriendInfoByID(FriendsFrame.NotesID);
if ( noteText ) then
self.wideEditBox:SetText(noteText);
end
self.wideEditBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.wideEditBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
BNSetFriendNote(FriendsFrame.NotesID, parent.wideEditBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ADD_IGNORE"] = {
text = ADD_IGNORE_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 12 + 1 + 64, --name space realm (77 max)
OnAccept = function(self)
AddIgnore(self.editBox:GetText());
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
AddIgnore(parent.editBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ADD_MUTE"] = {
text = ADD_MUTE_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 12,
OnAccept = function(self)
AddMute(self.editBox:GetText());
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
AddMute(parent.editBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ADD_TEAMMEMBER"] = {
text = ADD_TEAMMEMBER_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
autoCompleteParams = AUTOCOMPLETE_LIST.TEAM_INVITE,
maxLetters = 12,
OnAccept = function(self)
ArenaTeamInviteByName(PVPTeamDetails.team, self.editBox:GetText());
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
ArenaTeamInviteByName(PVPTeamDetails.team, parent.editBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ADD_GUILDMEMBER"] = {
text = ADD_GUILDMEMBER_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
autoCompleteParams = AUTOCOMPLETE_LIST.GUILD_INVITE,
maxLetters = 12,
OnAccept = function(self)
GuildInvite(self.editBox:GetText());
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
GuildInvite(parent.editBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ADD_RAIDMEMBER"] = {
text = ADD_RAIDMEMBER_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
autoCompleteParams = AUTOCOMPLETE_LIST.INVITE,
maxLetters = 12,
OnAccept = function(self)
InviteUnit(self.editBox:GetText());
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
InviteUnit(parent.editBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["REMOVE_GUILDMEMBER"] = {
text = format(REMOVE_GUILDMEMBER_LABEL, "XXX"),
button1 = YES,
button2 = NO,
OnAccept = function(self)
GuildUninvite(GuildFrame.selectedName);
GuildMemberDetailFrame:Hide();
end,
OnShow = function(self)
self.text:SetFormattedText(REMOVE_GUILDMEMBER_LABEL, GuildFrame.selectedName);
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["ADD_GUILDRANK"] = {
text = ADD_GUILDRANK_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 15,
OnAccept = function(self)
GuildControlAddRank(self.editBox:GetText());
UIDropDownMenu_Initialize(GuildControlPopupFrameDropDown, GuildControlPopupFrameDropDown_Initialize);
GuildControlSetRank(UIDropDownMenu_GetSelectedID(GuildControlPopupFrameDropDown));
UIDropDownMenu_SetSelectedID(GuildControlPopupFrameDropDown, UIDropDownMenu_GetSelectedID(GuildControlPopupFrameDropDown));
GuildControlPopupFrameEditBox:SetText(GuildControlGetRankName(UIDropDownMenu_GetSelectedID(GuildControlPopupFrameDropDown)));
GuildControlCheckboxUpdate(GuildControlGetRankFlags());
CloseDropDownMenus();
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
GuildControlAddRank(parent.editBox:GetText());
UIDropDownMenu_Initialize(GuildControlPopupFrameDropDown, GuildControlPopupFrameDropDown_Initialize);
GuildControlSetRank(UIDropDownMenu_GetSelectedID(GuildControlPopupFrameDropDown));
UIDropDownMenu_SetSelectedID(GuildControlPopupFrameDropDown, UIDropDownMenu_GetSelectedID(GuildControlPopupFrameDropDown));
GuildControlPopupFrameEditBox:SetText(GuildControlGetRankName(UIDropDownMenu_GetSelectedID(GuildControlPopupFrameDropDown)));
GuildControlCheckboxUpdate(GuildControlGetRankFlags());
CloseDropDownMenus();
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["SET_GUILDMOTD"] = {
text = SET_GUILDMOTD_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 128,
hasWideEditBox = 1,
OnAccept = function(self)
GuildSetMOTD(self.wideEditBox:GetText());
end,
OnShow = function(self)
self.wideEditBox:SetText(CURRENT_GUILD_MOTD);
self.wideEditBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.wideEditBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
GuildSetMOTD(parent.wideEditBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["SET_GUILDPLAYERNOTE"] = {
text = SET_GUILDPLAYERNOTE_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 31,
hasWideEditBox = 1,
OnAccept = function(self)
GuildRosterSetPublicNote(GetGuildRosterSelection(), self.wideEditBox:GetText());
end,
OnShow = function(self)
--Sets the text to the 7th return from GetGuildRosterInfo(GetGuildRosterSelection());
self.wideEditBox:SetText(select(7, GetGuildRosterInfo(GetGuildRosterSelection())));
self.wideEditBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.wideEditBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
GuildRosterSetPublicNote(GetGuildRosterSelection(), parent.wideEditBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["SET_GUILDOFFICERNOTE"] = {
text = SET_GUILDOFFICERNOTE_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 31,
hasWideEditBox = 1,
OnAccept = function(self)
GuildRosterSetOfficerNote(GetGuildRosterSelection(), self.wideEditBox:GetText());
end,
OnShow = function(self)
local name, rank, rankIndex, level, class, zone, note, officernote, online;
name, rank, rankIndex, level, class, zone, note, officernote, online = GetGuildRosterInfo(GetGuildRosterSelection());
self.wideEditBox:SetText(select(8, GetGuildRosterInfo(GetGuildRosterSelection())));
self.wideEditBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.wideEditBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
GuildRosterSetOfficerNote(GetGuildRosterSelection(), parent.wideEditBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["RENAME_PET"] = {
text = PET_RENAME_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 12,
OnAccept = function(self)
local text = self.editBox:GetText();
local dialogFrame = StaticPopup_Show("PETRENAMECONFIRM", text);
if ( dialogFrame ) then
dialogFrame.data = text;
end
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
local text = parent.editBox:GetText();
local dialogFrame = StaticPopup_Show("PETRENAMECONFIRM", text);
if ( dialogFrame ) then
dialogFrame.data = text;
end
parent:Hide();
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
OnUpdate = function(self, elapsed)
if ( not UnitExists("pet") ) then
self:Hide();
end
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["DUEL_REQUESTED"] = {
text = DUEL_REQUESTED,
button1 = ACCEPT,
button2 = DECLINE,
sound = "igPlayerInvite",
OnAccept = function(self)
AcceptDuel();
end,
OnCancel = function(self)
CancelDuel();
end,
timeout = 60,
hideOnEscape = 1
};
StaticPopupDialogs["DUEL_OUTOFBOUNDS"] = {
text = DUEL_OUTOFBOUNDS_TIMER,
timeout = 10,
};
StaticPopupDialogs["UNLEARN_SKILL"] = {
text = UNLEARN_SKILL,
button1 = UNLEARN,
button2 = CANCEL,
OnAccept = function(self, index)
AbandonSkill(index);
end,
timeout = 60,
exclusive = 1,
whileDead = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["XP_LOSS"] = {
text = CONFIRM_XP_LOSS,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, data)
if ( data ) then
self.text:SetFormattedText(CONFIRM_XP_LOSS_AGAIN, data);
self.data = nil;
return 1;
else
AcceptXPLoss();
end
end,
OnUpdate = function(self, elapsed)
if ( not CheckSpiritHealerDist() ) then
self:Hide();
CloseGossip();
end
end,
OnCancel = function(self)
CloseGossip();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["XP_LOSS_NO_DURABILITY"] = {
text = CONFIRM_XP_LOSS_NO_DURABILITY,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, data)
if ( data ) then
self.text:SetFormattedText(CONFIRM_XP_LOSS_AGAIN_NO_DURABILITY, data);
self.data = nil;
return 1;
else
AcceptXPLoss();
end
end,
OnUpdate = function(self, elapsed)
if ( not CheckSpiritHealerDist() ) then
self:Hide();
CloseGossip();
end
end,
OnCancel = function(self)
CloseGossip();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["XP_LOSS_NO_SICKNESS"] = {
text = CONFIRM_XP_LOSS_NO_SICKNESS,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, data)
if ( data ) then
self.text:SetText(CONFIRM_XP_LOSS_AGAIN_NO_SICKNESS);
self.data = nil;
return 1;
else
AcceptXPLoss();
end
end,
OnUpdate = function(self, dialog)
if ( not CheckSpiritHealerDist() ) then
self:Hide();
CloseGossip();
end
end,
OnCancel = function(self)
CloseGossip();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["XP_LOSS_NO_SICKNESS_NO_DURABILITY"] = {
text = CONFIRM_XP_LOSS_NO_SICKNESS_NO_DURABILITY,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, data)
AcceptXPLoss();
end,
OnUpdate = function(self, dialog)
if ( not CheckSpiritHealerDist() ) then
self:Hide();
CloseGossip();
end
end,
OnCancel = function(self)
CloseGossip();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["RECOVER_CORPSE"] = {
StartDelay = GetCorpseRecoveryDelay,
delayText = RECOVER_CORPSE_TIMER,
text = RECOVER_CORPSE,
button1 = ACCEPT,
OnAccept = function(self)
RetrieveCorpse();
return 1;
end,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1
};
StaticPopupDialogs["RECOVER_CORPSE_INSTANCE"] = {
text = RECOVER_CORPSE_INSTANCE,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1
};
StaticPopupDialogs["AREA_SPIRIT_HEAL"] = {
text = AREA_SPIRIT_HEAL,
button1 = CANCEL,
OnShow = function(self)
self.timeleft = GetAreaSpiritHealerTime();
end,
OnAccept = function(self)
CancelAreaSpiritHeal();
end,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1,
hideOnEscape = 1
};
StaticPopupDialogs["BIND_ENCHANT"] = {
text = BIND_ENCHANT,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
BindEnchant();
end,
timeout = 0,
exclusive = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["REPLACE_ENCHANT"] = {
text = REPLACE_ENCHANT,
button1 = YES,
button2 = NO,
OnAccept = function(self)
ReplaceEnchant();
end,
timeout = 0,
exclusive = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["TRADE_REPLACE_ENCHANT"] = {
text = REPLACE_ENCHANT,
button1 = YES,
button2 = NO,
OnAccept = function(self)
ReplaceTradeEnchant();
end,
timeout = 0,
exclusive = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["TRADE_POTENTIAL_BIND_ENCHANT"] = {
text = TRADE_POTENTIAL_BIND_ENCHANT,
button1 = OKAY,
button2 = CANCEL,
OnShow = function(self)
TradeFrameTradeButton:Disable();
end,
OnHide = function(self)
TradeFrameTradeButton_SetToEnabledState();
end,
OnCancel = function(self)
ClickTradeButton(TRADE_ENCHANT_SLOT, true);
end,
timeout = 0,
showAlert = 1,
hideOnEscape = 1,
noCancelOnReuse = 1
};
StaticPopupDialogs["END_REFUND"] = {
text = END_REFUND,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
EndRefund(self.data);
end,
timeout = 0,
exclusive = 1,
showAlert = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["END_BOUND_TRADEABLE"] = {
text = END_BOUND_TRADEABLE,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
EndBoundTradeable(self.data);
end,
timeout = 0,
exclusive = 1,
showAlert = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["INSTANCE_BOOT"] = {
text = INSTANCE_BOOT_TIMER,
OnShow = function(self)
self.timeleft = GetInstanceBootTimeRemaining();
if ( self.timeleft <= 0 ) then
self:Hide();
end
end,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1
};
StaticPopupDialogs["INSTANCE_LOCK"] = {
-- we use a custom timer called lockTimeleft in here to avoid special casing the static popup code
-- if you use timeout or timeleft then you will go through the StaticPopup system's standard OnUpdate
-- code which we don't want for this dialog
text = INSTANCE_LOCK_TIMER,
button1 = ACCEPT,
button2 = INSTANCE_LEAVE,
OnShow = function(self)
local lockTimeleft, isPreviousInstance = GetInstanceLockTimeRemaining();
if ( lockTimeleft <= 0 ) then
self:Hide();
return;
end
self.lockTimeleft = lockTimeleft;
self.isPreviousInstance = isPreviousInstance;
local type, difficulty;
self.name, type, difficulty, self.difficultyName = GetInstanceInfo();
self.extraFrame:SetAllPoints(self.text)
self.extraFrame:Show()
self.extraFrame:SetScript("OnEnter", InstanceLock_OnEnter)
self.extraFrame:SetScript("OnLeave", GameTooltip_Hide)
end,
OnHide = function(self)
self.extraFrame:SetScript("OnEnter", nil)
self.extraFrame:SetScript("OnLeave", nil)
end,
OnUpdate = function(self, elapsed)
local lockTimeleft = self.lockTimeleft - elapsed;
if ( lockTimeleft <= 0 ) then
local OnCancel = StaticPopupDialogs["INSTANCE_LOCK"].OnCancel;
if ( OnCancel ) then
OnCancel(self, nil, "timeout");
end
self:Hide();
return;
end
self.lockTimeleft = lockTimeleft;
local name = GetDungeonNameWithDifficulty(self.name, self.difficultyName);
-- Set dialog message using information that describes which bosses are still around
local text = _G[self:GetName().."Text"];
local lockstring = string.format((self.isPreviousInstance and INSTANCE_LOCK_TIMER_PREVIOUSLY_SAVED or INSTANCE_LOCK_TIMER), name, SecondsToTime(ceil(lockTimeleft), nil, 1));
local time, extending;
time, extending, self.extraFrame.encountersTotal, self.extraFrame.encountersComplete = GetInstanceLockTimeRemaining();
local bosses = string.format(BOSSES_KILLED, self.extraFrame.encountersComplete, self.extraFrame.encountersTotal);
text:SetFormattedText(INSTANCE_LOCK_SEPARATOR, lockstring, bosses);
-- make sure the dialog fits the text
StaticPopup_Resize(self, "INSTANCE_LOCK");
end,
OnAccept = function(self)
RespondInstanceLock(true);
self.name, self.difficultyName = nil, nil;
self.lockTimeleft = nil;
end,
OnCancel = function(self, data, reason)
if ( reason == "timeout" ) then
self:Hide();
return;
end
RespondInstanceLock(false);
self.name, self.difficultyName = nil, nil;
self.lockTimeleft = nil;
end,
timeout = 0,
showAlert = 1,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1,
noCancelOnReuse = 1,
};
StaticPopupDialogs["CONFIRM_TALENT_WIPE"] = {
text = CONFIRM_TALENT_WIPE,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
ConfirmTalentWipe();
end,
OnUpdate = function(self, elapsed)
if ( not CheckTalentMasterDist() ) then
self:Hide();
end
end,
OnCancel = function(self)
if ( PlayerTalentFrame ) then
HideUIPanel(PlayerTalentFrame);
end
end,
hasMoneyFrame = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_BINDER"] = {
text = CONFIRM_BINDER,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
ConfirmBinder();
end,
OnUpdate = function(self, elapsed)
if ( not CheckBinderDist() ) then
self:Hide();
end
end,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_SUMMON"] = {
text = CONFIRM_SUMMON;
button1 = ACCEPT,
button2 = CANCEL,
OnShow = function(self)
self.timeleft = GetSummonConfirmTimeLeft();
end,
OnAccept = function(self)
ConfirmSummon();
end,
OnCancel = function()
CancelSummon();
end,
OnUpdate = function(self, elapsed)
if ( UnitAffectingCombat("player") or (not PlayerCanTeleport()) ) then
self.button1:Disable();
else
self.button1:Enable();
end
end,
timeout = 0,
interruptCinematic = 1,
notClosableByLogout = 1,
hideOnEscape = 1
};
StaticPopupDialogs["BILLING_NAG"] = {
text = BILLING_NAG_DIALOG;
button1 = OKAY,
timeout = 0,
showAlert = 1
};
StaticPopupDialogs["IGR_BILLING_NAG"] = {
text = IGR_BILLING_NAG_DIALOG;
button1 = OKAY,
timeout = 0,
showAlert = 1
};
StaticPopupDialogs["CONFIRM_LOOT_ROLL"] = {
text = LOOT_NO_DROP,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self, id, rollType)
ConfirmLootRoll(id, rollType);
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["GOSSIP_CONFIRM"] = {
text = "%s",
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, data)
SelectGossipOption(data, "", true);
end,
hasMoneyFrame = 1,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["GOSSIP_ENTER_CODE"] = {
text = ENTER_CODE,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
OnAccept = function(self, data)
SelectGossipOption(data, self.editBox:GetText(), true);
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self, data)
local parent = self:GetParent();
SelectGossipOption(data, parent.editBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CREATE_COMBAT_FILTER"] = {
text = ENTER_FILTER_NAME,
button1 = ACCEPT,
button2 = CANCEL,
whileDead = 1,
hasEditBox = 1,
maxLetters = 32,
OnAccept = function(self)
CombatConfig_CreateCombatFilter(self.editBox:GetText());
end,
timeout = 0,
EditBoxOnEnterPressed = function(self, data)
local parent = self:GetParent();
CombatConfig_CreateCombatFilter(parent.editBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function (self)
self:GetParent():Hide();
end,
OnHide = function (self)
self.editBox:SetText("");
end,
hideOnEscape = 1
};
StaticPopupDialogs["COPY_COMBAT_FILTER"] = {
text = ENTER_FILTER_NAME,
button1 = ACCEPT,
button2 = CANCEL,
whileDead = 1,
hasEditBox = 1,
maxLetters = 32,
OnAccept = function(self)
CombatConfig_CreateCombatFilter(self.editBox:GetText(), self.data);
end,
timeout = 0,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
CombatConfig_CreateCombatFilter(parent.editBox:GetText(), parent.data);
parent:Hide();
end,
EditBoxOnEscapePressed = function (self)
self:GetParent():Hide();
end,
OnHide = function (self)
self.editBox:SetText("");
end,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_COMBAT_FILTER_DELETE"] = {
text = CONFIRM_COMBAT_FILTER_DELETE,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
CombatConfig_DeleteCurrentCombatFilter();
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_COMBAT_FILTER_DEFAULTS"] = {
text = CONFIRM_COMBAT_FILTER_DEFAULTS,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
CombatConfig_SetCombatFiltersToDefault();
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["WOW_MOUSE_NOT_FOUND"] = {
text = WOW_MOUSE_NOT_FOUND,
button1 = OKAY,
OnHide = function(self)
SetCVar("enableWoWMouse", "0");
if ( InterfaceOptionsFrame:IsShown() ) then
InterfaceOptionsMousePanelWoWMouse:Click();
end
end,
timeout = 0,
whileDead = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_TEAM_DISBAND"] = {
text = CONFIRM_TEAM_DISBAND,
button1 = YES,
button2 = NO,
OnAccept = function (self)
ArenaTeamDisband(self.data);
end,
OnCancel = function (self)
end,
hideOnEscape = 1,
timeout = 0,
whileDead = 1,
};
StaticPopupDialogs["CONFIRM_BUY_STABLE_SLOT"] = {
text = CONFIRM_BUY_STABLE_SLOT,
button1 = YES,
button2 = NO,
OnAccept = function(self)
BuyStableSlot();
end,
OnShow = function(self)
MoneyFrame_Update(self.moneyFrame, GetNextStableSlotCost());
end,
timeout = 0,
hideOnEscape = 1,
hasMoneyFrame = 1,
};
StaticPopupDialogs["TALENTS_INVOLUNTARILY_RESET"] = {
text = TALENTS_INVOLUNTARILY_RESET,
button1 = OKAY,
timeout = 0,
};
StaticPopupDialogs["TALENTS_INVOLUNTARILY_RESET_PET"] = {
text = TALENTS_INVOLUNTARILY_RESET_PET,
button1 = OKAY,
timeout = 0,
};
StaticPopupDialogs["VOTE_BOOT_PLAYER"] = {
text = VOTE_BOOT_PLAYER,
button1 = YES,
button2 = NO,
OnAccept = function(self)
SetLFGBootVote(true);
end,
OnCancel = function(self)
SetLFGBootVote(false);
end,
showAlert = true,
noCancelOnReuse = 1,
whileDead = 1,
interruptCinematic = 1,
timeout = 0,
};
StaticPopupDialogs["VOTE_BOOT_REASON_REQUIRED"] = {
text = VOTE_BOOT_REASON_REQUIRED,
button1 = OKAY,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 64,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
UninviteUnit(parent.data, self:GetText());
parent:Hide();
end,
EditBoxOnTextChanged = function(self)
if ( strtrim(self:GetText()) == "" ) then
self:GetParent().button1:Disable();
else
self:GetParent().button1:Enable();
end
end,
OnShow = function(self)
self.button1:Disable();
end,
OnAccept = function(self)
UninviteUnit(self.data, self.editBox:GetText());
end,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
};
StaticPopupDialogs["LAG_SUCCESS"] = {
text = HELPFRAME_REPORTLAG_TEXT1,
button1 = OKAY,
timeout = 0,
}
StaticPopupDialogs["LFG_OFFER_CONTINUE"] = {
text = LFG_OFFER_CONTINUE,
button1 = YES,
button2 = NO,
OnAccept = function(self)
PartyLFGStartBackfill();
end,
noCancelOnReuse = 1,
timeout = 0,
}
StaticPopupDialogs["CONFIRM_MAIL_ITEM_UNREFUNDABLE"] = {
text = END_REFUND,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
RespondMailLockSendItem(self.data.slot, true);
end,
OnCancel = function(self)
RespondMailLockSendItem(self.data.slot, false);
end,
timeout = 0,
hasItemFrame = 1,
}
StaticPopupDialogs["AUCTION_HOUSE_DISABLED"] = {
text = ERR_AUCTION_HOUSE_DISABLED,
button1 = OKAY,
timeout = 0,
showAlertGear = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_BLOCK_INVITES"] = {
text = BLOCK_INVITES_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, inviteID)
BNSetBlocked(inviteID, true);
BNDeclineFriendInvite(inviteID);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["BATTLENET_UNAVAILABLE"] = {
text = BATTLENET_UNAVAILABLE_ALERT,
button1 = OKAY,
timeout = 0,
showAlertGear = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_BNET_REPORT"] = {
text = "%s",
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function (self)
BNet_SendReport();
end,
hideOnEscape = 1,
timeout = 0,
exclusive = 1,
whileDead = 1,
};
StaticPopupDialogs["CONFIRM_REMOVE_FRIEND"] = {
text = REMOVE_FRIEND_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, presenceID)
BNRemoveFriend(presenceID);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
function StaticPopup_FindVisible(which, data)
local info = StaticPopupDialogs[which];
if ( not info ) then
return nil;
end
for index = 1, STATICPOPUP_NUMDIALOGS, 1 do
local frame = _G["StaticPopup"..index];
if ( frame:IsShown() and (frame.which == which) and (not info.multiple or (frame.data == data)) ) then
return frame;
end
end
return nil;
end
function StaticPopup_Resize(dialog, which)
local info = StaticPopupDialogs[which];
if ( not info ) then
return nil;
end
local text = _G[dialog:GetName().."Text"];
local editBox = _G[dialog:GetName().."EditBox"];
local button1 = _G[dialog:GetName().."Button1"];
local maxHeightSoFar, maxWidthSoFar = (dialog.maxHeightSoFar or 0), (dialog.maxWidthSoFar or 0);
local width = 320;
if ( info.button3 ) then
width = 440;
elseif (info.hasWideEditBox or info.showAlert or info.showAlertGear or info.closeButton) then
-- Widen
width = 420;
elseif ( which == "HELP_TICKET" ) then
width = 350;
end
if ( width > maxWidthSoFar ) then
dialog:SetWidth(width);
dialog.maxWidthSoFar = width;
end
local height = 32 + text:GetHeight() + 8 + button1:GetHeight();
if ( info.hasEditBox ) then
if ( info.hasWideEditBox ) then
end
height = height + 8 + editBox:GetHeight();
elseif ( info.hasMoneyFrame ) then
height = height + 16;
elseif ( info.hasMoneyInputFrame ) then
height = height + 22;
end
if ( info.hasItemFrame ) then
height = height + 64;
end
if ( height > maxHeightSoFar ) then
dialog:SetHeight(height);
dialog.maxHeightSoFar = height;
end
end
function StaticPopup_Show(which, text_arg1, text_arg2, data)
local info = StaticPopupDialogs[which];
if ( not info ) then
return nil;
end
if ( UnitIsDeadOrGhost("player") and not info.whileDead ) then
if ( info.OnCancel ) then
info.OnCancel();
end
return nil;
end
if ( InCinematic() and not info.interruptCinematic ) then
if ( info.OnCancel ) then
info.OnCancel();
end
return nil;
end
if ( info.exclusive ) then
StaticPopup_HideExclusive();
end
if ( info.cancels ) then
for index = 1, STATICPOPUP_NUMDIALOGS, 1 do
local frame = _G["StaticPopup"..index];
if ( frame:IsShown() and (frame.which == info.cancels) ) then
frame:Hide();
local OnCancel = StaticPopupDialogs[frame.which].OnCancel;
if ( OnCancel ) then
OnCancel(frame, frame.data, "override");
end
end
end
end
if ( (which == "CAMP") or (which == "QUIT") ) then
for index = 1, STATICPOPUP_NUMDIALOGS, 1 do
local frame = _G["StaticPopup"..index];
if ( frame:IsShown() and not StaticPopupDialogs[frame.which].notClosableByLogout ) then
frame:Hide();
local OnCancel = StaticPopupDialogs[frame.which].OnCancel;
if ( OnCancel ) then
OnCancel(frame, frame.data, "override");
end
end
end
end
if ( which == "DEATH" ) then
for index = 1, STATICPOPUP_NUMDIALOGS, 1 do
local frame = _G["StaticPopup"..index];
if ( frame:IsShown() and not StaticPopupDialogs[frame.which].whileDead ) then
frame:Hide();
local OnCancel = StaticPopupDialogs[frame.which].OnCancel;
if ( OnCancel ) then
OnCancel(frame, frame.data, "override");
end
end
end
end
-- Pick a free dialog to use
local dialog = nil;
-- Find an open dialog of the requested type
dialog = StaticPopup_FindVisible(which, data);
if ( dialog ) then
if ( not info.noCancelOnReuse ) then
local OnCancel = info.OnCancel;
if ( OnCancel ) then
OnCancel(dialog, dialog.data, "override");
end
end
dialog:Hide();
end
if ( not dialog ) then
-- Find a free dialog
local index = 1;
if ( info.preferredIndex ) then
index = info.preferredIndex;
end
for i = index, STATICPOPUP_NUMDIALOGS do
local frame = _G["StaticPopup"..i];
if ( not frame:IsShown() ) then
dialog = frame;
break;
end
end
--If dialog not found and there's a preferredIndex then try to find an available frame before the preferredIndex
if ( not dialog and info.preferredIndex ) then
for i = 1, info.preferredIndex do
local frame = _G["StaticPopup"..i];
if ( not frame:IsShown() ) then
dialog = frame;
break;
end
end
end
end
if ( not dialog ) then
if ( info.OnCancel ) then
info.OnCancel();
end
return nil;
end
dialog.maxHeightSoFar, dialog.maxWidthSoFar = 0, 0;
-- Set the text of the dialog
local text = _G[dialog:GetName().."Text"];
if ( (which == "DEATH") or
(which == "CAMP") or
(which == "QUIT") or
(which == "DUEL_OUTOFBOUNDS") or
(which == "RECOVER_CORPSE") or
(which == "RESURRECT") or
(which == "RESURRECT_NO_SICKNESS") or
(which == "INSTANCE_BOOT") or
(which == "INSTANCE_LOCK") or
(which == "CONFIRM_SUMMON") or
(which == "BFMGR_INVITED_TO_ENTER") or
(which == "AREA_SPIRIT_HEAL") ) then
text:SetText(" "); -- The text will be filled in later.
text.text_arg1 = text_arg1;
text.text_arg2 = text_arg2;
elseif ( which == "BILLING_NAG" ) then
text:SetFormattedText(info.text, text_arg1, MINUTES);
else
text:SetFormattedText(info.text, text_arg1, text_arg2);
end
-- Show or hide the alert icon
local alertIcon = _G[dialog:GetName().."AlertIcon"];
if ( info.showAlert ) then
alertIcon:SetTexture(STATICPOPUP_TEXTURE_ALERT);
elseif ( info.showAlertGear ) then
alertIcon:SetTexture(STATICPOPUP_TEXTURE_ALERTGEAR);
else
alertIcon:SetTexture();
end
-- Show or hide the close button
if ( info.closeButton ) then
local closeButton = _G[dialog:GetName().."CloseButton"];
if ( info.closeButtonIsHide ) then
closeButton:SetNormalTexture("Interface\\Buttons\\UI-Panel-HideButton-Up");
closeButton:SetPushedTexture("Interface\\Buttons\\UI-Panel-HideButton-Down");
else
closeButton:SetNormalTexture("Interface\\Buttons\\UI-Panel-MinimizeButton-Up");
closeButton:SetPushedTexture("Interface\\Buttons\\UI-Panel-MinimizeButton-Down");
end
closeButton:Show();
else
_G[dialog:GetName().."CloseButton"]:Hide();
end
-- Set the editbox of the dialog
local wideEditBox = _G[dialog:GetName().."WideEditBox"];
local editBox = _G[dialog:GetName().."EditBox"];
if ( info.hasEditBox ) then
if ( info.hasWideEditBox ) then
wideEditBox:Show();
editBox:Hide();
if ( info.maxLetters ) then
wideEditBox:SetMaxLetters(info.maxLetters);
end
if ( info.maxBytes ) then
wideEditBox:SetMaxBytes(info.maxBytes);
end
wideEditBox:SetText("");
else
wideEditBox:Hide();
editBox:Show();
if ( info.maxLetters ) then
editBox:SetMaxLetters(info.maxLetters);
end
if ( info.maxBytes ) then
editBox:SetMaxBytes(info.maxBytes);
end
editBox:SetText("");
end
else
wideEditBox:Hide();
editBox:Hide();
end
-- Show or hide money frame
if ( info.hasMoneyFrame ) then
_G[dialog:GetName().."MoneyFrame"]:Show();
_G[dialog:GetName().."MoneyInputFrame"]:Hide();
elseif ( info.hasMoneyInputFrame ) then
_G[dialog:GetName().."MoneyInputFrame"]:Show();
_G[dialog:GetName().."MoneyFrame"]:Hide();
-- Set OnEnterPress for money input frames
if ( info.EditBoxOnEnterPressed ) then
_G[dialog:GetName().."MoneyInputFrameGold"]:SetScript("OnEnterPressed", StaticPopup_EditBoxOnEnterPressed);
_G[dialog:GetName().."MoneyInputFrameSilver"]:SetScript("OnEnterPressed", StaticPopup_EditBoxOnEnterPressed);
_G[dialog:GetName().."MoneyInputFrameCopper"]:SetScript("OnEnterPressed", StaticPopup_EditBoxOnEnterPressed);
else
_G[dialog:GetName().."MoneyInputFrameGold"]:SetScript("OnEnterPressed", nil);
_G[dialog:GetName().."MoneyInputFrameSilver"]:SetScript("OnEnterPressed", nil);
_G[dialog:GetName().."MoneyInputFrameCopper"]:SetScript("OnEnterPressed", nil);
end
else
_G[dialog:GetName().."MoneyFrame"]:Hide();
_G[dialog:GetName().."MoneyInputFrame"]:Hide();
end
-- Show or hide item button
if ( info.hasItemFrame ) then
_G[dialog:GetName().."ItemFrame"]:Show();
if ( data and type(data) == "table" ) then
_G[dialog:GetName().."ItemFrame"].link = data.link
_G[dialog:GetName().."ItemFrameIconTexture"]:SetTexture(data.texture);
local nameText = _G[dialog:GetName().."ItemFrameText"];
nameText:SetTextColor(unpack(data.color or {1, 1, 1, 1}));
nameText:SetText(data.name);
if ( data.count and data.count > 1 ) then
_G[dialog:GetName().."ItemFrameCount"]:SetText(data.count);
_G[dialog:GetName().."ItemFrameCount"]:Show();
else
_G[dialog:GetName().."ItemFrameCount"]:Hide();
end
end
else
_G[dialog:GetName().."ItemFrame"]:Hide();
end
-- Set the buttons of the dialog
local button1 = _G[dialog:GetName().."Button1"];
local button2 = _G[dialog:GetName().."Button2"];
local button3 = _G[dialog:GetName().."Button3"];
if ( info.button3 and ( not info.DisplayButton3 or info.DisplayButton3() ) ) then
button1:ClearAllPoints();
button2:ClearAllPoints();
button3:ClearAllPoints();
button1:SetPoint("BOTTOMRIGHT", dialog, "BOTTOM", -72, 16);
button3:SetPoint("LEFT", button1, "RIGHT", 13, 0);
button2:SetPoint("LEFT", button3, "RIGHT", 13, 0);
button2:SetText(info.button2);
button3:SetText(info.button3);
local width = button2:GetTextWidth();
if ( width > 110 ) then
button2:SetWidth(width + 20);
else
button2:SetWidth(120);
end
button2:Enable();
button2:Show();
width = button3:GetTextWidth();
if ( width > 110 ) then
button3:SetWidth(width + 20);
else
button3:SetWidth(120);
end
button3:Enable();
button3:Show();
elseif ( info.button2 and
( not info.DisplayButton2 or info.DisplayButton2() ) ) then
button1:ClearAllPoints();
button2:ClearAllPoints();
button1:SetPoint("BOTTOMRIGHT", dialog, "BOTTOM", -6, 16);
button2:SetPoint("LEFT", button1, "RIGHT", 13, 0);
button2:SetText(info.button2);
local width = button2:GetTextWidth();
if ( width > 110 ) then
button2:SetWidth(width + 20);
else
button2:SetWidth(120);
end
button2:Enable();
button2:Show();
button3:Hide();
else
button1:ClearAllPoints();
button1:SetPoint("BOTTOM", dialog, "BOTTOM", 0, 16);
button2:Hide();
button3:Hide();
end
if ( info.button1 ) then
button1:SetText(info.button1);
local width = button1:GetTextWidth();
if ( width > 120 ) then
button1:SetWidth(width + 20);
else
button1:SetWidth(120);
end
button1:Enable();
button1:Show();
else
button1:Hide();
end
-- Set the miscellaneous variables for the dialog
dialog.which = which;
dialog.timeleft = info.timeout;
dialog.hideOnEscape = info.hideOnEscape;
dialog.exclusive = info.exclusive;
dialog.enterClicksFirstButton = info.enterClicksFirstButton;
-- Clear out data
dialog.data = data;
if ( info.StartDelay ) then
dialog.startDelay = info.StartDelay();
button1:Disable();
else
dialog.startDelay = nil;
button1:Enable();
end
editBox.autoCompleteParams = info.autoCompleteParams;
wideEditBox.autoCompleteParams = info.autoCompleteParams;
editBox.autoCompleteRegex = info.autoCompleteRegex;
wideEditBox.autoCompleteRegex = info.autoCompleteRegex;
editBox.autoCompleteFormatRegex = info.autoCompleteFormatRegex;
wideEditBox.autoCompleteFormatRegex = info.autoCompleteFormatRegex;
editBox.addHighlightedText = true;
wideEditBox.autoCompleteFormatRegex = true;
-- Finally size and show the dialog
StaticPopup_SetUpPosition(dialog);
dialog:Show();
StaticPopup_Resize(dialog, which);
if ( info.sound ) then
PlaySound(info.sound);
end
return dialog;
end
function StaticPopup_Hide(which, data)
for index = 1, STATICPOPUP_NUMDIALOGS, 1 do
local dialog = _G["StaticPopup"..index];
if ( (dialog.which == which) and (not data or (data == dialog.data)) ) then
dialog:Hide();
end
end
end
function StaticPopup_OnUpdate(dialog, elapsed)
if ( dialog.timeleft > 0 ) then
local which = dialog.which;
local timeleft = dialog.timeleft - elapsed;
if ( timeleft <= 0 ) then
if ( not StaticPopupDialogs[which].timeoutInformationalOnly ) then
dialog.timeleft = 0;
local OnCancel = StaticPopupDialogs[which].OnCancel;
if ( OnCancel ) then
OnCancel(dialog, dialog.data, "timeout");
end
dialog:Hide();
end
return;
end
dialog.timeleft = timeleft;
if ( (which == "DEATH") or
(which == "CAMP") or
(which == "QUIT") or
(which == "DUEL_OUTOFBOUNDS") or
(which == "INSTANCE_BOOT") or
(which == "CONFIRM_SUMMON") or
(which == "BFMGR_INVITED_TO_ENTER") or
(which == "AREA_SPIRIT_HEAL")) then
local text = _G[dialog:GetName().."Text"];
local hasText = nil;
if ( text:GetText() ~= " " ) then
hasText = 1;
end
timeleft = ceil(timeleft);
if ( which == "INSTANCE_BOOT" ) then
if ( timeleft < 60 ) then
text:SetFormattedText(StaticPopupDialogs[which].text, timeleft, SECONDS);
else
text:SetFormattedText(StaticPopupDialogs[which].text, ceil(timeleft / 60), MINUTES);
end
elseif ( which == "CONFIRM_SUMMON" ) then
if ( timeleft < 60 ) then
text:SetFormattedText(StaticPopupDialogs[which].text, GetSummonConfirmSummoner(), GetSummonConfirmAreaName(), timeleft, SECONDS);
else
text:SetFormattedText(StaticPopupDialogs[which].text, GetSummonConfirmSummoner(), GetSummonConfirmAreaName(), ceil(timeleft / 60), MINUTES);
end
else
if ( timeleft < 60 ) then
text:SetFormattedText(StaticPopupDialogs[which].text, timeleft, SECONDS);
else
text:SetFormattedText(StaticPopupDialogs[which].text, ceil(timeleft / 60), MINUTES);
end
end
if ( not hasText ) then
StaticPopup_Resize(dialog, which);
end
end
end
if ( dialog.startDelay ) then
local which = dialog.which;
local timeleft = dialog.startDelay - elapsed;
if ( timeleft <= 0 ) then
dialog.startDelay = nil;
local text = _G[dialog:GetName().."Text"];
text:SetFormattedText(StaticPopupDialogs[which].text, text.text_arg1, text.text_arg2);
local button1 = _G[dialog:GetName().."Button1"];
button1:Enable();
StaticPopup_Resize(dialog, which);
return;
end
dialog.startDelay = timeleft;
if ( which == "RECOVER_CORPSE" or (which == "RESURRECT") or (which == "RESURRECT_NO_SICKNESS") ) then
local text = _G[dialog:GetName().."Text"];
local hasText = nil;
if ( text:GetText() ~= " " ) then
hasText = 1;
end
timeleft = ceil(timeleft);
if ( (which == "RESURRECT") or (which == "RESURRECT_NO_SICKNESS") ) then
if ( timeleft < 60 ) then
text:SetFormattedText(StaticPopupDialogs[which].delayText, text.text_arg1, timeleft, SECONDS);
else
text:SetFormattedText(StaticPopupDialogs[which].delayText, text.text_arg1, ceil(timeleft / 60), MINUTES);
end
else
if ( timeleft < 60 ) then
text:SetFormattedText(StaticPopupDialogs[which].delayText, timeleft, SECONDS);
else
text:SetFormattedText(StaticPopupDialogs[which].delayText, ceil(timeleft / 60), MINUTES);
end
end
if ( not hasText ) then
StaticPopup_Resize(dialog, which);
end
end
end
local onUpdate = StaticPopupDialogs[dialog.which].OnUpdate;
if ( onUpdate ) then
onUpdate(dialog, elapsed);
end
end
function StaticPopup_EditBoxOnEnterPressed(self)
local EditBoxOnEnterPressed, which, dialog;
local parent = self:GetParent();
if ( parent.which ) then
which = parent.which;
dialog = parent;
elseif ( parent:GetParent().which ) then
-- This is needed if this is a money input frame since it's nested deeper than a normal edit box
which = parent:GetParent().which;
dialog = parent:GetParent();
end
if ( not self.autoCompleteParams or not AutoCompleteEditBox_OnEnterPressed(self) ) then
EditBoxOnEnterPressed = StaticPopupDialogs[which].EditBoxOnEnterPressed;
if ( EditBoxOnEnterPressed ) then
EditBoxOnEnterPressed(self, dialog.data);
end
end
end
function StaticPopup_EditBoxOnEscapePressed(self)
local EditBoxOnEscapePressed = StaticPopupDialogs[self:GetParent().which].EditBoxOnEscapePressed;
if ( EditBoxOnEscapePressed ) then
EditBoxOnEscapePressed(self, self:GetParent().data);
end
end
function StaticPopup_EditBoxOnTextChanged(self, userInput)
if ( not self.autoCompleteParams or not AutoCompleteEditBox_OnTextChanged(self, userInput) ) then
local EditBoxOnTextChanged = StaticPopupDialogs[self:GetParent().which].EditBoxOnTextChanged;
if ( EditBoxOnTextChanged ) then
EditBoxOnTextChanged(self, self:GetParent().data);
end
end
end
function StaticPopup_OnShow(self)
PlaySound("igMainMenuOpen");
local dialog = StaticPopupDialogs[self.which];
local OnShow = dialog.OnShow;
if ( OnShow ) then
OnShow(self, self.data);
end
if ( dialog.hasMoneyInputFrame ) then
_G[self:GetName().."MoneyInputFrameGold"]:SetFocus();
end
if ( dialog.enterClicksFirstButton ) then
self:SetScript("OnKeyDown", StaticPopup_OnKeyDown);
end
end
function StaticPopup_OnHide(self)
PlaySound("igMainMenuClose");
StaticPopup_CollapseTable();
local dialog = StaticPopupDialogs[self.which];
local OnHide = dialog.OnHide;
if ( OnHide ) then
OnHide(self, self.data);
end
self.extraFrame:Hide();
if ( dialog.enterClicksFirstButton ) then
self:SetScript("OnKeyDown", nil);
end
end
function StaticPopup_OnClick(dialog, index)
if ( not dialog:IsShown() ) then
return;
end
local which = dialog.which;
local info = StaticPopupDialogs[which];
if ( not info ) then
return nil;
end
local hide = true;
if ( index == 1 ) then
local OnAccept = info.OnAccept;
if ( OnAccept ) then
hide = not OnAccept(dialog, dialog.data, dialog.data2);
end
elseif ( index == 3 ) then
local OnAlt = info.OnAlt;
if ( OnAlt ) then
OnAlt(dialog, dialog.data, "clicked");
end
else
local OnCancel = info.OnCancel;
if ( OnCancel ) then
hide = not OnCancel(dialog, dialog.data, "clicked");
end
end
if ( hide and (which == dialog.which) ) then
-- can dialog.which change inside one of the On* functions???
dialog:Hide();
end
end
function StaticPopup_OnKeyDown(self, key)
-- previously, StaticPopup_EscapePressed() captured the escape key for dialogs, but now we need
-- to catch it here
if ( GetBindingFromClick(key) == "TOGGLEGAMEMENU" ) then
return StaticPopup_EscapePressed();
elseif ( GetBindingFromClick(key) == "SCREENSHOT" ) then
RunBinding("SCREENSHOT");
return;
end
local dialog = StaticPopupDialogs[self.which];
if ( dialog ) then
if ( key == "ENTER" and dialog.enterClicksFirstButton ) then
local frameName = self:GetName();
local button;
local i = 1;
while ( true ) do
button = _G[frameName.."Button"..i];
if ( button ) then
if ( button:IsShown() ) then
StaticPopup_OnClick(self, i);
return;
end
i = i + 1;
else
break;
end
end
end
end
end
function StaticPopup_Visible(which)
for index = 1, STATICPOPUP_NUMDIALOGS, 1 do
local frame = _G["StaticPopup"..index];
if( frame:IsShown() and (frame.which == which) ) then
return frame:GetName();
end
end
return nil;
end
function StaticPopup_EscapePressed()
local closed = nil;
for _, frame in pairs(StaticPopup_DisplayedFrames) do
if( frame:IsShown() and frame.hideOnEscape ) then
local standardDialog = StaticPopupDialogs[frame.which];
if ( standardDialog ) then
local OnCancel = standardDialog.OnCancel;
local noCancelOnEscape = standardDialog.noCancelOnEscape;
if ( OnCancel and not noCancelOnEscape) then
OnCancel(frame, frame.data, "clicked");
end
frame:Hide();
else
StaticPopupSpecial_Hide(frame);
end
closed = 1;
end
end
return closed;
end
function StaticPopup_SetUpPosition(dialog)
if ( not tContains(StaticPopup_DisplayedFrames, dialog) ) then
local lastFrame = StaticPopup_DisplayedFrames[#StaticPopup_DisplayedFrames];
if ( lastFrame ) then
dialog:SetPoint("TOP", lastFrame, "BOTTOM", 0, 0);
else
dialog:SetPoint("TOP", UIParent, "TOP", 0, -135);
end
tinsert(StaticPopup_DisplayedFrames, dialog);
end
end
function StaticPopup_CollapseTable()
local displayedFrames = StaticPopup_DisplayedFrames;
local index = #displayedFrames;
while ( ( index >= 1 ) and ( not displayedFrames[index]:IsShown() ) ) do
tremove(displayedFrames, index);
index = index - 1;
end
end
function StaticPopupSpecial_Show(frame)
if ( frame.exclusive ) then
StaticPopup_HideExclusive();
end
StaticPopup_SetUpPosition(frame);
frame:Show();
end
function StaticPopupSpecial_Hide(frame)
frame:Hide();
StaticPopup_CollapseTable();
end
--Used to figure out if we can resize a frame
function StaticPopup_IsLastDisplayedFrame(frame)
for i=#StaticPopup_DisplayedFrames, 1, -1 do
local popup = StaticPopup_DisplayedFrames[i];
if ( popup:IsShown() ) then
return frame == popup
end
end
return false;
end
function StaticPopup_OnEvent(self)
self.maxHeightSoFar = 0;
StaticPopup_Resize(self, self.which);
end
function StaticPopup_HideExclusive()
for _, frame in pairs(StaticPopup_DisplayedFrames) do
if ( frame:IsShown() and frame.exclusive ) then
local standardDialog = StaticPopupDialogs[frame.which];
if ( standardDialog ) then
frame:Hide();
local OnCancel = standardDialog.OnCancel;
if ( OnCancel ) then
OnCancel(frame, frame.data, "override");
end
else
StaticPopupSpecial_Hide(frame);
end
break;
end
end
end