5bitesofcookies

Sapphari Public Alpha 2

May 15th, 2014
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. if OneOS then
  2.   OneOS.ToolBarColour = colours.lightGrey
  3. end
  4. --Credits:
  5.  
  6. --Developers:
  7.  
  8. --Hithere
  9.  
  10.  
  11. --APIs
  12.  
  13.  
  14. --Special thanks to:
  15.  
  16. --oeed, for OneOS, the OS Sapphari was
  17. --designed for
  18.  
  19.  
  20.  
  21. --DEVELOPER CONFIG
  22. local waitForMessage =  false
  23.  
  24.  
  25. --------------------------------------------------
  26.   sapphariVersionString = "0.1"
  27.   sapphariVersionNumber = 0
  28.   sapphariSites = {}
  29.   sapphariBlacklist = {}
  30.     --The script sets the news, then sets the url vars
  31. shell.run("pastebin run Jg8D7mLi")
  32. --print("--------------------------------------------------")
  33. --It would seem I don't need to kill any functions as OneOS handles that for me :D
  34. --Internal functions
  35. local sapphInt = {}
  36. function sapphInt.redrawUI()
  37.   local termX, termY = term.getSize()
  38.   for i=1,2 do
  39.     paintutils.drawLine(1,i,termX,i,colors.lightGray)
  40.   end
  41.   paintutils.drawLine(2,1,termX/3,1,colors.white)
  42.   paintutils.drawLine(termX/3+2,1,termX/3+4,1,colors.green)
  43.   term.setCursorPos(termX/3+2,1)
  44.   term.write("GO!")
  45. end
  46. --this function will get the data for a site,
  47. --however, will not run it.
  48. function sapphInt.getSite(pasteID)
  49.   local responce = http.get("http://pastebin.com/raw.php?i="..pasteID)
  50.   if responce then
  51.     return loadstring(responce.readAll())
  52.   else
  53.     return false
  54.   end
  55. end
  56. function sapphInt.handleMenu(typeClick, clickX, clickY)
  57.   --handle the user   clicking the menu
  58.   local termX,termY=term.getSize()
  59.   if typeClick == 1 then
  60.     --okay, it's a left click, passes first one'
  61.     if clickX>1 then --okay, in somewhere special
  62.       if clickX<termX/3+1 then
  63.         --okay, the user wants to change the url.
  64.         term.setCursorPos(2,1)
  65.         print("calling")
  66.         input = read()
  67.         print"dun"
  68.         --we will return the input which will
  69.         --be returned until the program must
  70.         --end, then it will be a temporary
  71.         --global variable and read by safari
  72.         --again. Complicated? True.
  73.         return input
  74.       end
  75.     end
  76.   end
  77. end
  78. function sapphInt.decodeHumanReadableURL(HRURL)
  79.   --this is where we attempt to decode a
  80.   --human readable url. If fails, will tell
  81.   --calling function to attempt to use the
  82.   --plain url instead.
  83.   if sapphariSites[HRURL] then
  84.     --this must be an HRURL, so we'll give them'
  85.      --the pasteID
  86.     return sapphariSites[HRURL]
  87.   else
  88.     return HRURL
  89.     --this must be a PasteID then
  90.   end
  91. end
  92.  
  93. --WEBSITE FUNCTON
  94. --sapphutils, MUST be global!!!
  95. sapphUtils = {}
  96. function sapphUtils.pullEvent(filter)
  97.   sapphInt.redrawUI()
  98.   while true do do
  99.     event, p1, p2, p3,  p4, p5, p6, p7 = oldPullEvent()
  100.     if event == "mouse_click" and p3==1 then
  101.       print"handling"
  102.       local newSiteq = sapphInt.handleMenu(p1, p2, p3)
  103.       if newSiteq then
  104.         newSite = newSiteq
  105.         sapphInt.handleSapphari()
  106.         error("Returned to bad pullEvent")
  107.       end
  108.     end
  109.     if filter then
  110.       if event == filter then
  111.         return event, p1, p2, p3, p4, p5, p6, p7
  112.       end
  113.     else
  114.       return event, p1, p2, p3, p4, p5, p6, p7
  115.     end
  116.     --if they changed sites, we'll never get here.
  117.   end
  118. end  end      
  119. --fix os.pullEvent
  120. oldPullEvent = os.pullEvent
  121. os.pullEvent = sapphInt.pullEvent
  122. function sapphUtils.read(startx, starty, endx, endy)
  123.   print("started")
  124.   local endy = starty
  125.   --a function for text boxes, that, in short,
  126.   --has a text wrapping feature
  127.   --~ to quit
  128.   local writenString = ""
  129.   local cursorPos = 0
  130.   while true do
  131.     local evt, charcode = oldPullEvent("key")
  132.     term.setCursorPos(5,5)
  133.     if evt == "key" then
  134.       print"okay"
  135.     else
  136.       print"FUUUUUUUUUUUUUUU"
  137.     end
  138.     charcode = tonumber(charcode)
  139.     print(charcode)
  140.       if charcode == 41 then
  141.         return false
  142.       elseif charcode == 203 then
  143.         --move left
  144.       elseif charcode == 205 then
  145.         --move right
  146.       elseif charcode == 14 then
  147.         --delete a cha+r with string.sub
  148.       elseif charcode == 28 then
  149.         term.setCursorPos(5,5)
  150.         print("returning")
  151.         return writenString
  152.       elseif charcode>58 and charcode<80 then
  153.         --Now, now, no need to do anything here!
  154.         --This just prevents these from trying
  155.         --to be added to the string :)
  156.         --REJECTED keys:
  157.       elseif charcode == 88 then
  158.       elseif charcode == 183 then
  159.       elseif charcode == 70 then
  160.       elseif charcode == 197 then
  161.       elseif charcode == 210 then
  162.       elseif charcode == 199 then
  163.       elseif charcode == 201 then
  164.       elseif charcode == 211 then
  165.       elseif charcode == 207 then
  166.       elseif charcode == 209 then
  167.       elseif charcode == 29 then
  168.       elseif charcode == 219 then
  169.       elseif charcode == 56 then
  170.       elseif charcode == 184 then
  171.       elseif charcode == 220 then
  172.       elseif charcode == 221 then
  173.       elseif charcode == 157 then
  174.       elseif charcode == 42 then
  175.       elseif charcode == 54 then
  176.       elseif charcode == 58 then
  177.       else
  178.         local keyString = keys.getName(charcode)
  179.         if keyString == nil then
  180.           keyString = "There was an error. Tell Hithere it was this sapphInt.read() and that it failed hard"
  181.         end
  182.         writenString = writenString..keyString
  183.         term.setCursorPos(8,6)
  184.         print("test")
  185.         print(writenString)
  186.         --do the key thing here
  187.     end
  188.   end
  189. end
  190. --this must get  the pasteid, not the human
  191. --redable url
  192. t = 0
  193. function sapphInt.handleWebsite(url)
  194.   term.setCursorPos(7,4)
  195.   t=t+1
  196.   print("got to handle"..t)
  197.   --need help on how to run a string as a function
  198.   --this will work for now
  199.   local rurl = sapphInt.decodeHumanReadableURL(url)
  200.   local site = sapphInt.getSite(rurl)
  201.   if site then
  202.     --local ok, error = pcall(site())
  203.     setfenv(site, getfenv())
  204.     local ok, error = pcall(site())
  205.   end
  206.   --term.setCursorPos(1,1)
  207.   --term.clear()
  208.   --cool people do it backwards
  209.  
  210. end
  211. function sapphInt.handleSapphari()
  212.   --the mother function
  213.   --the main mother loop. If the site crashes
  214.   --it will go to homepage, will go to homepa
  215.   --ge if first run too.
  216.   --we'll need a loop
  217.   while true do
  218.     if newSite then
  219.       gotoNewSite = newSite
  220.       newSite = nil
  221.      
  222.       term.setCursorPos(1,3)
  223.       term.setBackgroundColor(colors.black)
  224.       term.clear()
  225.       --cool people do it backwards
  226.       sapphInt.handleWebsite(gotoNewSite)
  227.     else
  228.       sapphInt.handleWebsite("F99c7Fmi")
  229.     end
  230.   end
  231. end
  232. ---------------------------------------------------
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240. --yes = true
  241. --sapphInt.handleNews()
  242. sapphInt.handleSapphari()
Advertisement
Add Comment
Please, Sign In to add comment