StaticPopup_DisplayedFrames = { };
STATICPOPUP_NUMDIALOGS = 4;
STATICPOPUP_TIMEOUT = 60;
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_SAVE_EQUIPMENT_SET"] = {
text = CONFIRM_SAVE_EQUIPMENT_SET,
button1 = YES,
button2 = NO,
OnAccept = function (self) SaveEquipmentSet(self.data); end,
OnCancel = function (self) end,
OnHide = function (self) self.data = nil; end,
hideOnEscape = 1,
timeout = 0,
exclusive = 1,
whileDead = 1,
}
StaticPopupDialogs["ERROR_CINEMATIC"] = {
text = ERROR_CINEMATIC,
button1 = OKAY,
button2 = nil,
timeout = 0,
OnAccept = function()
end,
OnCancel = function()
end,
whileDead = 1,
hideOnEscape = 1,
}
StaticPopupDialogs["ERR_SOR_STARTING_EXPERIENCE_INCOMPLETE"] = {
text = ERR_SOR_STARTING_EXPERIENCE_INCOMPLETE,
button1 = OKAY,
button2 = nil,
timeout = 0,
OnAccept = function()
end,
OnCancel = function()
end,
whileDead = 1,
hideOnEscape = 1,
showAlert = 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 = "",
button1 = YES,
button2 = NO,
OnAccept = function (self)
local talentGroup = PlayerTalentFrame and PlayerTalentFrame.talentGroup or 1;
if ( talentGroup == GetActiveSpecGroup() ) then
RemoveGlyphFromSocket(self.data.id);
end
end,
OnShow = function(self)
local name, count, _, _, cost = GetGlyphClearInfo();
if cost == 0 then
self.text:SetFormattedText(CONFIRM_REMOVE_GLYPH_NO_COST, self.data.name);
elseif count >= cost then
self.text:SetFormattedText(CONFIRM_REMOVE_GLYPH, self.data.name, GREEN_FONT_COLOR_CODE, cost, name);
else
self.text:SetFormattedText(CONFIRM_REMOVE_GLYPH, self.data.name, RED_FONT_COLOR_CODE, cost, name);
self.button1:Disable();
end
end,
OnCancel = function (self)
end,
hideOnEscape = 1,
timeout = 0,
exclusive = 1,
}
StaticPopupDialogs["CONFIRM_GLYPH_PLACEMENT"] = {
text = "",
button1 = YES,
button2 = NO,
OnAccept = function (self) PlaceGlyphInSocket(self.data.id); end,
OnCancel = function (self)
end,
OnShow = function(self)
local name, count, _, _, cost = GetGlyphClearInfo();
if cost == 0 then
self.text:SetFormattedText(CONFIRM_GLYPH_PLACEMENT_NO_COST, self.data.name);
elseif count >= cost then
self.text:SetFormattedText(CONFIRM_GLYPH_PLACEMENT, self.data.name, GREEN_FONT_COLOR_CODE, cost, name);
else
self.text:SetFormattedText(CONFIRM_GLYPH_PLACEMENT, self.data.name, RED_FONT_COLOR_CODE, cost, name);
self.button1:Disable();
end
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["MAC_OPEN_UNIVERSAL_ACCESS"] = {
text = MAC_OPEN_UNIVERSAL_ACCESS,
button1 = YES,
button2 = NO,
OnAccept = function ()
MacOptions_OpenUniversalAccess();
ShowUIPanel(MacOptionsFrame);
end,
OnCancel = function()
ShowUIPanel(MacOptionsFrame);
end,
showAlert = 1,
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 = GetCurrencyInfo(HONOR_CURRENCY);
local _, currentArenaPoints, _, _, _, maxArenaPoints = GetCurrencyInfo(CONQUEST_CURRENCY);
local overflowHonor = maxHonor > 0 and MerchantFrame.honorPoints and ( MerchantFrame.honorPoints + currentHonor > maxHonor );
local overflowArena = maxArenaPoints > 0 and 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();
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()
QuestFrameAcceptButton:Enable();
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_RESET_CHALLENGE_MODE"] = {
text = CONFIRM_RESET_CHALLENGE_MODE,
button1 = YES,
button2 = NO,
OnAccept = function(self)
ResetChallengeMode();
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)
if ( data == "LootWindow" ) then
MasterLooterFrame_GiveMasterLoot();
elseif ( data == "LootHistory" ) then
LootHistoryDropDown_GiveMasterLoot();
end
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, 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, battleID)
BattlefieldMgrQueueInviteResponse(battleID,1);
end,
OnCancel = function(self, battleID)
BattlefieldMgrQueueInviteResponse(battleID,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, battleID)
BattlefieldMgrQueueInviteResponse(battleID,1);
end,
OnCancel = function(self, battleID)
BattlefieldMgrQueueInviteResponse(battleID,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)
for i = 1, MAX_WORLD_PVP_QUEUES do
local status, mapName, queueID, timeleft = GetWorldPVPQueueStatus(i);
if ( queueID == self.data ) then
self.timeleft = timeleft;
end
end
end,
OnAccept = function(self, battleID)
BattlefieldMgrEntryInviteResponse(battleID,1);
end,
OnCancel = function(self, battleID)
BattlefieldMgrEntryInviteResponse(battleID,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)
ReportPlayer(PLAYER_REPORT_TYPE_SPAM, lineID);
--ComplainChat(lineID);
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_REPORT_BATTLEPET_NAME"] = {
text = REPORT_BATTLEPET_NAME_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
ReportPlayer(PLAYER_REPORT_TYPE_BAD_BATTLEPET_NAME, "pending");
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_REPORT_PET_NAME"] = {
text = REPORT_PET_NAME_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
ReportPlayer(PLAYER_REPORT_TYPE_BAD_PET_NAME, "pending");
end,
timeout = 0,
whileDead = 1,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_REPORT_BAD_LANGUAGE_CHAT"] = {
text = REPORT_BAD_LANGUAGE_CONFIRMATION,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, lineID)
ReportPlayer(PLAYER_REPORT_TYPE_LANGUAGE, lineID);
end,
timeout = 0,
whileDead = 1,
exclusive = 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(HELPFRAME_SUBMIT_TICKET);
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_GMResponse_Acknowledge();
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)
HelpFrame_GMResponse_Acknowledge(true);
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(HELPFRAME_GM_RESPONSE);
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();
return;
end
if ( IsEncounterInProgress() ) then
self.button1:Disable();
else
self.button1:Enable();
end
if( HasSoulstone() and CanUseSoulstone() ) then
self.button2:Enable();
else
self.button2:Disable();
end
end,
DisplayButton2 = function(self)
return HasSoulstone();
end,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1,
noCancelOnReuse = 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 = STATICPOPUP_TIMEOUT,
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 = STATICPOPUP_TIMEOUT,
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 = STATICPOPUP_TIMEOUT,
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 = STATICPOPUP_TIMEOUT,
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 = STATICPOPUP_TIMEOUT,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["PARTY_INVITE_XREALM"] = {
text = INVITATION_XREALM,
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 = STATICPOPUP_TIMEOUT,
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 = STATICPOPUP_TIMEOUT,
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 = STATICPOPUP_TIMEOUT,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["BN_BLOCK_FAILED_TOO_MANY_RID"] = {
text = BN_BLOCK_FAILED_TOO_MANY_RID,
button1 = OKAY,
timeout = 0,
whileDead = 1,
hideOnEscape = 1,
};
StaticPopupDialogs["BN_BLOCK_FAILED_TOO_MANY_CID"] = {
text = BN_BLOCK_FAILED_TOO_MANY_CID,
button1 = OKAY,
timeout = 0,
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 = STATICPOPUP_TIMEOUT,
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 = STATICPOPUP_TIMEOUT,
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["CONFIM_BEFORE_USE"] = {
text = CONFIRM_ITEM_USE,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
ConfirmOnUse();
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_QUEST_ITEM"] = {
text = DELETE_QUEST_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() ) 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["DELETE_GOOD_QUEST_ITEM"] = {
text = DELETE_GOOD_QUEST_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() ) 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,
countInvisibleLetters = true,
editBoxWidth = 350,
OnAccept = function(self)
SetFriendNotes(FriendsFrame.NotesID, self.editBox:GetText());
end,
OnShow = function(self)
local name, level, class, area, connected, status, note = GetFriendInfo(FriendsFrame.NotesID);
if ( note ) then
self.editBox:SetText(note);
end
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
SetFriendNotes(FriendsFrame.NotesID, parent.editBox: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,
countInvisibleLetters = true,
editBoxWidth = 350,
OnAccept = function(self)
BNSetFriendNote(FriendsFrame.NotesID, self.editBox:GetText());
end,
OnShow = function(self)
local presenceID, presenceName, battleTag, isBattleTagPresence, toonName, toonID, client, isOnline, lastOnline, isAFK, isDND, messageText, noteText = BNGetFriendInfoByID(FriendsFrame.NotesID);
if ( noteText ) then
self.editBox:SetText(noteText);
end
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
BNSetFriendNote(FriendsFrame.NotesID, parent.editBox: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 = INVITE,
button2 = CANCEL,
hasEditBox = 1,
autoCompleteParams = AUTOCOMPLETE_LIST.TEAM_INVITE,
maxLetters = 12,
OnAccept = function(self, teamIndex)
ArenaTeamInviteByName(teamIndex, self.editBox:GetText());
end,
OnShow = function(self)
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self, teamIndex)
local parent = self:GetParent();
ArenaTeamInviteByName(teamIndex, 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)
InviteToGroup(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();
InviteToGroup(parent.editBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONVERT_TO_RAID"] = {
text = CONVERT_TO_RAID_LABEL,
button1 = CONVERT,
button2 = CANCEL,
OnAccept = function(self, data)
ConvertToRaid();
InviteUnit(data);
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1,
showAlert = 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["SET_GUILDPLAYERNOTE"] = {
text = SET_GUILDPLAYERNOTE_LABEL,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 31,
editBoxWidth = 260,
OnAccept = function(self)
GuildRosterSetPublicNote(GetGuildRosterSelection(), self.editBox:GetText());
end,
OnShow = function(self)
--Sets the text to the 7th return from GetGuildRosterInfo(GetGuildRosterSelection());
self.editBox:SetText(select(7, GetGuildRosterInfo(GetGuildRosterSelection())));
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
GuildRosterSetPublicNote(GetGuildRosterSelection(), parent.editBox: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,
editBoxWidth = 260,
OnAccept = function(self)
GuildRosterSetOfficerNote(GetGuildRosterSelection(), self.editBox: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.editBox:SetText(select(8, GetGuildRosterInfo(GetGuildRosterSelection())));
self.editBox:SetFocus();
end,
OnHide = function(self)
ChatEdit_FocusActiveWindow();
self.editBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
GuildRosterSetOfficerNote(GetGuildRosterSelection(), parent.editBox: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 = STATICPOPUP_TIMEOUT,
hideOnEscape = 1
};
StaticPopupDialogs["DUEL_OUTOFBOUNDS"] = {
text = DUEL_OUTOFBOUNDS_TIMER,
timeout = 10,
};
StaticPopupDialogs["PET_BATTLE_PVP_DUEL_REQUESTED"] = {
text = PET_BATTLE_PVP_DUEL_REQUESTED,
button1 = ACCEPT,
button2 = DECLINE,
sound = "igPlayerInvite",
OnAccept = function(self)
C_PetBattles.AcceptPVPDuel();
end,
OnCancel = function(self)
C_PetBattles.CancelPVPDuel();
end,
timeout = STATICPOPUP_TIMEOUT,
hideOnEscape = 1
};
StaticPopupDialogs["UNLEARN_SKILL"] = {
text = UNLEARN_SKILL,
button1 = UNLEARN,
button2 = CANCEL,
OnAccept = function(self, index)
AbandonSkill(index);
if ( TradeSkillFrame_Hide ) then
TradeSkillFrame_Hide();
end
end,
timeout = STATICPOPUP_TIMEOUT,
exclusive = 1,
whileDead = 1,
showAlert = 1,
hideOnEscape = 1
};
StaticPopupDialogs["UNLEARN_SPECIALIZATION"] = {
text = UNLEARN_SKILL,
button1 = UNLEARN,
button2 = CANCEL,
OnAccept = function(self, index)
UnlearnSpecialization(index);
end,
timeout = STATICPOPUP_TIMEOUT,
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 = CHOOSE_LOCATION,
button2 = CANCEL,
OnShow = function(self)
self.timeleft = GetAreaSpiritHealerTime();
end,
OnAccept = function(self)
ShowUIPanel(WorldMapFrame);
return true; --Don't close this popup.
end,
OnCancel = function(self)
CancelAreaSpiritHeal();
end,
DisplayButton1 = function(self)
return IsCemeterySelectionAvailable();
end,
timeout = 0,
whileDead = 1,
interruptCinematic = 1,
notClosableByLogout = 1,
hideOnEscape = 1,
timeoutInformationalOnly = 1,
noCancelOnReuse = 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_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 enforceTime = self.data;
local lockTimeleft, isPreviousInstance = GetInstanceLockTimeRemaining();
if ( enforceTime and 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)
if ( not enforceTime ) then
local name = GetDungeonNameWithDifficulty(self.name, self.difficultyName);
local text = _G[self:GetName().."Text"];
local lockstring = string.format((self.isPreviousInstance and INSTANCE_LOCK_WARNING_PREVIOUSLY_SAVED or INSTANCE_LOCK_WARNING), 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);
StaticPopup_Resize(self, "INSTANCE_LOCK");
end
end,
OnHide = function(self)
self.extraFrame:SetScript("OnEnter", nil)
self.extraFrame:SetScript("OnLeave", nil)
end,
OnUpdate = function(self, elapsed)
local enforceTime = self.data;
if ( enforceTime ) then
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
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,
DisplayButton2 = function(self)
return self.data;
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,
exclusive = 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,
showAlert = 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 = "%s",
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self, presenceID)
BNRemoveFriend(presenceID);
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
StaticPopupDialogs["PICKUP_MONEY"] = {
text = AMOUNT_TO_PICKUP,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function(self)
MoneyInputFrame_PickupPlayerMoney(self.moneyInputFrame);
end,
OnHide = function(self)
MoneyInputFrame_ResetMoney(self.moneyInputFrame);
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent():GetParent();
MoneyInputFrame_PickupPlayerMoney(parent.moneyInputFrame);
parent:Hide();
end,
hasMoneyInputFrame = 1,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_GUILD_CHARTER_SIGNATURE"] = {
text = GUILD_REPUTATION_WARNING_GENERIC.."\n"..CONFIRM_CONTINUE,
button1 = YES,
button2 = NO,
OnAccept = function(self)
SignPetition();
end,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_GUILD_CHARTER_PURCHASE"] = {
text = GUILD_REPUTATION_WARNING_GENERIC.."\n"..CONFIRM_CONTINUE,
button1 = YES,
button2 = NO,
OnAccept = function(self)
GuildRegistrar_PurchaseCharter(true);
end,
timeout = 0,
hideOnEscape = 1
};
StaticPopupDialogs["GUILD_DEMOTE_CONFIRM"] = {
text = "%s",
button1 = YES,
button2 = NO,
OnAccept = function(self)
GuildDemote(self.data);
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["GUILD_PROMOTE_CONFIRM"] = {
text = "%s",
button1 = YES,
button2 = NO,
OnAccept = function(self)
GuildPromote(self.data);
end,
timeout = 0,
exclusive = 1,
hideOnEscape = 1
};
StaticPopupDialogs["CONFIRM_RANK_AUTHENTICATOR_REMOVE"] = {
text = "%s",
button1 = YES,
button2 = NO,
OnAccept = function(self)
local checkbox = self.data;
checkbox:SetChecked(false);
GuildControlUI_CheckClicked(checkbox);
end,
timeout = 0,
showAlert = 1,
hideOnEscape = 1,
whileDead = 1,
};
StaticPopupDialogs["VOID_DEPOSIT_CONFIRM"] = {
text = VOID_STORAGE_DEPOSIT_CONFIRMATION.."\n"..CONFIRM_CONTINUE,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self)
VoidStorage_UpdateTransferButton();
end,
OnCancel = function(self)
VoidStorage_CloseConfirmationDialog(self.data.slot);
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1,
hasItemFrame = 1
};
StaticPopupDialogs["GUILD_IMPEACH"] = {
text = GUILD_IMPEACH_POPUP_TEXT ,
button1 = GUILD_IMPEACH_POPUP_CONFIRM,
button2 = CANCEL,
OnAccept = function (self) ReplaceGuildMaster(); end,
OnCancel = function (self) end,
hideOnEscape = 1,
timeout = 0,
exclusive = 1,
}
StaticPopupDialogs["SPELL_CONFIRMATION_PROMPT" ] = {
button1 = YES,
button2 = NO,
OnAccept = function(self)
AcceptSpellConfirmationPrompt(self.data);
end,
OnCancel = function(self)
DeclineSpellConfirmationPrompt(self.data);
end,
exclusive = 0,
whileDead = 1,
hideOnEscape = 1
}
StaticPopupDialogs["CONFIRM_LAUNCH_URL"] = {
text = CONFIRM_LAUNCH_URL,
button1 = OKAY,
button2 = CANCEL,
OnAccept = function(self, data) LoadURLIndex(data.index, data.mapID); end,
hideOnEscape = 1,
timeout = 0,
}
StaticPopupDialogs["CONFIRM_LEAVE_INSTANCE_PARTY"] = {
text = CONFIRM_LEAVE_INSTANCE_PARTY,
button1 = YES,
button2 = CANCEL,
OnAccept = function(self, data)
if ( IsInGroup(LE_PARTY_CATEGORY_INSTANCE) ) then
LeaveParty();
end
end,
whileDead = 1,
hideOnEscape = 1,
showAlert = 1,
}
StaticPopupDialogs["CONFIRM_LEAVE_BATTLEFIELD"] = {
text = CONFIRM_LEAVE_BATTLEFIELD,
button1 = YES,
button2 = CANCEL,
OnShow = function(self)
if ( IsActiveBattlefieldArena() ) then
self.text:SetText(CONFIRM_LEAVE_ARENA);
else
self.text:SetText(CONFIRM_LEAVE_BATTLEFIELD);
end
end,
OnAccept = function(self, data)
LeaveBattlefield();
end,
whileDead = 1,
hideOnEscape = 1,
showAlert = 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 ( dialog.numButtons == 3 ) then
width = 440;
elseif (info.showAlert or info.showAlertGear or info.closeButton) then
-- Widen
width = 420;
elseif ( info.editBoxWidth and info.editBoxWidth > 260 ) then
width = width + (info.editBoxWidth - 260);
elseif ( which == "HELP_TICKET" ) then
width = 350;
elseif ( which == "GUILD_IMPEACH" ) then
width = 375;
end
if ( width > maxWidthSoFar ) then
dialog:SetWidth(width);
dialog.maxWidthSoFar = width;
end
local height = 32 + text:GetHeight() + 8 + button1:GetHeight();
if ( info.hasEditBox ) then
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
local tempButtonLocs = {}; --So we don't make a new table each time.
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);
elseif ( which == "SPELL_CONFIRMATION_PROMPT" ) then
text:SetText(text_arg1);
info.text = text_arg1;
info.timeout = text_arg2;
else
text:SetFormattedText(info.text, text_arg1, text_arg2);
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 editBox = _G[dialog:GetName().."EditBox"];
if ( info.hasEditBox ) then
editBox:Show();
if ( info.maxLetters ) then
editBox:SetMaxLetters(info.maxLetters);
editBox:SetCountInvisibleLetters(info.countInvisibleLetters);
end
if ( info.maxBytes ) then
editBox:SetMaxBytes(info.maxBytes);
end
editBox:SetText("");
if ( info.editBoxWidth ) then
editBox:SetWidth(info.editBoxWidth);
else
editBox:SetWidth(130);
end
else
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
local moneyInputFrame = _G[dialog:GetName().."MoneyInputFrame"];
moneyInputFrame:Show();
_G[dialog:GetName().."MoneyFrame"]:Hide();
-- Set OnEnterPress for money input frames
if ( info.EditBoxOnEnterPressed ) then
moneyInputFrame.gold:SetScript("OnEnterPressed", StaticPopup_EditBoxOnEnterPressed);
moneyInputFrame.silver:SetScript("OnEnterPressed", StaticPopup_EditBoxOnEnterPressed);
moneyInputFrame.copper:SetScript("OnEnterPressed", StaticPopup_EditBoxOnEnterPressed);
else
moneyInputFrame.gold:SetScript("OnEnterPressed", nil);
moneyInputFrame.silver:SetScript("OnEnterPressed", nil);
moneyInputFrame.copper: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 miscellaneous variables for the dialog
dialog.which = which;
dialog.timeleft = info.timeout or 0;
dialog.hideOnEscape = info.hideOnEscape;
dialog.exclusive = info.exclusive;
dialog.enterClicksFirstButton = info.enterClicksFirstButton;
-- Clear out data
dialog.data = data;
-- Set the buttons of the dialog
local button1 = _G[dialog:GetName().."Button1"];
local button2 = _G[dialog:GetName().."Button2"];
local button3 = _G[dialog:GetName().."Button3"];
do --If there is any recursion in this block, we may get errors (tempButtonLocs is static). If you have to recurse, we'll have to create a new table each time.
assert(#tempButtonLocs == 0); --If this fails, we're recursing. (See the table.wipe at the end of the block)
tinsert(tempButtonLocs, button1);
tinsert(tempButtonLocs, button2);
tinsert(tempButtonLocs, button3);
for i=#tempButtonLocs, 1, -1 do
--Do this stuff before we move it. (This is why we go back-to-front)
tempButtonLocs[i]:SetText(info["button"..i]);
tempButtonLocs[i]:Hide();
tempButtonLocs[i]:ClearAllPoints();
--Now we possibly remove it.
if ( not (info["button"..i] and ( not info["DisplayButton"..i] or info["DisplayButton"..i](dialog))) ) then
tremove(tempButtonLocs, i);
end
end
local numButtons = #tempButtonLocs;
--Save off the number of buttons.
dialog.numButtons = numButtons;
if ( numButtons == 3 ) then
tempButtonLocs[1]:SetPoint("BOTTOMRIGHT", dialog, "BOTTOM", -72, 16);
elseif ( numButtons == 2 ) then
tempButtonLocs[1]:SetPoint("BOTTOMRIGHT", dialog, "BOTTOM", -6, 16);
elseif ( numButtons == 1 ) then
tempButtonLocs[1]:SetPoint("BOTTOM", dialog, "BOTTOM", 0, 16);
end
for i=1, numButtons do
if ( i > 1 ) then
tempButtonLocs[i]:SetPoint("LEFT", tempButtonLocs[i-1], "RIGHT", 13, 0);
end
local width = tempButtonLocs[i]:GetTextWidth();
if ( width > 110 ) then
tempButtonLocs[i]:SetWidth(width + 20);
else
tempButtonLocs[i]:SetWidth(120);
end
tempButtonLocs[i]:Enable();
tempButtonLocs[i]:Show();
end
table.wipe(tempButtonLocs);
end
-- Show or hide the alert icon
local alertIcon = _G[dialog:GetName().."AlertIcon"];
if ( info.showAlert ) then
alertIcon:SetTexture(STATICPOPUP_TEXTURE_ALERT);
if ( button3:IsShown() )then
alertIcon:SetPoint("LEFT", 24, 10);
else
alertIcon:SetPoint("LEFT", 24, 0);
end
alertIcon:Show();
elseif ( info.showAlertGear ) then
alertIcon:SetTexture(STATICPOPUP_TEXTURE_ALERTGEAR);
if ( button3:IsShown() )then
alertIcon:SetPoint("LEFT", 24, 0);
else
alertIcon:SetPoint("LEFT", 24, 0);
end
alertIcon:Show();
else
alertIcon:SetTexture();
alertIcon:Hide();
end
if ( info.StartDelay ) then
dialog.startDelay = info.StartDelay();
button1:Disable();
else
dialog.startDelay = nil;
button1:Enable();
end
editBox.autoCompleteParams = info.autoCompleteParams;
editBox.autoCompleteRegex = info.autoCompleteRegex;
editBox.autoCompleteFormatRegex = info.autoCompleteFormatRegex;
editBox.addHighlightedText = 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") or
(which == "SPELL_CONFIRMATION_PROMPT")) 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
elseif ( which == "BFMGR_INVITED_TO_ENTER") then
if ( timeleft < 60 ) then
text:SetFormattedText(StaticPopupDialogs[which].text, text.text_arg1, timeleft, SECONDS);
else
text:SetFormattedText(StaticPopupDialogs[which].text, text.text_arg1, ceil(timeleft / 60), MINUTES);
end
elseif ( which == "SPELL_CONFIRMATION_PROMPT") then
local time = "";
if ( timeleft < 60 ) then
text:SetFormattedText(ERR_SPELL_FAILED_S, timeleft, SECONDS);
else
text:SetFormattedText(ERR_SPELL_FAILED_S, ceil(timeleft / 60), MINUTES);
end
text:SetText(StaticPopupDialogs[which].text .. " " ..TIME_REMAINING .. text:GetText());
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(), frame;
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