# -*- coding: utf-8 -*-

#-------------------------------------------------------
#
#               AAF Picasa Viewer
#
#   Dieses Plugin dient zur Betrachtung verschiedener
#   Bilder des Google Dienstes "Picasa".
#   Es besteht grunsaetzlich die Moeglichkeit dort kostenlose
#   Userkonten anzulegen und eigene Bilder hochladen. Diese
#   koennen dann ebenfalls mit diesem Plugn betrachtet werden.
#
#   Wir wuenschen allen Benutzern viel Spaß mit diesem
#   nuetzlichem Plugin.
#
#           http://picasaweb.google.com
#
#                 12.09.2010
#
#
#             Designed und Idee von
#                 @Bauernbub
#
#-------------------------------------------------------

from enigma import *
from enigma import eActionMap
from Screens.Screen import Screen
from Screens.ServiceInfo import ServiceInfoList, ServiceInfoListEntry
from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
from Components.Pixmap import Pixmap, MovingPixmap
from Components.Label import Label
from Components.Button import Button
from Components.Sources.List import List
from Screens.MessageBox import MessageBox
from Screens.HelpMenu import HelpableScreen
from Components.ConfigList import ConfigList
from Components.config import *
from Tools.Directories import resolveFilename, fileExists, pathExists, createDir, SCOPE_MEDIA
from Components.FileList import FileList
from Components.AVSwitch import AVSwitch
from Plugins.Plugin import PluginDescriptor
from Screens.VirtualKeyBoard import VirtualKeyBoard
from Components.ConfigList import ConfigListScreen
from os import path as os_path
from os import system, remove, walk, makedirs, listdir, chdir
from Screens.NetworkSetup import *
from twisted.web.client import downloadPage
from Components.HTMLComponent import HTMLComponent
from Components.GUIComponent import GUIComponent

from Screens.InfoBarGenerics import InfoBarResolutionSelection
#from Plugins.Extensions.MediaCenter.GlobalFunctions import InfoBarAspectSelection


from Screens.VirtualKeyBoard import VirtualKeyBoard
from Components.Sources.Progress import Progress
from re import sub, split, search, match, findall

import os
import sys
import urllib


#-------------- nur fuer manuelles compilieren auf der Box -----------------------------------------
# import py_compile
# py_compile.compile("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/plugin.py")

global path
global Fokus
global devicepath
global maxpage
global curpage
global loadpicnow
global box

maxpage = 1
curpage = 1
loadpicnow = 0

Fokus = 2  # Defaultwert zeigt erste Maske
page = "none"
index = 0  # for picviewer

# Boytyp lesen
file = open("/proc/stb/info/model", "r")
box = file.readline().strip()
file.close()


config.plugins.picasa = ConfigSubsection()
config.plugins.picasa.max_offsety = ConfigInteger(default=15, limits=(0, 50))
config.plugins.picasa.Device = ConfigSelection(default="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/", choices = [("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/", _("...Plugins/Extensions/Picasa/")), ("/media/hdd/Picasa/", _("/media/hdd/Picasa/")), ("/var/swap/Picasa/", _("/var/swap/Picasa/"))])
config.plugins.picasa.resize = ConfigSelection(default="0", choices = [("0", _("simple")), ("1", _("better"))])
config.plugins.picasa.bgcolor = ConfigSelection(default="#00000000", choices = [("#00000000", _("black")),("#009eb9ff", _("blue")),("#00ff5a51", _("red")), ("#00ffe875", _("yellow")), ("#0038FF48", _("green"))])
config.plugins.picasa.textcolor = ConfigSelection(default="#0038FF48", choices = [("#00000000", _("black")),("#009eb9ff", _("blue")),("#00ff5a51", _("red")), ("#00ffe875", _("yellow")), ("#0038FF48", _("green"))])
config.plugins.picasa.framesize = ConfigInteger(default=5, limits=(5, 99))
config.plugins.picasa.max_otherpic = ConfigInteger(default=6, limits=(1, 25))
config.plugins.picasa.max_picpixel = ConfigSelection(default="1024", choices = [("640", _("640")), ("800", _("800")), ("1024", _("1024")), ("1200", _("1200")), ("2048", _("2048"))])
config.plugins.picasa.remove = ConfigSelection(default="0", choices = [("0", _("Yes")), ("1", _("No"))])
config.plugins.picasa.slidetime = ConfigInteger(default=5, limits=(3, 60))
config.plugins.picasa.infoline = ConfigEnableDisable(default=True)
config.plugins.picasa.loop = ConfigEnableDisable(default=True)
devicepath = config.plugins.picasa.Device.value


#---------------------- Skin Funktionen -----------------------------------------------------------
def getAspect():
	val = AVSwitch().getAspectRatioSetting()
	return val/2

def getScale():
	return AVSwitch().getFramebufferScale()

def applySkinVars(skin,dict):
		for key in dict.keys():
				try:
						skin = skin.replace('{'+key+'}',dict[key])
				except Exception,e:
						print e,"@key=",key
		return skin


#-------------------- ist der voreingestellte Device noch vorhanden? ------------------------
if devicepath == "/media/hdd/Picasa/":
		if not pathExists("/media/hdd/Picasa"):
			devicepath = "/usr/lib/enigma2/python/Plugins/Extensions/Picasa/"
			config.plugins.picasa.Device = devicepath
			config.plugins.picasa.Device.save
			session.open(MessageBox, _("not existing Device (hdd)!"), type = MessageBox.TYPE_INFO, timeout = 10)

if devicepath == "/var/swap/Picasa/":
		if not pathExists("/var/swap/Picasa"):
			devicepath = "/usr/lib/enigma2/python/Plugins/Extensions/Picasa/"
			config.plugins.picasa.Device = devicepath
			config.plugins.picasa.Device.save
			config.save()
			session.open(MessageBox, _("not existing Device (swap)!"), type = MessageBox.TYPE_INFO, timeout = 10)

os.system("chmod 755 /usr/lib/enigma2/python/Plugins/Extensions/Picasa/rss.sh")
os.system("chmod 755 /usr/lib/enigma2/python/Plugins/Extensions/Picasa/private.sh")


#------------------------------------------------------------------------------------------
#---------------------- class InfoBarAspectSelection --------------------------------------
#------------------------------------------------------------------------------------------

class InfoBarAspectSelection:
	STATE_HIDDEN = 0
	STATE_ASPECT = 1
	STATE_RESOLUTION = 2
	def __init__(self):
		self["AspectSelectionAction"] = HelpableActionMap(self, "InfobarAspectSelectionActions",
			{
				"aspectSelection": (self.ExGreen_toggleGreen, _("Aspect list...")),
			})
		self.__ExGreen_state = self.STATE_HIDDEN
	def ExGreen_doAspect(self):
		self.__ExGreen_state = self.STATE_ASPECT
		self.aspectSelection()
	def ExGreen_doResolution(self):
		self.__ExGreen_state = self.STATE_RESOLUTION
		self.resolutionSelection()
	def ExGreen_doHide(self):
		self.__ExGreen_state = self.STATE_HIDDEN
	def ExGreen_toggleGreen(self, arg=""):
		print self.__ExGreen_state
		if self.__ExGreen_state == self.STATE_HIDDEN:
			print "self.STATE_HIDDEN"
			self.ExGreen_doAspect()
		elif self.__ExGreen_state == self.STATE_ASPECT:
			print "self.STATE_ASPECT"
			self.ExGreen_doResolution()
		elif self.__ExGreen_state == self.STATE_RESOLUTION:
			print "self.STATE_RESOLUTION"
			self.ExGreen_doHide()
	def aspectSelection(self):
		selection = 0
		tlist = []
		tlist.append((_("Resolution"), "resolution"))
		tlist.append(("", ""))
		tlist.append(("Letterbox", "letterbox"))
		tlist.append(("PanScan", "panscan"))
		tlist.append(("Non Linear", "non"))
		tlist.append(("Bestfit", "bestfit"))
		mode = open("/proc/stb/video/policy").read()[:-1]
		print mode
		for x in range(len(tlist)):
			if tlist[x][1] == mode:
				selection = x
		keys = ["green", "",  "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ]
		self.session.openWithCallback(self.aspectSelected, ChoiceBox, title=_("Please select an aspect ratio..."), list = tlist, selection = selection, keys = keys)
	def aspectSelected(self, aspect):
		if not aspect is None:
			if isinstance(aspect[1], str):
				if aspect[1] == "resolution":
					self.ExGreen_toggleGreen()
				else:
					open("/proc/stb/video/policy", "w").write(aspect[1])
					self.ExGreen_doHide()
		return

#------------------------------------------------------------------------------------------
#----------------------------- Picasa Empfohlene Fotos ------------------------------------
#------------------------------------------------------------------------------------------
class PicasaMain(Screen):
	devicepath = config.plugins.picasa.Device.value

	skin = """
		<screen name="Picasa" position="{picasa.pos}" size="{picasa.size}" title="Empfohlene Fotos - Picasa Version V 1.1" backgroundColor="#000000" >
			<widget name="Pic1a" position="{pic1a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic2a" position="{pic2a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic3a" position="{pic3a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic4a" position="{pic4a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic5a" position="{pic5a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic6a" position="{pic6a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic7a" position="{pic7a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic8a" position="{pic8a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic9a" position="{pic9a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic10a" position="{pic10a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic11a" position="{pic11a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic12a" position="{pic12a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
			<widget name="Pic1" position="{pic1.pos}" zPosition="3" size="144,144" pixmap="{dev}mainpic/pic_1.jpg" transparent="1" alphatest="on" />
			<widget name="Pic2" position="{pic2.pos}" zPosition="3" size="144,144" pixmap="{dev}mainpic/pic_2.jpg" transparent="1" alphatest="on" />
			<widget name="Pic3" position="{pic3.pos}" zPosition="3" size="144,144" pixmap="{dev}mainpic/pic_3.jpg" transparent="1" alphatest="on" />
			<widget name="Pic4" position="{pic4.pos}" zPosition="3" size="144,144" pixmap="{dev}mainpic/pic_4.jpg" transparent="1" alphatest="on" />
			<widget name="Pic5" position="{pic5.pos}" zPosition="4" size="144,144" pixmap="{dev}mainpic/pic_5.jpg" transparent="1" alphatest="on" />
			<widget name="Pic6" position="{pic6.pos}" zPosition="4" size="144,144" pixmap="{dev}mainpic/pic_6.jpg" transparent="1" alphatest="on" />
			<widget name="Pic7" position="{pic7.pos}" zPosition="4" size="144,144" pixmap="{dev}mainpic/pic_7.jpg" transparent="1" alphatest="on" />
			<widget name="Pic8" position="{pic8.pos}" zPosition="4" size="144,144" pixmap="{dev}mainpic/pic_8.jpg" transparent="1" alphatest="on" />
			<widget name="Pic9" position="{pic9.pos}" zPosition="5" size="144,144" pixmap="{dev}mainpic/pic_9.jpg" transparent="1" alphatest="on" />
			<widget name="Pic10" position="{pic10.pos}" zPosition="5" size="144,144" pixmap="{dev}mainpic/pic_10.jpg" transparent="1" alphatest="on" />
			<widget name="Pic11" position="{pic11.pos}" zPosition="5" size="144,144" pixmap="{dev}mainpic/pic_11.jpg" transparent="1" alphatest="on" />
			<widget name="Pic12" position="{pic12.pos}" zPosition="5" size="144,144" pixmap="{dev}mainpic/pic_12.jpg" transparent="1" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/button_red.png" position="30,495" size="15,16" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/button_green.png" position="180,495" size="15,16" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/button_yellow.png" position="360,495" size="15,16" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/button_blue.png" position="520,495" size="15,16" alphatest="on" />
			<widget source="key_red" render="Label" position="50,490" zPosition="1" size="350,25" font="Regular;22" halign="left" transparent="1" />
			<widget source="key_green" render="Label" position="200,490" zPosition="1" size="250,25" font="Regular;22" halign="left" transparent="1" />
			<widget source="key_yellow" render="Label" position="380,490" zPosition="1" size="350,25" font="Regular;22" halign="left"  transparent="1" />
			<widget source="key_blue" render="Label" position="540,490" zPosition="1" size="350,25" font="Regular;22" halign="left"  transparent="1" />
		</screen>"""

#<widget source="job_progressbar" render="Progress" position="10,520" size="{progress.size}" borderWidth="1" backgroundColor="#254f7497" />
#<widget source="job_progresslabel" render="Label" position="130,519" zPosition="6" font="Regular;18" halign="center" transparent="1" size="330,14" foregroundColor="#000000" />

	def __init__(self, session):
		self.session = session
		global selLink
		global maxpage
		offsety = config.plugins.picasa.max_offsety.value
		# allgemeiner Defaultlink
		selLink = "http://picasaweb.google.com/data/feed/base/all?alt=rss&kind=photo&access=public&tag=tiere&filter=1&hl=de"
		#switch automatic to current skin
		current_w = getDesktop(0).size().width()
		current_h = getDesktop(0).size().height()
		print "DESKTOPsize is",current_w,current_h

		# define the start koordinates and size
		if current_w == 1280:
				size_w = 700
				size_h = 550
		else:
				size_w = 700
				size_h = 550

		pos_w = (current_w - size_w)/2
		pos_h = (current_h - size_h)/2 + offsety

		# calculate Skin koordinates
		font = "Regular;18"
		green_pos = 20
		blue_pos = 225
		green2_pos = 20
		blue2_pos = 225

		offset = 30
		offsett = 0

		pic1posl = 10 + offset
		pic1post = 10 + offsett
		pic1aposl = 6 + offset
		pic1apost = 144 + offsett
		pic2posl = 170 + offset
		pic2post = 10 + offsett
		pic2aposl = 166 + offset
		pic2apost = 144 + offsett
		pic3posl = 330 + offset
		pic3post = 10 + offsett
		pic3aposl = 326 + offset
		pic3apost = 144 + offsett
		pic4posl = 490 + offset
		pic4post = 10 + offsett
		pic4aposl = 486 + offset
		pic4apost = 144 + offsett
		pic5posl = 10 + offset
		pic5post = 170 + offsett
		pic5aposl = 6 + offset
		pic5apost = 304 + offsett
		pic6posl = 170 + offset
		pic6post = 170 + offsett
		pic6aposl = 166 + offset
		pic6apost = 304 + offsett
		pic7posl = 330 + offset
		pic7post = 170 + offsett
		pic7aposl = 326 + offset
		pic7apost = 304 + offsett
		pic8posl = 490 + offset
		pic8post = 170 + offsett
		pic8aposl = 486 + offset
		pic8apost = 304 + offsett
		pic9posl = 10 + offset
		pic9post = 330 + offsett
		pic9aposl = 6 + offset
		pic9apost = 464 + offsett
		pic10posl = 170 + offset
		pic10post = 330 + offsett
		pic10aposl = 166 + offset
		pic10apost = 464 + offsett
		pic11posl = 330 + offset
		pic11post = 330 + offsett
		pic11aposl = 326 + offset
		pic11apost = 464 + offsett
		pic12posl = 490 + offset
		pic12post = 330 + offsett
		pic12aposl = 486 + offset
		pic12apost = 464 + offsett

		# set Skinvariables
		devicepath = config.plugins.picasa.Device.value
		self.dict = {
				'dev': devicepath,
				'font': font,
				'picasa.size': "%i,%i"%(size_w,size_h),
				'picasa.pos': "%i,%i"%(pos_w,pos_h),
				'progress.size': "%i,%i"%(size_w -20,22),
				'green.pos': "%i,5"%(green_pos),
				'blue.pos': "%i,5"%(blue_pos),
				'green2.pos': "%i,5"%(green2_pos),
				'blue2.pos': "%i,5"%(blue2_pos),
				'pic1.pos': "%i,%i"%(pic1posl,pic1post),
				'pic2.pos': "%i,%i"%(pic2posl,pic2post),
				'pic3.pos': "%i,%i"%(pic3posl,pic3post),
				'pic4.pos': "%i,%i"%(pic4posl,pic4post),
				'pic5.pos': "%i,%i"%(pic5posl,pic5post),
				'pic6.pos': "%i,%i"%(pic6posl,pic6post),
				'pic7.pos': "%i,%i"%(pic7posl,pic7post),
				'pic8.pos': "%i,%i"%(pic8posl,pic8post),
				'pic9.pos': "%i,%i"%(pic9posl,pic9post),
				'pic10.pos': "%i,%i"%(pic10posl,pic10post),
				'pic11.pos': "%i,%i"%(pic11posl,pic11post),
				'pic12.pos': "%i,%i"%(pic12posl,pic12post),
				'pic1a.pos': "%i,%i"%(pic1aposl,pic1apost),
				'pic2a.pos': "%i,%i"%(pic2aposl,pic2apost),
				'pic3a.pos': "%i,%i"%(pic3aposl,pic3apost),
				'pic4a.pos': "%i,%i"%(pic4aposl,pic4apost),
				'pic5a.pos': "%i,%i"%(pic5aposl,pic5apost),
				'pic6a.pos': "%i,%i"%(pic6aposl,pic6apost),
				'pic7a.pos': "%i,%i"%(pic7aposl,pic7apost),
				'pic8a.pos': "%i,%i"%(pic8aposl,pic8apost),
				'pic9a.pos': "%i,%i"%(pic9aposl,pic9apost),
				'pic10a.pos': "%i,%i"%(pic10aposl,pic10apost),
				'pic11a.pos': "%i,%i"%(pic11aposl,pic11apost),
				'pic12a.pos': "%i,%i"%(pic12aposl,pic12apost),
				}

		self.skin = applySkinVars(PicasaMain.skin,self.dict)
		Screen.__init__(self, session)

		file = open("/proc/stb/info/model", "r")
		box = file.readline().strip()
		file.close()

		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions", "MovieSelectionActions", "MenuActions", "MoviePlayerActions", "ChannelSelectBaseActions", "NumberActions"],
		{
				"cancel": self.closePicasa,
				"left": self.left,
				"right": self.right,
				"up": self.up,
				"down": self.down,
				"red": self.pressed_redkey,
				"green": self.Select,
				"yellow": self.otherSelect,
				"blue": self.SlideShow,
				"menu": self.PicSetupMenu,
				"ok": self.loadPicture
		}, -1)


		self["Pic1"] = Pixmap()
		self["Pic2"] = Pixmap()
		self["Pic3"] = Pixmap()
		self["Pic4"] = Pixmap()
		self["Pic5"] = Pixmap()
		self["Pic6"] = Pixmap()
		self["Pic7"] = Pixmap()
		self["Pic8"] = Pixmap()
		self["Pic9"] = Pixmap()
		self["Pic10"] = Pixmap()
		self["Pic11"] = Pixmap()
		self["Pic12"] = Pixmap()

		self["Pic1a"] = Pixmap()
		self["Pic1a"].show()
		self["Pic2a"] = Pixmap()
		self["Pic2a"].hide()
		self["Pic3a"] = Pixmap()
		self["Pic3a"].hide()
		self["Pic4a"] = Pixmap()
		self["Pic4a"].hide()
		self["Pic5a"] = Pixmap()
		self["Pic5a"].hide()
		self["Pic6a"] = Pixmap()
		self["Pic6a"].hide()
		self["Pic7a"] = Pixmap()
		self["Pic7a"].hide()
		self["Pic8a"] = Pixmap()
		self["Pic8a"].hide()
		self["Pic9a"] = Pixmap()
		self["Pic9a"].hide()
		self["Pic10a"] = Pixmap()
		self["Pic10a"].hide()
		self["Pic11a"] = Pixmap()
		self["Pic11a"].hide()
		self["Pic12a"] = Pixmap()
		self["Pic12a"].hide()

		self["key_red"] = StaticText(_("my Pic"))
		self["key_green"] = StaticText(_("myPic more"))
		self["key_yellow"] = StaticText(_("other Pic"))
		self["key_blue"] = StaticText(_("SlideShow"))

		self.pic = 1
		self.download = 1
		self.seite = 1

		maxpage = 1
		self.page = 1
		self.focus = 1   # 1 = MainPic, 2 = MyPic 3 = otherPic
		self.outpath = "mainpic"
		#self.mypic_select = 0

		devicepath = config.plugins.picasa.Device.value
		print "[Picasa] Devicepath=" + devicepath
		self.ReadMain()

#------------------------------------------------------------------------------------------
	def pressed_redkey(self):
		global curpage
		curpage = 1
		self.mypic_select = 0
		self.MyPic_now()
#------------------------------------------------------------------------------------------
	def SlideShow(self):
		self.PicDownloadmain()
		self.session.open(View_Slideshow, 0, True)
#------------------------------------------------------------------------------------------

	def loadPicture(self):
		devicepath = config.plugins.picasa.Device.value

		path = devicepath +"mainpicBig/"
		if os.path.exists(devicepath +"mainpicBig") is False:
			os.system("mkdir -p " + devicepath + "mainpicBig")
		else:
			os.system("rm " + devicepath + "mainpicBig/*")

		# tausche die Aufloesung und erhoehe sie
		self.outpath = "mainpic"
		self.pixel = config.plugins.picasa.max_picpixel.value
		CpString = "sed -e 's:s144-c:s" + self.pixel +":g' -i " + devicepath + self.outpath + "/pic_" + str(self.pic) + ".lnk"
		os.system(CpString)

		if fileExists(devicepath + self.outpath + "/pic_" + str(self.pic) + ".lnk"):
			file = open(devicepath + self.outpath + "/pic_" + str(self.pic) + ".lnk", "r")
			BigUrl = file.readline().strip()
			print "[Picasa] BigUrl" + BigUrl
			file.close()

			self.LoadMainPicBig(BigUrl, self.pic)
			filelist = devicepath + "mainpicBig/pic_" + str(self.pic) + ".jpg"
			self.session.open(PicView, filelist, 0, path, False)

#------------------------------------------------------------------------------------------
	def Preview(self):
		devicepath = config.plugins.picasa.Device.value
		path = devicepath + self.outpath + "/"
		filelist = FileList(path, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
		self.session.open(PicView, filelist.getFileList(), 0, path, True)

#------------------------------------------------------------------------------------------
	def down(self):
		if self.pic <= 8:
			self.pic = self.pic + 4
			self.setPicture(self.pic)

#------------------------------------------------------------------------------------------
	def up(self):
		if self.pic >= 5:
			self.pic = self.pic - 4
			self.setPicture(self.pic)

#------------------------------------------------------------------------------------------
	def left(self):
		if self.pic > 1:
			self.pic = self.pic - 1
			self.setPicture(self.pic)

#------------------------------------------------------------------------------------------
	def right(self):
		if self.pic < 12:
			self.pic = self.pic + 1
			self.setPicture(self.pic)

#------------------------------------------------------------------------------------------
	def PicSetupMenu(self):
		self.session.open(PicSetup)

#------------------------------------------------------------------------------------------
	def closePicasa(self):
		if str(config.plugins.picasa.remove.value) == "0":
			devicepath = config.plugins.picasa.Device.value
			job = "rm -r " + devicepath + "mainpic"
			os.system(job)
			job = "rm -r " + devicepath + "mypic"
			os.system(job)
			job = "rm -r " + devicepath + "otherpic"
			os.system(job)
			job = "rm -r " + devicepath + "mainpicBig"
			os.system(job)

			os.system("rm -r /usr/lib/enigma2/python/Plugins/Extensions/Picasa/private.info")
			os.system("rm -r /usr/lib/enigma2/python/Plugins/Extensions/Picasa/public.info")
			os.system("rm -r /usr/lib/enigma2/python/Plugins/Extensions/Picasa/rss.info")
		self.close()

#------------------------------------------------------------------------------------------
	def Select(self):
		global selLink
		global curpage
		global loadpicnow

		self.focus = 2
		curpage = 1
		self.seite = 1
		loadpicnow = 0
		self.mypic_select = 1
		selLink = "http://picasaweb.google.com/lh/view?feat=tags&psc=G&filter=1&tags=tiere#"  # Tiere als Default
		print "[Picasa Curpic]"

		if str(config.plugins.picasa.remove.value) == "1":  # Bilder nicht loeschen
			if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/curpic") is True:
				file = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/curpic", "r" )
				self.curpicname = file.readline().strip()
				print "[Picasa Curpic] =" + self.curpicname
				file.close()
				message = "%s %s" % (self.curpicname, _("\nist bereits im Cache vorhanden!\nSoll ein anderes Webalbum geladen werden?"))
				self.session.openWithCallback(self.load_now, MessageBox, message, MessageBox.TYPE_YESNO)
			else:
				self.session.openWithCallback(self.SelectStatus, SelectGroup, self.focus)
		else:
			self.session.openWithCallback(self.SelectStatus, SelectGroup, self.focus)

	def load_now(self, answer):
		global selLink
		global loadpicnow
		if answer == True:
			self.session.openWithCallback(self.SelectStatus, SelectGroup, self.focus)
		else:
			if os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/Link/" + self.curpicname) is True:
				file = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/Link/" + self.curpicname, "r")
				selLink = file.readline().strip()
				print "[Picasa] select selLink= " + selLink
				file.close()
				loadpicnow = 1
				#self.mypic_select = 1
				self.MyPic_select()

#------------------------------------------------------------------------------------------

	def otherSelect(self):
		global selLink
		global curpage
		self.focus = 3
		curpage = 1
		self.seite = 1
		self.mypic_select = 0
		selLink = "http://picasaweb.google.com/lh/view?feat=tags&psc=G&filter=1&tags=tiere#"  ## Tiere als Default
		self.session.openWithCallback(self.otherSelectStatus, SelectGroup, self.focus)


	def SelectStatus(self):
		global selLink
		print "[Picasa SelectStatus Link] =" + selLink
		if selLink == "stop":
				print "[Picasa Group gestopt]"
		else:
				print "[Picasa Group select]"
				#self.MyPic()
				self.MyPic_select()

	def otherSelectStatus(self):
		global selLink
		print "[Picasa otherSelectStatus Link] =" + selLink
		if selLink == "stop":
				print "[Picasa Groupother gestopt]"
		else:
				print "[Picasa Group selectother]"
				self.OtherPic()
				self.otherMyPic_select()  # zurueck in die Skinanzeige


#------------------------------------------------------------------------------------------
	def setPicture(self,counter):
		self["Pic1a"].hide()
		self["Pic2a"].hide()
		self["Pic3a"].hide()
		self["Pic4a"].hide()
		self["Pic5a"].hide()
		self["Pic6a"].hide()
		self["Pic7a"].hide()
		self["Pic8a"].hide()
		self["Pic9a"].hide()
		self["Pic10a"].hide()
		self["Pic11a"].hide()
		self["Pic12a"].hide()

		if counter == 1:
			self["Pic1a"].show()
		if counter == 2:
			self["Pic2a"].show()
		if counter == 3:
			self["Pic3a"].show()
		if counter == 4:
			self["Pic4a"].show()
		if counter == 5:
			self["Pic5a"].show()
		if counter == 6:
			self["Pic6a"].show()
		if counter == 7:
			self["Pic7a"].show()
		if counter == 8:
			self["Pic8a"].show()
		if counter == 9:
			self["Pic9a"].show()
		if counter == 10:
			self["Pic10a"].show()
		if counter == 11:
			self["Pic11a"].show()
		if counter == 12:
			self["Pic12a"].show()

#------------------------------------------------------------------------------------------
	def ReadMain(self):
		global box
		devicepath = config.plugins.picasa.Device.value
		print "[Picasa] Seite wurde geladen"
		bild = 0

		if self.focus == 1:  # MainPic
				self.outpath = "mainpic"
				fread = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/public.info", "r" )
		if self.focus == 2:  # MyPic
				self.outpath = "mypic"
				fread = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/private.info", "r" )
		if self.focus == 3:  # otherPic
				self.outpath = "otherpic"
				fread = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/other.info", "r" )

		if os.path.exists(devicepath + self.outpath) is False:
			os.system("mkdir -p " + devicepath + self.outpath)

		for line in fread:
			zeile = line.lstrip()

			# suche Link aus der Seite fuer die Thumbnails in 144x144
			found_link = zeile.find('height="144" src="')

			if found_link != -1:
				found_link = zeile.find('http://')
				bild = bild + 1

				if box <> "dm500hd":
					evfd.getInstance().vfd_write_string("Picture " + str(bild))

				LinkThumb = zeile[found_link:-2]
				fwrite = open(devicepath + self.outpath + "/pic_" + str(bild) + ".lnk", "w" )
				fwrite.write(LinkThumb + '\n')
				fwrite.close()

				print "[Picasa]" + str(LinkThumb)
				self.LoadMainPic(LinkThumb,bild)

#------------------------------------------------------------------------------------------
	def MyPic_now(self):
		global selLink
		global maxpage
		if selLink == "stop":
				return

		print "[Picasa] MyPiself.mypic_select=" + str(self.mypic_select)
		if self.mypic_select == 0:
			if not fileExists("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/myLink.lnk"):
				session.open(MessageBox, _("cannot found 'myLink.lnk', please define it!"), type = MessageBox.TYPE_INFO, timeout = 10)
			else:
				file = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/myLink.lnk", "r")
				selLink = file.readline().strip()
				file.close()

		print "[Picasa] MyPic_now maxpage vorher" + str(maxpage)
		self.focus = 2
		self.session.openWithCallback(self.PageStatus, PicasaMyPic, self.download, self.focus, maxpage, self.seite)

#------------------------------------------------------------------------------------------
	def MyPic_select(self):
		global selLink
		global maxpage
		if selLink == "stop":
				return
		print "[Picasa MyPic_select] =" + selLink

		self.focus = 2
		print "[Picasa] MyPic_select ruft PicasaMyPic"
		self.session.openWithCallback(self.PageStatus, PicasaMyPic, self.download, self.focus, maxpage, self.seite)

#------------------------------------------------------------------------------------------
	def otherMyPic_select(self):
		global selLink
		global maxpage
		if selLink == "stop":
				return
		print "[Picasa otherMyPic_select] =" + selLink

		self.focus = 3
		print "[Picasa] otherMyPic_now ruft PicasaMyPic"
		self.session.openWithCallback(self.PageStatus, PicasaMyPic, self.download, self.focus, maxpage, self.seite)


#----------------- new load now self -------------------------------------------------------------------------
	def OtherPic(self):
		global selLink
		global maxpage
		global box
		devicepath = config.plugins.picasa.Device.value
		self.focus = 3
		#max_otherpic = 6
		max_otherpic = config.plugins.picasa.max_otherpic.value

		#url = "http://picasaweb.google.com/113655494029816075097/AAF?authkey=Gv1sRgCKifw7rNts75Zg#"
		url = selLink
		ret = system("checknet picasaweb.google.com")
		bild = 0
		total = 0

		#self["job_progressbar"].value = int(200)
		#self["job_progresslabel"].text = "Bilder 10 / 100"

		# starten mit der Ansicht "eigene Fotos"
		if box <> "dm8000":
			evfd.getInstance().vfd_write_string("downloading... ")

		if ret == 0:
			h = urllib.urlretrieve(url, "/usr/lib/enigma2/python/Plugins/Extensions/Picasa/rss.info")
		else:
			print "picasaweb.google.com eigene Bilder nicht erreichbar"
			session.open(MessageBox, _("picasaweb.google.com is unreachable."), type = MessageBox.TYPE_INFO, timeout = 10)

		self.outpath = "otherpic"
		fread = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/rss.info", "r" )

		if os.path.exists(devicepath + self.outpath) is False:
			os.system("mkdir -p " + devicepath + self.outpath)

		print "[Picasa OtherPic] Seite wird geladen (nowself)"
		if box <> "dm8000":
			evfd.getInstance().vfd_write_string("filtering...")

		# SED ist beim Filtern schneller
		os.system("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/rss.sh")
		print "[Picasa OtherPic] Seite wurde geladen"

		self.page = 1
		self.totalpath = devicepath + self.outpath + "/" + str(self.page)
		CpString = "mkdir -p " + self.totalpath
		os.system(CpString)

		fread = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/rss.info", "r" )
		for line in fread:
			zeile = line.lstrip()
			found_jpg = zeile.find('s128')

			if found_jpg != -1:
				bild = bild + 1
				total = total + 1
				if box <> "dm8000":
					evfd.getInstance().vfd_write_string("Picture " + str(total))
				if bild >= 13:  # naechste Seite anlegen
					self.page = self.page + 1
					if self.page >= (max_otherpic + 1):
						break
					bild = 1
					self.totalpath = devicepath + self.outpath + "/" + str(self.page)
					CpString = "mkdir -p " + self.totalpath
					os.system(CpString)

				LinkThumb = zeile
				print "[Picasa]" + LinkThumb

				fwrite = open(devicepath + self.outpath + "/" + str(self.page) + "/pic_" + str(bild) + ".lnk", "w" )
				#fwrite.write(LinkThumb + '\n')
				fwrite.write(LinkThumb)
				fwrite.close()
				self.LoadMainPic2(LinkThumb,bild)

		# Dummy Bilder ins View Verzeichnis kopieren wenn nicht 12 erreicht werden
		CpString = "cp -f /usr/lib/enigma2/python/Plugins/Extensions/Picasa/default/* " + devicepath + self.outpath
		os.system(CpString)

		# die ersten 12 Bilder ins View Verzeichnis kopieren
		CpString = "cp -f " + devicepath + self.outpath + "/1/* " + devicepath + self.outpath
		os.system(CpString)

		self.check_jpg(self.outpath) # pruefe ob es ein jpg ist
		maxpage = self.page

#------------------------- new load now self -----------------------------------------------------------------
	def LoadMainPic2(self,url,counter):
		# lade die Vorschaubilder und lege sie ab
 		devicepath = config.plugins.picasa.Device.value
		self.previewPath =devicepath + self.outpath + "/" + str(self.page) + "/pic_" + str(counter) + ".jpg"
		h = urllib.urlretrieve(url, self.previewPath)

#-------------------------- new load now self ----------------------------------------------------------------
	def check_jpg(self, path):
		# the first two bytes FF and D8 mark a jpeg file
		devicepath = config.plugins.picasa.Device.value
		x = 0
		while x < 12:
			x = x + 1
			self.filelist = devicepath + path + "/pic_" + str(x) + ".jpg"
			print "[Picasa] check Picload " + str(x)

			data = open(self.filelist, "r+")
			data.seek(1)
			byte1 = data.read(1)  # 216 D8
			byte2 = data.read(1)  # 255 FF
			data.close()
			if ord(byte1) != 216 or ord(byte2) != 255:
				print "[Picasa] Bildfehler, wird korregiert"
				CpString = "cp -f /usr/lib/enigma2/python/Plugins/Extensions/Picasa/default/pic_" + str(x) + ".jpg " + devicepath + self.outpath
				#print CpString
				os.system(CpString)


#---------- Seitenwechsel MyPic --------------------------------------------------------------------------------
	def PageStatus(self):
		global page     # next oder prev fuer Steuerung
		global curpage  # aktuelle Seite
		global maxpage  # maximale Seite

		#maxpage = self.maxpage  # max Seitenzaehler fuer Anzeige
		devicepath = config.plugins.picasa.Device.value
		print "[Picasa self.focus] " + str(self.focus) + " " + str(maxpage) + " " + str(curpage)

		if self.focus == 2:
			self.picpath = "mypic"
		if self.focus == 3:
			self.picpath = "otherpic"

		print "[Picasa] in der PageStatus=" + page

		if page == "next" or page == "prev":
			if page == "next":
				page = "none"
				self.seite = self.seite + 1
				self.curPath = devicepath + self.picpath + "/" + str(self.seite)
				print "[Picasa] self.seite=" + str(self.seite)
				print "[Picasa] os.path.exists=" + self.curPath
				if os.path.exists(self.curPath) is True:
					# Dummy Bilder ins View Verzeichnis kopieren wenn nicht 12 erreicht werden
					CpString = "cp -f /usr/lib/enigma2/python/Plugins/Extensions/Picasa/default/* " + devicepath + self.picpath
					os.system(CpString)
					# die naechsten 12 Bilder ins View Verzeichnis kopieren
					print "[Picasa]Kopieren von=" + devicepath + self.picpath + "/" + str(self.seite) + "/* " + devicepath + self.picpath
					CpString = "cp -f " + devicepath + self.picpath + "/" + str(self.seite) + "/* " + devicepath + self.picpath
					os.system(CpString)
					self.checkmain_jpg(self.picpath) # pruefe ob es ein jpg ist
				else:
					self.seite = self.seite - 1

				self.download = 0 # keine Bilder online laden
				curpage = self.seite

				if self.picpath == "mypic":
					print "[Picasa] in der Next Aufruf MyPic"
					self.MyPic_now()
				if self.picpath == "otherpic":
					print "[Picasa] in der Next Aufruf otherMyPic"
					self.otherMyPic_select()

			if page == "prev":
				page = "none"
				self.seite = self.seite - 1
				self.curPath = devicepath + self.picpath + "/" + str(self.seite)
				if os.path.exists(self.curPath) is True:
					# die vorherigen 12 Bilder ins View Verzeichnis kopieren
					CpString = "cp -f " + devicepath + self.picpath + "/" + str(self.seite) + "/* " + devicepath + self.picpath
					os.system(CpString)
					self.checkmain_jpg(self.picpath) # pruefe ob es ein jpg ist
				else:
					self.seite = self.seite + 1

				curpage = self.seite
				self.download = 0 # keine Bilder online laden

				if self.picpath == "mypic":
					print "[Picasa] in der Next Aufruf MyPic"
					self.MyPic_now()
				if self.picpath == "otherpic":
					print "[Picasa] in der Next Aufruf otherMyPic"
					self.otherMyPic_select()
		else:
				self.download = 1 # Bilder online laden

#------------------------------------------------------------------------------------------
	def LoadMainPic(self,url,counter):
		# lade die Vorschaubilder und lege sie ab
		devicepath = config.plugins.picasa.Device.value
		self.previewPath = devicepath + self.outpath + "/pic_" + str(counter) + ".jpg"
		h = urllib.urlretrieve(url, self.previewPath)

#------------------------------------------------------------------------------------------
	def LoadMainPicBig(self,url,counter):
		# lade die groessen Bilder und lege sie ab
		devicepath = config.plugins.picasa.Device.value
		h = urllib.urlretrieve(url, devicepath + "mainpicBig/pic_" + str(counter) + ".jpg")

#------------------------------------------------------------------------------------------
	def checkmain_jpg(self, path):
		# the first two bytes FF and D8 mark a jpeg file
		devicepath = config.plugins.picasa.Device.value
		self.picpath = path
		x = 0
		while x < 12:
			x = x + 1
			self.filelist = devicepath + self.picpath + "/pic_" + str(x) + ".jpg"
			print "[Picasa] check Main-JPG " + str(x)

			data = open(self.filelist, "r+")
			data.seek(1)
			byte1 = data.read(1)  # 216 D8
			byte2 = data.read(1)  # 255 FF
			data.close()
			if ord(byte1) != 216 or ord(byte2) != 255:
				print "[Picasa] Bildfehler, wird korregiert"
				CpString = "cp -f /usr/lib/enigma2/python/Plugins/Extensions/Picasa/default/pic_" + str(x) + ".jpg " + devicepath + self.picpath
				#print CpString
				os.system(CpString)

#------------------------------------------------------------------------------------------
	def PicDownloadmain(self):
		global box
		devicepath = config.plugins.picasa.Device.value
		path = devicepath + "Slideshow/"
		print "[Picasa] PicDownloadmain Path=" + path
		#config.plugins.mc_pp.lastDir.save
		if os.path.exists(devicepath + "Slideshow") is False:
			os.system("mkdir -p " + devicepath + "Slideshow")
		else:
			os.system("rm " + path + "*")

		self.outpath = "mainpic"

		self.pixel = config.plugins.picasa.max_picpixel.value

		picmax = 12
		picdef = config.plugins.picasa.max_otherpic.value
		x = 0
		picnr = 0
		seite = 0
		seitenr = 0
		prenr = "a"
		maxseite = config.plugins.picasa.max_otherpic.value
		maxseite = 1

		while x < maxseite:
			x = x + 1
			if os.path.exists(devicepath + self.outpath) is True:
				#print "[Picasa] Path=" + devicepath + self.outpath + "/"
				picnr = 0
				seite = seite + 1

				while picnr < picmax:
					picnr = picnr + 1
					seitenr = seitenr + 1
					if box <> "dm8000":
						evfd.getInstance().vfd_write_string("Picture " + str(picnr))

					sourcepath = devicepath + self.outpath + "/" + "/pic_" + str(picnr) + ".lnk"
					if fileExists(sourcepath):
						CpString = "sed -e 's:s144-c:s" + self.pixel +":g' -i " + sourcepath
						os.system(CpString)
						file = open(sourcepath, "r")
						BigUrl = file.readline().strip()
						print "[Picasa] BigUrl" + BigUrl
						file.close()
						if seitenr == 10:
							prenr = "b"
						if seitenr == 20:
							prenr = "c"
						if seitenr == 10:
							prenr = "d"
						if seitenr == 30:
							prenr = "e"
						if seitenr == 40:
							prenr = "f"
						if seitenr == 50:
							prenr = "g"
						if seitenr == 60:
							prenr = "h"
						if seitenr == 70:
							prenr = "i"
						h = urllib.urlretrieve(BigUrl, devicepath + "Slideshow/pic_" + prenr + str(seitenr) + ".jpg")

#------------------------------------------------------------------------------------------
#------------------------------ Picasa Eigene Fotos ---------------------------------------
#------------------------------------------------------------------------------------------

class PicasaMyPic(Screen):
	devicepath = config.plugins.picasa.Device.value
	
	skin = """
			<screen name="PicasaMySkin" position="{picasa.pos}" size="{picasa.size}" title="Picasa" backgroundColor="#000000" >
				<widget name="Pic1a" position="{pic1a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic2a" position="{pic2a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic3a" position="{pic3a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic4a" position="{pic4a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic5a" position="{pic5a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic6a" position="{pic6a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic7a" position="{pic7a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic8a" position="{pic8a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic9a" position="{pic9a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic10a" position="{pic10a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic11a" position="{pic11a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="Pic12a" position="{pic12a.pos}" zPosition="2" size="149,25" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Picasa/green-big.png" alphatest="on" />
				<widget name="MyPic1" position="{mypic1.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_1.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic2" position="{mypic2.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_2.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic3" position="{mypic3.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_3.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic4" position="{mypic4.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_4.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic5" position="{mypic5.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_5.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic6" position="{mypic6.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_6.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic7" position="{mypic7.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_7.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic8" position="{mypic8.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_8.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic9" position="{mypic9.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_9.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic10" position="{mypic10.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_10.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic11" position="{mypic11.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_11.jpg" transparent="1" alphatest="on" />
				<widget name="MyPic12" position="{mypic12.pos}" zPosition="6" size="144,144" pixmap="{dev}/pic_12.jpg" transparent="1" alphatest="on" />
				<ePixmap pixmap="skin_default/buttons/button_red.png" position="30,495" size="15,16" alphatest="on" />
				<ePixmap pixmap="skin_default/buttons/button_green.png" position="160,495" size="15,16" alphatest="on" />
				<ePixmap pixmap="skin_default/buttons/button_blue.png" position="360,495" size="15,16" alphatest="on" />
				<widget source="key_red" render="Label" position="50,490" zPosition="1" size="350,25" font="Regular;22" halign="left" transparent="1" />
				<widget source="key_green" render="Label" position="180,490" zPosition="1" size="250,25" font="Regular;22" halign="left" transparent="1" />
				<widget source="key_yellow" render="Label" position="380,490" zPosition="1" size="450,25" font="Regular;22" halign="left"  transparent="1" />
				<widget source="key_blue" render="Label" position="550,490" zPosition="1" size="450,25" font="Regular;22" halign="left"  transparent="1" />
				<widget source="Seitenzeile" render="Label" position="585,525" size="95,23" foregroundColor="#ff3030" font="Regular;20" transparent="1"/>
			</screen>"""

	def __init__(self, session, download, Fokus, smaxpage, spage):
		self.session = session
		global curpage
		global maxpage
		global loadpicnow
		#self.maxpage = smaxpage
		self.page = spage

		#switch automatic to current skin
		current_w = getDesktop(0).size().width()
		current_h = getDesktop(0).size().height()
		print "[Picasa] DESKTOPsize is",current_w,current_h

		# define the start koordinates and size
		if current_w == 1280:
				size_w = 700
				size_h = 550
		else:
				size_w = 700
				size_h = 550

		offsety = config.plugins.picasa.max_offsety.value
		pos_w = (current_w - size_w)/2
		pos_h = (current_h - size_h)/2 + offsety

		# calculate Skin koordinates
		font = "Regular;18"
		green_pos = 20
		blue_pos = 225
		green2_pos = 20
		blue2_pos = 225

		offset = 30
		offsett = 0

		pic1posl = 10 + offset
		pic1post = 10 + offsett
		pic1aposl = 6 + offset
		pic1apost = 144 + offsett
		pic2posl = 170 + offset
		pic2post = 10 + offsett
		pic2aposl = 166 + offset
		pic2apost = 144 + offsett
		pic3posl = 330 + offset
		pic3post = 10 + offsett
		pic3aposl = 326 + offset
		pic3apost = 144 + offsett
		pic4posl = 490 + offset
		pic4post = 10 + offsett
		pic4aposl = 486 + offset
		pic4apost = 144 + offsett
		pic5posl = 10 + offset
		pic5post = 170 + offsett
		pic5aposl = 6 + offset
		pic5apost = 304 + offsett

		pic6posl = 170 + offset
		pic6post = 170 + offsett
		pic6aposl = 166 + offset
		pic6apost = 304 + offsett

		pic7posl = 330 + offset
		pic7post = 170 + offsett
		pic7aposl = 326 + offset
		pic7apost = 304 + offsett

		pic8posl = 490 + offset
		pic8post = 170 + offsett
		pic8aposl = 486 + offset
		pic8apost = 304 + offsett

		pic9posl = 10 + offset
		pic9post = 330 + offsett
		pic9aposl = 6 + offset
		pic9apost = 464 + offsett

		pic10posl = 170 + offset
		pic10post = 330 + offsett
		pic10aposl = 166 + offset
		pic10apost = 464 + offsett

		pic11posl = 330 + offset
		pic11post = 330 + offsett
		pic11aposl = 326 + offset
		pic11apost = 464 + offsett

		pic12posl = 490 + offset
		pic12post = 330 + offsett
		pic12aposl = 486 + offset
		pic12apost = 464 + offsett

		# set Skinvariables
		devicepath = config.plugins.picasa.Device.value

		self.focus = Fokus
		if self.focus == 1:  # MainPic
				self.outpath = "mainpic"
		if self.focus == 2:  # MyPic
				self.outpath = "mypic"
		if self.focus == 3:  # MyPic
				self.outpath = "otherpic"
		self.newpath = devicepath + self.outpath

		self.dict = {
				'dev': self.newpath,
				'font': font,
				'picasa.size': "%i,%i"%(size_w,size_h),
				'picasa.pos': "%i,%i"%(pos_w,pos_h),
				'green.pos': "%i,5"%(green_pos),
				'blue.pos': "%i,5"%(blue_pos),
				'green2.pos': "%i,5"%(green2_pos),
				'blue2.pos': "%i,5"%(blue2_pos),

				'mypic1.pos': "%i,%i"%(pic1posl+8,pic1post+38),
				'mypic2.pos': "%i,%i"%(pic2posl+8,pic2post+38),
				'mypic3.pos': "%i,%i"%(pic3posl+8,pic3post+38),
				'mypic4.pos': "%i,%i"%(pic4posl+8,pic4post+38),
				'mypic5.pos': "%i,%i"%(pic5posl+8,pic5post+38),
				'mypic6.pos': "%i,%i"%(pic6posl+8,pic6post+38),
				'mypic7.pos': "%i,%i"%(pic7posl+8,pic7post+38),
				'mypic8.pos': "%i,%i"%(pic8posl+8,pic8post+38),
				'mypic9.pos': "%i,%i"%(pic9posl+8,pic9post+38),
				'mypic10.pos': "%i,%i"%(pic10posl+8,pic10post+38),
				'mypic11.pos': "%i,%i"%(pic11posl+8,pic11post+38),
				'mypic12.pos': "%i,%i"%(pic12posl+8,pic12post+38),

				'pic1a.pos': "%i,%i"%(pic1aposl,pic1apost),
				'pic2a.pos': "%i,%i"%(pic2aposl,pic2apost),
				'pic3a.pos': "%i,%i"%(pic3aposl,pic3apost),
				'pic4a.pos': "%i,%i"%(pic4aposl,pic4apost),
				'pic5a.pos': "%i,%i"%(pic5aposl,pic5apost),
				'pic6a.pos': "%i,%i"%(pic6aposl,pic6apost),
				'pic7a.pos': "%i,%i"%(pic7aposl,pic7apost),
				'pic8a.pos': "%i,%i"%(pic8aposl,pic8apost),
				'pic9a.pos': "%i,%i"%(pic9aposl,pic9apost),
				'pic10a.pos': "%i,%i"%(pic10aposl,pic10apost),
				'pic11a.pos': "%i,%i"%(pic11aposl,pic11apost),
				'pic12a.pos': "%i,%i"%(pic12aposl,pic12apost),
				}

		self.skin = applySkinVars(PicasaMyPic.skin,self.dict)
		Screen.__init__(self, session)
		self.onShown.append(self.setWindowTitle)

		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions", "MovieSelectionActions", "MenuActions", "MoviePlayerActions", "InfobarChannelSelection", "ChannelSelectBaseActions", "NumberActions"],
		{
			"cancel": self.close,
			"red": self.close,
			"left": self.left2,
			"right": self.right2,
			"up": self.up2,
			"down": self.down2,
			"green": self.PicDownload,
			"blue": self.SlideShow,
			"zapUp": self.nextPage,
			"zapDown": self.prevPage,
			"ok": self.loadPicture2
		}, -2)
		#	"green": self.MyPic,

		self["MyPic1"] = Pixmap()
		self["MyPic2"] = Pixmap()
		self["MyPic3"] = Pixmap()
		self["MyPic4"] = Pixmap()
		self["MyPic5"] = Pixmap()
		self["MyPic6"] = Pixmap()
		self["MyPic7"] = Pixmap()
		self["MyPic8"] = Pixmap()
		self["MyPic9"] = Pixmap()
		self["MyPic10"] = Pixmap()
		self["MyPic11"] = Pixmap()
		self["MyPic12"] = Pixmap()

		self["Pic1a"] = Pixmap()
		self["Pic1a"].show()
		self["Pic2a"] = Pixmap()
		self["Pic2a"].hide()
		self["Pic3a"] = Pixmap()
		self["Pic3a"].hide()
		self["Pic4a"] = Pixmap()
		self["Pic4a"].hide()
		self["Pic5a"] = Pixmap()
		self["Pic5a"].hide()
		self["Pic6a"] = Pixmap()
		self["Pic6a"].hide()
		self["Pic7a"] = Pixmap()
		self["Pic7a"].hide()
		self["Pic8a"] = Pixmap()
		self["Pic8a"].hide()
		self["Pic9a"] = Pixmap()
		self["Pic9a"].hide()
		self["Pic10a"] = Pixmap()
		self["Pic10a"].hide()
		self["Pic11a"] = Pixmap()
		self["Pic11a"].hide()
		self["Pic12a"] = Pixmap()
		self["Pic12a"].hide()

		self["key_red"] = StaticText(_("return"))
		self["key_green"] = StaticText(_("Download"))
		self["key_yellow"] = StaticText(_("SlideShow"))
		self["key_blue"] = StaticText(_("Page=CH +/-"))
		self["Seitenzeile"] = StaticText()

		self.focus = Fokus
		self.pic = 1

		print "[Picas MyPic Fokus] " + str(Fokus) + " download " + str(download)
		#self.focus = 2   # 1 = MainPic, 2 = MyPic, 3 = otherPic
		if self.focus == 1:  # MainPic
				self.outpath = "mainpic"
		if self.focus == 2:  # MyPic
				self.outpath = "mypic"
		if self.focus == 3:  # otherPic
				self.outpath = "otherpic"

		print "[Picasa MyPic] download=" + str(download)
		if download == 1 and self.focus == 2:
			print "[Picasa] Call self.MyPic"
			self.MyPic()
			self.onShown.append(self.setWindowTitle)
		if download == 1 and self.focus == 3:
			print "[Picasa] Call self.OtherPic"
		#	#self.OtherPic()


		self["Seitenzeile"].text = _("Seite:") + str(curpage) + "/" + str(maxpage)

#------------------------------------------------------------------------------------------
	def MyPic(self):
		global selLink
		global maxpage
		global loadpicnow
		global box

		devicepath = config.plugins.picasa.Device.value
		self.focus = 2
		#url = "http://picasaweb.google.com/113655494029816075097/AAF?authkey=Gv1sRgCKifw7rNts75Zg#"
		url = selLink
		ret = system("checknet picasaweb.google.com")
		bild = 0

		if box <> "dm8000":
			evfd.getInstance().vfd_write_string("downloading... ")

		# starten mit der Ansicht "eigene Fotos"
		if ret == 0:
			try:
				h = urllib.urlretrieve(url, "/usr/lib/enigma2/python/Plugins/Extensions/Picasa/private.info")
			except:
				pass

		else:
			print "picasaweb.google.com eigene Bilder nicht erreichbar"
			session.open(MessageBox, _("picasaweb.google.com is unreachable."), type = MessageBox.TYPE_INFO, timeout = 10)

		if self.focus == 1:  # MainPic
				self.outpath = "mainpic"
				fread = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/public.info", "r" )
		else:  # MyPic
				self.outpath = "mypic"
				fread = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/private.info", "r" )

		if os.path.exists(devicepath + self.outpath) is False:
			os.system("mkdir -p " + devicepath + self.outpath)

		print "[Picasa MyPic] Seite wurde geladen"
		f = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/private.info", "r" )
		bild = 0

		if box <> "dm8000":
			evfd.getInstance().vfd_write_string("search link... ")

		for line in f:
			zeile = line.lstrip()
			# suche Link aus der Seite fuer die Thumbnails
			found_link = zeile.find('<div><a href="https://picasaweb.google.com/lh/photo')

			if found_link != -1:
				found_link = zeile.find('<img src="http://')  # <img src="http://lh
				LinkThumb = zeile[found_link:-2]

				fwrite = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/private.txt", "w" )
				fwrite.write(LinkThumb + '\n')
				fwrite.close()

		# SED ist beim Filtern schneller
		os.system("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/private.sh")

		self.page = 1
		self.totalpath = devicepath + self.outpath + "/" + str(self.page)
		CpString = "mkdir -p " + self.totalpath
		os.system(CpString)
		total = 0
		fread = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/private.txt", "r" )
		for line in fread:
			zeile = line.lstrip()
			found_link = zeile.find('<img src="')
			found_jpg = zeile.find('s128')

			if found_link != -1 and found_jpg != -1:
				bild = bild + 1
				total = total + 1
				if box <> "dm8000":
					evfd.getInstance().vfd_write_string("Picture " + str(total))

				if bild >= 13:  # naechste Seite anlegen
					self.page = self.page + 1
					bild = 1
					self.totalpath = devicepath + self.outpath + "/" + str(self.page)
					CpString = "mkdir -p " + self.totalpath
					os.system(CpString)

				LinkThumb = zeile[found_link + 10:-2]
				print "[Picasa]" + LinkThumb

				fwrite = open(devicepath + self.outpath + "/" + str(self.page) + "/pic_" + str(bild) + ".lnk", "w" )
				fwrite.write(LinkThumb + '\n')
				fwrite.close()

				if loadpicnow == 0:
						self.LoadMainPic2(LinkThumb,bild)

		maxpage = self.page
		#self.maxpage = self.page
		print "[Picasa] maxpage in der loop=" + str(maxpage)

		# Dummy Bilder ins View Verzeichnis kopieren wenn nicht 12 erreicht werden
		CpString = "cp -f /usr/lib/enigma2/python/Plugins/Extensions/Picasa/default/* " + devicepath + self.outpath
		os.system(CpString)

		# die ersten 12 Bilder ins View Verzeichnis kopieren
		CpString = "cp -f " + devicepath + self.outpath + "/1/* " + devicepath + self.outpath
		os.system(CpString)


#------------------------------------------------------------------------------------------
	def setWindowTitle(self):
		global selLink
		print str(self.focus) + " " + selLink

# es gibt diese 2 Varianten
# http://picasaweb.google.com/data/feed/base/all?alt=rss&kind=photo&access=public&tag=air&filter=1&hl=de
# http://picasaweb.google.com/data/feed/base/all?alt=rss&kind=photo&access=public&filter=1&q=corvette&hl=de

		# den Titel fuer die Ueberschrift herausfiltern
		if self.focus == 3:
				titel = findall(r'tag=(.*?)\&filter',selLink)
				titel = str(titel)
				titel = titel.replace("['","").replace("']","")
				if titel == "" or titel == "[]":
						titel = findall(r'filter=1\&q=(.*?)\&hl',selLink)
						titel = str(titel)
						titel = titel.replace("['","").replace("']","")

				self.setTitle(_("Picasa Webalbum:  ") + titel)
		else:
				titel = findall(r'picasaweb.google.com/.*?/(.*?)\?authkey',selLink)
				titel = str(titel)
				titel = titel.replace("['","").replace("']","")
				self.setTitle(_("Picasa eigene Fotos:  ") + titel)

#------------------------------------------------------------------------------------------
	def PicDownload(self):
		global box
		devicepath = config.plugins.picasa.Device.value
		path = devicepath + "Slideshow/"
		#config.plugins.mc_pp.lastDir.save
		if os.path.exists(devicepath + "Slideshow") is False:
			os.system("mkdir -p " + devicepath + "Slideshow")
		else:
			os.system("rm " + path + "*")

		# tausche die Aufloesung und erhoehe sie
		if self.focus == 2:  # myPic
				self.outpath = "mypic"
		if self.focus == 3:  # OtherPic
				self.outpath = "otherpic"

		self.pixel = config.plugins.picasa.max_picpixel.value

		picmax = 12
		picdef = config.plugins.picasa.max_otherpic.value
		x = 0
		picnr = 0
		seite = 0
		seitenr = 0
		prenr = "a"
		maxseite = config.plugins.picasa.max_otherpic.value

		# im Ram auf 1 Seite begrenzen
		if devicepath == "/usr/lib/enigma2/python/Plugins/Extensions/Picasa/":
			maxseite = 1

		while x < maxseite:
		#while x < picdef:
			x = x + 1
			if os.path.exists(devicepath + self.outpath + "/" + str(x)) is True:
				picnr = 0
				seite = seite + 1

				while picnr < picmax:
					picnr = picnr + 1
					seitenr = seitenr + 1
					if box <> "dm8000":
						evfd.getInstance().vfd_write_string("Picture " + str(picnr))

					sourcepath = devicepath + self.outpath + "/" + str(x) + "/pic_" + str(picnr) + ".lnk"
					if fileExists(sourcepath):
						CpString = "sed -e 's:s128:s" + self.pixel +":g' -i " + sourcepath
						os.system(CpString)
						file = open(sourcepath, "r")
						BigUrl = file.readline().strip()
						print "[Picasa] BigUrl" + BigUrl
						file.close()
						if seitenr == 10:
							prenr = "b"
						if seitenr == 20:
							prenr = "c"
						if seitenr == 10:
							prenr = "d"
						if seitenr == 30:
							prenr = "e"
						if seitenr == 40:
							prenr = "f"
						if seitenr == 50:
							prenr = "g"
						if seitenr == 60:
							prenr = "h"
						if seitenr == 70:
							prenr = "i"
						h = urllib.urlretrieve(BigUrl, devicepath + "Slideshow/pic_" + prenr + str(seitenr) + ".jpg")

		#self.filelist = FileList(path, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
		#self["filelist"] = self.filelist
		#self.session.open(PicShow, self.filelist.getFileList(), 0, path, True)

#------------------------------------------------------------------------------------------
	def SlideShow(self):
		sourcepath = devicepath + self.outpath + "/1/pic_1.lnk"
		print "[Picasa] SlideShow " + sourcepath
		if fileExists(sourcepath):
			self.PicDownload()
		self.session.open(View_Slideshow, 0, True)

#------------------------------------------------------------------------------------------
	def loadPicture2(self):
		devicepath = config.plugins.picasa.Device.value
		path = devicepath + "mainpicBig/"
		if os.path.exists(devicepath + "mainpicBig") is False:
			os.system("mkdir -p " + devicepath + "mainpicBig")
		else:
			os.system("rm " + path + "*")

		# tausche die Aufloesung und erhoehe sie
		if self.focus == 2:  # myPic
				self.outpath = "mypic"
		if self.focus == 3:  # OtherPic
				self.outpath = "otherpic"

		self.pixel = config.plugins.picasa.max_picpixel.value
		CpString = "sed -e 's:s128:s" + self.pixel +":g' -i " + devicepath + self.outpath + "/pic_" + str(self.pic) + ".lnk"
		os.system(CpString)


		if fileExists(devicepath + self.outpath + "/pic_" + str(self.pic) + ".lnk"):
			file = open(devicepath + self.outpath + "/pic_" + str(self.pic) + ".lnk", "r")
			BigUrl = file.readline().strip()
			print "[Picasa] BigUrl" + BigUrl
			file.close()

			self.LoadMainPicBig2(BigUrl, self.pic)
			filelist = FileList(path, matchingPattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)")
			filelist = devicepath + "mainpicBig/pic_" + str(self.pic) + ".jpg"
			self.session.open(PicView, filelist, 0, path, False)

#------------------------------------------------------------------------------------------
	def down2(self):
		if self.pic <= 8:
			self.pic = self.pic + 4
			self.setPicture2(self.pic)

#------------------------------------------------------------------------------------------
	def up2(self):
		if self.pic >= 5:
			self.pic = self.pic - 4
			self.setPicture2(self.pic)

#------------------------------------------------------------------------------------------
	def left2(self):
		if self.pic > 1:
			self.pic = self.pic - 1
			self.setPicture2(self.pic)

#------------------------------------------------------------------------------------------
	def right2(self):
		if self.pic < 12:
			self.pic = self.pic + 1
			self.setPicture2(self.pic)

#------------------------------------------------------------------------------------------
	def prevPage(self):
		global page
		print "[Picasa] nextPage"
		page = "next"
		self.close()

#------------------------------------------------------------------------------------------
	def nextPage(self):
		global page
		print "[Picasa] prevPage"
		page = "prev"
		self.close()

#------------------------------------------------------------------------------------------
	def setPicture2(self,counter):
		self["Pic1a"].hide()
		self["Pic2a"].hide()
		self["Pic3a"].hide()
		self["Pic4a"].hide()
		self["Pic5a"].hide()
		self["Pic6a"].hide()
		self["Pic7a"].hide()
		self["Pic8a"].hide()
		self["Pic9a"].hide()
		self["Pic10a"].hide()
		self["Pic11a"].hide()
		self["Pic12a"].hide()

		if counter == 1:
			self["Pic1a"].show()
		if counter == 2:
			self["Pic2a"].show()
		if counter == 3:
			self["Pic3a"].show()
		if counter == 4:
			self["Pic4a"].show()
		if counter == 5:
			self["Pic5a"].show()
		if counter == 6:
			self["Pic6a"].show()
		if counter == 7:
			self["Pic7a"].show()
		if counter == 8:
			self["Pic8a"].show()
		if counter == 9:
			self["Pic9a"].show()
		if counter == 10:
			self["Pic10a"].show()
		if counter == 11:
			self["Pic11a"].show()
		if counter == 12:
			self["Pic12a"].show()

#------------------------------------------------------------------------------------------
	def LoadMainPic2(self,url,counter):
		# lade die Vorschaubilder und lege sie ab
 		devicepath = config.plugins.picasa.Device.value
		self.previewPath =devicepath + self.outpath + "/" + str(self.page) + "/pic_" + str(counter) + ".jpg"
		h = urllib.urlretrieve(url, self.previewPath)

#------------------------------------------------------------------------------------------
	def LoadMainPicBig2(self,url,counter):
		# lade die Vorschaubilder und lege sie ab
		h = urllib.urlretrieve(url, devicepath + "mainpicBig/pic_" + str(counter) + ".jpg")

#------------------------------------------------------------------------------------------
#-------------------------------- Picasa Settings -----------------------------------------
#------------------------------------------------------------------------------------------
class PicSetup(Screen):
	skin = """<screen position="center,center" size="480,360" title="Picasa Settings" backgroundColor="#000000" >
		<widget name="liste" position="5,5" size="470,350" scrollbarMode="showOnDemand" />
		<eLabel backgroundColor="red" position="28,350" size="140,3" zPosition="2"/>
		<eLabel backgroundColor="green" position="228,350" size="140,3" zPosition="2"/>
		<widget name="key_red" position="28,318" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
		<widget name="key_green" position="228,318" zPosition="3" size="140,40" font="Regular;19" valign="center" halign="center" transparent="1" />
	</screen>"""

	def __init__(self, session):
		self.skin = PicSetup.skin
		Screen.__init__(self, session)
		self["key_red"] = Button(_("Back"))
		self["key_green"] = Button(_("Save"))
		self["actions"] = NumberActionMap(["SetupActions", "ColorActions"],
		{
			"ok": self.save,
			"green": self.save,
			"cancel": self.close,
			"red": 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
		}, -3)
		self.list = []
		self["liste"] = ConfigList(self.list)

		self.list.append(getConfigListEntry(_("Picture Y moving"), config.plugins.picasa.max_offsety))
		self.list.append(getConfigListEntry(_("max. Picture Sites"), config.plugins.picasa.max_otherpic))
		self.list.append(getConfigListEntry(_("Picture Size"), config.plugins.picasa.max_picpixel))
		self.list.append(getConfigListEntry(_("delete cached Pictures"), config.plugins.picasa.remove))
		self.list.append(getConfigListEntry(_("Picture Cache"), config.plugins.picasa.Device))
		self.list.append(getConfigListEntry(_("Scaling Mode"), config.plugins.picasa.resize))
		self.list.append(getConfigListEntry(_("Frame size in full view"), config.plugins.picasa.framesize))
		self.list.append(getConfigListEntry(_("backgroundcolor"), config.plugins.picasa.bgcolor))
		self.list.append(getConfigListEntry(_("Textcolor"), config.plugins.picasa.textcolor))
		self.list.append(getConfigListEntry(_("SlideTime"), config.plugins.picasa.slidetime))
		self.list.append(getConfigListEntry(_("Show Infoline"), config.plugins.picasa.infoline))
		self.list.append(getConfigListEntry(_("slide picture in loop"), config.plugins.picasa.loop))

	def save(self):
		for x in self["liste"].list:
				x[1].save()
		config.save()
		self.close()

	def keyLeft(self):
		self["liste"].handleKey(KEY_LEFT)
	def keyRight(self):
		self["liste"].handleKey(KEY_RIGHT)
	def keyNumber(self, number):
		self["liste"].handleKey(KEY_0 + number)


#------------------------------------------------------------------------------------------
#-------------------------------- Webalbum selektieren ------------------------------------
#------------------------------------------------------------------------------------------
class SelectGroup(Screen):
	skin = """<screen position="center,center" size="440,350" title="Group Selection" >
		<widget name="filelist" transparent="1" position="50,35" zPosition="2" size="340,260" scrollbarMode="showOnDemand" enableWrapAround="1" />
		<widget name="currentfolder" zPosition="5" transparent="1" halign="left" position="15,15" size="590,20" font="Regular;16" foregroundColor="#f0f0f0" />
		<eLabel backgroundColor="red" position="3,340" size="115,3" zPosition="5"/>
		<eLabel backgroundColor="green" position="155,340" size="115,3" zPosition="5"/>
		<eLabel backgroundColor="yellow" position="307,340" size="115,3" zPosition="5"/>
		<widget name="key_red" position="3,306" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
		<widget name="key_green" position="155,306" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
		<widget name="key_yellow" position="307,306" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
		</screen>"""

	def __init__(self, session, fokus):
		self.session = session

		Screen.__init__(self, session)
		self.skin =  SelectGroup.skin
		self.onShown.append(self.setWindowTitle)

		self["currentfolder"] = Label("")
		self["key_green"] = Label(_("Select"))

		if fokus == 3:
			self["key_red"] = Label(_("Search"))
		else:
			self["key_red"] = Label(_("      "))

		self["key_yellow"] = Label(_("Delete"))
		self.curfavfolder = -1

		self["actions"] = ActionMap(["OkCancelActions", "DirectionActions", "ColorActions"],
		{
			"cancel": self.Exit,
			"ok": self.KeyOk,
			"left": self.leftUp,
			"right": self.rightDown,
			"up": self.up,
			"down": self.down,
			"green": self.KeyOk,
			"red": self.virtualKB,
			"yellow": self.DelFile,
		}, -4)


		if fokus == 2:
			self.link = "Link"
		if fokus == 3:
			self.link = "Linkother"

		print "[Picasa Fokus] " + str(fokus)

		currDir = "/usr/lib/enigma2/python/Plugins/Extensions/Picasa/" + self.link
		if not os.path.exists(currDir):
			os.system("mkdir -p /usr/lib/enigma2/python/Plugins/Extensions/Picasa/" + self.link)

		#self["currentfolder"].setText(str(currDir))
		self.filelist = FileList(currDir, showDirectories = False, matchingPattern = "^.*", useServiceRef = False)
		self["filelist"] = self.filelist

	def setWindowTitle(self):
		self.setTitle(_("Auswahl - Webalbum"))

	def up(self):
		self["filelist"].up()

	def down(self):
		self["filelist"].down()

	def leftUp(self):
		self["filelist"].pageUp()

	def rightDown(self):
		self["filelist"].pageDown()

	def DelFile(self):
		global selLink
		filename = self["filelist"].getFilename()
		os.system("rm -r /usr/lib/enigma2/python/Plugins/Extensions/Picasa/" + self.link + "/" + filename)
		self.filelist.refresh

	def KeyOk(self):
		global selLink
		filename = self["filelist"].getFilename()
		if self.link == "Link": # nur bei eigenen Bildern speichern
			fwrite = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/curpic", "w" )
			fwrite.write(filename)
			fwrite.close()

		file = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/" + self.link + "/" + filename, "r")
		selLink = file.readline().strip()
		print selLink
		file.close()
		self.close()

	def Exit(self):
		global selLink
		selLink = "stop"
		self.close()

	def virtualKB(self):
		if self.link == "Linkother": # nur bei oeffentliche Pic suche erlauben
			self.search = ""
			self.session.openWithCallback(lambda x : self.VirtualKeyBoardCallback(x, ''), VirtualKeyBoard, title = (_("Thema of Foto search")), text = self.search)


	def VirtualKeyBoardCallback(self, callback = None, entry = None):
		global selLink
		print "[Virtual KB] callback", callback

		if callback is not None and len(callback):
			print "[Picasa] virtual callback",str(callback)
			selLink = "http://picasaweb.google.com/data/feed/base/all?alt=rss&kind=photo&access=public&tag="+ callback + "&filter=1&hl=de"
			self.fname = callback

			message = "%s %s" % (self.fname, _("\n\nSoll diese Suche als Link gespeichert werden?"))
			self.session.openWithCallback(self.save_now, MessageBox, message, MessageBox.TYPE_YESNO)
			self.close()

	def save_now(self, answer):
		global selLink
		if answer == True:
				file = open("/usr/lib/enigma2/python/Plugins/Extensions/Picasa/Linkother/" + self.fname, "w")
				file.write(selLink)
				file.close()



#------------------------------------------------------------------------------------------
#-------------------------- Bildbetrachter der Grossbilder --------------------------------
#------------------------------------------------------------------------------------------
class PicView(Screen):
	def __init__(self, session, filelist, index, path, startslide):
		self.session = session
		self.bgcolor = config.plugins.picasa.bgcolor.value
		space = config.plugins.picasa.framesize.value
		size_w = getDesktop(0).size().width()
		size_h = getDesktop(0).size().height()

		#self.skindir = config.plugins.mc_globalsettings.currentskin.path.value.split('/')[0]
		self.skindir = "/tmp"
		self.skin = "<screen position=\"0,0\" size=\"" + str(size_w) + "," + str(size_h) + "\" > \
			<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\" /></screen>"

		Screen.__init__(self, session)
		self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "DirectionActions", "MovieSelectionActions", "MenuActions", "SetupActions"],
		{
			"cancel": self.Exit,
		}, -1)

		self["pic"] = Pixmap()
		self.filelist = filelist
		self.old_index = 0
		self.lastindex = index
		self.currPic = []
		self.shownow = True
		self.dirlistcount = 0
		self.index = 0
		self.picload = ePicLoad()
		self.picload.PictureData.get().append(self.finish_decode)
		self.onLayoutFinish.append(self.setPicloadConf)
		self.startslide = startslide

	def setPicloadConf(self):
		sc = getScale()
		self.picload.setPara([self["pic"].instance.size().width(), self["pic"].instance.size().height(), sc[0], sc[1], 0, int(config.plugins.picasa.resize.value), self.bgcolor])
		self.start_decode()

	def ShowPicture(self):
		if self.shownow and len(self.currPic):
			self.shownow = False
			self["pic"].instance.setPixmap(self.currPic[0].__deref__())

	def finish_decode(self, picInfo=""):
		ptr = self.picload.getData()
		if ptr != None:
			self.currPic = []
			self.currPic.append(ptr)
			self.ShowPicture()

	def start_decode(self):
		self.picload.startDecode(self.filelist)

	def Exit(self):
		del self.picload
		self.close(self.lastindex + self.dirlistcount)

#------------------------------------------------------------------------------------------
class View_Slideshow(Screen, InfoBarAspectSelection, InfoBarResolutionSelection):
	def __init__(self, session, pindex, startslide):

		print "SlideShow is running ......."
		self.textcolor = config.plugins.picasa.textcolor.value
		self.bgcolor = config.plugins.picasa.bgcolor.value
		space = config.plugins.picasa.framesize.value
		size_w = getDesktop(0).size().width()
		size_h = getDesktop(0).size().height()

		self.skindir = "/tmp"
		self.skin = "<screen position=\"0,0\" size=\"" + str(size_w) + "," + str(size_h) + "\" flags=\"wfNoBorder\" > \
			<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+10) + "\" size=\"20,20\" zPosition=\"2\" pixmap=\"/usr/lib/enigma2/python/Plugins/Extensions/Picasa/default/record.png\" alphatest=\"on\" /> \
			<widget name=\"play_icon\" position=\""+ str(space+25) + "," + str(space+10) + "\" size=\"20,20\" zPosition=\"2\" pixmap=\"/usr/lib/enigma2/python/Plugins/Extensions/Picasa/default/ico_mp_play.png\"  alphatest=\"on\" /> \
			<widget name=\"file\" position=\""+ str(space+45) + "," + str(space+8) + "\" 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)

		InfoBarAspectSelection.__init__(self)
		self["actions"] = ActionMap(["OkCancelActions", "ColorActions", "DirectionActions", "MovieSelectionActions"],
		{
			"cancel": self.Exit,
			"yellow": self.PlayPause,
			"blue": self.sleepTimer,
			"left": self.prevPic,
			"right": self.nextPic,
		}, -1)
		self["point"] = Pixmap()
		self["pic"] = Pixmap()
		self["play_icon"] = Pixmap()
		self["file"] = Label(_("please wait, loading picture..."))
		self.old_index = 0
		self.picfilelist = []
		self.lastindex = pindex
		self.currPic = []
		self.shownow = True
		self.dirlistcount = 0

		devicepath = config.plugins.picasa.Device.value
		currDir = devicepath + "Slideshow/"
		self.filelist = FileList(currDir, showDirectories = False, matchingPattern = "^.*\.(jpg)", useServiceRef = False)

		for x in self.filelist.getFileList():
				if x[0][1] == False:
					self.picfilelist.append(currDir + x[0][0])
				else:
					self.dirlistcount += 1

		self.maxentry = len(self.picfilelist)-1
		self.pindex = pindex - self.dirlistcount
		if self.pindex < 0:
			self.pindex = 0
		self.picload = ePicLoad()
		self.picload.PictureData.get().append(self.finish_decode)
		self.slideTimer = eTimer()
		self.slideTimer.callback.append(self.slidePic)
		if self.maxentry >= 0:
			self.onLayoutFinish.append(self.setPicloadConf)
		if startslide == True:
			self.PlayPause();

	def setPicloadConf(self):
		sc = getScale()
		self.picload.setPara([self["pic"].instance.size().width(), self["pic"].instance.size().height(), sc[0], sc[1], 0, int(config.plugins.picasa.resize.value), self.bgcolor])
		self["play_icon"].hide()
		if config.plugins.picasa.infoline.value == False:
			self["file"].hide()
		self.start_decode()

	def ShowPicture(self):
		if self.shownow and len(self.currPic):
			self.shownow = False
			self["file"].setText(self.currPic[0])
			self.lastindex = self.currPic[1]
			self["pic"].instance.setPixmap(self.currPic[2].__deref__())
			self.currPic = []
			self.next()
			self.start_decode()

	def finish_decode(self, picInfo=""):
		self["point"].hide()
		ptr = self.picload.getData()
		if ptr != None:
			text = ""
			try:
				text = picInfo.split('\n',1)
				text = "(" + str(self.pindex+1) + "/" + str(self.maxentry+1) + ") " + text[0].split('/')[-1]
			except:
				pass
			self.currPic = []
			self.currPic.append(text)
			self.currPic.append(self.pindex)
			self.currPic.append(ptr)
			self.ShowPicture()

	def start_decode(self):
		self.picload.startDecode(self.picfilelist[self.pindex])
		self["point"].show()

	def next(self):
		self.pindex += 1
		if self.pindex > self.maxentry:
			self.pindex = 0

	def prev(self):
		self.pindex -= 1
		if self.pindex < 0:
			self.pindex = self.maxentry

	def slidePic(self):
		print "[Picasa] slide to next Picture index=" + str(self.lastindex)
		if config.plugins.picasa.loop.value==False and self.lastindex == self.maxentry:
			self.PlayPause()
		self.shownow = True
		self.ShowPicture()

	def PlayPause(self):
		if self.slideTimer.isActive():
			self.slideTimer.stop()
			self["play_icon"].hide()
		else:
			self.slideTimer.start(config.plugins.picasa.slidetime.value*1000)
			self["play_icon"].show()
			self.nextPic()

	def prevPic(self):
		self.currPic = []
		self.pindex = self.lastindex
		self.prev()
		self.start_decode()
		self.shownow = True

	def nextPic(self):
		self.shownow = True
		self.ShowPicture()

	def Exit(self):
		del self.picload
		self.close(self.lastindex + self.dirlistcount)

	def sleepTimer(self):
		from Screens.SleepTimerEdit import SleepTimerEdit
		self.session.open(SleepTimerEdit)


#------------------------------------------------------------------------------------------
#-----------------------Haupt Programm ----------------------------------------------------
#------------------------------------------------------------------------------------------
def main(session, **kwargs):

	url = "http://picasaweb.google.com/lh/explore#"
	ret = system("checknet picasaweb.google.com")
	bild = 0

	# starten mit der Ansicht "empfohlene Fotos"
	if ret == 0:
		h = urllib.urlretrieve(url, "/usr/lib/enigma2/python/Plugins/Extensions/Picasa/public.info")
		session.open(PicasaMain)
	else:
		print "picasaweb.google.com nicht erreichbar"
		session.open(MessageBox, _("picasaweb.google.com is unreachable."), type = MessageBox.TYPE_INFO, timeout = 10)

#------------------------------------------------------------------------------------------
def Plugins(**kwargs):
	return [
		PluginDescriptor(name = "Picasa", description = "Bilder von Picasa ansehen, auch eigene", icon="Picasa.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc = main),
		PluginDescriptor(name = "Picasa", description = "Bilder von Picasa ansehen, auch eigene", icon="Picasa.png", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)]
