hero class fixes from Mattibalize

This commit is contained in:
Andrew6810
2022-10-24 05:01:11 -07:00
parent 34b48be542
commit 004b174706
48 changed files with 19687 additions and 3872 deletions
File diff suppressed because it is too large Load Diff
@@ -1,79 +0,0 @@
------------------------------------------------------------------------
r295 | cremor | 2010-10-22 16:37:30 +0000 (Fri, 22 Oct 2010) | 1 line
Changed paths:
M /trunk/RatingBuster-Locale-deDE.lua
- deDE update
------------------------------------------------------------------------
r294 | whitetooth | 2010-10-22 16:07:47 +0000 (Fri, 22 Oct 2010) | 2 lines
Changed paths:
M /trunk/RatingBuster-Locale-deDE.lua
M /trunk/RatingBuster-Locale-enUS.lua
M /trunk/RatingBuster-Locale-esES.lua
M /trunk/RatingBuster-Locale-frFR.lua
M /trunk/RatingBuster-Locale-koKR.lua
M /trunk/RatingBuster-Locale-ruRU.lua
M /trunk/RatingBuster-Locale-zhCN.lua
M /trunk/RatingBuster-Locale-zhTW.lua
M /trunk/RatingBuster.lua
- Removed deprecated stats
- Update libs
------------------------------------------------------------------------
r293 | cremor | 2010-10-22 14:12:12 +0000 (Fri, 22 Oct 2010) | 1 line
Changed paths:
M /trunk/RatingBuster-Locale-deDE.lua
- deDE update
------------------------------------------------------------------------
r292 | whitetooth | 2010-10-21 07:47:03 +0000 (Thu, 21 Oct 2010) | 1 line
Changed paths:
M /trunk/RatingBuster-Locale-deDE.lua
M /trunk/RatingBuster-Locale-enUS.lua
M /trunk/RatingBuster-Locale-esES.lua
M /trunk/RatingBuster-Locale-frFR.lua
M /trunk/RatingBuster-Locale-koKR.lua
M /trunk/RatingBuster-Locale-ruRU.lua
M /trunk/RatingBuster-Locale-zhCN.lua
M /trunk/RatingBuster-Locale-zhTW.lua
M /trunk/RatingBuster.lua
- Partial support for Master Rating
------------------------------------------------------------------------
r289 | whitetooth | 2010-10-19 17:22:17 +0000 (Tue, 19 Oct 2010) | 1 line
Changed paths:
M /trunk/RatingBuster.lua
- Removed "ADD_AP_MOD_SPELL_DMG"
------------------------------------------------------------------------
r288 | whitetooth | 2010-10-19 17:01:30 +0000 (Tue, 19 Oct 2010) | 1 line
Changed paths:
M /trunk
M /trunk/.pkgmeta
M /trunk/About RatingBuster.txt
M /trunk/RatingBuster.lua
M /trunk/RatingBuster.toc
M /trunk/embeds.xml
- Core updated to LibStatLogic-1.2
------------------------------------------------------------------------
r287 | 7destiny | 2010-10-15 16:39:21 +0000 (Fri, 15 Oct 2010) | 1 line
Changed paths:
M /trunk/RatingBuster-Locale-koKR.lua
- koKR Update
------------------------------------------------------------------------
r286 | whitetooth | 2010-10-02 10:15:26 +0000 (Sat, 02 Oct 2010) | 1 line
Changed paths:
M /trunk/RatingBuster.lua
- Fixed some loading errors in 4.0
------------------------------------------------------------------------
r285 | cremor | 2010-06-03 14:46:28 +0000 (Thu, 03 Jun 2010) | 2 lines
Changed paths:
M /trunk/RatingBuster-Locale-deDE.lua
M /trunk/RatingBuster.lua
- "Hide Blizzard Item Comparisons" now also works for ItemRefTooltips
- deDE update
------------------------------------------------------------------------
Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

+50 -27
View File
@@ -1,6 +1,6 @@
--[[ --[[
Name: RatingBuster deDE locale Name: RatingBuster deDE locale
Revision: $Revision: 295 $ Revision: $Revision: 282 $
Translated by: Translated by:
- Kuja - Kuja
]] ]]
@@ -62,14 +62,20 @@ L["Options for Rating display"] = "Optionen für die Wertungsanzeige"
L["Show Rating Conversions"] = "Zeige Wertungsumrechnung" L["Show Rating Conversions"] = "Zeige Wertungsumrechnung"
L["Show Rating conversions in tooltips"] = "Zeige Wertungsumrechnung im Tooltip" L["Show Rating conversions in tooltips"] = "Zeige Wertungsumrechnung im Tooltip"
-- /rb rating spell -- /rb rating spell
L["Show Spell Hit/Haste"] = "Zeige Zaubertempo/-trefferchance" --L["Show Spell Hit/Haste"] = true
L["Show Spell Hit/Haste from Hit/Haste Rating"] = "Zeige Zaubertempo/-trefferchance von Tempo-/Trefferwertung" --L["Show Spell Hit/Haste from Hit/Haste Rating"] = true
-- /rb rating physical -- /rb rating physical
L["Show Physical Hit/Haste"] = "Zeige physisches Tempo/Trefferchance" --L["Show Physical Hit/Haste"] = true
L["Show Physical Hit/Haste from Hit/Haste Rating"] = "Zeige physisches Tempo/Trefferchance von Tempo-/Trefferwertung" --L["Show Physical Hit/Haste from Hit/Haste Rating"] = true
-- /rb rating detail -- /rb rating detail
L["Show Detailed Conversions Text"] = "Zeige detaillierten Umrechnungtext" L["Show Detailed Conversions Text"] = "Zeige detaillierten Umrechnungtext"
L["Show detailed text for Resilience and Expertise conversions"] = "Zeige detaillierten Text für Abhärtungs- und Waffenkundeumrechnung" L["Show detailed text for Resilience and Expertise conversions"] = "Zeige detaillierten Text für Abhärtungs- und Waffenkundeumrechnung"
-- /rb rating def
L["Defense Breakdown"] = "Verteidigungsanalyse"
L["Convert Defense into Crit Avoidance, Hit Avoidance, Dodge, Parry and Block"] = "Wandle Verteidigung in Vermeidung von (kritischen) Treffern, Ausweichen, Parieren und Blocken um"
-- /rb rating wpn
L["Weapon Skill Breakdown"] = "Waffenfertigkeitswertungsanalyse"
L["Convert Weapon Skill into Crit, Hit, Dodge Neglect, Parry Neglect and Block Neglect"] = "Wandle Waffenfertigkeitswertung in (kritische) Trefferchance, Ausweich-, Parier- und Blockmissachtung um"
-- /rb rating exp -- /rb rating exp
L["Expertise Breakdown"] = "Waffenkundeanalyse" L["Expertise Breakdown"] = "Waffenkundeanalyse"
L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "Wandle Waffenkunde in Ausweich- und Pariermissachtung um" L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "Wandle Waffenkunde in Ausweich- und Pariermissachtung um"
@@ -320,12 +326,6 @@ L["Intellect Summary"] = "Intelligenzübersicht"
-- /rb sum basic spi -- /rb sum basic spi
L["Sum Spirit"] = "Willenskraft zusammenrechnen" L["Sum Spirit"] = "Willenskraft zusammenrechnen"
L["Spirit Summary"] = "Willenkraftübersicht" L["Spirit Summary"] = "Willenkraftübersicht"
-- /rb sum basic mastery
L["Sum Mastery"] = "Meisterschaft zusammenrechnen"
L["Mastery Summary"] = "Meisterschaftsübersicht"
-- /rb sum basic masteryrating
L["Sum Mastery Rating"] = "Meisterschaftswertung zusammenrechnen"
L["Mastery Rating Summary"] = "Meisterschaftswertungsübersicht"
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum physical -- /rb sum physical
L["Stat - Physical"] = "Werte - Physisch" L["Stat - Physical"] = "Werte - Physisch"
@@ -341,13 +341,13 @@ L["Sum Feral Attack Power"] = "Feral Angriffskraft zusammenrechnen"
L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "Feral Angriffskraft <- Feral Angriffskraft, Angriffskraft, Stärke, Beweglichkeit" L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "Feral Angriffskraft <- Feral Angriffskraft, Angriffskraft, Stärke, Beweglichkeit"
-- /rb sum physical hit -- /rb sum physical hit
L["Sum Hit Chance"] = "Trefferchance zusammenrechnen" L["Sum Hit Chance"] = "Trefferchance zusammenrechnen"
L["Hit Chance <- Hit Rating"] = "Trefferchance <- Trefferwertung" L["Hit Chance <- Hit Rating, Weapon Skill Rating"] = "Trefferchance <- Trefferwertung, Waffenfertigkeitswertung"
-- /rb sum physical hitrating -- /rb sum physical hitrating
L["Sum Hit Rating"] = "Trefferwertung zusammenrechnen" L["Sum Hit Rating"] = "Trefferwertung zusammenrechnen"
L["Hit Rating Summary"] = "Trefferwertungsübersicht" L["Hit Rating Summary"] = "Trefferwertungsübersicht"
-- /rb sum physical crit -- /rb sum physical crit
L["Sum Crit Chance"] = "Kritische Trefferchance zusammenrechnen" L["Sum Crit Chance"] = "Kritische Trefferchance zusammenrechnen"
L["Crit Chance <- Crit Rating, Agility"] = "Kritische Trefferchance <- kritische Trefferwertung, Beweglichkeit" L["Crit Chance <- Crit Rating, Agility, Weapon Skill Rating"] = "Kritische Trefferchance <- kritische Trefferwertung, Beweglichkeit, Waffenfertigkeitswertung"
-- /rb sum physical critrating -- /rb sum physical critrating
L["Sum Crit Rating"] = "Kritische Trefferwertung zusammenrechnen" L["Sum Crit Rating"] = "Kritische Trefferwertung zusammenrechnen"
L["Crit Rating Summary"] = "Kritische Trefferwertungsübersicht" L["Crit Rating Summary"] = "Kritische Trefferwertungsübersicht"
@@ -359,13 +359,13 @@ L["Sum Haste Rating"] = "Tempowertung zusammenrechnen"
L["Haste Rating Summary"] = "Tempowertungsübersicht" L["Haste Rating Summary"] = "Tempowertungsübersicht"
-- /rb sum physical rangedhit -- /rb sum physical rangedhit
L["Sum Ranged Hit Chance"] = "Distanztrefferchance zusammenrechnen" L["Sum Ranged Hit Chance"] = "Distanztrefferchance zusammenrechnen"
L["Ranged Hit Chance <- Hit Rating, Ranged Hit Rating"] = "Distanztrefferchance <- Trefferwertung, Distanztrefferwertung" L["Ranged Hit Chance <- Hit Rating, Weapon Skill Rating, Ranged Hit Rating"] = "Distanztrefferchance <- Trefferwertung, Waffenfertigkeitswertung, Distanztrefferwertung"
-- /rb sum physical rangedhitrating -- /rb sum physical rangedhitrating
L["Sum Ranged Hit Rating"] = "Distanztrefferwertung zusammenrechnen" L["Sum Ranged Hit Rating"] = "Distanztrefferwertung zusammenrechnen"
L["Ranged Hit Rating Summary"] = "Distanztrefferwertungsübersicht" L["Ranged Hit Rating Summary"] = "Distanztrefferwertungsübersicht"
-- /rb sum physical rangedcrit -- /rb sum physical rangedcrit
L["Sum Ranged Crit Chance"] = "Kritische Distanztrefferchance zusammenrechnen" L["Sum Ranged Crit Chance"] = "Kritische Distanztrefferchance zusammenrechnen"
L["Ranged Crit Chance <- Crit Rating, Agility, Ranged Crit Rating"] = "Kritische Distanztrefferchance <- kritische Trefferwertung, Beweglichkeit, kritische Distanztrefferwertung" L["Ranged Crit Chance <- Crit Rating, Agility, Weapon Skill Rating, Ranged Crit Rating"] = "Kritische Distanztrefferchance <- kritische Trefferwertung, Beweglichkeit, Waffenfertigkeitswertung, kritische Distanztrefferwertung"
-- /rb sum physical rangedcritrating -- /rb sum physical rangedcritrating
L["Sum Ranged Crit Rating"] = "Kritische Distanztrefferwertung zusammenrechnen" L["Sum Ranged Crit Rating"] = "Kritische Distanztrefferwertung zusammenrechnen"
L["Ranged Crit Rating Summary"] = "Kritische Distanztrefferwertungsübersicht" L["Ranged Crit Rating Summary"] = "Kritische Distanztrefferwertungsübersicht"
@@ -378,6 +378,12 @@ L["Ranged Haste Rating Summary"] = "Distanztempowertungsübersicht"
-- /rb sum physical maxdamage -- /rb sum physical maxdamage
L["Sum Weapon Max Damage"] = "Waffenmaximalschaden zusammenrechnen" L["Sum Weapon Max Damage"] = "Waffenmaximalschaden zusammenrechnen"
L["Weapon Max Damage Summary"] = "Waffenmaximalschadensübersicht" L["Weapon Max Damage Summary"] = "Waffenmaximalschadensübersicht"
-- /rb sum physical ignorearmor
L["Sum Ignore Armor"] = "Rüstungsmissachtung zusammenrechnen"
L["Ignore Armor Summary"] = "Rüstungsmissachtungsübersicht"
-- /rb sum physical arp
L["Sum Armor Penetration"] = "Rüstungsdurchlag zusammenrechnen"
L["Armor Penetration Summary"] = "Rüstungsdurchlagsübersicht"
-- /rb sum physical weapondps -- /rb sum physical weapondps
--L["Sum Weapon DPS"] = true --L["Sum Weapon DPS"] = true
--L["Weapon DPS Summary"] = true --L["Weapon DPS Summary"] = true
@@ -388,8 +394,11 @@ L["Weapon Skill <- Weapon Skill Rating"] = "Waffenfertigkeit <- Waffenfertigkeit
L["Sum Expertise"] = "Waffenkunde zusammenrechnen" L["Sum Expertise"] = "Waffenkunde zusammenrechnen"
L["Expertise <- Expertise Rating"] = "Waffenkunde <- Waffenkundewertung" L["Expertise <- Expertise Rating"] = "Waffenkunde <- Waffenkundewertung"
-- /rb sum physical exprating -- /rb sum physical exprating
L["Sum Expertise Rating"] = "Waffenkundewertung zusammenrechnen" --L["Sum Expertise Rating"] = true
L["Expertise Rating Summary"] = "Waffenkundewertungsübersicht" --L["Expertise Rating Summary"] = true
-- /rb sum physical arprating
L["Sum Armor Penetration Rating"] = "Rüstungsdurchlagwertung zusammenrechnen"
L["Armor Penetration Rating Summary"] = "Rüstungsdurchlagwertungsübersicht"
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum spell -- /rb sum spell
L["Stat - Spell"] = "Werte - Zauber" L["Stat - Spell"] = "Werte - Zauber"
@@ -445,22 +454,34 @@ L["Stat - Tank"] = "Werte - Verteidigung"
L["Choose tank stats for summary"] = "Wähle Verteidigungswerte für die Übersicht" L["Choose tank stats for summary"] = "Wähle Verteidigungswerte für die Übersicht"
-- /rb sum tank armor -- /rb sum tank armor
L["Sum Armor"] = "Rüstung zusammenrechnen" L["Sum Armor"] = "Rüstung zusammenrechnen"
L["Armor <- Armor from items and bonuses"] = "Rüstung <- Rüstung von Gegenständen und Boni" L["Armor <- Armor from items, Armor from bonuses, Agility, Intellect"] = "Rüstung <- Rüstung von Gegenständen, Rüstung von Boni, Beweglichkeit, Intelligenz"
-- /rb sum tank blockvalue
L["Sum Block Value"] = "Blockwert zusammenrechnen"
L["Block Value <- Block Value, Strength"] = "Blockwert <- Blockwert, Stärke"
-- /rb sum tank dodge -- /rb sum tank dodge
L["Sum Dodge Chance"] = "Ausweichchance zusammenrechnen" L["Sum Dodge Chance"] = "Ausweichchance zusammenrechnen"
L["Dodge Chance <- Dodge Rating, Agility"] = "Ausweichchance <- Ausweichwertung, Beweglichkeit" L["Dodge Chance <- Dodge Rating, Agility, Defense Rating"] = "Ausweichchance <- Ausweichwertung, Beweglichkeit, Verteidigungswertung"
-- /rb sum tank parry -- /rb sum tank parry
L["Sum Parry Chance"] = "Parierchance zusammenrechnen" L["Sum Parry Chance"] = "Parierchance zusammenrechnen"
L["Parry Chance <- Parry Rating"] = "Parierchance <- Parierwertung" L["Parry Chance <- Parry Rating, Defense Rating"] = "Parierchance <- Parierwertung, Verteidigungswertung"
-- /rb sum tank block -- /rb sum tank block
L["Sum Block Chance"] = "Blockchance zusammenrechnen" L["Sum Block Chance"] = "Blockchance zusammenrechnen"
L["Block Chance <- Block Rating"] = " Blockchance <- Blockwertung" L["Block Chance <- Block Rating, Defense Rating"] = " Blockchance <- Blockwertung, Verteidigungswertung"
-- /rb sum tank avoidhit
L["Sum Hit Avoidance"] = "Treffervermeidung zusammenrechnen"
L["Hit Avoidance <- Defense Rating"] = "Treffervermeidung <- Verteidigungswertung"
-- /rb sum tank avoidcrit
L["Sum Crit Avoidance"] = "Kritische Treffervermeidung"
L["Crit Avoidance <- Defense Rating, Resilience"] = "Kritische Treffervermeidung <- Verteidigungswertung, Abhärtungswertung"
-- /rb sum tank neglectdodge -- /rb sum tank neglectdodge
L["Sum Dodge Neglect"] = "Ausweichmissachtung zusammenrechnen" L["Sum Dodge Neglect"] = "Ausweichmissachtung zusammenrechnen"
L["Dodge Neglect <- Expertise"] = "Ausweichmissachtung <- Waffenkunde" L["Dodge Neglect <- Expertise, Weapon Skill Rating"] = "Ausweichmissachtung <- Waffenkunde, Waffenfertigkeitswertung"
-- /rb sum tank neglectparry -- /rb sum tank neglectparry
L["Sum Parry Neglect"] = "Pariermissachtung zusammenrechnen" L["Sum Parry Neglect"] = "Pariermissachtung zusammenrechnen"
L["Parry Neglect <- Expertise"] = "Pariermissachtung <- Waffenkunde" L["Parry Neglect <- Expertise, Weapon Skill Rating"] = "Pariermissachtung <- Waffenkunde, Waffenfertigkeitswertung"
-- /rb sum tank neglectblock
L["Sum Block Neglect"] = "Blockmissachtung"
L["Block Neglect <- Weapon Skill Rating"] = "Blockmissachtung <- Waffenfertigkeitswertung"
-- /rb sum tank resarcane -- /rb sum tank resarcane
L["Sum Arcane Resistance"] = "Arkanwiderstand zusammenrechnen" L["Sum Arcane Resistance"] = "Arkanwiderstand zusammenrechnen"
L["Arcane Resistance Summary"] = "Arkanwiderstandsübersicht" L["Arcane Resistance Summary"] = "Arkanwiderstandsübersicht"
@@ -477,8 +498,8 @@ L["Frost Resistance Summary"] = "Frostwiderstandsübersicht"
L["Sum Shadow Resistance"] = "Schattenwiderstand zusammenrechnen" L["Sum Shadow Resistance"] = "Schattenwiderstand zusammenrechnen"
L["Shadow Resistance Summary"] = "Schattenwiderstandsübersicht" L["Shadow Resistance Summary"] = "Schattenwiderstandsübersicht"
-- /rb sum tank dodgerating -- /rb sum tank dodgerating
L["Sum Dodge Rating"] = "Ausweichwertung zusammenrechnen" L["Sum Dodge Rating"] = "Verteidigungswertung zusammenrechnen"
L["Dodge Rating Summary"] = "Ausweichwertungsübersicht" L["Dodge Rating Summary"] = "Verteidigungswertungsübersicht"
-- /rb sum tank parryrating -- /rb sum tank parryrating
L["Sum Parry Rating"] = "Parierwertung zusammenrechnen" L["Sum Parry Rating"] = "Parierwertung zusammenrechnen"
L["Parry Rating Summary"] = "Parierwertungsübersicht" L["Parry Rating Summary"] = "Parierwertungsübersicht"
@@ -488,12 +509,15 @@ L["Block Rating Summary"] = "Blockwertungsübersicht"
-- /rb sum tank res -- /rb sum tank res
L["Sum Resilience"] = "Abhärtung zusammenrechnen" L["Sum Resilience"] = "Abhärtung zusammenrechnen"
L["Resilience Summary"] = "Abhärtungsübersicht" L["Resilience Summary"] = "Abhärtungsübersicht"
-- /rb sum tank def
L["Sum Defense"] = "Verteidigung zusammenrechnen"
L["Defense <- Defense Rating"] = "Verteidigung <- Verteidigungswertung"
-- /rb sum tank tp -- /rb sum tank tp
L["Sum TankPoints"] = "TankPoints zusammenrechnen" L["Sum TankPoints"] = "TankPoints zusammenrechnen"
L["TankPoints <- Health, Total Reduction"] = "TankPoints <- Leben, Gesamtreduzierung" L["TankPoints <- Health, Total Reduction"] = "TankPoints <- Leben, Gesamtreduzierung"
-- /rb sum tank tr -- /rb sum tank tr
L["Sum Total Reduction"] = "Gesamtreduzierung zusammenrechnen" L["Sum Total Reduction"] = "Gesamtreduzierung zusammenrechnen"
L["Total Reduction <- Armor, Dodge, Parry, Block, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "Gesamtreduzierung <- Rüstung, Ausweichen, Parieren, Blocken, Gegner-Verfehlen, Gegner-Kritisch, Gegner-Schmettern, Schadensmodifikatoren" L["Total Reduction <- Armor, Dodge, Parry, Block, Block Value, Defense, Resilience, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "Gesamtreduzierung <- Rüstung, Ausweichen, Parieren, Blocken, Blockwert, Verteidigung, Abhärtung, Gegner-Verfehlen, Gegner-Kritisch, Gegner-Schmettern, Schadensmodifikatoren"
-- /rb sum tank avoid -- /rb sum tank avoid
L["Sum Avoidance"] = "Vermeidung zusammenrechnen" L["Sum Avoidance"] = "Vermeidung zusammenrechnen"
L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "Vermeidung <- Ausweichen, Parieren, Gegner-Verfehlen, Blocken (optional)" L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "Vermeidung <- Ausweichen, Parieren, Gegner-Verfehlen, Blocken (optional)"
@@ -671,7 +695,6 @@ L["statList"] = {
{pattern = "waffenkundewertung", id = CR_EXPERTISE}, {pattern = "waffenkundewertung", id = CR_EXPERTISE},
-- {pattern = "hit avoidance rating", id = CR_HIT_TAKEN_MELEE}, - seit 2.0.10 gibt es kein item mehr damit -- {pattern = "hit avoidance rating", id = CR_HIT_TAKEN_MELEE}, - seit 2.0.10 gibt es kein item mehr damit
{pattern = "rüstungsdurchschlagwertung", id = CR_ARMOR_PENETRATION}, {pattern = "rüstungsdurchschlagwertung", id = CR_ARMOR_PENETRATION},
{pattern = "meisterschaftswertung", id = CR_MASTERY},
{pattern = string.lower(ARMOR), id = ARMOR}, {pattern = string.lower(ARMOR), id = ARMOR},
--[[ --[[
{pattern = "dagger skill rating", id = CR_WEAPON_SKILL}, {pattern = "dagger skill rating", id = CR_WEAPON_SKILL},
+72 -19
View File
@@ -1,6 +1,6 @@
--[[ --[[
Name: RatingBuster enUS locale Name: RatingBuster enUS locale
Revision: $Revision: 294 $ Revision: $Revision: 282 $
Translated by: Translated by:
- Whitetooth (hotdogee [at] gmail [dot] com) - Whitetooth (hotdogee [at] gmail [dot] com)
]] ]]
@@ -70,6 +70,12 @@ L["Show Physical Hit/Haste from Hit/Haste Rating"] = true
-- /rb rating detail -- /rb rating detail
L["Show Detailed Conversions Text"] = true L["Show Detailed Conversions Text"] = true
L["Show detailed text for Resilience and Expertise conversions"] = true L["Show detailed text for Resilience and Expertise conversions"] = true
-- /rb rating def
L["Defense Breakdown"] = true
L["Convert Defense into Crit Avoidance, Hit Avoidance, Dodge, Parry and Block"] = true
-- /rb rating wpn
L["Weapon Skill Breakdown"] = true
L["Convert Weapon Skill into Crit, Hit, Dodge Neglect, Parry Neglect and Block Neglect"] = true
-- /rb rating exp -- /rb rating exp
L["Expertise Breakdown"] = true L["Expertise Breakdown"] = true
L["Convert Expertise into Dodge Neglect and Parry Neglect"] = true L["Convert Expertise into Dodge Neglect and Parry Neglect"] = true
@@ -100,6 +106,12 @@ L["Show Attack Power from Strength"] = true
-- /rb stat str block -- /rb stat str block
L["Show Block Value"] = true L["Show Block Value"] = true
L["Show Block Value from Strength"] = true L["Show Block Value from Strength"] = true
-- /rb Ascension Custom Conviction
L["Show Conviction"] = true
L["Show Spell Crit from Strength"] = true
-- /rb Ascension Custom Divine Strenth
L["Show Divine Strength"] = true
L["Show Hit Rating from Strength"] = true
-- /rb stat str dmg -- /rb stat str dmg
L["Show Spell Damage"] = true L["Show Spell Damage"] = true
L["Show Spell Damage from Strength"] = true L["Show Spell Damage from Strength"] = true
@@ -109,6 +121,9 @@ L["Show Healing from Strength"] = true
-- /rb stat str parry -- /rb stat str parry
L["Show Parry"] = true L["Show Parry"] = true
L["Show Parry from Strength"] = true L["Show Parry from Strength"] = true
-- /rb Ascension Custom Iron Will
L["Show Iron Will"] = true
L["Show Parry Rating from Strength"] = true
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb stat agi -- /rb stat agi
L["Agility"] = true L["Agility"] = true
@@ -131,6 +146,16 @@ L["Show Armor from Agility"] = true
-- /rb stat agi heal -- /rb stat agi heal
L["Show Healing"] = true L["Show Healing"] = true
L["Show Healing from Agility"] = true L["Show Healing from Agility"] = true
-- /rb Ascension Custom Thundering Strikes
L["Show Thundering Strikes"] = true
L["Show Spell Crit from Agility"] = true
-- /rb Ascension Custom Shamanistic Focus/Combat Experience
L["Show Shamanistic Focus"] = true
L["Show Combat Experience"] = true
L["Show Spell Hit from Agility"] = true
-- /rb Ascension Custom Natural Reaction
L["Show Natural Reaction"] = true
L["Show Dodge from Natural Reaction"] = true
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb stat sta -- /rb stat sta
L["Stamina"] = true L["Stamina"] = true
@@ -147,6 +172,9 @@ L["Show Healing from Stamina"] = true
-- /rb stat sta ap -- /rb stat sta ap
L["Show Attack Power"] = true L["Show Attack Power"] = true
L["Show Attack Power from Stamina"] = true L["Show Attack Power from Stamina"] = true
-- /rb Ascension Custom Hunter VS Wild
L["Show Hunter vs. Wild"] = true
L["Show Attack Power from Stamina"] = true
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb stat int -- /rb stat int
L["Intellect"] = true L["Intellect"] = true
@@ -200,6 +228,11 @@ L["Show Healing from Spirit"] = true
-- /rb stat spi spellcrit -- /rb stat spi spellcrit
L["Show Spell Crit"] = true L["Show Spell Crit"] = true
L["Show Spell Crit chance from Spirit"] = true L["Show Spell Crit chance from Spirit"] = true
--/rb Ascension Custom Spirit Spell crit
L["Show Meditation"] = true
L["Show Molten Armor"] = true
L["Show Improved Spirit Tap"] = true
L["Show Crit Rating from Spirit"] = true
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb stat armor -- /rb stat armor
L["Armor"] = true L["Armor"] = true
@@ -320,12 +353,6 @@ L["Intellect Summary"] = true
-- /rb sum basic spi -- /rb sum basic spi
L["Sum Spirit"] = true L["Sum Spirit"] = true
L["Spirit Summary"] = true L["Spirit Summary"] = true
-- /rb sum basic mastery
L["Sum Mastery"] = true
L["Mastery Summary"] = true
-- /rb sum basic masteryrating
L["Sum Mastery Rating"] = true
L["Mastery Rating Summary"] = true
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum physical -- /rb sum physical
L["Stat - Physical"] = true L["Stat - Physical"] = true
@@ -341,13 +368,13 @@ L["Sum Feral Attack Power"] = true
L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = true L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = true
-- /rb sum physical hit -- /rb sum physical hit
L["Sum Hit Chance"] = true L["Sum Hit Chance"] = true
L["Hit Chance <- Hit Rating"] = true L["Hit Chance <- Hit Rating, Weapon Skill Rating"] = true
-- /rb sum physical hitrating -- /rb sum physical hitrating
L["Sum Hit Rating"] = true L["Sum Hit Rating"] = true
L["Hit Rating Summary"] = true L["Hit Rating Summary"] = true
-- /rb sum physical crit -- /rb sum physical crit
L["Sum Crit Chance"] = true L["Sum Crit Chance"] = true
L["Crit Chance <- Crit Rating, Agility"] = true L["Crit Chance <- Crit Rating, Agility, Weapon Skill Rating"] = true
-- /rb sum physical critrating -- /rb sum physical critrating
L["Sum Crit Rating"] = true L["Sum Crit Rating"] = true
L["Crit Rating Summary"] = true L["Crit Rating Summary"] = true
@@ -359,13 +386,13 @@ L["Sum Haste Rating"] = true
L["Haste Rating Summary"] = true L["Haste Rating Summary"] = true
-- /rb sum physical rangedhit -- /rb sum physical rangedhit
L["Sum Ranged Hit Chance"] = true L["Sum Ranged Hit Chance"] = true
L["Ranged Hit Chance <- Hit Rating, Ranged Hit Rating"] = true L["Ranged Hit Chance <- Hit Rating, Weapon Skill Rating, Ranged Hit Rating"] = true
-- /rb sum physical rangedhitrating -- /rb sum physical rangedhitrating
L["Sum Ranged Hit Rating"] = true L["Sum Ranged Hit Rating"] = true
L["Ranged Hit Rating Summary"] = true L["Ranged Hit Rating Summary"] = true
-- /rb sum physical rangedcrit -- /rb sum physical rangedcrit
L["Sum Ranged Crit Chance"] = true L["Sum Ranged Crit Chance"] = true
L["Ranged Crit Chance <- Crit Rating, Agility, Ranged Crit Rating"] = true L["Ranged Crit Chance <- Crit Rating, Agility, Weapon Skill Rating, Ranged Crit Rating"] = true
-- /rb sum physical rangedcritrating -- /rb sum physical rangedcritrating
L["Sum Ranged Crit Rating"] = true L["Sum Ranged Crit Rating"] = true
L["Ranged Crit Rating Summary"] = true L["Ranged Crit Rating Summary"] = true
@@ -378,6 +405,12 @@ L["Ranged Haste Rating Summary"] = true
-- /rb sum physical maxdamage -- /rb sum physical maxdamage
L["Sum Weapon Max Damage"] = true L["Sum Weapon Max Damage"] = true
L["Weapon Max Damage Summary"] = true L["Weapon Max Damage Summary"] = true
-- /rb sum physical ignorearmor
L["Sum Ignore Armor"] = true
L["Ignore Armor Summary"] = true
-- /rb sum physical arp
L["Sum Armor Penetration"] = true
L["Armor Penetration Summary"] = true
-- /rb sum physical weapondps -- /rb sum physical weapondps
--L["Sum Weapon DPS"] = true --L["Sum Weapon DPS"] = true
--L["Weapon DPS Summary"] = true --L["Weapon DPS Summary"] = true
@@ -390,6 +423,9 @@ L["Expertise <- Expertise Rating"] = true
-- /rb sum physical exprating -- /rb sum physical exprating
L["Sum Expertise Rating"] = true L["Sum Expertise Rating"] = true
L["Expertise Rating Summary"] = true L["Expertise Rating Summary"] = true
-- /rb sum physical arprating
L["Sum Armor Penetration Rating"] = true
L["Armor Penetration Rating Summary"] = true
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum spell -- /rb sum spell
L["Stat - Spell"] = true L["Stat - Spell"] = true
@@ -445,22 +481,34 @@ L["Stat - Tank"] = true
L["Choose tank stats for summary"] = true L["Choose tank stats for summary"] = true
-- /rb sum tank armor -- /rb sum tank armor
L["Sum Armor"] = true L["Sum Armor"] = true
L["Armor <- Armor from items and bonuses"] = true L["Armor <- Armor from items, Armor from bonuses, Agility, Intellect"] = true
-- /rb sum tank blockvalue
L["Sum Block Value"] = true
L["Block Value <- Block Value, Strength"] = true
-- /rb sum tank dodge -- /rb sum tank dodge
L["Sum Dodge Chance"] = true L["Sum Dodge Chance"] = true
L["Dodge Chance <- Dodge Rating, Agility"] = true L["Dodge Chance <- Dodge Rating, Agility, Defense Rating"] = true
-- /rb sum tank parry -- /rb sum tank parry
L["Sum Parry Chance"] = true L["Sum Parry Chance"] = true
L["Parry Chance <- Parry Rating"] = true L["Parry Chance <- Parry Rating, Defense Rating"] = true
-- /rb sum tank block -- /rb sum tank block
L["Sum Block Chance"] = true L["Sum Block Chance"] = true
L["Block Chance <- Block Rating"] = true L["Block Chance <- Block Rating, Defense Rating"] = true
-- /rb sum tank avoidhit
L["Sum Hit Avoidance"] = true
L["Hit Avoidance <- Defense Rating"] = true
-- /rb sum tank avoidcrit
L["Sum Crit Avoidance"] = true
L["Crit Avoidance <- Defense Rating, Resilience"] = true
-- /rb sum tank neglectdodge -- /rb sum tank neglectdodge
L["Sum Dodge Neglect"] = true L["Sum Dodge Neglect"] = true
L["Dodge Neglect <- Expertise"] = true L["Dodge Neglect <- Expertise, Weapon Skill Rating"] = true
-- /rb sum tank neglectparry -- /rb sum tank neglectparry
L["Sum Parry Neglect"] = true L["Sum Parry Neglect"] = true
L["Parry Neglect <- Expertise"] = true L["Parry Neglect <- Expertise, Weapon Skill Rating"] = true
-- /rb sum tank neglectblock
L["Sum Block Neglect"] = true
L["Block Neglect <- Weapon Skill Rating"] = true
-- /rb sum tank resarcane -- /rb sum tank resarcane
L["Sum Arcane Resistance"] = true L["Sum Arcane Resistance"] = true
L["Arcane Resistance Summary"] = true L["Arcane Resistance Summary"] = true
@@ -488,12 +536,15 @@ L["Block Rating Summary"] = true
-- /rb sum tank res -- /rb sum tank res
L["Sum Resilience"] = true L["Sum Resilience"] = true
L["Resilience Summary"] = true L["Resilience Summary"] = true
-- /rb sum tank def
L["Sum Defense"] = true
L["Defense <- Defense Rating"] = true
-- /rb sum tank tp -- /rb sum tank tp
L["Sum TankPoints"] = true L["Sum TankPoints"] = true
L["TankPoints <- Health, Total Reduction"] = true L["TankPoints <- Health, Total Reduction"] = true
-- /rb sum tank tr -- /rb sum tank tr
L["Sum Total Reduction"] = true L["Sum Total Reduction"] = true
L["Total Reduction <- Armor, Dodge, Parry, Block, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = true L["Total Reduction <- Armor, Dodge, Parry, Block, Block Value, Defense, Resilience, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = true
-- /rb sum tank avoid -- /rb sum tank avoid
L["Sum Avoidance"] = true L["Sum Avoidance"] = true
L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = true L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = true
@@ -658,6 +709,7 @@ L["statList"] = {
{pattern = "spell hit rating", id = CR_HIT_SPELL}, {pattern = "spell hit rating", id = CR_HIT_SPELL},
{pattern = "ranged hit rating", id = CR_HIT_RANGED}, {pattern = "ranged hit rating", id = CR_HIT_RANGED},
{pattern = "hit rating", id = CR_HIT_MELEE}, {pattern = "hit rating", id = CR_HIT_MELEE},
{pattern = "resilience", id = CR_CRIT_TAKEN_MELEE}, -- resilience is implicitly a rating {pattern = "resilience", id = CR_CRIT_TAKEN_MELEE}, -- resilience is implicitly a rating
@@ -671,7 +723,6 @@ L["statList"] = {
{pattern = "hit avoidance rating", id = CR_HIT_TAKEN_MELEE}, {pattern = "hit avoidance rating", id = CR_HIT_TAKEN_MELEE},
{pattern = "armor penetration rating", id = CR_ARMOR_PENETRATION}, {pattern = "armor penetration rating", id = CR_ARMOR_PENETRATION},
{pattern = "mastery rating", id = CR_MASTERY},
{pattern = string.lower(ARMOR), id = ARMOR}, {pattern = string.lower(ARMOR), id = ARMOR},
--[[ --[[
{pattern = "dagger skill rating", id = CR_WEAPON_SKILL}, {pattern = "dagger skill rating", id = CR_WEAPON_SKILL},
@@ -698,6 +749,8 @@ L["statList"] = {
-- EX: "Crit $value%" -> "Crit +1.34%" -- EX: "Crit $value%" -> "Crit +1.34%"
L["$value% Crit"] = true L["$value% Crit"] = true
L["$value% Spell Crit"] = true L["$value% Spell Crit"] = true
L["$value% Melee Hit"] = true
L["$value% Spell Hit"] = true
L["$value% Dodge"] = true L["$value% Dodge"] = true
L["$value HP"] = true L["$value HP"] = true
L["$value MP"] = true L["$value MP"] = true
+43 -19
View File
@@ -1,6 +1,6 @@
--[[ --[[
Name: RatingBuster esES locale Name: RatingBuster esES locale
Revision: $Revision: 294 $ Revision: $Revision: 282 $
Translated by: Translated by:
- carahuevo@Curse - carahuevo@Curse
- kaiemg - kaiemg
@@ -63,6 +63,12 @@ L["Show Rating conversions in tooltips"] = "Mostrar conversion de indices en too
-- /rb rating detail -- /rb rating detail
L["Show Detailed Conversions Text"] = "Mostrar texto detallado conversiones" L["Show Detailed Conversions Text"] = "Mostrar texto detallado conversiones"
L["Show detailed text for Resilience and Expertise conversions"] = "Mostrar texto detallado de conversiones de Temple y Pericia" L["Show detailed text for Resilience and Expertise conversions"] = "Mostrar texto detallado de conversiones de Temple y Pericia"
-- /rb rating def
L["Defense Breakdown"] = "Desglose Defensa"
L["Convert Defense into Crit Avoidance, Hit Avoidance, Dodge, Parry and Block"] = "Convierte Defensa en evitar Critico, evitar Golpe, Esquivar, Parar y Bloquear"
-- /rb rating wpn
L["Weapon Skill Breakdown"] = "Desglose Habilidad arma"
L["Convert Weapon Skill into Crit, Hit, Dodge Neglect, Parry Neglect and Block Neglect"] = "Convierta Habilidad arma en Critico, Golpe, falla Esquivar, y fallo Bloquear"
-- /rb rating exp -- 2.3.0 -- /rb rating exp -- 2.3.0
L["Expertise Breakdown"] = "Desglose Pericia" L["Expertise Breakdown"] = "Desglose Pericia"
L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "Convierte Pericia en fallo Esquivar y fallo Parar" L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "Convierte Pericia en fallo Esquivar y fallo Parar"
@@ -297,15 +303,9 @@ L["Stamina Summary"] = "Resumen Aguante"
-- /rb sum basic int -- /rb sum basic int
L["Sum Intellect"] = "Res. Intelecto" L["Sum Intellect"] = "Res. Intelecto"
L["Intellect Summary"] = "Resumen Intelecto" L["Intellect Summary"] = "Resumen Intelecto"
-- /rb sum basic spi -- /rb sum statcomp spi
L["Sum Spirit"] = "Res. Espiritu" L["Sum Spirit"] = "Res. Espiritu"
L["Spirit Summary"] = "Resumen Espiritu" L["Spirit Summary"] = "Resumen Espiritu"
-- /rb sum basic mastery
--L["Sum Mastery"] = ""
--L["Mastery Summary"] = ""
-- /rb sum basic masteryrating
--L["Sum Mastery Rating"] = ""
--L["Mastery Rating Summary"] = ""
---------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------
-- /rb sum physical -- /rb sum physical
L["Stat - Physical"] = "Datos - Fisicas" L["Stat - Physical"] = "Datos - Fisicas"
@@ -321,13 +321,13 @@ L["Sum Feral Attack Power"] = "Res. P.Ataque feral"
L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "P.Ataque feral <- P.Ataque feral, P.Ataque, Fuerza, Agilidad" L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "P.Ataque feral <- P.Ataque feral, P.Ataque, Fuerza, Agilidad"
-- /rb sum physical hit -- /rb sum physical hit
L["Sum Hit Chance"] = "Res. prob. Golpe" L["Sum Hit Chance"] = "Res. prob. Golpe"
--L["Hit Chance <- Hit Rating"] = "prob. Golpe <- Indice Golpe, Indice pericia" L["Hit Chance <- Hit Rating, Weapon Skill Rating"] = "prob. Golpe <- Indice Golpe, Indice pericia"
-- /rb sum physical hitrating -- /rb sum physical hitrating
L["Sum Hit Rating"] = "Res. Indice Golpe" L["Sum Hit Rating"] = "Res. Indice Golpe"
L["Hit Rating Summary"] = "Resumen Indice Golpe" L["Hit Rating Summary"] = "Resumen Indice Golpe"
-- /rb sum physical crit -- /rb sum physical crit
L["Sum Crit Chance"] = "Res. Prob. Crit." L["Sum Crit Chance"] = "Res. Prob. Crit."
--L["Crit Chance <- Crit Rating, Agility"] = "Prob.Crit <- Crit, Agilidad, Indice Pericia" L["Crit Chance <- Crit Rating, Agility, Weapon Skill Rating"] = "Prob.Crit <- Crit, Agilidad, Indice Pericia"
-- /rb sum physical critrating -- /rb sum physical critrating
L["Sum Crit Rating"] = "Res. Indice Critico" L["Sum Crit Rating"] = "Res. Indice Critico"
L["Crit Rating Summary"] = "Resumen Indice Critico" L["Crit Rating Summary"] = "Resumen Indice Critico"
@@ -339,13 +339,13 @@ L["Sum Haste Rating"] = "Res. Indice Celeridad"
L["Haste Rating Summary"] = "Resumen Indice Celeridad" L["Haste Rating Summary"] = "Resumen Indice Celeridad"
-- /rb sum physical rangedhit -- /rb sum physical rangedhit
L["Sum Ranged Hit Chance"] = "Res. Prob. Golpe a Distancia" L["Sum Ranged Hit Chance"] = "Res. Prob. Golpe a Distancia"
-- --L["Ranged Hit Chance <- Hit Rating, Ranged Hit Rating"] = true -- L["Ranged Hit Chance <- Hit Rating, Weapon Skill Rating, Ranged Hit Rating"] = true
-- /rb sum physical rangedhitrating -- /rb sum physical rangedhitrating
L["Sum Ranged Hit Rating"] = "Res. Indice Golpe a Distancia" L["Sum Ranged Hit Rating"] = "Res. Indice Golpe a Distancia"
-- L["Ranged Hit Rating Summary"] = true -- L["Ranged Hit Rating Summary"] = true
-- /rb sum physical rangedcrit -- /rb sum physical rangedcrit
L["Sum Ranged Crit Chance"] = "Res. Prob. Critico a Distancia" L["Sum Ranged Crit Chance"] = "Res. Prob. Critico a Distancia"
-- --L["Ranged Crit Chance <- Crit Rating, Agility, Ranged Crit Rating"] = true -- L["Ranged Crit Chance <- Crit Rating, Agility, Weapon Skill Rating, Ranged Crit Rating"] = true
-- /rb sum physical rangedcritrating -- /rb sum physical rangedcritrating
-- L["Sum Ranged Crit Rating"] = true -- L["Sum Ranged Crit Rating"] = true
-- L["Ranged Crit Rating Summary"] = true -- L["Ranged Crit Rating Summary"] = true
@@ -358,6 +358,12 @@ L["Sum Ranged Crit Chance"] = "Res. Prob. Critico a Distancia"
-- /rb sum physical maxdamage -- /rb sum physical maxdamage
L["Sum Weapon Max Damage"] = "Res. Max Dano Arma" L["Sum Weapon Max Damage"] = "Res. Max Dano Arma"
L["Weapon Max Damage Summary"] = "Resumen de Maximo Dano Arma" L["Weapon Max Damage Summary"] = "Resumen de Maximo Dano Arma"
-- /rb sum physical ignorearmor
L["Sum Ignore Armor"] = "Res. Ignorar armadura"
L["Ignore Armor Summary"] = "Resumen de Ignorar Armadura"
-- /rb sum physical arp
L["Sum Armor Penetration"] = "Res. Penetracion Armadura"
L["Armor Penetration Summary"] = "Resumen de Penetracion Armadura"
-- /rb sum physical weapondps -- /rb sum physical weapondps
--L["Sum Weapon DPS"] = true --L["Sum Weapon DPS"] = true
--L["Weapon DPS Summary"] = true --L["Weapon DPS Summary"] = true
@@ -370,6 +376,9 @@ L["Expertise <- Expertise Rating"] = "Pericia <- Indice Pericia"
-- /rb sum physical exprating -- /rb sum physical exprating
--L["Sum Expertise Rating"] = true --L["Sum Expertise Rating"] = true
--L["Expertise Rating Summary"] = true --L["Expertise Rating Summary"] = true
-- /rb sum physical arprating
L["Sum Armor Penetration Rating"] = "Res. Indice Penetracion Armadura"
L["Armor Penetration Rating Summary"] = "Resumen Indice Penetracion de Armadura"
---------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------
-- /rb sum spell -- /rb sum spell
L["Stat - Spell"] = "Datos - Hechizo" L["Stat - Spell"] = "Datos - Hechizo"
@@ -425,22 +434,34 @@ L["Stat - Tank"] = "Datos - Tanque"
L["Choose tank stats for summary"] = "Escoge datos de tanque para resumen" L["Choose tank stats for summary"] = "Escoge datos de tanque para resumen"
-- /rb sum tank armor -- /rb sum tank armor
L["Sum Armor"] = "Res. Armadura" L["Sum Armor"] = "Res. Armadura"
--L["Armor <- Armor from items and bonuses"] = "Armadura <- Armadura de items, Armadura de bonus, Agilidad, Intelecto" L["Armor <- Armor from items, Armor from bonuses, Agility, Intellect"] = "Armadura <- Armadura de items, Armadura de bonus, Agilidad, Intelecto"
-- /rb sum tank blockvalue
L["Sum Block Value"] = "Res. Valor Bloqueo"
L["Block Value <- Block Value, Strength"] = "Valor Bloqueo <- Valor Bloqueo, Fuerza"
-- /rb sum tank dodge -- /rb sum tank dodge
L["Sum Dodge Chance"] = "Res. prob. Esquivar" L["Sum Dodge Chance"] = "Res. prob. Esquivar"
--L["Dodge Chance <- Dodge Rating, Agility"] = "Prob. Esquivar <- Indice Esquivar, Agilidad, Indice Defensa" L["Dodge Chance <- Dodge Rating, Agility, Defense Rating"] = "Prob. Esquivar <- Indice Esquivar, Agilidad, Indice Defensa"
-- /rb sum tank parry -- /rb sum tank parry
L["Sum Parry Chance"] = "Res. prob. Parar" L["Sum Parry Chance"] = "Res. prob. Parar"
--L["Parry Chance <- Parry Rating"] = "Prob. Parar <- Indice Parar, Indice Defensa" L["Parry Chance <- Parry Rating, Defense Rating"] = "Prob. Parar <- Indice Parar, Indice Defensa"
-- /rb sum tank block -- /rb sum tank block
L["Sum Block Chance"] = "Res. prob Bloqueo" L["Sum Block Chance"] = "Res. prob Bloqueo"
--L["Block Chance <- Block Rating"] = "Prob. Bloqueo <- Indice Bloqueo, Indice Defensa" L["Block Chance <- Block Rating, Defense Rating"] = "Prob. Bloqueo <- Indice Bloqueo, Indice Defensa"
-- /rb sum tank avoidhit
L["Sum Hit Avoidance"] = "Res. Elusion golpe"
L["Hit Avoidance <- Defense Rating"] = "Elusion golpe <- Indice Defensa"
-- /rb sum tank avoidcrit
L["Sum Crit Avoidance"] = "Res. Elusion Critico"
L["Crit Avoidance <- Defense Rating, Resilience"] = "Elusion Critico <- Indice Defensa, Temple"
-- /rb sum tank neglectdodge -- /rb sum tank neglectdodge
L["Sum Dodge Neglect"] = "Res. fallo Esquivar" L["Sum Dodge Neglect"] = "Res. fallo Esquivar"
--L["Dodge Neglect <- Expertise"] = "Fallo Esquivar <- Pericia, Indice habilidad arma" L["Dodge Neglect <- Expertise, Weapon Skill Rating"] = "Fallo Esquivar <- Pericia, Indice habilidad arma"
-- /rb sum tank neglectparry -- /rb sum tank neglectparry
L["Sum Parry Neglect"] = "Res. fallo Parar" L["Sum Parry Neglect"] = "Res. fallo Parar"
--L["Parry Neglect <- Expertise"] = "Fallo Parar <- Pericia, Indice habilidad arma" L["Parry Neglect <- Expertise, Weapon Skill Rating"] = "Fallo Parar <- Pericia, Indice habilidad arma"
-- /rb sum tank neglectblock
L["Sum Block Neglect"] = "Res. fallo Bloquear"
L["Block Neglect <- Weapon Skill Rating"] = "Fallo Bloquear <- Indice habilidad arma"
-- /rb sum tank resarcane -- /rb sum tank resarcane
L["Sum Arcane Resistance"] = "Res. Resist. Arcana" L["Sum Arcane Resistance"] = "Res. Resist. Arcana"
L["Arcane Resistance Summary"] = "Resumen Resistencia Arcana" L["Arcane Resistance Summary"] = "Resumen Resistencia Arcana"
@@ -468,12 +489,15 @@ L["Block Rating Summary"] = "Resumen Indice Bloquear"
-- /rb sum tank res -- /rb sum tank res
L["Sum Resilience"] = "Res. Temple" L["Sum Resilience"] = "Res. Temple"
L["Resilience Summary"] = "Resumen Temple" L["Resilience Summary"] = "Resumen Temple"
-- /rb sum tank def
L["Sum Defense"] = "Res. Defensa"
L["Defense <- Defense Rating"] = "Defensa <- Indice Defensa"
-- /rb sum tank tp -- /rb sum tank tp
L["Sum TankPoints"] = "Res. Ptos. Tanque" L["Sum TankPoints"] = "Res. Ptos. Tanque"
L["TankPoints <- Health, Total Reduction"] = "Ptos. Tanque <- Salud, Total Reduccion" L["TankPoints <- Health, Total Reduction"] = "Ptos. Tanque <- Salud, Total Reduccion"
-- /rb sum tank tr -- /rb sum tank tr
L["Sum Total Reduction"] = "Res. Total Reduccion" L["Sum Total Reduction"] = "Res. Total Reduccion"
--L["Total Reduction <- Armor, Dodge, Parry, Block, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "Total Reduccion <- Armadura, Esquivar, Parar, Bloquear, Valor bloqueo, Defensa, Temple, FalloEnemigo, CriticoEnemigo, AplastamientoEnemigo, Modifics.DanoRecibido" L["Total Reduction <- Armor, Dodge, Parry, Block, Block Value, Defense, Resilience, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "Total Reduccion <- Armadura, Esquivar, Parar, Bloquear, Valor bloqueo, Defensa, Temple, FalloEnemigo, CriticoEnemigo, AplastamientoEnemigo, Modifics.DanoRecibido"
-- /rb sum tank avoid -- /rb sum tank avoid
L["Sum Avoidance"] = "Res. Elusion" L["Sum Avoidance"] = "Res. Elusion"
L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "Elusion <- Esquivar, Parar, FalloEnemigo, Bloqueo(Opcional)" L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "Elusion <- Esquivar, Parar, FalloEnemigo, Bloqueo(Opcional)"
+18 -13
View File
@@ -1,6 +1,6 @@
--[[ --[[
Name: RatingBuster frFR locale (incomplete) Name: RatingBuster frFR locale (incomplete)
Revision: $Revision: 294 $ Revision: $Revision: 282 $
Translated by: Translated by:
- Tixu@Curse, Silaor and renchap - Tixu@Curse, Silaor and renchap
]] ]]
@@ -70,8 +70,10 @@ L["Show Rating conversions in tooltips"] = "Affiche dans l'infobulle les gains a
-- /rb rating detail -- /rb rating detail
--L["Show Detailed Conversions Text"] = true -- à traduire --L["Show Detailed Conversions Text"] = true -- à traduire
--L["Show detailed text for Resilience and Expertise conversions"] = true -- à traduire --L["Show detailed text for Resilience and Expertise conversions"] = true -- à traduire
-- /rb rating def
--L["Defense Breakdown"] = true -- à traduire --L["Defense Breakdown"] = true -- à traduire
--L["Convert Defense into Crit Avoidance, Hit Avoidance, Dodge, Parry and Block"] = true --L["Convert Defense into Crit Avoidance, Hit Avoidance, Dodge, Parry and Block"] = true
-- /rb rating wpn
--L["Weapon Skill Breakdown"] = true -- à traduire --L["Weapon Skill Breakdown"] = true -- à traduire
--L["Convert Weapon Skill into Crit, Hit, Dodge Neglect, Parry Neglect and Block Neglect"] = true -- à traduire --L["Convert Weapon Skill into Crit, Hit, Dodge Neglect, Parry Neglect and Block Neglect"] = true -- à traduire
-- /rb rating exp -- /rb rating exp
@@ -335,13 +337,13 @@ L["Sum Healing"] = "Cumul Soins"
L["Healing <- Healing, Intellect, Spirit, Agility, Strength"] = "Soins <- Soins, Intel, Esprit, Agi, Force" L["Healing <- Healing, Intellect, Spirit, Agility, Strength"] = "Soins <- Soins, Intel, Esprit, Agi, Force"
-- /rb sum stat hit -- /rb sum stat hit
L["Sum Hit Chance"] = "Cumul Toucher" L["Sum Hit Chance"] = "Cumul Toucher"
--L["Hit Chance <- Hit Rating"] = "Toucher <- Toucher, Score Arme" L["Hit Chance <- Hit Rating, Weapon Skill Rating"] = "Toucher <- Toucher, Score Arme"
-- /rb sum stat hitspell -- /rb sum stat hitspell
L["Sum Spell Hit Chance"] = "Cumul Toucher des Sorts" L["Sum Spell Hit Chance"] = "Cumul Toucher des Sorts"
L["Spell Hit Chance <- Spell Hit Rating"] = "Toucher des Sorts <- Toucher des Sorts" L["Spell Hit Chance <- Spell Hit Rating"] = "Toucher des Sorts <- Toucher des Sorts"
-- /rb sum stat crit -- /rb sum stat crit
L["Sum Crit Chance"] = "Cumul Crit" L["Sum Crit Chance"] = "Cumul Crit"
--L["Crit Chance <- Crit Rating, Agility"] = "Crit <- %Crit, Agi, Comp Arme" L["Crit Chance <- Crit Rating, Agility, Weapon Skill Rating"] = "Crit <- %Crit, Agi, Comp Arme"
-- /rb sum stat critspell -- /rb sum stat critspell
L["Sum Spell Crit Chance"] = "Cumul Crit Sorts" L["Sum Spell Crit Chance"] = "Cumul Crit Sorts"
L["Spell Crit Chance <- Spell Crit Rating, Intellect"] = "Crit Sorts <- %Crit Sorts, Intel" L["Spell Crit Chance <- Spell Crit Rating, Intellect"] = "Crit Sorts <- %Crit Sorts, Intel"
@@ -359,19 +361,25 @@ L["Sum Health Regen when out of combat"] = "Cumul Regen Vie HC"
L["Health Regen when out of combat <- Spirit"] = "Regen Vie HC <- Esprit" L["Health Regen when out of combat <- Spirit"] = "Regen Vie HC <- Esprit"
-- /rb sum stat armor -- /rb sum stat armor
L["Sum Armor"] = "Cumul Armure" L["Sum Armor"] = "Cumul Armure"
--L["Armor <- Armor from items and bonuses"] = "Armure <- Armure Objets, Armure Bonus, Agi, Intel" L["Armor <- Armor from items, Armor from bonuses, Agility, Intellect"] = "Armure <- Armure Objets, Armure Bonus, Agi, Intel"
-- /rb sum stat blockvalue -- /rb sum stat blockvalue
L["Sum Block Value"] = "Cumul Dégats Bloqués"
L["Block Value <- Block Value, Strength"] = "Dégats Bloqués <- Dégats Bloqués, Force"
-- /rb sum stat dodge -- /rb sum stat dodge
L["Sum Dodge Chance"] = "Cumul Esquive" L["Sum Dodge Chance"] = "Cumul Esquive"
--L["Dodge Chance <- Dodge Rating, Agility"] = "Esquive <- Score Esquive, Agi, Score Def" L["Dodge Chance <- Dodge Rating, Agility, Defense Rating"] = "Esquive <- Score Esquive, Agi, Score Def"
-- /rb sum stat parry -- /rb sum stat parry
L["Sum Parry Chance"] = "Cumul Parade" L["Sum Parry Chance"] = "Cumul Parade"
--L["Parry Chance <- Parry Rating"] = "Parade <- Score Parade, Score Def" L["Parry Chance <- Parry Rating, Defense Rating"] = "Parade <- Score Parade, Score Def"
-- /rb sum stat block -- /rb sum stat block
L["Sum Block Chance"] = "Cumul Bloquage" L["Sum Block Chance"] = "Cumul Bloquage"
--L["Block Chance <- Block Rating"] = "Bloquage <- Score Bloquage, Score Def" L["Block Chance <- Block Rating, Defense Rating"] = "Bloquage <- Score Bloquage, Score Def"
-- /rb sum stat avoidhit -- /rb sum stat avoidhit
L["Sum Hit Avoidance"] = "Cumul Raté"
L["Hit Avoidance <- Defense Rating"] = "Raté <- Score Def"
-- /rb sum stat avoidcrit -- /rb sum stat avoidcrit
L["Sum Crit Avoidance"] = "Cumul Def Crit"
L["Crit Avoidance <- Defense Rating, Resilience"] = "Def Crit <- Score Def, Resilience"
-- /rb sum stat neglectdodge -- /rb sum stat neglectdodge
L["Sum Dodge Neglect"] = "Cumul Ignore Esquive" L["Sum Dodge Neglect"] = "Cumul Ignore Esquive"
--L["Dodge Neglect <- Weapon Skill Rating"] = "Ignore Esquive <- Score Arme" --L["Dodge Neglect <- Weapon Skill Rating"] = "Ignore Esquive <- Score Arme"
@@ -379,6 +387,8 @@ L["Sum Dodge Neglect"] = "Cumul Ignore Esquive"
L["Sum Parry Neglect"] = "Cumul Ignore Parade" L["Sum Parry Neglect"] = "Cumul Ignore Parade"
--L["Parry Neglect <- Weapon Skill Rating"] = "Ignore Parade <- Score Arme" --L["Parry Neglect <- Weapon Skill Rating"] = "Ignore Parade <- Score Arme"
-- /rb sum stat neglectblock -- /rb sum stat neglectblock
L["Sum Block Neglect"] = "Cumul Ignore Bloquage"
L["Block Neglect <- Weapon Skill Rating"] = "Ignore Bloquage <- Score Arme"
-- /rb sum stat resarcane -- /rb sum stat resarcane
L["Sum Arcane Resistance"] = "Cumul RA" L["Sum Arcane Resistance"] = "Cumul RA"
L["Arcane Resistance Summary"] = "Résumé de la RA" L["Arcane Resistance Summary"] = "Résumé de la RA"
@@ -419,6 +429,7 @@ L["Intellect Summary"] = "Résumé de l'Intelligence"
L["Sum Spirit"] = "Cumul Esprit" L["Sum Spirit"] = "Cumul Esprit"
L["Spirit Summary"] = "Résumé de l'Esprit" L["Spirit Summary"] = "Résumé de l'Esprit"
-- /rb sum statcomp def -- /rb sum statcomp def
L["Sum Defense"] = "Cumul Def"
L["Defense <- Defense Rating"] = "Def <- Score def" L["Defense <- Defense Rating"] = "Def <- Score def"
-- /rb sum statcomp wpn -- /rb sum statcomp wpn
L["Sum Weapon Skill"] = "Cumul Comp Arme" L["Sum Weapon Skill"] = "Cumul Comp Arme"
@@ -426,12 +437,6 @@ L["Weapon Skill <- Weapon Skill Rating"] = "Comp Arme <- Score Arme"
-- /rb sum physical exprating -- /rb sum physical exprating
--L["Sum Expertise Rating"] = true --L["Sum Expertise Rating"] = true
--L["Expertise Rating Summary"] = true --L["Expertise Rating Summary"] = true
-- /rb sum basic mastery
--L["Sum Mastery"] = ""
--L["Mastery Summary"] = ""
-- /rb sum basic masteryrating
--L["Sum Mastery Rating"] = ""
--L["Mastery Rating Summary"] = ""
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum gemset -- /rb sum gemset
L["Gem Set"] = "Set de gemme" L["Gem Set"] = "Set de gemme"
+46 -22
View File
@@ -1,6 +1,6 @@
--[[ --[[
Name: RatingBuster koKR locale Name: RatingBuster koKR locale
Revision: $Revision: 294 $ Revision: $Revision: 282 $
Translated by: Translated by:
- Slowhand, 7destiny, kcgcom, fenlis - Slowhand, 7destiny, kcgcom, fenlis
]] ]]
@@ -62,14 +62,20 @@ L["Options for Rating display"] = "전투 숙련도 표시에 대한 설정입
L["Show Rating Conversions"] = "전투 숙련도 계산 표시" L["Show Rating Conversions"] = "전투 숙련도 계산 표시"
L["Show Rating conversions in tooltips"] = "툴팁에 전투 숙련도를 전투 능력치로 계산하여 표시합니다." L["Show Rating conversions in tooltips"] = "툴팁에 전투 숙련도를 전투 능력치로 계산하여 표시합니다."
-- /rb rating spell -- /rb rating spell
L["Show Spell Hit/Haste"] = "주문 적중/가속 표시" --L["Show Spell Hit/Haste"] = true
L["Show Spell Hit/Haste from Hit/Haste Rating"] = "주문의 적중/가속을 표시합니다." --L["Show Spell Hit/Haste from Hit/Haste Rating"] = true
-- /rb rating physical -- /rb rating physical
L["Show Physical Hit/Haste"] = "물리 적중/가속 표시" --L["Show Physical Hit/Haste"] = true
L["Show Physical Hit/Haste from Hit/Haste Rating"] = "물리 적중/가속을 표시합니다." --L["Show Physical Hit/Haste from Hit/Haste Rating"] = true
-- /rb rating detail -- /rb rating detail
L["Show Detailed Conversions Text"] = "세부적인 전투 숙련도 계산 표시" L["Show Detailed Conversions Text"] = "세부적인 전투 숙련도 계산 표시"
L["Show detailed text for Resilience and Expertise conversions"] = "탄력도와 숙련을 세부적인 전투 능력치로 계산해서 표시합니다." L["Show detailed text for Resilience and Expertise conversions"] = "탄력도와 숙련을 세부적인 전투 능력치로 계산해서 표시합니다."
-- /rb rating def
L["Defense Breakdown"] = "방어 숙련 세분화"
L["Convert Defense into Crit Avoidance, Hit Avoidance, Dodge, Parry and Block"] = "방어 숙련을 치명타 감소, 빗맞힘, 회피, 무기 막기, 방패 막기로 계산해서 표시합니다."
-- /rb rating wpn
L["Weapon Skill Breakdown"] = "무기 숙련 세분화"
L["Convert Weapon Skill into Crit, Hit, Dodge Neglect, Parry Neglect and Block Neglect"] = "무기 숙련을 치명타, 적중, 회피 무시, 무기 막기 무시, 방패막기 무시로 계산해서 표시합니다."
-- /rb rating exp -- /rb rating exp
L["Expertise Breakdown"] = "숙련 세분화" L["Expertise Breakdown"] = "숙련 세분화"
L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "숙련을 회피 무시와 무기 막기 무시로 계산해서 표시합니다." L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "숙련을 회피 무시와 무기 막기 무시로 계산해서 표시합니다."
@@ -320,12 +326,6 @@ L["Intellect Summary"] = "지능 요약"
-- /rb sum basic spi -- /rb sum basic spi
L["Sum Spirit"] = "정신력 합계" L["Sum Spirit"] = "정신력 합계"
L["Spirit Summary"] = "정신력 요약" L["Spirit Summary"] = "정신력 요약"
-- /rb sum basic mastery
--L["Sum Mastery"] = ""
--L["Mastery Summary"] = ""
-- /rb sum basic masteryrating
--L["Sum Mastery Rating"] = ""
--L["Mastery Rating Summary"] = ""
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum physical -- /rb sum physical
L["Stat - Physical"] = "능력치 - 물리" L["Stat - Physical"] = "능력치 - 물리"
@@ -341,13 +341,13 @@ L["Sum Feral Attack Power"] = "야성 전투력 합계"
L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "야성 전투력 <- 야성 전투력, 전투력, 힘, 민첩성" L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "야성 전투력 <- 야성 전투력, 전투력, 힘, 민첩성"
-- /rb sum physical hit -- /rb sum physical hit
L["Sum Hit Chance"] = "적중률 합계" L["Sum Hit Chance"] = "적중률 합계"
--L["Hit Chance <- Hit Rating"] = "적중률 <- 적중도, 무기 숙련도" L["Hit Chance <- Hit Rating, Weapon Skill Rating"] = "적중률 <- 적중도, 무기 숙련도"
-- /rb sum physical hitrating -- /rb sum physical hitrating
L["Sum Hit Rating"] = "적중도 합계" L["Sum Hit Rating"] = "적중도 합계"
L["Hit Rating Summary"] = "적중도 요약" L["Hit Rating Summary"] = "적중도 요약"
-- /rb sum physical crit -- /rb sum physical crit
L["Sum Crit Chance"] = "치명타율 합계" L["Sum Crit Chance"] = "치명타율 합계"
--L["Crit Chance <- Crit Rating, Agility"] = "치명타율 <- 치명타 적중도, 민첩성, 무기 숙련도" L["Crit Chance <- Crit Rating, Agility, Weapon Skill Rating"] = "치명타율 <- 치명타 적중도, 민첩성, 무기 숙련도"
-- /rb sum physical critrating -- /rb sum physical critrating
L["Sum Crit Rating"] = "치명타 적중도 합계" L["Sum Crit Rating"] = "치명타 적중도 합계"
L["Crit Rating Summary"] = "치명타 적중도 요약" L["Crit Rating Summary"] = "치명타 적중도 요약"
@@ -359,13 +359,13 @@ L["Sum Haste Rating"] = "공격 가속도 합계"
L["Haste Rating Summary"] = "공격 가속도 요약" L["Haste Rating Summary"] = "공격 가속도 요약"
-- /rb sum physical rangedhit -- /rb sum physical rangedhit
L["Sum Ranged Hit Chance"] = "원거리 적중률 합계" L["Sum Ranged Hit Chance"] = "원거리 적중률 합계"
--L["Ranged Hit Chance <- Hit Rating, Ranged Hit Rating"] = "원거리 적중률 <- 적중도, 무기 숙련도, 원거리 적중도" L["Ranged Hit Chance <- Hit Rating, Weapon Skill Rating, Ranged Hit Rating"] = "원거리 적중률 <- 적중도, 무기 숙련도, 원거리 적중도"
-- /rb sum physical rangedhitrating -- /rb sum physical rangedhitrating
L["Sum Ranged Hit Rating"] = "원거리 적중도 합계" L["Sum Ranged Hit Rating"] = "원거리 적중도 합계"
L["Ranged Hit Rating Summary"] = "원거리 적중도 요약" L["Ranged Hit Rating Summary"] = "원거리 적중도 요약"
-- /rb sum physical rangedcrit -- /rb sum physical rangedcrit
L["Sum Ranged Crit Chance"] = "원거리 치명타율 합계" L["Sum Ranged Crit Chance"] = "원거리 치명타율 합계"
--L["Ranged Crit Chance <- Crit Rating, Agility, Ranged Crit Rating"] = "원거리 치명타율 <- 치명타 적중도, 민첩성, 무기 숙련도, 치명타 적중도" L["Ranged Crit Chance <- Crit Rating, Agility, Weapon Skill Rating, Ranged Crit Rating"] = "원거리 치명타율 <- 치명타 적중도, 민첩성, 무기 숙련도, 치명타 적중도"
-- /rb sum physical rangedcritrating -- /rb sum physical rangedcritrating
L["Sum Ranged Crit Rating"] = "원거리 치명타 적중도 합계" L["Sum Ranged Crit Rating"] = "원거리 치명타 적중도 합계"
L["Ranged Crit Rating Summary"] = "원거리 치명타 적중도 요약" L["Ranged Crit Rating Summary"] = "원거리 치명타 적중도 요약"
@@ -378,6 +378,12 @@ L["Ranged Haste Rating Summary"] = "원거리 공격 가속도 요약"
-- /rb sum physical maxdamage -- /rb sum physical maxdamage
L["Sum Weapon Max Damage"] = "무기 최대 공격력 합계" L["Sum Weapon Max Damage"] = "무기 최대 공격력 합계"
L["Weapon Max Damage Summary"] = "무기 최대 공격력 요약" L["Weapon Max Damage Summary"] = "무기 최대 공격력 요약"
-- /rb sum physical ignorearmor
L["Sum Ignore Armor"] = "방어도 무시 합계"
L["Ignore Armor Summary"] = "방어도 무시 요약"
-- /rb sum physical arp
L["Sum Armor Penetration"] = "방어도 관통력 합계"
L["Armor Penetration Summary"] = "방어도 관통력 요약"
-- /rb sum physical weapondps -- /rb sum physical weapondps
--L["Sum Weapon DPS"] = true --L["Sum Weapon DPS"] = true
--L["Weapon DPS Summary"] = true --L["Weapon DPS Summary"] = true
@@ -390,6 +396,9 @@ L["Expertise <- Expertise Rating"] = "숙련 <- 숙련도"
-- /rb sum physical exprating -- /rb sum physical exprating
--L["Sum Expertise Rating"] = true --L["Sum Expertise Rating"] = true
--L["Expertise Rating Summary"] = true --L["Expertise Rating Summary"] = true
-- /rb sum physical arprating
L["Sum Armor Penetration Rating"] = "방어도 관통도 합계"
L["Armor Penetration Rating Summary"] = "방어도 관통도 요약"
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum spell -- /rb sum spell
L["Stat - Spell"] = "능력치 - 주문" L["Stat - Spell"] = "능력치 - 주문"
@@ -445,22 +454,34 @@ L["Stat - Tank"] = "능력치 - 방어"
L["Choose tank stats for summary"] = "방어 능력치를 선택합니다." L["Choose tank stats for summary"] = "방어 능력치를 선택합니다."
-- /rb sum tank armor -- /rb sum tank armor
L["Sum Armor"] = "방어도 합계" L["Sum Armor"] = "방어도 합계"
--L["Armor <- Armor from items and bonuses"] = "방어도 <- 아이템 방어도, 방어도 보너스, 민첩성, 지능" L["Armor <- Armor from items, Armor from bonuses, Agility, Intellect"] = "방어도 <- 아이템 방어도, 방어도 보너스, 민첩성, 지능"
-- /rb sum tank blockvalue
L["Sum Block Value"] = "피해 방어량 합계"
L["Block Value <- Block Value, Strength"] = "피해 방어량 <- 피해 방어량, 힘"
-- /rb sum tank dodge -- /rb sum tank dodge
L["Sum Dodge Chance"] = "회피율 합계" L["Sum Dodge Chance"] = "회피율 합계"
--L["Dodge Chance <- Dodge Rating, Agility"] = "회피율 <- 회피 숙련도, 민첩성, 방어 숙련도" L["Dodge Chance <- Dodge Rating, Agility, Defense Rating"] = "회피율 <- 회피 숙련도, 민첩성, 방어 숙련도"
-- /rb sum tank parry -- /rb sum tank parry
L["Sum Parry Chance"] = "무기 막기 확률 합계" L["Sum Parry Chance"] = "무기 막기 확률 합계"
--L["Parry Chance <- Parry Rating"] = "무기 막기 확률 <- 무기 막기 숙련도, 방어 숙련도" L["Parry Chance <- Parry Rating, Defense Rating"] = "무기 막기 확률 <- 무기 막기 숙련도, 방어 숙련도"
-- /rb sum tank block -- /rb sum tank block
L["Sum Block Chance"] = "방패 막기 확률 합계" L["Sum Block Chance"] = "방패 막기 확률 합계"
--L["Block Chance <- Block Rating"] = "방패 막기 확률 <- 방패 막기 숙련도, 방어 숙련도" L["Block Chance <- Block Rating, Defense Rating"] = "방패 막기 확률 <- 방패 막기 숙련도, 방어 숙련도"
-- /rb sum tank avoidhit
L["Sum Hit Avoidance"] = "빗맞힘 합계"
L["Hit Avoidance <- Defense Rating"] = "빗맞힘 <- 방어 숙련도"
-- /rb sum tank avoidcrit
L["Sum Crit Avoidance"] = "치명타 감소 합계"
L["Crit Avoidance <- Defense Rating, Resilience"] = "치명타 감소 <- 방어 숙련도, 탄력도"
-- /rb sum tank neglectdodge -- /rb sum tank neglectdodge
L["Sum Dodge Neglect"] = "회피 무시 합계" L["Sum Dodge Neglect"] = "회피 무시 합계"
--L["Dodge Neglect <- Expertise"] = "회피 무시 <- 숙련도, 무기 숙련도" L["Dodge Neglect <- Expertise, Weapon Skill Rating"] = "회피 무시 <- 숙련도, 무기 숙련도"
-- /rb sum tank neglectparry -- /rb sum tank neglectparry
L["Sum Parry Neglect"] = "무기 막기 무시 합계" L["Sum Parry Neglect"] = "무기 막기 무시 합계"
--L["Parry Neglect <- Expertise"] = "무기 막기 무시 <- 숙련도, 무기 숙련도" L["Parry Neglect <- Expertise, Weapon Skill Rating"] = "무기 막기 무시 <- 숙련도, 무기 숙련도"
-- /rb sum tank neglectblock
L["Sum Block Neglect"] = "방패 막기 무시 합계"
L["Block Neglect <- Weapon Skill Rating"] = "방패 막기 무시 <- 무기 숙련도"
-- /rb sum tank resarcane -- /rb sum tank resarcane
L["Sum Arcane Resistance"] = "비전 저항력 합계" L["Sum Arcane Resistance"] = "비전 저항력 합계"
L["Arcane Resistance Summary"] = "비전 저항력 요약" L["Arcane Resistance Summary"] = "비전 저항력 요약"
@@ -488,12 +509,15 @@ L["Block Rating Summary"] = "방어 막기 숙련도 요약"
-- /rb sum tank res -- /rb sum tank res
L["Sum Resilience"] = "탄력 합계" L["Sum Resilience"] = "탄력 합계"
L["Resilience Summary"] = "탄력 요약" L["Resilience Summary"] = "탄력 요약"
-- /rb sum tank def
L["Sum Defense"] = "방어 숙련 합계"
L["Defense <- Defense Rating"] = "방어 숙련 <- 방어 숙련도"
-- /rb sum tank tp -- /rb sum tank tp
L["Sum TankPoints"] = "탱킹 점수 (TankPoint) 합계" L["Sum TankPoints"] = "탱킹 점수 (TankPoint) 합계"
L["TankPoints <- Health, Total Reduction"] = "탱킹 점수 (TankPoint) <- 생명력, 총 피해감소" L["TankPoints <- Health, Total Reduction"] = "탱킹 점수 (TankPoint) <- 생명력, 총 피해감소"
-- /rb sum tank tr -- /rb sum tank tr
L["Sum Total Reduction"] = "총 피해감소 합계" L["Sum Total Reduction"] = "총 피해감소 합계"
--L["Total Reduction <- Armor, Dodge, Parry, Block, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "총 피해감소 <- 방어도, 회피, 무기 막기, 방패 막기, 피해 방어량, 방어 숙련, 탄력, 빗맞힘(자신), 치명타 감소, 몹강타, 피해감소 효과" L["Total Reduction <- Armor, Dodge, Parry, Block, Block Value, Defense, Resilience, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "총 피해감소 <- 방어도, 회피, 무기 막기, 방패 막기, 피해 방어량, 방어 숙련, 탄력, 빗맞힘(자신), 치명타 감소, 몹강타, 피해감소 효과"
-- /rb sum tank avoid -- /rb sum tank avoid
L["Sum Avoidance"] = "총 방어행동 합계" L["Sum Avoidance"] = "총 방어행동 합계"
L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "방어행동 (Avoidance) <- 회피, 무기 막기, 빗맞힘, 방패 막기(선택적)" L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "방어행동 (Avoidance) <- 회피, 무기 막기, 빗맞힘, 방패 막기(선택적)"
+42 -18
View File
@@ -1,6 +1,6 @@
--[[ --[[
Name: RatingBuster ruRU locale Name: RatingBuster ruRU locale
Revision: $Revision: 294 $ Revision: $Revision: 283 $
Translated by: Translated by:
- Orsana \ StingerSoft \ Swix - Orsana \ StingerSoft \ Swix
]] ]]
@@ -70,6 +70,12 @@ L["Show Physical Hit/Haste from Hit/Haste Rating"] = "Показывать ме
-- /rb rating detail -- /rb rating detail
L["Show Detailed Conversions Text"] = "Детальная конвертация рейтингов" L["Show Detailed Conversions Text"] = "Детальная конвертация рейтингов"
L["Show detailed text for Resilience and Expertise conversions"] = "Показывать детальную конвертацию рейтингов мастерства и устойчивости" L["Show detailed text for Resilience and Expertise conversions"] = "Показывать детальную конвертацию рейтингов мастерства и устойчивости"
-- /rb rating def
L["Defense Breakdown"] = "Разбивать защиту"
L["Convert Defense into Crit Avoidance, Hit Avoidance, Dodge, Parry and Block"] = "Разбивать защиту на избежание крита, поподание, уклонение, парирование и блокирование"
-- /rb rating wpn
L["Weapon Skill Breakdown"] = "Разбивать уровень владения оружием"
L["Convert Weapon Skill into Crit, Hit, Dodge Neglect, Parry Neglect and Block Neglect"] = "Разбивать уровень владения оружием на крит, попадание, игнорирование уклона, игнорирование парирования и блока"
-- /rb rating exp -- /rb rating exp
L["Expertise Breakdown"] = "Разбивать уровень мастерства" L["Expertise Breakdown"] = "Разбивать уровень мастерства"
L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "Разбивать уровень мастерства на игнорирование уклонения и парирования" L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "Разбивать уровень мастерства на игнорирование уклонения и парирования"
@@ -320,12 +326,6 @@ L["Intellect Summary"] = "Суммировать интеллект"
-- /rb sum basic spi -- /rb sum basic spi
L["Sum Spirit"] = "Сумма духа" L["Sum Spirit"] = "Сумма духа"
L["Spirit Summary"] = "Суммировать дух" L["Spirit Summary"] = "Суммировать дух"
-- /rb sum basic mastery
--L["Sum Mastery"] = ""
--L["Mastery Summary"] = ""
-- /rb sum basic masteryrating
--L["Sum Mastery Rating"] = ""
--L["Mastery Rating Summary"] = ""
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum physical -- /rb sum physical
L["Stat - Physical"] = "Статы - физические" L["Stat - Physical"] = "Статы - физические"
@@ -341,13 +341,13 @@ L["Sum Feral Attack Power"] = "Сумма силы атаки в облике з
L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "Силы атаки в облике зверя <- Сила атаки в облике зверя, Сила атаки, Сила, Ловкость" L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "Силы атаки в облике зверя <- Сила атаки в облике зверя, Сила атаки, Сила, Ловкость"
-- /rb sum physical hit -- /rb sum physical hit
L["Sum Hit Chance"] = "Сумма вероятности поподания" L["Sum Hit Chance"] = "Сумма вероятности поподания"
--L["Hit Chance <- Hit Rating"] = "Вероятности поподания <- Рейтинг меткости, Рейтинг владения оружием" L["Hit Chance <- Hit Rating, Weapon Skill Rating"] = "Вероятности поподания <- Рейтинг меткости, Рейтинг владения оружием"
-- /rb sum physical hitrating -- /rb sum physical hitrating
L["Sum Hit Rating"] = "Сумма рейтинга меткости" L["Sum Hit Rating"] = "Сумма рейтинга меткости"
L["Hit Rating Summary"] = "Суммировать рейтинг меткости" L["Hit Rating Summary"] = "Суммировать рейтинг меткости"
-- /rb sum physical crit -- /rb sum physical crit
L["Sum Crit Chance"] = "Сумма вероятности крит удара" L["Sum Crit Chance"] = "Сумма вероятности крит удара"
--L["Crit Chance <- Crit Rating, Agility"] = "Вероятности крит удара <- Рейтинг крит удара, Ловкость, Рейтинг владения оружием" L["Crit Chance <- Crit Rating, Agility, Weapon Skill Rating"] = "Вероятности крит удара <- Рейтинг крит удара, Ловкость, Рейтинг владения оружием"
-- /rb sum physical critrating -- /rb sum physical critrating
L["Sum Crit Rating"] = "Сумма рейтинга крита" L["Sum Crit Rating"] = "Сумма рейтинга крита"
L["Crit Rating Summary"] = "Суммировать рейтинг крит удара" L["Crit Rating Summary"] = "Суммировать рейтинг крит удара"
@@ -359,13 +359,13 @@ L["Sum Haste Rating"] = "Сумма рейтинга скорости"
L["Haste Rating Summary"] = "Суммировать рейтинг скорости" L["Haste Rating Summary"] = "Суммировать рейтинг скорости"
-- /rb sum physical rangedhit -- /rb sum physical rangedhit
L["Sum Ranged Hit Chance"] = "Сумма вероятности поподания в дальнем бою" L["Sum Ranged Hit Chance"] = "Сумма вероятности поподания в дальнем бою"
--L["Ranged Hit Chance <- Hit Rating, Ranged Hit Rating"] = "Вероятность поподания в дальнем бою <- Рейтинг меткости, Рейтинг владения оружием, Рейтинг меткости дальнего боя" L["Ranged Hit Chance <- Hit Rating, Weapon Skill Rating, Ranged Hit Rating"] = "Вероятность поподания в дальнем бою <- Рейтинг меткости, Рейтинг владения оружием, Рейтинг меткости дальнего боя"
-- /rb sum physical rangedhitrating -- /rb sum physical rangedhitrating
L["Sum Ranged Hit Rating"] = "Сумма рейтинга меткости дальнего боя" L["Sum Ranged Hit Rating"] = "Сумма рейтинга меткости дальнего боя"
L["Ranged Hit Rating Summary"] = "Суммировать рейтинг меткости дальнего боя" L["Ranged Hit Rating Summary"] = "Суммировать рейтинг меткости дальнего боя"
-- /rb sum physical rangedcrit -- /rb sum physical rangedcrit
L["Sum Ranged Crit Chance"] = "Сумма вероятности крита в дальнем бою" L["Sum Ranged Crit Chance"] = "Сумма вероятности крита в дальнем бою"
--L["Ranged Crit Chance <- Crit Rating, Agility, Ranged Crit Rating"] = "Вероятность крита в дальнем бою <- Рейтинг крита, Ловкость, Рейтинг владения оружием, Рейтинга крит удара дальнего боя" L["Ranged Crit Chance <- Crit Rating, Agility, Weapon Skill Rating, Ranged Crit Rating"] = "Вероятность крита в дальнем бою <- Рейтинг крита, Ловкость, Рейтинг владения оружием, Рейтинга крит удара дальнего боя"
-- /rb sum physical rangedcritrating -- /rb sum physical rangedcritrating
L["Sum Ranged Crit Rating"] = "Сумма рейтинга крит удара дальнего боя" L["Sum Ranged Crit Rating"] = "Сумма рейтинга крит удара дальнего боя"
L["Ranged Crit Rating Summary"] = "Суммировать рейтинг критического удара в дальнем бою" L["Ranged Crit Rating Summary"] = "Суммировать рейтинг критического удара в дальнем бою"
@@ -378,6 +378,12 @@ L["Ranged Haste Rating Summary"] = "Суммировать рейтинг ско
-- /rb sum physical maxdamage -- /rb sum physical maxdamage
L["Sum Weapon Max Damage"] = "Сумма макс урона оружия" L["Sum Weapon Max Damage"] = "Сумма макс урона оружия"
L["Weapon Max Damage Summary"] = "Суммировать макс урон уружия" L["Weapon Max Damage Summary"] = "Суммировать макс урон уружия"
-- /rb sum physical ignorearmor
L["Sum Ignore Armor"] = "Сумма игнорирования брони"
L["Ignore Armor Summary"] = "Суммировать игнорирование брони"
-- /rb sum physical arp
L["Sum Armor Penetration"] = "Сумма пробивание брони"
L["Armor Penetration Summary"] = "Суммировать пробивание брони"
-- /rb sum physical weapondps -- /rb sum physical weapondps
L["Sum Weapon DPS"] = "Сумма УВС оружия" L["Sum Weapon DPS"] = "Сумма УВС оружия"
L["Weapon DPS Summary"] = "Суммировать урон в секунду от оружия" L["Weapon DPS Summary"] = "Суммировать урон в секунду от оружия"
@@ -390,6 +396,9 @@ L["Expertise <- Expertise Rating"] = "Мастерство <- рейтинг м
-- /rb sum physical exprating -- /rb sum physical exprating
L["Sum Expertise Rating"] = "Сумма рейтинга мастерства" L["Sum Expertise Rating"] = "Сумма рейтинга мастерства"
L["Expertise Rating Summary"] = "Суммировать рейтинг мастерства" L["Expertise Rating Summary"] = "Суммировать рейтинг мастерства"
-- /rb sum physical arprating
L["Sum Armor Penetration Rating"] = "Сумма рейтинга пробивание брони"
L["Armor Penetration Rating Summary"] = "Суммировать рейтинг пробивания брони"
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum spell -- /rb sum spell
L["Stat - Spell"] = "Статы - заклинания" L["Stat - Spell"] = "Статы - заклинания"
@@ -445,22 +454,34 @@ L["Stat - Tank"] = "Статы - танкования"
L["Choose tank stats for summary"] = "Выбор статов танкования для подсчета" L["Choose tank stats for summary"] = "Выбор статов танкования для подсчета"
-- /rb sum tank armor -- /rb sum tank armor
L["Sum Armor"] = "Сумма брони" L["Sum Armor"] = "Сумма брони"
--L["Armor <- Armor from items and bonuses"] = "Броня <- Броня с одежды, Броня от бонусов, Ловкость, Интеллект" L["Armor <- Armor from items, Armor from bonuses, Agility, Intellect"] = "Броня <- Броня с одежды, Броня от бонусов, Ловкость, Интеллект"
-- /rb sum tank blockvalue
L["Sum Block Value"] = "Сумма значение блока"
L["Block Value <- Block Value, Strength"] = "Значение блока <- Значение блока, Сила"
-- /rb sum tank dodge -- /rb sum tank dodge
L["Sum Dodge Chance"] = "Сумма вероятности уклонения" L["Sum Dodge Chance"] = "Сумма вероятности уклонения"
--L["Dodge Chance <- Dodge Rating, Agility"] = "Вероятность уклонения <- рейтинг уклонения, ловкость, рейтинг защиты" L["Dodge Chance <- Dodge Rating, Agility, Defense Rating"] = "Вероятность уклонения <- рейтинг уклонения, ловкость, рейтинг защиты"
-- /rb sum tank parry -- /rb sum tank parry
L["Sum Parry Chance"] = "Сумма вероятности парирования" L["Sum Parry Chance"] = "Сумма вероятности парирования"
--L["Parry Chance <- Parry Rating"] = "Вероятность парирования <- рейтинг парирования, рейтинг защиты" L["Parry Chance <- Parry Rating, Defense Rating"] = "Вероятность парирования <- рейтинг парирования, рейтинг защиты"
-- /rb sum tank block -- /rb sum tank block
L["Sum Block Chance"] = "Сумма вероятности блокирования" L["Sum Block Chance"] = "Сумма вероятности блокирования"
--L["Block Chance <- Block Rating"] = "Вероятность блокирования <- рейтинг блокирования, рейтинг защиты" L["Block Chance <- Block Rating, Defense Rating"] = "Вероятность блокирования <- рейтинг блокирования, рейтинг защиты"
-- /rb sum tank avoidhit
L["Sum Hit Avoidance"] = "Сумма уклонения от удара"
L["Hit Avoidance <- Defense Rating"] = "Уклонение от удара <- Рейтинг защиты"
-- /rb sum tank avoidcrit
L["Sum Crit Avoidance"] = "Сумма уклонения от крит. удара"
L["Crit Avoidance <- Defense Rating, Resilience"] = "Уклонения от крит. удара <- Рейтинг защиты, Устойчивость"
-- /rb sum tank neglectdodge -- /rb sum tank neglectdodge
L["Sum Dodge Neglect"] = "Сумма игнорирования уклонения" L["Sum Dodge Neglect"] = "Сумма игнорирования уклонения"
--L["Dodge Neglect <- Expertise"] = "Игнорирование уклонения <- Мастерство, Рейтинг владения оружием" L["Dodge Neglect <- Expertise, Weapon Skill Rating"] = "Игнорирование уклонения <- Мастерство, Рейтинг владения оружием"
-- /rb sum tank neglectparry -- /rb sum tank neglectparry
L["Sum Parry Neglect"] = "Сумма игнорирования парирования" L["Sum Parry Neglect"] = "Сумма игнорирования парирования"
--L["Parry Neglect <- Expertise"] = "Игнорирование парирования <- Мастерство, Рейтинг владения оружием" L["Parry Neglect <- Expertise, Weapon Skill Rating"] = "Игнорирование парирования <- Мастерство, Рейтинг владения оружием"
-- /rb sum tank neglectblock
L["Sum Block Neglect"] = "Сумма игнорирования блока"
L["Block Neglect <- Weapon Skill Rating"] = "Игнорирование блока <- Рейтинг владения оружием"
-- /rb sum tank resarcane -- /rb sum tank resarcane
L["Sum Arcane Resistance"] = "Сумма защиты от тайной магии" L["Sum Arcane Resistance"] = "Сумма защиты от тайной магии"
L["Arcane Resistance Summary"] = "Суммировать сопротивление тайной магии" L["Arcane Resistance Summary"] = "Суммировать сопротивление тайной магии"
@@ -488,12 +509,15 @@ L["Block Rating Summary"] = "Суммировать рейтинг блока"
-- /rb sum tank res -- /rb sum tank res
L["Sum Resilience"] = "Сумма устойчивости" L["Sum Resilience"] = "Сумма устойчивости"
L["Resilience Summary"] = "Суммировать устойчивость" L["Resilience Summary"] = "Суммировать устойчивость"
-- /rb sum tank def
L["Sum Defense"] = "Сумма защиты"
L["Defense <- Defense Rating"] = "Защита <- Рейтинг защиты"
-- /rb sum tank tp -- /rb sum tank tp
L["Sum TankPoints"] = "Самма TankPoints" L["Sum TankPoints"] = "Самма TankPoints"
L["TankPoints <- Health, Total Reduction"] ="TankPoints <- Здоровье, Общее Cнижение" L["TankPoints <- Health, Total Reduction"] ="TankPoints <- Здоровье, Общее Cнижение"
-- /rb sum tank tr -- /rb sum tank tr
L["Sum Total Reduction"] = "Самма общего снижения" L["Sum Total Reduction"] = "Самма общего снижения"
--L["Total Reduction <- Armor, Dodge, Parry, Block, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "Общее снижение <- Броня, Уклонение, Парирование, Блок, Значение блока, Защита, Устойчивость, ПромахСущества, КритСущества, MobCrush, DamageTakenMods" L["Total Reduction <- Armor, Dodge, Parry, Block, Block Value, Defense, Resilience, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "Общее снижение <- Броня, Уклонение, Парирование, Блок, Значение блока, Защита, Устойчивость, ПромахСущества, КритСущества, MobCrush, DamageTakenMods"
-- /rb sum tank avoid -- /rb sum tank avoid
L["Sum Avoidance"] = "Сумма уклонения от удара" L["Sum Avoidance"] = "Сумма уклонения от удара"
L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "Уклонение от удара <- Уклонение, Парирование, ПромахСущества, Блок(дополнительный)" L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "Уклонение от удара <- Уклонение, Парирование, ПромахСущества, Блок(дополнительный)"
+42 -18
View File
@@ -1,6 +1,6 @@
--[[ --[[
Name: RatingBuster zhCN locale Name: RatingBuster zhCN locale
Revision: $Revision: 294 $ Revision: $Revision: 282 $
Translated by: Translated by:
- iceburn - iceburn
- 急云@CWDG - 急云@CWDG
@@ -63,6 +63,12 @@ L["Show Physical Hit/Haste from Hit/Haste Rating"] = "显示命中/急速等级
-- /rb rating detail -- /rb rating detail
L["Show Detailed Conversions Text"] = "显示详细转换文本" L["Show Detailed Conversions Text"] = "显示详细转换文本"
L["Show detailed text for Resilience and Expertise conversions"] = "显示详细的抗性和精准等级转换" L["Show detailed text for Resilience and Expertise conversions"] = "显示详细的抗性和精准等级转换"
-- /rb rating def
L["Defense Breakdown"] = "分析防御"
L["Convert Defense into Crit Avoidance, Hit Avoidance, Dodge, Parry and Block"] = "将防御分为避免爆击、避免击中、躲闪、招架和格挡"
-- /rb rating wpn
L["Weapon Skill Breakdown"] = "分析武器技能"
L["Convert Weapon Skill into Crit, Hit, Dodge Neglect, Parry Neglect and Block Neglect"] = "加武器技能分为爆击、击中、防止被躲闪、防止被招架和防止被格挡"
-- /rb rating exp -- /rb rating exp
L["Expertise Breakdown"] = "精准效能" L["Expertise Breakdown"] = "精准效能"
L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "转换精准等级为忽略躲闪和忽略招架" L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "转换精准等级为忽略躲闪和忽略招架"
@@ -300,12 +306,6 @@ L["Intellect Summary"] = "统计智力"
-- /rb sum basic spi -- /rb sum basic spi
L["Sum Spirit"] = "统计精神" L["Sum Spirit"] = "统计精神"
L["Spirit Summary"] = "统计精神" L["Spirit Summary"] = "统计精神"
-- /rb sum basic mastery
--L["Sum Mastery"] = ""
--L["Mastery Summary"] = ""
-- /rb sum basic masteryrating
--L["Sum Mastery Rating"] = ""
--L["Mastery Rating Summary"] = ""
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum physical -- /rb sum physical
L["Stat - Physical"] = "属性 - 物理" L["Stat - Physical"] = "属性 - 物理"
@@ -321,13 +321,13 @@ L["Sum Feral Attack Power"] = "统计野性攻击强度"
L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "野性攻击强度 ← 野性攻击强度、攻击强度、力量、敏捷" L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "野性攻击强度 ← 野性攻击强度、攻击强度、力量、敏捷"
-- /rb sum physical hit -- /rb sum physical hit
L["Sum Hit Chance"] = "统计物理命中几率" L["Sum Hit Chance"] = "统计物理命中几率"
--L["Hit Chance <- Hit Rating"] = "物理命中几率 ← 命中等级、武器技能等级" L["Hit Chance <- Hit Rating, Weapon Skill Rating"] = "物理命中几率 ← 命中等级、武器技能等级"
-- /rb sum physical hitrating -- /rb sum physical hitrating
L["Sum Hit Rating"] = "统计命中等级" L["Sum Hit Rating"] = "统计命中等级"
L["Hit Rating Summary"] = "统计命中等级" L["Hit Rating Summary"] = "统计命中等级"
-- /rb sum physical crit -- /rb sum physical crit
L["Sum Crit Chance"] = "统计物理爆击几率" L["Sum Crit Chance"] = "统计物理爆击几率"
--L["Crit Chance <- Crit Rating, Agility"] = "物理爆击几率 ← 爆击等级、敏捷、武器技能等级" L["Crit Chance <- Crit Rating, Agility, Weapon Skill Rating"] = "物理爆击几率 ← 爆击等级、敏捷、武器技能等级"
-- /rb sum physical critrating -- /rb sum physical critrating
L["Sum Crit Rating"] = "统计爆击等级" L["Sum Crit Rating"] = "统计爆击等级"
L["Crit Rating Summary"] = "统计爆击等级" L["Crit Rating Summary"] = "统计爆击等级"
@@ -339,13 +339,13 @@ L["Sum Haste Rating"] = "统计急速等级"
L["Haste Rating Summary"] = "统计急速等级" L["Haste Rating Summary"] = "统计急速等级"
-- /rb sum physical rangedhit -- /rb sum physical rangedhit
L["Sum Ranged Hit Chance"] = "统计远程命中几率" L["Sum Ranged Hit Chance"] = "统计远程命中几率"
--L["Ranged Hit Chance <- Hit Rating, Ranged Hit Rating"] = "远程米中几率 ← 命中等级、武器技能等级、远程命中等级" L["Ranged Hit Chance <- Hit Rating, Weapon Skill Rating, Ranged Hit Rating"] = "远程米中几率 ← 命中等级、武器技能等级、远程命中等级"
-- /rb sum physical rangedhitrating -- /rb sum physical rangedhitrating
L["Sum Ranged Hit Rating"] = "统计远程命中等级" L["Sum Ranged Hit Rating"] = "统计远程命中等级"
L["Ranged Hit Rating Summary"] = "统计远程命中等级" L["Ranged Hit Rating Summary"] = "统计远程命中等级"
-- /rb sum physical rangedcrit -- /rb sum physical rangedcrit
L["Sum Ranged Crit Chance"] = "统计远爆击几率" L["Sum Ranged Crit Chance"] = "统计远爆击几率"
--L["Ranged Crit Chance <- Crit Rating, Agility, Ranged Crit Rating"] = "远程爆击几率 ← 爆击等级、敏捷、武器技能等级、远程爆击等级" L["Ranged Crit Chance <- Crit Rating, Agility, Weapon Skill Rating, Ranged Crit Rating"] = "远程爆击几率 ← 爆击等级、敏捷、武器技能等级、远程爆击等级"
-- /rb sum physical rangedcritrating -- /rb sum physical rangedcritrating
L["Sum Ranged Crit Rating"] = "统计远程爆击等级" L["Sum Ranged Crit Rating"] = "统计远程爆击等级"
L["Ranged Crit Rating Summary"] = "统计远程爆击等级" L["Ranged Crit Rating Summary"] = "统计远程爆击等级"
@@ -358,6 +358,12 @@ L["Ranged Haste Rating Summary"] = "统计远程急速等级"
-- /rb sum physical maxdamage -- /rb sum physical maxdamage
L["Sum Weapon Max Damage"] = "统计武器最大伤害" L["Sum Weapon Max Damage"] = "统计武器最大伤害"
L["Weapon Max Damage Summary"] = "统计武器最大伤害" L["Weapon Max Damage Summary"] = "统计武器最大伤害"
-- /rb sum physical ignorearmor
L["Sum Ignore Armor"] = "统计忽略护甲"
L["Ignore Armor Summary"] = "统计忽略护甲效果"
-- /rb sum physical arp
L["Sum Armor Penetration"] = "统计护甲穿透"
L["Armor Penetration Summary"] = "统计无视护甲穿透"
-- /rb sum physical weapondps -- /rb sum physical weapondps
--L["Sum Weapon DPS"] = "统计武器DPS" --L["Sum Weapon DPS"] = "统计武器DPS"
--L["Weapon DPS Summary"] = "武器DPS统计" --L["Weapon DPS Summary"] = "武器DPS统计"
@@ -370,6 +376,9 @@ L["Expertise <- Expertise Rating"] = "精准 ← 精准等级"
-- /rb sum physical exprating -- /rb sum physical exprating
L["Sum Expertise Rating"] = "统计精准等级" L["Sum Expertise Rating"] = "统计精准等级"
L["Expertise Rating Summary"] = "统计精准等级" L["Expertise Rating Summary"] = "统计精准等级"
-- /rb sum physical arprating
L["Sum Armor Penetration Rating"] = "统计无视护甲穿透等级"
L["Armor Penetration Rating Summary"] = "统计无视护甲穿透等级"
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum spell -- /rb sum spell
L["Stat - Spell"] = "属性 - 法术" L["Stat - Spell"] = "属性 - 法术"
@@ -425,22 +434,34 @@ L["Stat - Tank"] = "属性 - 抗打击"
L["Choose tank stats for summary"] = "选择你想要统计的抗打击能力的属性" L["Choose tank stats for summary"] = "选择你想要统计的抗打击能力的属性"
-- /rb sum tank armor -- /rb sum tank armor
L["Sum Armor"] = "统计护甲值" L["Sum Armor"] = "统计护甲值"
--L["Armor <- Armor from items and bonuses"] = "护甲值 ← 物品护甲、护甲加成、敏捷、智力" L["Armor <- Armor from items, Armor from bonuses, Agility, Intellect"] = "护甲值 ← 物品护甲、护甲加成、敏捷、智力"
-- /rb sum tank blockvalue
L["Sum Block Value"] = "统计格挡值"
L["Block Value <- Block Value, Strength"] = "格挡值 ← 格挡值、力量"
-- /rb sum tank dodge -- /rb sum tank dodge
L["Sum Dodge Chance"] = "统计躲闪几率" L["Sum Dodge Chance"] = "统计躲闪几率"
--L["Dodge Chance <- Dodge Rating, Agility"] = "躲闪几率 ← 躲闪等级、敏捷、防御等级" L["Dodge Chance <- Dodge Rating, Agility, Defense Rating"] = "躲闪几率 ← 躲闪等级、敏捷、防御等级"
-- /rb sum tank parry -- /rb sum tank parry
L["Sum Parry Chance"] = "统计招架几率" L["Sum Parry Chance"] = "统计招架几率"
--L["Parry Chance <- Parry Rating"] = "招架几率 ← 招架等级、防御等级" L["Parry Chance <- Parry Rating, Defense Rating"] = "招架几率 ← 招架等级、防御等级"
-- /rb sum tank block -- /rb sum tank block
L["Sum Block Chance"] = "统计格挡几率" L["Sum Block Chance"] = "统计格挡几率"
--L["Block Chance <- Block Rating"] = "格挡几率 ← 格挡等级、防御等级" L["Block Chance <- Block Rating, Defense Rating"] = "格挡几率 ← 格挡等级、防御等级"
-- /rb sum tank avoidhit
L["Sum Hit Avoidance"] = "统计物理命中躲闪"
L["Hit Avoidance <- Defense Rating"] = "物理命中躲闪 ← 防御等级"
-- /rb sum tank avoidcrit
L["Sum Crit Avoidance"] = "统计物理爆击躲闪"
L["Crit Avoidance <- Defense Rating, Resilience"] = "物理爆击躲闪 ← 防御等级、韧性"
-- /rb sum tank neglectdodge -- /rb sum tank neglectdodge
L["Sum Dodge Neglect"] = "统计防止被躲闪" L["Sum Dodge Neglect"] = "统计防止被躲闪"
--L["Dodge Neglect <- Expertise"] = "防止被躲闪 ← 精准等级、武器技能等级" L["Dodge Neglect <- Expertise, Weapon Skill Rating"] = "防止被躲闪 ← 精准等级、武器技能等级"
-- /rb sum tank neglectparry -- /rb sum tank neglectparry
L["Sum Parry Neglect"] = "统计防止被招架" L["Sum Parry Neglect"] = "统计防止被招架"
--L["Parry Neglect <- Expertise"] = "防止被招架 ← 精准等级、武器技能等级" L["Parry Neglect <- Expertise, Weapon Skill Rating"] = "防止被招架 ← 精准等级、武器技能等级"
-- /rb sum tank neglectblock
L["Sum Block Neglect"] = "统计防止被格挡"
L["Block Neglect <- Weapon Skill Rating"] = "防止被格挡 ← 武器技能等级"
-- /rb sum tank resarcane -- /rb sum tank resarcane
L["Sum Arcane Resistance"] = "统计奥术抗性" L["Sum Arcane Resistance"] = "统计奥术抗性"
L["Arcane Resistance Summary"] = "统计奥术抗性" L["Arcane Resistance Summary"] = "统计奥术抗性"
@@ -468,12 +489,15 @@ L["Block Rating Summary"] = "统计格挡等级"
-- /rb sum tank res -- /rb sum tank res
L["Sum Resilience"] = "统计韧性" L["Sum Resilience"] = "统计韧性"
L["Resilience Summary"] = "统计韧性等级" L["Resilience Summary"] = "统计韧性等级"
-- /rb sum tank def
L["Sum Defense"] = "统计防御"
L["Defense <- Defense Rating"] = "防御 ← 防御等级"
-- /rb sum tank tp -- /rb sum tank tp
L["Sum TankPoints"] = "统计抗打击能力" L["Sum TankPoints"] = "统计抗打击能力"
L["TankPoints <- Health, Total Reduction"] = "抗打击能力 ← 生命值, 所有伤害减免" L["TankPoints <- Health, Total Reduction"] = "抗打击能力 ← 生命值, 所有伤害减免"
-- /rb sum tank tr -- /rb sum tank tr
L["Sum Total Reduction"] = "统计伤害减免" L["Sum Total Reduction"] = "统计伤害减免"
--L["Total Reduction <- Armor, Dodge, Parry, Block, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "所有伤害减免 <- 护甲值, 躲闪, 招架, 格挡, 格挡值, 防御技能, 韧性, 怪物未击中几率, 怪物重击几率, 怪物碾压打击几率, 伤害减免" L["Total Reduction <- Armor, Dodge, Parry, Block, Block Value, Defense, Resilience, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "所有伤害减免 <- 护甲值, 躲闪, 招架, 格挡, 格挡值, 防御技能, 韧性, 怪物未击中几率, 怪物重击几率, 怪物碾压打击几率, 伤害减免"
-- /rb sum tank avoid -- /rb sum tank avoid
L["Sum Avoidance"] = "统计躲避" L["Sum Avoidance"] = "统计躲避"
L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "躲避 ← 躲闪, 招架, 怪物未命中, 格挡(可选)" L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "躲避 ← 躲闪, 招架, 怪物未命中, 格挡(可选)"
+42 -18
View File
@@ -1,6 +1,6 @@
--[[ --[[
Name: RatingBuster zhTW locale Name: RatingBuster zhTW locale
Revision: $Revision: 294 $ Revision: $Revision: 282 $
Translated by: Translated by:
- Whitetooth@Cenarius (hotdogee@bahamut.twbbs.org) - Whitetooth@Cenarius (hotdogee@bahamut.twbbs.org)
- CuteMiyu - CuteMiyu
@@ -73,6 +73,12 @@ L["Show Physical Hit/Haste from Hit/Haste Rating"] = "顯示命中/加速給的
-- /rb rating detail -- /rb rating detail
L["Show Detailed Conversions Text"] = "顯示詳細轉換文字" L["Show Detailed Conversions Text"] = "顯示詳細轉換文字"
L["Show detailed text for Resilience and Expertise conversions"] = "顯示韌性和熟練技能的詳細轉換文字" L["Show detailed text for Resilience and Expertise conversions"] = "顯示韌性和熟練技能的詳細轉換文字"
-- /rb rating def
L["Defense Breakdown"] = "分析防禦"
L["Convert Defense into Crit Avoidance, Hit Avoidance, Dodge, Parry and Block"] = "將防禦分為避免致命、避免命中、閃躲、招架和格擋"
-- /rb rating wpn
L["Weapon Skill Breakdown"] = "分析武器技能"
L["Convert Weapon Skill into Crit, Hit, Dodge Neglect, Parry Neglect and Block Neglect"] = "將武器技能分為致命、擊中、防止被閃躲、防止被招架和防止被格擋"
-- /rb rating exp -- /rb rating exp
L["Expertise Breakdown"] = "分析熟練技能" L["Expertise Breakdown"] = "分析熟練技能"
L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "將熟練技能分為防止被閃躲、防止被招架" L["Convert Expertise into Dodge Neglect and Parry Neglect"] = "將熟練技能分為防止被閃躲、防止被招架"
@@ -323,12 +329,6 @@ L["Intellect Summary"] = "統計智力"
-- /rb sum basic spi -- /rb sum basic spi
L["Sum Spirit"] = "統計精神" L["Sum Spirit"] = "統計精神"
L["Spirit Summary"] = "統計精神" L["Spirit Summary"] = "統計精神"
-- /rb sum basic mastery
L["Sum Mastery"] = "統計精通"
L["Mastery Summary"] = "統計精通"
-- /rb sum basic masteryrating
L["Sum Mastery Rating"] = "統計精通等級"
L["Mastery Rating Summary"] = "統計精通等級"
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum physical -- /rb sum physical
L["Stat - Physical"] = "統計物理屬性" L["Stat - Physical"] = "統計物理屬性"
@@ -344,13 +344,13 @@ L["Sum Feral Attack Power"] = "統計野性攻擊強度"
L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "野性攻擊強度 ← 野性攻擊強度、攻擊強度、力量、敏捷" L["Feral Attack Power <- Feral Attack Power, Attack Power, Strength, Agility"] = "野性攻擊強度 ← 野性攻擊強度、攻擊強度、力量、敏捷"
-- /rb sum physical hit -- /rb sum physical hit
L["Sum Hit Chance"] = "統計命中機率" L["Sum Hit Chance"] = "統計命中機率"
--L["Hit Chance <- Hit Rating"] = "命中機率 ← 命中等級、武器技能等級" L["Hit Chance <- Hit Rating, Weapon Skill Rating"] = "命中機率 ← 命中等級、武器技能等級"
-- /rb sum physical hitrating -- /rb sum physical hitrating
L["Sum Hit Rating"] = "統計命中等級" L["Sum Hit Rating"] = "統計命中等級"
L["Hit Rating Summary"] = "統計命中等級" L["Hit Rating Summary"] = "統計命中等級"
-- /rb sum physical crit -- /rb sum physical crit
L["Sum Crit Chance"] = "統計致命一擊機率" L["Sum Crit Chance"] = "統計致命一擊機率"
--L["Crit Chance <- Crit Rating, Agility"] = "致命一擊機率 ← 致命一擊等級、敏捷、武器技能等級" L["Crit Chance <- Crit Rating, Agility, Weapon Skill Rating"] = "致命一擊機率 ← 致命一擊等級、敏捷、武器技能等級"
-- /rb sum physical critrating -- /rb sum physical critrating
L["Sum Crit Rating"] = "統計致命等級" L["Sum Crit Rating"] = "統計致命等級"
L["Crit Rating Summary"] = "統計致命等級" L["Crit Rating Summary"] = "統計致命等級"
@@ -362,13 +362,13 @@ L["Sum Haste Rating"] = "統計加速等級"
L["Haste Rating Summary"] = "統計加速等級" L["Haste Rating Summary"] = "統計加速等級"
-- /rb sum physical rangedhit -- /rb sum physical rangedhit
L["Sum Ranged Hit Chance"] = "統計遠程命中機率" L["Sum Ranged Hit Chance"] = "統計遠程命中機率"
--L["Ranged Hit Chance <- Hit Rating, Ranged Hit Rating"] = "遠程命中機率 ← 命中等級、武器技能等級、遠程命中等級" L["Ranged Hit Chance <- Hit Rating, Weapon Skill Rating, Ranged Hit Rating"] = "遠程命中機率 ← 命中等級、武器技能等級、遠程命中等級"
-- /rb sum physical rangedhitrating -- /rb sum physical rangedhitrating
L["Sum Ranged Hit Rating"] = "統計遠程命中等級" L["Sum Ranged Hit Rating"] = "統計遠程命中等級"
L["Ranged Hit Rating Summary"] = "統計遠程命中等級" L["Ranged Hit Rating Summary"] = "統計遠程命中等級"
-- /rb sum physical rangedcrit -- /rb sum physical rangedcrit
L["Sum Ranged Crit Chance"] = "統計遠程致命一級機率" L["Sum Ranged Crit Chance"] = "統計遠程致命一級機率"
--L["Ranged Crit Chance <- Crit Rating, Agility, Ranged Crit Rating"] = "遠程致命一擊機率 ← 致命一擊等級、敏捷、武器技能等級、遠程致命一級等級" L["Ranged Crit Chance <- Crit Rating, Agility, Weapon Skill Rating, Ranged Crit Rating"] = "遠程致命一擊機率 ← 致命一擊等級、敏捷、武器技能等級、遠程致命一級等級"
-- /rb sum physical rangedcritrating -- /rb sum physical rangedcritrating
L["Sum Ranged Crit Rating"] = "統計遠程致命一級等級" L["Sum Ranged Crit Rating"] = "統計遠程致命一級等級"
L["Ranged Crit Rating Summary"] = "統計遠程致命一級等級" L["Ranged Crit Rating Summary"] = "統計遠程致命一級等級"
@@ -381,6 +381,12 @@ L["Ranged Haste Rating Summary"] = "統計遠程加速等級"
-- /rb sum physical maxdamage -- /rb sum physical maxdamage
L["Sum Weapon Max Damage"] = "統計武器最大傷害" L["Sum Weapon Max Damage"] = "統計武器最大傷害"
L["Weapon Max Damage Summary"] = "統計武器最大傷害" L["Weapon Max Damage Summary"] = "統計武器最大傷害"
-- /rb sum physical ignorearmor
L["Sum Ignore Armor"] = "統計無視護甲"
L["Ignore Armor Summary"] = "統計無視護甲"
-- /rb sum physical arp
L["Sum Armor Penetration"] = "統計護甲穿透"
L["Armor Penetration Summary"] = "統計無視護甲穿透"
-- /rb sum physical weapondps -- /rb sum physical weapondps
--L["Sum Weapon DPS"] = true --L["Sum Weapon DPS"] = true
--L["Weapon DPS Summary"] = true --L["Weapon DPS Summary"] = true
@@ -393,6 +399,9 @@ L["Expertise <- Expertise Rating"] = "熟練技能 ← 熟練等級"
-- /rb sum physical exprating -- /rb sum physical exprating
L["Sum Expertise Rating"] = "統計熟練等級" L["Sum Expertise Rating"] = "統計熟練等級"
L["Expertise Rating Summary"] = "統計熟練等級" L["Expertise Rating Summary"] = "統計熟練等級"
-- /rb sum physical arprating
L["Sum Armor Penetration Rating"] = "統計無視護甲穿透等級"
L["Armor Penetration Rating Summary"] = "統計無視護甲穿透等級"
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
-- /rb sum spell -- /rb sum spell
L["Stat - Spell"] = "統計魔法屬性" L["Stat - Spell"] = "統計魔法屬性"
@@ -448,22 +457,34 @@ L["Stat - Tank"] = "統計坦克屬性"
L["Choose tank stats for summary"] = "自訂坦克屬性統計項目" L["Choose tank stats for summary"] = "自訂坦克屬性統計項目"
-- /rb sum tank armor -- /rb sum tank armor
L["Sum Armor"] = "統計護甲值" L["Sum Armor"] = "統計護甲值"
--L["Armor <- Armor from items and bonuses"] = "護甲值 ← 物品護甲、護甲加成、敏捷、智力" L["Armor <- Armor from items, Armor from bonuses, Agility, Intellect"] = "護甲值 ← 物品護甲、護甲加成、敏捷、智力"
-- /rb sum tank blockvalue
L["Sum Block Value"] = "統計格擋值"
L["Block Value <- Block Value, Strength"] = "格擋值 ← 格擋值、力量"
-- /rb sum tank dodge -- /rb sum tank dodge
L["Sum Dodge Chance"] = "統計閃躲機率" L["Sum Dodge Chance"] = "統計閃躲機率"
--L["Dodge Chance <- Dodge Rating, Agility"] = "閃躲機率 ← 閃躲等級、敏捷、防禦等級" L["Dodge Chance <- Dodge Rating, Agility, Defense Rating"] = "閃躲機率 ← 閃躲等級、敏捷、防禦等級"
-- /rb sum tank parry -- /rb sum tank parry
L["Sum Parry Chance"] = "統計招架機率" L["Sum Parry Chance"] = "統計招架機率"
--L["Parry Chance <- Parry Rating"] = "招架機率 ← 招架等級、防禦等級" L["Parry Chance <- Parry Rating, Defense Rating"] = "招架機率 ← 招架等級、防禦等級"
-- /rb sum tank block -- /rb sum tank block
L["Sum Block Chance"] = "統計格擋機率" L["Sum Block Chance"] = "統計格擋機率"
--L["Block Chance <- Block Rating"] = "格擋機率 ← 格擋等級、防禦等級" L["Block Chance <- Block Rating, Defense Rating"] = "格擋機率 ← 格擋等級、防禦等級"
-- /rb sum tank avoidhit
L["Sum Hit Avoidance"] = "統計迴避命中"
L["Hit Avoidance <- Defense Rating"] = "迴避命中 ← 防禦等級"
-- /rb sum tank avoidcrit
L["Sum Crit Avoidance"] = "統計迴避致命一擊"
L["Crit Avoidance <- Defense Rating, Resilience"] = "迴避致命一擊 ← 防禦等級、韌性"
-- /rb sum tank neglectdodge -- /rb sum tank neglectdodge
L["Sum Dodge Neglect"] = "統計防止被閃躲" L["Sum Dodge Neglect"] = "統計防止被閃躲"
--L["Dodge Neglect <- Expertise"] = "防止被閃躲 ← 熟練技能、武器技能等級" L["Dodge Neglect <- Expertise, Weapon Skill Rating"] = "防止被閃躲 ← 熟練技能、武器技能等級"
-- /rb sum stat neglectparry -- /rb sum stat neglectparry
L["Sum Parry Neglect"] = "統計防止被招架" L["Sum Parry Neglect"] = "統計防止被招架"
--L["Parry Neglect <- Expertise"] = "防止被招架 ← 熟練技能、武器技能等級" L["Parry Neglect <- Expertise, Weapon Skill Rating"] = "防止被招架 ← 熟練技能、武器技能等級"
-- /rb sum tank neglectblock
L["Sum Block Neglect"] = "統計防止被格擋"
L["Block Neglect <- Weapon Skill Rating"] = "防止被格擋 ← 武器技能等級"
-- /rb sum tank resarcane -- /rb sum tank resarcane
L["Sum Arcane Resistance"] = "統計秘法抗性" L["Sum Arcane Resistance"] = "統計秘法抗性"
L["Arcane Resistance Summary"] = "統計秘法抗性" L["Arcane Resistance Summary"] = "統計秘法抗性"
@@ -491,12 +512,15 @@ L["Block Rating Summary"] = "統計格檔等級"
-- /rb sum tank res -- /rb sum tank res
L["Sum Resilience"] = "統計韌性" L["Sum Resilience"] = "統計韌性"
L["Resilience Summary"] = "統計韌性" L["Resilience Summary"] = "統計韌性"
-- /rb sum tank def
L["Sum Defense"] = "統計防禦"
L["Defense <- Defense Rating"] = "防禦 ← 防禦等級"
-- /rb sum tank tp -- /rb sum tank tp
L["Sum TankPoints"] = "統計坦克點" L["Sum TankPoints"] = "統計坦克點"
L["TankPoints <- Health, Total Reduction"] = "坦克點 ← 生命力、傷害減免總值" L["TankPoints <- Health, Total Reduction"] = "坦克點 ← 生命力、傷害減免總值"
-- /rb sum tank tr -- /rb sum tank tr
L["Sum Total Reduction"] = "統計傷害減免總值" L["Sum Total Reduction"] = "統計傷害減免總值"
--L["Total Reduction <- Armor, Dodge, Parry, Block, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "傷害減免總值 ← 護甲、閃躲、招架、格擋、格檔值、防禦、韌性、怪物未擊中、怪物致命、怪物輾壓、DamageTakenMods (?)" L["Total Reduction <- Armor, Dodge, Parry, Block, Block Value, Defense, Resilience, MobMiss, MobCrit, MobCrush, DamageTakenMods"] = "傷害減免總值 ← 護甲、閃躲、招架、格擋、格檔值、防禦、韌性、怪物未擊中、怪物致命、怪物輾壓、DamageTakenMods (?)"
-- /rb sum tank avoid -- /rb sum tank avoid
L["Sum Avoidance"] = "統計傷害迴避" L["Sum Avoidance"] = "統計傷害迴避"
L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "傷害迴避 ← 閃躲、招架、怪物未擊中、格擋(選項)" L["Avoidance <- Dodge, Parry, MobMiss, Block(Optional)"] = "傷害迴避 ← 閃躲、招架、怪物未擊中、格擋(選項)"
File diff suppressed because it is too large Load Diff
+5 -4
View File
@@ -1,18 +1,19 @@
## Interface: 30300 ## Interface: 30301
## Title: RatingBuster ## Title: RatingBuster
## Notes: Item stat breakdown, analysis and comparison ## Notes: Item stat breakdown, analysis and comparison
## Notes-zhTW: 裝備數值解析與比較 ## Notes-zhTW: 裝備數值解析與比較
## Author: Whitetooth ## Author: Whitetooth
## Modder: Aramis/Fujoshi
## X-eMail: hotdogee [at] gmail [dot] com ## X-eMail: hotdogee [at] gmail [dot] com
## SavedVariables: RatingBusterDB ## SavedVariables: RatingBusterDB
## OptionalDeps: Ace3, LibTipHooker-1.1, LibStatLogic-1.2, UTF8, LibBabble-Inventory-3.0, LibDualSpec-1.0, TankPoints ## OptionalDeps: Ace3, LibTipHooker-1.1, LibStatLogic-1.1, UTF8, LibBabble-Inventory-3.0, LibDualSpec-1.0, TankPoints
## X-Embeds: Ace3, LibTipHooker-1.1, LibStatLogic-1.2, UTF8, LibBabble-Inventory-3.0, LibDualSpec-1.0 ## X-Embeds: Ace3, LibTipHooker-1.1, LibStatLogic-1.1, UTF8, LibBabble-Inventory-3.0, LibDualSpec-1.0
## X-Category: Interface Enhancements ## X-Category: Interface Enhancements
## X-RelSite-WoWI: 5819 ## X-RelSite-WoWI: 5819
## X-RelSite-Curse: 4991 ## X-RelSite-Curse: 4991
## X-License: GPL v2 ## X-License: GPL v2
## X-Encoding: UTF-8 ## X-Encoding: UTF-8
## X-Curse-Packaged-Version: r295 ## X-Curse-Packaged-Version: r284
## X-Curse-Project-Name: RatingBuster ## X-Curse-Project-Name: RatingBuster
## X-Curse-Project-ID: rating-buster ## X-Curse-Project-ID: rating-buster
## X-Curse-Repository-ID: wow/rating-buster/mainline ## X-Curse-Repository-ID: wow/rating-buster/mainline
+1 -1
View File
@@ -2,7 +2,7 @@
..\FrameXML\UI.xsd"> ..\FrameXML\UI.xsd">
<Script file="libs\LibStub\LibStub.lua"/> <Script file="libs\LibStub\LibStub.lua"/>
<Include file="libs\LibStatLogic-1.2\lib.xml"/> <Include file="libs\LibStatLogic-1.1\lib.xml"/>
<Include file="libs\LibTipHooker-1.1\lib.xml"/> <Include file="libs\LibTipHooker-1.1\lib.xml"/>
<Include file="libs\LibBabble-Inventory-3.0\lib.xml"/> <Include file="libs\LibBabble-Inventory-3.0\lib.xml"/>
<Include file="Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml" /> <Include file="Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml" />
@@ -3,7 +3,7 @@
-- as well as associate it with a slash command. -- as well as associate it with a slash command.
-- @class file -- @class file
-- @name AceConfig-3.0 -- @name AceConfig-3.0
-- @release $Id: AceConfig-3.0.lua 969 2010-10-07 02:11:48Z shefki $ -- @release $Id: AceConfig-3.0.lua 877 2009-11-02 15:56:50Z nevcairiel $
--[[ --[[
AceConfig-3.0 AceConfig-3.0
@@ -19,8 +19,8 @@ if not AceConfig then return end
local cfgreg = LibStub("AceConfigRegistry-3.0") local cfgreg = LibStub("AceConfigRegistry-3.0")
local cfgcmd = LibStub("AceConfigCmd-3.0") local cfgcmd = LibStub("AceConfigCmd-3.0")
--TODO: local cfgdlg = LibStub("AceConfigDialog-3.0", true) local cfgdlg = LibStub("AceConfigDialog-3.0")
--TODO: local cfgdrp = LibStub("AceConfigDropdown-3.0", true) --TODO: local cfgdrp = LibStub("AceConfigDropdown-3.0")
-- Lua APIs -- Lua APIs
local pcall, error, type, pairs = pcall, error, type, pairs local pcall, error, type, pairs = pcall, error, type, pairs
@@ -36,7 +36,7 @@ local pcall, error, type, pairs = pcall, error, type, pairs
-- You can supply a slash command (or a table of slash commands) to register with AceConfigCmd directly. -- You can supply a slash command (or a table of slash commands) to register with AceConfigCmd directly.
-- @paramsig appName, options [, slashcmd] -- @paramsig appName, options [, slashcmd]
-- @param appName The application name for the config table. -- @param appName The application name for the config table.
-- @param options The option table (or a function to generate one on demand). http://www.wowace.com/addons/ace3/pages/ace-config-3-0-options-tables/ -- @param options The option table (or a function to generate one on demand)
-- @param slashcmd A slash command to register for the option table, or a table of slash commands. -- @param slashcmd A slash command to register for the option table, or a table of slash commands.
-- @usage -- @usage
-- local AceConfig = LibStub("AceConfig-3.0") -- local AceConfig = LibStub("AceConfig-3.0")
@@ -1,10 +1,10 @@
--- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. --- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables.
-- @class file -- @class file
-- @name AceConfigDialog-3.0 -- @name AceConfigDialog-3.0
-- @release $Id: AceConfigDialog-3.0.lua 967 2010-09-25 08:20:55Z nevcairiel $ -- @release $Id: AceConfigDialog-3.0.lua 913 2010-02-13 12:16:13Z nevcairiel $
local LibStub = LibStub local LibStub = LibStub
local MAJOR, MINOR = "AceConfigDialog-3.0", 50 local MAJOR, MINOR = "AceConfigDialog-3.0", 45
local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
if not AceConfigDialog then return end if not AceConfigDialog then return end
@@ -15,7 +15,6 @@ AceConfigDialog.frame = AceConfigDialog.frame or CreateFrame("Frame")
AceConfigDialog.frame.apps = AceConfigDialog.frame.apps or {} AceConfigDialog.frame.apps = AceConfigDialog.frame.apps or {}
AceConfigDialog.frame.closing = AceConfigDialog.frame.closing or {} AceConfigDialog.frame.closing = AceConfigDialog.frame.closing or {}
AceConfigDialog.frame.closeAllOverride = AceConfigDialog.frame.closeAllOverride or {}
local gui = LibStub("AceGUI-3.0") local gui = LibStub("AceGUI-3.0")
local reg = LibStub("AceConfigRegistry-3.0") local reg = LibStub("AceConfigRegistry-3.0")
@@ -24,8 +23,8 @@ local reg = LibStub("AceConfigRegistry-3.0")
local tconcat, tinsert, tsort, tremove = table.concat, table.insert, table.sort, table.remove local tconcat, tinsert, tsort, tremove = table.concat, table.insert, table.sort, table.remove
local strmatch, format = string.match, string.format local strmatch, format = string.match, string.format
local assert, loadstring, error = assert, loadstring, error local assert, loadstring, error = assert, loadstring, error
local pairs, next, select, type, unpack, wipe = pairs, next, select, type, unpack, wipe local pairs, next, select, type, unpack = pairs, next, select, type, unpack
local rawset, tostring, tonumber = rawset, tostring, tonumber local rawset, tostring = rawset, tostring
local math_min, math_max, math_floor = math.min, math.max, math.floor local math_min, math_max, math_floor = math.min, math.max, math.floor
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded -- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
@@ -77,7 +76,7 @@ Dispatchers[0] = function(func)
end end
local function safecall(func, ...) local function safecall(func, ...)
return Dispatchers[select("#", ...)](func, ...) return Dispatchers[select('#', ...)](func, ...)
end end
local width_multiplier = 170 local width_multiplier = 170
@@ -104,7 +103,7 @@ Group Types
local new, del, copy local new, del, copy
--newcount, delcount,createdcount,cached = 0,0,0 --newcount, delcount,createdcount,cached = 0,0,0
do do
local pool = setmetatable({},{__mode="k"}) local pool = setmetatable({},{__mode='k'})
function new() function new()
--newcount = newcount + 1 --newcount = newcount + 1
local t = next(pool) local t = next(pool)
@@ -241,7 +240,7 @@ local function GetOptionsMemberValue(membername, option, options, path, appName,
info.handler = handler info.handler = handler
info.option = option info.option = option
info.type = option.type info.type = option.type
info.uiType = "dialog" info.uiType = 'dialog'
info.uiName = MAJOR info.uiName = MAJOR
local a, b, c ,d local a, b, c ,d
@@ -322,8 +321,8 @@ local function compareOptions(a,b)
end end
local OrderA, OrderB = tempOrders[a] or 100, tempOrders[b] or 100 local OrderA, OrderB = tempOrders[a] or 100, tempOrders[b] or 100
if OrderA == OrderB then if OrderA == OrderB then
local NameA = (type(tempNames[a]) == "string") and tempNames[a] or "" local NameA = (type(tempNames[a] == "string") and tempNames[a]) or ""
local NameB = (type(tempNames[b]) == "string") and tempNames[b] or "" local NameB = (type(tempNames[b] == "string") and tempNames[b]) or ""
return NameA:upper() < NameB:upper() return NameA:upper() < NameB:upper()
end end
if OrderA < 0 then if OrderA < 0 then
@@ -479,7 +478,7 @@ function AceConfigDialog:SelectGroup(appName, ...)
local treevalue local treevalue
local treestatus local treestatus
for n = 1, select("#",...) do for n = 1, select('#',...) do
local key = select(n, ...) local key = select(n, ...)
if group.childGroups == "tab" or group.childGroups == "select" then if group.childGroups == "tab" or group.childGroups == "select" then
@@ -543,7 +542,7 @@ local function OptionOnMouseOver(widget, event)
GameTooltip:SetText(name, 1, .82, 0, 1) GameTooltip:SetText(name, 1, .82, 0, 1)
if opt.type == "multiselect" then if opt.type == 'multiselect' then
GameTooltip:AddLine(user.text,0.5, 0.5, 0.8, 1) GameTooltip:AddLine(user.text,0.5, 0.5, 0.8, 1)
end end
if type(desc) == "string" then if type(desc) == "string" then
@@ -562,10 +561,10 @@ end
local function GetFuncName(option) local function GetFuncName(option)
local type = option.type local type = option.type
if type == "execute" then if type == 'execute' then
return "func" return 'func'
else else
return "set" return 'set'
end end
end end
local function confirmPopup(appName, rootframe, basepath, info, message, func, ...) local function confirmPopup(appName, rootframe, basepath, info, message, func, ...)
@@ -595,7 +594,7 @@ local function confirmPopup(appName, rootframe, basepath, info, message, func, .
AceConfigDialog:Open(appName, rootframe, unpack(basepath or emptyTbl)) AceConfigDialog:Open(appName, rootframe, unpack(basepath or emptyTbl))
del(info) del(info)
end end
for i = 1, select("#", ...) do for i = 1, select('#', ...) do
t[i] = select(i, ...) or false t[i] = select(i, ...) or false
end end
t.timeout = 0 t.timeout = 0
@@ -654,7 +653,7 @@ local function ActivateControl(widget, event, ...)
info.handler = handler info.handler = handler
info.option = option info.option = option
info.type = option.type info.type = option.type
info.uiType = "dialog" info.uiType = 'dialog'
info.uiName = MAJOR info.uiName = MAJOR
local name local name
@@ -765,13 +764,13 @@ local function ActivateControl(widget, event, ...)
end end
end end
local iscustom = user.rootframe:GetUserData("iscustom") local iscustom = user.rootframe:GetUserData('iscustom')
local rootframe local rootframe
if iscustom then if iscustom then
rootframe = user.rootframe rootframe = user.rootframe
end end
local basepath = user.rootframe:GetUserData("basepath") local basepath = user.rootframe:GetUserData('basepath')
if type(func) == "string" then if type(func) == "string" then
if handler and handler[func] then if handler and handler[func] then
confirmPopup(user.appName, rootframe, basepath, info, confirmText, handler[func], handler, info, ...) confirmPopup(user.appName, rootframe, basepath, info, confirmText, handler[func], handler, info, ...)
@@ -799,8 +798,8 @@ local function ActivateControl(widget, event, ...)
local iscustom = user.rootframe:GetUserData("iscustom") local iscustom = user.rootframe:GetUserData('iscustom')
local basepath = user.rootframe:GetUserData("basepath") or emptyTbl local basepath = user.rootframe:GetUserData('basepath') or emptyTbl
--full refresh of the frame, some controls dont cause this on all events --full refresh of the frame, some controls dont cause this on all events
if option.type == "color" then if option.type == "color" then
if event == "OnValueConfirmed" then if event == "OnValueConfirmed" then
@@ -835,27 +834,22 @@ local function ActivateControl(widget, event, ...)
end end
local function ActivateSlider(widget, event, value) local function ActivateSlider(widget, event, value)
local option = widget:GetUserData("option") local option = widget:GetUserData('option')
local min, max, step = option.min or (not option.softMin and 0 or nil), option.max or (not option.softMax and 100 or nil), option.step local min, max, step = option.min or 0, option.max or 100, option.step
if min then if step then
if step then value = math_floor((value - min) / step + 0.5) * step + min
value = math_floor((value - min) / step + 0.5) * step + min
end
value = math_max(value, min)
end
if max then
value = math_min(value, max)
end end
value = math_max(math_min(value,max),min)
ActivateControl(widget,event,value) ActivateControl(widget,event,value)
end end
--called from a checkbox that is part of an internally created multiselect group --called from a checkbox that is part of an internally created multiselect group
--this type is safe to refresh on activation of one control --this type is safe to refresh on activation of one control
local function ActivateMultiControl(widget, event, ...) local function ActivateMultiControl(widget, event, ...)
ActivateControl(widget, event, widget:GetUserData("value"), ...) ActivateControl(widget, event, widget:GetUserData('value'), ...)
local user = widget:GetUserDataTable() local user = widget:GetUserDataTable()
local iscustom = user.rootframe:GetUserData("iscustom") local iscustom = user.rootframe:GetUserData('iscustom')
local basepath = user.rootframe:GetUserData("basepath") or emptyTbl local basepath = user.rootframe:GetUserData('basepath') or emptyTbl
if iscustom then if iscustom then
AceConfigDialog:Open(user.appName, user.rootframe, unpack(basepath)) AceConfigDialog:Open(user.appName, user.rootframe, unpack(basepath))
else else
@@ -866,8 +860,8 @@ end
local function MultiControlOnClosed(widget, event, ...) local function MultiControlOnClosed(widget, event, ...)
local user = widget:GetUserDataTable() local user = widget:GetUserDataTable()
if user.valuechanged then if user.valuechanged then
local iscustom = user.rootframe:GetUserData("iscustom") local iscustom = user.rootframe:GetUserData('iscustom')
local basepath = user.rootframe:GetUserData("basepath") or emptyTbl local basepath = user.rootframe:GetUserData('basepath') or emptyTbl
if iscustom then if iscustom then
AceConfigDialog:Open(user.appName, user.rootframe, unpack(basepath)) AceConfigDialog:Open(user.appName, user.rootframe, unpack(basepath))
else else
@@ -877,7 +871,7 @@ local function MultiControlOnClosed(widget, event, ...)
end end
local function FrameOnClose(widget, event) local function FrameOnClose(widget, event)
local appName = widget:GetUserData("appName") local appName = widget:GetUserData('appName')
AceConfigDialog.OpenFrames[appName] = nil AceConfigDialog.OpenFrames[appName] = nil
gui:Release(widget) gui:Release(widget)
end end
@@ -1088,7 +1082,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName)
local image, width, height = GetOptionsMemberValue("image",v, options, path, appName) local image, width, height = GetOptionsMemberValue("image",v, options, path, appName)
if type(image) == "string" then if type(image) == 'string' then
control = gui:Create("Icon") control = gui:Create("Icon")
if not width then if not width then
width = GetOptionsMemberValue("imageWidth",v, options, path, appName) width = GetOptionsMemberValue("imageWidth",v, options, path, appName)
@@ -1096,7 +1090,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
if not height then if not height then
height = GetOptionsMemberValue("imageHeight",v, options, path, appName) height = GetOptionsMemberValue("imageHeight",v, options, path, appName)
end end
if type(imageCoords) == "table" then if type(imageCoords) == 'table' then
control:SetImage(image, unpack(imageCoords)) control:SetImage(image, unpack(imageCoords))
else else
control:SetImage(image) control:SetImage(image)
@@ -1123,8 +1117,12 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
control = gui:Create(v.multiline and "MultiLineEditBox" or "EditBox") control = gui:Create(v.multiline and "MultiLineEditBox" or "EditBox")
end end
if v.multiline and control.SetNumLines then if v.multiline then
control:SetNumLines(tonumber(v.multiline) or 4) local lines = 4
if type(v.multiline) == "number" then
lines = v.multiline
end
control:SetHeight(60 + (14*lines))
end end
control:SetLabel(name) control:SetLabel(name)
control:SetCallback("OnEnterPressed",ActivateControl) control:SetCallback("OnEnterPressed",ActivateControl)
@@ -1150,8 +1148,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
local image = GetOptionsMemberValue("image", v, options, path, appName) local image = GetOptionsMemberValue("image", v, options, path, appName)
local imageCoords = GetOptionsMemberValue("imageCoords", v, options, path, appName) local imageCoords = GetOptionsMemberValue("imageCoords", v, options, path, appName)
if type(image) == "string" then if type(image) == 'string' then
if type(imageCoords) == "table" then if type(imageCoords) == 'table' then
control:SetImage(image, unpack(imageCoords)) control:SetImage(image, unpack(imageCoords))
else else
control:SetImage(image) control:SetImage(image)
@@ -1160,7 +1158,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
elseif v.type == "range" then elseif v.type == "range" then
control = gui:Create("Slider") control = gui:Create("Slider")
control:SetLabel(name) control:SetLabel(name)
control:SetSliderValues(v.softMin or v.min or 0, v.softMax or v.max or 100, v.bigStep or v.step or 0) control:SetSliderValues(v.min or 0,v.max or 100, v.bigStep or v.step or 0)
control:SetIsPercent(v.isPercent) control:SetIsPercent(v.isPercent)
local value = GetOptionsMemberValue("get",v, options, path, appName) local value = GetOptionsMemberValue("get",v, options, path, appName)
if type(value) ~= "number" then if type(value) ~= "number" then
@@ -1243,8 +1241,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
local text = values[value] local text = values[value]
local check = gui:Create("CheckBox") local check = gui:Create("CheckBox")
check:SetLabel(text) check:SetLabel(text)
check:SetUserData("value", value) check:SetUserData('value', value)
check:SetUserData("text", text) check:SetUserData('text', text)
check:SetDisabled(disabled) check:SetDisabled(disabled)
check:SetTriState(v.tristate) check:SetTriState(v.tristate)
check:SetValue(GetOptionsMemberValue("get",v, options, path, appName, value)) check:SetValue(GetOptionsMemberValue("get",v, options, path, appName, value))
@@ -1304,14 +1302,14 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName)
local image, width, height = GetOptionsMemberValue("image",v, options, path, appName) local image, width, height = GetOptionsMemberValue("image",v, options, path, appName)
if type(image) == "string" then if type(image) == 'string' then
if not width then if not width then
width = GetOptionsMemberValue("imageWidth",v, options, path, appName) width = GetOptionsMemberValue("imageWidth",v, options, path, appName)
end end
if not height then if not height then
height = GetOptionsMemberValue("imageHeight",v, options, path, appName) height = GetOptionsMemberValue("imageHeight",v, options, path, appName)
end end
if type(imageCoords) == "table" then if type(imageCoords) == 'table' then
control:SetImage(image, unpack(imageCoords)) control:SetImage(image, unpack(imageCoords))
else else
control:SetImage(image) control:SetImage(image)
@@ -1362,7 +1360,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin
end end
local function BuildPath(path, ...) local function BuildPath(path, ...)
for i = 1, select("#",...) do for i = 1, select('#',...) do
tinsert(path, (select(i,...))) tinsert(path, (select(i,...)))
end end
end end
@@ -1490,13 +1488,17 @@ function AceConfigDialog:FeedGroup(appName,options,container,rootframe,path, isR
local grouptype, parenttype = options.childGroups, "none" local grouptype, parenttype = options.childGroups, "none"
--temp path table to pass to callbacks as we traverse the tree
local temppath = new()
for i = 1, #path do for i = 1, #path do
local v = path[i] local v = path[i]
temppath[i] = v
group = GetSubOption(group, v) group = GetSubOption(group, v)
inline = inline or pickfirstset(v.dialogInline,v.guiInline,v.inline, false) inline = inline or pickfirstset(v.dialogInline,v.guiInline,v.inline, false)
parenttype = grouptype parenttype = grouptype
grouptype = group.childGroups grouptype = group.childGroups
end end
del(temppath)
if not parenttype then if not parenttype then
parenttype = "tree" parenttype = "tree"
@@ -1665,12 +1667,9 @@ local function RefreshOnUpdate(this)
if this.closeAll then if this.closeAll then
for k, v in pairs(AceConfigDialog.OpenFrames) do for k, v in pairs(AceConfigDialog.OpenFrames) do
if not this.closeAllOverride[k] then v:Hide()
v:Hide()
end
end end
this.closeAll = nil this.closeAll = nil
wipe(this.closeAllOverride)
end end
for appName in pairs(this.apps) do for appName in pairs(this.apps) do
@@ -1682,7 +1681,7 @@ local function RefreshOnUpdate(this)
for key, widget in pairs(AceConfigDialog.BlizOptions[appName]) do for key, widget in pairs(AceConfigDialog.BlizOptions[appName]) do
local user = widget:GetUserDataTable() local user = widget:GetUserDataTable()
if widget:IsVisible() then if widget:IsVisible() then
AceConfigDialog:Open(widget:GetUserData("appName"), widget, unpack(user.basepath or emptyTbl)) AceConfigDialog:Open(widget:GetUserData('appName'), widget, unpack(user.basepath or emptyTbl))
end end
end end
end end
@@ -1767,7 +1766,7 @@ function AceConfigDialog:Open(appName, container, ...)
tinsert(path, container) tinsert(path, container)
container = nil container = nil
end end
for n = 1, select("#",...) do for n = 1, select('#',...) do
tinsert(path, (select(n, ...))) tinsert(path, (select(n, ...)))
end end
@@ -1775,10 +1774,10 @@ function AceConfigDialog:Open(appName, container, ...)
if container then if container then
f = container f = container
f:ReleaseChildren() f:ReleaseChildren()
f:SetUserData("appName", appName) f:SetUserData('appName', appName)
f:SetUserData("iscustom", true) f:SetUserData('iscustom', true)
if #path > 0 then if #path > 0 then
f:SetUserData("basepath", copy(path)) f:SetUserData('basepath', copy(path))
end end
local status = AceConfigDialog:GetStatusTable(appName) local status = AceConfigDialog:GetStatusTable(appName)
if not status.width then if not status.width then
@@ -1802,9 +1801,9 @@ function AceConfigDialog:Open(appName, container, ...)
end end
f:ReleaseChildren() f:ReleaseChildren()
f:SetCallback("OnClose", FrameOnClose) f:SetCallback("OnClose", FrameOnClose)
f:SetUserData("appName", appName) f:SetUserData('appName', appName)
if #path > 0 then if #path > 0 then
f:SetUserData("basepath", copy(path)) f:SetUserData('basepath', copy(path))
end end
f:SetTitle(name or "") f:SetTitle(name or "")
local status = AceConfigDialog:GetStatusTable(appName) local status = AceConfigDialog:GetStatusTable(appName)
@@ -1816,11 +1815,6 @@ function AceConfigDialog:Open(appName, container, ...)
f:Show() f:Show()
end end
del(path) del(path)
if AceConfigDialog.frame.closeAll then
-- close all is set, but thats not good, since we're just opening here, so force it
AceConfigDialog.frame.closeAllOverride[appName] = true
end
end end
-- convert pre-39 BlizOptions structure to the new format -- convert pre-39 BlizOptions structure to the new format
@@ -1828,7 +1822,7 @@ if oldminor and oldminor < 39 and AceConfigDialog.BlizOptions then
local old = AceConfigDialog.BlizOptions local old = AceConfigDialog.BlizOptions
local new = {} local new = {}
for key, widget in pairs(old) do for key, widget in pairs(old) do
local appName = widget:GetUserData("appName") local appName = widget:GetUserData('appName')
if not new[appName] then new[appName] = {} end if not new[appName] then new[appName] = {} end
new[appName][key] = widget new[appName][key] = widget
end end
@@ -1838,12 +1832,12 @@ else
end end
local function FeedToBlizPanel(widget, event) local function FeedToBlizPanel(widget, event)
local path = widget:GetUserData("path") local path = widget:GetUserData('path')
AceConfigDialog:Open(widget:GetUserData("appName"), widget, unpack(path or emptyTbl)) AceConfigDialog:Open(widget:GetUserData('appName'), widget, unpack(path or emptyTbl))
end end
local function ClearBlizPanel(widget, event) local function ClearBlizPanel(widget, event)
local appName = widget:GetUserData("appName") local appName = widget:GetUserData('appName')
AceConfigDialog.frame.closing[appName] = true AceConfigDialog.frame.closing[appName] = true
AceConfigDialog.frame:SetScript("OnUpdate", RefreshOnUpdate) AceConfigDialog.frame:SetScript("OnUpdate", RefreshOnUpdate)
end end
@@ -1869,8 +1863,8 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...)
local BlizOptions = AceConfigDialog.BlizOptions local BlizOptions = AceConfigDialog.BlizOptions
local key = appName local key = appName
for n = 1, select("#", ...) do for n = 1, select('#', ...) do
key = key.."\001"..select(n, ...) key = key..'\001'..select(n, ...)
end end
if not BlizOptions[appName] then if not BlizOptions[appName] then
@@ -1883,13 +1877,13 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...)
group:SetName(name or appName, parent) group:SetName(name or appName, parent)
group:SetTitle(name or appName) group:SetTitle(name or appName)
group:SetUserData("appName", appName) group:SetUserData('appName', appName)
if select("#", ...) > 0 then if select('#', ...) > 0 then
local path = {} local path = {}
for n = 1, select("#",...) do for n = 1, select('#',...) do
tinsert(path, (select(n, ...))) tinsert(path, (select(n, ...)))
end end
group:SetUserData("path", path) group:SetUserData('path', path)
end end
group:SetCallback("OnShow", FeedToBlizPanel) group:SetCallback("OnShow", FeedToBlizPanel)
group:SetCallback("OnHide", ClearBlizPanel) group:SetCallback("OnHide", ClearBlizPanel)
@@ -8,8 +8,8 @@
-- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName". -- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName".
-- @class file -- @class file
-- @name AceConfigRegistry-3.0 -- @name AceConfigRegistry-3.0
-- @release $Id: AceConfigRegistry-3.0.lua 921 2010-05-09 15:49:14Z nevcairiel $ -- @release $Id: AceConfigRegistry-3.0.lua 890 2009-12-06 12:50:05Z nevcairiel $
local MAJOR, MINOR = "AceConfigRegistry-3.0", 12 local MAJOR, MINOR = "AceConfigRegistry-3.0", 11
local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR) local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR)
if not AceConfigRegistry then return end if not AceConfigRegistry then return end
@@ -134,9 +134,7 @@ local typedkeys={
}, },
range={ range={
min=optnumber, min=optnumber,
softMin=optnumber,
max=optnumber, max=optnumber,
softMax=optnumber,
step=optnumber, step=optnumber,
bigStep=optnumber, bigStep=optnumber,
isPercent=optbool, isPercent=optbool,
+6 -6
View File
@@ -39,8 +39,8 @@
-- end -- end
-- @class file -- @class file
-- @name AceDB-3.0.lua -- @name AceDB-3.0.lua
-- @release $Id: AceDB-3.0.lua 940 2010-06-19 08:01:47Z nevcairiel $ -- @release $Id: AceDB-3.0.lua 914 2010-03-08 12:09:22Z nevcairiel $
local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 21 local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 20
local AceDB, oldminor = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR) local AceDB, oldminor = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR)
if not AceDB then return end -- No upgrade needed if not AceDB then return end -- No upgrade needed
@@ -507,11 +507,11 @@ function DBObjectLib:DeleteProfile(name, silent)
error("Cannot delete the active profile in an AceDBObject.", 2) error("Cannot delete the active profile in an AceDBObject.", 2)
end end
if not rawget(self.profiles, name) and not silent then if not rawget(self.sv.profiles, name) and not silent then
error("Cannot delete profile '" .. name .. "'. It does not exist.", 2) error("Cannot delete profile '" .. name .. "'. It does not exist.", 2)
end end
self.profiles[name] = nil self.sv.profiles[name] = nil
-- populate to child namespaces -- populate to child namespaces
if self.children then if self.children then
@@ -537,7 +537,7 @@ function DBObjectLib:CopyProfile(name, silent)
error("Cannot have the same source and destination profiles.", 2) error("Cannot have the same source and destination profiles.", 2)
end end
if not rawget(self.profiles, name) and not silent then if not rawget(self.sv.profiles, name) and not silent then
error("Cannot copy profile '" .. name .. "'. It does not exist.", 2) error("Cannot copy profile '" .. name .. "'. It does not exist.", 2)
end end
@@ -545,7 +545,7 @@ function DBObjectLib:CopyProfile(name, silent)
DBObjectLib.ResetProfile(self, nil, true) DBObjectLib.ResetProfile(self, nil, true)
local profile = self.profile local profile = self.profile
local source = self.profiles[name] local source = self.sv.profiles[name]
copyTable(source, profile) copyTable(source, profile)
@@ -1,8 +1,8 @@
--- AceDBOptions-3.0 provides a universal AceConfig options screen for managing AceDB-3.0 profiles. --- AceDBOptions-3.0 provides a universal AceConfig options screen for managing AceDB-3.0 profiles.
-- @class file -- @class file
-- @name AceDBOptions-3.0 -- @name AceDBOptions-3.0
-- @release $Id: AceDBOptions-3.0.lua 938 2010-06-13 07:21:38Z nevcairiel $ -- @release $Id: AceDBOptions-3.0.lua 895 2009-12-06 16:28:55Z nevcairiel $
local ACEDBO_MAJOR, ACEDBO_MINOR = "AceDBOptions-3.0", 12 local ACEDBO_MAJOR, ACEDBO_MINOR = "AceDBOptions-3.0", 11
local AceDBOptions, oldminor = LibStub:NewLibrary(ACEDBO_MAJOR, ACEDBO_MINOR) local AceDBOptions, oldminor = LibStub:NewLibrary(ACEDBO_MAJOR, ACEDBO_MINOR)
if not AceDBOptions then return end -- No upgrade needed if not AceDBOptions then return end -- No upgrade needed
@@ -30,7 +30,7 @@ local L = {
reset_desc = "Reset the current profile back to its default values, in case your configuration is broken, or you simply want to start over.", reset_desc = "Reset the current profile back to its default values, in case your configuration is broken, or you simply want to start over.",
reset = "Reset Profile", reset = "Reset Profile",
reset_sub = "Reset the current profile to the default", reset_sub = "Reset the current profile to the default",
choose_desc = "You can either create a new profile by entering a name in the editbox, or choose one of the already existing profiles.", choose_desc = "You can either create a new profile by entering a name in the editbox, or choose one of the already exisiting profiles.",
new = "New", new = "New",
new_sub = "Create a new empty profile.", new_sub = "Create a new empty profile.",
choose = "Existing Profiles", choose = "Existing Profiles",
+138 -80
View File
@@ -5,7 +5,7 @@
-- --
-- **Note**: When using AceGUI-3.0 directly, please do not modify the frames of the widgets directly, -- **Note**: When using AceGUI-3.0 directly, please do not modify the frames of the widgets directly,
-- as any "unknown" change to the widgets will cause addons that get your widget out of the widget pool -- as any "unknown" change to the widgets will cause addons that get your widget out of the widget pool
-- to misbehave. If you think some part of a widget should be modifiable, please open a ticket, and we"ll -- to misbehave. If you think some part of a widget should be modifiable, please open a ticket, and we'll
-- implement a proper API to modify it. -- implement a proper API to modify it.
-- @usage -- @usage
-- local AceGUI = LibStub("AceGUI-3.0") -- local AceGUI = LibStub("AceGUI-3.0")
@@ -24,8 +24,8 @@
-- f:AddChild(btn) -- f:AddChild(btn)
-- @class file -- @class file
-- @name AceGUI-3.0 -- @name AceGUI-3.0
-- @release $Id: AceGUI-3.0.lua 924 2010-05-13 15:12:20Z nevcairiel $ -- @release $Id: AceGUI-3.0.lua 896 2009-12-06 16:29:49Z nevcairiel $
local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 33 local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 30
local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR) local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR)
if not AceGUI then return end -- No upgrade needed if not AceGUI then return end -- No upgrade needed
@@ -98,7 +98,7 @@ Dispatchers[0] = function(func)
end end
local function safecall(func, ...) local function safecall(func, ...)
return Dispatchers[select("#", ...)](func, ...) return Dispatchers[select('#', ...)](func, ...)
end end
-- Recycling functions -- Recycling functions
@@ -173,16 +173,16 @@ function AceGUI:Create(type)
if WidgetRegistry[type] then if WidgetRegistry[type] then
local widget = newWidget(type) local widget = newWidget(type)
if rawget(widget, "Acquire") then if rawget(widget,'Acquire') then
widget.OnAcquire = widget.Acquire widget.OnAcquire = widget.Acquire
widget.Acquire = nil widget.Acquire = nil
elseif rawget(widget, "Aquire") then elseif rawget(widget,'Aquire') then
widget.OnAcquire = widget.Aquire widget.OnAcquire = widget.Aquire
widget.Aquire = nil widget.Aquire = nil
end end
if rawget(widget, "Release") then if rawget(widget,'Release') then
widget.OnRelease = rawget(widget, "Release") widget.OnRelease = rawget(widget,'Release')
widget.Release = nil widget.Release = nil
end end
@@ -191,8 +191,8 @@ function AceGUI:Create(type)
else else
error(("Widget type %s doesn't supply an OnAcquire Function"):format(type)) error(("Widget type %s doesn't supply an OnAcquire Function"):format(type))
end end
-- Set the default Layout ("List") -- Set the default Layout ('List')
safecall(widget.SetLayout, widget, "List") safecall(widget.SetLayout, widget, 'List')
safecall(widget.ResumeLayout, widget) safecall(widget.ResumeLayout, widget)
return widget return widget
end end
@@ -204,14 +204,14 @@ end
-- If this widget is a Container-Widget, all of its Child-Widgets will be releases as well. -- If this widget is a Container-Widget, all of its Child-Widgets will be releases as well.
-- @param widget The widget to release -- @param widget The widget to release
function AceGUI:Release(widget) function AceGUI:Release(widget)
safecall(widget.PauseLayout, widget) safecall( widget.PauseLayout, widget )
widget:Fire("OnRelease") widget:Fire("OnRelease")
safecall(widget.ReleaseChildren, widget) safecall( widget.ReleaseChildren, widget )
if widget.OnRelease then if widget.OnRelease then
widget:OnRelease() widget:OnRelease()
-- else else
-- error(("Widget type %s doesn't supply an OnRelease Function"):format(widget.type)) error(("Widget type %s doesn't supply an OnRelease Function"):format(type))
end end
for k in pairs(widget.userdata) do for k in pairs(widget.userdata) do
widget.userdata[k] = nil widget.userdata[k] = nil
@@ -267,6 +267,7 @@ end
--[[ --[[
Widgets must provide the following functions Widgets must provide the following functions
OnAcquire() - Called when the object is acquired, should set everything to a default hidden state OnAcquire() - Called when the object is acquired, should set everything to a default hidden state
OnRelease() - Called when the object is Released, should remove any anchors and hide the Widget
And the following members And the following members
frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes
@@ -280,7 +281,6 @@ end
content - frame or derivitive that children will be anchored to content - frame or derivitive that children will be anchored to
The Widget can supply the following Optional Members The Widget can supply the following Optional Members
:OnRelease() - Called when the object is Released, should remove any additional anchors and clear any data
:OnWidthSet(width) - Called when the width of the widget is changed :OnWidthSet(width) - Called when the width of the widget is changed
:OnHeightSet(height) - Called when the height of the widget is changed :OnHeightSet(height) - Called when the height of the widget is changed
Widgets should not use the OnSizeChanged events of thier frame or content members, use these methods instead Widgets should not use the OnSizeChanged events of thier frame or content members, use these methods instead
@@ -294,6 +294,17 @@ end
-- Widget Base Template -- -- Widget Base Template --
-------------------------- --------------------------
do do
local function fixlevels(parent,...)
local i = 1
local child = select(i, ...)
while child do
child:SetFrameLevel(parent:GetFrameLevel()+1)
fixlevels(child, child:GetChildren())
i = i + 1
child = select(i, ...)
end
end
local WidgetBase = AceGUI.WidgetBase local WidgetBase = AceGUI.WidgetBase
WidgetBase.SetParent = function(self, parent) WidgetBase.SetParent = function(self, parent)
@@ -301,6 +312,7 @@ do
frame:SetParent(nil) frame:SetParent(nil)
frame:SetParent(parent.content) frame:SetParent(parent.content)
self.parent = parent self.parent = parent
--fixlevels(parent.frame,parent.frame:GetChildren())
end end
WidgetBase.SetCallback = function(self, name, func) WidgetBase.SetCallback = function(self, name, func)
@@ -433,7 +445,7 @@ do
if self.LayoutPaused then if self.LayoutPaused then
return return
end end
safecall(self.LayoutFunc, self.content, self.children) safecall(self.LayoutFunc,self.content, self.children)
end end
--call this function to layout, makes sure layed out objects get a frame to get sizes etc --call this function to layout, makes sure layed out objects get a frame to get sizes etc
@@ -512,7 +524,7 @@ do
end end
end end
setmetatable(WidgetContainerBase, {__index=WidgetBase}) setmetatable(WidgetContainerBase,{__index=WidgetBase})
--One of these function should be called on each Widget Instance as part of its creation process --One of these function should be called on each Widget Instance as part of its creation process
@@ -525,11 +537,10 @@ do
widget.base = WidgetContainerBase widget.base = WidgetContainerBase
widget.content.obj = widget widget.content.obj = widget
widget.frame.obj = widget widget.frame.obj = widget
widget.content:SetScript("OnSizeChanged", ContentResize) widget.content:SetScript("OnSizeChanged",ContentResize)
widget.frame:SetScript("OnSizeChanged", FrameResize) widget.frame:SetScript("OnSizeChanged",FrameResize)
setmetatable(widget, {__index = WidgetContainerBase}) setmetatable(widget,{__index=WidgetContainerBase})
widget:SetLayout("List") widget:SetLayout("List")
return widget
end end
--- Register a widget-class as a widget. --- Register a widget-class as a widget.
@@ -539,9 +550,8 @@ do
widget.events = {} widget.events = {}
widget.base = WidgetBase widget.base = WidgetBase
widget.frame.obj = widget widget.frame.obj = widget
widget.frame:SetScript("OnSizeChanged", FrameResize) widget.frame:SetScript("OnSizeChanged",FrameResize)
setmetatable(widget, {__index = WidgetBase}) setmetatable(widget,{__index=WidgetBase})
return widget
end end
end end
@@ -601,18 +611,49 @@ function AceGUI:GetNextWidgetNum(type)
return self.counts[type] return self.counts[type]
end end
--- Return the number of created widgets for this type. --[[ Widget Template
-- In contrast to GetNextWidgetNum, the number is not incremented.
-- @param type The widget type --------------------------
function AceGUI:GetWidgetCount(type) -- Widget Name --
return self.counts[type] or 0 --------------------------
do
local Type = "Type"
local function OnAcquire(self)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
end
local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = Type
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.frame = frame
frame.obj = self
--Container Support
--local content = CreateFrame("Frame",nil,frame)
--self.content = content
--AceGUI:RegisterAsContainer(self)
AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor)
end end
--- Return the version of the currently registered widget type.
-- @param type The widget type ]]
function AceGUI:GetWidgetVersion(type)
return WidgetVersions[type]
end
------------- -------------
-- Layouts -- -- Layouts --
@@ -622,13 +663,15 @@ end
A Layout is a func that takes 2 parameters A Layout is a func that takes 2 parameters
content - the frame that widgets will be placed inside content - the frame that widgets will be placed inside
children - a table containing the widgets to layout children - a table containing the widgets to layout
]] ]]
-- Very simple Layout, Children are stacked on top of each other down the left side -- Very simple Layout, Children are stacked on top of each other down the left side
AceGUI:RegisterLayout("List", AceGUI:RegisterLayout("List",
function(content, children) function(content, children)
local height = 0
local width = content.width or content:GetWidth() or 0 local height = 0
local width = content.width or content:GetWidth() or 0
for i = 1, #children do for i = 1, #children do
local child = children[i] local child = children[i]
@@ -636,21 +679,25 @@ AceGUI:RegisterLayout("List",
frame:ClearAllPoints() frame:ClearAllPoints()
frame:Show() frame:Show()
if i == 1 then if i == 1 then
frame:SetPoint("TOPLEFT", content) frame:SetPoint("TOPLEFT",content,"TOPLEFT",0,0)
else else
frame:SetPoint("TOPLEFT", children[i-1].frame, "BOTTOMLEFT") frame:SetPoint("TOPLEFT",children[i-1].frame,"BOTTOMLEFT",0,0)
end end
if child.width == "fill" then if child.width == "fill" then
child:SetWidth(width) child:SetWidth(width)
frame:SetPoint("RIGHT", content) frame:SetPoint("RIGHT",content,"RIGHT")
if child.OnWidthSet then
child:OnWidthSet(content.width or content:GetWidth())
end
if child.DoLayout then if child.DoLayout then
child:DoLayout() child:DoLayout()
end end
elseif child.width == "relative" then elseif child.width == "relative" then
child:SetWidth(width * child.relWidth) child:SetWidth(width * child.relWidth)
if child.OnWidthSet then
child:OnWidthSet(content.width or content:GetWidth())
end
if child.DoLayout then if child.DoLayout then
child:DoLayout() child:DoLayout()
end end
@@ -658,43 +705,45 @@ AceGUI:RegisterLayout("List",
height = height + (frame.height or frame:GetHeight() or 0) height = height + (frame.height or frame:GetHeight() or 0)
end end
safecall(content.obj.LayoutFinished, content.obj, nil, height) safecall( content.obj.LayoutFinished, content.obj, nil, height )
end) end
)
-- A single control fills the whole content area -- A single control fills the whole content area
AceGUI:RegisterLayout("Fill", AceGUI:RegisterLayout("Fill",
function(content, children) function(content, children)
if children[1] then if children[1] then
children[1]:SetWidth(content:GetWidth() or 0) children[1]:SetWidth(content:GetWidth() or 0)
children[1]:SetHeight(content:GetHeight() or 0) children[1]:SetHeight(content:GetHeight() or 0)
children[1].frame:SetAllPoints(content) children[1].frame:SetAllPoints(content)
children[1].frame:Show() children[1].frame:Show()
safecall(content.obj.LayoutFinished, content.obj, nil, children[1].frame:GetHeight()) safecall( content.obj.LayoutFinished, content.obj, nil, children[1].frame:GetHeight() )
end end
end) end
)
AceGUI:RegisterLayout("Flow", AceGUI:RegisterLayout("Flow",
function(content, children) function(content, children)
--used height so far --used height so far
local height = 0 local height = 0
--width used in the current row --width used in the current row
local usedwidth = 0 local usedwidth = 0
--height of the current row --height of the current row
local rowheight = 0 local rowheight = 0
local rowoffset = 0 local rowoffset = 0
local lastrowoffset local lastrowoffset
local width = content.width or content:GetWidth() or 0 local width = content.width or content:GetWidth() or 0
--control at the start of the row --control at the start of the row
local rowstart local rowstart
local rowstartoffset local rowstartoffset
local lastrowstart local lastrowstart
local isfullheight local isfullheight
local frameoffset local frameoffset
local lastframeoffset local lastframeoffset
local oversize local oversize
for i = 1, #children do for i = 1, #children do
local child = children[i] local child = children[i]
oversize = nil oversize = nil
@@ -717,7 +766,7 @@ AceGUI:RegisterLayout("Flow",
frame:ClearAllPoints() frame:ClearAllPoints()
if i == 1 then if i == 1 then
-- anchor the first control to the top left -- anchor the first control to the top left
frame:SetPoint("TOPLEFT", content) frame:SetPoint("TOPLEFT",content,"TOPLEFT",0,0)
rowheight = frameheight rowheight = frameheight
rowoffset = frameoffset rowoffset = frameoffset
rowstart = frame rowstart = frame
@@ -736,7 +785,7 @@ AceGUI:RegisterLayout("Flow",
break break
end end
--anchor the previous row, we will now know its height and offset --anchor the previous row, we will now know its height and offset
rowstart:SetPoint("TOPLEFT", content, "TOPLEFT", 0, -(height + (rowoffset - rowstartoffset) + 3)) rowstart:SetPoint("TOPLEFT",content,"TOPLEFT",0,-(height+(rowoffset-rowstartoffset)+3))
height = height + rowheight + 3 height = height + rowheight + 3
--save this as the rowstart so we can anchor it after the row is complete and we have the max height and offset of controls in it --save this as the rowstart so we can anchor it after the row is complete and we have the max height and offset of controls in it
rowstart = frame rowstart = frame
@@ -754,21 +803,25 @@ AceGUI:RegisterLayout("Flow",
--offset is always the larger of the two offsets --offset is always the larger of the two offsets
rowoffset = math_max(rowoffset, frameoffset) rowoffset = math_max(rowoffset, frameoffset)
rowheight = math_max(rowheight, rowoffset + (frameheight / 2))
frame:SetPoint("TOPLEFT", children[i-1].frame, "TOPRIGHT", 0, frameoffset - lastframeoffset) rowheight = math_max(rowheight,rowoffset+(frameheight/2))
--print("type:", child.type, "offset:",frameoffset-lastframeoffset)
frame:SetPoint("TOPLEFT",children[i-1].frame,"TOPRIGHT",0,frameoffset-lastframeoffset)
usedwidth = framewidth + usedwidth usedwidth = framewidth + usedwidth
end end
end end
if child.width == "fill" then if child.width == "fill" then
child:SetWidth(width) child:SetWidth(width)
frame:SetPoint("RIGHT", content) frame:SetPoint("RIGHT",content,"RIGHT",0,0)
usedwidth = 0 usedwidth = 0
rowstart = frame rowstart = frame
rowstartoffset = frameoffset rowstartoffset = frameoffset
if child.OnWidthSet then
child:OnWidthSet(width)
end
if child.DoLayout then if child.DoLayout then
child:DoLayout() child:DoLayout()
end end
@@ -778,28 +831,33 @@ AceGUI:RegisterLayout("Flow",
elseif child.width == "relative" then elseif child.width == "relative" then
child:SetWidth(width * child.relWidth) child:SetWidth(width * child.relWidth)
if child.OnWidthSet then
child:OnWidthSet(width)
end
if child.DoLayout then if child.DoLayout then
child:DoLayout() child:DoLayout()
end end
elseif oversize then elseif oversize then
if width > 1 then if width > 1 then
frame:SetPoint("RIGHT", content) frame:SetPoint("RIGHT",content,"RIGHT",0,0)
end end
end end
if child.height == "fill" then if child.height == "fill" then
frame:SetPoint("BOTTOM", content) frame:SetPoint("BOTTOM",content,"BOTTOM")
isfullheight = true isfullheight = true
end end
end end
--anchor the last row, if its full height needs a special case since its height has just been changed by the anchor --anchor the last row, if its full height needs a special case since its height has just been changed by the anchor
if isfullheight then if isfullheight then
rowstart:SetPoint("TOPLEFT", content, "TOPLEFT", 0, -height) rowstart:SetPoint("TOPLEFT",content,"TOPLEFT",0,-height)
elseif rowstart then elseif rowstart then
rowstart:SetPoint("TOPLEFT", content, "TOPLEFT", 0, -(height + (rowoffset - rowstartoffset) + 3)) rowstart:SetPoint("TOPLEFT",content,"TOPLEFT",0,-(height+(rowoffset-rowstartoffset)+3))
end end
height = height + rowheight + 3 height = height + rowheight + 3
safecall(content.obj.LayoutFinished, content.obj, nil, height) safecall( content.obj.LayoutFinished, content.obj, nil, height )
end) end
)
+15 -17
View File
@@ -1,28 +1,26 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ <Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd"> ..\FrameXML\UI.xsd">
<Script file="AceGUI-3.0.lua"/> <Script file="AceGUI-3.0.lua"/>
<!-- Container -->
<Script file="widgets\AceGUIContainer-BlizOptionsGroup.lua"/>
<Script file="widgets\AceGUIContainer-DropDownGroup.lua"/>
<Script file="widgets\AceGUIContainer-Frame.lua"/>
<Script file="widgets\AceGUIContainer-InlineGroup.lua"/>
<Script file="widgets\AceGUIContainer-ScrollFrame.lua"/>
<Script file="widgets\AceGUIContainer-SimpleGroup.lua"/>
<Script file="widgets\AceGUIContainer-TabGroup.lua"/>
<Script file="widgets\AceGUIContainer-TreeGroup.lua"/>
<Script file="widgets\AceGUIContainer-Window.lua"/>
<!-- Widgets -->
<Script file="widgets\AceGUIWidget-Button.lua"/> <Script file="widgets\AceGUIWidget-Button.lua"/>
<Script file="widgets\AceGUIWidget-CheckBox.lua"/> <Script file="widgets\AceGUIWidget-CheckBox.lua"/>
<Script file="widgets\AceGUIWidget-ColorPicker.lua"/> <Script file="widgets\AceGUIWidget-ColorPicker.lua"/>
<Script file="widgets\AceGUIWidget-DropDownGroup.lua"/>
<Script file="widgets\AceGUIWidget-DropDown.lua"/> <Script file="widgets\AceGUIWidget-DropDown.lua"/>
<Script file="widgets\AceGUIWidget-DropDown-Items.lua"/> <Script file="widgets\AceGUIWidget-DropDown-Items.lua"/>
<Script file="widgets\AceGUIWidget-EditBox.lua"/> <Script file="widgets\AceGUIWidget-EditBox.lua"/>
<Script file="widgets\AceGUIWidget-Heading.lua"/> <Script file="widgets\AceGUIWidget-Frame.lua"/>
<Script file="widgets\AceGUIWidget-Icon.lua"/> <Script file="widgets\AceGUIWidget-Window.lua"/>
<Script file="widgets\AceGUIWidget-InteractiveLabel.lua"/> <Script file="widgets\AceGUIWidget-Heading.lua"/>
<Script file="widgets\AceGUIWidget-Keybinding.lua"/> <Script file="widgets\AceGUIWidget-InlineGroup.lua"/>
<Script file="widgets\AceGUIWidget-Keybinding.lua"/>
<Script file="widgets\AceGUIWidget-ScrollFrame.lua"/>
<Script file="widgets\AceGUIWidget-SimpleGroup.lua"/>
<Script file="widgets\AceGUIWidget-Slider.lua"/>
<Script file="widgets\AceGUIWidget-TabGroup.lua"/>
<Script file="widgets\AceGUIWidget-TreeGroup.lua"/>
<Script file="widgets\AceGUIWidget-Label.lua"/> <Script file="widgets\AceGUIWidget-Label.lua"/>
<Script file="widgets\AceGUIWidget-MultiLineEditBox.lua"/> <Script file="widgets\AceGUIWidget-MultiLineEditBox.lua"/>
<Script file="widgets\AceGUIWidget-Slider.lua"/> <Script file="widgets\AceGUIWidget-BlizOptionsGroup.lua"/>
</Ui> <Script file="widgets\AceGUIWidget-InteractiveLabel.lua"/>
<Script file="widgets\AceGUIWidget-Icon.lua"/>
</Ui>
@@ -0,0 +1,153 @@
local AceGUI = LibStub("AceGUI-3.0")
-------------
-- Widgets --
-------------
--[[
Widgets must provide the following functions
Acquire() - Called when the object is aquired, should set everything to a default hidden state
Release() - Called when the object is Released, should remove any anchors and hide the Widget
And the following members
frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes
type - the type of the object, same as the name given to :RegisterWidget()
Widgets contain a table called userdata, this is a safe place to store data associated with the wigdet
It will be cleared automatically when a widget is released
Placing values directly into a widget object should be avoided
If the Widget can act as a container for other Widgets the following
content - frame or derivitive that children will be anchored to
The Widget can supply the following Optional Members
]]
----------------------------------
-- Blizzard Options Group --
----------------------------------
--[[
Group Designed to be added to the bliz interface options panel
]]
-- WoW APIs
local CreateFrame = CreateFrame
do
local Type = "BlizOptionsGroup"
local Version = 10
local function OnAcquire(self)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self:SetName()
end
local function okay(this)
this.obj:Fire("okay")
end
local function cancel(this)
this.obj:Fire("cancel")
end
local function defaults(this)
this.obj:Fire("defaults")
end
local function SetName(self, name, parent)
self.frame.name = name
self.frame.parent = parent
end
local function OnShow(this)
this.obj:Fire("OnShow")
end
local function OnHide(this)
this.obj:Fire("OnHide")
end
local function OnWidthSet(self, width)
local content = self.content
local contentwidth = width - 63
if contentwidth < 0 then
contentwidth = 0
end
content:SetWidth(contentwidth)
content.width = contentwidth
end
local function OnHeightSet(self, height)
local content = self.content
local contentheight = height - 26
if contentheight < 0 then
contentheight = 0
end
content:SetHeight(contentheight)
content.height = contentheight
end
local function SetTitle(self, title)
local content = self.content
content:ClearAllPoints()
if not title or title == "" then
content:SetPoint("TOPLEFT",self.frame,"TOPLEFT",10,-10)
self.label:SetText("")
else
content:SetPoint("TOPLEFT",self.frame,"TOPLEFT",10,-40)
self.label:SetText(title)
end
content:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT",-10,10)
end
local function Constructor()
local frame = CreateFrame("Frame")
local self = {}
self.type = Type
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.frame = frame
self.SetName = SetName
self.OnWidthSet = OnWidthSet
self.OnHeightSet = OnHeightSet
self.SetTitle = SetTitle
frame.obj = self
frame.okay = okay
frame.cancel = cancel
frame.defaults = defaults
frame:Hide()
frame:SetScript("OnHide",OnHide)
frame:SetScript("OnShow",OnShow)
local label = frame:CreateFontString(nil,"OVERLAY","GameFontNormalLarge")
self.label = label
label:SetPoint("TOPLEFT", frame, "TOPLEFT", 10, -15)
label:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", 10, -45)
label:SetJustifyH("LEFT")
label:SetJustifyV("TOP")
--Container Support
local content = CreateFrame("Frame",nil,frame)
self.content = content
content.obj = self
content:SetPoint("TOPLEFT",frame,"TOPLEFT",15,-10)
content:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-10,10)
AceGUI:RegisterAsContainer(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end
@@ -1,54 +1,48 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
Button Widget
Graphical Button.
-------------------------------------------------------------------------------]]
local Type, Version = "Button", 20
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs
local pairs = pairs
-- WoW APIs -- WoW APIs
local _G = _G local _G = _G
local PlaySound, CreateFrame, UIParent = PlaySound, CreateFrame, UIParent local PlaySound = PlaySound
local CreateFrame, UIParent = CreateFrame, UIParent
--[[----------------------------------------------------------------------------- --------------------------
Scripts -- Button --
-------------------------------------------------------------------------------]] --------------------------
local function Button_OnClick(frame, ...) do
PlaySound("igMainMenuOption") local Type = "Button"
frame.obj:Fire("OnClick", ...) local Version = 13
AceGUI:ClearFocus()
end local function OnAcquire(self)
local function Control_OnEnter(frame)
frame.obj:Fire("OnEnter")
end
local function Control_OnLeave(frame)
frame.obj:Fire("OnLeave")
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
-- restore default values -- restore default values
self:SetHeight(24) self:SetHeight(24)
self:SetWidth(200) self:SetWidth(200)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self:SetDisabled(false) self:SetDisabled(false)
self:SetText() end
end,
local function Button_OnClick(this, ...)
-- ["OnRelease"] = nil, PlaySound("igMainMenuOption")
this.obj:Fire("OnClick", ...)
["SetText"] = function(self, text) AceGUI:ClearFocus()
self.text:SetText(text) end
end,
local function Button_OnEnter(this)
["SetDisabled"] = function(self, disabled) this.obj:Fire("OnEnter")
end
local function Button_OnLeave(this)
this.obj:Fire("OnLeave")
end
local function SetText(self, text)
self.text:SetText(text or "")
end
local function SetDisabled(self, disabled)
self.disabled = disabled self.disabled = disabled
if disabled then if disabled then
self.frame:Disable() self.frame:Disable()
@@ -56,37 +50,57 @@ local methods = {
self.frame:Enable() self.frame:Enable()
end end
end end
}
local function Constructor()
local num = AceGUI:GetNextWidgetNum(Type)
local name = "AceGUI30Button"..num
local frame = CreateFrame("Button",name,UIParent,"UIPanelButtonTemplate2")
local self = {}
self.num = num
self.type = Type
self.frame = frame
local left = _G[name .. "Left"]
local right = _G[name .. "Right"]
local middle = _G[name .. "Middle"]
left:SetPoint("TOP", frame, "TOP", 0, 0)
left:SetPoint("BOTTOM", frame, "BOTTOM", 0, 0)
right:SetPoint("TOP", frame, "TOP", 0, 0)
right:SetPoint("BOTTOM", frame, "BOTTOM", 0, 0)
middle:SetPoint("TOP", frame, "TOP", 0, 0)
middle:SetPoint("BOTTOM", frame, "BOTTOM", 0, 0)
--[[----------------------------------------------------------------------------- local text = frame:GetFontString()
Constructor self.text = text
-------------------------------------------------------------------------------]] text:ClearAllPoints()
local function Constructor() text:SetPoint("TOPLEFT",frame,"TOPLEFT", 15, -1)
local name = "AceGUI30Button" .. AceGUI:GetNextWidgetNum(Type) text:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT", -15, 1)
local frame = CreateFrame("Button", name, UIParent, "UIPanelButtonTemplate2") text:SetJustifyV("MIDDLE")
frame:Hide()
frame:EnableMouse(true) frame:SetScript("OnClick",Button_OnClick)
frame:SetScript("OnClick", Button_OnClick) frame:SetScript("OnEnter",Button_OnEnter)
frame:SetScript("OnEnter", Control_OnEnter) frame:SetScript("OnLeave",Button_OnLeave)
frame:SetScript("OnLeave", Control_OnLeave)
local text = frame:GetFontString() self.SetText = SetText
text:ClearAllPoints() self.SetDisabled = SetDisabled
text:SetPoint("TOPLEFT", 15, -1)
text:SetPoint("BOTTOMRIGHT", -15, 1) frame:EnableMouse(true)
text:SetJustifyV("MIDDLE")
local widget = { frame:SetHeight(24)
text = text, frame:SetWidth(200)
frame = frame,
type = Type self.OnRelease = OnRelease
} self.OnAcquire = OnAcquire
for method, func in pairs(methods) do
widget[method] = func self.frame = frame
frame.obj = self
AceGUI:RegisterAsWidget(self)
return self
end end
return AceGUI:RegisterAsWidget(widget) AceGUI:RegisterWidgetType(Type,Constructor,Version)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -1,12 +1,7 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
Checkbox Widget
-------------------------------------------------------------------------------]]
local Type, Version = "CheckBox", 21
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs -- Lua APIs
local select, pairs = select, pairs local select = select
-- WoW APIs -- WoW APIs
local PlaySound = PlaySound local PlaySound = PlaySound
@@ -16,104 +11,94 @@ local CreateFrame, UIParent = CreateFrame, UIParent
-- List them here for Mikk's FindGlobals script -- List them here for Mikk's FindGlobals script
-- GLOBALS: SetDesaturation, GameFontHighlight -- GLOBALS: SetDesaturation, GameFontHighlight
--[[----------------------------------------------------------------------------- --------------------------
Support functions -- Check Box --
-------------------------------------------------------------------------------]] --------------------------
local function AlignImage(self) --[[
local img = self.image:GetTexture() Events :
self.text:ClearAllPoints() OnValueChanged
if not img then
self.text:SetPoint("LEFT", self.checkbg, "RIGHT")
self.text:SetPoint("RIGHT")
else
self.text:SetPoint("LEFT", self.image,"RIGHT", 1, 0)
self.text:SetPoint("RIGHT")
end
end
--[[----------------------------------------------------------------------------- ]]
Scripts do
-------------------------------------------------------------------------------]] local Type = "CheckBox"
local function Control_OnEnter(frame) local Version = 16
frame.obj:Fire("OnEnter")
end local function OnAcquire(self)
local function Control_OnLeave(frame)
frame.obj:Fire("OnLeave")
end
local function CheckBox_OnMouseDown(frame)
local self = frame.obj
if not self.disabled then
if self.image:GetTexture() then
self.text:SetPoint("LEFT", self.image,"RIGHT", 2, -1)
else
self.text:SetPoint("LEFT", self.checkbg, "RIGHT", 1, -1)
end
end
AceGUI:ClearFocus()
end
local function CheckBox_OnMouseUp(frame)
local self = frame.obj
if not self.disabled then
self:ToggleChecked()
if self.checked then
PlaySound("igMainMenuOptionCheckBoxOn")
else -- for both nil and false (tristate)
PlaySound("igMainMenuOptionCheckBoxOff")
end
self:Fire("OnValueChanged", self.checked)
AlignImage(self)
end
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
self:SetType()
self:SetValue(false) self:SetValue(false)
self:SetTriState(nil) self.tristate = nil
-- height is calculated from the width and required space for the description self:SetHeight(24)
self:SetWidth(200) self:SetWidth(200)
self:SetImage() self:SetImage()
self:SetDisabled(nil) end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self.check:Hide()
self.highlight:Hide()
self.down = nil
self.checked = nil
self:SetType()
self:SetDisabled(false)
self:SetDescription(nil) self:SetDescription(nil)
end, end
-- ["OnRelease"] = nil, local function CheckBox_OnEnter(this)
local self = this.obj
["OnWidthSet"] = function(self, width) self.highlight:Show()
if self.desc then self:Fire("OnEnter")
self.desc:SetWidth(width - 30) end
if self.desc:GetText() and self.desc:GetText() ~= "" then
self:SetHeight(28 + self.desc:GetHeight()) local function CheckBox_OnLeave(this)
local self = this.obj
self.highlight:Hide()
self:Fire("OnLeave")
end
local function CheckBox_OnMouseUp(this)
local self = this.obj
if not self.disabled then
self:ToggleChecked()
if self.checked then
PlaySound("igMainMenuOptionCheckBoxOn")
else -- for both nil and false (tristate)
PlaySound("igMainMenuOptionCheckBoxOff")
end end
self:Fire("OnValueChanged",self.checked)
self.text:SetPoint("LEFT",self.check,"RIGHT",0,0)
end end
end, self.down = nil
end
local function CheckBox_OnMouseDown(this)
local self = this.obj
if not self.disabled then
self.text:SetPoint("LEFT",self.check,"RIGHT",1,-1)
self.down = true
end
AceGUI:ClearFocus()
end
["SetDisabled"] = function(self, disabled) local function SetDisabled(self,disabled)
self.disabled = disabled self.disabled = disabled
if disabled then if disabled then
self.frame:Disable() self.frame:Disable()
self.text:SetTextColor(0.5, 0.5, 0.5) self.text:SetTextColor(0.5,0.5,0.5)
SetDesaturation(self.check, true) SetDesaturation(self.check, true)
else else
self.frame:Enable() self.frame:Enable()
self.text:SetTextColor(1, 1, 1) self.text:SetTextColor(1,1,1)
if self.tristate and self.checked == nil then if self.tristate and self.checked == nil then
SetDesaturation(self.check, true) SetDesaturation(self.check, true)
else else
SetDesaturation(self.check, false) SetDesaturation(self.check, false)
end end
end end
end, end
["SetValue"] = function(self,value) local function SetValue(self,value)
local check = self.check local check = self.check
self.checked = value self.checked = value
if value then if value then
@@ -129,48 +114,51 @@ local methods = {
self.check:Hide() self.check:Hide()
end end
end end
self:SetDisabled(self.disabled) SetDisabled(self, self.disabled)
end, end
["GetValue"] = function(self) local function SetTriState(self, enabled)
return self.checked
end,
["SetTriState"] = function(self, enabled)
self.tristate = enabled self.tristate = enabled
self:SetValue(self:GetValue()) self:SetValue(self:GetValue())
end, end
["SetType"] = function(self, type) local function GetValue(self)
return self.checked
end
local function SetType(self, type)
local checkbg = self.checkbg local checkbg = self.checkbg
local check = self.check local check = self.check
local highlight = self.highlight local highlight = self.highlight
local size
if type == "radio" then if type == "radio" then
size = 16 checkbg:SetHeight(16)
checkbg:SetWidth(16)
checkbg:SetTexture("Interface\\Buttons\\UI-RadioButton") checkbg:SetTexture("Interface\\Buttons\\UI-RadioButton")
checkbg:SetTexCoord(0, 0.25, 0, 1) checkbg:SetTexCoord(0,0.25,0,1)
check:SetHeight(16)
check:SetWidth(16)
check:SetTexture("Interface\\Buttons\\UI-RadioButton") check:SetTexture("Interface\\Buttons\\UI-RadioButton")
check:SetTexCoord(0.25, 0.5, 0, 1) check:SetTexCoord(0.25,0.5,0,1)
check:SetBlendMode("ADD") check:SetBlendMode("ADD")
highlight:SetTexture("Interface\\Buttons\\UI-RadioButton") highlight:SetTexture("Interface\\Buttons\\UI-RadioButton")
highlight:SetTexCoord(0.5, 0.75, 0, 1) highlight:SetTexCoord(0.5,0.75,0,1)
else else
size = 24 checkbg:SetHeight(24)
checkbg:SetWidth(24)
checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up") checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up")
checkbg:SetTexCoord(0, 1, 0, 1) checkbg:SetTexCoord(0,1,0,1)
check:SetHeight(24)
check:SetWidth(24)
check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check") check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
check:SetTexCoord(0, 1, 0, 1) check:SetTexCoord(0,1,0,1)
check:SetBlendMode("BLEND") check:SetBlendMode("BLEND")
highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight") highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight")
highlight:SetTexCoord(0, 1, 0, 1) highlight:SetTexCoord(0,1,0,1)
end end
checkbg:SetHeight(size) end
checkbg:SetWidth(size)
end, local function ToggleChecked(self)
["ToggleChecked"] = function(self)
local value = self:GetValue() local value = self:GetValue()
if self.tristate then if self.tristate then
--cycle in true, nil, false order --cycle in true, nil, false order
@@ -184,18 +172,18 @@ local methods = {
else else
self:SetValue(not self:GetValue()) self:SetValue(not self:GetValue())
end end
end, end
["SetLabel"] = function(self, label) local function SetLabel(self, label)
self.text:SetText(label) self.text:SetText(label)
end, end
["SetDescription"] = function(self, desc) local function SetDescription(self, desc)
if desc then if desc then
if not self.desc then if not self.desc then
local desc = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall") local desc = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall")
desc:ClearAllPoints() desc:ClearAllPoints()
desc:SetPoint("TOPLEFT", self.checkbg, "TOPRIGHT", 5, -21) desc:SetPoint("TOPLEFT", self.check, "TOPRIGHT", 5, -21)
desc:SetWidth(self.frame.width - 30) desc:SetWidth(self.frame.width - 30)
desc:SetJustifyH("LEFT") desc:SetJustifyH("LEFT")
desc:SetJustifyV("TOP") desc:SetJustifyV("TOP")
@@ -210,80 +198,112 @@ local methods = {
self.desc:SetText("") self.desc:SetText("")
self.desc:Hide() self.desc:Hide()
end end
--self.text:SetFontObject(GameFontHighlight) self.text:SetFontObject(GameFontHighlight)
self:SetHeight(24) self:SetHeight(24)
end end
end, end
["SetImage"] = function(self, path, ...) local function SetImage(self, path, ...)
local image = self.image local image = self.image
image:SetTexture(path) image:SetTexture(path)
if image:GetTexture() then if image:GetTexture() then
local n = select("#", ...) local n = select('#', ...)
if n == 4 or n == 8 then if n == 4 or n == 8 then
image:SetTexCoord(...) image:SetTexCoord(...)
else else
image:SetTexCoord(0, 1, 0, 1) image:SetTexCoord(0, 1, 0, 1)
end end
end end
AlignImage(self) self:AlignImage()
end end
}
local function AlignImage(self)
--[[----------------------------------------------------------------------------- local img = self.image:GetTexture()
Constructor self.text:ClearAllPoints()
-------------------------------------------------------------------------------]] if not img then
local function Constructor() self.text:SetPoint("LEFT", self.check, "RIGHT", 0, 0)
local frame = CreateFrame("Button", nil, UIParent) self.text:SetPoint("RIGHT", self.frame, "RIGHT", 0, 0)
frame:Hide() else
self.text:SetPoint("LEFT", self.image,"RIGHT", 1, 0)
frame:EnableMouse(true) self.text:SetPoint("RIGHT", self.frame,"RIGHT", 0, 0)
frame:SetScript("OnEnter", Control_OnEnter) end
frame:SetScript("OnLeave", Control_OnLeave)
frame:SetScript("OnMouseDown", CheckBox_OnMouseDown)
frame:SetScript("OnMouseUp", CheckBox_OnMouseUp)
local checkbg = frame:CreateTexture(nil, "ARTWORK")
checkbg:SetWidth(24)
checkbg:SetHeight(24)
checkbg:SetPoint("TOPLEFT")
checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up")
local check = frame:CreateTexture(nil, "OVERLAY")
check:SetAllPoints(checkbg)
check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
local text = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
text:SetJustifyH("LEFT")
text:SetHeight(18)
text:SetPoint("LEFT", checkbg, "RIGHT")
text:SetPoint("RIGHT")
local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight")
highlight:SetBlendMode("ADD")
highlight:SetAllPoints(checkbg)
local image = frame:CreateTexture(nil, "OVERLAY")
image:SetHeight(16)
image:SetWidth(16)
image:SetPoint("LEFT", checkbg, "RIGHT", 1, 0)
local widget = {
checkbg = checkbg,
check = check,
text = text,
highlight = highlight,
image = image,
frame = frame,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end end
local function OnWidthSet(self, width)
if self.desc and self.desc:GetText() ~= "" and self.desc:GetText() ~= nil then
self.desc:SetWidth(width - 30)
self:SetHeight(28 + self.desc:GetHeight())
end
end
local function Constructor()
local frame = CreateFrame("Button",nil,UIParent)
local self = {}
self.type = Type
return AceGUI:RegisterAsWidget(widget) self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetValue = SetValue
self.GetValue = GetValue
self.SetDisabled = SetDisabled
self.SetType = SetType
self.ToggleChecked = ToggleChecked
self.SetLabel = SetLabel
self.SetTriState = SetTriState
self.SetDescription = SetDescription
self.OnWidthSet = OnWidthSet
self.SetImage = SetImage
self.AlignImage = AlignImage
self.frame = frame
frame.obj = self
local text = frame:CreateFontString(nil,"OVERLAY","GameFontHighlight")
self.text = text
frame:SetScript("OnEnter",CheckBox_OnEnter)
frame:SetScript("OnLeave",CheckBox_OnLeave)
frame:SetScript("OnMouseUp",CheckBox_OnMouseUp)
frame:SetScript("OnMouseDown",CheckBox_OnMouseDown)
frame:EnableMouse()
local checkbg = frame:CreateTexture(nil,"ARTWORK")
self.checkbg = checkbg
checkbg:SetWidth(24)
checkbg:SetHeight(24)
checkbg:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up")
local check = frame:CreateTexture(nil,"OVERLAY")
self.check = check
check:SetWidth(24)
check:SetHeight(24)
check:SetPoint("CENTER",checkbg,"CENTER",0,0)
check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check")
local highlight = frame:CreateTexture(nil, "OVERLAY")
self.highlight = highlight
highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight")
highlight:SetBlendMode("ADD")
highlight:SetAllPoints(checkbg)
highlight:Hide()
local image = frame:CreateTexture(nil, "OVERLAY")
self.image = image
image:SetHeight(16)
image:SetWidth(16)
image:SetPoint("LEFT", check, "RIGHT", 1, 0)
text:SetJustifyH("LEFT")
frame:SetHeight(24)
frame:SetWidth(200)
text:SetHeight(18)
text:SetPoint("LEFT",check,"RIGHT",0,0)
text:SetPoint("RIGHT",frame,"RIGHT",0,0)
AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -1,12 +1,4 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
ColorPicker Widget
-------------------------------------------------------------------------------]]
local Type, Version = "ColorPicker", 20
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs
local pairs = pairs
-- WoW APIs -- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
@@ -15,172 +7,175 @@ local CreateFrame, UIParent = CreateFrame, UIParent
-- List them here for Mikk's FindGlobals script -- List them here for Mikk's FindGlobals script
-- GLOBALS: ShowUIPanel, HideUIPanel, ColorPickerFrame, OpacitySliderFrame -- GLOBALS: ShowUIPanel, HideUIPanel, ColorPickerFrame, OpacitySliderFrame
--[[----------------------------------------------------------------------------- --------------------------
Support functions -- ColorPicker --
-------------------------------------------------------------------------------]] --------------------------
local function ColorCallback(self, r, g, b, a, isAlpha) do
if not self.HasAlpha then local Type = "ColorPicker"
a = 1 local Version = 11
end
self:SetColor(r, g, b, a) local function OnAcquire(self)
if ColorPickerFrame:IsVisible() then self.HasAlpha = false
--colorpicker is still open self:SetColor(0,0,0,1)
self:Fire("OnValueChanged", r, g, b, a)
else
--colorpicker is closed, color callback is first, ignore it,
--alpha callback is the final call after it closes so confirm now
if isAlpha then
self:Fire("OnValueConfirmed", r, g, b, a)
end
end
end
--[[-----------------------------------------------------------------------------
Scripts
-------------------------------------------------------------------------------]]
local function Control_OnEnter(frame)
frame.obj:Fire("OnEnter")
end
local function Control_OnLeave(frame)
frame.obj:Fire("OnLeave")
end
local function ColorSwatch_OnClick(frame)
HideUIPanel(ColorPickerFrame)
local self = frame.obj
if not self.disabled then
ColorPickerFrame:SetFrameStrata("FULLSCREEN_DIALOG")
ColorPickerFrame.func = function()
local r, g, b = ColorPickerFrame:GetColorRGB()
local a = 1 - OpacitySliderFrame:GetValue()
ColorCallback(self, r, g, b, a)
end
ColorPickerFrame.hasOpacity = self.HasAlpha
ColorPickerFrame.opacityFunc = function()
local r, g, b = ColorPickerFrame:GetColorRGB()
local a = 1 - OpacitySliderFrame:GetValue()
ColorCallback(self, r, g, b, a, true)
end
local r, g, b, a = self.r, self.g, self.b, self.a
if self.HasAlpha then
ColorPickerFrame.opacity = 1 - (a or 0)
end
ColorPickerFrame:SetColorRGB(r, g, b)
ColorPickerFrame.cancelFunc = function()
ColorCallback(self, r, g, b, a, true)
end
ShowUIPanel(ColorPickerFrame)
end
AceGUI:ClearFocus()
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
self:SetHeight(24) self:SetHeight(24)
self:SetWidth(200) self:SetWidth(200)
self:SetHasAlpha(false) end
self:SetColor(0, 0, 0, 1)
self:SetDisabled(nil) local function SetLabel(self, text)
self:SetLabel(nil)
end,
-- ["OnRelease"] = nil,
["SetLabel"] = function(self, text)
self.text:SetText(text) self.text:SetText(text)
end, end
["SetColor"] = function(self, r, g, b, a) local function SetColor(self,r,g,b,a)
self.r = r self.r = r
self.g = g self.g = g
self.b = b self.b = b
self.a = a or 1 self.a = a or 1
self.colorSwatch:SetVertexColor(r, g, b, a) self.colorSwatch:SetVertexColor(r,g,b,a)
end, end
["SetHasAlpha"] = function(self, HasAlpha) local function Control_OnEnter(this)
this.obj:Fire("OnEnter")
end
local function Control_OnLeave(this)
this.obj:Fire("OnLeave")
end
local function SetHasAlpha(self, HasAlpha)
self.HasAlpha = HasAlpha self.HasAlpha = HasAlpha
end, end
["SetDisabled"] = function(self, disabled) local function ColorCallback(self,r,g,b,a,isAlpha)
if not self.HasAlpha then
a = 1
end
self:SetColor(r,g,b,a)
if ColorPickerFrame:IsVisible() then
--colorpicker is still open
self:Fire("OnValueChanged",r,g,b,a)
else
--colorpicker is closed, color callback is first, ignore it,
--alpha callback is the final call after it closes so confirm now
if isAlpha then
self:Fire("OnValueConfirmed",r,g,b,a)
end
end
end
local function ColorSwatch_OnClick(this)
HideUIPanel(ColorPickerFrame)
local self = this.obj
if not self.disabled then
ColorPickerFrame:SetFrameStrata("FULLSCREEN_DIALOG")
ColorPickerFrame.func = function()
local r,g,b = ColorPickerFrame:GetColorRGB()
local a = 1 - OpacitySliderFrame:GetValue()
ColorCallback(self,r,g,b,a)
end
ColorPickerFrame.hasOpacity = self.HasAlpha
ColorPickerFrame.opacityFunc = function()
local r,g,b = ColorPickerFrame:GetColorRGB()
local a = 1 - OpacitySliderFrame:GetValue()
ColorCallback(self,r,g,b,a,true)
end
local r, g, b, a = self.r, self.g, self.b, self.a
if self.HasAlpha then
ColorPickerFrame.opacity = 1 - (a or 0)
end
ColorPickerFrame:SetColorRGB(r, g, b)
ColorPickerFrame.cancelFunc = function()
ColorCallback(self,r,g,b,a,true)
end
ShowUIPanel(ColorPickerFrame)
end
AceGUI:ClearFocus()
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
end
local function SetDisabled(self, disabled)
self.disabled = disabled self.disabled = disabled
if self.disabled then if self.disabled then
self.frame:Disable() self.frame:Disable()
self.text:SetTextColor(0.5, 0.5, 0.5) self.text:SetTextColor(0.5,0.5,0.5)
else else
self.frame:Enable() self.frame:Enable()
self.text:SetTextColor(1, 1, 1) self.text:SetTextColor(1,1,1)
end end
end end
}
--[[----------------------------------------------------------------------------- local function Constructor()
Constructor local frame = CreateFrame("Button",nil,UIParent)
-------------------------------------------------------------------------------]] local self = {}
local function Constructor() self.type = Type
local frame = CreateFrame("Button", nil, UIParent)
frame:Hide()
frame:EnableMouse(true) self.OnRelease = OnRelease
frame:SetScript("OnEnter", Control_OnEnter) self.OnAcquire = OnAcquire
frame:SetScript("OnLeave", Control_OnLeave)
frame:SetScript("OnClick", ColorSwatch_OnClick) self.SetLabel = SetLabel
self.SetColor = SetColor
self.SetDisabled = SetDisabled
self.SetHasAlpha = SetHasAlpha
self.frame = frame
frame.obj = self
local text = frame:CreateFontString(nil,"OVERLAY","GameFontHighlight")
self.text = text
text:SetJustifyH("LEFT")
text:SetTextColor(1,1,1)
frame:SetHeight(24)
frame:SetWidth(200)
text:SetHeight(24)
frame:SetScript("OnClick", ColorSwatch_OnClick)
frame:SetScript("OnEnter",Control_OnEnter)
frame:SetScript("OnLeave",Control_OnLeave)
local colorSwatch = frame:CreateTexture(nil, "OVERLAY")
self.colorSwatch = colorSwatch
colorSwatch:SetWidth(19)
colorSwatch:SetHeight(19)
colorSwatch:SetTexture("Interface\\ChatFrame\\ChatFrameColorSwatch")
local texture = frame:CreateTexture(nil, "BACKGROUND")
colorSwatch.texture = texture
texture:SetWidth(16)
texture:SetHeight(16)
texture:SetTexture(1,1,1)
texture:Show()
local checkers = frame:CreateTexture(nil, "BACKGROUND")
colorSwatch.checkers = checkers
checkers:SetTexture("Tileset\\Generic\\Checkers")
checkers:SetDesaturated(true)
checkers:SetVertexColor(1,1,1,0.75)
checkers:SetTexCoord(.25,0,0.5,.25)
checkers:SetWidth(14)
checkers:SetHeight(14)
checkers:Show()
local highlight = frame:CreateTexture(nil, "BACKGROUND")
self.highlight = highlight
highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight")
highlight:SetBlendMode("ADD")
highlight:SetAllPoints(frame)
highlight:Hide()
texture:SetPoint("CENTER", colorSwatch, "CENTER")
checkers:SetPoint("CENTER", colorSwatch, "CENTER")
colorSwatch:SetPoint("LEFT", frame, "LEFT", 0, 0)
text:SetPoint("LEFT",colorSwatch,"RIGHT",2,0)
text:SetPoint("RIGHT",frame,"RIGHT")
local colorSwatch = frame:CreateTexture(nil, "OVERLAY") AceGUI:RegisterAsWidget(self)
colorSwatch:SetWidth(19) return self
colorSwatch:SetHeight(19)
colorSwatch:SetTexture("Interface\\ChatFrame\\ChatFrameColorSwatch")
colorSwatch:SetPoint("LEFT")
local texture = frame:CreateTexture(nil, "BACKGROUND")
texture:SetWidth(16)
texture:SetHeight(16)
texture:SetTexture(1, 1, 1)
texture:SetPoint("CENTER", colorSwatch)
texture:Show()
local checkers = frame:CreateTexture(nil, "BACKGROUND")
checkers:SetWidth(14)
checkers:SetHeight(14)
checkers:SetTexture("Tileset\\Generic\\Checkers")
checkers:SetTexCoord(.25, 0, 0.5, .25)
checkers:SetDesaturated(true)
checkers:SetVertexColor(1, 1, 1, 0.75)
checkers:SetPoint("CENTER", colorSwatch)
checkers:Show()
local text = frame:CreateFontString(nil,"OVERLAY","GameFontHighlight")
text:SetHeight(24)
text:SetJustifyH("LEFT")
text:SetTextColor(1, 1, 1)
text:SetPoint("LEFT", colorSwatch, "RIGHT", 2, 0)
text:SetPoint("RIGHT")
--local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
--highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight")
--highlight:SetBlendMode("ADD")
--highlight:SetAllPoints(frame)
local widget = {
colorSwatch = colorSwatch,
text = text,
frame = frame,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end end
return AceGUI:RegisterAsWidget(widget) AceGUI:RegisterWidgetType(Type,Constructor,Version)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -0,0 +1,178 @@
local AceGUI = LibStub("AceGUI-3.0")
-- Lua APIs
local assert, pairs, type = assert, pairs, type
-- WoW APIs
local CreateFrame = CreateFrame
--[[
Selection Group controls all have an interface to select a group for thier contents
None of them will auto size to thier contents, and should usually be used with a scrollframe
unless you know that the controls will fit inside
]]
--------------------------
-- Dropdown Group --
--------------------------
--[[
Events :
OnGroupSelected
]]
do
local Type = "DropdownGroup"
local Version = 13
local function OnAcquire(self)
self.dropdown:SetText("")
self:SetDropdownWidth(200)
self:SetTitle("")
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self.dropdown.list = nil
self.status = nil
for k in pairs(self.localstatus) do
self.localstatus[k] = nil
end
end
local PaneBackdrop = {
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 3, right = 3, top = 5, bottom = 3 }
}
local function SetTitle(self,title)
self.titletext:SetText(title)
self.dropdown.frame:ClearAllPoints()
if title and title ~= "" then
self.dropdown.frame:SetPoint("TOPRIGHT", self.frame, "TOPRIGHT", -2, 0)
else
self.dropdown.frame:SetPoint("TOPLEFT", self.frame, "TOPLEFT", -1, 0)
end
end
local function SelectedGroup(self,event,value)
local group = self.parentgroup
local status = group.status or group.localstatus
status.selected = value
self.parentgroup:Fire("OnGroupSelected", value)
end
local function SetGroupList(self,list)
self.dropdown:SetList(list)
end
-- called to set an external table to store status in
local function SetStatusTable(self, status)
assert(type(status) == "table")
self.status = status
end
local function SetGroup(self,group)
self.dropdown:SetValue(group)
local status = self.status or self.localstatus
status.selected = group
self:Fire("OnGroupSelected", group)
end
local function OnWidthSet(self, width)
local content = self.content
local contentwidth = width - 26
if contentwidth < 0 then
contentwidth = 0
end
content:SetWidth(contentwidth)
content.width = contentwidth
end
local function OnHeightSet(self, height)
local content = self.content
local contentheight = height - 63
if contentheight < 0 then
contentheight = 0
end
content:SetHeight(contentheight)
content.height = contentheight
end
local function LayoutFinished(self, width, height)
self:SetHeight((height or 0) + 63)
end
local function SetDropdownWidth(self, width)
self.dropdown:SetWidth(width)
end
local function Constructor()
local frame = CreateFrame("Frame")
local self = {}
self.type = Type
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetTitle = SetTitle
self.SetGroupList = SetGroupList
self.SetGroup = SetGroup
self.SetStatusTable = SetStatusTable
self.SetDropdownWidth = SetDropdownWidth
self.OnWidthSet = OnWidthSet
self.OnHeightSet = OnHeightSet
self.LayoutFinished = LayoutFinished
self.localstatus = {}
self.frame = frame
frame.obj = self
frame:SetHeight(100)
frame:SetWidth(100)
frame:SetFrameStrata("FULLSCREEN_DIALOG")
local titletext = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
titletext:SetPoint("TOPLEFT", frame, "TOPLEFT", 4, -5)
titletext:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -4, -5)
titletext:SetJustifyH("LEFT")
titletext:SetHeight(18)
self.titletext = titletext
local dropdown = AceGUI:Create("Dropdown")
self.dropdown = dropdown
dropdown.frame:SetParent(frame)
dropdown.frame:SetFrameLevel(dropdown.frame:GetFrameLevel() + 2)
dropdown.parentgroup = self
dropdown:SetCallback("OnValueChanged",SelectedGroup)
dropdown.frame:SetPoint("TOPLEFT",frame,"TOPLEFT", -1, 0)
dropdown.frame:Show()
dropdown:SetLabel("")
local border = CreateFrame("Frame",nil,frame)
self.border = border
border:SetPoint("TOPLEFT",frame,"TOPLEFT",0,-26)
border:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,3)
border:SetBackdrop(PaneBackdrop)
border:SetBackdropColor(0.1,0.1,0.1,0.5)
border:SetBackdropBorderColor(0.4,0.4,0.4)
--Container Support
local content = CreateFrame("Frame",nil,border)
self.content = content
content.obj = self
content:SetPoint("TOPLEFT",border,"TOPLEFT",10,-10)
content:SetPoint("BOTTOMRIGHT",border,"BOTTOMRIGHT",-10,10)
AceGUI:RegisterAsContainer(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end
@@ -1,16 +1,11 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
EditBox Widget
-------------------------------------------------------------------------------]]
local Type, Version = "EditBox", 23
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs -- Lua APIs
local tostring, pairs = tostring, pairs local tostring = tostring
-- WoW APIs -- WoW APIs
local PlaySound = PlaySound local PlaySound = PlaySound
local GetCursorInfo, ClearCursor, GetSpellInfo = GetCursorInfo, ClearCursor, GetSpellInfo local GetCursorInfo, ClearCursor, GetSpellName = GetCursorInfo, ClearCursor, GetSpellName
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
local _G = _G local _G = _G
@@ -18,16 +13,16 @@ local _G = _G
-- List them here for Mikk's FindGlobals script -- List them here for Mikk's FindGlobals script
-- GLOBALS: AceGUIEditBoxInsertLink, ChatFontNormal, OKAY -- GLOBALS: AceGUIEditBoxInsertLink, ChatFontNormal, OKAY
--[[----------------------------------------------------------------------------- local Type = "EditBox"
Support functions local Version = 14
-------------------------------------------------------------------------------]]
if not AceGUIEditBoxInsertLink then if not AceGUIEditBoxInsertLink then
-- upgradeable hook -- upgradeable hook
hooksecurefunc("ChatEdit_InsertLink", function(...) return _G.AceGUIEditBoxInsertLink(...) end) hooksecurefunc("ChatEdit_InsertLink", function(...) return _G.AceGUIEditBoxInsertLink(...) end)
end end
function _G.AceGUIEditBoxInsertLink(text) function _G.AceGUIEditBoxInsertLink(text)
for i = 1, AceGUI:GetWidgetCount(Type) do for i = 1, AceGUI:GetNextWidgetNum(Type)-1 do
local editbox = _G["AceGUI-3.0EditBox"..i] local editbox = _G["AceGUI-3.0EditBox"..i]
if editbox and editbox:IsVisible() and editbox:HasFocus() then if editbox and editbox:IsVisible() and editbox:HasFocus() then
editbox:Insert(text) editbox:Insert(text)
@@ -36,93 +31,103 @@ function _G.AceGUIEditBoxInsertLink(text)
end end
end end
local function ShowButton(self)
if not self.disablebutton then
self.button:Show()
self.editbox:SetTextInsets(0, 20, 3, 3)
end
end
local function HideButton(self) --------------------------
self.button:Hide() -- Edit box --
self.editbox:SetTextInsets(0, 0, 3, 3) --------------------------
end --[[
Events :
OnTextChanged
OnEnterPressed
--[[----------------------------------------------------------------------------- ]]
Scripts do
-------------------------------------------------------------------------------]] local function OnAcquire(self)
local function Control_OnEnter(frame) self:SetHeight(26)
frame.obj:Fire("OnEnter")
end
local function Control_OnLeave(frame)
frame.obj:Fire("OnLeave")
end
local function EditBox_OnEscapePressed(frame)
AceGUI:ClearFocus()
end
local function EditBox_OnEnterPressed(frame)
local self = frame.obj
local value = frame:GetText()
local cancel = self:Fire("OnEnterPressed", value)
if not cancel then
PlaySound("igMainMenuOptionCheckBoxOn")
HideButton(self)
end
end
local function EditBox_OnReceiveDrag(frame)
local self = frame.obj
local type, id, info = GetCursorInfo()
if type == "item" then
self:SetText(info)
self:Fire("OnEnterPressed", info)
ClearCursor()
elseif type == "spell" then
local name = GetSpellInfo(id, info)
self:SetText(name)
self:Fire("OnEnterPressed", name)
ClearCursor()
end
HideButton(self)
AceGUI:ClearFocus()
end
local function EditBox_OnTextChanged(frame)
local self = frame.obj
local value = frame:GetText()
if tostring(value) ~= tostring(self.lasttext) then
self:Fire("OnTextChanged", value)
self.lasttext = value
ShowButton(self)
end
end
local function Button_OnClick(frame)
local editbox = frame.obj.editbox
editbox:ClearFocus()
EditBox_OnEnterPressed(editbox)
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
-- height is controlled by SetLabel
self:SetWidth(200) self:SetWidth(200)
self:SetDisabled(false) self:SetDisabled(false)
self:SetLabel() self:SetLabel()
self.showbutton = true
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self:SetDisabled(false)
self:SetText() self:SetText()
self:DisableButton(false) end
self:SetMaxLetters(0)
end, local function Control_OnEnter(this)
this.obj:Fire("OnEnter")
-- ["OnRelease"] = nil, end
["SetDisabled"] = function(self, disabled) local function Control_OnLeave(this)
this.obj:Fire("OnLeave")
end
local function EditBox_OnEscapePressed(this)
this:ClearFocus()
end
local function ShowButton(self)
if self.showbutton then
self.button:Show()
self.editbox:SetTextInsets(0,20,3,3)
end
end
local function HideButton(self)
self.button:Hide()
self.editbox:SetTextInsets(0,0,3,3)
end
local function EditBox_OnEnterPressed(this)
local self = this.obj
local value = this:GetText()
local cancel = self:Fire("OnEnterPressed",value)
if not cancel then
PlaySound("igMainMenuOptionCheckBoxOn")
HideButton(self)
end
end
local function Button_OnClick(this)
local editbox = this.obj.editbox
editbox:ClearFocus()
EditBox_OnEnterPressed(editbox)
end
local function EditBox_OnReceiveDrag(this)
local self = this.obj
local type, id, info = GetCursorInfo()
if type == "item" then
self:SetText(info)
self:Fire("OnEnterPressed",info)
ClearCursor()
elseif type == "spell" then
local name, rank = GetSpellName(id, info)
if rank and rank:match("%d") then
name = name.."("..rank..")"
end
self:SetText(name)
self:Fire("OnEnterPressed",name)
ClearCursor()
end
HideButton(self)
AceGUI:ClearFocus()
end
local function EditBox_OnTextChanged(this)
local self = this.obj
local value = this:GetText()
if tostring(value) ~= tostring(self.lasttext) then
self:Fire("OnTextChanged",value)
self.lasttext = value
ShowButton(self)
end
end
local function SetDisabled(self, disabled)
self.disabled = disabled self.disabled = disabled
if disabled then if disabled then
self.editbox:EnableMouse(false) self.editbox:EnableMouse(false)
@@ -134,20 +139,16 @@ local methods = {
self.editbox:SetTextColor(1,1,1) self.editbox:SetTextColor(1,1,1)
self.label:SetTextColor(1,.82,0) self.label:SetTextColor(1,.82,0)
end end
end, end
["SetText"] = function(self, text) local function SetText(self, text)
self.lasttext = text or "" self.lasttext = text or ""
self.editbox:SetText(text or "") self.editbox:SetText(text or "")
self.editbox:SetCursorPosition(0) self.editbox:SetCursorPosition(0)
HideButton(self) HideButton(self)
end, end
["GetText"] = function(self, text) local function SetLabel(self, text)
return self.editbox:GetText()
end,
["SetLabel"] = function(self, text)
if text and text ~= "" then if text and text ~= "" then
self.label:SetText(text) self.label:SetText(text)
self.label:Show() self.label:Show()
@@ -161,72 +162,74 @@ local methods = {
self:SetHeight(26) self:SetHeight(26)
self.alignoffset = 12 self.alignoffset = 12
end end
end,
["DisableButton"] = function(self, disabled)
self.disablebutton = disabled
if disabled then
HideButton(self)
end
end,
["SetMaxLetters"] = function (self, num)
self.editbox:SetMaxLetters(num or 0)
end end
}
--[[----------------------------------------------------------------------------- local function Constructor()
Constructor local num = AceGUI:GetNextWidgetNum(Type)
-------------------------------------------------------------------------------]] local frame = CreateFrame("Frame",nil,UIParent)
local function Constructor() local editbox = CreateFrame("EditBox","AceGUI-3.0EditBox"..num,frame,"InputBoxTemplate")
local num = AceGUI:GetNextWidgetNum(Type)
local frame = CreateFrame("Frame", nil, UIParent) local self = {}
frame:Hide() self.type = Type
self.num = num
local editbox = CreateFrame("EditBox", "AceGUI-3.0EditBox"..num, frame, "InputBoxTemplate") self.OnRelease = OnRelease
editbox:SetAutoFocus(false) self.OnAcquire = OnAcquire
editbox:SetFontObject(ChatFontNormal)
editbox:SetScript("OnEnter", Control_OnEnter)
editbox:SetScript("OnLeave", Control_OnLeave)
editbox:SetScript("OnEscapePressed", EditBox_OnEscapePressed)
editbox:SetScript("OnEnterPressed", EditBox_OnEnterPressed)
editbox:SetScript("OnTextChanged", EditBox_OnTextChanged)
editbox:SetScript("OnReceiveDrag", EditBox_OnReceiveDrag)
editbox:SetScript("OnMouseDown", EditBox_OnReceiveDrag)
editbox:SetTextInsets(0, 0, 3, 3)
editbox:SetMaxLetters(256)
editbox:SetPoint("BOTTOMLEFT", 6, 0)
editbox:SetPoint("BOTTOMRIGHT")
editbox:SetHeight(19)
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall") self.SetDisabled = SetDisabled
label:SetPoint("TOPLEFT", 0, -2) self.SetText = SetText
label:SetPoint("TOPRIGHT", 0, -2) self.SetLabel = SetLabel
label:SetJustifyH("LEFT")
label:SetHeight(18) self.frame = frame
frame.obj = self
self.editbox = editbox
editbox.obj = self
self.alignoffset = 30
frame:SetHeight(44)
frame:SetWidth(200)
local button = CreateFrame("Button", nil, editbox, "UIPanelButtonTemplate") editbox:SetScript("OnEnter",Control_OnEnter)
button:SetWidth(40) editbox:SetScript("OnLeave",Control_OnLeave)
button:SetHeight(20)
button:SetPoint("RIGHT", -2, 0) editbox:SetAutoFocus(false)
button:SetText(OKAY) editbox:SetFontObject(ChatFontNormal)
button:SetScript("OnClick", Button_OnClick) editbox:SetScript("OnEscapePressed",EditBox_OnEscapePressed)
button:Hide() editbox:SetScript("OnEnterPressed",EditBox_OnEnterPressed)
editbox:SetScript("OnTextChanged",EditBox_OnTextChanged)
editbox:SetScript("OnReceiveDrag", EditBox_OnReceiveDrag)
editbox:SetScript("OnMouseDown", EditBox_OnReceiveDrag)
local widget = { editbox:SetTextInsets(0,0,3,3)
alignoffset = 30, editbox:SetMaxLetters(256)
editbox = editbox,
label = label, editbox:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT",6,0)
button = button, editbox:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0)
frame = frame, editbox:SetHeight(19)
type = Type
} local label = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall")
for method, func in pairs(methods) do label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,-2)
widget[method] = func label:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,-2)
label:SetJustifyH("LEFT")
label:SetHeight(18)
self.label = label
local button = CreateFrame("Button",nil,editbox,"UIPanelButtonTemplate")
button:SetWidth(40)
button:SetHeight(20)
button:SetPoint("RIGHT",editbox,"RIGHT",-2,0)
button:SetText(OKAY)
button:SetScript("OnClick", Button_OnClick)
button:Hide()
self.button = button
button.obj = self
AceGUI:RegisterAsWidget(self)
return self
end end
editbox.obj, button.obj = widget, widget
AceGUI:RegisterWidgetType(Type,Constructor,Version)
return AceGUI:RegisterAsWidget(widget)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -0,0 +1,308 @@
local AceGUI = LibStub("AceGUI-3.0")
-- Lua APIs
local pairs, assert, type = pairs, assert, type
-- WoW APIs
local PlaySound = PlaySound
local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: CLOSE
----------------
-- Main Frame --
----------------
--[[
Events :
OnClose
]]
do
local Type = "Frame"
local Version = 11
local FrameBackdrop = {
bgFile="Interface\\DialogFrame\\UI-DialogBox-Background",
edgeFile="Interface\\DialogFrame\\UI-DialogBox-Border",
tile = true, tileSize = 32, edgeSize = 32,
insets = { left = 8, right = 8, top = 8, bottom = 8 }
}
local PaneBackdrop = {
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 3, right = 3, top = 5, bottom = 3 }
}
local function frameOnClose(this)
this.obj:Fire("OnClose")
end
local function closeOnClick(this)
PlaySound("gsTitleOptionExit")
this.obj:Hide()
end
local function frameOnMouseDown(this)
AceGUI:ClearFocus()
end
local function titleOnMouseDown(this)
this:GetParent():StartMoving()
AceGUI:ClearFocus()
end
local function frameOnMouseUp(this)
local frame = this:GetParent()
frame:StopMovingOrSizing()
local self = frame.obj
local status = self.status or self.localstatus
status.width = frame:GetWidth()
status.height = frame:GetHeight()
status.top = frame:GetTop()
status.left = frame:GetLeft()
end
local function sizerseOnMouseDown(this)
this:GetParent():StartSizing("BOTTOMRIGHT")
AceGUI:ClearFocus()
end
local function sizersOnMouseDown(this)
this:GetParent():StartSizing("BOTTOM")
AceGUI:ClearFocus()
end
local function sizereOnMouseDown(this)
this:GetParent():StartSizing("RIGHT")
AceGUI:ClearFocus()
end
local function SetTitle(self,title)
self.titletext:SetText(title)
end
local function SetStatusText(self,text)
self.statustext:SetText(text)
end
local function Hide(self)
self.frame:Hide()
end
local function Show(self)
self.frame:Show()
end
local function OnAcquire(self)
self.frame:SetParent(UIParent)
self.frame:SetFrameStrata("FULLSCREEN_DIALOG")
self:ApplyStatus()
self:Show()
end
local function OnRelease(self)
self.status = nil
for k in pairs(self.localstatus) do
self.localstatus[k] = nil
end
end
-- called to set an external table to store status in
local function SetStatusTable(self, status)
assert(type(status) == "table")
self.status = status
self:ApplyStatus()
end
local function ApplyStatus(self)
local status = self.status or self.localstatus
local frame = self.frame
self:SetWidth(status.width or 700)
self:SetHeight(status.height or 500)
if status.top and status.left then
frame:SetPoint("TOP",UIParent,"BOTTOM",0,status.top)
frame:SetPoint("LEFT",UIParent,"LEFT",status.left,0)
else
frame:SetPoint("CENTER",UIParent,"CENTER")
end
end
local function OnWidthSet(self, width)
local content = self.content
local contentwidth = width - 34
if contentwidth < 0 then
contentwidth = 0
end
content:SetWidth(contentwidth)
content.width = contentwidth
end
local function OnHeightSet(self, height)
local content = self.content
local contentheight = height - 57
if contentheight < 0 then
contentheight = 0
end
content:SetHeight(contentheight)
content.height = contentheight
end
local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = "Frame"
self.Hide = Hide
self.Show = Show
self.SetTitle = SetTitle
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetStatusText = SetStatusText
self.SetStatusTable = SetStatusTable
self.ApplyStatus = ApplyStatus
self.OnWidthSet = OnWidthSet
self.OnHeightSet = OnHeightSet
self.localstatus = {}
self.frame = frame
frame.obj = self
frame:SetWidth(700)
frame:SetHeight(500)
frame:SetPoint("CENTER",UIParent,"CENTER",0,0)
frame:EnableMouse()
frame:SetMovable(true)
frame:SetResizable(true)
frame:SetFrameStrata("FULLSCREEN_DIALOG")
frame:SetScript("OnMouseDown", frameOnMouseDown)
frame:SetBackdrop(FrameBackdrop)
frame:SetBackdropColor(0,0,0,1)
frame:SetScript("OnHide",frameOnClose)
frame:SetMinResize(400,200)
frame:SetToplevel(true)
local closebutton = CreateFrame("Button",nil,frame,"UIPanelButtonTemplate")
closebutton:SetScript("OnClick", closeOnClick)
closebutton:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-27,17)
closebutton:SetHeight(20)
closebutton:SetWidth(100)
closebutton:SetText(CLOSE)
self.closebutton = closebutton
closebutton.obj = self
local statusbg = CreateFrame("Frame",nil,frame)
statusbg:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT",15,15)
statusbg:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-132,15)
statusbg:SetHeight(24)
statusbg:SetBackdrop(PaneBackdrop)
statusbg:SetBackdropColor(0.1,0.1,0.1)
statusbg:SetBackdropBorderColor(0.4,0.4,0.4)
self.statusbg = statusbg
local statustext = statusbg:CreateFontString(nil,"OVERLAY","GameFontNormal")
self.statustext = statustext
statustext:SetPoint("TOPLEFT",statusbg,"TOPLEFT",7,-2)
statustext:SetPoint("BOTTOMRIGHT",statusbg,"BOTTOMRIGHT",-7,2)
statustext:SetHeight(20)
statustext:SetJustifyH("LEFT")
statustext:SetText("")
local title = CreateFrame("Frame",nil,frame)
self.title = title
title:EnableMouse()
title:SetScript("OnMouseDown",titleOnMouseDown)
title:SetScript("OnMouseUp", frameOnMouseUp)
local titlebg = frame:CreateTexture(nil,"OVERLAY")
titlebg:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header")
titlebg:SetTexCoord(0.31,0.67,0,0.63)
titlebg:SetPoint("TOP",frame,"TOP",0,12)
titlebg:SetWidth(100)
titlebg:SetHeight(40)
local titlebg_l = frame:CreateTexture(nil,"OVERLAY")
titlebg_l:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header")
titlebg_l:SetTexCoord(0.21,0.31,0,0.63)
titlebg_l:SetPoint("RIGHT",titlebg,"LEFT",0,0)
titlebg_l:SetWidth(30)
titlebg_l:SetHeight(40)
local titlebg_right = frame:CreateTexture(nil,"OVERLAY")
titlebg_right:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header")
titlebg_right:SetTexCoord(0.67,0.77,0,0.63)
titlebg_right:SetPoint("LEFT",titlebg,"RIGHT",0,0)
titlebg_right:SetWidth(30)
titlebg_right:SetHeight(40)
title:SetAllPoints(titlebg)
local titletext = title:CreateFontString(nil,"OVERLAY","GameFontNormal")
titletext:SetPoint("TOP",titlebg,"TOP",0,-14)
self.titletext = titletext
local sizer_se = CreateFrame("Frame",nil,frame)
sizer_se:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0)
sizer_se:SetWidth(25)
sizer_se:SetHeight(25)
sizer_se:EnableMouse()
sizer_se:SetScript("OnMouseDown",sizerseOnMouseDown)
sizer_se:SetScript("OnMouseUp", frameOnMouseUp)
self.sizer_se = sizer_se
local line1 = sizer_se:CreateTexture(nil, "BACKGROUND")
self.line1 = line1
line1:SetWidth(14)
line1:SetHeight(14)
line1:SetPoint("BOTTOMRIGHT", -8, 8)
line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
local x = 0.1 * 14/17
line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)
local line2 = sizer_se:CreateTexture(nil, "BACKGROUND")
self.line2 = line2
line2:SetWidth(8)
line2:SetHeight(8)
line2:SetPoint("BOTTOMRIGHT", -8, 8)
line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
local x = 0.1 * 8/17
line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)
local sizer_s = CreateFrame("Frame",nil,frame)
sizer_s:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-25,0)
sizer_s:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT",0,0)
sizer_s:SetHeight(25)
sizer_s:EnableMouse()
sizer_s:SetScript("OnMouseDown",sizersOnMouseDown)
sizer_s:SetScript("OnMouseUp", frameOnMouseUp)
self.sizer_s = sizer_s
local sizer_e = CreateFrame("Frame",nil,frame)
sizer_e:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,25)
sizer_e:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0)
sizer_e:SetWidth(25)
sizer_e:EnableMouse()
sizer_e:SetScript("OnMouseDown",sizereOnMouseDown)
sizer_e:SetScript("OnMouseUp", frameOnMouseUp)
self.sizer_e = sizer_e
--Container Support
local content = CreateFrame("Frame",nil,frame)
self.content = content
content.obj = self
content:SetPoint("TOPLEFT",frame,"TOPLEFT",17,-27)
content:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-17,40)
AceGUI:RegisterAsContainer(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end
@@ -1,78 +1,76 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
Heading Widget
-------------------------------------------------------------------------------]]
local Type, Version = "Heading", 20
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs
local pairs = pairs
-- WoW APIs -- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
--[[----------------------------------------------------------------------------- --------------------------
Methods -- Heading --
-------------------------------------------------------------------------------]] --------------------------
local methods = { do
["OnAcquire"] = function(self) local Type = "Heading"
self:SetText() local Version = 5
local function OnAcquire(self)
self:SetText("")
self:SetFullWidth() self:SetFullWidth()
self:SetHeight(18) self:SetHeight(18)
end, end
-- ["OnRelease"] = nil, local function OnRelease(self)
self.frame:ClearAllPoints()
["SetText"] = function(self, text) self.frame:Hide()
end
local function SetText(self, text)
self.label:SetText(text or "") self.label:SetText(text or "")
if text and text ~= "" then if (text or "") == "" then
self.left:SetPoint("RIGHT", self.label, "LEFT", -5, 0) self.left:SetPoint("RIGHT",self.frame,"RIGHT",-3,0)
self.right:Show()
else
self.left:SetPoint("RIGHT", -3, 0)
self.right:Hide() self.right:Hide()
else
self.left:SetPoint("RIGHT",self.label,"LEFT",-5,0)
self.right:Show()
end end
end end
}
--[[----------------------------------------------------------------------------- local function Constructor()
Constructor local frame = CreateFrame("Frame",nil,UIParent)
-------------------------------------------------------------------------------]] local self = {}
local function Constructor() self.type = Type
local frame = CreateFrame("Frame", nil, UIParent)
frame:Hide() self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetText = SetText
self.frame = frame
frame.obj = self
frame:SetHeight(18)
local label = frame:CreateFontString(nil,"BACKGROUND","GameFontNormal")
label:SetPoint("TOP",frame,"TOP",0,0)
label:SetPoint("BOTTOM",frame,"BOTTOM",0,0)
label:SetJustifyH("CENTER")
label:SetHeight(18)
self.label = label
local left = frame:CreateTexture(nil, "BACKGROUND")
self.left = left
left:SetHeight(8)
left:SetPoint("LEFT",frame,"LEFT",3,0)
left:SetPoint("RIGHT",label,"LEFT",-5,0)
left:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
left:SetTexCoord(0.81, 0.94, 0.5, 1)
local label = frame:CreateFontString(nil, "BACKGROUND", "GameFontNormal") local right = frame:CreateTexture(nil, "BACKGROUND")
label:SetPoint("TOP") self.right = right
label:SetPoint("BOTTOM") right:SetHeight(8)
label:SetJustifyH("CENTER") right:SetPoint("RIGHT",frame,"RIGHT",-3,0)
right:SetPoint("LEFT",label,"RIGHT",5,0)
local left = frame:CreateTexture(nil, "BACKGROUND") right:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
left:SetHeight(8) right:SetTexCoord(0.81, 0.94, 0.5, 1)
left:SetPoint("LEFT", 3, 0)
left:SetPoint("RIGHT", label, "LEFT", -5, 0) AceGUI:RegisterAsWidget(self)
left:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") return self
left:SetTexCoord(0.81, 0.94, 0.5, 1)
local right = frame:CreateTexture(nil, "BACKGROUND")
right:SetHeight(8)
right:SetPoint("RIGHT", -3, 0)
right:SetPoint("LEFT", label, "RIGHT", 5, 0)
right:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
right:SetTexCoord(0.81, 0.94, 0.5, 1)
local widget = {
label = label,
left = left,
right = right,
frame = frame,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end end
return AceGUI:RegisterAsWidget(widget) AceGUI:RegisterWidgetType(Type,Constructor,Version)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -1,48 +1,33 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
Icon Widget
-------------------------------------------------------------------------------]]
local Type, Version = "Icon", 20
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs -- Lua APIs
local select, pairs, print = select, pairs, print local select = select
-- WoW APIs -- WoW APIs
local CreateFrame, UIParent, GetBuildInfo = CreateFrame, UIParent, GetBuildInfo local CreateFrame, UIParent = CreateFrame, UIParent
--[[----------------------------------------------------------------------------- --------------------------
Scripts -- Label --
-------------------------------------------------------------------------------]] --------------------------
local function Control_OnEnter(frame) do
frame.obj:Fire("OnEnter") local Type = "Icon"
end local Version = 12
local function Control_OnLeave(frame) local function OnAcquire(self)
frame.obj:Fire("OnLeave")
end
local function Button_OnClick(frame, button)
frame.obj:Fire("OnClick", button)
AceGUI:ClearFocus()
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
self:SetHeight(110) self:SetHeight(110)
self:SetWidth(110) self:SetWidth(110)
self:SetLabel() self:SetLabel("")
self:SetImage(nil) self:SetImage(nil)
self:SetImageSize(64, 64) self:SetImageSize(64, 64)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self:SetDisabled(false) self:SetDisabled(false)
end, end
-- ["OnRelease"] = nil, local function SetLabel(self, text)
["SetLabel"] = function(self, text)
if text and text ~= "" then if text and text ~= "" then
self.label:Show() self.label:Show()
self.label:SetText(text) self.label:SetText(text)
@@ -51,23 +36,26 @@ local methods = {
self.label:Hide() self.label:Hide()
self:SetHeight(self.image:GetHeight() + 10) self:SetHeight(self.image:GetHeight() + 10)
end end
end, end
["SetImage"] = function(self, path, ...) local function SetImage(self, path, ...)
local image = self.image local image = self.image
image:SetTexture(path) image:SetTexture(path)
if image:GetTexture() then if image:GetTexture() then
local n = select("#", ...) self.imageshown = true
local n = select('#', ...)
if n == 4 or n == 8 then if n == 4 or n == 8 then
image:SetTexCoord(...) image:SetTexCoord(...)
else else
image:SetTexCoord(0, 1, 0, 1) image:SetTexCoord(0, 1, 0, 1)
end end
else
self.imageshown = nil
end end
end, end
["SetImageSize"] = function(self, width, height) local function SetImageSize(self, width, height)
self.image:SetWidth(width) self.image:SetWidth(width)
self.image:SetHeight(height) self.image:SetHeight(height)
--self.frame:SetWidth(width + 30) --self.frame:SetWidth(width + 30)
@@ -76,69 +64,86 @@ local methods = {
else else
self:SetHeight(height + 10) self:SetHeight(height + 10)
end end
end, end
["SetDisabled"] = function(self, disabled) local function SetDisabled(self, disabled)
self.disabled = disabled self.disabled = disabled
if disabled then if disabled then
self.frame:Disable() self.frame:Disable()
self.label:SetTextColor(0.5, 0.5, 0.5) self.label:SetTextColor(0.5,0.5,0.5)
self.image:SetVertexColor(0.5, 0.5, 0.5, 0.5) self.image:SetVertexColor(0.5, 0.5, 0.5, 0.5)
else else
self.frame:Enable() self.frame:Enable()
self.label:SetTextColor(1, 1, 1) self.label:SetTextColor(1,1,1)
self.image:SetVertexColor(1, 1, 1) self.image:SetVertexColor(1, 1, 1)
end end
end end
}
local function OnClick(this, button)
--[[----------------------------------------------------------------------------- this.obj:Fire("OnClick", button)
Constructor AceGUI:ClearFocus()
-------------------------------------------------------------------------------]]
local function Constructor()
local frame = CreateFrame("Button", nil, UIParent)
frame:Hide()
frame:EnableMouse(true)
frame:SetScript("OnEnter", Control_OnEnter)
frame:SetScript("OnLeave", Control_OnLeave)
frame:SetScript("OnClick", Button_OnClick)
local label = frame:CreateFontString(nil, "BACKGROUND", "GameFontHighlight")
label:SetPoint("BOTTOMLEFT")
label:SetPoint("BOTTOMRIGHT")
label:SetJustifyH("CENTER")
label:SetJustifyV("TOP")
label:SetHeight(18)
local image = frame:CreateTexture(nil, "BACKGROUND")
image:SetWidth(64)
image:SetHeight(64)
image:SetPoint("TOP", 0, -5)
local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
highlight:SetAllPoints(image)
highlight:SetTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight")
highlight:SetTexCoord(0, 1, 0.23, 0.77)
highlight:SetBlendMode("ADD")
local widget = {
label = label,
image = image,
frame = frame,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end end
-- SetText is deprecated, but keep it around for a while. (say, to WoW 4.0)
if (select(4, GetBuildInfo()) < 40000) then local function OnEnter(this)
widget.SetText = widget.SetLabel this.obj.highlight:Show()
else this.obj:Fire("OnEnter")
widget.SetText = function(self, ...) print("AceGUI-3.0-Icon: SetText is deprecated! Use SetLabel instead!"); self:SetLabel(...) end end
local function OnLeave(this)
this.obj.highlight:Hide()
this.obj:Fire("OnLeave")
end end
return AceGUI:RegisterAsWidget(widget) local function Constructor()
local frame = CreateFrame("Button",nil,UIParent)
local self = {}
self.type = Type
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetLabel = SetLabel
self.frame = frame
self.SetImage = SetImage
self.SetImageSize = SetImageSize
-- SetText should be deprecated along the way
self.SetText = SetLabel
self.SetDisabled = SetDisabled
frame.obj = self
frame:SetHeight(110)
frame:SetWidth(110)
frame:EnableMouse(true)
frame:SetScript("OnClick", OnClick)
frame:SetScript("OnLeave", OnLeave)
frame:SetScript("OnEnter", OnEnter)
local label = frame:CreateFontString(nil,"BACKGROUND","GameFontHighlight")
label:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT",0,0)
label:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0)
label:SetJustifyH("CENTER")
label:SetJustifyV("TOP")
label:SetHeight(18)
self.label = label
local image = frame:CreateTexture(nil,"BACKGROUND")
self.image = image
image:SetWidth(64)
image:SetHeight(64)
image:SetPoint("TOP",frame,"TOP",0,-5)
local highlight = frame:CreateTexture(nil,"OVERLAY")
self.highlight = highlight
highlight:SetAllPoints(image)
highlight:SetTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight")
highlight:SetTexCoord(0,1,0.23,0.77)
highlight:SetBlendMode("ADD")
highlight:Hide()
AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -0,0 +1,138 @@
local AceGUI = LibStub("AceGUI-3.0")
-- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent
-------------
-- Widgets --
-------------
--[[
Widgets must provide the following functions
Acquire() - Called when the object is aquired, should set everything to a default hidden state
Release() - Called when the object is Released, should remove any anchors and hide the Widget
And the following members
frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes
type - the type of the object, same as the name given to :RegisterWidget()
Widgets contain a table called userdata, this is a safe place to store data associated with the wigdet
It will be cleared automatically when a widget is released
Placing values directly into a widget object should be avoided
If the Widget can act as a container for other Widgets the following
content - frame or derivitive that children will be anchored to
The Widget can supply the following Optional Members
]]
--------------------------
-- Inline Group --
--------------------------
--[[
This is a simple grouping container, no selection
It will resize automatically to the height of the controls added to it
]]
do
local Type = "InlineGroup"
local Version = 6
local function OnAcquire(self)
self:SetWidth(300)
self:SetHeight(100)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
end
local PaneBackdrop = {
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 3, right = 3, top = 5, bottom = 3 }
}
local function SetTitle(self,title)
self.titletext:SetText(title)
end
local function LayoutFinished(self, width, height)
if self.noAutoHeight then return end
self:SetHeight((height or 0) + 40)
end
local function OnWidthSet(self, width)
local content = self.content
local contentwidth = width - 20
if contentwidth < 0 then
contentwidth = 0
end
content:SetWidth(contentwidth)
content.width = contentwidth
end
local function OnHeightSet(self, height)
local content = self.content
local contentheight = height - 20
if contentheight < 0 then
contentheight = 0
end
content:SetHeight(contentheight)
content.height = contentheight
end
local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = Type
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetTitle = SetTitle
self.frame = frame
self.LayoutFinished = LayoutFinished
self.OnWidthSet = OnWidthSet
self.OnHeightSet = OnHeightSet
frame.obj = self
frame:SetHeight(100)
frame:SetWidth(100)
frame:SetFrameStrata("FULLSCREEN_DIALOG")
local titletext = frame:CreateFontString(nil,"OVERLAY","GameFontNormal")
titletext:SetPoint("TOPLEFT",frame,"TOPLEFT",14,0)
titletext:SetPoint("TOPRIGHT",frame,"TOPRIGHT",-14,0)
titletext:SetJustifyH("LEFT")
titletext:SetHeight(18)
self.titletext = titletext
local border = CreateFrame("Frame",nil,frame)
self.border = border
border:SetPoint("TOPLEFT",frame,"TOPLEFT",0,-17)
border:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-1,3)
border:SetBackdrop(PaneBackdrop)
border:SetBackdropColor(0.1,0.1,0.1,0.5)
border:SetBackdropBorderColor(0.4,0.4,0.4)
--Container Support
local content = CreateFrame("Frame",nil,border)
self.content = content
content.obj = self
content:SetPoint("TOPLEFT",border,"TOPLEFT",10,-10)
content:SetPoint("BOTTOMRIGHT",border,"BOTTOMRIGHT",-10,10)
AceGUI:RegisterAsContainer(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end
@@ -1,12 +1,7 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
InteractiveLabel Widget
-------------------------------------------------------------------------------]]
local Type, Version = "InteractiveLabel", 20
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs -- Lua APIs
local select, pairs = select, pairs local select, max = select, math.max
-- WoW APIs -- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
@@ -15,49 +10,137 @@ local CreateFrame, UIParent = CreateFrame, UIParent
-- List them here for Mikk's FindGlobals script -- List them here for Mikk's FindGlobals script
-- GLOBALS: GameFontHighlightSmall -- GLOBALS: GameFontHighlightSmall
--[[----------------------------------------------------------------------------- --------------------------
Scripts -- Label --
-------------------------------------------------------------------------------]] --------------------------
local function Control_OnEnter(frame) do
frame.obj:Fire("OnEnter") local Type = "InteractiveLabel"
end local Version = 6
local function Control_OnLeave(frame) local function OnAcquire(self)
frame.obj:Fire("OnLeave") self:SetHeight(18)
end self:SetWidth(200)
self:SetText("")
local function Label_OnClick(frame, button) self:SetImage(nil)
frame.obj:Fire("OnClick", button) self:SetColor()
AceGUI:ClearFocus() self:SetFontObject()
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
self:LabelOnAcquire()
self:SetHighlight() self:SetHighlight()
self:SetHighlightTexCoord() self:SetHighlightTexCoord()
end
local function OnRelease(self)
self:SetDisabled(false) self:SetDisabled(false)
end, self.frame:ClearAllPoints()
self.frame:Hide()
-- ["OnRelease"] = nil, end
["SetHighlight"] = function(self, ...) local function UpdateImageAnchor(self)
local width = self.frame.width or self.frame:GetWidth() or 0
local image = self.image
local label = self.label
local frame = self.frame
local height
label:ClearAllPoints()
image:ClearAllPoints()
if self.imageshown then
local imagewidth = image:GetWidth()
if (width - imagewidth) < 200 or (label:GetText() or "") == "" then
--image goes on top centered when less than 200 width for the text, or if there is no text
image:SetPoint("TOP",frame,"TOP",0,0)
label:SetPoint("TOP",image,"BOTTOM",0,0)
label:SetPoint("LEFT",frame,"LEFT",0,0)
label:SetWidth(width)
height = image:GetHeight() + label:GetHeight()
else
--image on the left
local imageheight = image:GetHeight()
local labelheight = label:GetHeight()
--center image with label
if imageheight > labelheight then
image:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
label:SetPoint("LEFT",image,"RIGHT",0,0)
else
label:SetPoint("TOPLEFT",frame,"TOPLEFT",imagewidth,0)
image:SetPoint("RIGHT",label,"LEFT",0,0)
end
label:SetWidth(width - imagewidth)
height = max(imageheight, labelheight)
end
else
--no image shown
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
label:SetWidth(width)
height = self.label:GetHeight()
end
self.resizing = true
self.frame:SetHeight(height)
self.frame.height = height
self.resizing = nil
end
local function SetText(self, text)
self.label:SetText(text or "")
UpdateImageAnchor(self)
end
local function SetColor(self, r, g, b)
if not (r and g and b) then
r, g, b = 1, 1, 1
end
self.label:SetVertexColor(r, g, b)
end
local function OnWidthSet(self, width)
if self.resizing then return end
UpdateImageAnchor(self)
end
local function SetImage(self, path, ...)
local image = self.image
image:SetTexture(path)
if image:GetTexture() then
self.imageshown = true
local n = select('#', ...)
if n == 4 or n == 8 then
image:SetTexCoord(...)
end
else
self.imageshown = nil
end
UpdateImageAnchor(self)
end
local function SetFont(self, font, height, flags)
self.label:SetFont(font, height, flags)
end
local function SetFontObject(self, font)
self.label:SetFontObject(font or GameFontHighlightSmall)
end
local function SetImageSize(self, width, height)
self.image:SetWidth(width)
self.image:SetHeight(height)
UpdateImageAnchor(self)
end
local function SetHighlight(self, ...)
self.highlight:SetTexture(...) self.highlight:SetTexture(...)
end, end
["SetHighlightTexCoord"] = function(self, ...) local function SetHighlightTexCoord(self, ...)
local c = select("#", ...) if select('#', ...) >= 1 then
if c == 4 or c == 8 then
self.highlight:SetTexCoord(...) self.highlight:SetTexCoord(...)
else else
self.highlight:SetTexCoord(0, 1, 0, 1) self.highlight:SetTexCoord(0, 1, 0, 1)
end end
end, end
["SetDisabled"] = function(self,disabled) local function SetDisabled(self,disabled)
self.disabled = disabled self.disabled = disabled
if disabled then if disabled then
self.frame:EnableMouse(false) self.frame:EnableMouse(false)
@@ -67,35 +150,70 @@ local methods = {
self.label:SetTextColor(1, 1, 1) self.label:SetTextColor(1, 1, 1)
end end
end end
}
local function OnEnter(this)
--[[----------------------------------------------------------------------------- this.obj.highlight:Show()
Constructor this.obj:Fire("OnEnter")
-------------------------------------------------------------------------------]] end
local function Constructor()
-- create a Label type that we will hijack local function OnLeave(this)
local label = AceGUI:Create("Label") this.obj.highlight:Hide()
this.obj:Fire("OnLeave")
local frame = label.frame end
frame:EnableMouse(true)
frame:SetScript("OnEnter", Control_OnEnter) local function OnClick(this, ...)
frame:SetScript("OnLeave", Control_OnLeave) this.obj:Fire("OnClick", ...)
frame:SetScript("OnMouseDown", Label_OnClick) AceGUI:ClearFocus()
local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
highlight:SetTexture(nil)
highlight:SetAllPoints()
highlight:SetBlendMode("ADD")
label.highlight = highlight
label.type = Type
label.LabelOnAcquire = label.OnAcquire
for method, func in pairs(methods) do
label[method] = func
end end
return label local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = Type
frame:EnableMouse(true)
frame:SetScript("OnEnter", OnEnter)
frame:SetScript("OnLeave", OnLeave)
frame:SetScript("OnMouseDown", OnClick)
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetText = SetText
self.SetColor = SetColor
self.frame = frame
self.OnWidthSet = OnWidthSet
self.SetImage = SetImage
self.SetImageSize = SetImageSize
self.SetFont = SetFont
self.SetFontObject = SetFontObject
self.SetHighlight = SetHighlight
self.SetHighlightTexCoord = SetHighlightTexCoord
self.SetDisabled = SetDisabled
frame.obj = self
frame:SetHeight(18)
frame:SetWidth(200)
local label = frame:CreateFontString(nil,"BACKGROUND","GameFontHighlightSmall")
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
label:SetWidth(200)
label:SetJustifyH("LEFT")
label:SetJustifyV("TOP")
self.label = label
local highlight = frame:CreateTexture(nil, "OVERLAY")
highlight:SetTexture(nil)
highlight:SetAllPoints()
highlight:SetBlendMode("ADD")
highlight:Hide()
self.highlight = highlight
local image = frame:CreateTexture(nil,"BACKGROUND")
self.image = image
AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -1,13 +1,6 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
Keybinding Widget
Set Keybindings in the Config UI.
-------------------------------------------------------------------------------]]
local Type, Version = "Keybinding", 21
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs -- Lua APIs
local pairs = pairs
-- WoW APIs -- WoW APIs
local IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown = IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown local IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown = IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown
@@ -17,102 +10,121 @@ local CreateFrame, UIParent = CreateFrame, UIParent
-- List them here for Mikk's FindGlobals script -- List them here for Mikk's FindGlobals script
-- GLOBALS: NOT_BOUND -- GLOBALS: NOT_BOUND
--[[----------------------------------------------------------------------------- --------------------------
Scripts -- Keybinding --
-------------------------------------------------------------------------------]] --------------------------
local function Control_OnEnter(frame) do
frame.obj:Fire("OnEnter") local Type = "Keybinding"
end local Version = 13
local function Control_OnLeave(frame) local ControlBackdrop = {
frame.obj:Fire("OnLeave") bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
end edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 3, right = 3, top = 3, bottom = 3 }
}
local function Keybinding_OnClick(frame, button) local function Control_OnEnter(this)
if button == "LeftButton" or button == "RightButton" then this.obj:Fire("OnEnter")
local self = frame.obj end
local function Control_OnLeave(this)
this.obj:Fire("OnLeave")
end
local function keybindingMsgFixWidth(this)
this:SetWidth(this.msg:GetWidth()+10)
this:SetScript("OnUpdate",nil)
end
local function Keybinding_OnClick(this, button)
if button == "LeftButton" or button == "RightButton" then
local self = this.obj
if self.waitingForKey then
this:EnableKeyboard(false)
self.msgframe:Hide()
this:UnlockHighlight()
self.waitingForKey = nil
else
this:EnableKeyboard(true)
self.msgframe:Show()
this:LockHighlight()
self.waitingForKey = true
end
end
AceGUI:ClearFocus()
end
local ignoreKeys = nil
local function Keybinding_OnKeyDown(this, key)
local self = this.obj
if self.waitingForKey then if self.waitingForKey then
frame:EnableKeyboard(false) local keyPressed = key
if keyPressed == "ESCAPE" then
keyPressed = ""
else
if not ignoreKeys then
ignoreKeys = {
["BUTTON1"] = true, ["BUTTON2"] = true,
["UNKNOWN"] = true,
["LSHIFT"] = true, ["LCTRL"] = true, ["LALT"] = true,
["RSHIFT"] = true, ["RCTRL"] = true, ["RALT"] = true,
}
end
if ignoreKeys[keyPressed] then return end
if IsShiftKeyDown() then
keyPressed = "SHIFT-"..keyPressed
end
if IsControlKeyDown() then
keyPressed = "CTRL-"..keyPressed
end
if IsAltKeyDown() then
keyPressed = "ALT-"..keyPressed
end
end
this:EnableKeyboard(false)
self.msgframe:Hide() self.msgframe:Hide()
frame:UnlockHighlight() this:UnlockHighlight()
self.waitingForKey = nil self.waitingForKey = nil
else
frame:EnableKeyboard(true) if not self.disabled then
self.msgframe:Show() self:SetKey(keyPressed)
frame:LockHighlight() self:Fire("OnKeyChanged",keyPressed)
self.waitingForKey = true
end
end
AceGUI:ClearFocus()
end
local ignoreKeys = {
["BUTTON1"] = true, ["BUTTON2"] = true,
["UNKNOWN"] = true,
["LSHIFT"] = true, ["LCTRL"] = true, ["LALT"] = true,
["RSHIFT"] = true, ["RCTRL"] = true, ["RALT"] = true,
}
local function Keybinding_OnKeyDown(frame, key)
local self = frame.obj
if self.waitingForKey then
local keyPressed = key
if keyPressed == "ESCAPE" then
keyPressed = ""
else
if ignoreKeys[keyPressed] then return end
if IsShiftKeyDown() then
keyPressed = "SHIFT-"..keyPressed
end
if IsControlKeyDown() then
keyPressed = "CTRL-"..keyPressed
end
if IsAltKeyDown() then
keyPressed = "ALT-"..keyPressed
end end
end end
end
frame:EnableKeyboard(false)
self.msgframe:Hide() local function Keybinding_OnMouseDown(this, button)
frame:UnlockHighlight() if button == "LeftButton" or button == "RightButton" then
self.waitingForKey = nil return
elseif button == "MiddleButton" then
if not self.disabled then button = "BUTTON3"
self:SetKey(keyPressed) elseif button == "Button4" then
self:Fire("OnKeyChanged", keyPressed) button = "BUTTON4"
elseif button == "Button5" then
button = "BUTTON5"
end end
Keybinding_OnKeyDown(this, button)
end end
end
local function OnAcquire(self)
local function Keybinding_OnMouseDown(frame, button)
if button == "LeftButton" or button == "RightButton" then
return
elseif button == "MiddleButton" then
button = "BUTTON3"
elseif button == "Button4" then
button = "BUTTON4"
elseif button == "Button5" then
button = "BUTTON5"
end
Keybinding_OnKeyDown(frame, button)
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
self:SetWidth(200) self:SetWidth(200)
self:SetHeight(44)
self:SetLabel("") self:SetLabel("")
self:SetKey("") self:SetKey("")
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self.waitingForKey = nil self.waitingForKey = nil
self.msgframe:Hide() self.msgframe:Hide()
self:SetDisabled(false) self:SetDisabled(false)
end, end
-- ["OnRelease"] = nil, local function SetDisabled(self, disabled)
["SetDisabled"] = function(self, disabled)
self.disabled = disabled self.disabled = disabled
if disabled then if disabled then
self.button:Disable() self.button:Disable()
@@ -121,9 +133,9 @@ local methods = {
self.button:Enable() self.button:Enable()
self.label:SetTextColor(1,1,1) self.label:SetTextColor(1,1,1)
end end
end, end
["SetKey"] = function(self, key) local function SetKey(self, key)
if (key or "") == "" then if (key or "") == "" then
self.button:SetText(NOT_BOUND) self.button:SetText(NOT_BOUND)
self.button:SetNormalFontObject("GameFontNormal") self.button:SetNormalFontObject("GameFontNormal")
@@ -131,17 +143,9 @@ local methods = {
self.button:SetText(key) self.button:SetText(key)
self.button:SetNormalFontObject("GameFontHighlight") self.button:SetNormalFontObject("GameFontHighlight")
end end
end, end
["GetKey"] = function(self) local function SetLabel(self, label)
local key = self.button:GetText()
if key == NOT_BOUND then
key = nil
end
return key
end,
["SetLabel"] = function(self, label)
self.label:SetText(label or "") self.label:SetText(label or "")
if (label or "") == "" then if (label or "") == "" then
self.alignoffset = nil self.alignoffset = nil
@@ -150,81 +154,77 @@ local methods = {
self.alignoffset = 30 self.alignoffset = 30
self:SetHeight(44) self:SetHeight(44)
end end
end,
}
--[[-----------------------------------------------------------------------------
Constructor
-------------------------------------------------------------------------------]]
local ControlBackdrop = {
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 3, right = 3, top = 3, bottom = 3 }
}
local function keybindingMsgFixWidth(frame)
frame:SetWidth(frame.msg:GetWidth() + 10)
frame:SetScript("OnUpdate", nil)
end
local function Constructor()
local name = "AceGUI30KeybindingButton" .. AceGUI:GetNextWidgetNum(Type)
local frame = CreateFrame("Frame", nil, UIParent)
local button = CreateFrame("Button", name, frame, "UIPanelButtonTemplate2")
button:EnableMouse(true)
button:RegisterForClicks("AnyDown")
button:SetScript("OnEnter", Control_OnEnter)
button:SetScript("OnLeave", Control_OnLeave)
button:SetScript("OnClick", Keybinding_OnClick)
button:SetScript("OnKeyDown", Keybinding_OnKeyDown)
button:SetScript("OnMouseDown", Keybinding_OnMouseDown)
button:SetPoint("BOTTOMLEFT")
button:SetPoint("BOTTOMRIGHT")
button:SetHeight(24)
local text = button:GetFontString()
text:SetPoint("LEFT", 7, 0)
text:SetPoint("RIGHT", -7, 0)
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
label:SetPoint("TOPLEFT")
label:SetPoint("TOPRIGHT")
label:SetJustifyH("CENTER")
label:SetHeight(18)
local msgframe = CreateFrame("Frame", nil, UIParent)
msgframe:SetHeight(30)
msgframe:SetBackdrop(ControlBackdrop)
msgframe:SetBackdropColor(0,0,0)
msgframe:SetFrameStrata("FULLSCREEN_DIALOG")
msgframe:SetFrameLevel(1000)
local msg = msgframe:CreateFontString(nil, "OVERLAY", "GameFontNormal")
msg:SetText("Press a key to bind, ESC to clear the binding or click the button again to cancel.")
msgframe.msg = msg
msg:SetPoint("TOPLEFT", 5, -5)
msgframe:SetScript("OnUpdate", keybindingMsgFixWidth)
msgframe:SetPoint("BOTTOM", button, "TOP")
msgframe:Hide()
local widget = {
button = button,
label = label,
msgframe = msgframe,
frame = frame,
alignoffset = 30,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end end
button.obj = widget
return AceGUI:RegisterAsWidget(widget) local function Constructor()
local num = AceGUI:GetNextWidgetNum(Type)
local frame = CreateFrame("Frame",nil,UIParent)
local button = CreateFrame("Button","AceGUI-3.0 KeybindingButton"..num,frame,"UIPanelButtonTemplate2")
local self = {}
self.type = Type
self.num = num
local text = button:GetFontString()
text:SetPoint("LEFT",button,"LEFT",7,0)
text:SetPoint("RIGHT",button,"RIGHT",-7,0)
button:SetScript("OnClick",Keybinding_OnClick)
button:SetScript("OnKeyDown",Keybinding_OnKeyDown)
button:SetScript("OnEnter",Control_OnEnter)
button:SetScript("OnLeave",Control_OnLeave)
button:SetScript("OnMouseDown",Keybinding_OnMouseDown)
button:RegisterForClicks("AnyDown")
button:EnableMouse()
button:SetHeight(24)
button:SetWidth(200)
button:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT",0,0)
button:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0)
frame:SetWidth(200)
frame:SetHeight(44)
self.alignoffset = 30
self.button = button
local label = frame:CreateFontString(nil,"OVERLAY","GameFontHighlight")
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
label:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0)
label:SetJustifyH("CENTER")
label:SetHeight(18)
self.label = label
local msgframe = CreateFrame("Frame",nil,UIParent)
msgframe:SetHeight(30)
msgframe:SetBackdrop(ControlBackdrop)
msgframe:SetBackdropColor(0,0,0)
msgframe:SetFrameStrata("FULLSCREEN_DIALOG")
msgframe:SetFrameLevel(1000)
self.msgframe = msgframe
local msg = msgframe:CreateFontString(nil,"OVERLAY","GameFontNormal")
msg:SetText("Press a key to bind, ESC to clear the binding or click the button again to cancel")
msgframe.msg = msg
msg:SetPoint("TOPLEFT",msgframe,"TOPLEFT",5,-5)
msgframe:SetScript("OnUpdate", keybindingMsgFixWidth)
msgframe:SetPoint("BOTTOM",button,"TOP",0,0)
msgframe:Hide()
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetLabel = SetLabel
self.SetDisabled = SetDisabled
self.SetKey = SetKey
self.frame = frame
frame.obj = self
button.obj = self
AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -1,13 +1,7 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
Label Widget
Displays text and optionally an icon.
-------------------------------------------------------------------------------]]
local Type, Version = "Label", 21
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs -- Lua APIs
local max, select, pairs = math.max, select, pairs local max, select = math.max, select
-- WoW APIs -- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
@@ -16,96 +10,91 @@ local CreateFrame, UIParent = CreateFrame, UIParent
-- List them here for Mikk's FindGlobals script -- List them here for Mikk's FindGlobals script
-- GLOBALS: GameFontHighlightSmall -- GLOBALS: GameFontHighlightSmall
--[[----------------------------------------------------------------------------- --------------------------
Support functions -- Label --
-------------------------------------------------------------------------------]] --------------------------
do
local function UpdateImageAnchor(self) local Type = "Label"
if self.resizing then return end local Version = 12
local frame = self.frame
local width = frame.width or frame:GetWidth() or 0
local image = self.image
local label = self.label
local height
label:ClearAllPoints()
image:ClearAllPoints()
if self.imageshown then
local imagewidth = image:GetWidth()
if (width - imagewidth) < 200 or (label:GetText() or "") == "" then
-- image goes on top centered when less than 200 width for the text, or if there is no text
image:SetPoint("TOP")
label:SetPoint("TOP", image, "BOTTOM")
label:SetPoint("LEFT")
label:SetWidth(width)
height = image:GetHeight() + label:GetHeight()
else
-- image on the left
image:SetPoint("TOPLEFT")
label:SetPoint("TOPLEFT", image, "TOPRIGHT", 4, 0)
label:SetWidth(width - imagewidth - 4)
height = max(image:GetHeight(), label:GetHeight())
end
else
-- no image shown
label:SetPoint("TOPLEFT")
label:SetWidth(width)
height = label:GetHeight()
end
self.resizing = true local function OnAcquire(self)
frame:SetHeight(height) self:SetHeight(18)
frame.height = height
self.resizing = nil
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
-- set the flag to stop constant size updates
self.resizing = true
-- height is set dynamically by the text and image size
self:SetWidth(200) self:SetWidth(200)
self:SetText() self:SetText("")
self:SetImage(nil) self:SetImage(nil)
self:SetImageSize(16, 16) self:SetImageSize(16, 16)
self:SetColor() self:SetColor()
self:SetFontObject() self:SetFontObject()
end
-- reset the flag
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
end
local function UpdateImageAnchor(self)
local width = self.frame.width or self.frame:GetWidth() or 0
local image = self.image
local label = self.label
local frame = self.frame
local height
label:ClearAllPoints()
image:ClearAllPoints()
if self.imageshown then
local imagewidth = image:GetWidth()
if (width - imagewidth) < 200 or (label:GetText() or "") == "" then
--image goes on top centered when less than 200 width for the text, or if there is no text
image:SetPoint("TOP",frame,"TOP",0,0)
label:SetPoint("TOP",image,"BOTTOM",0,0)
label:SetPoint("LEFT",frame,"LEFT",0,0)
label:SetWidth(width)
height = image:GetHeight() + label:GetHeight()
else
--image on the left
image:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
label:SetPoint("TOPLEFT",image,"TOPRIGHT",4,0)
label:SetWidth(width - imagewidth)
height = max(image:GetHeight(), label:GetHeight())
end
else
--no image shown
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
label:SetWidth(width)
height = self.label:GetHeight()
end
self.resizing = true
self.frame:SetHeight(height)
self.frame.height = height
self.resizing = nil self.resizing = nil
-- run the update explicitly end
local function SetText(self, text)
self.label:SetText(text or "")
UpdateImageAnchor(self) UpdateImageAnchor(self)
end, end
-- ["OnRelease"] = nil, local function SetColor(self, r, g, b)
["OnWidthSet"] = function(self, width)
UpdateImageAnchor(self)
end,
["SetText"] = function(self, text)
self.label:SetText(text)
UpdateImageAnchor(self)
end,
["SetColor"] = function(self, r, g, b)
if not (r and g and b) then if not (r and g and b) then
r, g, b = 1, 1, 1 r, g, b = 1, 1, 1
end end
self.label:SetVertexColor(r, g, b) self.label:SetVertexColor(r, g, b)
end, end
["SetImage"] = function(self, path, ...) local function OnWidthSet(self, width)
if self.resizing then return end
UpdateImageAnchor(self)
end
local function SetImage(self, path, ...)
local image = self.image local image = self.image
image:SetTexture(path) image:SetTexture(path)
if image:GetTexture() then if image:GetTexture() then
self.imageshown = true self.imageshown = true
local n = select("#", ...) local n = select('#', ...)
if n == 4 or n == 8 then if n == 4 or n == 8 then
image:SetTexCoord(...) image:SetTexCoord(...)
else else
@@ -115,48 +104,55 @@ local methods = {
self.imageshown = nil self.imageshown = nil
end end
UpdateImageAnchor(self) UpdateImageAnchor(self)
end, end
["SetFont"] = function(self, font, height, flags) local function SetFont(self, font, height, flags)
self.label:SetFont(font, height, flags) self.label:SetFont(font, height, flags)
end, end
["SetFontObject"] = function(self, font) local function SetFontObject(self, font)
self:SetFont((font or GameFontHighlightSmall):GetFont()) self.label:SetFontObject(font or GameFontHighlightSmall)
end, end
["SetImageSize"] = function(self, width, height) local function SetImageSize(self, width, height)
self.image:SetWidth(width) self.image:SetWidth(width)
self.image:SetHeight(height) self.image:SetHeight(height)
UpdateImageAnchor(self) UpdateImageAnchor(self)
end,
}
--[[-----------------------------------------------------------------------------
Constructor
-------------------------------------------------------------------------------]]
local function Constructor()
local frame = CreateFrame("Frame", nil, UIParent)
frame:Hide()
local label = frame:CreateFontString(nil, "BACKGROUND", "GameFontHighlightSmall")
label:SetJustifyH("LEFT")
label:SetJustifyV("TOP")
local image = frame:CreateTexture(nil, "BACKGROUND")
-- create widget
local widget = {
label = label,
image = image,
frame = frame,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end end
return AceGUI:RegisterAsWidget(widget) local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = Type
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetText = SetText
self.SetColor = SetColor
self.frame = frame
self.OnWidthSet = OnWidthSet
self.SetImage = SetImage
self.SetImageSize = SetImageSize
self.SetFont = SetFont
self.SetFontObject = SetFontObject
frame.obj = self
frame:SetHeight(18)
frame:SetWidth(200)
local label = frame:CreateFontString(nil,"BACKGROUND","GameFontHighlightSmall")
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
label:SetWidth(200)
label:SetJustifyH("LEFT")
label:SetJustifyV("TOP")
self.label = label
local image = frame:CreateTexture(nil,"BACKGROUND")
self.image = image
AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -1,308 +1,309 @@
local Type, Version = "MultiLineEditBox", 24
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) --[[
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end --Multiline Editbox Widget, Originally by bam
--]]
local AceGUI = LibStub("AceGUI-3.0")
-- Lua APIs -- Lua APIs
local pairs = pairs local format, pairs, tostring = string.format, pairs, tostring
-- WoW APIs -- WoW APIs
local GetCursorInfo, GetSpellInfo, ClearCursor = GetCursorInfo, GetSpellInfo, ClearCursor local GetCursorInfo, ClearCursor, GetSpellName = GetCursorInfo, ClearCursor, GetSpellName
local CreateFrame, UIParent = CreateFrame, UIParent local CreateFrame, UIParent = CreateFrame, UIParent
local _G = _G
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded -- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script -- List them here for Mikk's FindGlobals script
-- GLOBALS: ACCEPT, ChatFontNormal -- GLOBALS: ChatFontNormal, ACCEPT
--[[----------------------------------------------------------------------------- local Version = 11
Support functions ---------------------
-------------------------------------------------------------------------------]] -- Common Elements --
local function Layout(self) ---------------------
self:SetHeight(self.numlines * 14 + (self.disablebutton and 19 or 41) + self.labelHeight)
if self.labelHeight == 0 then local FrameBackdrop = {
self.scrollBar:SetPoint("TOP", self.frame, "TOP", 0, -23) bgFile="Interface\\DialogFrame\\UI-DialogBox-Background",
else edgeFile="Interface\\DialogFrame\\UI-DialogBox-Border",
self.scrollBar:SetPoint("TOP", self.label, "BOTTOM", 0, -19) tile = true, tileSize = 32, edgeSize = 32,
end insets = { left = 8, right = 8, top = 8, bottom = 8 }
}
if self.disablebutton then local PaneBackdrop = {
self.scrollBar:SetPoint("BOTTOM", self.frame, "BOTTOM", 0, 21)
self.scrollBG:SetPoint("BOTTOMLEFT", 0, 4)
else
self.scrollBar:SetPoint("BOTTOM", self.button, "TOP", 0, 18)
self.scrollBG:SetPoint("BOTTOMLEFT", self.button, "TOPLEFT")
end
end
--[[----------------------------------------------------------------------------- bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
Scripts edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
-------------------------------------------------------------------------------]] tile = true, tileSize = 16, edgeSize = 16,
local function OnClick(self) -- Button insets = { left = 3, right = 3, top = 5, bottom = 3 }
self = self.obj }
self.editBox:ClearFocus()
if not self:Fire("OnEnterPressed", self.editBox:GetText()) then
self.button:Disable()
end
end
local function OnCursorChanged(self, _, y, _, cursorHeight) -- EditBox local ControlBackdrop = {
self, y = self.obj.scrollFrame, -y bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
local offset = self:GetVerticalScroll() edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
if y < offset then tile = true, tileSize = 16, edgeSize = 16,
self:SetVerticalScroll(y) insets = { left = 3, right = 3, top = 3, bottom = 3 }
else }
y = y + cursorHeight - self:GetHeight()
if y > offset then --------------------------
self:SetVerticalScroll(y) -- Edit box --
--------------------------
--[[
Events :
OnTextChanged
OnEnterPressed
]]
do
local Type = "MultiLineEditBox"
local MultiLineEditBox = {}
local function EditBox_OnEnterPressed(this)
local self = this.obj
local value = this:GetText()
local cancel = self:Fire("OnEnterPressed",value)
if not cancel then
self.button:Disable()
end end
end end
end
local function Button_OnClick(this)
local function OnEditFocusLost(self) -- EditBox local editbox = this.obj.editbox
self:HighlightText(0, 0) editbox:ClearFocus()
end EditBox_OnEnterPressed(editbox)
local function OnEnter(self) -- EditBox / ScrollFrame
self = self.obj
if not self.entered then
self.entered = true
self:Fire("OnEnter")
end end
end
local function EditBox_OnReceiveDrag(this)
local function OnLeave(self) -- EditBox / ScrollFrame local self = this.obj
self = self.obj local type, id, info = GetCursorInfo()
if self.entered then if type == "item" then
self.entered = nil self:SetText(info)
self:Fire("OnLeave") self:Fire("OnEnterPressed",info)
ClearCursor()
elseif type == "spell" then
local name, rank = GetSpellName(id, info)
if rank and rank:match("%d") then
name = name.."("..rank..")"
end
self:SetText(name)
self:Fire("OnEnterPressed",name)
ClearCursor()
end
--self.button:Disable()
AceGUI:ClearFocus()
end end
end
function MultiLineEditBox:OnAcquire()
local function OnMouseUp(self) -- ScrollFrame
self = self.obj.editBox
self:SetFocus()
self:SetCursorPosition(self:GetNumLetters())
end
local function OnReceiveDrag(self) -- EditBox / ScrollFrame
local type, id, info = GetCursorInfo()
if type == "spell" then
info = GetSpellInfo(id, info)
elseif type ~= "item" then
return
end
ClearCursor()
self = self.obj
local editBox = self.editBox
if not editBox:HasFocus() then
editBox:SetFocus()
editBox:SetCursorPosition(editBox:GetNumLetters())
end
editBox:Insert(info)
self.button:Enable()
end
local function OnSizeChanged(self, width, height) -- ScrollFrame
self.obj.editBox:SetWidth(width)
end
local function OnTextChanged(self, userInput) -- EditBox
if userInput then
self = self.obj
self:Fire("OnTextChanged", self.editBox:GetText())
self.button:Enable()
end
end
local function OnTextSet(self) -- EditBox
self:HighlightText(0, 0)
self:SetCursorPosition(self:GetNumLetters())
self:SetCursorPosition(0)
self.obj.button:Disable()
end
local function OnVerticalScroll(self, offset) -- ScrollFrame
local editBox = self.obj.editBox
editBox:SetHitRectInsets(0, 0, offset, editBox:GetHeight() - offset - self:GetHeight())
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
self.editBox:SetText("")
self:SetDisabled(false)
self:SetWidth(200) self:SetWidth(200)
self:DisableButton(false) self:SetHeight(116)
self:SetNumLines() self:SetNumLines(4)
self.entered = nil self:SetDisabled(false)
self:SetMaxLetters(0) self:ShowButton(true)
end, end
-- ["OnRelease"] = nil, function MultiLineEditBox:OnRelease()
self.frame:ClearAllPoints()
["SetDisabled"] = function(self, disabled) self.frame:Hide()
local editBox = self.editBox self:SetDisabled(false)
end
function MultiLineEditBox:SetDisabled(disabled)
self.disabled = disabled
if disabled then if disabled then
editBox:ClearFocus() self.editbox:EnableMouse(false)
editBox:EnableMouse(false) self.scrollframe:EnableMouse(false)
editBox:SetTextColor(0.5, 0.5, 0.5) self.editbox:ClearFocus()
self.label:SetTextColor(0.5, 0.5, 0.5) self.editbox:SetTextColor(0.5, 0.5, 0.5)
self.scrollFrame:EnableMouse(false) self.label:SetTextColor(0.5,0.5,0.5)
self.button:Disable() self.button:Disable()
else else
editBox:EnableMouse(true) self.editbox:EnableMouse(true)
editBox:SetTextColor(1, 1, 1) self.scrollframe:EnableMouse(true)
self.label:SetTextColor(1, 0.82, 0) self.editbox:SetTextColor(1, 1, 1)
self.scrollFrame:EnableMouse(true) self.label:SetTextColor(1,.82,0)
self.button:Enable()
end end
end, end
["SetLabel"] = function(self, text) function MultiLineEditBox:SetText(text)
if text and text ~= "" then text = text or ""
self.label:SetText(text) local editbox = self.editbox
if self.labelHeight ~= 10 then local oldText = editbox:GetText()
self.labelHeight = 10 local dummy = format(" %s", text)
self.label:Show() self.lasttext = dummy -- prevents OnTextChanged from firing
end editbox:SetText(dummy)
elseif self.labelHeight ~= 0 then editbox:HighlightText(0, 1)
self.labelHeight = 0 self.lasttext = oldText
editbox:Insert("")
end
function MultiLineEditBox:SetLabel(text)
if (text or "") == "" then
self.backdrop:SetPoint("TOPLEFT",self.frame,"TOPLEFT",0,0)
self.label:Hide() self.label:Hide()
end self.label:SetText("")
Layout(self)
end,
["SetNumLines"] = function(self, value)
if not value or value < 4 then
value = 4
end
self.numlines = value
Layout(self)
end,
["SetText"] = function(self, text)
self.editBox:SetText(text)
end,
["GetText"] = function(self)
return self.editBox:GetText()
end,
["SetMaxLetters"] = function (self, num)
self.editBox:SetMaxLetters(num or 0)
end,
["DisableButton"] = function(self, disabled)
self.disablebutton = disabled
if disabled then
self.button:Hide()
else else
self.button:Show() self.backdrop:SetPoint("TOPLEFT",self.frame,"TOPLEFT",0,-20)
self.label:Show()
self.label:SetText(text)
end end
Layout(self)
end end
}
--[[-----------------------------------------------------------------------------
Constructor
-------------------------------------------------------------------------------]]
local backdrop = {
bgFile = [[Interface\Tooltips\UI-Tooltip-Background]],
edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], edgeSize = 16,
insets = { left = 4, right = 3, top = 4, bottom = 3 }
}
local function Constructor()
local frame = CreateFrame("Frame", nil, UIParent)
frame:Hide()
local widgetNum = AceGUI:GetNextWidgetNum(Type) function MultiLineEditBox:SetNumLines(number)
number = number or 4
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall") self:SetHeight(60 + (14*number))
label:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, -4)
label:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 0, -4)
label:SetJustifyH("LEFT")
label:SetText(ACCEPT)
label:SetHeight(10)
local button = CreateFrame("Button", ("%s%dButton"):format(Type, widgetNum), frame, "UIPanelButtonTemplate2")
button:SetPoint("BOTTOMLEFT", 0, 4)
button:SetHeight(22)
button:SetWidth(label:GetStringWidth() + 24)
button:SetText(ACCEPT)
button:SetScript("OnClick", OnClick)
button:Disable()
local text = button:GetFontString()
text:ClearAllPoints()
text:SetPoint("TOPLEFT", button, "TOPLEFT", 5, -5)
text:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -5, 1)
text:SetJustifyV("MIDDLE")
local scrollBG = CreateFrame("Frame", nil, frame)
scrollBG:SetBackdrop(backdrop)
scrollBG:SetBackdropColor(0, 0, 0)
scrollBG:SetBackdropBorderColor(0.4, 0.4, 0.4)
local scrollFrame = CreateFrame("ScrollFrame", ("%s%dScrollFrame"):format(Type, widgetNum), frame, "UIPanelScrollFrameTemplate")
local scrollBar = _G[scrollFrame:GetName() .. "ScrollBar"]
scrollBar:ClearAllPoints()
scrollBar:SetPoint("TOP", label, "BOTTOM", 0, -19)
scrollBar:SetPoint("BOTTOM", button, "TOP", 0, 18)
scrollBar:SetPoint("RIGHT", frame, "RIGHT")
scrollBG:SetPoint("TOPRIGHT", scrollBar, "TOPLEFT", 0, 19)
scrollBG:SetPoint("BOTTOMLEFT", button, "TOPLEFT")
scrollFrame:SetPoint("TOPLEFT", scrollBG, "TOPLEFT", 5, -6)
scrollFrame:SetPoint("BOTTOMRIGHT", scrollBG, "BOTTOMRIGHT", -4, 4)
scrollFrame:SetScript("OnEnter", OnEnter)
scrollFrame:SetScript("OnLeave", OnLeave)
scrollFrame:SetScript("OnMouseUp", OnMouseUp)
scrollFrame:SetScript("OnReceiveDrag", OnReceiveDrag)
scrollFrame:SetScript("OnSizeChanged", OnSizeChanged)
scrollFrame:HookScript("OnVerticalScroll", OnVerticalScroll)
local editBox = CreateFrame("EditBox", nil, scrollFrame)
editBox:SetAllPoints()
editBox:SetFontObject(ChatFontNormal)
editBox:SetMultiLine(true)
editBox:EnableMouse(true)
editBox:SetAutoFocus(false)
editBox:SetCountInvisibleLetters(false)
editBox:SetScript("OnCursorChanged", OnCursorChanged)
editBox:SetScript("OnEditFocusLost", OnEditFocusLost)
editBox:SetScript("OnEnter", OnEnter)
editBox:SetScript("OnEscapePressed", editBox.ClearFocus)
editBox:SetScript("OnLeave", OnLeave)
editBox:SetScript("OnMouseDown", OnReceiveDrag)
editBox:SetScript("OnReceiveDrag", OnReceiveDrag)
editBox:SetScript("OnTextChanged", OnTextChanged)
editBox:SetScript("OnTextSet", OnTextSet)
scrollFrame:SetScrollChild(editBox)
local widget = {
button = button,
editBox = editBox,
frame = frame,
label = label,
labelHeight = 10,
numlines = 4,
scrollBar = scrollBar,
scrollBG = scrollBG,
scrollFrame = scrollFrame,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end end
button.obj, editBox.obj, scrollFrame.obj = widget, widget, widget
return AceGUI:RegisterAsWidget(widget) function MultiLineEditBox:GetText()
return self.editbox:GetText()
end
function MultiLineEditBox:ShowButton(show)
if show then
self.backdrop:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT",0,22)
self.button:Show()
else
self.backdrop:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT",0,0)
self.button:Hide()
end
end
local function Constructor()
local frame = CreateFrame("Frame", nil, UIParent)
local backdrop = CreateFrame("Frame", nil, frame)
local self = {}
for k, v in pairs(MultiLineEditBox) do self[k] = v end
self.type = Type
self.frame = frame
self.backdrop = backdrop
frame.obj = self
backdrop:SetBackdrop(ControlBackdrop)
backdrop:SetBackdropColor(0, 0, 0)
backdrop:SetBackdropBorderColor(0.4, 0.4, 0.4)
backdrop:SetPoint("TOPLEFT",frame,"TOPLEFT",0, -20)
backdrop:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,22)
local scrollframe = CreateFrame("ScrollFrame", format("%s@%s@%s", Type, "ScrollFrame", tostring(self)), backdrop, "UIPanelScrollFrameTemplate")
scrollframe:SetPoint("TOPLEFT", 5, -6)
scrollframe:SetPoint("BOTTOMRIGHT", -28, 6)
scrollframe.obj = self
self.scrollframe = scrollframe
--local scrollchild = CreateFrame("Frame", nil, scrollframe)
--scrollframe:SetScrollChild(scrollchild)
--scrollchild:SetHeight(2)
--scrollchild:SetWidth(2)
local label = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall")
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,-2)
label:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,-2)
label:SetJustifyH("LEFT")
label:SetHeight(18)
self.label = label
local editbox = CreateFrame("EditBox", nil, scrollframe)
self.editbox = editbox
editbox.obj = self
editbox:SetPoint("TOPLEFT")
editbox:SetPoint("BOTTOMLEFT")
editbox:SetHeight(50)
editbox:SetWidth(50)
editbox:SetMultiLine(true)
-- editbox:SetMaxLetters(7500)
editbox:SetTextInsets(5, 5, 3, 3)
editbox:EnableMouse(true)
editbox:SetAutoFocus(false)
editbox:SetFontObject(ChatFontNormal)
scrollframe:SetScrollChild(editbox)
local button = CreateFrame("Button",nil,scrollframe,"UIPanelButtonTemplate")
button:SetWidth(80)
button:SetHeight(20)
button:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT",0,2)
button:SetText(ACCEPT)
button:SetScript("OnClick", Button_OnClick)
button:SetFrameLevel(editbox:GetFrameLevel() + 1)
button:Disable()
button:Hide()
self.button = button
button.obj = self
scrollframe:EnableMouse(true)
scrollframe:SetScript("OnMouseUp", function() editbox:SetFocus() end)
scrollframe:SetScript("OnEnter", function(this) this.obj:Fire("OnEnter") end)
scrollframe:SetScript("OnLeave", function(this) this.obj:Fire("OnLeave") end)
editbox:SetScript("OnEnter", function(this) this.obj:Fire("OnEnter") end)
editbox:SetScript("OnLeave", function(this) this.obj:Fire("OnLeave") end)
local function FixSize()
--scrollchild:SetHeight(scrollframe:GetHeight())
--scrollchild:SetWidth(scrollframe:GetWidth())
editbox:SetWidth(scrollframe:GetWidth())
end
scrollframe:SetScript("OnShow", FixSize)
scrollframe:SetScript("OnSizeChanged", FixSize)
editbox:SetScript("OnEscapePressed", editbox.ClearFocus)
editbox:SetScript("OnTextChanged", function(_, ...)
scrollframe:UpdateScrollChildRect()
local value = editbox:GetText()
if value ~= self.lasttext then
self:Fire("OnTextChanged", value)
self.lasttext = value
if not self.disabled then
self.button:Enable()
end
end
end)
editbox:SetScript("OnReceiveDrag", EditBox_OnReceiveDrag)
editbox:SetScript("OnMouseDown", EditBox_OnReceiveDrag)
do
local cursorOffset, cursorHeight
local idleTime
local function FixScroll(_, elapsed)
if cursorOffset and cursorHeight then
idleTime = 0
local height = scrollframe:GetHeight()
local range = scrollframe:GetVerticalScrollRange()
local scroll = scrollframe:GetVerticalScroll()
local size = height + range
cursorOffset = -cursorOffset
while cursorOffset < scroll do
scroll = scroll - (height / 2)
if scroll < 0 then scroll = 0 end
scrollframe:SetVerticalScroll(scroll)
end
while cursorOffset + cursorHeight > scroll + height and scroll < range do
scroll = scroll + (height / 2)
if scroll > range then scroll = range end
scrollframe:SetVerticalScroll(scroll)
end
elseif not idleTime or idleTime > 2 then
frame:SetScript("OnUpdate", nil)
idleTime = nil
else
idleTime = idleTime + elapsed
end
cursorOffset = nil
end
editbox:SetScript("OnCursorChanged", function(_, x, y, w, h)
cursorOffset, cursorHeight = y, h
if not idleTime then
frame:SetScript("OnUpdate", FixScroll)
end
end)
end
AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
end end
AceGUI:RegisterWidgetType(Type, Constructor, Version)
@@ -0,0 +1,241 @@
local AceGUI = LibStub("AceGUI-3.0")
-- Lua APIs
local pairs, assert, type = pairs, assert, type
local min, max, floor = math.min, math.max, math.floor
-- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent
-------------
-- Widgets --
-------------
--[[
Widgets must provide the following functions
Acquire() - Called when the object is aquired, should set everything to a default hidden state
Release() - Called when the object is Released, should remove any anchors and hide the Widget
And the following members
frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes
type - the type of the object, same as the name given to :RegisterWidget()
Widgets contain a table called userdata, this is a safe place to store data associated with the wigdet
It will be cleared automatically when a widget is released
Placing values directly into a widget object should be avoided
If the Widget can act as a container for other Widgets the following
content - frame or derivitive that children will be anchored to
The Widget can supply the following Optional Members
]]
--------------------------
-- Scroll Frame --
--------------------------
do
local Type = "ScrollFrame"
local Version = 9
local function OnAcquire(self)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self.status = nil
-- do SetScroll after niling status, but before clearing localstatus
-- so the scroll value isnt populated back into status, but not kept in localstatus either
self:SetScroll(0)
for k in pairs(self.localstatus) do
self.localstatus[k] = nil
end
self.scrollframe:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT",0,0)
self.scrollbar:Hide()
self.scrollBarShown = nil
self.content.height, self.content.width = nil, nil
end
local function SetScroll(self, value)
local status = self.status or self.localstatus
local viewheight = self.scrollframe:GetHeight()
local height = self.content:GetHeight()
local offset
if viewheight > height then
offset = 0
else
offset = floor((height - viewheight) / 1000.0 * value)
end
self.content:ClearAllPoints()
self.content:SetPoint("TOPLEFT", self.scrollframe, "TOPLEFT", 0, offset)
self.content:SetPoint("TOPRIGHT", self.scrollframe, "TOPRIGHT", 0, offset)
status.offset = offset
status.scrollvalue = value
end
local function MoveScroll(self, value)
local status = self.status or self.localstatus
local height, viewheight = self.scrollframe:GetHeight(), self.content:GetHeight()
if height > viewheight then
self.scrollbar:Hide()
else
self.scrollbar:Show()
local diff = height - viewheight
local delta = 1
if value < 0 then
delta = -1
end
self.scrollbar:SetValue(min(max(status.scrollvalue + delta*(1000/(diff/45)),0), 1000))
end
end
local function FixScroll(self)
if self.updateLock then return end
self.updateLock = true
local status = self.status or self.localstatus
local height, viewheight = self.scrollframe:GetHeight(), self.content:GetHeight()
local offset = status.offset or 0
local curvalue = self.scrollbar:GetValue()
if viewheight < height then
if self.scrollBarShown then
self.scrollBarShown = nil
self.scrollbar:Hide()
self.scrollbar:SetValue(0)
self.scrollframe:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT",0,0)
self:DoLayout()
end
else
if not self.scrollBarShown then
self.scrollBarShown = true
self.scrollbar:Show()
self.scrollframe:SetPoint("BOTTOMRIGHT", self.frame,"BOTTOMRIGHT",-20,0)
self:DoLayout()
end
local value = (offset / (viewheight - height) * 1000)
if value > 1000 then value = 1000 end
self.scrollbar:SetValue(value)
self:SetScroll(value)
if value < 1000 then
self.content:ClearAllPoints()
self.content:SetPoint("TOPLEFT", self.scrollframe, "TOPLEFT", 0, offset)
self.content:SetPoint("TOPRIGHT", self.scrollframe, "TOPRIGHT", 0, offset)
status.offset = offset
end
end
self.updateLock = nil
end
local function OnMouseWheel(this, value)
this.obj:MoveScroll(value)
end
local function OnScrollValueChanged(this, value)
this.obj:SetScroll(value)
end
local function FixScrollOnUpdate(this)
this:SetScript("OnUpdate", nil)
this.obj:FixScroll()
end
local function OnSizeChanged(this)
this:SetScript("OnUpdate", FixScrollOnUpdate)
end
local function LayoutFinished(self, width, height)
self.content:SetHeight(height or 0 + 20)
self.scrollframe:SetScript("OnUpdate", FixScrollOnUpdate)
end
-- called to set an external table to store status in
local function SetStatusTable(self, status)
assert(type(status) == "table")
self.status = status
if not status.scrollvalue then
status.scrollvalue = 0
end
end
local function OnWidthSet(self, width)
local content = self.content
content.width = width
end
local function OnHeightSet(self, height)
local content = self.content
content.height = height
end
local function Constructor()
local frame = CreateFrame("Frame", nil, UIParent)
local self = {}
self.type = Type
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.MoveScroll = MoveScroll
self.FixScroll = FixScroll
self.SetScroll = SetScroll
self.LayoutFinished = LayoutFinished
self.SetStatusTable = SetStatusTable
self.OnWidthSet = OnWidthSet
self.OnHeightSet = OnHeightSet
self.localstatus = {}
self.frame = frame
frame.obj = self
--Container Support
local scrollframe = CreateFrame("ScrollFrame", nil, frame)
scrollframe.obj = self
scrollframe:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, 0)
scrollframe:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", 0, 0)
scrollframe:EnableMouseWheel(true)
scrollframe:SetScript("OnMouseWheel", OnMouseWheel)
scrollframe:SetScript("OnSizeChanged", OnSizeChanged)
self.scrollframe = scrollframe
local content = CreateFrame("Frame", nil, scrollframe)
content.obj = self
content:SetPoint("TOPLEFT", scrollframe, "TOPLEFT", 0, 0)
content:SetPoint("TOPRIGHT", scrollframe, "TOPRIGHT", 0, 0)
content:SetHeight(400)
self.content = content
scrollframe:SetScrollChild(content)
local num = AceGUI:GetNextWidgetNum(Type)
local name = ("AceConfigDialogScrollFrame%dScrollBar"):format(num)
local scrollbar = CreateFrame("Slider", name, scrollframe, "UIPanelScrollBarTemplate")
scrollbar.obj = self
scrollbar:SetPoint("TOPLEFT", scrollframe, "TOPRIGHT", 4, -16)
scrollbar:SetPoint("BOTTOMLEFT", scrollframe, "BOTTOMRIGHT", 4, 16)
scrollbar:SetScript("OnValueChanged", OnScrollValueChanged)
scrollbar:SetMinMaxValues(0, 1000)
scrollbar:SetValueStep(1)
scrollbar:SetValue(0)
scrollbar:SetWidth(16)
scrollbar:Hide()
self.scrollbar = scrollbar
local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND")
scrollbg:SetAllPoints(scrollbar)
scrollbg:SetTexture(0, 0, 0, 0.4)
self.localstatus.scrollvalue = 0
--self:FixScroll()
AceGUI:RegisterAsContainer(self)
--AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end
@@ -0,0 +1,99 @@
local AceGUI = LibStub("AceGUI-3.0")
-- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent
-------------
-- Widgets --
-------------
--[[
Widgets must provide the following functions
Acquire() - Called when the object is aquired, should set everything to a default hidden state
Release() - Called when the object is Released, should remove any anchors and hide the Widget
And the following members
frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes
type - the type of the object, same as the name given to :RegisterWidget()
Widgets contain a table called userdata, this is a safe place to store data associated with the wigdet
It will be cleared automatically when a widget is released
Placing values directly into a widget object should be avoided
If the Widget can act as a container for other Widgets the following
content - frame or derivitive that children will be anchored to
The Widget can supply the following Optional Members
]]
--------------------------
-- Simple Group --
--------------------------
--[[
This is a simple grouping container, no selection, no borders
It will resize automatically to the height of the controls added to it
]]
do
local Type = "SimpleGroup"
local Version = 5
local function OnAcquire(self)
self:SetWidth(300)
self:SetHeight(100)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
end
local function LayoutFinished(self, width, height)
if self.noAutoHeight then return end
self:SetHeight(height or 0)
end
local function OnWidthSet(self, width)
local content = self.content
content:SetWidth(width)
content.width = width
end
local function OnHeightSet(self, height)
local content = self.content
content:SetHeight(height)
content.height = height
end
local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = Type
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.frame = frame
self.LayoutFinished = LayoutFinished
self.OnWidthSet = OnWidthSet
self.OnHeightSet = OnHeightSet
frame.obj = self
frame:SetHeight(100)
frame:SetWidth(100)
frame:SetFrameStrata("FULLSCREEN_DIALOG")
--Container Support
local content = CreateFrame("Frame",nil,frame)
self.content = content
content.obj = self
content:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
content:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0)
AceGUI:RegisterAsContainer(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end
@@ -1,14 +1,8 @@
--[[----------------------------------------------------------------------------- local AceGUI = LibStub("AceGUI-3.0")
Slider Widget
Graphical Slider, like, for Range values.
-------------------------------------------------------------------------------]]
local Type, Version = "Slider", 20
local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
-- Lua APIs -- Lua APIs
local min, max, floor = math.min, math.max, math.floor local min, max, floor = math.min, math.max, math.floor
local tonumber, pairs = tonumber, pairs local tonumber = tonumber
-- WoW APIs -- WoW APIs
local PlaySound = PlaySound local PlaySound = PlaySound
@@ -18,161 +12,126 @@ local CreateFrame, UIParent = CreateFrame, UIParent
-- List them here for Mikk's FindGlobals script -- List them here for Mikk's FindGlobals script
-- GLOBALS: GameFontHighlightSmall -- GLOBALS: GameFontHighlightSmall
--[[----------------------------------------------------------------------------- --------------------------
Support functions -- Slider --
-------------------------------------------------------------------------------]] --------------------------
local function UpdateText(self) do
local value = self.value or 0 local Type = "Slider"
if self.ispercent then local Version = 10
self.editbox:SetText(("%s%%"):format(floor(value * 1000 + 0.5) / 10))
else
self.editbox:SetText(floor(value * 100 + 0.5) / 100)
end
end
local function UpdateLabels(self)
local min, max = (self.min or 0), (self.max or 100)
if self.ispercent then
self.lowtext:SetFormattedText("%s%%", (min * 100))
self.hightext:SetFormattedText("%s%%", (max * 100))
else
self.lowtext:SetText(min)
self.hightext:SetText(max)
end
end
--[[-----------------------------------------------------------------------------
Scripts
-------------------------------------------------------------------------------]]
local function Control_OnEnter(frame)
frame.obj:Fire("OnEnter")
end
local function Control_OnLeave(frame)
frame.obj:Fire("OnLeave")
end
local function Frame_OnMouseDown(frame)
frame.obj.slider:EnableMouseWheel(true)
AceGUI:ClearFocus()
end
local function Slider_OnValueChanged(frame)
local self = frame.obj
if not frame.setup then
local newvalue = frame:GetValue()
if newvalue ~= self.value and not self.disabled then
self.value = newvalue
self:Fire("OnValueChanged", newvalue)
end
if self.value then
UpdateText(self)
end
end
end
local function Slider_OnMouseUp(frame)
local self = frame.obj
self:Fire("OnMouseUp", self.value)
end
local function Slider_OnMouseWheel(frame, v)
local self = frame.obj
if not self.disabled then
local value = self.value
if v > 0 then
value = min(value + (self.step or 1), self.max)
else
value = max(value - (self.step or 1), self.min)
end
self.slider:SetValue(value)
end
end
local function EditBox_OnEscapePressed(frame)
frame:ClearFocus()
end
local function EditBox_OnEnterPressed(frame)
local self = frame.obj
local value = frame:GetText()
if self.ispercent then
value = value:gsub('%%', '')
value = tonumber(value) / 100
else
value = tonumber(value)
end
if value then local function OnAcquire(self)
PlaySound("igMainMenuOptionCheckBoxOn")
self.slider:SetValue(value)
self:Fire("OnMouseUp", value)
end
end
local function EditBox_OnEnter(frame)
frame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1)
end
local function EditBox_OnLeave(frame)
frame:SetBackdropBorderColor(0.3, 0.3, 0.3, 0.8)
end
--[[-----------------------------------------------------------------------------
Methods
-------------------------------------------------------------------------------]]
local methods = {
["OnAcquire"] = function(self)
self:SetWidth(200) self:SetWidth(200)
self:SetHeight(44) self:SetHeight(44)
self:SetDisabled(false) self:SetDisabled(false)
self:SetIsPercent(nil) self:SetIsPercent(nil)
self:SetSliderValues(0,100,1) self:SetSliderValues(0,100,1)
self:SetValue(0) self:SetValue(0)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self.slider:EnableMouseWheel(false) self.slider:EnableMouseWheel(false)
end, self:SetDisabled(false)
end
-- ["OnRelease"] = nil, local function Control_OnEnter(this)
this.obj:Fire("OnEnter")
["SetDisabled"] = function(self, disabled) end
local function Control_OnLeave(this)
this.obj:Fire("OnLeave")
end
local function UpdateText(self)
local value = self.value or 0
if self.ispercent then
self.editbox:SetText(("%s%%"):format(floor(value*1000+0.5)/10))
else
self.editbox:SetText(floor(value*100+0.5)/100)
end
end
local function UpdateLabels(self)
local min, max = (self.min or 0), (self.max or 100)
if self.ispercent then
self.lowtext:SetFormattedText("%s%%",(min * 100))
self.hightext:SetFormattedText("%s%%",(max * 100))
else
self.lowtext:SetText(min)
self.hightext:SetText(max)
end
end
local function Slider_OnValueChanged(this)
local self = this.obj
if not this.setup then
local newvalue
newvalue = this:GetValue()
if newvalue ~= self.value and not self.disabled then
self.value = newvalue
self:Fire("OnValueChanged", newvalue)
end
if self.value then
local value = self.value
UpdateText(self)
end
end
end
local function Slider_OnMouseUp(this)
local self = this.obj
self:Fire("OnMouseUp",this:GetValue())
end
local function Slider_OnMouseWheel(this, v)
local self = this.obj
if not self.disabled then
local value = self.value
if v > 0 then
value = min(value + (self.step or 1),self.max)
else
value = max(value - (self.step or 1), self.min)
end
self.slider:SetValue(value)
end
end
local function SetDisabled(self, disabled)
self.disabled = disabled self.disabled = disabled
if disabled then if disabled then
self.slider:EnableMouse(false) self.slider:EnableMouse(false)
self.label:SetTextColor(.5, .5, .5) self.label:SetTextColor(.5,.5,.5)
self.hightext:SetTextColor(.5, .5, .5) self.hightext:SetTextColor(.5,.5,.5)
self.lowtext:SetTextColor(.5, .5, .5) self.lowtext:SetTextColor(.5,.5,.5)
--self.valuetext:SetTextColor(.5, .5, .5) --self.valuetext:SetTextColor(.5,.5,.5)
self.editbox:SetTextColor(.5, .5, .5) self.editbox:SetTextColor(.5,.5,.5)
self.editbox:EnableMouse(false) self.editbox:EnableMouse(false)
self.editbox:ClearFocus() self.editbox:ClearFocus()
else else
self.slider:EnableMouse(true) self.slider:EnableMouse(true)
self.label:SetTextColor(1, .82, 0) self.label:SetTextColor(1,.82,0)
self.hightext:SetTextColor(1, 1, 1) self.hightext:SetTextColor(1,1,1)
self.lowtext:SetTextColor(1, 1, 1) self.lowtext:SetTextColor(1,1,1)
--self.valuetext:SetTextColor(1, 1, 1) --self.valuetext:SetTextColor(1,1,1)
self.editbox:SetTextColor(1, 1, 1) self.editbox:SetTextColor(1,1,1)
self.editbox:EnableMouse(true) self.editbox:EnableMouse(true)
end end
end, end
["SetValue"] = function(self, value) local function SetValue(self, value)
self.slider.setup = true self.slider.setup = true
self.slider:SetValue(value) self.slider:SetValue(value)
self.value = value self.value = value
UpdateText(self) UpdateText(self)
self.slider.setup = nil self.slider.setup = nil
end, end
["GetValue"] = function(self) local function SetLabel(self, text)
return self.value
end,
["SetLabel"] = function(self, text)
self.label:SetText(text) self.label:SetText(text)
end, end
["SetSliderValues"] = function(self, min, max, step) local function SetSliderValues(self, min, max, step)
local frame = self.slider local frame = self.slider
frame.setup = true frame.setup = true
self.min = min self.min = min
@@ -185,97 +144,141 @@ local methods = {
frame:SetValue(self.value) frame:SetValue(self.value)
end end
frame.setup = nil frame.setup = nil
end, end
["SetIsPercent"] = function(self, value) local function EditBox_OnEscapePressed(this)
this:ClearFocus()
end
local function EditBox_OnEnterPressed(this)
local self = this.obj
local value = this:GetText()
if self.ispercent then
value = value:gsub('%%','')
value = tonumber(value) / 100
else
value = tonumber(value)
end
if value then
PlaySound("igMainMenuOptionCheckBoxOn")
self:Fire("OnMouseUp",value)
end
end
local function EditBox_OnEnter(this)
this:SetBackdropBorderColor(0.5,0.5,0.5,1)
end
local function EditBox_OnLeave(this)
this:SetBackdropBorderColor(0.3,0.3,0.3,0.8)
end
local function SetIsPercent(self, value)
self.ispercent = value self.ispercent = value
UpdateLabels(self) UpdateLabels(self)
UpdateText(self) UpdateText(self)
end end
}
local function FrameOnMouseDown(this)
--[[----------------------------------------------------------------------------- this.obj.slider:EnableMouseWheel(true)
Constructor AceGUI:ClearFocus()
-------------------------------------------------------------------------------]]
local SliderBackdrop = {
bgFile = "Interface\\Buttons\\UI-SliderBar-Background",
edgeFile = "Interface\\Buttons\\UI-SliderBar-Border",
tile = true, tileSize = 8, edgeSize = 8,
insets = { left = 3, right = 3, top = 6, bottom = 6 }
}
local ManualBackdrop = {
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\ChatFrame\\ChatFrameBackground",
tile = true, edgeSize = 1, tileSize = 5,
}
local function Constructor()
local frame = CreateFrame("Frame", nil, UIParent)
frame:EnableMouse(true)
frame:SetScript("OnMouseDown", Frame_OnMouseDown)
local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal")
label:SetPoint("TOPLEFT")
label:SetPoint("TOPRIGHT")
label:SetJustifyH("CENTER")
label:SetHeight(15)
local slider = CreateFrame("Slider", nil, frame)
slider:SetOrientation("HORIZONTAL")
slider:SetHeight(15)
slider:SetHitRectInsets(0, 0, -10, 0)
slider:SetBackdrop(SliderBackdrop)
slider:SetThumbTexture("Interface\\Buttons\\UI-SliderBar-Button-Horizontal")
slider:SetPoint("TOP", label, "BOTTOM")
slider:SetPoint("LEFT", 3, 0)
slider:SetPoint("RIGHT", -3, 0)
slider:SetValue(0)
slider:SetScript("OnValueChanged",Slider_OnValueChanged)
slider:SetScript("OnEnter", Control_OnEnter)
slider:SetScript("OnLeave", Control_OnLeave)
slider:SetScript("OnMouseUp", Slider_OnMouseUp)
slider:SetScript("OnMouseWheel", Slider_OnMouseWheel)
local lowtext = slider:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
lowtext:SetPoint("TOPLEFT", slider, "BOTTOMLEFT", 2, 3)
local hightext = slider:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall")
hightext:SetPoint("TOPRIGHT", slider, "BOTTOMRIGHT", -2, 3)
local editbox = CreateFrame("EditBox", nil, frame)
editbox:SetAutoFocus(false)
editbox:SetFontObject(GameFontHighlightSmall)
editbox:SetPoint("TOP", slider, "BOTTOM")
editbox:SetHeight(14)
editbox:SetWidth(70)
editbox:SetJustifyH("CENTER")
editbox:EnableMouse(true)
editbox:SetBackdrop(ManualBackdrop)
editbox:SetBackdropColor(0, 0, 0, 0.5)
editbox:SetBackdropBorderColor(0.3, 0.3, 0.30, 0.80)
editbox:SetScript("OnEnter", EditBox_OnEnter)
editbox:SetScript("OnLeave", EditBox_OnLeave)
editbox:SetScript("OnEnterPressed", EditBox_OnEnterPressed)
editbox:SetScript("OnEscapePressed", EditBox_OnEscapePressed)
local widget = {
label = label,
slider = slider,
lowtext = lowtext,
hightext = hightext,
editbox = editbox,
alignoffset = 25,
frame = frame,
type = Type
}
for method, func in pairs(methods) do
widget[method] = func
end end
slider.obj, editbox.obj = widget, widget
local SliderBackdrop = {
bgFile = "Interface\\Buttons\\UI-SliderBar-Background",
edgeFile = "Interface\\Buttons\\UI-SliderBar-Border",
tile = true, tileSize = 8, edgeSize = 8,
insets = { left = 3, right = 3, top = 6, bottom = 6 }
}
local ManualBackdrop = {
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\ChatFrame\\ChatFrameBackground",
tile = true, edgeSize = 1, tileSize = 5,
}
local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = Type
return AceGUI:RegisterAsWidget(widget) self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.frame = frame
frame.obj = self
self.SetDisabled = SetDisabled
self.SetValue = SetValue
self.SetSliderValues = SetSliderValues
self.SetLabel = SetLabel
self.SetIsPercent = SetIsPercent
self.alignoffset = 25
frame:EnableMouse(true)
frame:SetScript("OnMouseDown",FrameOnMouseDown)
self.slider = CreateFrame("Slider",nil,frame)
local slider = self.slider
slider:SetScript("OnEnter",Control_OnEnter)
slider:SetScript("OnLeave",Control_OnLeave)
slider:SetScript("OnMouseUp", Slider_OnMouseUp)
slider.obj = self
slider:SetOrientation("HORIZONTAL")
slider:SetHeight(15)
slider:SetHitRectInsets(0,0,-10,0)
slider:SetBackdrop(SliderBackdrop)
--slider:EnableMouseWheel(true)
slider:SetScript("OnMouseWheel", Slider_OnMouseWheel)
local label = frame:CreateFontString(nil,"OVERLAY","GameFontNormal")
label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
label:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0)
label:SetJustifyH("CENTER")
label:SetHeight(15)
self.label = label
self.lowtext = slider:CreateFontString(nil,"ARTWORK","GameFontHighlightSmall")
self.lowtext:SetPoint("TOPLEFT",slider,"BOTTOMLEFT",2,3)
self.hightext = slider:CreateFontString(nil,"ARTWORK","GameFontHighlightSmall")
self.hightext:SetPoint("TOPRIGHT",slider,"BOTTOMRIGHT",-2,3)
local editbox = CreateFrame("EditBox",nil,frame)
editbox:SetAutoFocus(false)
editbox:SetFontObject(GameFontHighlightSmall)
editbox:SetPoint("TOP",slider,"BOTTOM",0,0)
editbox:SetHeight(14)
editbox:SetWidth(70)
editbox:SetJustifyH("CENTER")
editbox:EnableMouse(true)
editbox:SetScript("OnEscapePressed",EditBox_OnEscapePressed)
editbox:SetScript("OnEnterPressed",EditBox_OnEnterPressed)
editbox:SetScript("OnEnter",EditBox_OnEnter)
editbox:SetScript("OnLeave",EditBox_OnLeave)
editbox:SetBackdrop(ManualBackdrop)
editbox:SetBackdropColor(0,0,0,0.5)
editbox:SetBackdropBorderColor(0.3,0.3,0.30,0.80)
self.editbox = editbox
editbox.obj = self
slider:SetThumbTexture("Interface\\Buttons\\UI-SliderBar-Button-Horizontal")
frame:SetWidth(200)
frame:SetHeight(44)
slider:SetPoint("TOP",label,"BOTTOM",0,0)
slider:SetPoint("LEFT",frame,"LEFT",3,0)
slider:SetPoint("RIGHT",frame,"RIGHT",-3,0)
slider:SetValue(self.value or 0)
slider:SetScript("OnValueChanged",Slider_OnValueChanged)
AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
@@ -0,0 +1,389 @@
local AceGUI = LibStub("AceGUI-3.0")
-- Lua APIs
local pairs, ipairs, assert, type = pairs, ipairs, assert, type
-- WoW APIs
local PlaySound = PlaySound
local CreateFrame, UIParent = CreateFrame, UIParent
local _G = _G
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: PanelTemplates_TabResize, PanelTemplates_SetDisabledTabState, PanelTemplates_SelectTab, PanelTemplates_DeselectTab
-------------
-- Widgets --
-------------
--[[
Widgets must provide the following functions
Acquire() - Called when the object is aquired, should set everything to a default hidden state
Release() - Called when the object is Released, should remove any anchors and hide the Widget
And the following members
frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes
type - the type of the object, same as the name given to :RegisterWidget()
Widgets contain a table called userdata, this is a safe place to store data associated with the wigdet
It will be cleared automatically when a widget is released
Placing values directly into a widget object should be avoided
If the Widget can act as a container for other Widgets the following
content - frame or derivitive that children will be anchored to
The Widget can supply the following Optional Members
]]
--------------------------
-- Tab Group --
--------------------------
do
local Type = "TabGroup"
local Version = 25
local PaneBackdrop = {
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 3, right = 3, top = 5, bottom = 3 }
}
local function OnAcquire(self)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self.status = nil
for k in pairs(self.localstatus) do
self.localstatus[k] = nil
end
self.tablist = nil
for _, tab in pairs(self.tabs) do
tab:Hide()
end
self:SetTitle()
end
local function Tab_SetText(self, text)
self:_SetText(text)
local width = self.obj.frame.width or self.obj.frame:GetWidth() or 0
PanelTemplates_TabResize(self, 0, nil, width)
end
local function UpdateTabLook(self)
if self.disabled then
PanelTemplates_SetDisabledTabState(self)
elseif self.selected then
PanelTemplates_SelectTab(self)
else
PanelTemplates_DeselectTab(self)
end
end
local function Tab_SetSelected(self, selected)
self.selected = selected
UpdateTabLook(self)
end
local function Tab_OnClick(self)
if not (self.selected or self.disabled) then
PlaySound("igCharacterInfoTab")
self.obj:SelectTab(self.value)
end
end
local function Tab_SetDisabled(self, disabled)
self.disabled = disabled
UpdateTabLook(self)
end
local function Tab_OnEnter(this)
local self = this.obj
self:Fire("OnTabEnter", self.tabs[this.id].value, this)
end
local function Tab_OnLeave(this)
local self = this.obj
self:Fire("OnTabLeave", self.tabs[this.id].value, this)
end
local function Tab_OnShow(this)
_G[this:GetName().."HighlightTexture"]:SetWidth(this:GetTextWidth() + 30)
end
local function CreateTab(self, id)
local tabname = "AceGUITabGroup"..self.num.."Tab"..id
local tab = CreateFrame("Button",tabname,self.border,"OptionsFrameTabButtonTemplate")
tab.obj = self
tab.id = id
tab.text = _G[tabname .. "Text"]
tab.text:ClearAllPoints()
tab.text:SetPoint("LEFT", tab, "LEFT", 14, -3)
tab.text:SetPoint("RIGHT", tab, "RIGHT", -12, -3)
tab:SetScript("OnClick",Tab_OnClick)
tab:SetScript("OnEnter",Tab_OnEnter)
tab:SetScript("OnLeave",Tab_OnLeave)
tab:SetScript("OnShow", Tab_OnShow)
tab._SetText = tab.SetText
tab.SetText = Tab_SetText
tab.SetSelected = Tab_SetSelected
tab.SetDisabled = Tab_SetDisabled
return tab
end
local function SetTitle(self, text)
self.titletext:SetText(text or "")
if text and text ~= "" then
self.alignoffset = 25
else
self.alignoffset = 18
end
self:BuildTabs()
end
-- called to set an external table to store status in
local function SetStatusTable(self, status)
assert(type(status) == "table")
self.status = status
end
local function SelectTab(self, value)
local status = self.status or self.localstatus
local found
for i, v in ipairs(self.tabs) do
if v.value == value then
v:SetSelected(true)
found = true
else
v:SetSelected(false)
end
end
status.selected = value
if found then
self:Fire("OnGroupSelected",value)
end
end
local function SetTabs(self, tabs)
self.tablist = tabs
self:BuildTabs()
end
local widths = {}
local rowwidths = {}
local rowends = {}
local function BuildTabs(self)
local hastitle = (self.titletext:GetText() and self.titletext:GetText() ~= "")
local status = self.status or self.localstatus
local tablist = self.tablist
local tabs = self.tabs
if not tablist then return end
local width = self.frame.width or self.frame:GetWidth() or 0
for i = #widths, 1, -1 do
widths[i] = nil
end
for i = #rowwidths, 1, -1 do
rowwidths[i] = nil
end
for i = #rowends, 1, -1 do
rowends[i] = nil
end
--Place Text into tabs and get thier initial width
for i, v in ipairs(tablist) do
local tab = tabs[i]
if not tab then
tab = self:CreateTab(i)
tabs[i] = tab
end
tab:Show()
tab:SetText(v.text)
tab:SetDisabled(v.disabled)
tab.value = v.value
widths[i] = tab:GetWidth() - 6 --tabs are anchored 10 pixels from the right side of the previous one to reduce spacing, but add a fixed 4px padding for the text
end
for i = (#tablist)+1, #tabs, 1 do
tabs[i]:Hide()
end
--First pass, find the minimum number of rows needed to hold all tabs and the initial tab layout
local numtabs = #tablist
local numrows = 1
local usedwidth = 0
for i = 1, #tablist do
--If this is not the first tab of a row and there isn't room for it
if usedwidth ~= 0 and (width - usedwidth - widths[i]) < 0 then
rowwidths[numrows] = usedwidth + 10 --first tab in each row takes up an extra 10px
rowends[numrows] = i - 1
numrows = numrows + 1
usedwidth = 0
end
usedwidth = usedwidth + widths[i]
end
rowwidths[numrows] = usedwidth + 10 --first tab in each row takes up an extra 10px
rowends[numrows] = #tablist
--Fix for single tabs being left on the last row, move a tab from the row above if applicable
if numrows > 1 then
--if the last row has only one tab
if rowends[numrows-1] == numtabs-1 then
--if there are more than 2 tabs in the 2nd last row
if (numrows == 2 and rowends[numrows-1] > 2) or (rowends[numrows] - rowends[numrows-1] > 2) then
--move 1 tab from the second last row to the last, if there is enough space
if (rowwidths[numrows] + widths[numtabs-1]) <= width then
rowends[numrows-1] = rowends[numrows-1] - 1
rowwidths[numrows] = rowwidths[numrows] + widths[numtabs-1]
rowwidths[numrows-1] = rowwidths[numrows-1] - widths[numtabs-1]
end
end
end
end
--anchor the rows as defined and resize tabs to fill thier row
local starttab = 1
for row, endtab in ipairs(rowends) do
local first = true
for tabno = starttab, endtab do
local tab = tabs[tabno]
tab:ClearAllPoints()
if first then
tab:SetPoint("TOPLEFT", self.frame, "TOPLEFT", 0, -(hastitle and 14 or 7)-(row-1)*20 )
first = false
else
tab:SetPoint("LEFT", tabs[tabno-1], "RIGHT", -10, 0)
end
end
-- equal padding for each tab to fill the available width,
-- if the used space is above 75% already
local padding = 0
if not (numrows == 1 and rowwidths[1] < width*0.75) then
padding = (width - rowwidths[row]) / (endtab - starttab+1)
end
for i = starttab, endtab do
PanelTemplates_TabResize(tabs[i], padding + 4, nil, width)
end
starttab = endtab + 1
end
self.borderoffset = (hastitle and 17 or 10)+((numrows)*20)
self.border:SetPoint("TOPLEFT",self.frame,"TOPLEFT",1,-self.borderoffset)
end
local function BuildTabsOnUpdate(this)
BuildTabs(this.obj)
this:SetScript("OnUpdate", nil)
end
local function OnWidthSet(self, width)
local content = self.content
local contentwidth = width - 60
if contentwidth < 0 then
contentwidth = 0
end
content:SetWidth(contentwidth)
content.width = contentwidth
BuildTabs(self)
self.frame:SetScript("OnUpdate", BuildTabsOnUpdate)
end
local function OnHeightSet(self, height)
local content = self.content
local contentheight = height - (self.borderoffset + 23)
if contentheight < 0 then
contentheight = 0
end
content:SetHeight(contentheight)
content.height = contentheight
end
local function LayoutFinished(self, width, height)
if self.noAutoHeight then return end
self:SetHeight((height or 0) + (self.borderoffset + 23))
end
local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = Type
self.num = AceGUI:GetNextWidgetNum(Type)
self.localstatus = {}
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetTitle = SetTitle
self.CreateTab = CreateTab
self.SelectTab = SelectTab
self.BuildTabs = BuildTabs
self.SetStatusTable = SetStatusTable
self.SetTabs = SetTabs
self.LayoutFinished = LayoutFinished
self.frame = frame
self.OnWidthSet = OnWidthSet
self.OnHeightSet = OnHeightSet
frame.obj = self
frame:SetHeight(100)
frame:SetWidth(100)
frame:SetFrameStrata("FULLSCREEN_DIALOG")
self.alignoffset = 18
local titletext = frame:CreateFontString(nil,"OVERLAY","GameFontNormal")
titletext:SetPoint("TOPLEFT",frame,"TOPLEFT",14,0)
titletext:SetPoint("TOPRIGHT",frame,"TOPRIGHT",-14,0)
titletext:SetJustifyH("LEFT")
titletext:SetHeight(18)
titletext:SetText("")
self.titletext = titletext
local border = CreateFrame("Frame",nil,frame)
self.border = border
self.borderoffset = 27
border:SetPoint("TOPLEFT",frame,"TOPLEFT",1,-27)
border:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-1,3)
border:SetBackdrop(PaneBackdrop)
border:SetBackdropColor(0.1,0.1,0.1,0.5)
border:SetBackdropBorderColor(0.4,0.4,0.4)
self.tabs = {}
--Container Support
local content = CreateFrame("Frame",nil,border)
self.content = content
content.obj = self
content:SetPoint("TOPLEFT",border,"TOPLEFT",10,-7)
content:SetPoint("BOTTOMRIGHT",border,"BOTTOMRIGHT",-10,7)
AceGUI:RegisterAsContainer(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end
@@ -0,0 +1,746 @@
local AceGUI = LibStub("AceGUI-3.0")
-- Lua APIs
local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type
local math_min, math_max, floor = math.min, math.max, floor
local select, tremove, unpack = select, table.remove, unpack
-- WoW APIs
local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: GameTooltip, FONT_COLOR_CODE_CLOSE
-- Recycling functions
local new, del
do
local pool = setmetatable({},{__mode='k'})
function new()
local t = next(pool)
if t then
pool[t] = nil
return t
else
return {}
end
end
function del(t)
for k in pairs(t) do
t[k] = nil
end
pool[t] = true
end
end
--------------
-- TreeView --
--------------
do
local Type = "TreeGroup"
local Version = 23
local DEFAULT_TREE_WIDTH = 175
local DEFAULT_TREE_SIZABLE = true
local PaneBackdrop = {
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true, tileSize = 16, edgeSize = 16,
insets = { left = 3, right = 3, top = 5, bottom = 3 }
}
local DraggerBackdrop = {
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
edgeFile = nil,
tile = true, tileSize = 16, edgeSize = 0,
insets = { left = 3, right = 3, top = 7, bottom = 7 }
}
local function OnAcquire(self)
self:SetTreeWidth(DEFAULT_TREE_WIDTH,DEFAULT_TREE_SIZABLE)
self:EnableButtonTooltips(true)
end
local function OnRelease(self)
self.frame:ClearAllPoints()
self.frame:Hide()
self.status = nil
for k, v in pairs(self.localstatus) do
if k == "groups" then
for k2 in pairs(v) do
v[k2] = nil
end
else
self.localstatus[k] = nil
end
end
self.localstatus.scrollvalue = 0
self.localstatus.treewidth = DEFAULT_TREE_WIDTH
self.localstatus.treesizable = DEFAULT_TREE_SIZABLE
end
local function GetButtonParents(line)
local parent = line.parent
if parent and parent.value then
return parent.value, GetButtonParents(parent)
end
end
local function GetButtonUniqueValue(line)
local parent = line.parent
if parent and parent.value then
return GetButtonUniqueValue(parent).."\001"..line.value
else
return line.value
end
end
local function ButtonOnClick(this)
local self = this.obj
self:Fire("OnClick",this.uniquevalue, this.selected)
if not this.selected then
self:SetSelected(this.uniquevalue)
this.selected = true
this:LockHighlight()
self:RefreshTree()
end
AceGUI:ClearFocus()
end
local function ExpandOnClick(this)
local button = this.button
local self = button.obj
local status = (self.status or self.localstatus).groups
status[button.uniquevalue] = not status[button.uniquevalue]
self:RefreshTree()
end
local function ButtonOnDoubleClick(button)
local self = button.obj
local status = self.status or self.localstatus
local status = (self.status or self.localstatus).groups
status[button.uniquevalue] = not status[button.uniquevalue]
self:RefreshTree()
end
local function EnableButtonTooltips(self, enable)
self.enabletooltips = enable
end
local function Button_OnEnter(this)
local self = this.obj
self:Fire("OnButtonEnter", this.uniquevalue, this)
if self.enabletooltips then
GameTooltip:SetOwner(this, "ANCHOR_NONE")
GameTooltip:SetPoint("LEFT",this,"RIGHT")
GameTooltip:SetText(this.text:GetText() or "", 1, .82, 0, 1)
GameTooltip:Show()
end
end
local function Button_OnLeave(this)
local self = this.obj
self:Fire("OnButtonLeave", this.uniquevalue, this)
if self.enabletooltips then
GameTooltip:Hide()
end
end
local buttoncount = 1
local function CreateButton(self)
local button = CreateFrame("Button",("AceGUI30TreeButton%d"):format(buttoncount),self.treeframe, "OptionsListButtonTemplate")
buttoncount = buttoncount + 1
button.obj = self
local icon = button:CreateTexture(nil, "OVERLAY")
icon:SetWidth(14)
icon:SetHeight(14)
button.icon = icon
button:SetScript("OnClick",ButtonOnClick)
button:SetScript("OnDoubleClick", ButtonOnDoubleClick)
button:SetScript("OnEnter",Button_OnEnter)
button:SetScript("OnLeave",Button_OnLeave)
button.toggle.button = button
button.toggle:SetScript("OnClick",ExpandOnClick)
return button
end
local function UpdateButton(button, treeline, selected, canExpand, isExpanded)
local self = button.obj
local toggle = button.toggle
local frame = self.frame
local text = treeline.text or ""
local icon = treeline.icon
local iconCoords = treeline.iconCoords
local level = treeline.level
local value = treeline.value
local uniquevalue = treeline.uniquevalue
local disabled = treeline.disabled
button.treeline = treeline
button.value = value
button.uniquevalue = uniquevalue
if selected then
button:LockHighlight()
button.selected = true
else
button:UnlockHighlight()
button.selected = false
end
local normalTexture = button:GetNormalTexture()
local line = button.line
button.level = level
if ( level == 1 ) then
button:SetNormalFontObject("GameFontNormal")
button:SetHighlightFontObject("GameFontHighlight")
button.text:SetPoint("LEFT", (icon and 16 or 0) + 8, 2)
else
button:SetNormalFontObject("GameFontHighlightSmall")
button:SetHighlightFontObject("GameFontHighlightSmall")
button.text:SetPoint("LEFT", (icon and 16 or 0) + 8 * level, 2)
end
if disabled then
button:EnableMouse(false)
button.text:SetText("|cff808080"..text..FONT_COLOR_CODE_CLOSE)
else
button.text:SetText(text)
button:EnableMouse(true)
end
if icon then
button.icon:SetTexture(icon)
button.icon:SetPoint("LEFT", button, "LEFT", 8 * level, (level == 1) and 0 or 1)
else
button.icon:SetTexture(nil)
end
if iconCoords then
button.icon:SetTexCoord(unpack(iconCoords))
else
button.icon:SetTexCoord(0, 1, 0, 1)
end
if canExpand then
if not isExpanded then
toggle:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-UP")
toggle:SetPushedTexture("Interface\\Buttons\\UI-PlusButton-DOWN")
else
toggle:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-UP")
toggle:SetPushedTexture("Interface\\Buttons\\UI-MinusButton-DOWN")
end
toggle:Show()
else
toggle:Hide()
end
end
local function OnScrollValueChanged(this, value)
if this.obj.noupdate then return end
local self = this.obj
local status = self.status or self.localstatus
status.scrollvalue = value
self:RefreshTree()
AceGUI:ClearFocus()
end
-- called to set an external table to store status in
local function SetStatusTable(self, status)
assert(type(status) == "table")
self.status = status
if not status.groups then
status.groups = {}
end
if not status.scrollvalue then
status.scrollvalue = 0
end
if not status.treewidth then
status.treewidth = DEFAULT_TREE_WIDTH
end
if not status.treesizable then
status.treesizable = DEFAULT_TREE_SIZABLE
end
self:SetTreeWidth(status.treewidth,status.treesizable)
self:RefreshTree()
end
--sets the tree to be displayed
--[[
example tree
Alpha
Bravo
-Charlie
-Delta
-Echo
Foxtrot
tree = {
{
value = "A",
text = "Alpha"
},
{
value = "B",
text = "Bravo",
children = {
{
value = "C",
text = "Charlie"
},
{
value = "D",
text = "Delta"
children = {
{
value = "E",
text = "Echo"
}
}
}
}
},
{
value = "F",
text = "Foxtrot"
},
}
]]
local function SetTree(self, tree, filter)
self.filter = filter
if tree then
assert(type(tree) == "table")
end
self.tree = tree
self:RefreshTree()
end
local function ShouldDisplayLevel(tree)
local result = false
for k, v in ipairs(tree) do
if v.children == nil and v.visible ~= false then
result = true
elseif v.children then
result = result or ShouldDisplayLevel(v.children)
end
if result then return result end
end
return false
end
local function addLine(self, v, tree, level, parent)
local line = new()
line.value = v.value
line.text = v.text
line.icon = v.icon
line.iconCoords = v.iconCoords
line.disabled = v.disabled
line.tree = tree
line.level = level
line.parent = parent
line.visible = v.visible
line.uniquevalue = GetButtonUniqueValue(line)
if v.children then
line.hasChildren = true
else
line.hasChildren = nil
end
self.lines[#self.lines+1] = line
return line
end
local function BuildLevel(self, tree, level, parent)
local groups = (self.status or self.localstatus).groups
local hasChildren = self.hasChildren
for i, v in ipairs(tree) do
if v.children then
if not self.filter or ShouldDisplayLevel(v.children) then
local line = addLine(self, v, tree, level, parent)
if groups[line.uniquevalue] then
self:BuildLevel(v.children, level+1, line)
end
end
elseif v.visible ~= false or not self.filter then
addLine(self, v, tree, level, parent)
end
end
end
--fire an update after one frame to catch the treeframes height
local function FirstFrameUpdate(this)
local self = this.obj
this:SetScript("OnUpdate",nil)
self:RefreshTree()
end
local function ResizeUpdate(this)
this.obj:RefreshTree()
end
local function RefreshTree(self)
local buttons = self.buttons
local lines = self.lines
for i, v in ipairs(buttons) do
v:Hide()
end
while lines[1] do
local t = tremove(lines)
for k in pairs(t) do
t[k] = nil
end
del(t)
end
if not self.tree then return end
--Build the list of visible entries from the tree and status tables
local status = self.status or self.localstatus
local groupstatus = status.groups
local tree = self.tree
local treeframe = self.treeframe
self:BuildLevel(tree, 1)
local numlines = #lines
local maxlines = (floor(((self.treeframe:GetHeight()or 0) - 20 ) / 18))
local first, last
if numlines <= maxlines then
--the whole tree fits in the frame
status.scrollvalue = 0
self:ShowScroll(false)
first, last = 1, numlines
else
self:ShowScroll(true)
--scrolling will be needed
self.noupdate = true
self.scrollbar:SetMinMaxValues(0, numlines - maxlines)
--check if we are scrolled down too far
if numlines - status.scrollvalue < maxlines then
status.scrollvalue = numlines - maxlines
self.scrollbar:SetValue(status.scrollvalue)
end
self.noupdate = nil
first, last = status.scrollvalue+1, status.scrollvalue + maxlines
end
local buttonnum = 1
for i = first, last do
local line = lines[i]
local button = buttons[buttonnum]
if not button then
button = self:CreateButton()
buttons[buttonnum] = button
button:SetParent(treeframe)
button:SetFrameLevel(treeframe:GetFrameLevel()+1)
button:ClearAllPoints()
if i == 1 then
if self.showscroll then
button:SetPoint("TOPRIGHT", self.treeframe,"TOPRIGHT",-22,-10)
button:SetPoint("TOPLEFT", self.treeframe, "TOPLEFT", 0, -10)
else
button:SetPoint("TOPRIGHT", self.treeframe,"TOPRIGHT",0,-10)
button:SetPoint("TOPLEFT", self.treeframe, "TOPLEFT", 0, -10)
end
else
button:SetPoint("TOPRIGHT", buttons[buttonnum-1], "BOTTOMRIGHT",0,0)
button:SetPoint("TOPLEFT", buttons[buttonnum-1], "BOTTOMLEFT",0,0)
end
end
UpdateButton(button, line, status.selected == line.uniquevalue, line.hasChildren, groupstatus[line.uniquevalue] )
button:Show()
buttonnum = buttonnum + 1
end
end
local function SetSelected(self, value)
local status = self.status or self.localstatus
if status.selected ~= value then
status.selected = value
self:Fire("OnGroupSelected", value)
end
end
local function BuildUniqueValue(...)
local n = select('#', ...)
if n == 1 then
return ...
else
return (...).."\001"..BuildUniqueValue(select(2,...))
end
end
local function Select(self, uniquevalue, ...)
self.filter = false
local status = self.status or self.localstatus
local groups = status.groups
for i = 1, select('#', ...) do
groups[BuildUniqueValue(select(i, ...))] = true
end
status.selected = uniquevalue
self:RefreshTree()
self:Fire("OnGroupSelected", uniquevalue)
end
local function SelectByPath(self, ...)
self:Select(BuildUniqueValue(...), ...)
end
--Selects a tree node by UniqueValue
local function SelectByValue(self, uniquevalue)
self:Select(uniquevalue, ("\001"):split(uniquevalue))
end
local function ShowScroll(self, show)
self.showscroll = show
if show then
self.scrollbar:Show()
if self.buttons[1] then
self.buttons[1]:SetPoint("TOPRIGHT", self.treeframe,"TOPRIGHT",-22,-10)
end
else
self.scrollbar:Hide()
if self.buttons[1] then
self.buttons[1]:SetPoint("TOPRIGHT", self.treeframe,"TOPRIGHT",0,-10)
end
end
end
local function OnWidthSet(self, width)
local content = self.content
local treeframe = self.treeframe
local status = self.status or self.localstatus
status.fullwidth = width
local contentwidth = width - status.treewidth - 20
if contentwidth < 0 then
contentwidth = 0
end
content:SetWidth(contentwidth)
content.width = contentwidth
local maxtreewidth = math_min(400, width - 50)
if maxtreewidth > 100 and status.treewidth > maxtreewidth then
self:SetTreeWidth(maxtreewidth, status.treesizable)
end
treeframe:SetMaxResize(maxtreewidth,1600)
end
local function OnHeightSet(self, height)
local content = self.content
local contentheight = height - 20
if contentheight < 0 then
contentheight = 0
end
content:SetHeight(contentheight)
content.height = contentheight
end
local function TreeOnMouseWheel(this, delta)
local self = this.obj
if self.showscroll then
local scrollbar = self.scrollbar
local min, max = scrollbar:GetMinMaxValues()
local value = scrollbar:GetValue()
local newvalue = math_min(max,math_max(min,value - delta))
if value ~= newvalue then
scrollbar:SetValue(newvalue)
end
end
end
local function SetTreeWidth(self, treewidth, resizable)
if not resizable then
if type(treewidth) == 'number' then
resizable = false
elseif type(treewidth) == 'boolean' then
resizable = treewidth
treewidth = DEFAULT_TREE_WIDTH
else
resizable = false
treewidth = DEFAULT_TREE_WIDTH
end
end
self.treeframe:SetWidth(treewidth)
self.dragger:EnableMouse(resizable)
local status = self.status or self.localstatus
status.treewidth = treewidth
status.treesizable = resizable
-- recalculate the content width
if status.fullwidth then
self:OnWidthSet(status.fullwidth)
end
end
local function draggerLeave(this)
this:SetBackdropColor(1, 1, 1, 0)
end
local function draggerEnter(this)
this:SetBackdropColor(1, 1, 1, 0.8)
end
local function draggerDown(this)
local treeframe = this:GetParent()
treeframe:StartSizing("RIGHT")
end
local function draggerUp(this)
local treeframe = this:GetParent()
local self = treeframe.obj
local frame = treeframe:GetParent()
treeframe:StopMovingOrSizing()
--treeframe:SetScript("OnUpdate", nil)
treeframe:SetUserPlaced(false)
--Without this :GetHeight will get stuck on the current height, causing the tree contents to not resize
treeframe:SetHeight(0)
treeframe:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
treeframe:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT",0,0)
local status = self.status or self.localstatus
status.treewidth = treeframe:GetWidth()
treeframe.obj:Fire("OnTreeResize",treeframe:GetWidth())
-- recalculate the content width
treeframe.obj:OnWidthSet(status.fullwidth)
-- update the layout of the content
treeframe.obj:DoLayout()
end
local function LayoutFinished(self, width, height)
if self.noAutoHeight then return end
self:SetHeight((height or 0) + 20)
end
local createdcount = 0
local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = Type
self.lines = {}
self.levels = {}
self.buttons = {}
self.hasChildren = {}
self.localstatus = {}
self.localstatus.groups = {}
self.filter = false
local treeframe = CreateFrame("Frame",nil,frame)
treeframe.obj = self
treeframe:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0)
treeframe:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT",0,0)
treeframe:SetWidth(DEFAULT_TREE_WIDTH)
treeframe:SetScript("OnUpdate",FirstFrameUpdate)
treeframe:SetScript("OnSizeChanged",ResizeUpdate)
treeframe:EnableMouseWheel(true)
treeframe:SetScript("OnMouseWheel", TreeOnMouseWheel)
treeframe:SetBackdrop(PaneBackdrop)
treeframe:SetBackdropColor(0.1,0.1,0.1,0.5)
treeframe:SetBackdropBorderColor(0.4,0.4,0.4)
treeframe:SetResizable(true)
treeframe:SetMinResize(100, 1)
treeframe:SetMaxResize(400,1600)
local dragger = CreateFrame("Frame", nil, treeframe)
dragger:SetWidth(8)
dragger:SetPoint("TOP", treeframe, "TOPRIGHT")
dragger:SetPoint("BOTTOM", treeframe, "BOTTOMRIGHT")
dragger:SetBackdrop(DraggerBackdrop)
dragger:SetBackdropColor(1, 1, 1, 0)
dragger:SetScript("OnMouseDown", draggerDown)
dragger:SetScript("OnMouseUp", draggerUp)
dragger:SetScript("OnEnter", draggerEnter)
dragger:SetScript("OnLeave", draggerLeave)
self.dragger = dragger
self.treeframe = treeframe
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetTree = SetTree
self.SetTreeWidth = SetTreeWidth
self.RefreshTree = RefreshTree
self.SetStatusTable = SetStatusTable
self.BuildLevel = BuildLevel
self.CreateButton = CreateButton
self.SetSelected = SetSelected
self.ShowScroll = ShowScroll
self.SetStatusTable = SetStatusTable
self.Select = Select
self.SelectByValue = SelectByValue
self.SelectByPath = SelectByPath
self.OnWidthSet = OnWidthSet
self.OnHeightSet = OnHeightSet
self.EnableButtonTooltips = EnableButtonTooltips
--self.Filter = Filter
self.LayoutFinished = LayoutFinished
self.frame = frame
frame.obj = self
createdcount = createdcount + 1
local scrollbar = CreateFrame("Slider",("AceConfigDialogTreeGroup%dScrollBar"):format(createdcount),treeframe,"UIPanelScrollBarTemplate")
self.scrollbar = scrollbar
local scrollbg = scrollbar:CreateTexture(nil,"BACKGROUND")
scrollbg:SetAllPoints(scrollbar)
scrollbg:SetTexture(0,0,0,0.4)
scrollbar.obj = self
self.noupdate = true
scrollbar:SetPoint("TOPRIGHT",treeframe,"TOPRIGHT",-10,-26)
scrollbar:SetPoint("BOTTOMRIGHT",treeframe,"BOTTOMRIGHT",-10,26)
scrollbar:SetScript("OnValueChanged", OnScrollValueChanged)
scrollbar:SetMinMaxValues(0,0)
self.localstatus.scrollvalue = 0
scrollbar:SetValueStep(1)
scrollbar:SetValue(0)
scrollbar:SetWidth(16)
self.noupdate = nil
local border = CreateFrame("Frame",nil,frame)
self.border = border
border:SetPoint("TOPLEFT",treeframe,"TOPRIGHT", 0,0)
border:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0)
border:SetBackdrop(PaneBackdrop)
border:SetBackdropColor(0.1,0.1,0.1,0.5)
border:SetBackdropBorderColor(0.4,0.4,0.4)
--Container Support
local content = CreateFrame("Frame",nil,border)
self.content = content
content.obj = self
content:SetPoint("TOPLEFT",border,"TOPLEFT",10,-10)
content:SetPoint("BOTTOMRIGHT",border,"BOTTOMRIGHT",-10,10)
AceGUI:RegisterAsContainer(self)
--AceGUI:RegisterAsWidget(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end
@@ -0,0 +1,331 @@
local AceGUI = LibStub("AceGUI-3.0")
-- Lua APIs
local pairs, assert, type = pairs, assert, type
-- WoW APIs
local PlaySound = PlaySound
local CreateFrame, UIParent = CreateFrame, UIParent
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
-- List them here for Mikk's FindGlobals script
-- GLOBALS: GameFontNormal
----------------
-- Main Frame --
----------------
--[[
Events :
OnClose
]]
do
local Type = "Window"
local Version = 4
local function frameOnClose(this)
this.obj:Fire("OnClose")
end
local function closeOnClick(this)
PlaySound("gsTitleOptionExit")
this.obj:Hide()
end
local function frameOnMouseDown(this)
AceGUI:ClearFocus()
end
local function titleOnMouseDown(this)
this:GetParent():StartMoving()
AceGUI:ClearFocus()
end
local function frameOnMouseUp(this)
local frame = this:GetParent()
frame:StopMovingOrSizing()
local self = frame.obj
local status = self.status or self.localstatus
status.width = frame:GetWidth()
status.height = frame:GetHeight()
status.top = frame:GetTop()
status.left = frame:GetLeft()
end
local function sizerseOnMouseDown(this)
this:GetParent():StartSizing("BOTTOMRIGHT")
AceGUI:ClearFocus()
end
local function sizersOnMouseDown(this)
this:GetParent():StartSizing("BOTTOM")
AceGUI:ClearFocus()
end
local function sizereOnMouseDown(this)
this:GetParent():StartSizing("RIGHT")
AceGUI:ClearFocus()
end
local function sizerOnMouseUp(this)
this:GetParent():StopMovingOrSizing()
end
local function SetTitle(self,title)
self.titletext:SetText(title)
end
local function SetStatusText(self,text)
-- self.statustext:SetText(text)
end
local function Hide(self)
self.frame:Hide()
end
local function Show(self)
self.frame:Show()
end
local function OnAcquire(self)
self.frame:SetParent(UIParent)
self.frame:SetFrameStrata("FULLSCREEN_DIALOG")
self:ApplyStatus()
self:EnableResize(true)
self:Show()
end
local function OnRelease(self)
self.status = nil
for k in pairs(self.localstatus) do
self.localstatus[k] = nil
end
end
-- called to set an external table to store status in
local function SetStatusTable(self, status)
assert(type(status) == "table")
self.status = status
self:ApplyStatus()
end
local function ApplyStatus(self)
local status = self.status or self.localstatus
local frame = self.frame
self:SetWidth(status.width or 700)
self:SetHeight(status.height or 500)
if status.top and status.left then
frame:SetPoint("TOP",UIParent,"BOTTOM",0,status.top)
frame:SetPoint("LEFT",UIParent,"LEFT",status.left,0)
else
frame:SetPoint("CENTER",UIParent,"CENTER")
end
end
local function OnWidthSet(self, width)
local content = self.content
local contentwidth = width - 34
if contentwidth < 0 then
contentwidth = 0
end
content:SetWidth(contentwidth)
content.width = contentwidth
end
local function OnHeightSet(self, height)
local content = self.content
local contentheight = height - 57
if contentheight < 0 then
contentheight = 0
end
content:SetHeight(contentheight)
content.height = contentheight
end
local function EnableResize(self, state)
local func = state and "Show" or "Hide"
self.sizer_se[func](self.sizer_se)
self.sizer_s[func](self.sizer_s)
self.sizer_e[func](self.sizer_e)
end
local function Constructor()
local frame = CreateFrame("Frame",nil,UIParent)
local self = {}
self.type = "Window"
self.Hide = Hide
self.Show = Show
self.SetTitle = SetTitle
self.OnRelease = OnRelease
self.OnAcquire = OnAcquire
self.SetStatusText = SetStatusText
self.SetStatusTable = SetStatusTable
self.ApplyStatus = ApplyStatus
self.OnWidthSet = OnWidthSet
self.OnHeightSet = OnHeightSet
self.EnableResize = EnableResize
self.localstatus = {}
self.frame = frame
frame.obj = self
frame:SetWidth(700)
frame:SetHeight(500)
frame:SetPoint("CENTER",UIParent,"CENTER",0,0)
frame:EnableMouse()
frame:SetMovable(true)
frame:SetResizable(true)
frame:SetFrameStrata("FULLSCREEN_DIALOG")
frame:SetScript("OnMouseDown", frameOnMouseDown)
frame:SetScript("OnHide",frameOnClose)
frame:SetMinResize(240,240)
frame:SetToplevel(true)
local titlebg = frame:CreateTexture(nil, "BACKGROUND")
titlebg:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Title-Background]])
titlebg:SetPoint("TOPLEFT", 9, -6)
titlebg:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -28, -24)
local dialogbg = frame:CreateTexture(nil, "BACKGROUND")
dialogbg:SetTexture([[Interface\Tooltips\UI-Tooltip-Background]])
dialogbg:SetPoint("TOPLEFT", 8, -24)
dialogbg:SetPoint("BOTTOMRIGHT", -6, 8)
dialogbg:SetVertexColor(0, 0, 0, .75)
local topleft = frame:CreateTexture(nil, "BORDER")
topleft:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
topleft:SetWidth(64)
topleft:SetHeight(64)
topleft:SetPoint("TOPLEFT")
topleft:SetTexCoord(0.501953125, 0.625, 0, 1)
local topright = frame:CreateTexture(nil, "BORDER")
topright:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
topright:SetWidth(64)
topright:SetHeight(64)
topright:SetPoint("TOPRIGHT")
topright:SetTexCoord(0.625, 0.75, 0, 1)
local top = frame:CreateTexture(nil, "BORDER")
top:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
top:SetHeight(64)
top:SetPoint("TOPLEFT", topleft, "TOPRIGHT")
top:SetPoint("TOPRIGHT", topright, "TOPLEFT")
top:SetTexCoord(0.25, 0.369140625, 0, 1)
local bottomleft = frame:CreateTexture(nil, "BORDER")
bottomleft:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
bottomleft:SetWidth(64)
bottomleft:SetHeight(64)
bottomleft:SetPoint("BOTTOMLEFT")
bottomleft:SetTexCoord(0.751953125, 0.875, 0, 1)
local bottomright = frame:CreateTexture(nil, "BORDER")
bottomright:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
bottomright:SetWidth(64)
bottomright:SetHeight(64)
bottomright:SetPoint("BOTTOMRIGHT")
bottomright:SetTexCoord(0.875, 1, 0, 1)
local bottom = frame:CreateTexture(nil, "BORDER")
bottom:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
bottom:SetHeight(64)
bottom:SetPoint("BOTTOMLEFT", bottomleft, "BOTTOMRIGHT")
bottom:SetPoint("BOTTOMRIGHT", bottomright, "BOTTOMLEFT")
bottom:SetTexCoord(0.376953125, 0.498046875, 0, 1)
local left = frame:CreateTexture(nil, "BORDER")
left:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
left:SetWidth(64)
left:SetPoint("TOPLEFT", topleft, "BOTTOMLEFT")
left:SetPoint("BOTTOMLEFT", bottomleft, "TOPLEFT")
left:SetTexCoord(0.001953125, 0.125, 0, 1)
local right = frame:CreateTexture(nil, "BORDER")
right:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]])
right:SetWidth(64)
right:SetPoint("TOPRIGHT", topright, "BOTTOMRIGHT")
right:SetPoint("BOTTOMRIGHT", bottomright, "TOPRIGHT")
right:SetTexCoord(0.1171875, 0.2421875, 0, 1)
local close = CreateFrame("Button", nil, frame, "UIPanelCloseButton")
close:SetPoint("TOPRIGHT", 2, 1)
close:SetScript("OnClick", closeOnClick)
self.closebutton = close
close.obj = self
local titletext = frame:CreateFontString(nil, "ARTWORK")
titletext:SetFontObject(GameFontNormal)
titletext:SetPoint("TOPLEFT", 12, -8)
titletext:SetPoint("TOPRIGHT", -32, -8)
self.titletext = titletext
local title = CreateFrame("Button", nil, frame)
title:SetPoint("TOPLEFT", titlebg)
title:SetPoint("BOTTOMRIGHT", titlebg)
title:EnableMouse()
title:SetScript("OnMouseDown",titleOnMouseDown)
title:SetScript("OnMouseUp", frameOnMouseUp)
self.title = title
local sizer_se = CreateFrame("Frame",nil,frame)
sizer_se:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0)
sizer_se:SetWidth(25)
sizer_se:SetHeight(25)
sizer_se:EnableMouse()
sizer_se:SetScript("OnMouseDown",sizerseOnMouseDown)
sizer_se:SetScript("OnMouseUp", sizerOnMouseUp)
self.sizer_se = sizer_se
local line1 = sizer_se:CreateTexture(nil, "BACKGROUND")
self.line1 = line1
line1:SetWidth(14)
line1:SetHeight(14)
line1:SetPoint("BOTTOMRIGHT", -8, 8)
line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
local x = 0.1 * 14/17
line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)
local line2 = sizer_se:CreateTexture(nil, "BACKGROUND")
self.line2 = line2
line2:SetWidth(8)
line2:SetHeight(8)
line2:SetPoint("BOTTOMRIGHT", -8, 8)
line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
local x = 0.1 * 8/17
line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5)
local sizer_s = CreateFrame("Frame",nil,frame)
sizer_s:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-25,0)
sizer_s:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT",0,0)
sizer_s:SetHeight(25)
sizer_s:EnableMouse()
sizer_s:SetScript("OnMouseDown",sizersOnMouseDown)
sizer_s:SetScript("OnMouseUp", sizerOnMouseUp)
self.sizer_s = sizer_s
local sizer_e = CreateFrame("Frame",nil,frame)
sizer_e:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,25)
sizer_e:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0)
sizer_e:SetWidth(25)
sizer_e:EnableMouse()
sizer_e:SetScript("OnMouseDown",sizereOnMouseDown)
sizer_e:SetScript("OnMouseUp", sizerOnMouseUp)
self.sizer_e = sizer_e
--Container Support
local content = CreateFrame("Frame",nil,frame)
self.content = content
content.obj = self
content:SetPoint("TOPLEFT",frame,"TOPLEFT",12,-32)
content:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-12,13)
AceGUI:RegisterAsContainer(self)
return self
end
AceGUI:RegisterWidgetType(Type,Constructor,Version)
end
@@ -1,5 +1,5 @@
--[[ $Id: CallbackHandler-1.0.lua 965 2010-08-09 00:47:52Z mikk $ ]] --[[ $Id: CallbackHandler-1.0.lua 895 2009-12-06 16:28:55Z nevcairiel $ ]]
local MAJOR, MINOR = "CallbackHandler-1.0", 6 local MAJOR, MINOR = "CallbackHandler-1.0", 5
local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
if not CallbackHandler then return end -- No upgrade needed if not CallbackHandler then return end -- No upgrade needed
@@ -147,9 +147,9 @@ function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAll
regfunc = function(...) self[method](self,...) end regfunc = function(...) self[method](self,...) end
end end
else else
-- function ref with self=object or self="addonId" or self=thread -- function ref with self=object or self="addonId"
if type(self)~="table" and type(self)~="string" and type(self)~="thread" then if type(self)~="table" and type(self)~="string" then
error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string or thread expected.", 2) error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string expected.", 2)
end end
if select("#",...)>=1 then -- this is not the same as testing for arg==nil! if select("#",...)>=1 then -- this is not the same as testing for arg==nil!
@@ -1,6 +1,6 @@
--[[ --[[
Name: LibBabble-Inventory-3.0 Name: LibBabble-Inventory-3.0
Revision: $Rev: 104 $ Revision: $Rev: 101 $
Maintainers: ckknight, nevcairiel, Ackis Maintainers: ckknight, nevcairiel, Ackis
Website: http://www.wowace.com/projects/libbabble-inventory-3-0/ Website: http://www.wowace.com/projects/libbabble-inventory-3-0/
Dependencies: None Dependencies: None
@@ -8,7 +8,7 @@ License: MIT
]] ]]
local MAJOR_VERSION = "LibBabble-Inventory-3.0" local MAJOR_VERSION = "LibBabble-Inventory-3.0"
local MINOR_VERSION = 90000 + tonumber(("$Rev: 104 $"):match("%d+")) local MINOR_VERSION = 90000 + tonumber(("$Rev: 101 $"):match("%d+"))
if not LibStub then error(MAJOR_VERSION .. " requires LibStub.") end if not LibStub then error(MAJOR_VERSION .. " requires LibStub.") end
local lib = LibStub("LibBabble-3.0"):New(MAJOR_VERSION, MINOR_VERSION) local lib = LibStub("LibBabble-3.0"):New(MAJOR_VERSION, MINOR_VERSION)
@@ -166,7 +166,7 @@ if GAME_LOCALE == "enUS" then
lib:SetCurrentTranslations(true) lib:SetCurrentTranslations(true)
elseif GAME_LOCALE == "deDE" then elseif GAME_LOCALE == "deDE" then
lib:SetCurrentTranslations { lib:SetCurrentTranslations {
Alchemy = "Alchimie", Alchemy = "Alchemie",
["Ammo Pouch"] = "Munitionsbeutel", ["Ammo Pouch"] = "Munitionsbeutel",
Armor = "Rüstung", Armor = "Rüstung",
["Armor Enchantment"] = "Rüstungsverzauberung", ["Armor Enchantment"] = "Rüstungsverzauberung",
@@ -210,7 +210,7 @@ elseif GAME_LOCALE == "deDE" then
["Fist Weapons"] = "Faustwaffen", ["Fist Weapons"] = "Faustwaffen",
Flask = "Fläschchen", Flask = "Fläschchen",
Food = "Essen", Food = "Essen",
["Food & Drink"] = "Speis & Trank", ["Food & Drink"] = "Essen & Trinken",
Gem = "Edelstein", Gem = "Edelstein",
["Gem Bag"] = "Edelsteintasche", ["Gem Bag"] = "Edelsteintasche",
Glyph = "Glyphe", Glyph = "Glyphe",
@@ -314,7 +314,7 @@ elseif GAME_LOCALE == "frFR" then
Alchemy = "Alchimie", Alchemy = "Alchimie",
["Ammo Pouch"] = "Giberne", ["Ammo Pouch"] = "Giberne",
Armor = "Armure", Armor = "Armure",
["Armor Enchantment"] = "Enchantement d'armure", ["Armor Enchantment"] = "Enchantements d'armure",
Arrow = "Flèche", Arrow = "Flèche",
Axe = "Hache", Axe = "Hache",
Back = "Dos", Back = "Dos",
@@ -336,15 +336,15 @@ elseif GAME_LOCALE == "frFR" then
Dagger = "Dague", Dagger = "Dague",
Daggers = "Dagues", Daggers = "Dagues",
["Death Knight"] = "Chevalier de la mort", ["Death Knight"] = "Chevalier de la mort",
Devices = "Appareils", Devices = "Élémentaire",
Drink = "Breuvage", Drink = "Breuvage",
Druid = "Druide", Druid = "Druide",
Elemental = "Élémentaire", Elemental = "Élémentaire",
Elixir = "Élixir", Elixir = "Élixir",
Enchanting = "Enchantement", Enchanting = "Enchantement",
["Enchanting Bag"] = "Sac d'enchanteur", ["Enchanting Bag"] = "Sac d'enchantement",
Engineering = "Ingénierie", Engineering = "Ingénierie",
["Engineering Bag"] = "Sac d'ingénieur", ["Engineering Bag"] = "Sac d'ingéniérie",
Explosives = "Explosifs", Explosives = "Explosifs",
Feet = "Pieds", Feet = "Pieds",
["First Aid"] = "Secourisme", ["First Aid"] = "Secourisme",
@@ -378,7 +378,7 @@ elseif GAME_LOCALE == "frFR" then
Key = "Clé", Key = "Clé",
Leather = "Cuir", Leather = "Cuir",
Leatherworking = "Travail du cuir", Leatherworking = "Travail du cuir",
["Leatherworking Bag"] = "Sac de travail du cuir", ["Leatherworking Bag"] = "Sac de travailleur du cuir",
Legs = "Jambes", Legs = "Jambes",
Libram = "Libram", Libram = "Libram",
Librams = "Librams", Librams = "Librams",
@@ -450,14 +450,14 @@ elseif GAME_LOCALE == "frFR" then
Warlock = "Démoniste", Warlock = "Démoniste",
Warrior = "Guerrier", Warrior = "Guerrier",
Weapon = "Arme", Weapon = "Arme",
["Weapon Enchantment"] = "Enchantement d'arme", ["Weapon Enchantment"] = "Enchantements d'arme",
Wrist = "Poignets", Wrist = "Poignets",
Yellow = "Jaune", Yellow = "Jaune",
} }
elseif GAME_LOCALE == "koKR" then elseif GAME_LOCALE == "koKR" then
lib:SetCurrentTranslations { lib:SetCurrentTranslations {
Alchemy = "연금술", Alchemy = "연금술",
["Ammo Pouch"] = " 주머니", -- Needs review ["Ammo Pouch"] = " 주머니",
Armor = "방어구", Armor = "방어구",
["Armor Enchantment"] = "방어구 마부", ["Armor Enchantment"] = "방어구 마부",
Arrow = "화살", Arrow = "화살",
@@ -473,24 +473,24 @@ elseif GAME_LOCALE == "koKR" then
Bullet = "탄환", Bullet = "탄환",
Chest = "가슴", Chest = "가슴",
Cloth = "", Cloth = "",
Consumable = "소비 용품", -- Needs review Consumable = "소비용품",
Container = "가방", -- Needs review Container = "보관함",
Cooking = "요리", Cooking = "요리",
Crossbow = "석궁", Crossbow = "석궁",
Crossbows = "석궁류", Crossbows = "석궁류",
Dagger = "단검", Dagger = "단검",
Daggers = "단검류", Daggers = "단검류",
["Death Knight"] = "죽음의 기사", ["Death Knight"] = "죽음의 기사",
Devices = "장치", -- Needs review Devices = "기계 장치",
Drink = "음료", Drink = "음료",
Druid = "드루이드", Druid = "드루이드",
Elemental = "원소", Elemental = "원소",
Elixir = "", -- Needs review Elixir = "",
Enchanting = "마법부여", Enchanting = "마법부여",
["Enchanting Bag"] = "마법부여 가방", ["Enchanting Bag"] = "마법부여 가방",
Engineering = "기계공학", Engineering = "기계공학",
["Engineering Bag"] = "기계공학 가방", ["Engineering Bag"] = "기계공학 가방",
Explosives = "", -- Needs review Explosives = "발물",
Feet = "", Feet = "",
["First Aid"] = "응급치료", ["First Aid"] = "응급치료",
Fishing = "낚시", Fishing = "낚시",
@@ -498,7 +498,7 @@ elseif GAME_LOCALE == "koKR" then
["Fishing Poles"] = "낚싯대", ["Fishing Poles"] = "낚싯대",
["Fist Weapon"] = "장착 무기", ["Fist Weapon"] = "장착 무기",
["Fist Weapons"] = "장착 무기류", ["Fist Weapons"] = "장착 무기류",
Flask = "", -- Needs review Flask = "",
Food = "음식", Food = "음식",
["Food & Drink"] = "음식과 음료", ["Food & Drink"] = "음식과 음료",
Gem = "보석", Gem = "보석",
@@ -516,7 +516,7 @@ elseif GAME_LOCALE == "koKR" then
Hunter = "사냥꾼", Hunter = "사냥꾼",
Idol = "우상", Idol = "우상",
Idols = "우상", Idols = "우상",
["Inscription Bag"] = "주문각인 가방", -- Needs review ["Inscription Bag"] = "주문각인사의 가방",
["Item Enhancement"] = "아이템 강화", ["Item Enhancement"] = "아이템 강화",
Jewelcrafting = "보석세공", Jewelcrafting = "보석세공",
Junk = "잡동사니", Junk = "잡동사니",
@@ -583,7 +583,7 @@ elseif GAME_LOCALE == "koKR" then
Thrown = "투척 무기", Thrown = "투척 무기",
Totem = "토템", Totem = "토템",
Totems = "토템", Totems = "토템",
["Trade Goods"] = "직업 용품", -- Needs review ["Trade Goods"] = "직업용품",
Trinket = "장신구", Trinket = "장신구",
["Two-Hand"] = "양손", ["Two-Hand"] = "양손",
["Two-Handed Axes"] = "양손 도끼류", ["Two-Handed Axes"] = "양손 도끼류",
@@ -602,7 +602,7 @@ elseif GAME_LOCALE == "koKR" then
elseif GAME_LOCALE == "esES" then elseif GAME_LOCALE == "esES" then
lib:SetCurrentTranslations { lib:SetCurrentTranslations {
Alchemy = "Alquimia", Alchemy = "Alquimia",
["Ammo Pouch"] = "Bolsa de munición", ["Ammo Pouch"] = "Bolsa de Munición",
Armor = "Armadura", Armor = "Armadura",
["Armor Enchantment"] = "Encantamiento de Armadura", ["Armor Enchantment"] = "Encantamiento de Armadura",
Arrow = "Flecha", Arrow = "Flecha",
@@ -632,9 +632,9 @@ elseif GAME_LOCALE == "esES" then
Elemental = "Elemental", Elemental = "Elemental",
Elixir = "Elixir", Elixir = "Elixir",
Enchanting = "Encantamiento", Enchanting = "Encantamiento",
["Enchanting Bag"] = "Bolsa de encantamiento", ["Enchanting Bag"] = "Bolsa de Encantamiento",
Engineering = "Ingeniería", Engineering = "Ingeniería",
["Engineering Bag"] = "Bolsa de ingeniería", ["Engineering Bag"] = "Bolsa de Ingeniería",
Explosives = "Explosivos", Explosives = "Explosivos",
Feet = "Pies", Feet = "Pies",
["First Aid"] = "Primeros auxilios", ["First Aid"] = "Primeros auxilios",
@@ -647,7 +647,7 @@ elseif GAME_LOCALE == "esES" then
Food = "Comida", Food = "Comida",
["Food & Drink"] = "Comida y bebida", ["Food & Drink"] = "Comida y bebida",
Gem = "Gema", Gem = "Gema",
["Gem Bag"] = "Bolsa de gemas", ["Gem Bag"] = "Bolsa de Gemas",
Glyph = "Glifo", Glyph = "Glifo",
Green = "Verde", Green = "Verde",
Gun = "Pistola", Gun = "Pistola",
@@ -656,19 +656,19 @@ elseif GAME_LOCALE == "esES" then
Head = "Cabeza", Head = "Cabeza",
["Held in Off-Hand"] = "Sostener con la mano izquierda", ["Held in Off-Hand"] = "Sostener con la mano izquierda",
Herb = "Herbalísmo", Herb = "Herbalísmo",
["Herb Bag"] = "Bolsa de hierbas", ["Herb Bag"] = "Bolsa de Hierbas",
Holiday = "Festivo", Holiday = "Festivo",
Hunter = "Cazador", Hunter = "Cazador",
Idol = "Ídolo", Idol = "Ídolo",
Idols = "Ídolos", Idols = "Ídolos",
["Inscription Bag"] = "Bolsa de inscripción", ["Inscription Bag"] = "Bolsa de Inscripción",
["Item Enhancement"] = "Mejora de Objeto", ["Item Enhancement"] = "Mejora de Objeto",
Jewelcrafting = "Joyería", Jewelcrafting = "Joyería",
Junk = "Basura", Junk = "Basura",
Key = "Llave", Key = "Llave",
Leather = "Cuero", Leather = "Cuero",
Leatherworking = "Peletería", Leatherworking = "Peletería",
["Leatherworking Bag"] = "Bolsa de peletería", ["Leatherworking Bag"] = "Bolsa de Peletería",
Legs = "Piernas", Legs = "Piernas",
Libram = "Tratado", Libram = "Tratado",
Librams = "Tratados", Librams = "Tratados",
@@ -680,8 +680,8 @@ elseif GAME_LOCALE == "esES" then
Meat = "Carne", Meat = "Carne",
Meta = "Meta", Meta = "Meta",
["Metal & Stone"] = "Metal y Piedra", ["Metal & Stone"] = "Metal y Piedra",
["Mining Bag"] = "Bolsa de minería", ["Mining Bag"] = "Bolsa de Minería",
Miscellaneous = "Misceláneas", Miscellaneous = "Miscelánea",
Mount = "Montura", Mount = "Montura",
Neck = "Cuello", Neck = "Cuello",
["Off Hand"] = "Mano Izquierda", ["Off Hand"] = "Mano Izquierda",
@@ -719,7 +719,7 @@ elseif GAME_LOCALE == "esES" then
Shoulder = "Hombros", Shoulder = "Hombros",
Sigils = "Sigilos", Sigils = "Sigilos",
Simple = "Simple", Simple = "Simple",
["Soul Bag"] = "Bolsa de almas", ["Soul Bag"] = "Bolsa de Almas",
Staff = "Bastón", Staff = "Bastón",
Staves = "Bastones", Staves = "Bastones",
Sword = "Espada", Sword = "Espada",
@@ -777,9 +777,9 @@ elseif GAME_LOCALE == "esMX" then
Elemental = "Elemental", Elemental = "Elemental",
Elixir = "Elixir", Elixir = "Elixir",
Enchanting = "Encantamiento", Enchanting = "Encantamiento",
["Enchanting Bag"] = "Bolsa de encantamiento", ["Enchanting Bag"] = "Bolsa de Encantamiento",
Engineering = "Ingeniería", Engineering = "Ingeniería",
["Engineering Bag"] = "Bolsa de ingeniería", ["Engineering Bag"] = "Bolsa de Ingeniería",
Explosives = "Explosivos", Explosives = "Explosivos",
Feet = "Pies", Feet = "Pies",
["First Aid"] = "Primeros auxilios", ["First Aid"] = "Primeros auxilios",
@@ -801,12 +801,12 @@ elseif GAME_LOCALE == "esMX" then
Head = "Cabeza", Head = "Cabeza",
["Held in Off-Hand"] = "Sostener con la mano izquierda", ["Held in Off-Hand"] = "Sostener con la mano izquierda",
Herb = "Herbalísmo", Herb = "Herbalísmo",
["Herb Bag"] = "Bolsa de hierbas", ["Herb Bag"] = "Bolsa de Hierbas",
Holiday = "Festivo", Holiday = "Festivo",
Hunter = "Cazador", Hunter = "Cazador",
Idol = "Ídolo", Idol = "Ídolo",
Idols = "Ídolos", Idols = "Ídolos",
["Inscription Bag"] = "Bolsa de inscripción", ["Inscription Bag"] = "Bolsa de Inscripción",
["Item Enhancement"] = "Mejora de Objeto", ["Item Enhancement"] = "Mejora de Objeto",
Jewelcrafting = "Joyería", Jewelcrafting = "Joyería",
Junk = "Basura", Junk = "Basura",
@@ -894,8 +894,8 @@ elseif GAME_LOCALE == "ruRU" then
Alchemy = "Алхимия", Alchemy = "Алхимия",
["Ammo Pouch"] = "Подсумок", ["Ammo Pouch"] = "Подсумок",
Armor = "Доспехи", Armor = "Доспехи",
["Armor Enchantment"] = "Чары для оружия", ["Armor Enchantment"] = "Чары для доспехов",
Arrow = "Стрелы", Arrow = "Стрела",
Axe = "Топор", Axe = "Топор",
Back = "Спина", Back = "Спина",
Bag = "Сумка", Bag = "Сумка",
@@ -905,10 +905,10 @@ elseif GAME_LOCALE == "ruRU" then
Book = "Книга", Book = "Книга",
Bow = "Лук", Bow = "Лук",
Bows = "Луки", Bows = "Луки",
Bullet = "Пули", Bullet = "Пуля",
Chest = "Грудь", Chest = "Грудь",
Cloth = "Ткань", Cloth = "Ткань",
Consumable = "Расходуемые", Consumable = "Потребляемые",
Container = "Сумки", Container = "Сумки",
Cooking = "Кулинария", Cooking = "Кулинария",
Crossbow = "Арбалет", Crossbow = "Арбалет",
@@ -924,7 +924,7 @@ elseif GAME_LOCALE == "ruRU" then
Enchanting = "Наложение чар", Enchanting = "Наложение чар",
["Enchanting Bag"] = "Сумка зачаровывателя", ["Enchanting Bag"] = "Сумка зачаровывателя",
Engineering = "Механика", Engineering = "Механика",
["Engineering Bag"] = "Сумка инженера", ["Engineering Bag"] = "Сумка механика",
Explosives = "Взрывчатка", Explosives = "Взрывчатка",
Feet = "Ступни", Feet = "Ступни",
["First Aid"] = "Первая помощь", ["First Aid"] = "Первая помощь",
@@ -970,7 +970,7 @@ elseif GAME_LOCALE == "ruRU" then
Meat = "Мясо", Meat = "Мясо",
Meta = "Особый", Meta = "Особый",
["Metal & Stone"] = "Металл и камень", ["Metal & Stone"] = "Металл и камень",
["Mining Bag"] = "Сумка шахтера", ["Mining Bag"] = "Шахтерская сумка",
Miscellaneous = "Разное", Miscellaneous = "Разное",
Mount = "Верховые животные", Mount = "Верховые животные",
Neck = "Шея", Neck = "Шея",
@@ -983,7 +983,7 @@ elseif GAME_LOCALE == "ruRU" then
Other = "Другое", Other = "Другое",
Paladin = "Паладин", Paladin = "Паладин",
Parts = "Детали", Parts = "Детали",
Pet = "Питомцы", Pet = "Питомец",
Plate = "Латы", Plate = "Латы",
Polearm = "Древковое", Polearm = "Древковое",
Polearms = "Древковое", Polearms = "Древковое",
@@ -993,9 +993,9 @@ elseif GAME_LOCALE == "ruRU" then
Projectile = "Боеприпасы", Projectile = "Боеприпасы",
Purple = "Фиолетовый", Purple = "Фиолетовый",
Quest = "Задания", Quest = "Задания",
Quiver = "Амуниция", Quiver = "Колчан",
Ranged = "Для оружия дальнего боя", Ranged = "Для оружия дальнего боя",
Reagent = "Реагенты", Reagent = "Реагент",
Recipe = "Рецепты", Recipe = "Рецепты",
Red = "Красный", Red = "Красный",
Relic = "Реликвия", Relic = "Реликвия",
@@ -1030,7 +1030,7 @@ elseif GAME_LOCALE == "ruRU" then
Warlock = "Чернокнижник", Warlock = "Чернокнижник",
Warrior = "Воин", Warrior = "Воин",
Weapon = "Оружие", Weapon = "Оружие",
["Weapon Enchantment"] = "Чары для доспехов", ["Weapon Enchantment"] = "Чары для оружия\009",
Wrist = "Запястья", Wrist = "Запястья",
Yellow = "Желтый", Yellow = "Желтый",
} }
@@ -1182,7 +1182,7 @@ elseif GAME_LOCALE == "zhCN" then
elseif GAME_LOCALE == "zhTW" then elseif GAME_LOCALE == "zhTW" then
lib:SetCurrentTranslations { lib:SetCurrentTranslations {
Alchemy = "鍊金術", Alchemy = "鍊金術",
["Ammo Pouch"] = "彈藥", ["Ammo Pouch"] = "彈藥",
Armor = "護甲", Armor = "護甲",
["Armor Enchantment"] = "護甲附魔", ["Armor Enchantment"] = "護甲附魔",
Arrow = "", Arrow = "",
@@ -1197,7 +1197,7 @@ elseif GAME_LOCALE == "zhTW" then
Bows = "", Bows = "",
Bullet = "子彈", Bullet = "子彈",
Chest = "胸部", Chest = "胸部",
Cloth = "", Cloth = "",
Consumable = "消耗品", Consumable = "消耗品",
Container = "容器", Container = "容器",
Cooking = "烹飪", Cooking = "烹飪",
@@ -1215,7 +1215,7 @@ elseif GAME_LOCALE == "zhTW" then
["Enchanting Bag"] = "附魔包", ["Enchanting Bag"] = "附魔包",
Engineering = "工程學", Engineering = "工程學",
["Engineering Bag"] = "工程包", ["Engineering Bag"] = "工程包",
Explosives = "", Explosives = "",
Feet = "", Feet = "",
["First Aid"] = "急救", ["First Aid"] = "急救",
Fishing = "釣魚", Fishing = "釣魚",
@@ -1227,7 +1227,7 @@ elseif GAME_LOCALE == "zhTW" then
Food = "食物", Food = "食物",
["Food & Drink"] = "食物和飲料", ["Food & Drink"] = "食物和飲料",
Gem = "寶石", Gem = "寶石",
["Gem Bag"] = "寶石包", ["Gem Bag"] = "寶石",
Glyph = "雕紋", Glyph = "雕紋",
Green = "綠色", Green = "綠色",
Gun = "槍械", Gun = "槍械",
@@ -1246,7 +1246,7 @@ elseif GAME_LOCALE == "zhTW" then
Jewelcrafting = "珠寶設計", Jewelcrafting = "珠寶設計",
Junk = "垃圾", Junk = "垃圾",
Key = "鑰匙", Key = "鑰匙",
Leather = "", Leather = "",
Leatherworking = "製皮", Leatherworking = "製皮",
["Leatherworking Bag"] = "製皮包", ["Leatherworking Bag"] = "製皮包",
Legs = "腿部", Legs = "腿部",
@@ -1259,10 +1259,10 @@ elseif GAME_LOCALE == "zhTW" then
Materials = "原料", Materials = "原料",
Meat = "肉類", Meat = "肉類",
Meta = "變換", Meta = "變換",
["Metal & Stone"] = "金屬石頭", ["Metal & Stone"] = "金屬石頭",
["Mining Bag"] = "礦石包", ["Mining Bag"] = "礦石包",
Miscellaneous = "其他", Miscellaneous = "其他",
Mount = "", Mount = "",
Neck = "頸部", Neck = "頸部",
["Off Hand"] = "副手", ["Off Hand"] = "副手",
["One-Hand"] = "單手", ["One-Hand"] = "單手",
@@ -1,4 +1,4 @@
## Interface: 40000 ## Interface: 30300
## LoadOnDemand: 1 ## LoadOnDemand: 1
## Title: Lib: Babble-Inventory-3.0 ## Title: Lib: Babble-Inventory-3.0
## Notes: A library to help with localization of item types and subtypes. ## Notes: A library to help with localization of item types and subtypes.
@@ -7,7 +7,7 @@
## X-eMail: ckknight@gmail.com ## X-eMail: ckknight@gmail.com
## X-Category: Library ## X-Category: Library
## X-License: MIT ## X-License: MIT
## X-Curse-Packaged-Version: r106 ## X-Curse-Packaged-Version: r101
## X-Curse-Project-Name: LibBabble-Inventory-3.0 ## X-Curse-Project-Name: LibBabble-Inventory-3.0
## X-Curse-Project-ID: libbabble-inventory-3-0 ## X-Curse-Project-ID: libbabble-inventory-3-0
## X-Curse-Repository-ID: wow/libbabble-inventory-3-0/mainline ## X-Curse-Repository-ID: wow/libbabble-inventory-3-0/mainline
@@ -0,0 +1,30 @@
-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
-- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
local LibStub = _G[LIBSTUB_MAJOR]
if not LibStub or LibStub.minor < LIBSTUB_MINOR then
LibStub = LibStub or {libs = {}, minors = {} }
_G[LIBSTUB_MAJOR] = LibStub
LibStub.minor = LIBSTUB_MINOR
function LibStub:NewLibrary(major, minor)
assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
local oldminor = self.minors[major]
if oldminor and oldminor >= minor then return nil end
self.minors[major], self.libs[major] = minor, self.libs[major] or {}
return self.libs[major], oldminor
end
function LibStub:GetLibrary(major, silent)
if not self.libs[major] and not silent then
error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
end
return self.libs[major], self.minors[major]
end
function LibStub:IterateLibraries() return pairs(self.libs) end
setmetatable(LibStub, { __call = LibStub.GetLibrary })
end
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,6 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="LibStatLogic-1.1.lua"/>
</Ui>
@@ -1,10 +1,10 @@
--[[ --[[
Name: LibTipHooker-1.1.lua Name: LibTipHooker-1.1.lua
Description: A Library for hooking tooltips. Description: A Library for hooking tooltips.
Revision: $Revision: 14 $ Revision: $Revision: 11 $
Author: Whitetooth Author: Whitetooth
Email: hotdogee [at] gmail [dot] com Email: hotdogee [at] gmail [dot] com
LastUpdate: $Date: 2010-10-22 16:07:10 +0000 (Fri, 22 Oct 2010) $ LastUpdate: $Date: 2009-08-31 06:43:54 +0000 (Mon, 31 Aug 2009) $
Website: Website:
Documentation: Documentation:
SVN: $URL $ SVN: $URL $
@@ -32,7 +32,7 @@ For a complete item scanning solution to stat scanning you can use ItemBonusLib
local MAJOR = "LibTipHooker-1.1" local MAJOR = "LibTipHooker-1.1"
local MINOR = "$Revision: 14 $" local MINOR = "$Revision: 11 $"
local TipHooker = LibStub:NewLibrary(MAJOR, MINOR) local TipHooker = LibStub:NewLibrary(MAJOR, MINOR)
if not TipHooker then return end -- this file is older version if not TipHooker then return end -- this file is older version
@@ -134,8 +134,6 @@ local MethodList = {
-- 3.0 -- 3.0
"SetCurrencyToken", "SetCurrencyToken",
"SetBackpackToken", "SetBackpackToken",
-- 4.0
"SetReforgeItem",
}, },
buff = { buff = {
"SetPlayerBuff", "SetPlayerBuff",