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