annotate NameDialog.lua @ 11:d2cbfe498c4d

first beta
author Jay Bird <a4blank@yahoo.com>
date Sat, 04 Dec 2010 05:53:52 +0300
parents
children
rev   line source
a4blank@11 1
a4blank@11 2 NameDialog = class()
a4blank@11 3 local L = LibStub("AceLocale-3.0"):GetLocale("RaidTargetTactics")
a4blank@11 4
a4blank@11 5 function NameDialog:init(names)
a4blank@11 6 self.invalidNames = names
a4blank@11 7 self.callback = function() end
a4blank@11 8 end
a4blank@11 9
a4blank@11 10 function NameDialog:InitDialog()
a4blank@11 11 local this = self
a4blank@11 12
a4blank@11 13 self.nameBox = CreateFrame("Frame", nil, UIParent)
a4blank@11 14 self.nameBox:SetWidth(240)
a4blank@11 15 self.nameBox:SetHeight(50)
a4blank@11 16 local backdrop = {
a4blank@11 17 -- path to the background texture
a4blank@11 18 bgFile = "Interface\\FrameGeneral\\UI-Background-Marble",
a4blank@11 19 -- path to the border texture
a4blank@11 20 edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Gold-Border",
a4blank@11 21 -- true to repeat the background texture to fill the frame, false to scale it
a4blank@11 22 tile = true,
a4blank@11 23 -- size (width or height) of the square repeating background tiles (in pixels)
a4blank@11 24 tileSize = 256,
a4blank@11 25 -- thickness of edge segments and square size of edge corners (in pixels)
a4blank@11 26 edgeSize = 32,
a4blank@11 27 -- distance from the edges of the frame to those of the background texture (in pixels)
a4blank@11 28 insets = {
a4blank@11 29 left = 11,
a4blank@11 30 right = 12,
a4blank@11 31 top = 12,
a4blank@11 32 bottom = 11
a4blank@11 33 }
a4blank@11 34 }
a4blank@11 35 self.nameBox:SetBackdrop(backdrop)
a4blank@11 36 self.nameBox:SetFrameStrata("DIALOG")
a4blank@11 37 self.nameBox:SetPoint("CENTER")
a4blank@11 38
a4blank@11 39 self.nameLabel = self.nameBox:CreateFontString()
a4blank@11 40 self.nameLabel:SetFontObject(GameFontHighlight)
a4blank@11 41 self.nameLabel:SetPoint("LEFT", 20, 0)
a4blank@11 42 self.nameLabel:SetText(L.Name .. ":")
a4blank@11 43 self.nameLabel:SetTextColor(YELLOW_FONT_COLOR.r, YELLOW_FONT_COLOR.g, YELLOW_FONT_COLOR.b)
a4blank@11 44 self.nameLabel:Show()
a4blank@11 45
a4blank@11 46 self.nameField = CreateFrame("EditBox", "__RTT_ASKNAME", self.nameBox, "InputBoxTemplate")
a4blank@11 47 self.nameField:SetAutoFocus(false)
a4blank@11 48 self.nameField:SetFontObject(ChatFontNormal)
a4blank@11 49 self.nameField:SetWidth(100)
a4blank@11 50 self.nameField:SetHeight(20)
a4blank@11 51 self.nameField:SetPoint("LEFT", 60, 0)
a4blank@11 52 self.nameField:SetTextInsets(0, 0, 3, 3)
a4blank@11 53 self.nameField:SetScript("OnEscapePressed", function() this:Hide() end)
a4blank@11 54 self.nameField:SetScript("OnTextChanged", function() this:OnChange() end)
a4blank@11 55 self.nameField:SetScript("OnEnterPressed", function() this:OnEnter() end)
a4blank@11 56
a4blank@11 57 -- add button
a4blank@11 58 self.okButton = CreateFrame("Button", nil, self.nameBox, "OptionsButtonTemplate")
a4blank@11 59 self.okButton:SetText("OK")
a4blank@11 60 self.okButton:Disable()
a4blank@11 61 self.okButton:SetWidth(50)
a4blank@11 62 self.okButton:SetPoint("left", 170, 0)
a4blank@11 63 self.okButton:Show()
a4blank@11 64 self.okButton:SetScript("OnClick", function() this:OnEnter() end)
a4blank@11 65
a4blank@11 66 self.nameBox:Hide()
a4blank@11 67 end
a4blank@11 68
a4blank@11 69 function NameDialog:SetInvalidNames(names)
a4blank@11 70 self.invalidNames = names
a4blank@11 71 end
a4blank@11 72
a4blank@11 73 function NameDialog:Show()
a4blank@11 74 self.nameBox:Show()
a4blank@11 75 self.nameField:SetText("")
a4blank@11 76 self.nameField:SetFocus()
a4blank@11 77 end
a4blank@11 78
a4blank@11 79 function NameDialog:Hide()
a4blank@11 80 self.nameBox:Hide()
a4blank@11 81 end
a4blank@11 82
a4blank@11 83 function NameDialog:GetName()
a4blank@11 84 return strtrim(self.nameField:GetText())
a4blank@11 85 end
a4blank@11 86
a4blank@11 87 function NameDialog:IsValidName()
a4blank@11 88 local name = self:GetName()
a4blank@11 89 if #name > 0 then
a4blank@11 90 for _, taken in ipairs(self.invalidNames) do
a4blank@11 91 if name == taken then
a4blank@11 92 return false
a4blank@11 93 end
a4blank@11 94 end
a4blank@11 95 return true
a4blank@11 96 end
a4blank@11 97 return false
a4blank@11 98 end
a4blank@11 99
a4blank@11 100 function NameDialog:OnChange()
a4blank@11 101 if self:IsValidName() then
a4blank@11 102 self.okButton:Enable()
a4blank@11 103 else
a4blank@11 104 self.okButton:Disable()
a4blank@11 105 end
a4blank@11 106 end
a4blank@11 107
a4blank@11 108 function NameDialog:OnEnter()
a4blank@11 109 if not self:IsValidName() then
a4blank@11 110 return
a4blank@11 111 end
a4blank@11 112 local name = self:GetName()
a4blank@11 113 self:Hide()
a4blank@11 114 self.callback(name)
a4blank@11 115 end
a4blank@11 116
a4blank@11 117 function NameDialog:OnNameChosen(func)
a4blank@11 118 self.callback = func
a4blank@11 119 end
a4blank@11 120