- skin = ""
- filelist = []
- currList = "slideshowlist"
- wbviewer = False
- loadedslideshowlistlistname = False
- def __init__(self, session, args = 0):
- self.session = session
- s = "<screen position=\"93,70\" size=\"550,450\" title=\"%s\">\n" %config.plugins.pictureviewer.rootdir.value
- s = s+"<widget name=\"menu\" position=\"1,1\" size=\"275,400\" scrollbarMode=\"showOnDemand\" />\n"
- s = s+"<widget name=\"pixmap\" position=\"550,450\" size=\"275,200\" backgroundColor=\"red\"/>\n"
- s = s+"<widget name=\"slist\" position=\"275,200\" size=\"275,200\" scrollbarMode=\"showOnDemand\"/>\n"
- s = s+"<widget name=\"buttonred\" position=\"6,405\" size=\"130,40\" backgroundColor=\"red\" valign=\"center\" halign=\"center\" zPosition=\"2\" foregroundColor=\"white\" font=\"Regular;18\"/>\n"
- s = s+"<widget name=\"buttongreen\" position=\"142,405\" size=\"130,40\" backgroundColor=\"green\" valign=\"center\" halign=\"center\" zPosition=\"2\" foregroundColor=\"white\" font=\"Regular;18\"/>\n"
- s = s+"<widget name=\"buttonyellow\" position=\"278,405\" size=\"130,40\" backgroundColor=\"yellow\" valign=\"center\" halign=\"center\" zPosition=\"2\" foregroundColor=\"white\" font=\"Regular;18\"/>\n"
- s = s+"<widget name=\"buttonblue\" position=\"414,405\" size=\"130,40\" backgroundColor=\"blue\" valign=\"center\" halign=\"center\" zPosition=\"2\" foregroundColor=\"white\" font=\"Regular;18\"/>\n"
- self.skin = s+"</screen>"
- Screen.__init__(self, session)
- self.filelist = PictureList(config.plugins.pictureviewer.rootdir.value, matchingPattern = config.plugins.pictureviewer.matchingPattern.value)
- self["menu"] = self.filelist
- self.preview = Pixmap()
- self["pixmap"] = self.preview
- self.slideshowfiles = []
- self.slideshowlist =MenuList(self.slideshowfiles)
- self["slist"] = self.slideshowlist
- self["buttonred"] = Label("")
- self["buttongreen"] = Label("")
- self["buttonyellow"] = Label("")
- self["buttonblue"] = Label("")
- self["actions"] = ActionMap(["WizardActions","MenuActions", "DirectionActions","ShortcutActions"],
- {
- "ok": self.go,
- "back": self.close,
- "menu": self.openMenu,
- "up": self.up,
- "down": self.down,
- "left": self.leftUp,
- "right": self.rightUp,
- "red": self.KeyRed,
- "green": self.KeyGreen,
- "yellow": self.KeyYellow,
- "blue": self.switchList,
- }, -1)
- self.onLayoutFinish.append(self.switchList)
- self.onLayoutFinish.append(self.updateInfoPanel)
- def KeyGreen(self):
- if self.currList is "filelist" :
- ## adding all files in current dir to slideshowlist
- dirname = self["menu"].getCurrentDir()
- if os.path.isdir(dirname):
- s = os.listdir(dirname)
- s.sort()
- for file in s:
- if compile(config.plugins.pictureviewer.matchingPattern.value).search(dirname+file):
- self.slideshowfiles.append((_(file),dirname+file))
- self["slist"].l.setList(self.slideshowfiles)
-
- else:
- #loading list
- list = []
- try:
- for file in os.listdir(config.plugins.pictureviewer.slideshowdir.value):
- if file.endswith(config.plugins.pictureviewer.slideshowext.value):
- list.append((_(file.split("/")[-1]),file))
- self.session.openWithCallback(self.fileToLoadFilelistEntered,ChoiceBox,_("select List to load"),list)
- except IOError,e:
- print "["+myname+"] IOError:",e
- except OSError,e:
- print "["+myname+"] OSError:",e
-
- def KeyRed(self):
- if self.currList is "filelist" :
- #do slideshow
- self.hide()
- x = Slideshow(self.session,self.show)
- x.setfiles(self.slideshowfiles)
- x.start()
- else:
- # save filelist
- if self.loadedslideshowlistlistname is False:
- newname = "slideshowlist"
- else:
- newname = self.loadedslideshowlistlistname
- self.session.openWithCallback(self.fileToSaveFilelistEntered,InputBox, title=_("Enter filename to save the List:"), text=newname, maxSize=False, type=Input.TEXT)
-
- def fileToLoadFilelistEntered(self,fileselection):
- if fileselection is not None:
- try:
- filename = fileselection[1]
- fp = open(config.plugins.pictureviewer.slideshowdir.value+filename)
- list = []
- for x in fp.readlines():
- file = x.replace("\n","")
- if x.startswith("#"):
- pass
- elif os.path.exists(file) is not True:
- print "["+myname+"] loaded file from filelist isnt avaible! ignoreing ->",file
- else:
- list.append((_(file.split("/")[-1]),file))
- self.slideshowfiles =list
- self["slist"].l.setList(self.slideshowfiles)
- self.loadedslideshowlistlistname = filename.replace(config.plugins.pictureviewer.slideshowext.value,"")
- except IOError,e:
- print "["+myname+"] error:",e
-
- def fileToSaveFilelistEntered(self,filename):
- if filename is not None:
- print "["+myname+"] saving list to ",config.plugins.pictureviewer.slideshowdir.value+filename+config.plugins.pictureviewer.slideshowext.value
- try:
- if os.path.exists(config.plugins.pictureviewer.slideshowdir.value) is not True:
- print "+"*10,os.path.basename(filename)
- os.mkdir(config.plugins.pictureviewer.slideshowdir.value)
- fp = open(config.plugins.pictureviewer.slideshowdir.value+filename+config.plugins.pictureviewer.slideshowext.value,"w")
- fp.write("# this is a slideshow file for "+myname+" made by V"+myversion+"\n")
- fp.write("# you can make your own... each line with full path of the imagefile\n")
- fp.write("# by importing this file,we will ignoring a file if is doesnt exist\n")
- for x in self.slideshowfiles:
- fp.write(x[1]+"\n")
- fp.close()
- except IOError,e:
- print "["+myname+"] error:",e
- def KeyYellow(self):
- if self.currList is "filelist" :
- # add picture to list
- fullfile = self["menu"].getSelection()[0]
- if os.path.isfile(fullfile):
- self.slideshowfiles.append((_(fullfile.split("/")[-1]),fullfile))
- self["slist"].l.setList(self.slideshowfiles)
- else:
- # deleting an Picture
- if len(self.slideshowfiles) >=1:
- indexinlist = self["slist"].l.getCurrentSelectionIndex()
- self.slideshowfiles.pop(indexinlist)
- self["slist"].l.setList(self.slideshowfiles)
-
- def switchList(self):
- if self.currList is "filelist" :
- # Slideshow activieren
- self.filelist.selectionEnabled(0)
- self.slideshowlist.selectionEnabled(1)
- self["buttonred"].setText("speichern")
- self["buttongreen"].setText("laden")
- self["buttonyellow"].setText("loeschen")
- self["buttonblue"].setText("Dateien")
- self.currList = "slideshowlist"
- else:
- # filelist activieren
- self.filelist.selectionEnabled(1)
- self.slideshowlist.selectionEnabled(0)
- self["buttonred"].setText("starte Slideshow")
- self["buttongreen"].setText("alle hinzufuegen")
- self["buttonyellow"].setText("hinzufuegen")
- self["buttonblue"].setText("Slideshow bearbeiten")
- self.currList = "filelist"
-
- def go(self):
- if self.currList is "filelist" :
- selection = self["menu"].getSelection()
- if self.filelist.canDescent():
- self.setTitle(selection[0])
- self.filelist.descent()
- else:
- if selection[1] == True: # isDir
- pass
- else:
- print "["+myname+"] file selected ",selection[0]
- if os.path.isfile(selection[0]):
- self.session.open(PictureScreen,selection[0].split("/")[-1],selection[0])
- else:
- print "["+myname+"] file not found " + selection[0]+""
- else:
- self.updateInfoPanel()
- def up(self):
- if self.currList is "filelist" :
- self.filelist.up()
- self.updateInfoPanel()
- else:
- self.slideshowlist.up()
- def leftUp(self):
- if self.currList is "filelist" :
- self.filelist.pageUp()
- self.updateInfoPanel()
- else:
-
- self.slideshowlist.pageUp()
- def rightUp(self):
- if self.currList is "filelist" :
- self.filelist.pageDown()
- self.updateInfoPanel()
- else:
- self.slideshowlist.pageDown()
- def down(self):
- if self.currList is "filelist" :
- self.filelist.down()
- self.updateInfoPanel()
- else:
- self.slideshowlist.down()
-
- def updateInfoPanel(self):
- if self.currList is "filelist" :
- selectedfile = self["menu"].getSelection()[0]
- else:
- selectedfile = self["slist"].l.getCurrentSelection()[1]
- pixmap = loadPic(selectedfile, 275,200, 1,1, 0,1)
- if pixmap is not None:
- self["pixmap"].instance.setPixmap(pixmap.__deref__())
- self["pixmap"].move(275,0)
- else:
- pass
-
- def output(self,str):
- print "+"*10,str
- def openMenu(self):
- self.session.open(WebcamViewerMenu)
+ skin = ""
+ filelist = []
+ currList = "slideshowlist"
+ wbviewer = False
+ loadedslideshowlistlistname = False
+
+ def __init__(self, session, args = 0):
+ skin = """<screen position="93,70" size="550,450" title="%s">
+ <widget name="menu" position="1,1" size="275,400" scrollbarMode="showOnDemand" />
+ <widget name="pixmap" position="550,450" size="275,200" backgroundColor="red" />
+ <widget name="slist" position="275,200" size="275,200" scrollbarMode="showOnDemand" />
+ <widget name="buttonred" position="6,405" size="130,40" backgroundColor="red" valign="center" halign="center" zPosition="2" foregroundColor="white" font="Regular;18" />
+ <widget name="buttongreen" position="142,405" size="130,40" backgroundColor="green" valign="center" halign="center" zPosition="2" foregroundColor="white" font="Regular;18" />
+ <widget name="buttonyellow" position="278,405" size="130,40" backgroundColor="yellow" valign="center" halign="center" zPosition="2" foregroundColor="white" font="Regular;18" />
+ <widget name="buttonblue" position="414,405" size="130,40" backgroundColor="blue" valign="center" halign="center" zPosition="2" foregroundColor="white" font="Regular;18" />
+ </screen>""" % config.plugins.pictureviewer.rootdir.value
+ self.skin = skin
+ Screen.__init__(self, session)
+
+ self.filelist = PictureList(config.plugins.pictureviewer.rootdir.value, matchingPattern = config.plugins.pictureviewer.matchingPattern.value)
+ self["menu"] = self.filelist
+
+ self.picload = ePicLoad()
+ self.picload.PictureData.get().append(self.updateInfoPanelCB)
+ self.picload.setPara((275, 200, 1, 1, False, 1, "#00000000"))
+ self.preview = Pixmap()
+ self["pixmap"] = self.preview
+
+ self.slideshowfiles = []
+ self.slideshowlist =MenuList(self.slideshowfiles)
+ self["slist"] = self.slideshowlist
+
+ self["buttonred"] = Label("")
+ self["buttongreen"] = Label("")
+ self["buttonyellow"] = Label("")
+ self["buttonblue"] = Label("")
+
+ self["actions"] = ActionMap(["WizardActions", "MenuActions", "DirectionActions", "ShortcutActions"],
+ {
+ "ok": self.go,
+ "back": self.close,
+ "menu": self.openMenu,
+ "up": self.up,
+ "down": self.down,
+ "left": self.leftUp,
+ "right": self.rightUp,
+ "red": self.KeyRed,
+ "green": self.KeyGreen,
+ "yellow": self.KeyYellow,
+ "blue": self.switchList,
+ }, -1)
+
+ self.onLayoutFinish.append(self.switchList)
+ self.onLayoutFinish.append(self.updateInfoPanel)
+
+ def KeyGreen(self):
+ if self.currList is "filelist":
+ # adding all files in current dir to slideshowlist
+ dirname = self["menu"].getCurrentDir()
+ if os.path.isdir(dirname):
+ s = os.listdir(dirname)
+ s.sort()
+ for file in s:
+ if compile(config.plugins.pictureviewer.matchingPattern.value).search(dirname + file):
+ self.slideshowfiles.append((_(file),dirname + file))
+ self["slist"].l.setList(self.slideshowfiles)
+ else:
+ #loading list
+ list = []
+ try:
+ for file in os.listdir(config.plugins.pictureviewer.slideshowdir.value):
+ if file.endswith(config.plugins.pictureviewer.slideshowext.value):
+ list.append((_(file.split("/")[-1]),file))
+ self.session.openWithCallback(
+ self.fileToLoadFilelistEntered,
+ ChoiceBox,
+ _("select List to load"),
+ list
+ )
+ except IOError,e:
+ print "["+myname+"] IOError:",e
+ except OSError,e:
+ print "["+myname+"] OSError:",e
+
+ def KeyRed(self):
+ if self.currList is "filelist" :
+ #do slideshow
+ self.hide()
+ x = Slideshow(self.session, self.show)
+ x.setfiles(self.slideshowfiles)
+ x.start()
+ else:
+ # save filelist
+ if not self.loadedslideshowlistlistname:
+ newname = "slideshowlist"
+ else:
+ newname = self.loadedslideshowlistlistname
+ self.session.openWithCallback(
+ self.fileToSaveFilelistEntered,
+ InputBox,
+ title = _("Enter filename to save the List:"),
+ text = newname,
+ maxSize = False,
+ type = Input.TEXT
+ )
+
+ def fileToLoadFilelistEntered(self, fileselection):
+ if fileselection is not None:
+ try:
+ filename = fileselection[1]
+ fp = open(config.plugins.pictureviewer.slideshowdir.value + filename)
+ list = []
+ for x in fp.readlines():
+ file = x.replace("\n","")
+ if x.startswith("#"):
+ pass
+ elif not os.path.exists(file):
+ print "["+myname+"] loaded file from filelist isnt avaible! ignoreing ->", file
+ else:
+ list.append((_(file.split("/")[-1]), file))
+ self.slideshowfiles = list
+ self["slist"].l.setList(self.slideshowfiles)
+ self.loadedslideshowlistlistname = filename.replace(config.plugins.pictureviewer.slideshowext.value, "")
+ except IOError, e:
+ print "["+myname+"] error:", e
+
+ def fileToSaveFilelistEntered(self, filename):
+ if filename is not None:
+ print "["+myname+"] saving list to ", config.plugins.pictureviewer.slideshowdir.value+filename + config.plugins.pictureviewer.slideshowext.value
+ try:
+ if not os.path.exists(config.plugins.pictureviewer.slideshowdir.value):
+ print "+" * 10, os.path.basename(filename)
+ os.mkdir(config.plugins.pictureviewer.slideshowdir.value)
+ fp = open(config.plugins.pictureviewer.slideshowdir.value + filename+config.plugins.pictureviewer.slideshowext.value, "w")
+ fp.write("# this is a slideshow file for "+myname+" made by V"+myversion+"\n")
+ fp.write("# you can make your own... each line with full path of the imagefile\n")
+ fp.write("# by importing this file,we will ignoring a file if is doesnt exist\n")
+ for x in self.slideshowfiles:
+ fp.write(x[1] + "\n")
+ fp.close()
+ except IOError, e:
+ print "["+myname+"] error:", e
+
+ def KeyYellow(self):
+ if self.currList is "filelist":
+ # add picture to list
+ fullfile = self["menu"].getSelection()[0]
+ if os.path.isfile(fullfile):
+ self.slideshowfiles.append((_(fullfile.split("/")[-1]), fullfile))
+ self["slist"].l.setList(self.slideshowfiles)
+ else:
+ # deleting an Picture
+ if len(self.slideshowfiles) >= 1:
+ indexinlist = self["slist"].l.getCurrentSelectionIndex()
+ self.slideshowfiles.pop(indexinlist)
+ self["slist"].l.setList(self.slideshowfiles)
+
+ def switchList(self):
+ if self.currList is "filelist" :
+ # Slideshow activieren
+ self.filelist.selectionEnabled(0)
+ self.slideshowlist.selectionEnabled(1)
+ self["buttonred"].setText("speichern")
+ self["buttongreen"].setText("laden")
+ self["buttonyellow"].setText("loeschen")
+ self["buttonblue"].setText("Dateien")
+ self.currList = "slideshowlist"
+ else:
+ # filelist activieren
+ self.filelist.selectionEnabled(1)
+ self.slideshowlist.selectionEnabled(0)
+ self["buttonred"].setText("starte Slideshow")
+ self["buttongreen"].setText("alle hinzufuegen")
+ self["buttonyellow"].setText("hinzufuegen")
+ self["buttonblue"].setText("Slideshow bearbeiten")
+ self.currList = "filelist"
+
+ def go(self):
+ if self.currList is "filelist" :
+ selection = self["menu"].getSelection()
+ if self.filelist.canDescent():
+ self.setTitle(selection[0])
+ self.filelist.descent()
+ else:
+ if selection[1] == True: # isDir
+ pass
+ else:
+ print "["+myname+"] file selected ", selection[0]
+ if os.path.isfile(selection[0]):
+ self.session.open(PictureScreen,selection[0].split("/")[-1], selection[0])
+ else:
+ print "["+myname+"] file not found ", selection[0]
+ else:
+ self.updateInfoPanel()
+
+ def up(self):
+ if self.currList is "filelist":
+ self.filelist.up()
+ self.updateInfoPanel()
+ else:
+ self.slideshowlist.up()
+
+ def leftUp(self):
+ if self.currList is "filelist":
+ self.filelist.pageUp()
+ self.updateInfoPanel()
+ else:
+ self.slideshowlist.pageUp()
+
+ def rightUp(self):
+ if self.currList is "filelist":
+ self.filelist.pageDown()
+ self.updateInfoPanel()
+ else:
+ self.slideshowlist.pageDown()
+
+ def down(self):
+ if self.currList is "filelist":
+ self.filelist.down()
+ self.updateInfoPanel()
+ else:
+ self.slideshowlist.down()
+
+ def updateInfoPanel(self):
+ if self.currList is "filelist":
+ selectedfile = self["menu"].getSelection()[0]
+ else:
+ selectedfile = self["slist"].l.getCurrentSelection()[1]
+ self.picload.startDecode(selectedfile)
+
+ def updateInfoPanelCB(self, picInfo = None):
+ ptr = self.picload.getData()
+ if ptr is not None:
+ self["pixmap"].instance.setPixmap(ptr.__deref__())
+ self["pixmap"].move(275,0)
+ else:
+ pass
+
+ def output(self,str):
+ print "+" * 10, str
+
+ def openMenu(self):
+ self.session.open(WebcamViewerMenu)