Advertisement
pedrosgali

Ate 0.1

Sep 9th, 2014
561
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.41 KB | None | 0 0
  1. local scr = require("screen")
  2. local event = require("event")
  3. local shell = require("shell")
  4. local fs = require("filesystem")
  5. local term = require("term")
  6. local comp = require("component")
  7. local keyboard = require("keyboard")
  8. local gpu = comp.gpu
  9. local localPath = shell.getWorkingDirectory()
  10. local col = 0x009999
  11. local bCol = 0xFFFFFF
  12. local tCol = 0x000000
  13. local running = true
  14. local fsx, fsy = gpu.getResolution()
  15.  
  16. local arg = {...}
  17. local path = arg[1]
  18.  
  19. local p = fs.path(path)
  20.  
  21. if fs.isDirectory(p) then
  22.     fs.makeDirectory(p)
  23. end
  24. if not fs.exists(path) then
  25.     local data = io.open(path, "w")
  26.     data:write(" ")
  27.     data:close()
  28. end
  29.  
  30. local np = scr:newPane(np, 60, 30)
  31. np.selected = true
  32. np.priority = 9
  33. np.label = fs.name(path).." - Ate"
  34. np.isPane = true
  35. np.colour = col
  36. np.path = path
  37. np.fsx = fsx
  38. np.fsy = fsy
  39. np.needRender = true
  40. np.isMax = false
  41. np:center()
  42. np:box(1, 1, np.width, np.height, 0x999999, "scale")
  43. np:box(1, 1, np.width, 1, col, "scale")
  44. np:centerText(1, 1, np.width, col, 0x000000, np.label)
  45. np:button("X", np.width - 2, 1, 3, 1, 0xCCCCCC, "close_me")
  46. np:button("^", np.width - 5, 1, 3, 1, 0xCCCCCC, "scale_me")
  47. np:button("_", np.width - 7, 1, 3, 1, 0xCCCCCC, "shrink_me")
  48. np:inputBox("mainText", 2, 3, np.width - 2, np.height - 3, "scale", bCol, tCol)
  49. np:addSubMenu("File")
  50. --np:addSubMenuItem("File", "New", "new_np")
  51. np:addSubMenuItem("File", "Save", "save_np")
  52. --np:addSubMenuItem("File", "Load", "load_np")
  53. np:addSubMenuItem("File", "Exit", "close_me")
  54. --np:addSubMenu("Edit")
  55. --np:addSubMenuItem("Edit", "Undo", "Undo")
  56. np:text(1, np.height, 0x999999, 0x000000, "Version 0.1")
  57. np.id = #st + 1
  58. np:loadText("mainText", path)
  59.  
  60. function np:resetText()
  61.     self.printTab = nil
  62.     np:centerText(1, 1, np.width, col, 0x000000, np.label)
  63.     np:text(1, np.height, 0x999999, 0x000000, "Version 0.1")
  64. end
  65.  
  66. function np:addScrollBar()
  67.     self.buttonTab = nil
  68.     self:button("X", np.width - 2, 1, 3, 1, 0xCCCCCC, "close_me")
  69.     self:button("^", np.width - 5, 1, 3, 1, 0xCCCCCC, "scale_me")
  70.     self:button("_", np.width - 7, 1, 3, 1, 0xCCCCCC, "shrink_me")
  71.     if #self.textInputs[1]["text"] > self.textInputs[1]["height"] then
  72.         self:button("^", self.textInputs[1]["width"] - 1, self.textInputs[1]["yPos"] + 1, 3, 1, 0x666666, "scroll_up")
  73.         self:button(" ", self.textInputs[1]["width"] - 1, self.textInputs[1]["yPos"] + 2, 3, self.textInputs[1]["height"] - 2, 0xCCCCCC, "scroll_toggle")
  74.         self:button("v", self.textInputs[1]["width"] - 1, self.textInputs[1]["yPos"] + self.textInputs[1]["height"], 3, 1, 0x666666, "scroll_down")
  75.         --self.fileViewer[1]["scrollPos"] = 1
  76.     end
  77. end
  78.  
  79. function np:run(ev, p1, p2, p3, p4, p5)
  80.     if ev == "touch" then
  81.         if self:clicked(p2, p3) then
  82.             self.needRender = true
  83.             if p4 == 0 then
  84.                 local ret = self:buttonClicked(p2, p3)
  85.                 if ret == "close_me" then
  86.                     st[self.id] = nil
  87.                     return true
  88.                 elseif ret == "scale_me" then
  89.                     if self.isMax then
  90.                         self:resize(self.oldW, self.oldH)
  91.                         self:center()
  92.                         self:resetText()
  93.                         self:addScrollBar()
  94.                     else
  95.                         self:move(1, 1)
  96.                         self:resize(self.fsx, self.fsy - 1)
  97.                         self:resetText()
  98.                         self:addScrollBar()
  99.                     end
  100.                     self.isMax = not self.isMax
  101.                     self.needRender = true
  102.                     return true
  103.                 elseif ret == "shrink_me" then
  104.                     self.renderBool = false
  105.                     return true
  106.                 end
  107.                 local smRet = self:subMenuClicked(p2, p3)
  108.                 if smRet == "new_np" then
  109.                    
  110.                 elseif smRet == "save_np" then
  111.                     self:saveText("mainText", self.path)
  112.                 elseif smRet == "load_np" then
  113.                    
  114.                 elseif smRet == "close_me" then
  115.                     needRender = false
  116.                     st[self.id] = nil
  117.                     return true
  118.                 end
  119.                 if self:textInputClicked(p2, p3) then
  120.                     return true
  121.                 end
  122.                 self.grabbed = not self.grabbed
  123.                 return true
  124.             else
  125.                 --right click code goes here
  126.             end
  127.         else
  128.             self.selected = false
  129.             self.grabbed = false
  130.             return false
  131.         end
  132.     elseif ev == "drag" then
  133.         if self.selected then
  134.             if self.grabbed then
  135.                 term.clear()
  136.                 self:move(p2, p3)
  137.                 self.needRender = true
  138.                 return true
  139.             end
  140.         end
  141.     elseif ev == "drop" then
  142.         self.grabbed = false
  143.         return false
  144.     elseif ev == "key_down" then
  145.         self:addScrollBar()
  146.         if self.selected then
  147.             self:addText(keyboard.keys[p3])
  148.         end
  149.     end
  150.     return false
  151. end
  152.  
  153. function run()
  154.     while running do
  155.         local ev, p1, p2, p3, p4, p5 = event.pull(1, _, ev, p1, p2, p3, p4, p5)
  156.         np:run(ev, p1, p2, p3, p4, p5)
  157.         if np.needRender then
  158.             np:render()
  159.         end
  160.     end
  161. end
  162.  
  163. np:addScrollBar()
  164. np:render()
  165. --run()
  166. st[np.id] = np
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement