diff options
Diffstat (limited to 'lib/python/Plugins/Extensions/PicturePlayer/plugin.py')
| -rwxr-xr-x[-rw-r--r--] | lib/python/Plugins/Extensions/PicturePlayer/plugin.py | 185 |
1 files changed, 102 insertions, 83 deletions
diff --git a/lib/python/Plugins/Extensions/PicturePlayer/plugin.py b/lib/python/Plugins/Extensions/PicturePlayer/plugin.py index 10e4e514..3925b07c 100644..100755 --- a/lib/python/Plugins/Extensions/PicturePlayer/plugin.py +++ b/lib/python/Plugins/Extensions/PicturePlayer/plugin.py @@ -6,12 +6,11 @@ from Plugins.Plugin import PluginDescriptor from Components.Pixmap import Pixmap, MovingPixmap from Components.ActionMap import ActionMap, NumberActionMap -from Components.Label import Label -from Components.Button import Button +from Components.Sources.StaticText import StaticText from Components.FileList import FileList from Components.AVSwitch import AVSwitch from Components.Sources.List import List -from Components.ConfigList import ConfigList +from Components.ConfigList import ConfigList, ConfigListScreen from Components.config import config, ConfigSubsection, ConfigInteger, ConfigSelection, ConfigText, ConfigEnableDisable, KEY_LEFT, KEY_RIGHT, KEY_0, getConfigListEntry @@ -30,37 +29,39 @@ config.pic.bgcolor = ConfigSelection(default="#00000000", choices = [("#00000000 config.pic.textcolor = ConfigSelection(default="#0038FF48", choices = [("#00000000", _("black")),("#009eb9ff", _("blue")),("#00ff5a51", _("red")), ("#00ffe875", _("yellow")), ("#0038FF48", _("green"))]) class picshow(Screen): - def __init__(self, session): - self.skin = """<screen position="80,80" size="560,440" title="PicturePlayer" > - <ePixmap position="0,0" size="140,40" pixmap="skin_default/buttons/red.png" alphatest="on" /> - <ePixmap position="140,0" size="140,40" pixmap="skin_default/buttons/green.png" alphatest="on" /> - <ePixmap position="280,0" size="140,40" pixmap="skin_default/buttons/yellow.png" alphatest="on" /> - <ePixmap position="420,0" size="140,40" pixmap="skin_default/buttons/blue.png" alphatest="on" /> - <widget name="key_red" position="0,0" size="140,40" font="Regular;20" backgroundColor="#9f1313" zPosition="2" transparent="1" shadowColor="black" shadowOffset="-1,-1" /> - <widget name="key_green" position="140,0" size="140,40" font="Regular;20" backgroundColor="#1f771f" zPosition="2" transparent="1" shadowColor="black" shadowOffset="-1,-1" /> - <widget name="key_yellow" position="280,0" size="140,40" font="Regular;20" backgroundColor="#a08500" zPosition="2" transparent="1" shadowColor="black" shadowOffset="-1,-1" /> - <widget name="key_blue" position="420,0" size="140,40" font="Regular;20" backgroundColor="#18188b" zPosition="2" transparent="1" shadowColor="black" shadowOffset="-1,-1" /> - <widget name="label" position="5,55" size="350,140" font="Regular;19" /> + skin = """ + <screen name="picshow" position="center,center" size="560,440" title="PicturePlayer" > + <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> + <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" /> + <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" /> + <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" /> + <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> + <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" /> + <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" /> + <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" /> + <widget source="label" render="Label" position="5,55" size="350,140" font="Regular;19" backgroundColor="#25062748" transparent="1" /> <widget name="thn" position="360,40" size="180,160" alphatest="on" /> <widget name="filelist" position="5,205" zPosition="2" size="550,230" scrollbarMode="showOnDemand" /> - </screen>""" + </screen>""" + def __init__(self, session): Screen.__init__(self, session) self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "DirectionActions"], { "cancel": self.KeyExit, - "red": self.KeyRed, + "red": self.KeyExit, + "green": self.KeyGreen, "yellow": self.KeyYellow, "blue": self.KeyBlue, "ok": self.KeyOk }, -1) - self["key_red"] = Button(_("Thumbnails")) - self["key_green"] = Button() - self["key_yellow"] = Button(_("Exif")) - self["key_blue"] = Button(_("Setup")) - self["label"] = Label() + self["key_red"] = StaticText(_("Close")) + self["key_green"] = StaticText(_("Thumbnails")) + self["key_yellow"] = StaticText("") + self["key_blue"] = StaticText(_("Setup")) + self["label"] = StaticText("") self["thn"] = Pixmap() currDir = config.pic.lastDir.value @@ -70,13 +71,13 @@ class picshow(Screen): self.filelist = FileList(currDir, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp|gif)") self["filelist"] = self.filelist self["filelist"].onSelectionChanged.append(self.selectionChanged) - + self.ThumbTimer = eTimer() self.ThumbTimer.callback.append(self.showThumb) self.picload = ePicLoad() self.picload.PictureData.get().append(self.showPic) - + self.onLayoutFinish.append(self.setConf) def showPic(self, picInfo=""): @@ -87,8 +88,8 @@ class picshow(Screen): text = picInfo.split('\n',1) self["label"].setText(text[1]) - self["label"].show() - + self["key_yellow"].setText(_("Exif")) + def showThumb(self): if not self.filelist.canDescent(): if self.filelist.getCurrentDirectory() and self.filelist.getFilename(): @@ -99,17 +100,18 @@ class picshow(Screen): if not self.filelist.canDescent(): self.ThumbTimer.start(500, True) else: - self["label"].hide() + self["label"].setText("") self["thn"].hide() - - def KeyRed(self): + self["key_yellow"].setText("") + + def KeyGreen(self): #if not self.filelist.canDescent(): self.session.openWithCallback(self.callbackView, Pic_Thumb, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory()) - + def KeyYellow(self): if not self.filelist.canDescent(): self.session.open(Pic_Exif, self.picload.getInfo(self.filelist.getCurrentDirectory() + self.filelist.getFilename())) - + def KeyBlue(self): self.session.openWithCallback(self.setConf ,Pic_Setup) @@ -120,10 +122,11 @@ class picshow(Screen): self.session.openWithCallback(self.callbackView, Pic_Full_View, self.filelist.getFileList(), self.filelist.getSelectionIndex(), self.filelist.getCurrentDirectory()) def setConf(self): + self.setTitle(_("PicturePlayer")) sc = getScale() #0=Width 1=Height 2=Aspect 3=use_cache 4=resize_type 5=Background(#AARRGGBB) self.picload.setPara((self["thn"].instance.size().width(), self["thn"].instance.size().height(), sc[0], sc[1], config.pic.cache.value, int(config.pic.resize.value), "#00000000")) - + def callbackView(self, val=0): if val > 0: self.filelist.moveToIndex(val) @@ -139,70 +142,83 @@ class picshow(Screen): config.pic.save() self.close() -#------------------------------------------------------------------------------------------ -class Pic_Setup(Screen): +class Pic_Setup(Screen, ConfigListScreen): + skin = """ + <screen name="Pic_Setup" position="center,center" size="550,350" title="Settings" > + <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> + <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" /> + <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> + <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" /> + <widget name="config" position="5,50" size="540,300" /> + </screen>""" def __init__(self, session): - self.skin = """<screen position="120,180" size="480,210" title="Settings" > - <widget name="liste" position="5,5" size="470,200" /> - </screen>""" Screen.__init__(self, session) + self.session = session + + self["actions"] = ActionMap(["SetupActions", "ColorActions"], + { + "cancel": self.keyCancel, + "save": self.keySave, + }, -2) + + self["key_red"] = StaticText(_("Cancel")) + self["key_green"] = StaticText(_("OK")) + + self.list = [] + ConfigListScreen.__init__(self, self.list, session = self.session) + self.createSetup() + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + self.setTitle(_("Settings")) + + def createSetup(self): + self.list = [] + self.list.append(getConfigListEntry(_("Slideshow Interval (sec.)"), config.pic.slidetime)) + self.list.append(getConfigListEntry(_("Scaling Mode"), config.pic.resize)) + self.list.append(getConfigListEntry(_("Cache Thumbnails"), config.pic.cache)) + self.list.append(getConfigListEntry(_("show Infoline"), config.pic.infoline)) + self.list.append(getConfigListEntry(_("Frame size in full view"), config.pic.framesize)) + self.list.append(getConfigListEntry(_("slide picture in loop"), config.pic.loop)) + self.list.append(getConfigListEntry(_("backgroundcolor"), config.pic.bgcolor)) + self.list.append(getConfigListEntry(_("textcolor"), config.pic.textcolor)) + self["config"].list = self.list + self["config"].l.setList(self.list) - self["actions"] = NumberActionMap(["SetupActions"], - { - "cancel": self.close, - "left": self.keyLeft, - "right": self.keyRight, - "0": self.keyNumber, - "1": self.keyNumber, - "2": self.keyNumber, - "3": self.keyNumber, - "4": self.keyNumber, - "5": self.keyNumber, - "6": self.keyNumber, - "7": self.keyNumber, - "8": self.keyNumber, - "9": self.keyNumber - }, -1) - - list = [] - self["liste"] = ConfigList(list) - list.append(getConfigListEntry(_("Slideshow Interval (sec.)"), config.pic.slidetime)) - list.append(getConfigListEntry(_("Scaling Mode"), config.pic.resize)) - list.append(getConfigListEntry(_("Cache Thumbnails"), config.pic.cache)) - list.append(getConfigListEntry(_("show Infoline"), config.pic.infoline)) - list.append(getConfigListEntry(_("Frame size in full view"), config.pic.framesize)) - list.append(getConfigListEntry(_("slide picture in loop"), config.pic.loop)) - list.append(getConfigListEntry(_("backgroundcolor"), config.pic.bgcolor)) - list.append(getConfigListEntry(_("textcolor"), config.pic.textcolor)) - def keyLeft(self): - self["liste"].handleKey(KEY_LEFT) + ConfigListScreen.keyLeft(self) def keyRight(self): - self["liste"].handleKey(KEY_RIGHT) - - def keyNumber(self, number): - self["liste"].handleKey(KEY_0 + number) + ConfigListScreen.keyRight(self) -#--------------------------------------------------------------------------- class Pic_Exif(Screen): - def __init__(self, session, exiflist): - self.skin = """<screen position="80,120" size="560,360" title="Info" > - <widget source="menu" render="Listbox" position="0,0" size="560,360" scrollbarMode="showOnDemand" selectionDisabled="1" > + skin = """ + <screen name="Pic_Exif" position="center,center" size="560,360" title="Info" > + <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> + <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" /> + <widget source="menu" render="Listbox" position="5,50" size="550,310" scrollbarMode="showOnDemand" selectionDisabled="1" > <convert type="TemplatedMultiContent"> - {"template": [ MultiContentEntryText(pos = (5, 5), size = (250, 30), flags = RT_HALIGN_LEFT, text = 0), MultiContentEntryText(pos = (260, 5), size = (290, 30), flags = RT_HALIGN_LEFT, text = 1)], "fonts": [gFont("Regular", 20)], "itemHeight": 30 } + { + "template": [ MultiContentEntryText(pos = (5, 5), size = (250, 30), flags = RT_HALIGN_LEFT, text = 0), MultiContentEntryText(pos = (260, 5), size = (290, 30), flags = RT_HALIGN_LEFT, text = 1)], + "fonts": [gFont("Regular", 20)], + "itemHeight": 30 + } </convert> - </widget> - </screen>""" + </widget> + </screen>""" + + def __init__(self, session, exiflist): Screen.__init__(self, session) self["actions"] = ActionMap(["OkCancelActions"], { "cancel": self.close }, -1) - + + self["key_red"] = StaticText(_("Close")) + exifdesc = [_("filename")+':', "EXIF-Version:", "Make:", "Camera:", "Date/Time:", "Width / Height:", "Flash used:", "Orientation:", "User Comments:", "Metering Mode:", "Exposure Program:", "Light Source:", "CompressedBitsPerPixel:", "ISO Speed Rating:", "X-Resolution:", "Y-Resolution:", "Resolution Unit:", "Brightness:", "Exposure Time:", "Exposure Bias:", "Distance:", "CCD-Width:", "ApertureFNumber:"] list = [] @@ -213,8 +229,11 @@ class Pic_Exif(Screen): name = exiflist[x].split('/')[-1] list.append((exifdesc[x], name)) self["menu"] = List(list) + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + self.setTitle(_("Info")) -#---------------------------------------------------------------------------------------- T_INDEX = 0 T_FRAME_POS = 1 @@ -252,7 +271,7 @@ class Pic_Thumb(Screen): absX = self.spaceX + (posX*(self.spaceX + self.picX)) absY = self.spaceY + (posY*(self.spaceY + self.picY)) self.positionlist.append((absX, absY)) - skincontent += "<widget name=\"label" + str(x) + "\" position=\"" + str(absX+5) + "," + str(absY+self.picY-textsize) + "\" size=\"" + str(self.picX - 10) + "," + str(textsize) + "\" font=\"Regular;14\" zPosition=\"2\" transparent=\"1\" noWrap=\"1\" foregroundColor=\"" + self.textcolor + "\" />" + skincontent += "<widget source=\"label" + str(x) + "\" render=\"Label\" position=\"" + str(absX+5) + "," + str(absY+self.picY-textsize) + "\" size=\"" + str(self.picX - 10) + "," + str(textsize) + "\" font=\"Regular;14\" zPosition=\"2\" transparent=\"1\" noWrap=\"1\" foregroundColor=\"" + self.textcolor + "\" />" skincontent += "<widget name=\"thumb" + str(x) + "\" position=\"" + str(absX+5)+ "," + str(absY+5) + "\" size=\"" + str(self.picX -10) + "," + str(self.picY - (textsize*2)) + "\" zPosition=\"2\" transparent=\"1\" alphatest=\"on\" />" @@ -276,7 +295,7 @@ class Pic_Thumb(Screen): self["frame"] = MovingPixmap() for x in range(self.thumbsC): - self["label"+str(x)] = Label() + self["label"+str(x)] = StaticText() self["thumb"+str(x)] = Pixmap() self.Thumbnaillist = [] @@ -418,7 +437,7 @@ class Pic_Full_View(Screen): <eLabel position=\"0,0\" zPosition=\"0\" size=\""+ str(size_w) + "," + str(size_h) + "\" backgroundColor=\""+ self.bgcolor +"\" /><widget name=\"pic\" position=\"" + str(space) + "," + str(space) + "\" size=\"" + str(size_w-(space*2)) + "," + str(size_h-(space*2)) + "\" zPosition=\"1\" alphatest=\"on\" /> \ <widget name=\"point\" position=\""+ str(space+5) + "," + str(space+2) + "\" size=\"20,20\" zPosition=\"2\" pixmap=\"skin_default/icons/record.png\" alphatest=\"on\" /> \ <widget name=\"play_icon\" position=\""+ str(space+25) + "," + str(space+2) + "\" size=\"20,20\" zPosition=\"2\" pixmap=\"skin_default/icons/ico_mp_play.png\" alphatest=\"on\" /> \ - <widget name=\"file\" position=\""+ str(space+45) + "," + str(space) + "\" size=\""+ str(size_w-(space*2)-50) + ",25\" font=\"Regular;20\" halign=\"left\" foregroundColor=\"" + self.textcolor + "\" zPosition=\"2\" noWrap=\"1\" transparent=\"1\" /></screen>" + <widget source=\"file\" render=\"Label\" position=\""+ str(space+45) + "," + str(space) + "\" size=\""+ str(size_w-(space*2)-50) + ",25\" font=\"Regular;20\" halign=\"left\" foregroundColor=\"" + self.textcolor + "\" zPosition=\"2\" noWrap=\"1\" transparent=\"1\" /></screen>" Screen.__init__(self, session) @@ -437,7 +456,7 @@ class Pic_Full_View(Screen): self["point"] = Pixmap() self["pic"] = Pixmap() self["play_icon"] = Pixmap() - self["file"] = Label(_("please wait, loading picture...")) + self["file"] = StaticText(_("please wait, loading picture...")) self.old_index = 0 self.filelist = [] @@ -480,7 +499,7 @@ class Pic_Full_View(Screen): self["play_icon"].hide() if config.pic.infoline.value == False: - self["file"].hide() + self["file"].setText("") self.start_decode() def ShowPicture(self): |
