示例#1
0
	def runMenuEntry(self):
		selection = self["filelist"].getSelection()
		if selection is None:
			return
		elif selection[1] == True: # isDir
			if selection[0] is not None and self.filelist.getCurrentDirectory() is not None and \
					len(selection[0]) > len(self.filelist.getCurrentDirectory()) or self.LastFolderSelected == None:
				self.LastFolderSelected = selection[0]
				self["filelist"].changeDir(selection[0], "FakeFolderName")
			else:
				print "Folder Down"
				self["filelist"].changeDir(selection[0], self.LastFolderSelected)
			return
		else: #file selected
			d = self.filelist.getCurrentDirectory()
			if d is None:
				d=""
			elif not d.endswith('/'):
				d +='/'
			f = self.filelist.getFilename()
			printDEBUG("self.selectFile>> " + d + f)
			if path.exists(self.UserSkin_Selections_dir + f):
				remove(self.UserSkin_Selections_dir + f)
			else:
				try:
					symlink(d + f, self.UserSkin_Selections_dir + f)
				except:
					system('ln -sf %s %s' %(d + f,self.UserSkin_Selections_dir + f))
			self.__refreshList()
示例#2
0
    def doExportAction(self, what):
      
        printDEBUG('doExportAction')
        
        def SaveWidget(WidgetFile = None):
            if WidgetFile is not None:
                if not WidgetFile.endswith('.xml'):
                    WidgetFile += '.xml'
                WidgetPathName = path.dirname(self.ScreenFile).replace('allScreens','allWidgets')
                if not path.exists(WidgetPathName):
                    mkdir(WidgetPathName)
                printDEBUG("Writing %s/%s" % (WidgetPathName,WidgetFile))
                with open("%s/%s" % (WidgetPathName, WidgetFile), "w") as f:
                    f.write(ET.tostring(self.root[0][self["menu"].getIndex()]))

        myText=self.root[0][what].tag
        if 'name' in self.root[0][what].attrib:
            myText += '_' + self.root[0][what].attrib['name']
        if 'text' in self.root[0][what].attrib:
            myText += '_' + self.root[0][what].attrib['text']
        if 'render' in self.root[0][what].attrib:
            myText += '_' + self.root[0][what].attrib['render']
        if 'source' in self.root[0][what].attrib:
            myText += '_' + self.root[0][what].attrib['source']

        from Screens.VirtualKeyBoard import VirtualKeyBoard
        self.session.openWithCallback(SaveWidget, VirtualKeyBoard, title=(_("Enter filename")), text = myText.replace('.','-'))
示例#3
0
 def setWigetPixMapPictureInScale(self, myIndex, myWidget = "WigetPixMapPictureInScale", myWidgetFile = 'widgetmarker.png' ):
     if not 'position' in self.root[self.currentScreenID][myIndex].attrib:
         self[myWidget].hide()
         return
     elif not 'size' in self.root[self.currentScreenID][myIndex].attrib:
         self[myWidget].hide()
         return
     elif not 'pixmap' in self.root[self.currentScreenID][myIndex].attrib:
         if path.exists("%sAtileHDpics/%s" % (SkinPath, myWidgetFile) ):
             pic = "%sAtileHDpics/%s" % (SkinPath, myWidgetFile) 
         else:
             pic = "%spic/edit/%s" % (PluginPath, myWidgetFile)
     else:
         pic = resolveFilename(SCOPE_SKIN, self.root[self.currentScreenID][myIndex].attrib['pixmap'] )
     #position="x,y" size="x,y"
     printDEBUG("setWigetPixMapPictureInScale, pic=%s" % pic)
     
     WidgetPosition=self.root[self.currentScreenID][myIndex].attrib['position'].split(',')
     WidgetSize=self.root[self.currentScreenID][myIndex].attrib['size'].split(',')
     if WidgetPosition[0] == 'center':
         WidgetPosition[0] = self.currentWidth/2 - int(WidgetSize[0])/2
     if WidgetPosition[1] == 'center':
         WidgetPosition[1] = self.currentHeight/2 - int(WidgetSize[1])/2
     if path.exists(pic):
         self[myWidget].instance.resize(eSize(int(int(WidgetSize[0])*self.WidgetPreviewScale) , int(int(WidgetSize[1])*self.WidgetPreviewScale) ))
         self[myWidget].instance.setScale(1)
         self[myWidget].instance.setPixmapFromFile(pic)
         self[myWidget].show()
         
         self[myWidget].instance.move(ePoint(int(int(WidgetPosition[0])*self.WidgetPreviewScale) + self.WidgetPreviewX , \
                                                                                 int(int(WidgetPosition[1])*self.WidgetPreviewScale + self.WidgetPreviewY)))
     else:
         self[myWidget].hide()
示例#4
0
    def update_user_skin(self):
        #print "[UserSkin} update_user_skin"
        if self.isVTI == True: #jesli mamy VTI, to nie musimy robic pliku
            return

        user_skin_file=resolveFilename(SCOPE_CONFIG, 'skin_user' + self.currentSkin + '.xml')
        if path.exists(user_skin_file):
            remove(user_skin_file)
        if self.myUserSkin_active.value:
            printDEBUG("update_user_skin.self.myUserSkin_active.value")
            user_skin = ""
            if path.exists(self.skin_base_dir + 'skin_user_header.xml'):
                user_skin = user_skin + self.readXMLfile(self.skin_base_dir + 'skin_user_header.xml' , 'fonts')
            if path.exists(self.skin_base_dir + 'skin_user_colors.xml'):
                user_skin = user_skin + self.readXMLfile(self.skin_base_dir + 'skin_user_colors.xml' , 'ALLSECTIONS')
            if path.exists(self.skin_base_dir + 'skin_user_window.xml'):
                user_skin = user_skin + self.readXMLfile(self.skin_base_dir + 'skin_user_window.xml' , 'ALLSECTIONS')
            if path.exists(self.skin_base_dir + 'mySkin'):
                for f in listdir(self.skin_base_dir + "mySkin/"):
                    user_skin = user_skin + self.readXMLfile(self.skin_base_dir + "mySkin/" + f, 'screen')
            if user_skin != '':
                user_skin = "<skin>\n" + user_skin
                user_skin = user_skin + "</skin>\n"
                with open (user_skin_file, "w") as myFile:
                    printDEBUG("update_user_skin.self.myUserSkin_active.value write myFile")
                    myFile.write(user_skin)
                    myFile.flush()
                    myFile.close()
            #checking if all renderers are in system
            self.checkComponent(user_skin, 'render' , resolveFilename(SCOPE_PLUGINS, '../Components/Renderer/') )
            self.checkComponent(user_skin, 'pixmap' , resolveFilename(SCOPE_SKIN, '') )
示例#5
0
	def readXMLfile(self, XMLfilename, XMLsection): #sections:ALLSECTIONS|fonts|
		myPath=path.realpath(XMLfilename)
		if not path.exists(myPath):
			remove(XMLfilename)
			return ''
		filecontent = ''
		if XMLsection == 'ALLSECTIONS':
			sectionmarker = True
		else:
			sectionmarker = False
		with open (XMLfilename, "r") as myFile:
			lineNo = 0
			for line in myFile:
				lineNo += 1
				if line.find('<skin>') != -1 or line.find('</skin>') != -1:
					continue
				if line.find('<%s' % XMLsection) != -1 and sectionmarker == False:
					printDEBUG('<%s marker found at %s' % (XMLsection, lineNo))
					sectionmarker = True
				if line.find('</%s>' %XMLsection) != -1 and sectionmarker == True:
					printDEBUG('</%s> marker found at %s' % (XMLsection, lineNo))
					sectionmarker = False
					filecontent = filecontent + line
				if sectionmarker == True:
					filecontent = filecontent + line
			myFile.close()
		return filecontent
示例#6
0
	def keyBlue(self):
		selection = self["filelist"].getSelection()
		if selection is None or selection[1] == True: # isDir
			return
		if path.exists(self.filelist.getCurrentDirectory() + '/' + self.filelist.getFilename()):
			import xml.etree.cElementTree as ET
			root = ET.parse(self.filelist.getCurrentDirectory() + '/' + self.filelist.getFilename()).getroot()
			NumberOfScreens = len(root.findall('screen'))
			if NumberOfScreens == 1:
				self.keyBlueRet( ('First screen',1) )
			elif NumberOfScreens > 1:
				from Screens.ChoiceBox import ChoiceBox
				NumberOfChilds = len(root.findall('*'))
				currentScreenID = 0
				childID = 0
				screensList = []
				while childID < NumberOfChilds:
					if root[childID].tag == 'screen':
						try: 
							currentScreenID += 1
							screensList.append((root[childID].attrib['name'], currentScreenID))
						except Exception, e:
							printDEBUG("Exception:" + str(e))
					childID += 1
				if len(screensList) > 0:
					self.session.openWithCallback(self.keyBlueRet, ChoiceBox, title = _("Select screen:"), list = screensList)
示例#7
0
 def setWigetPixMapPictureInScale(self, myIndex, myWidget = "WigetPixMapPictureInScale", myWidgetFile = 'widgetmarker.png' ):
     if not 'position' in self.root[self.currentScreenID][myIndex].attrib:
         self[myWidget].hide()
         return
     elif not 'size' in self.root[self.currentScreenID][myIndex].attrib:
         self[myWidget].hide()
         return
     elif not 'pixmap' in self.root[self.currentScreenID][myIndex].attrib:
         if path.exists("%sUserSkinpics/%s" % (SkinPath, myWidgetFile) ):
             pic = "%sUserSkinpics/%s" % (SkinPath, myWidgetFile) 
         else:
             pic = "%spic/edit/%s" % (PluginPath, myWidgetFile)
     else:
         pic = resolveFilename(SCOPE_SKIN, self.root[self.currentScreenID][myIndex].attrib['pixmap'] )
     #position="x,y" size="x,y"
     printDEBUG("setWigetPixMapPictureInScale, pic=%s" % pic)
     
     WidgetPosition=self.root[self.currentScreenID][myIndex].attrib['position'].split(',')
     WidgetSize=self.root[self.currentScreenID][myIndex].attrib['size'].split(',')
     if WidgetPosition[0] == 'center':
         WidgetPosition[0] = self.currentWidth/2 - int(WidgetSize[0])/2
     if WidgetPosition[1] == 'center':
         WidgetPosition[1] = self.currentHeight/2 - int(WidgetSize[1])/2
     if path.exists(pic):
         self[myWidget].instance.resize(eSize(int(int(WidgetSize[0])*self.WidgetPreviewScale) , int(int(WidgetSize[1])*self.WidgetPreviewScale) ))
         self[myWidget].instance.setScale(1)
         self[myWidget].instance.setPixmapFromFile(pic)
         self[myWidget].show()
         
         self[myWidget].instance.move(ePoint(int(int(WidgetPosition[0])*self.WidgetPreviewScale) + self.WidgetPreviewX , \
                                                                                 int(int(WidgetPosition[1])*self.WidgetPreviewScale + self.WidgetPreviewY)))
     else:
         self[myWidget].hide()
示例#8
0
	def restartGUI(self):
	  
		def restartGUIcb(answer):
			if answer is True:
				self.session.open(TryQuitMainloop, 3)
			else:
				self.close()

		def restartNotOKcb(answer):
			if answer is True:
				self.session.open(TryQuitMainloop, 3)
			else:
				user_skin_file=resolveFilename(SCOPE_CONFIG, 'skin_user' + self.currentSkin + '.xml')
				if path.exists(user_skin_file):
					remove(user_skin_file)
				self.close()

		myMessage = ''
		if self.LackOfFile != '':
			printDEBUG("missing components: %s" % self.LackOfFile)
			myMessage += _("Missing components found: %s\n\n") % self.LackOfFile
			myMessage += _("Skin will NOT work properly and GS expected!!!\n\n")
			myMessage += _("Are you sure you want to use it?")
			restartbox = self.session.openWithCallback(restartNotOKcb,MessageBox, myMessage, MessageBox.TYPE_YESNO, default = False)
		else:
			myMessage += _("Restart GUI now?")
			restartbox = self.session.openWithCallback(restartGUIcb,MessageBox, myMessage, MessageBox.TYPE_YESNO, default = False)
		restartbox.setTitle(_("Message"))
示例#9
0
 def buildList(self, xml):
     if DBG: printDEBUG('MSNWeatherSearchResultList:buildList(%s)' % xml,'>>>')
     root = cet_fromstring(xml)
     searchlocation = ""
     weatherlocationcode = ""
     weatherSearchFullName = ""
     geolatitude = ""
     geolongitude = ""
     list = []
     for childs in root:
         if childs.tag == "weather":
             weatherlocationcode = childs.attrib.get("weatherlocationcode").encode("utf-8", 'ignore')
             searchlocation = childs.attrib.get("weatherlocationname").encode("utf-8", 'ignore')
             weatherSearchFullName = childs.attrib.get("weatherfullname").encode("utf-8", 'ignore')
             geolatitude = childs.attrib.get("lat").encode("utf-8", 'ignore')
             geolongitude = childs.attrib.get("long").encode("utf-8", 'ignore')
             res = [
                 (weatherlocationcode, searchlocation, weatherSearchFullName, geolatitude, geolongitude),
                 (eListboxPythonMultiContent.TYPE_TEXT, self.DimText0[0], self.DimText0[1], self.DimText0[2], self.DimText0[3], self.DimText0[4], RT_HALIGN_LEFT|RT_VALIGN_CENTER, searchlocation),
                 (eListboxPythonMultiContent.TYPE_TEXT, self.DimText1[0], self.DimText1[1], self.DimText1[2], self.DimText1[3], self.DimText1[4], RT_HALIGN_LEFT|RT_VALIGN_CENTER, '%s , (lat=%s, long=%s)' % (weatherSearchFullName, geolatitude, geolongitude)),
             ]
             list.append(res)
     self.list = list
     self.l.setList(list)
     self.moveToIndex(0)
示例#10
0
    def doExportAction(self, what):

        printDEBUG('doExportAction')

        def SaveWidget(WidgetFile=None):
            if WidgetFile is not None:
                if not WidgetFile.endswith('.xml'):
                    WidgetFile += '.xml'
                WidgetPathName = path.dirname(self.ScreenFile).replace(
                    'allScreens', 'allWidgets')
                if not path.exists(WidgetPathName):
                    mkdir(WidgetPathName)
                printDEBUG("Writing %s/%s" % (WidgetPathName, WidgetFile))
                with open("%s/%s" % (WidgetPathName, WidgetFile), "w") as f:
                    f.write(ET.tostring(self.root[0][self["menu"].getIndex()]))

        myText = self.root[0][what].tag
        if 'name' in self.root[0][what].attrib:
            myText += '_' + self.root[0][what].attrib['name']
        if 'text' in self.root[0][what].attrib:
            myText += '_' + self.root[0][what].attrib['text']
        if 'render' in self.root[0][what].attrib:
            myText += '_' + self.root[0][what].attrib['render']
        if 'source' in self.root[0][what].attrib:
            myText += '_' + self.root[0][what].attrib['source']

        from Screens.VirtualKeyBoard import VirtualKeyBoard
        self.session.openWithCallback(SaveWidget,
                                      VirtualKeyBoard,
                                      title=(_("Enter filename")),
                                      text=myText.replace('.', '-'))
示例#11
0
    def checkComponent(self, myContent, look4Component , myPath): #look4Component=render|
        def updateLackOfFile(name, mySeparator =', '):
            printDEBUG("Missing component found:%s\n" % name)
            if self.LackOfFile == '':
                self.LackOfFile = name
            else:
                self.LackOfFile += mySeparator + name
            
        r=re.findall( r' %s="([a-zA-Z0-9_/\.]+)" ' % look4Component , myContent )
        r=list(set(r)) #remove duplicates, no need to check for the same component several times

        printDEBUG("Found %s:\n" % (look4Component))
        print r
        if r:
            for myComponent in set(r):
                #print" [UserSkin] checks if %s exists" % myComponent
                if look4Component == 'pixmap':
                    #printDEBUG("%s\n%s\n" % (myComponent,myPath + myComponent))
                    if myComponent.startswith('/'):
                        if not path.exists(myComponent):
                            updateLackOfFile(myComponent, '\n')
                    else:
                        if not path.exists(myPath + myComponent):
                            updateLackOfFile(myComponent)
                else:
                    if not path.exists(myPath + myComponent + ".pyo") and not path.exists(myPath + myComponent + ".py"):
                        updateLackOfFile(myComponent)
        return
示例#12
0
 def keyOk(self):
     if self["config"].isChanged() or self.updateEntries == True:
         printDEBUG("[UserSkin:keyOk] self.myUserSkin_font.value=" + self.myUserSkin_font.value)
         printDEBUG("[UserSkin:keyOk] self.myUserSkin_style.value=" + self.myUserSkin_style.value)
         printDEBUG("[UserSkin:keyOk] self.myUserSkin_bar.value=" + self.myUserSkin_bar.value)
         for x in self["config"].list:
             x[1].save()
         configfile.save()
         #Zmieniamy katalog na ten wtyczki
         chdir(self.skin_base_dir)
         #FONTS
         if path.exists(self.user_font_file):
             remove(self.user_font_file)
         elif path.islink(self.user_font_file):
             remove(self.user_font_file)
         if path.exists('allFonts/' + self.myUserSkin_font.value):
             symlink('allFonts/' + self.myUserSkin_font.value, self.user_font_file)
         #COLORS
         if path.exists(self.color_file):
             remove(self.color_file)
         elif path.islink(self.color_file):
             remove(self.color_file)
         if path.exists("allColors/" + self.myUserSkin_style.value):
             symlink("allColors/" + self.myUserSkin_style.value, self.color_file)
         #SELECTOR
         if path.exists(self.user_bar_link):
             remove(self.user_bar_link)
         elif path.islink(self.user_bar_link):
             remove(self.user_bar_link)
         if path.exists("allBars/" + self.myUserSkin_bar.value):
             symlink("allBars/" + self.myUserSkin_bar.value , self.user_bar_link)
             sourcePath = path.join(self.skin_base_dir , self.user_bar_link)
             destFolder = self.myUserSkin_bar.value.split(".", 1)[1]
             destPath = path.join(self.skin_base_dir , destFolder)
             printDEBUG("[UserSkin:keyOk]cp -fr %s %s" % (sourcePath,destPath))
             with open("/proc/sys/vm/drop_caches", "w") as f: f.write("1\n")
             printDEBUG("[UserSkin:keyOk]cp -fr %s/* %s/" % (sourcePath,destPath))
             system("cp -fr %s/* %s/" %(sourcePath,destPath)) #dla bezpieczenstwa, obsluguje zgrabnie overwrite ;)
         #SCREENS
         if self.myUserSkin_active.value:
             if not path.exists("mySkin") and path.exists("UserSkin_Selections"):
                     symlink("UserSkin_Selections","mySkin")
         else:
             if path.exists("mySkin"):
                 if path.exists("UserSkin_Selections"):
                     if path.islink("mySkin"):
                         remove("mySkin")
                     else:
                         shutil.rmtree("mySkin")
                 else:
                     rename("mySkin", "UserSkin_Selections")
         self.update_user_skin()
         self.restartGUI()
     else:
         if self.changed_screens:
             self.update_user_skin()
             self.restartGUI()
         else:
             self.close()
示例#13
0
def main(session, **kwargs):
    printDEBUG("Opening UserSkin%s menu ..." % UserSkinInfo)
    skinHistory, skinUpdate, skinAddOns, skinComponents = readSkinConfig()
    if skinHistory or skinUpdate or skinAddOns or skinComponents:
        session.open(UserSkin_Menu)
    else:
        from skinconfig import UserSkin_Config
        session.open(UserSkin_Config)
示例#14
0
 def cancelConfirm(self, result):
     if result is None or result is False:
         printDEBUG("Cancel confirmed.")
     else:
         printDEBUG("Cancel confirmed. Config changes will be lost.")
         for x in self["config"].list:
             x[1].cancel()
         self.close()
示例#15
0
 def doDeleteAction(self, what):
     childAttributes=''
     for key, value in self.root[0][what].items():
         childAttributes += key + '=' + value + ' '
     printDEBUG('doDeleteAction <%s %s>\n' % (self.root[0][what].tag,childAttributes))
     self.root[0].remove(self.root[0][what])
         
     self.createWidgetsList()
示例#16
0
 def restartGUI(self):
     myMessage = ''
     if self.BrakPlikuInfo != '':
         printDEBUG("missing components: %s" % self.BrakPlikuInfo)
         myMessage += _("Missing components found: %s\n\n") % self.BrakPlikuInfo
     myMessage += _("Restart necessary, restart GUI now?")
     restartbox = self.session.openWithCallback(self.restartGUIcb,MessageBox, myMessage, MessageBox.TYPE_YESNO)
     restartbox.setTitle(_("Message"))
示例#17
0
 def doDeleteAction(self, what):
     childAttributes=''
     for key, value in self.root[0][what].items():
         childAttributes += key + '=' + value + ' '
     printDEBUG('doDeleteAction <%s %s>\n' % (self.root[0][what].tag,childAttributes))
     self.root[0].remove(self.root[0][what])
         
     self.createWidgetsList()
示例#18
0
		def keyYellowRet(result):
			if result is None or result is False:
				printDEBUG("Deletion cancelled.")
			else:
				remove(self.filelist.getCurrentDirectory() + "/" + self.filelist.getFilename())
				pic = self.filelist.getFilename().replace(".xml", ".png")
				if path.exists(SkinPath + "allPreviews/preview_" + pic):
					remove(SkinPath + "allPreviews/preview_" + pic)
				self.__refreshList()
示例#19
0
 def restartGUI(self):
     myMessage = ''
     if self.LackOfFile != '':
         printDEBUG("missing components: %s" % self.LackOfFile)
         myMessage += _("Missing components found: %s\n\n") % self.LackOfFile
         myMessage += _("Skin will NOT work properly!!!\n\n")
     myMessage += _("Restart necessary, restart GUI now?")
     restartbox = self.session.openWithCallback(self.restartGUIcb,MessageBox, myMessage, MessageBox.TYPE_YESNO, default = False)
     restartbox.setTitle(_("Message"))
示例#20
0
 def SaveWidget(WidgetFile = None):
     if WidgetFile is not None:
         if not WidgetFile.endswith('.xml'):
             WidgetFile += '.xml'
         WidgetPathName = path.dirname(self.ScreenFile).replace('allScreens','allWidgets')
         if not path.exists(WidgetPathName):
             mkdir(WidgetPathName)
         printDEBUG("Writing %s/%s" % (WidgetPathName,WidgetFile))
         with open("%s/%s" % (WidgetPathName, WidgetFile), "w") as f:
             f.write(ET.tostring(self.root[0][self["menu"].getIndex()]))
示例#21
0
 def SaveWidget(WidgetFile = None):
     if WidgetFile is not None:
         if not WidgetFile.endswith('.xml'):
             WidgetFile += '.xml'
         WidgetPathName = path.dirname(self.ScreenFile).replace('allScreens','allWidgets')
         if not path.exists(WidgetPathName):
             mkdir(WidgetPathName)
         printDEBUG("Writing %s/%s" % (WidgetPathName,WidgetFile))
         with open("%s/%s" % (WidgetPathName, WidgetFile), "w") as f:
             f.write(ET.tostring(self.root[0][self["menu"].getIndex()]))
示例#22
0
 def keyYellowRet(self, result):
     if result is None or result is False:
         printDEBUG("Deletion cancelled.")
     else:
         sel = self["menu"].getCurrent()
         remove((self.skin_base_dir + self.allScreens_dir + "/" + sel[0]))
         pic = sel[0].replace(".xml", ".png")
         if path.exists(self.skin_base_dir + "allPreviews/preview_" + pic):
             remove(self.skin_base_dir + "allPreviews/preview_" + pic)
         self.createMenuList()
示例#23
0
 def getCurrentBar(self):
     myfile = self.skin_base_dir + self.user_bar_link
     printDEBUG("[UserSkin:getCurrentBar] myfile='%s'" % myfile)
     if not path.exists(myfile):
         return (self.default_user_bar_link, self.default_user_bar_link)
     else:
         filename = path.realpath(myfile)
         filename = path.basename(filename)
         friendly_name = filename.replace("bar_", "").replace("_", " ")
         return (filename, friendly_name)
示例#24
0
 def buildListEntry(self, description, image, optionname):
         try:
                 printDEBUG("Trying to load %sUserSkinpics/%s" % (SkinPath,image))
                 pixmap = LoadPixmap("%sUserSkinpics/%s" % (SkinPath,image))
         except:
                 pixmap = None
         if pixmap == None:
                 printDEBUG("%spic/%s" % (PluginPath, image))
                 pixmap = LoadPixmap(cached=True, path="%spic/%s" % (PluginPath, image));
         return((pixmap, description, optionname))
示例#25
0
	def __init__(self, session, ScreenFile, whichScreen = 1):
		printDEBUG("!!!!!!!!!! PREVIEW screen %s, %s" %(whichScreen,ScreenFile))
		self.ScreenFile = ScreenFile
		self.skin = self.readSkin(whichScreen)
		self.session = session
		Screen.__init__(self, session)

		self["actions"]  = ActionMap(["UserSkinPreviewSkinActions"], {
			"keyCancel": self.close,
			"keyOK": self.close,
			}, -1)
示例#26
0
 def xmlCallback(self, xmlstring):
     if DBG: printDEBUG('MSNWeatherPluginEntryConfigScreen().xmlCallback >>>')
     if xmlstring:
         errormessage = ""
         root = cet_fromstring(xmlstring)
         for childs in root:
             if childs.tag == "weather" and childs.attrib.has_key("errormessage"):
                 errormessage = childs.attrib.get("errormessage").encode("utf-8", 'ignore')
                 break
         if len(errormessage) !=0:
             self.session.open(MessageBox, errormessage, MessageBox.TYPE_ERROR)                    
         else:
             self.session.openWithCallback(self.searchCallback, MSNWeatherSearch, xmlstring)
示例#27
0
	def changedEntry(self):
		self.updateEntries = True
		printDEBUG("[UserSkin:changedEntry]")
		if self["config"].getCurrent() == self.set_color:
			self.setPicture(self.myUserSkin_style.value)
		elif self["config"].getCurrent() == self.set_font:
			self.setPicture(self.myUserSkin_font.value)
		elif self["config"].getCurrent() == self.set_bar:
			self.setPicture(self.myUserSkin_bar.value)
		elif self["config"].getCurrent() == self.set_myatile:
			if self.myUserSkin_active.value:
				self["key_yellow"].setText(_("User skins"))
			else:
				self["key_yellow"].setText("")
示例#28
0
 def setPicture(self, f):
     preview = self.skin_base_dir + "allPreviews/"
     if not path.exists(preview):
         mkdir(preview)
     pic = f[:-4]
     if f.startswith("bar_"):
         pic = f + ".png"
     printDEBUG("[UserSkin:setPicture] pic =" + pic + '[jpg|png]')
     previewJPG = preview + "preview_" + picJPG
     if path.exists(preview + "preview_" + pic + '.jpg'):
         self.UpdatePreviewPicture(preview + "preview_" + pic + '.jpg')
     if path.exists(preview + "preview_" + pic + '.png'):
         self.UpdatePreviewPicture(preview + "preview_" + pic + '.png')
     else:
         self["Picture"].hide()
示例#29
0
		def getScreenNames(XMLfilename):
			myPath=path.realpath(XMLfilename)
			if not path.exists(myPath):
				system('rm -f %s' % XMLfilename) 
				return []
			filecontent = ''
			screenNames = []
			with open (XMLfilename, "r") as myFile:
				for line in myFile:
					filecontent = filecontent + line
					if line.find('<screen') >= 0:
						screenNames.append(line.strip())
						printDEBUG("getScreenNames found %s" % line.strip())
				myFile.close()
			return screenNames
示例#30
0
 def setPicture(self, f):
     pic = f.replace(".xml", ".png")
     if f.startswith("bar_"):
         pic = f + ".png"
     printDEBUG("[UserSkin:setPicture] pic =" + pic)
     preview = self.skin_base_dir + "allPreviews/"
     if not path.exists(preview):
         mkdir(preview)
     preview = preview + "preview_" + pic
     if path.exists(preview):
         self["Picture"].instance.setScale(1)
         self["Picture"].instance.setPixmapFromFile(preview)
         self["Picture"].show()
     else:
         self["Picture"].hide()
示例#31
0
 def getPossibleBars(self):
     #printDEBUG("[UserSkin:getPossibleBars] >>>")
     bar_list = []
     if not listdir(self.skin_base_dir + "allBars/"):
         bar_list.append(self.defaults)
         return bar_list
 
     for f in sorted(listdir(self.skin_base_dir + "allBars/"), key=str.lower):
         fpath = path.join(self.skin_base_dir + "allBars/", f)
         printDEBUG("[UserSkin:getPossibleBars] f='%s'" % f)
         if path.isdir(fpath) and f.startswith('bar_') and f.find('.') > 1:
             friendly_name = f.split(".", 1)[0]
             friendly_name = friendly_name.replace("bar_", "").replace("_", " ")
             bar_list.append((f, _(friendly_name)))
     return bar_list
示例#32
0
    def __init__(self, session):
        Screen.__init__(self, session)
        self.title = _("MSN weather NP @j00zek %s" % Version)
        self.setTitle(_("MSN weather NP @j00zek %s") % Version)
        self["actions"] = ActionMap(
            ["MSNweatherNP"], {
                "keyCancel": self.close,
                "keyMenu": self.config,
                "keyRight": self.nextItem,
                "keyLeft": self.previousItem,
                "keyRed": self.keyRed,
                "keyGreen": self.keyGreen,
                "keyYellow": self.keyYellow,
                "keyBlue": self.keyBlue,
            }, -1)

        self["statustext"] = StaticText()
        self["currenticon"] = j00zekAccellPixmap()
        self["caption"] = StaticText()
        self["currentTemp"] = StaticText()
        self["condition"] = StaticText()
        self["wind_condition"] = StaticText()
        self["humidity"] = StaticText()
        self["observationtime"] = StaticText()
        self["observationpoint"] = StaticText()
        self["feelsliketemp"] = StaticText()

        self["key_red"] = Label(config.plugins.WeatherPlugin.AC1inf.value)
        self["key_green"] = Label(config.plugins.WeatherPlugin.AC2inf.value)
        self["key_yellow"] = Label(_("Show Histograms"))
        self["key_blue"] = Label(_("Show Maps"))

        self.weatherPluginEntryIndex = -1
        self.weatherPluginEntry = None
        try:
            config.plugins.WeatherPlugin.currEntry.value = 0
            self.weatherPluginEntryCount = config.plugins.WeatherPlugin.entrycount.value
            if self.weatherPluginEntryCount >= 1:
                self.weatherPluginEntry = config.plugins.WeatherPlugin.Entry[0]
                self.weatherPluginEntryIndex = 1
        except Exception as e:
            printDEBUG('MSNweather.__init__', ' Exception %s' % str(e))

        self.webSite = ""

        self.weatherData = None
        self.onLayoutFinish.append(self.startRun)
        self.onClose.append(self.__onClose)
示例#33
0
 def SaveScreen(ScreenFileName = None):
     if ScreenFileName is not None:
         if not ScreenFileName.endswith('.xml'):
             ScreenFileName += '.xml'
         if not ScreenFileName.startswith('skin_'):
             ScreenFileName = 'skin_' + ScreenFileName
         printDEBUG("Writing %s%s/%s" % (SkinPath, 'allScreens',ScreenFileName))
         
         for skinScreen in root.findall('screen'):
             if 'name' in skinScreen.attrib:
                 if skinScreen.attrib['name'] == self.ScreenSelectedToExport:
                     SkinContent = ET.tostring(skinScreen)
                     break
         with open("%s%s/%s" % (SkinPath, 'allScreens', ScreenFileName), "w") as f:
             f.write('<skin>\n')
             f.write(SkinContent)
             f.write('</skin>\n')
示例#34
0
	def setPicture(self, f):
		if f == '':
			return
		elif f[-4:] == '.xml':
			pic = f[:-4]
		else:
			pic = f
		#check for jpg
		if path.exists(SkinPath + "allPreviews/" + pic + '.jpg'):
			self.UpdatePreviewPicture(SkinPath + "allPreviews/" + pic + '.jpg')
		elif path.exists(SkinPath + "allPreviews/preview_" + pic + '.jpg'):
			self.UpdatePreviewPicture(SkinPath + "allPreviews/preview_" + pic + '.jpg')
		#check for png
		elif path.exists(SkinPath + "allPreviews/" + pic + '.png'):
			self.UpdatePreviewPicture(SkinPath + "allPreviews/" + pic + '.png')
		elif path.exists(SkinPath + "allPreviews/preview_" + pic + '.png'):
			self.UpdatePreviewPicture(SkinPath + "allPreviews/preview_" + pic + '.png')
		else:
			printDEBUG("[UserSkin:setPicture] pic for '%s' not found" % pic )
			self["Picture"].hide()
示例#35
0
 def setPreviewFont(self, myIndex):
     if not 'font' in self.root[self.currentScreenID][myIndex].attrib:
         self["PreviewFont"].setText('')
         return
     #### Now we know we have font, so we can preview it :)
     myfont = self.root[self.currentScreenID][myIndex].attrib['font']
     #print myfont
     try:
         self["PreviewFont"].instance.setFont(gFont(myfont.split(';')[0], int(myfont.split(';')[1])))
     except:
         printDEBUG("Missing font '%s' definition in skin.xml" % self.root[self.currentScreenID][myIndex].attrib['font'])
     if 'text' in self.root[self.currentScreenID][myIndex].attrib:
         self["PreviewFont"].setText('%s' % self.root[self.currentScreenID][myIndex].attrib['text'])
     else:
         self["PreviewFont"].setText(_('Sample Text'))
     if 'foregroundColor' in self.root[self.currentScreenID][myIndex].attrib:
         try:
             self["PreviewFont"].instance.setForegroundColor(parseColor(self.root[self.currentScreenID][myIndex].attrib['foregroundColor']))            
         except:
             printDEBUG("Missing color '%s' definition in skin.xml" % self.root[self.currentScreenID][myIndex].attrib['foregroundColor'])
     else:
         self["PreviewFont"].instance.setForegroundColor(parseColor("#00ffffff"))            
     if 'backgroundColor' in self.root[self.currentScreenID][myIndex].attrib:
         try:
             self["PreviewFont"].instance.setBackgroundColor(parseColor(self.root[self.currentScreenID][myIndex].attrib['backgroundColor']))            
         except:
             printDEBUG("Missing color '%s' definition in skin.xml" % self.root[self.currentScreenID][myIndex].attrib['backgroundColor'])
示例#36
0
 def setPreviewFont(self, myIndex):
     if not 'font' in self.root[self.currentScreenID][myIndex].attrib:
         self["PreviewFont"].setText('')
         return
     #### Now we know we have font, so we can preview it :)
     myfont = self.root[self.currentScreenID][myIndex].attrib['font']
     #print myfont
     try:
         self["PreviewFont"].instance.setFont(gFont(myfont.split(';')[0], int(myfont.split(';')[1])))
     except:
         printDEBUG("Missing font '%s' definition in skin.xml" % self.root[self.currentScreenID][myIndex].attrib['font'])
     if 'text' in self.root[self.currentScreenID][myIndex].attrib:
         self["PreviewFont"].setText('%s' % self.root[self.currentScreenID][myIndex].attrib['text'])
     else:
         self["PreviewFont"].setText(_('Sample Text'))
     if 'foregroundColor' in self.root[self.currentScreenID][myIndex].attrib:
         try:
             self["PreviewFont"].instance.setForegroundColor(parseColor(self.root[self.currentScreenID][myIndex].attrib['foregroundColor']))            
         except:
             printDEBUG("Missing color '%s' definition in skin.xml" % self.root[self.currentScreenID][myIndex].attrib['foregroundColor'])
     else:
         self["PreviewFont"].instance.setForegroundColor(parseColor("#00ffffff"))            
     if 'backgroundColor' in self.root[self.currentScreenID][myIndex].attrib:
         try:
             self["PreviewFont"].instance.setBackgroundColor(parseColor(self.root[self.currentScreenID][myIndex].attrib['backgroundColor']))            
         except:
             printDEBUG("Missing color '%s' definition in skin.xml" % self.root[self.currentScreenID][myIndex].attrib['backgroundColor'])
示例#37
0
    def keyBlue(self):
        import xml.etree.cElementTree as ET
        from Screens.VirtualKeyBoard import VirtualKeyBoard
        
        def SaveScreen(ScreenFileName = None):
            if ScreenFileName is not None:
                if not ScreenFileName.endswith('.xml'):
                    ScreenFileName += '.xml'
                if not ScreenFileName.startswith('skin_'):
                    ScreenFileName = 'skin_' + ScreenFileName
                printDEBUG("Writing %s%s/%s" % (SkinPath, 'allScreens',ScreenFileName))
                
                for skinScreen in root.findall('screen'):
                    if 'name' in skinScreen.attrib:
                        if skinScreen.attrib['name'] == self.ScreenSelectedToExport:
                            SkinContent = ET.tostring(skinScreen)
                            break
                with open("%s%s/%s" % (SkinPath, 'allScreens', ScreenFileName), "w") as f:
                    f.write('<skin>\n')
                    f.write(SkinContent)
                    f.write('</skin>\n')

        def ScreenSelected(ret):
            if ret:
                self.ScreenSelectedToExport = ret[0]
                printDEBUG('Selected: %s' % self.ScreenSelectedToExport)
                self.session.openWithCallback(SaveScreen, VirtualKeyBoard, title=(_("Enter filename")), text = self.ScreenSelectedToExport + '_new')
        
        ScreensList= []
        root = ET.parse(SkinPath + 'skin.xml').getroot()
        for skinScreen in root.findall('screen'):
            if 'name' in skinScreen.attrib:
                printDEBUG('Found in skin.xml: %s' % skinScreen.attrib['name'])
                ScreensList.append((skinScreen.attrib['name'],skinScreen.attrib['name']))
        if len(ScreensList) > 0:
            ScreensList.sort()
            self.session.openWithCallback(ScreenSelected, ChoiceBox, title = _("Select skin to export:"), list = ScreensList)
示例#38
0
    def getWeatherDataCallback(self, result, errortext):
        self["statustext"].text = ""
        if result == getWeather.ERROR:
            if DBG:
                printDEBUG(
                    'MSNWeatherPlugin(Screen)getWeatherDataCallback result == getWeather.ERROR'
                )
            self.error(errortext)
        else:
            if DBG: printDEBUG('getWeatherDataCallback result == %s' % result)
            self["caption"].text = self.weatherData.city
            self.webSite = self.weatherData.url
            #current data
            item = self.weatherData.weatherItems.get('-1', None)
            if item is not None:
                self["currentTemp"].text = "%s°%s" % (
                    item.temperature, self.weatherData.degreetype)
                self["condition"].text = item.skytext
                self["humidity"].text = _("Humidity: %s %%") % item.humidity
                self["wind_condition"].text = item.winddisplay
                c = time.strptime(item.observationtime, "%H:%M:%S")
                self["observationtime"].text = _(
                    "Observation time: %s") % time.strftime("%H:%M", c)
                self["observationpoint"].text = _(
                    "Observation point: %s") % item.observationpoint
                self["feelsliketemp"].text = _(
                    "Feels like %s"
                ) % item.feelslike + "°" + self.weatherData.degreetype
                if DBG:
                    printDEBUG('getWeatherDataCallback item.skytext == %s' %
                               item.skytext)
                self.showIcon(-1, item.iconFilename)

        if WeatherMSNComp is not None:
            if DBG:
                printDEBUG(
                    'getWeatherDataCallback invoking WeatherMSNComp.updateWeather'
                )
            WeatherMSNComp.updateWeather(self.weatherData, result,
                                         errortext)  #update data source
示例#39
0
 def refreshWeatherMSNComp(self, configElement=None):
     if WeatherMSNComp is not None:
         if self.weatherData is not None:
             if DBG:
                 printDEBUG(
                     'refreshWeatherMSNComp is invoking WeatherMSNComp.updateWeather'
                 )
             WeatherMSNComp.updateWeather(self.weatherData, getWeather.OK,
                                          None)  #update data source again
         else:
             if DBG:
                 printDEBUG(
                     'MSNWeatherPlugin(Screen).refreshWeatherMSNComp self.weatherData is None =  no WeatherMSNComp update!!!'
                 )
     else:
         if DBG:
             printDEBUG(
                 'MSNWeatherPlugin(Screen)/refreshWeatherMSNComp WeatherMSNComp is None - nothing to update!!!'
             )
示例#40
0
def main(session, **kwargs):
    printDEBUG("Opening UserSkin%s menu ..." % UserSkinInfo)
    session.open(UserSkin_Menu)
示例#41
0
def main(session, **kwargs):
    printDEBUG("Opening Menu ...")
    session.open(UserSkin_Menu)
示例#42
0
    default=False)
config.plugins.WeatherPlugin.DebugMSNweatherHistograms = ConfigEnableDisable(
    default=False)
config.plugins.WeatherPlugin.DebugMSNweatherMaps = ConfigEnableDisable(
    default=True)

config.plugins.WeatherPlugin.HistoryPeriod = ConfigSelection(choices=[
    ("86400", _("Last 24h")),
    ("43200", _("Last 12h")),
    ("21600", _("Last 6h")),
    ("10800", _("Last 3h")),
    ("3600", _("Last hour")),
],
                                                             default="43200")

printDEBUG('INIT', ' MSNweather NP plugin %s' % Version)
printDEBUG('config.plugins.WeatherPlugin.IconsType = "%s"' %
           config.plugins.WeatherPlugin.IconsType.value)

initConfig()

try:
    from updater import weathermsn
    WeatherMSNComp = weathermsn
    #printDEBUG('WeatherMSNComp initiated invoking getData()')
    #WeatherMSNComp.getData()
except Exception as e:
    WeatherMSNComp = None
    printDEBUG('Exception: %s' % str(e))

示例#43
0
def main(session, **kwargs):
    printDEBUG("Opening Menu ...")
    session.open(AtileHD_Menu)
示例#44
0
    def __init__(self, session, ScreenFile=''):
        Screen.__init__(self, session)
        self.session = session
        #valid ScreenFile is mandatory
        if ScreenFile == '':
            self.close()
            return
        elif not path.exists(ScreenFile):
            self.close()
            return

        self.ScreenFile = ScreenFile
        try:
            self.root = ET.parse(self.ScreenFile).getroot()
            self.myScreenName = self.root.find('screen').attrib['name']
            self.NumberOfScreens = len(self.root.findall('screen'))
            self.NumberOfChilds = len(self.root.findall('*'))
        except:
            printDEBUG("%s -Is NOT proper xml file - END!!!" % self.ScreenFile)
            self.close()
            return
        printDEBUG("%s has been loaded successfully. :)" % self.ScreenFile)
        if self.NumberOfChilds != self.NumberOfScreens:
            iindex = 0
            for child in self.root.findall('*'):
                if child.tag == 'screen':
                    break
                iindex += 1
            self.currentScreenID = iindex

        if self.myScreenName == None:
            myTitle = _("UserSkin %s - EditScreens") % UserSkinInfo
        else:
            if self.NumberOfScreens == 1:
                myTitle = _("UserSkin %s - Edit %s screen") % (
                    UserSkinInfo, self.myScreenName)
            else:
                myTitle = _("UserSkin %s - Edit %s screen (1/%d)") % (
                    UserSkinInfo, self.myScreenName, self.NumberOfScreens)

        self.setTitle(myTitle)

        self["key_red"] = StaticText(_("Exit"))
        self["key_green"] = StaticText("")
        if self.NumberOfScreens == 1:
            self["key_yellow"] = StaticText("")
        else:
            self["key_yellow"] = StaticText(_("Switch screen"))
        self['key_blue'] = StaticText(_('Actions'))
        self["PreviewFont"] = Label()
        self["widgetDetailsTXT"] = Label()

        self["PixMapPreview"] = Pixmap()
        self["SkinPicture"] = Pixmap()
        self["ScreenPixMapPictureInScale"] = Pixmap()
        self["WigetPixMapPictureInScale"] = Pixmap()
        self["WigetPixMapPictureInScale1"] = Pixmap()
        self["WigetPixMapPictureInScale2"] = Pixmap()

        menu_list = []
        self["menu"] = List(menu_list)

        self["shortcuts"] = ActionMap(
            ["UserSkinEditActions"], {
                "ok": self.keyOK,
                "cancel": self.keyExit,
                "red": self.keyExit,
                "green": self.keyGreen,
                "yellow": self.keyYellow,
                "blue": self.keyBlue,
                "keyup": self.channelup,
                "keydown": self.channeldown,
            }, -2)

        self.skin_base_dir = SkinPath
        #self.screen_dir = "allScreens"
        self.allScreens_dir = "allScreens"
        #check if we have preview files
        isPreview = 0
        for xpreview in listdir(SkinPath + "allPreviews/"):
            if len(xpreview) > 4 and xpreview[-4:] == ".png":
                isPreview += 1
            if isPreview >= 2:
                break

        self.elabel_png = LoadPixmap(
            cached=True, path=self.getPicFileNameWithPath("elabel.png"))
        self.epixmap_png = LoadPixmap(
            cached=True, path=self.getPicFileNameWithPath("epixmap.png"))
        self.label_png = LoadPixmap(
            cached=True, path=self.getPicFileNameWithPath("label.png"))
        self.pixmap_png = LoadPixmap(
            cached=True, path=self.getPicFileNameWithPath("pixmap.png"))
        self.widget_png = LoadPixmap(
            cached=True, path=self.getPicFileNameWithPath("widget.png"))

        if not self.selectionChanged in self["menu"].onSelectionChanged:
            self["menu"].onSelectionChanged.append(self.selectionChanged)

        self.onLayoutFinish.append(self.LayoutFinished)
示例#45
0
def main(session, **kwargs):
    printDEBUG("Opening Menu ...")
    session.open(UserSkin_Menu)
示例#46
0
def main(session, **kwargs):
    printDEBUG("Opening UserSkin%s menu ..." % UserSkinInfo)
    session.open(UserSkin_Menu)
示例#47
0
 def keyExitRetSave(self):
     printDEBUG("Writing %s" % self.ScreenFile)
     with open(self.ScreenFile, "w") as f:
         f.write(ET.tostring(self.root, encoding='utf-8'))
     self.close()