1 from enigma import loadPic
2 from enigma import eTimer
3 from enigma import getDesktop
5 from Screens.Screen import Screen
6 from Components.AVSwitch import AVSwitch
7 from Components.config import config
8 from Components.Pixmap import Pixmap
9 from Components.ActionMap import ActionMap
10 from twisted.web.client import downloadPage
12 class PictureScreen(Screen):
14 prozessing =False # if fetching or converting is active
16 def __init__(self, session,title,filename, slideshowcallback = None,args=0):
18 self.slideshowcallback=slideshowcallback
19 self.screentitle = title
21 size_w = getDesktop(0).size().width()
22 size_h = getDesktop(0).size().height()
24 <screen position="0,0" size="%i,%i" title="%s" flags=\"wfNoBorder\">
25 <widget name="pixmap" position="0,0" size="%i,%i" backgroundColor=\"black\"/>
26 </screen>""" % (size_w,size_h,filename,size_w,size_h)
27 Screen.__init__(self, session)
28 self.filename = filename
29 self["pixmap"] = Pixmap()
31 self["actions"] = ActionMap(["WizardActions", "DirectionActions","ChannelSelectBaseActions","ShortcutActions"],
35 "green":self.AutoReloaderSwitch,
38 self.onLayoutFinish.append(self.do)
40 def AutoReloaderSwitch(self):
41 if self.filename.startswith("http") or self.filename.startswith("ftp"):
42 if self.autoreload is False:
43 self.autoreload = True
46 self.autoreload = False
51 elif self.filename.startswith("http") or self.filename.startswith("ftp"):
52 self.fetchFile(self.filename)
54 self.sourcefile = self.filename
55 self.setPicture(self.filename)
63 if os.path.exists("/tmp/loadedfile"):
64 os.remove("/tmp/loadedfile")
68 def fetchFile(self,url):
70 self.setTitle("loading File")
71 print "fetching URL ",url
72 self.sourcefile = "/tmp/loadedfile"
73 downloadPage(url,self.sourcefile).addCallback(self.fetchFinished).addErrback(self.fetchFailed)
76 def fetchFailed(self,string):
77 print "fetch failed",string
78 self.setTitle( "fetch failed: "+string)
80 def fetchFinished(self,string):
81 print "fetching finished "
82 self.setPicture(self.sourcefile)
84 def setPicture(self,string):
85 self.setTitle(self.filename.split("/")[-1])
86 pixmap = loadPic(string,getDesktop(0).size().width(),getDesktop(0).size().height(), AVSwitch().getAspectRatioSetting()/2,1, 0,1)
87 if pixmap is not None:
88 self["pixmap"].instance.setPixmap(pixmap)
89 self.prozessing =False
91 if self.autoreload is True:
94 elif self.slideshowcallback is not None:
95 self.closetimer = eTimer()
96 self.closetimer.timeout.get().append(self.slideshowcallback)
97 print "waiting ",config.plugins.pictureviewer.slideshowtime.value," seconds for next picture"
98 self.closetimer.start(int(config.plugins.pictureviewer.slideshowtime.value))