Mercurial > wow > raid-target-tactics
view NameDialog.lua @ 11:d2cbfe498c4d
first beta
author | Jay Bird <a4blank@yahoo.com> |
---|---|
date | Sat, 04 Dec 2010 05:53:52 +0300 |
parents | |
children |
line wrap: on
line source
NameDialog = class() local L = LibStub("AceLocale-3.0"):GetLocale("RaidTargetTactics") function NameDialog:init(names) self.invalidNames = names self.callback = function() end end function NameDialog:InitDialog() local this = self self.nameBox = CreateFrame("Frame", nil, UIParent) self.nameBox:SetWidth(240) self.nameBox:SetHeight(50) local backdrop = { -- path to the background texture bgFile = "Interface\\FrameGeneral\\UI-Background-Marble", -- path to the border texture edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border", -- true to repeat the background texture to fill the frame, false to scale it tile = true, -- size (width or height) of the square repeating background tiles (in pixels) tileSize = 256, -- thickness of edge segments and square size of edge corners (in pixels) edgeSize = 32, -- distance from the edges of the frame to those of the background texture (in pixels) insets = { left = 11, right = 12, top = 12, bottom = 11 } } self.nameBox:SetBackdrop(backdrop) self.nameBox:SetFrameStrata("DIALOG") self.nameBox:SetPoint("CENTER") self.nameLabel = self.nameBox:CreateFontString() self.nameLabel:SetFontObject(GameFontHighlight) self.nameLabel:SetPoint("LEFT", 20, 0) self.nameLabel:SetText(L.Name .. ":") self.nameLabel:SetTextColor(YELLOW_FONT_COLOR.r, YELLOW_FONT_COLOR.g, YELLOW_FONT_COLOR.b) self.nameLabel:Show() self.nameField = CreateFrame("EditBox", "__RTT_ASKNAME", self.nameBox, "InputBoxTemplate") self.nameField:SetAutoFocus(false) self.nameField:SetFontObject(ChatFontNormal) self.nameField:SetWidth(100) self.nameField:SetHeight(20) self.nameField:SetPoint("LEFT", 60, 0) self.nameField:SetTextInsets(0, 0, 3, 3) self.nameField:SetScript("OnEscapePressed", function() this:Hide() end) self.nameField:SetScript("OnTextChanged", function() this:OnChange() end) self.nameField:SetScript("OnEnterPressed", function() this:OnEnter() end) -- add button self.okButton = CreateFrame("Button", nil, self.nameBox, "OptionsButtonTemplate") self.okButton:SetText("OK") self.okButton:Disable() self.okButton:SetWidth(50) self.okButton:SetPoint("left", 170, 0) self.okButton:Show() self.okButton:SetScript("OnClick", function() this:OnEnter() end) self.nameBox:Hide() end function NameDialog:SetInvalidNames(names) self.invalidNames = names end function NameDialog:Show() self.nameBox:Show() self.nameField:SetText("") self.nameField:SetFocus() end function NameDialog:Hide() self.nameBox:Hide() end function NameDialog:GetName() return strtrim(self.nameField:GetText()) end function NameDialog:IsValidName() local name = self:GetName() if #name > 0 then for _, taken in ipairs(self.invalidNames) do if name == taken then return false end end return true end return false end function NameDialog:OnChange() if self:IsValidName() then self.okButton:Enable() else self.okButton:Disable() end end function NameDialog:OnEnter() if not self:IsValidName() then return end local name = self:GetName() self:Hide() self.callback(name) end function NameDialog:OnNameChosen(func) self.callback = func end