diff modules/Action.lua @ 237:704f4a05a1d7

Demodulificate all bar options (except state options)
author Flick
date Thu, 24 Mar 2011 13:11:30 -0700
parents 0e20f65375d5
children
line wrap: on
line diff
--- 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 = {