viewgit/index.php:465 Only variables should be passed by reference [2048]

viewgit/index.php:466 Non-static method GeSHi::get_language_name_from_extension() should not be called statically [2048]

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import subprocess, re, gtk, gobject, time
  4. from numpy.linalg import lstsq
  5.  
  6. class BatteryMonitor():
  7.  
  8. def __init__(self):
  9. pass
  10.  
  11. def GetDevKitOutput(self, regular_expression):
  12.  
  13. process = subprocess.Popen("devkit-power -d",
  14. stdout=subprocess.PIPE,
  15. shell=True)
  16.  
  17. output = process.communicate()[0]
  18.  
  19. return re.findall(regular_expression,
  20. output)[0]
  21.  
  22.  
  23. def OnBattery(self):
  24. if(self.GetDevKitOutput("state:[\s|\t]*(.*)") == "discharging"):
  25. return True
  26. else:
  27. return False
  28.  
  29.  
  30. def GetTotalEnergy(self):
  31. return float(self.GetDevKitOutput("energy-full:[\s|\t]*([\d|\.]*)"))
  32.  
  33.  
  34. def GetEnergy(self):
  35. """
  36. Restituisce l'energia nella batteria
  37. """
  38. energy = float(self.GetDevKitOutput("energy:[\s|\t]*([\d|\.]*)"))
  39. return [time.time (), energy]
  40.  
  41. class BatteryIcon():
  42.  
  43. def __init__(self):
  44.  
  45. self.interval = 10000
  46. # self.tray = gtk.status_icon_new_from_stock (gtk.STOCK_OPEN)
  47.  
  48. self.tray = gtk.status_icon_new_from_file ("clock.svg")
  49. self.tray.set_visible (True)
  50.  
  51. self.bm = BatteryMonitor ()
  52. self.energy = []
  53. self.energy.append (self.bm.GetEnergy ())
  54.  
  55. self.total_energy = self.bm.GetTotalEnergy ()
  56.  
  57. self.ScheduleNext ()
  58.  
  59. def ScheduleNext(self):
  60. gobject.timeout_add(self.interval,
  61. self.UpdateData)
  62.  
  63. def GetTimeString(self, time):
  64. if(time < 60):
  65. return "%d secondi" % int(time)
  66. elif (time < 3600):
  67. minutes = int(time/60)
  68. if minutes > 1:
  69. return "%d minuti" % minutes
  70. else:
  71. return "%d minuto" % minutes
  72. else:
  73. hours = int(time/3600)
  74. minutes = int( (time - hours * 3600)/60)
  75. if minutes == 0:
  76. min_string = ""
  77. elif minutes == 1:
  78. min_string = "ed 1 minuto"
  79. else:
  80. min_string = "e %d minuti" % minutes
  81. if hours > 1:
  82. return "%d ore %s" % (hours, min_string)
  83. else:
  84. return "%d ora %s" % (hours, min_string)
  85.  
  86. def UpdateData(self):
  87. if not self.bm.OnBattery ():
  88. self.energy = []
  89. self.tray.set_tooltip ("Batteria non in uso")
  90. self.ScheduleNext ()
  91. return
  92.  
  93. energy = self.bm.GetEnergy ()
  94. self.energy.append (energy)
  95.  
  96. if (len(self.energy) < 6):
  97. self.tray.set_tooltip ("Sto aspettando piĆ¹ dati per il calcolo")
  98. self.ScheduleNext ()
  99. return
  100.  
  101. elif (len(self.energy) > 100):
  102. del self.energy[0]
  103.  
  104. times = []
  105. starting = self.energy[0][0]
  106. for value in self.energy:
  107. times.append( [ 1, value[0] - starting ] )
  108.  
  109. values = []
  110. for value in self.energy:
  111. values.append (value[1])
  112.  
  113. rate = (-1) * lstsq(times, values)[0][1]
  114.  
  115. time_to_discharge = energy[1] / rate
  116.  
  117. self.tray.set_tooltip("Tempo alla scarica: %s" % self.GetTimeString(time_to_discharge))
  118.  
  119. self.ScheduleNext ()
  120.  
  121.  
  122. def Main (self):
  123. gtk.main ()
  124.  
  125. if __name__ == "__main__":
  126.  
  127. tray = BatteryIcon ()
  128. tray.Main ()
  129.