MattiasBuelens

CCGUI toggle

Jul 26th, 2012
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.17 KB | None | 0 0
  1. --[[
  2.  
  3.     ComputerCraft GUI
  4.     Toggle button
  5.  
  6. --]]
  7.  
  8. ccgui = ccgui or {}
  9.  
  10. local ToggleButton = common.newClass(ccgui.Button, {
  11.     -- Button state
  12.     toggleState = false,
  13.     -- Button label
  14.     labelOn = "On",
  15.     labelOff = "Off"
  16. })
  17. ccgui.ToggleButton = ToggleButton
  18.  
  19. function ToggleButton:init()
  20.     ccgui.Button.init(self)
  21.  
  22.     self:updateLabel()
  23.  
  24.     self:on("buttonpress", self.togglePress, self)
  25. end
  26.  
  27. function ToggleButton:isOn()
  28.     return self.toggleState
  29. end
  30.  
  31. function ToggleButton:isOff()
  32.     return not self:isOn()
  33. end
  34.  
  35. function ToggleButton:setState(state)
  36.     self.toggleState = not not state
  37.     self:updateLabel()
  38. end
  39.  
  40. function ToggleButton:toggle()
  41.     self:setState(self:isOff())
  42. end
  43.  
  44. function ToggleButton:setOnLabel(labelOn)
  45.     self.labelOn = labelOn or ""
  46.     self:updateLabel()
  47. end
  48.  
  49. function ToggleButton:setOffLabel(labelOff)
  50.     self.labelOff = labelOff or ""
  51.     self:updateLabel()
  52. end
  53.  
  54. function ToggleButton:updateLabel()
  55.     if self:isOn() then
  56.         self:setText(self.labelOn)
  57.     else
  58.         self:setText(self.labelOff)
  59.     end
  60. end
  61.  
  62. function ToggleButton:togglePress()
  63.     self:toggle()
  64.     if self:isOn() then
  65.         self:trigger("toggleon")
  66.     else
  67.         self:trigger("toggleoff")
  68.     end
  69. end
Advertisement
Add Comment
Please, Sign In to add comment