changeset 237:704f4a05a1d7

Demodulificate all bar options (except state options)
author Flick
date Thu, 24 Mar 2011 13:11:30 -0700
parents dcdc0235d489
children 8bde290d300c
files Editor.lua ReAction.lua ReAction.xml classes/ActionButton.lua classes/Bar.lua modules/Action.lua modules/PetAction.lua modules/VehicleExit.lua modules/modules.xml
diffstat 9 files changed, 564 insertions(+), 586 deletions(-) [+]
line wrap: on
line diff
--- a/Editor.lua	Thu Mar 24 13:09:44 2011 -0700
+++ b/Editor.lua	Thu Mar 24 13:11:30 2011 -0700
@@ -20,7 +20,9 @@
   BOTTOMRIGHT = L["Bottom Right"],
 }
 
-local Editor = { }
+local Editor = { 
+  buttonHandlers = { }
+}
 
 function Editor:New()
   -- create new self
@@ -323,6 +325,7 @@
             },
           },
         },
+        buttonOpts = self:CreateButtonOptions(bar)
       },
       plugins = { }
     }
@@ -347,6 +350,17 @@
   end
 end
 
+function Editor:CreateButtonOptions(bar)
+  local buttonClass = bar:GetButtonClass()
+  local classID = buttonClass:GetButtonTypeID()
+  local handler = self.buttonHandlers[classID]
+
+  if handler then
+    local h = handler:New(bar)
+    return h:GetOptions()
+  end
+end
+
 function Editor:RefreshBarOptions()
   for name, key in pairs(self.barOptMap) do
     if not ReAction:GetBar(name) then
@@ -399,6 +413,548 @@
   end
 end
 
+-------------------------------
+---- Action button handler ----
+-------------------------------
+
+do
+  local ActionHandler = {
+    buttonClass = ReAction.Button.Action,
+    options = {
+      hideEmpty = {
+        name = L["Hide Empty Buttons"],
+        order = 1,
+        type = "toggle",
+        width = "double",
+        get  = "GetHideEmpty",
+        set  = "SetHideEmpty",
+      },
+      lockButtons = {
+        name = L["Lock Buttons"],
+        desc = L["Prevents picking up/dragging actions (use SHIFT to override this behavior)"],
+        order = 2,
+        type = "toggle",
+        get = "GetLockButtons",
+        set = "SetLockButtons",
+      },
+      lockOnlyCombat = {
+        name = L["Only in Combat"],
+        desc = L["Only lock the buttons when in combat"],
+        order = 3,
+        type = "toggle",
+        disabled = "LockButtonsCombatDisabled",
+        get = "GetLockButtonsCombat",
+        set = "SetLockButtonsCombat",
+      },
+      pages = {
+        name  = L["# Pages"],
+        desc  = L["Use the Dynamic State tab to specify page transitions"],
+        order = 4,
+        type  = "range",
+        min   = 1,
+        max   = 10,
+        step  = 1,
+        get   = "GetNumPages",
+        set   = "SetNumPages",
+      },
+      mindcontrol = {
+        name = L["Mind Control Support"],
+        desc = L["When possessing a target (e.g. via Mind Control), map the first 12 buttons of this bar to the possessed target's actions."],
+        order = 5,
+        type = "toggle",
+        width = "double",
+        set = "SetMindControl",
+        get = "GetMindControl",
+      },
+      vehicle = {
+        name = L["Vehicle Support"],
+        desc = L["When on a vehicle, map the first 6 buttons of this bar to the vehicle actions. The vehicle-exit button is mapped to the 7th button. Pitch controls are not supported."],
+        order = 6,
+        type = "toggle",
+        width = "double",
+        get = "GetVehicle",
+        set = "SetVehicle",
+      },
+      actions = {
+        name   = L["Edit Action IDs"],
+        order  = 7,
+        type   = "group",
+        inline = true,
+        args   = {
+          method = {
+            name   = L["Assign"],
+            order  = 1,
+            type   = "select",
+            width  = "double",
+            values = { [0] = L["Choose Method..."],
+                       [1] = L["Individually"],
+                       [2] = L["All at Once"], },
+            get    = "GetActionEditMethod",
+            set    = "SetActionEditMethod",
+          },
+          rowSelect = {
+            name   = L["Row"],
+            desc   = L["Rows are numbered top to bottom"],
+            order  = 2,
+            type   = "select",
+            width  = "half",
+            hidden = "IsButtonSelectHidden",
+            values = "GetRowList",
+            get    = "GetSelectedRow",
+            set    = "SetSelectedRow",
+          },
+          colSelect = {
+            name   = L["Col"],
+            desc   = L["Columns are numbered left to right"],
+            order  = 3,
+            type   = "select",
+            width  = "half",
+            hidden = "IsButtonSelectHidden",
+            values = "GetColumnList",
+            get    = "GetSelectedColumn",
+            set    = "SetSelectedColumn",
+          },
+          pageSelect = {
+            name   = L["Page"],
+            order  = 4,
+            type   = "select",
+            width  = "half",
+            hidden = "IsPageSelectHidden",
+            values = "GetPageList",
+            get    = "GetSelectedPage",
+            set    = "SetSelectedPage",
+          },
+          single = {
+            name   = L["Action ID"],
+            usage  = L["Specify ID 1-120"],
+            order  = 5,
+            type   = "input",
+            width  = "half",
+            hidden = "IsButtonSelectHidden",
+            get    = "GetActionID",
+            set    = "SetActionID",
+            validate = "ValidateActionID",
+          },
+          multi = {
+            name   = L["ID List"],
+            usage  = L["Specify a comma-separated list of IDs for each button in the bar (in order). Separate multiple pages with semicolons (;)"],
+            order  = 6,
+            type   = "input",
+            multiline = true,
+            width  = "double",
+            hidden = "IsMultiIDHidden",
+            get    = "GetMultiID",
+            set    = "SetMultiID",
+            validate = "ValidateMultiID",
+          },
+        },
+      },
+    }
+  }
+
+  Editor.buttonHandlers[ActionHandler.buttonClass:GetButtonTypeID()] = ActionHandler
+
+  local meta = { __index = ActionHandler }
+
+  function ActionHandler:New( bar )
+    return setmetatable(
+      {
+        bar = bar,
+        config = bar:GetConfig(),
+      }, 
+      meta)
+  end
+
+  function ActionHandler:Refresh()
+    self.buttonClass:SetupBar(self.bar)
+  end
+
+  function ActionHandler:UpdateButtonLock()
+    self.buttonClass:SetButtonLock(self.bar, self.config.lockButtons, self.config.lockButtonsCombat)
+  end
+
+  function ActionHandler:GetLastButton()
+    return self.bar:GetButton(self.bar:GetNumButtons())
+  end
+
+    -- options handlers
+  function ActionHandler:GetOptions()
+    return {
+      type = "group",
+      name = L["Action Buttons"],
+      handler = self,
+      order = 2,
+      args = self.options
+    }
+  end
+
+  function ActionHandler:SetHideEmpty(info, value)
+    if value ~= self.config.hideEmpty then
+      self.config.hideEmpty = value
+      for _, b in self.bar:IterateButtons() do
+        b:ShowGrid(not value)
+      end
+    end
+  end
+
+  function ActionHandler:GetHideEmpty()
+    return self.config.hideEmpty
+  end
+
+  function ActionHandler:GetLockButtons()
+    return self.config.lockButtons
+  end
+
+  function ActionHandler:SetLockButtons(info, value)
+    self.config.lockButtons = value
+    self:UpdateButtonLock()
+  end
+
+  function ActionHandler:GetLockButtonsCombat()
+    return self.config.lockButtonsCombat
+  end
+
+  function ActionHandler:SetLockButtonsCombat(info, value)
+    self.config.lockButtonsCombat = value
+    self:UpdateButtonLock()
+  end
+
+  function ActionHandler:LockButtonsCombatDisabled()
+    return not self.config.lockButtons
+  end
+
+  function ActionHandler:GetNumPages()
+    return self.config.nPages
+  end
+
+  function ActionHandler:SetNumPages(info, value)
+    self.config.nPages = value
+    self:Refresh()
+  end
+
+  function ActionHandler:GetMindControl()
+    return self.config.mindcontrol
+  end
+
+  function ActionHandler:SetMindControl(info, value)
+    self.config.mindcontrol = value
+    self:Refresh()
+  end
+
+  function ActionHandler:GetVehicle()
+    return self.config.vehicle
+  end
+
+  function ActionHandler:SetVehicle(info, value)
+    self.config.vehicle = value
+    self:Refresh()
+  end
+
+  function ActionHandler:GetActionEditMethod()
+    return self.editMethod or 0
+  end
+
+  function ActionHandler:SetActionEditMethod(info, value)
+    self.editMethod = value
+  end
+
+  function ActionHandler:IsButtonSelectHidden()
+    return self.editMethod ~= 1
+  end
+
+  function ActionHandler:GetRowList()
+    local r,c = self.bar:GetButtonGrid()
+    if self.rowList == nil or #self.rowList ~= r then
+      local list = { }
+      for i = 1, r do
+        table.insert(list,i)
+      end
+      self.rowList = list
+    end
+    return self.rowList
+  end
+
+  function ActionHandler:GetSelectedRow()
+    local r, c = self.bar:GetButtonGrid()
+    local row = self.selectedRow or 1
+    if row > r then
+      row = 1
+    end
+    self.selectedRow = row
+    return row
+  end
+
+  function ActionHandler:SetSelectedRow(info, value)
+    self.selectedRow = value
+  end
+
+  function ActionHandler:GetColumnList()
+    local r,c = self.bar:GetButtonGrid()
+    if self.columnList == nil or #self.columnList ~= c then
+      local list = { }
+      for i = 1, c do
+        table.insert(list,i)
+      end
+      self.columnList = list
+    end
+    return self.columnList
+  end
+
+  function ActionHandler:GetSelectedColumn()
+    local r, c = self.bar:GetButtonGrid()
+    local col = self.selectedColumn or 1
+    if col > c then
+      col = 1
+    end
+    self.selectedColumn = col
+    return col
+  end
+
+  function ActionHandler:SetSelectedColumn(info, value)
+    self.selectedColumn = value
+  end
+
+  function ActionHandler:IsPageSelectHidden()
+    return self.editMethod ~= 1 or (self.config.nPages or 1) < 2
+  end
+
+  function ActionHandler:GetPageList()
+    local n = self.config.nPages or 1
+    if self.pageList == nil or #self.pageList ~= n then
+      local p = { }
+      for i = 1, n do
+        table.insert(p,i)
+      end
+      self.pageList = p
+    end
+    return self.pageList
+  end
+
+  function ActionHandler:GetSelectedPage()
+    local p = self.selectedPage or 1
+    if p > (self.config.nPages or 1) then
+      p = 1
+    end
+    self.selectedPage = p
+    return p
+  end
+
+  function ActionHandler:SetSelectedPage(info, value)
+    self.selectedPage = value
+  end
+
+  function ActionHandler:GetActionID()
+    local row = self.selectedRow or 1
+    local col = self.selectedColumn or 1
+    local r, c = self.bar:GetButtonGrid()
+    local n = (row-1) * c + col
+    local btn = self.bar:GetButton(n)
+    if btn then
+      return tostring(btn:GetActionID(self.selectedPage or 1))
+    end
+  end
+
+  function ActionHandler:SetActionID(info, value)
+    local row = self.selectedRow or 1
+    local col = self.selectedColumn or 1
+    local r, c = self.bar:GetButtonGrid()
+    local n = (row-1) * c + col
+    local btn = self.bar:GetButton(n)
+    if btn then
+      btn:SetActionID(tonumber(value), self.selectedPage or 1)
+    end
+  end
+
+  function ActionHandler:ValidateActionID(info, value)
+    value = tonumber(value)
+    if value == nil or value < 1 or value > 120 then
+      return L["Specify ID 1-120"]
+    end
+    return true
+  end
+
+  function ActionHandler:IsMultiIDHidden()
+    return self.editMethod ~= 2
+  end
+
+  function ActionHandler:GetMultiID()
+    local p = { }
+    for i = 1, self.config.nPages or 1 do
+      local b = { }
+      for _, btn in self.bar:IterateButtons() do
+        table.insert(b, btn:GetActionID(i))
+      end
+      table.insert(p, table.concat(b,","))
+    end
+    return table.concat(p,";\n")
+  end
+
+
+  local function ParseMultiID(nBtns, nPages, s)
+    if s:match("[^%d%s,;]") then
+      return nil
+    end
+    local p = { }
+    for list in s:gmatch("[^;]+") do
+      local pattern = ("^%s?$"):format(("%s*(%d+)%s*,"):rep(nBtns))
+      local ids = { list:match(pattern) }
+      if #ids ~= nBtns then
+        return nil
+      end
+      table.insert(p,ids)
+    end
+    if #p ~= nPages then
+      return nil
+    end
+    return p
+  end
+
+  function ActionHandler:SetMultiID(info, value)
+    local p = ParseMultiID(self.bar:GetNumButtons(), self.config.nPages or 1, value)
+    for page, b in ipairs(p) do
+      for button, id in ipairs(b) do
+        self.bar:GetButton(button):SetActionID(id, page)
+      end
+    end
+  end
+
+  function ActionHandler:ValidateMultiID(info, value)
+    local bad = L["Invalid action ID list string"]
+    if value == nil or ParseMultiID(self.bar:GetNumButtons(), self.config.nPages or 1, value) == nil then
+      return bad
+    end
+    return true
+  end
+end
+
+
+----------------------------------
+---- PetAction button handler ----
+----------------------------------
+
+do
+  local PetHandler = { 
+    buttonClass = ReAction.Button.PetAction,
+  }
+
+  Editor.buttonHandlers[PetHandler.buttonClass:GetButtonTypeID()] = PetHandler
+
+  local meta = { __index = PetHandler }
+
+  function PetHandler:New(bar)
+    return setmetatable(
+      {
+        bar = bar,
+        config = bar.config
+      }, meta)
+  end
+
+  function PetHandler:GetLockButtons()
+    return self.config.lockButtons
+  end
+
+  function PetHandler:SetLockButtons(info, value)
+    self.config.lockButtons = value
+    self.buttonClass:UpdateButtonLock(self.bar)
+  end
+
+  function PetHandler:GetLockButtonsCombat()
+    return self.config.lockButtonsCombat
+  end
+
+  function PetHandler:SetLockButtonsCombat(info, value)
+    self.config.lockButtonsCombat = value
+    self.buttonClass:UpdateButtonLock(self.bar)
+  end
+
+  function PetHandler:LockButtonsCombatDisabled()
+    return not self.config.lockButtons
+  end
+
+  function PetHandler:GetOptions()
+    return {
+      type = "group",
+      name = L["Pet Buttons"],
+      handler = self,
+      order = 2,
+      args = {
+        lockButtons = {
+          name = L["Lock Buttons"],
+          desc = L["Prevents picking up/dragging actions (use SHIFT to override this behavior)"],
+          order = 2,
+          type = "toggle",
+          get = "GetLockButtons",
+          set = "SetLockButtons",
+        },
+        lockOnlyCombat = {
+          name = L["Only in Combat"],
+          desc = L["Only lock the buttons when in combat"],
+          order = 3,
+          type = "toggle",
+          disabled = "LockButtonsCombatDisabled",
+          get = "GetLockButtonsCombat",
+          set = "SetLockButtonsCombat",
+        },
+      }
+    }
+  end
+end
+
+
+-------------------------------------
+---- Vehicle Exit button handler ----
+-------------------------------------
+
+do
+  local VExitHandler = { 
+    buttonClass = ReAction.Button.VehicleExit,
+  }
+
+  Editor.buttonHandlers[VExitHandler.buttonClass:GetButtonTypeID()] = VExitHandler
+
+  local meta = { __index = VExitHandler }
+
+  function VExitHandler:New(bar)
+    return setmetatable(
+      {
+        bar = bar,
+      }, meta)
+  end
+
+  function VExitHandler:GetConfig()
+    return self.bar:GetConfig()
+  end
+
+  function VExitHandler:GetPassengerOnly()
+    return not self:GetConfig().withControls
+  end
+
+  function VExitHandler:SetPassengerOnly(info, value)
+    self:GetConfig().withControls = not value
+    self.buttonClass:UpdateRegistration(self.bar)
+  end
+
+
+  function VExitHandler:GetOptions()
+    return {
+      type = "group",
+      name = L["Exit Vehicle"],
+      handler = self,
+      args = {
+        passengerOnly = {
+          name = L["Show only when passenger"],
+          desc = L["Only show the button when riding as a passenger in a vehicle (no vehicle controls)"],
+          order = 2,
+          width = "double",
+          type = "toggle",
+          get = "GetPassengerOnly",
+          set = "SetPassengerOnly",
+        },
+      }
+    }
+  end
+end
+
 
 
 ---- Export to ReAction ----
--- a/ReAction.lua	Thu Mar 24 13:09:44 2011 -0700
+++ b/ReAction.lua	Thu Mar 24 13:11:30 2011 -0700
@@ -310,7 +310,6 @@
   if isDefault then
     self.defaultBarType = name
   end
-  self:RefreshEditor()
 end
 
 function ReAction:IterateBarTypes()
--- a/ReAction.xml	Thu Mar 24 13:09:44 2011 -0700
+++ b/ReAction.xml	Thu Mar 24 13:11:30 2011 -0700
@@ -6,11 +6,11 @@
   <Include file="locale\locale.xml"/>
 
   <Script file="ReAction.lua"/>
-  <Script file="Options.lua"/>
-  <Script file="Editor.lua"/>
   <Script file="Profile.lua"/>
 
   <Include file="classes\classes.xml"/>
   <Include file="modules\modules.xml"/>
 
+  <Script file="Options.lua"/>
+  <Script file="Editor.lua"/>
 </Ui>
--- a/classes/ActionButton.lua	Thu Mar 24 13:09:44 2011 -0700
+++ b/classes/ActionButton.lua	Thu Mar 24 13:11:30 2011 -0700
@@ -655,7 +655,7 @@
 end
 
 
-function Action.SetButtonLock( bar, lock, lockCombat ) -- call this as a static method
+function Action:SetButtonLock( bar, lock, lockCombat )
   local f = bar:GetFrame()
   f:SetAttribute("lockbuttons",lock)
   f:SetAttribute("lockbuttonscombat",lockCombat)
--- a/classes/Bar.lua	Thu Mar 24 13:09:44 2011 -0700
+++ b/classes/Bar.lua	Thu Mar 24 13:11:30 2011 -0700
@@ -331,6 +331,10 @@
   return self.buttons[idx]
 end
 
+function Bar:GetButtonClass()
+  return self.buttonClass
+end
+
 function Bar:GetConfig()
   return self.config
 end
--- a/modules/Action.lua	Thu Mar 24 13:09:44 2011 -0700
+++ b/modules/Action.lua	Thu Mar 24 13:11:30 2011 -0700
@@ -12,15 +12,11 @@
 local module = ReAction:NewModule( moduleID )
 
 -- Class declarations
-local Button = ReAction.Button.Action -- see /classes/ActionButton.lua
-local Handle = { }
 local PropHandler = { }
 
 -- Event handlers
 function module:OnInitialize()
   self.handles = setmetatable({ }, weak)
-
-  ReAction:RegisterBarOptionGenerator(self, "GetBarOptions")
 end
 
 function module:OnEnable()
@@ -31,422 +27,6 @@
   ReAction:GetModule("State"):UnregisterStateProperty("page")
 end
 
-
-
----- Interface ----
-function module:GetBarOptions(bar)
-  self.handles[bar] = self.handles[bar] or Handle:New(bar)
-  return self.handles[bar]:GetOptions()
-end
-
-
----- Bar Handle ----
-
-do
-  local options = {
-    hideEmpty = {
-      name = L["Hide Empty Buttons"],
-      order = 1,
-      type = "toggle",
-      width = "double",
-      get  = "GetHideEmpty",
-      set  = "SetHideEmpty",
-    },
-    lockButtons = {
-      name = L["Lock Buttons"],
-      desc = L["Prevents picking up/dragging actions (use SHIFT to override this behavior)"],
-      order = 2,
-      type = "toggle",
-      get = "GetLockButtons",
-      set = "SetLockButtons",
-    },
-    lockOnlyCombat = {
-      name = L["Only in Combat"],
-      desc = L["Only lock the buttons when in combat"],
-      order = 3,
-      type = "toggle",
-      disabled = "LockButtonsCombatDisabled",
-      get = "GetLockButtonsCombat",
-      set = "SetLockButtonsCombat",
-    },
-    pages = {
-      name  = L["# Pages"],
-      desc  = L["Use the Dynamic State tab to specify page transitions"],
-      order = 4,
-      type  = "range",
-      min   = 1,
-      max   = 10,
-      step  = 1,
-      get   = "GetNumPages",
-      set   = "SetNumPages",
-    },
-    mindcontrol = {
-      name = L["Mind Control Support"],
-      desc = L["When possessing a target (e.g. via Mind Control), map the first 12 buttons of this bar to the possessed target's actions."],
-      order = 5,
-      type = "toggle",
-      width = "double",
-      set = "SetMindControl",
-      get = "GetMindControl",
-    },
-    vehicle = {
-      name = L["Vehicle Support"],
-      desc = L["When on a vehicle, map the first 6 buttons of this bar to the vehicle actions. The vehicle-exit button is mapped to the 7th button. Pitch controls are not supported."],
-      order = 6,
-      type = "toggle",
-      width = "double",
-      get = "GetVehicle",
-      set = "SetVehicle",
-    },
-    actions = {
-      name   = L["Edit Action IDs"],
-      order  = 7,
-      type   = "group",
-      inline = true,
-      args   = {
-        method = {
-          name   = L["Assign"],
-          order  = 1,
-          type   = "select",
-          width  = "double",
-          values = { [0] = L["Choose Method..."],
-                     [1] = L["Individually"],
-                     [2] = L["All at Once"], },
-          get    = "GetActionEditMethod",
-          set    = "SetActionEditMethod",
-        },
-        rowSelect = {
-          name   = L["Row"],
-          desc   = L["Rows are numbered top to bottom"],
-          order  = 2,
-          type   = "select",
-          width  = "half",
-          hidden = "IsButtonSelectHidden",
-          values = "GetRowList",
-          get    = "GetSelectedRow",
-          set    = "SetSelectedRow",
-        },
-        colSelect = {
-          name   = L["Col"],
-          desc   = L["Columns are numbered left to right"],
-          order  = 3,
-          type   = "select",
-          width  = "half",
-          hidden = "IsButtonSelectHidden",
-          values = "GetColumnList",
-          get    = "GetSelectedColumn",
-          set    = "SetSelectedColumn",
-        },
-        pageSelect = {
-          name   = L["Page"],
-          order  = 4,
-          type   = "select",
-          width  = "half",
-          hidden = "IsPageSelectHidden",
-          values = "GetPageList",
-          get    = "GetSelectedPage",
-          set    = "SetSelectedPage",
-        },
-        single = {
-          name   = L["Action ID"],
-          usage  = L["Specify ID 1-120"],
-          order  = 5,
-          type   = "input",
-          width  = "half",
-          hidden = "IsButtonSelectHidden",
-          get    = "GetActionID",
-          set    = "SetActionID",
-          validate = "ValidateActionID",
-        },
-        multi = {
-          name   = L["ID List"],
-          usage  = L["Specify a comma-separated list of IDs for each button in the bar (in order). Separate multiple pages with semicolons (;)"],
-          order  = 6,
-          type   = "input",
-          multiline = true,
-          width  = "double",
-          hidden = "IsMultiIDHidden",
-          get    = "GetMultiID",
-          set    = "SetMultiID",
-          validate = "ValidateMultiID",
-        },
-      },
-    },
-  }
-
-  local meta = { __index = Handle }
-
-  function Handle:New( bar )
-    return setmetatable(
-      {
-        bar = bar,
-        config = bar:GetConfig(),
-      }, 
-      meta)
-  end
-
-  function Handle:Refresh()
-    Button:SetupBar(bar)
-  end
-
-  function Handle:UpdateButtonLock()
-    Button.SetButtonLock(self.bar, self.config.lockButtons, self.config.lockButtonsCombat)
-  end
-
-  function Handle:GetLastButton()
-    return self.bar:GetButton(self.bar:GetNumButtons())
-  end
-
-    -- options handlers
-  function Handle:GetOptions()
-    return {
-      type = "group",
-      name = L["Action Buttons"],
-      handler = self,
-      args = options
-    }
-  end
-
-  function Handle:SetHideEmpty(info, value)
-    if value ~= self.config.hideEmpty then
-      self.config.hideEmpty = value
-      for _, b in self.bar:IterateButtons() do
-        b:ShowGrid(not value)
-      end
-    end
-  end
-
-  function Handle:GetHideEmpty()
-    return self.config.hideEmpty
-  end
-
-  function Handle:GetLockButtons()
-    return self.config.lockButtons
-  end
-
-  function Handle:SetLockButtons(info, value)
-    self.config.lockButtons = value
-    self:UpdateButtonLock()
-  end
-
-  function Handle:GetLockButtonsCombat()
-    return self.config.lockButtonsCombat
-  end
-
-  function Handle:SetLockButtonsCombat(info, value)
-    self.config.lockButtonsCombat = value
-    self:UpdateButtonLock()
-  end
-
-  function Handle:LockButtonsCombatDisabled()
-    return not self.config.lockButtons
-  end
-
-  function Handle:GetNumPages()
-    return self.config.nPages
-  end
-
-  function Handle:SetNumPages(info, value)
-    self.config.nPages = value
-    self:Refresh()
-  end
-
-  function Handle:GetMindControl()
-    return self.config.mindcontrol
-  end
-
-  function Handle:SetMindControl(info, value)
-    self.config.mindcontrol = value
-    self:Refresh()
-  end
-
-  function Handle:GetVehicle()
-    return self.config.vehicle
-  end
-
-  function Handle:SetVehicle(info, value)
-    self.config.vehicle = value
-    self:Refresh()
-  end
-
-  function Handle:GetActionEditMethod()
-    return self.editMethod or 0
-  end
-
-  function Handle:SetActionEditMethod(info, value)
-    self.editMethod = value
-  end
-
-  function Handle:IsButtonSelectHidden()
-    return self.editMethod ~= 1
-  end
-
-  function Handle:GetRowList()
-    local r,c = self.bar:GetButtonGrid()
-    if self.rowList == nil or #self.rowList ~= r then
-      local list = { }
-      for i = 1, r do
-        table.insert(list,i)
-      end
-      self.rowList = list
-    end
-    return self.rowList
-  end
-
-  function Handle:GetSelectedRow()
-    local r, c = self.bar:GetButtonGrid()
-    local row = self.selectedRow or 1
-    if row > r then
-      row = 1
-    end
-    self.selectedRow = row
-    return row
-  end
-
-  function Handle:SetSelectedRow(info, value)
-    self.selectedRow = value
-  end
-
-  function Handle:GetColumnList()
-    local r,c = self.bar:GetButtonGrid()
-    if self.columnList == nil or #self.columnList ~= c then
-      local list = { }
-      for i = 1, c do
-        table.insert(list,i)
-      end
-      self.columnList = list
-    end
-    return self.columnList
-  end
-
-  function Handle:GetSelectedColumn()
-    local r, c = self.bar:GetButtonGrid()
-    local col = self.selectedColumn or 1
-    if col > c then
-      col = 1
-    end
-    self.selectedColumn = col
-    return col
-  end
-
-  function Handle:SetSelectedColumn(info, value)
-    self.selectedColumn = value
-  end
-
-  function Handle:IsPageSelectHidden()
-    return self.editMethod ~= 1 or (self.config.nPages or 1) < 2
-  end
-
-  function Handle:GetPageList()
-    local n = self.config.nPages or 1
-    if self.pageList == nil or #self.pageList ~= n then
-      local p = { }
-      for i = 1, n do
-        table.insert(p,i)
-      end
-      self.pageList = p
-    end
-    return self.pageList
-  end
-
-  function Handle:GetSelectedPage()
-    local p = self.selectedPage or 1
-    if p > (self.config.nPages or 1) then
-      p = 1
-    end
-    self.selectedPage = p
-    return p
-  end
-
-  function Handle:SetSelectedPage(info, value)
-    self.selectedPage = value
-  end
-
-  function Handle:GetActionID()
-    local row = self.selectedRow or 1
-    local col = self.selectedColumn or 1
-    local r, c = self.bar:GetButtonGrid()
-    local n = (row-1) * c + col
-    local btn = self.bar:GetButton(n)
-    if btn then
-      return tostring(btn:GetActionID(self.selectedPage or 1))
-    end
-  end
-
-  function Handle:SetActionID(info, value)
-    local row = self.selectedRow or 1
-    local col = self.selectedColumn or 1
-    local r, c = self.bar:GetButtonGrid()
-    local n = (row-1) * c + col
-    local btn = self.bar:GetButton(n)
-    if btn then
-      btn:SetActionID(tonumber(value), self.selectedPage or 1)
-    end
-  end
-
-  function Handle:ValidateActionID(info, value)
-    value = tonumber(value)
-    if value == nil or value < 1 or value > 120 then
-      return L["Specify ID 1-120"]
-    end
-    return true
-  end
-
-  function Handle:IsMultiIDHidden()
-    return self.editMethod ~= 2
-  end
-
-  function Handle:GetMultiID()
-    local p = { }
-    for i = 1, self.config.nPages or 1 do
-      local b = { }
-      for _, btn in self.bar:IterateButtons() do
-        table.insert(b, btn:GetActionID(i))
-      end
-      table.insert(p, table.concat(b,","))
-    end
-    return table.concat(p,";\n")
-  end
-
-
-  local function ParseMultiID(nBtns, nPages, s)
-    if s:match("[^%d%s,;]") then
-      return nil
-    end
-    local p = { }
-    for list in s:gmatch("[^;]+") do
-      local pattern = ("^%s?$"):format(("%s*(%d+)%s*,"):rep(nBtns))
-      local ids = { list:match(pattern) }
-      if #ids ~= nBtns then
-        return nil
-      end
-      table.insert(p,ids)
-    end
-    if #p ~= nPages then
-      return nil
-    end
-    return p
-  end
-
-  function Handle:SetMultiID(info, value)
-    local p = ParseMultiID(self.bar:GetNumButtons(), self.config.nPages or 1, value)
-    for page, b in ipairs(p) do
-      for button, id in ipairs(b) do
-        self.bar:GetButton(button):SetActionID(id, page)
-      end
-    end
-  end
-
-  function Handle:ValidateMultiID(info, value)
-    local bad = L["Invalid action ID list string"]
-    if value == nil or ParseMultiID(self.bar:GetNumButtons(), self.config.nPages or 1, value) == nil then
-      return bad
-    end
-    return true
-  end
-end
-
-
 ------ State property options ------
 do
   local pageOptions = {
--- a/modules/PetAction.lua	Thu Mar 24 13:09:44 2011 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
---[[
-  ReAction Pet Action button options module
---]]
-
--- local imports
-local addonName, addonTable = ...
-local ReAction = addonTable.ReAction
-local L = ReAction.L
-local _G = _G
-local CreateFrame = CreateFrame
-local format = string.format
-
--- module declaration
-local moduleID = "PetAction"
-local module = ReAction:NewModule( moduleID )
-
--- Button class
-local Button = ReAction.Button.PetAction
-
-
--- module methods
-function module:OnInitialize()
-  ReAction:RegisterBarOptionGenerator(self, "GetBarOptions")
-end
-
-
-
-
----- Options ----
-local Handler = { }
-local meta = { __index = Handler }
-
-function Handler:New(bar)
-  return setmetatable(
-    {
-      bar = bar,
-      config = bar.config
-    }, meta)
-end
-
-function Handler:GetLockButtons()
-  return self.config.lockButtons
-end
-
-function Handler:SetLockButtons(info, value)
-  self.config.lockButtons = value
-  Button:UpdateButtonLock(self.bar)
-end
-
-function Handler:GetLockButtonsCombat()
-  return self.config.lockButtonsCombat
-end
-
-function Handler:SetLockButtonsCombat(info, value)
-  self.config.lockButtonsCombat = value
-  Button:UpdateButtonLock(self.bar)
-end
-
-function Handler:LockButtonsCombatDisabled()
-  return not self.config.lockButtons
-end
-
-
-function module:GetBarOptions(bar)
-  if bar.config.type == moduleID then
-    return {
-      type = "group",
-      name = L["Pet Buttons"],
-      handler = Handler:New(bar),
-      args = {
-        lockButtons = {
-          name = L["Lock Buttons"],
-          desc = L["Prevents picking up/dragging actions (use SHIFT to override this behavior)"],
-          order = 2,
-          type = "toggle",
-          get = "GetLockButtons",
-          set = "SetLockButtons",
-        },
-        lockOnlyCombat = {
-          name = L["Only in Combat"],
-          desc = L["Only lock the buttons when in combat"],
-          order = 3,
-          type = "toggle",
-          disabled = "LockButtonsCombatDisabled",
-          get = "GetLockButtonsCombat",
-          set = "SetLockButtonsCombat",
-        },
-      }
-    }
-  end
-end
-
-
--- a/modules/VehicleExit.lua	Thu Mar 24 13:09:44 2011 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
---[[
-  ReAction Vehicle Exit button options module
---]]
-
--- local imports
-local addonName, addonTable = ...
-local ReAction = addonTable.ReAction
-local L = ReAction.L
-
--- module declaration
-local moduleID = "VehicleExit"
-local module = ReAction:NewModule( moduleID )
-
--- Button class
-local Button = ReAction.Button.VehicleExit
-
--- module methods
-function module:OnInitialize()
-  self.registered = { }
-  self.buttons = { }
-
-  ReAction:RegisterBarOptionGenerator(self, "GetBarOptions")
-end
-
----- Options ----
-local Handler = { }
-local meta = { __index = Handler }
-
-function Handler:New(bar)
-  return setmetatable(
-    {
-      bar = bar
-    }, meta)
-end
-
-function Handler:GetConfig()
-  return self.bar:GetConfig()
-end
-
-function Handler:GetPassengerOnly()
-  return not self:GetConfig().withControls
-end
-
-function Handler:SetPassengerOnly(info, value)
-  self:GetConfig().withControls = not value
-  Button:UpdateRegistration(self.bar)
-end
-
-
-function module:GetBarOptions(bar)
-  if bar.config.type == moduleID then
-    return {
-      type = "group",
-      name = L["Exit Vehicle"],
-      handler = Handler:New(bar),
-      args = {
-        passengerOnly = {
-          name = L["Show only when passenger"],
-          desc = L["Only show the button when riding as a passenger in a vehicle (no vehicle controls)"],
-          order = 2,
-          width = "double",
-          type = "toggle",
-          get = "GetPassengerOnly",
-          set = "SetPassengerOnly",
-        },
-      }
-    }
-  end
-end
-
-
--- a/modules/modules.xml	Thu Mar 24 13:09:44 2011 -0700
+++ b/modules/modules.xml	Thu Mar 24 13:11:30 2011 -0700
@@ -4,10 +4,5 @@
 
 <Script file="State.lua"/>
 <Script file="Action.lua"/>
-<Script file="PetAction.lua"/>
-<Script file="Stance.lua"/>
-<Script file="Bag.lua"/>
-<Script file="VehicleExit.lua"/>
-<Script file="Totem.lua"/>
 
 </Ui>
\ No newline at end of file