Code:
import os
import requests
# Plugin definition
from Screens.Screen import Screen
from Plugins.Plugin import PluginDescriptor
from enigma import ePicLoad, eTimer
from Components.AVSwitch import AVSwitch
from Components.Label import Label
from Components.Pixmap import Pixmap
from Screens.Screen import Screen
from Tools.BoundFunction import boundFunction
from Components.MenuList import MenuList
from Components.ActionMap import ActionMap, NumberActionMap
class PictureCameraStart(Screen):
skin = """<screen position="center,center" size="800,600">
<widget name="title" position="10,0" size="790,60" halign="center" font="Regular;24" />
<widget name="menu" position="10,60" size="790,530" halign="center" transparent="1" alphatest="on" />
</screen>"""
def __init__(self, session):
Screen.__init__(self, session)
self.session = session
self['title'] = Label("TEST PIC")
menu = []
menu.append((_("TEST "),"pic1"))
self["menu"] = MenuList(menu)
self["actions"] = ActionMap(["WizardActions", "DirectionActions"],{"ok": self.go,"back": self.close,}, -1)
def go(self):
if self["menu"].l.getCurrentSelection() is not None:
choice = self["menu"].l.getCurrentSelection()[1]
if choice == "pic1":
self.session.open(PictureCamera)
class PictureCamera(Screen):
skin = """<screen position="center,center" size="800,600">
<widget name="title" position="10,0" size="790,60" halign="center" font="Regular;24" />
<widget name="pic" position="10,60" size="790,530" halign="center" transparent="1" alphatest="on" />
</screen>"""
def __init__(self, session):
Screen.__init__(self, session)
self.session = session
self['pic'] = Pixmap()
self['title'] = Label("TEST PIC")
self.cameraTimer = eTimer()
self.cameraTimer.timeout.callback.append(self.download)
self.cameraTimer.start(1)
self["actions"] = ActionMap(["WizardActions", "DirectionActions"],{"back": self.close,}, -1)
def download(self):
print "[Camera] download"
self.cameraTimer.stop()
r = requests.get("http://www.meteovolos.gr/skiathos.jpg")
if r.status_code == 200:
open("/tmp/camera.jpg", "wb").write(r.content)
self.downloadFinished(None)
def downloadFinished(self, result):
image = '/tmp/camera.jpg'
if os.path.exists(image):
sc = AVSwitch().getFramebufferScale()
self.picloads = ePicLoad()
self.picloads.PictureData.get().append(self.FinishDecode)
self.picloads.setPara((
self['pic'].instance.size().width(),
self['pic'].instance.size().height(),
sc[0], sc[1], False, 1, '#00000000'))
self.picloads.startDecode(image)
self.cameraTimer.start(60*1000)
def FinishDecode(self, picInfo = None):
ptr = self.picloads.getData()
if ptr:
self["pic"].instance.setPixmap(ptr.__deref__())
del self.picloads
os.remove('/tmp/camera.jpg')
def main(session,**kwargs):
try:
session.open(PictureCameraStart)
except:
print "[Picture Camera] Pluginexecution failed"
def Plugins(**kwargs):
return [PluginDescriptor(name=_("Picture Camera"),
description=_("Picture Camera"),
icon="picam.png",
where=PluginDescriptor.WHERE_PLUGINMENU,
fnc=main)]