Esempio n. 1
0
def getPackageUpdates():
    try:
        updates_available = False
        data = metrixCore.getWeb('http://connect.mymetrix.de/store/api/?q=get.xml.packages&category_id=%', True)
        if not data:
            print '[MyMetrix] Error getting package updates'
        dom = parseString(data)
        for design in dom.getElementsByTagName('entry'):
            item_id = str(design.getAttributeNode('id').nodeValue)
            name = str(design.getAttributeNode('name').nodeValue)
            author = str(design.getAttributeNode('author').nodeValue)
            version = str(design.getAttributeNode('version').nodeValue)
            rating = str(design.getAttributeNode('rating').nodeValue)
            date = str(design.getAttributeNode('date_created').nodeValue)
            item_type = str(design.getAttributeNode('type').nodeValue)
            file_id = str(design.getAttributeNode('file_id').nodeValue)
            file_token = str(design.getAttributeNode('file_token').nodeValue)
            image_id = str(design.getAttributeNode('image_id').nodeValue)
            image_token = str(design.getAttributeNode('image_token').nodeValue)
            total_votes = str(design.getAttributeNode('total_votes').nodeValue)
            description = str(design.getAttributeNode('description').nodeValue)
            previouspackage = str(design.getAttributeNode('previouspackage').nodeValue)
            path = metrixDefaults.pathRoot() + 'packages/' + item_id
            if not os.path.exists(path):
                if previouspackage != '0':
                    path = metrixDefaults.pathRoot() + 'packages/' + previouspackage
                    if os.path.exists(path):
                        '[MyMetrix] Update found: ' + name + ' Version: ' + version
                        installPackage(item_id + ';' + file_id + ';' + file_token, 0)
                        updates_available = True

        if updates_available == True:
            getPackageUpdates()
    except:
        pass
Esempio n. 2
0
def postBackup():
    postSkinParts(metrixDefaults.pathRoot() + 'skinparts/widgets/active/',
                  'Active')
    postSkinParts(metrixDefaults.pathRoot() + 'skinparts/screens/active/',
                  'Active')
    postSkinParts(metrixDefaults.pathRoot() + 'skinparts/widgets/inactive/',
                  'Inactive')
    postSkinParts(metrixDefaults.pathRoot() + 'skinparts/screens/inactive/',
                  'Inactive')
Esempio n. 3
0
def updateSkinParts():
    checkSkinPartUpdates(metrixDefaults.pathRoot() +
                         'skinparts/screens/active/')
    checkSkinPartUpdates(metrixDefaults.pathRoot() +
                         'skinparts/widgets/active/')
    checkSkinPartUpdates(
        metrixDefaults.pathRoot() + 'skinparts/screens/inactive/', False)
    checkSkinPartUpdates(
        metrixDefaults.pathRoot() + 'skinparts/widgets/inactive/', False)
    def getPackages(self, isactive=''):
        try:
            self.menulist = []
            file = urllib2.urlopen(self.url + self.orderby + '&category_id=' +
                                   str(self.category_id))
            data = file.read()
            file.close()
            dom = parseString(data)
            for design in dom.getElementsByTagName('entry'):
                item_id = str(design.getAttributeNode('id').nodeValue)
                name = str(design.getAttributeNode('name').nodeValue)
                author = str(design.getAttributeNode('author').nodeValue)
                version = str(design.getAttributeNode('version').nodeValue)
                rating = str(design.getAttributeNode('rating').nodeValue)
                date = str(design.getAttributeNode('date_created').nodeValue)
                item_type = str(design.getAttributeNode('type').nodeValue)
                file_id = str(design.getAttributeNode('file_id').nodeValue)
                file_token = str(
                    design.getAttributeNode('file_token').nodeValue)
                image_id = str(design.getAttributeNode('image_id').nodeValue)
                image_token = str(
                    design.getAttributeNode('image_token').nodeValue)
                total_votes = str(
                    design.getAttributeNode('total_votes').nodeValue)
                description = str(
                    design.getAttributeNode('description').nodeValue)
                previouspackage = str(
                    design.getAttributeNode('previouspackage').nodeValue)
                path = metrixDefaults.pathRoot() + 'packages/' + item_id
                if self.onlyShowUpdates == '1':
                    if not os.path.exists(path):
                        if previouspackage != '0':
                            path = metrixDefaults.pathRoot(
                            ) + 'packages/' + previouspackage
                            if os.path.exists(path):
                                self.menulist.append(
                                    self.PackagesListEntry(
                                        item_id, name, author, rating, date,
                                        version, total_votes, item_type,
                                        image_id, image_token, description,
                                        file_id, file_token, previouspackage,
                                        isactive))
                elif previouspackage == '0':
                    self.menulist.append(
                        self.PackagesListEntry(item_id, name, author, rating,
                                               date, version, total_votes,
                                               item_type, image_id,
                                               image_token, description,
                                               file_id, file_token,
                                               previouspackage, isactive))

            self['menu'].setList(self.menulist)
            self.updateMeta()
            self.ShowPicture()
        except:
            pass
Esempio n. 5
0
 def PackagesListEntry(self, item_id, name, author, rating, date, version, total_votes, item_type, image_id, image_token, description, file_id, file_token, previouspackage = '0', isactive = ''):
     res = [[item_id,
       name,
       author,
       rating,
       date,
       version,
       total_votes,
       item_type,
       image_id,
       image_token,
       description,
       file_id,
       file_token,
       isactive,
       previouspackage]]
     path = metrixDefaults.pathRoot() + 'packages/' + str(item_id)
     if os.path.exists(path):
         pngtype = '/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/images/package-on.png'
     else:
         pngtype = '/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/images/package.png'
     png = '/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/images/vote' + rating + '.png'
     res.append(MultiContentEntryPixmapAlphaTest(pos=(412, 9), size=(170, 32), png=loadPNG(png)))
     res.append(MultiContentEntryPixmapAlphaTest(pos=(3, 7), size=(32, 32), png=loadPNG(pngtype)))
     res.append(MultiContentEntryText(pos=(40, 4), size=(367, 45), font=0, text=name))
     return res
 def updateMeta(self):
     try:
         self['itemname'].setText(
             _(str(self['menu'].l.getCurrentSelection()[0][1])))
         self['author'].setText(_('loading...'))
         self['votes'].setText(
             str(self['menu'].l.getCurrentSelection()[0][6]))
         self['date'].setText(
             str(self['menu'].l.getCurrentSelection()[0][5]))
         self['description'].setText(
             str(self['menu'].l.getCurrentSelection()[0][10]))
         self.currentid = str(self['menu'].l.getCurrentSelection()[0][0])
         self.currenttype = str(self['menu'].l.getCurrentSelection()[0][7])
         self.currentauthor = str(
             self['menu'].l.getCurrentSelection()[0][2])
         id = self.currentid
         type = self.currenttype
         path = metrixDefaults.pathRoot(
         ) + 'skinparts/' + type + 's/active/' + type + '_' + str(id) + '/'
         if os.path.exists(path):
             self['isInstalled'].setText(_('Already installed!'))
         else:
             self['isInstalled'].setText('')
     except Exception as e:
         print '[MyMetrix] ' + str(e)
         traceback.print_exc()
Esempio n. 7
0
def installPackage(param, actionId):
    params = param.split(';')
    packageId = params[0]
    print '[MyMetrix] Installing package ' + packageId
    downloadurl = 'http://connect.mymetrix.de/store/api/?q=get.xml.packagefile' + '&file_id=' + params[1] + '&token=' + params[2]
    localPath = '/tmp/metrixPackage.ipk'
    try:
        file_name = localPath
        u = urllib2.urlopen(downloadurl)
        f = open(file_name, 'wb')
        meta = u.info()
        file_size = int(meta.getheaders('Content-Length')[0])
        file_size_dl = 0
        block_sz = 8192
        while True:
            buffer = u.read(block_sz)
            if not buffer:
                break
            file_size_dl += len(buffer)
            f.write(buffer)
            status = 'Downloading... (%3.0f%%)' % (file_size_dl * 100.0 / file_size)
            status = status + chr(8) * (len(status) + 1)

        f.close()
        global_executer.execute('opkg install --force-overwrite ' + localPath)
        config.plugins.MetrixUpdater.Reboot.value = 1
        config.plugins.MetrixUpdater.save()
        configfile.save()
        path = metrixDefaults.pathRoot() + 'packages/' + packageId
        if not os.path.exists(path):
            os.makedirs(path)
        showInfo(_('Package successfully installed!'))
    except:
        print '[MyMetrix] Error installing package ' + params[0]
Esempio n. 8
0
def installSkinPart(id,
                    type,
                    author='',
                    image_id='',
                    image_token='',
                    date_modified='',
                    isActive=True):
    downloadurl = 'http://connect.mymetrix.de/store/api/?q=get.xml.skinpartxml&id='
    downloadmetaurl = 'http://connect.mymetrix.de/store/api/?q=get.xml.skinpartmeta&id='
    screenshotpath = 'http://connect.mymetrix.de/store/api/?q=get.pngresized&width=550'
    screenshotpath_v2 = 'http://connect.mymetrix.de/store/api/?q=v2.get.png&width=550&type=6'
    path = metrixDefaults.pathRoot(
    ) + 'skinparts/' + type + 's/inactive/' + type + '_' + str(id) + '/'
    if not os.path.exists(path):
        os.makedirs(path)
    datapath = metrixTools.downloadFile(
        downloadurl + str(id) + '&author=' + author, path + 'data.xml',
        'SKINPART/', '/usr/share/enigma2/MetrixHD/skinparts/' + id + '/')
    metapath = metrixTools.downloadFile(
        downloadmetaurl + str(id) + '&author=' + author, path + 'meta.xml')
    imagepath = ''
    if image_id == '':
        imagepath = metrixTools.downloadFile(screenshotpath_v2 + '&id=' + id,
                                             path + 'preview.png')
    else:
        imagepath = metrixTools.downloadFile(
            screenshotpath + '&image_id=' + image_id + '&token=' + image_token,
            path + 'preview.png')
    if isActive:
        enableSkinPart(path)
    downloadSkinPartRenderer(id)
    downloadSkinPartConverter(id)
    downloadSkinPartImages(id)
Esempio n. 9
0
def installSkinPart(id, type, author="", image_id="", image_token="", date_modified="", isActive=True):
    downloadurl = "http://connect.mymetrix.de/store/api/?q=get.xml.skinpartxml&id="
    downloadmetaurl = "http://connect.mymetrix.de/store/api/?q=get.xml.skinpartmeta&id="
    screenshotpath = "http://connect.mymetrix.de/store/api/?q=get.pngresized&width=550"
    screenshotpath_v2 = "http://connect.mymetrix.de/store/api/?q=v2.get.png&width=550&type=6"
    path = metrixDefaults.pathRoot() + "skinparts/" + type + "s/inactive/" + type + "_" + str(id) + "/"
    if not os.path.exists(path):
        os.makedirs(path)
    datapath = metrixTools.downloadFile(
        downloadurl + str(id) + "&author=" + author,
        path + "data.xml",
        "SKINPART/",
        "/usr/share/enigma2/MetrixHD/skinparts/" + id + "/",
    )
    metapath = metrixTools.downloadFile(downloadmetaurl + str(id) + "&author=" + author, path + "meta.xml")
    imagepath = ""
    if image_id == "":
        imagepath = metrixTools.downloadFile(screenshotpath_v2 + "&id=" + id, path + "preview.png")
    else:
        imagepath = metrixTools.downloadFile(
            screenshotpath + "&image_id=" + image_id + "&token=" + image_token, path + "preview.png"
        )
    if isActive:
        enableSkinPart(path)
    downloadSkinPartRenderer(id)
    downloadSkinPartConverter(id)
    downloadSkinPartImages(id)
Esempio n. 10
0
 def updateMeta(self):
     try:
         self['itemname'].setText(
             str(self['menu'].l.getCurrentSelection()[0][1]))
         self['author'].setText(_('loading...'))
         self['votes'].setText(
             str(self['menu'].l.getCurrentSelection()[0][6]))
         self['date'].setText(
             str(self['menu'].l.getCurrentSelection()[0][5]))
         self['description'].setText(
             str(self['menu'].l.getCurrentSelection()[0][10]))
         self.file_id = str(self['menu'].l.getCurrentSelection()[0][11])
         self.file_token = str(self['menu'].l.getCurrentSelection()[0][12])
         self.currentid = str(self['menu'].l.getCurrentSelection()[0][0])
         self.currenttype = str(self['menu'].l.getCurrentSelection()[0][7])
         id = self.currentid
         type = self.currenttype
         path = metrixDefaults.pathRoot(
         ) + 'packages/' + type + 's/active/' + type + '_' + str(id) + '/'
         if os.path.exists(path):
             self['isInstalled'].setText('Already installed!')
         else:
             self['isInstalled'].setText('')
     except:
         pass
Esempio n. 11
0
 def threadworker(self):
     while 1:
         if self.getCatalog == True:
             self.getCatalog = False
             self.mainmenu = []
             self.getSkinParts(metrixDefaults.pathRoot() + 'skinparts/widgets/active/', '-on')
             self.getSkinParts(metrixDefaults.pathRoot() + 'skinparts/screens/active/', '-on')
             self.getSkinParts(metrixDefaults.pathRoot() + 'skinparts/widgets/inactive/')
             self.getSkinParts(metrixDefaults.pathRoot() + 'skinparts/screens/inactive/')
         if self.initPicture == True:
             self.initPicture = False
             self.UpdatePicture()
             self.updateMeta()
         if self.getEntry == True:
             self.getEntry = False
             self.updateMeta()
             self.ShowPicture()
         time.sleep(1)
Esempio n. 12
0
	def updateMeta(self):
		try:
			self["itemname"].setText(str(self["menu"].l.getCurrentSelection()[0][1]))
			self.setTitle(_("OpenStore // "+self["menu"].l.getCurrentSelection()[0][1]))
			self["author"].setText(_("loading..."))
			self["votes"].setText(str(self["menu"].l.getCurrentSelection()[0][6]))
			self["date"].setText(str(self["menu"].l.getCurrentSelection()[0][5]))
			self["description"].setText(str(self["menu"].l.getCurrentSelection()[0][10]))
			self.currentid = int(self["menu"].l.getCurrentSelection()[0][0])
			self.currenttype = str(self["menu"].l.getCurrentSelection()[0][7])
			isinstalled = self["menu"].l.getCurrentSelection()[0][15]
			updateavailable = self["menu"].l.getCurrentSelection()[0][16]
			if isinstalled:
				self["yellowbutton"].setText(_("Vote"))
				packageName = metrixDefaults.cfg(metrixDefaults.CONFIG_INSTALLEDPACKAGES,self.currentid,"name")
				if not packageName == "":
					self["redbutton"].setText(_("Remove"))
				else:
					self["redbutton"].setText("")
				if updateavailable:
					self["isInstalled"].setText(_("Update available!"))
					self["greenbutton"].setText(_("Update"))
				else:
					self["isInstalled"].setText(_("This app is installed!"))
					self["greenbutton"].setText(_("Reinstall"))
					
			else:
				type = self["menu"].l.getCurrentSelection()[0][7]
				if type == "piconrepo" and config.plugins.MyMetrix.XPiconsRepository.value == self.currentid:
					self["yellowbutton"].setText("Vote")
				else:
					self["yellowbutton"].setText("")
				self["redbutton"].setText("")
				if self.currenttype == "piconrepo":
					self["greenbutton"].setText(_("Apply"))
					if config.plugins.MyMetrix.XPiconsRepository.value == self.currentid:
						self["greenbutton"].setText("")
						
				else:
					self["greenbutton"].setText(_("Install"))
				self["isInstalled"].setText("")
			path = metrixDefaults.pathRoot()+"packages/"+str(self.currentid)+"/"
			
				
		except Exception, e:
			self["itemname"].setText(_("No packages available!"))
			self["author"].setText("")
			self["votes"].setText("")
			self["redbutton"].setText("")
			self["greenbutton"].setText("")
			self["yellowbutton"].setText("")
			self["description"].setText("")
			self["date"].setText("")
			metrixTools.log("No packages available in this view!",e)
Esempio n. 13
0
	def updateMeta(self):
		try:
			self["itemname"].setText(str(self["menu"].l.getCurrentSelection()[0][1]))
			self.setTitle(_("OpenStore // "+self["menu"].l.getCurrentSelection()[0][1]))
			self["author"].setText(_("loading..."))
			self["votes"].setText(str(self["menu"].l.getCurrentSelection()[0][6]))
			self["date"].setText(str(self["menu"].l.getCurrentSelection()[0][5]))
			self["description"].setText(str(self["menu"].l.getCurrentSelection()[0][10]))
			self.currentid = int(self["menu"].l.getCurrentSelection()[0][0])
			self.currenttype = str(self["menu"].l.getCurrentSelection()[0][7])
			isinstalled = self["menu"].l.getCurrentSelection()[0][15]
			updateavailable = self["menu"].l.getCurrentSelection()[0][16]
			if isinstalled:
				self["yellowbutton"].setText(_("Vote"))
				packageName = metrixDefaults.cfg(metrixDefaults.CONFIG_INSTALLEDPACKAGES,self.currentid,"name")
				if not packageName == "":
					self["redbutton"].setText(_("Remove"))
				else:
					self["redbutton"].setText("")
				if updateavailable:
					self["isInstalled"].setText(_("Update available!"))
					self["greenbutton"].setText(_("Update"))
				else:
					self["isInstalled"].setText(_("This app is installed!"))
					self["greenbutton"].setText(_("Reinstall"))
					
			else:
				type = self["menu"].l.getCurrentSelection()[0][7]
				if type == "piconrepo" and config.plugins.MyMetrix.XPiconsRepository.value == self.currentid:
					self["yellowbutton"].setText("Vote")
				else:
					self["yellowbutton"].setText("")
				self["redbutton"].setText("")
				if self.currenttype == "piconrepo":
					self["greenbutton"].setText(_("Apply"))
					if config.plugins.MyMetrix.XPiconsRepository.value == self.currentid:
						self["greenbutton"].setText("")
						
				else:
					self["greenbutton"].setText(_("Install"))
				self["isInstalled"].setText("")
			path = metrixDefaults.pathRoot()+"packages/"+str(self.currentid)+"/"
			
				
		except Exception, e:
			self["itemname"].setText(_("No packages available!"))
			self["author"].setText("")
			self["votes"].setText("")
			self["redbutton"].setText("")
			self["greenbutton"].setText("")
			self["yellowbutton"].setText("")
			self["description"].setText("")
			self["date"].setText("")
			metrixTools.log("No packages available in this view!",e)
Esempio n. 14
0
def getPackageUpdates():
    try:
        updates_available = False
        data = metrixCore.getWeb(
            'http://connect.mymetrix.de/store/api/?q=get.xml.packages&category_id=%',
            True)
        if not data:
            print '[MyMetrix] Error getting package updates'
        dom = parseString(data)
        for design in dom.getElementsByTagName('entry'):
            item_id = str(design.getAttributeNode('id').nodeValue)
            name = str(design.getAttributeNode('name').nodeValue)
            author = str(design.getAttributeNode('author').nodeValue)
            version = str(design.getAttributeNode('version').nodeValue)
            rating = str(design.getAttributeNode('rating').nodeValue)
            date = str(design.getAttributeNode('date_created').nodeValue)
            item_type = str(design.getAttributeNode('type').nodeValue)
            file_id = str(design.getAttributeNode('file_id').nodeValue)
            file_token = str(design.getAttributeNode('file_token').nodeValue)
            image_id = str(design.getAttributeNode('image_id').nodeValue)
            image_token = str(design.getAttributeNode('image_token').nodeValue)
            total_votes = str(design.getAttributeNode('total_votes').nodeValue)
            description = str(design.getAttributeNode('description').nodeValue)
            previouspackage = str(
                design.getAttributeNode('previouspackage').nodeValue)
            path = metrixDefaults.pathRoot() + 'packages/' + item_id
            if not os.path.exists(path):
                if previouspackage != '0':
                    path = metrixDefaults.pathRoot(
                    ) + 'packages/' + previouspackage
                    if os.path.exists(path):
                        '[MyMetrix] Update found: ' + name + ' Version: ' + version
                        installPackage(
                            item_id + ';' + file_id + ';' + file_token, 0)
                        updates_available = True

        if updates_available == True:
            getPackageUpdates()
    except:
        pass
Esempio n. 15
0
    def getPackages(self, isactive = ''):
        try:
            self.menulist = []
            file = urllib2.urlopen(self.url + self.orderby + '&category_id=' + str(self.category_id))
            data = file.read()
            file.close()
            dom = parseString(data)
            for design in dom.getElementsByTagName('entry'):
                item_id = str(design.getAttributeNode('id').nodeValue)
                name = str(design.getAttributeNode('name').nodeValue)
                author = str(design.getAttributeNode('author').nodeValue)
                version = str(design.getAttributeNode('version').nodeValue)
                rating = str(design.getAttributeNode('rating').nodeValue)
                date = str(design.getAttributeNode('date_created').nodeValue)
                item_type = str(design.getAttributeNode('type').nodeValue)
                file_id = str(design.getAttributeNode('file_id').nodeValue)
                file_token = str(design.getAttributeNode('file_token').nodeValue)
                image_id = str(design.getAttributeNode('image_id').nodeValue)
                image_token = str(design.getAttributeNode('image_token').nodeValue)
                total_votes = str(design.getAttributeNode('total_votes').nodeValue)
                description = str(design.getAttributeNode('description').nodeValue)
                previouspackage = str(design.getAttributeNode('previouspackage').nodeValue)
                path = metrixDefaults.pathRoot() + 'packages/' + item_id
                if self.onlyShowUpdates == '1':
                    if not os.path.exists(path):
                        if previouspackage != '0':
                            path = metrixDefaults.pathRoot() + 'packages/' + previouspackage
                            if os.path.exists(path):
                                self.menulist.append(self.PackagesListEntry(item_id, name, author, rating, date, version, total_votes, item_type, image_id, image_token, description, file_id, file_token, previouspackage, isactive))
                elif previouspackage == '0':
                    self.menulist.append(self.PackagesListEntry(item_id, name, author, rating, date, version, total_votes, item_type, image_id, image_token, description, file_id, file_token, previouspackage, isactive))

            self['menu'].setList(self.menulist)
            self.updateMeta()
            self.ShowPicture()
        except:
            pass
 def threadworker(self):
     while 1:
         if self.getCatalog == True:
             self.getCatalog = False
             self.mainmenu = []
             self.getSkinParts(
                 metrixDefaults.pathRoot() + 'skinparts/widgets/active/',
                 '-on')
             self.getSkinParts(
                 metrixDefaults.pathRoot() + 'skinparts/screens/active/',
                 '-on')
             self.getSkinParts(metrixDefaults.pathRoot() +
                               'skinparts/widgets/inactive/')
             self.getSkinParts(metrixDefaults.pathRoot() +
                               'skinparts/screens/inactive/')
         if self.initPicture == True:
             self.initPicture = False
             self.UpdatePicture()
             self.updateMeta()
         if self.getEntry == True:
             self.getEntry = False
             self.updateMeta()
             self.ShowPicture()
         time.sleep(1)
Esempio n. 17
0
	def getPackages(self,isactive=""):
		menu = []
		try:
			params = {'restrictions':metrixTools.getRestrictions(),
					  'orderby':self.orderby+" "+self.limit,
					  'category_id':str(self.category_id)}
			data = metrixCore.getWeb(self.url,True,params)
			if "<exception status=""error""" in data:
				raise Exception("Error loading data")
			dom = parseString(data)
			for design in dom.getElementsByTagName('entry'):
				isinstalled = False
				updateavailable = False
				item_id = str(design.getAttributeNode('id').nodeValue)
				name = str(design.getAttributeNode('name').nodeValue)
				author = str(design.getAttributeNode('author').nodeValue)
				version = str(design.getAttributeNode('version').nodeValue)
				rating = str(design.getAttributeNode('rating').nodeValue)
				date = str(design.getAttributeNode('date_created').nodeValue)
				date_modified = str(design.getAttributeNode('date_modified').nodeValue)
				item_type = str(design.getAttributeNode('type').nodeValue)
				file_link = str(design.getAttributeNode('file_link').nodeValue)
				image_link = str(design.getAttributeNode('image_link').nodeValue)
				icon_link = str(design.getAttributeNode('icon_link').nodeValue)
				downloads = str(design.getAttributeNode('downloads').nodeValue)
				total_votes = str(design.getAttributeNode('total_votes').nodeValue)
				build = int(design.getAttributeNode('build').nodeValue)
				description = str(design.getAttributeNode('description').nodeValue)
				previouspackage = str(design.getAttributeNode('previouspackage').nodeValue)
				path = metrixDefaults.pathRoot()+"packages/"+item_id
				localbuild = int(metrixDefaults.cfg(metrixDefaults.CONFIG_INSTALLEDPACKAGES,item_id,"build","int"))
				# add when not only updates or (only updates and online build is higher)
				if not localbuild == metrixDefaults.NONEINT:
					isinstalled = True
				if build > localbuild:
					updateavailable = True
				if (not self.onlyupdates and not self.onlyinstalled == True) or (build > localbuild and self.onlyupdates == True) or (self.onlyinstalled and isinstalled == True):
					menu.append(self.PackagesListEntry(item_id,name,author,rating,date,version,total_votes,item_type,image_link,icon_link,description,file_link,downloads,previouspackage,date_modified,build,isinstalled,updateavailable))
				metrixTools.callOnMainThread(self.setList,menu)
			if len(menu) < 1:
				self.image = metrixDefaults.PLUGIN_DIR + "images/sponsor.png"
				metrixTools.callOnMainThread(self.setList,menu)
		except Exception, e:
			metrixTools.log('Error getting packages via web',e)
			self.image = metrixDefaults.PLUGIN_DIR + "images/sponsor.png"
			metrixTools.callOnMainThread(self.setList,menu)
Esempio n. 18
0
    def downloadPackage(self):
        id = self.currentid
        url = self.downloadurl + '&file_id=' + self.file_id + '&token=' + self.file_token
        localPath = '/tmp/metrixPackage.ipk'
        try:
            file_name = localPath
            u = urllib2.urlopen(url)
            f = open(file_name, 'wb')
            meta = u.info()
            file_size = int(meta.getheaders('Content-Length')[0])
            file_size_dl = 0
            block_sz = 8192
            while True:
                buffer = u.read(block_sz)
                if not buffer:
                    break
                file_size_dl += len(buffer)
                f.write(buffer)
                status = 'Downloading... (%3.0f%%)' % (file_size_dl * 100.0 /
                                                       file_size)
                status = status + chr(8) * (len(status) + 1)
                self['isInstalled'].setText(status)

            f.close()
            self['isInstalled'].setText('Installing...')
            try:
                global_executer.execute('opkg install --force-overwrite ' +
                                        localPath)
                time.sleep(6)
                self['isInstalled'].setText(_('Installation complete!'))
                config.plugins.MetrixUpdater.Reboot.value = 1
                config.plugins.MetrixUpdater.save()
                configfile.save()
            except Exception as e:
                print '[MyMetrix] ' + str(e)
                traceback.print_exc()
                self['isInstalled'].setText(_('Installation error!'))

            path = metrixDefaults.pathRoot() + 'packages/' + id
            if not os.path.exists(path):
                os.makedirs(path)
        except Exception as e:
            print '[MyMetrix] ' + str(e)
            traceback.print_exc()
            self['isInstalled'].setText('Error during installation!')
Esempio n. 19
0
	def PackagesListEntry(self,item_id,name,author="",rating="",date="",version="",total_votes="",item_type="",image_link="",icon_link="",description="",file_link="",downloads="",previouspackage="0",date_modified="",build=0,isinstalled=False,updateavailable=False):
		res = [[item_id,name,author,rating,date,version,total_votes,item_type,image_link,icon_link,description,file_link,downloads,date_modified,build,isinstalled,updateavailable]]
		path = metrixDefaults.pathRoot()+"packages/"+str(item_id)
		if isinstalled:
			pngtype = metrixDefaults.PLUGIN_DIR + "images/package-on.png"
			if updateavailable:
				res.append(MultiContentEntryText(pos=(70, 4), size=(365, 45), font=0, text=name,color=metrixDefaults.COLOR_UPDATE_AVAILABLE))
			else:
				res.append(MultiContentEntryText(pos=(70, 4), size=(365, 45), font=0, text=name,color=metrixDefaults.COLOR_INSTALLED))
		else:
			pngtype = metrixDefaults.PLUGIN_DIR + "images/package.png"
			res.append(MultiContentEntryText(pos=(70, 4), size=(365, 45), font=0, text=name))
		
		png = metrixDefaults.PLUGIN_DIR + "images/vote"+rating+".png"
		pngicon = metrixTools.webPixmap(icon_link,"openStoreIcon"+str(item_id),{'width':54})
		res.append(MultiContentEntryPixmapAlphaBlend(pos=(445, 9), size=(185, 32), png=loadPNG(png)))
		res.append(MultiContentEntryPixmapAlphaBlend(pos=(5, 1), size=(54, 54), png=loadPNG(pngicon)))
		return res
Esempio n. 20
0
	def PackagesListEntry(self,item_id,name,author="",rating="",date="",version="",total_votes="",item_type="",image_link="",icon_link="",description="",file_link="",downloads="",previouspackage="0",date_modified="",build=0,isinstalled=False,updateavailable=False):
		res = [[item_id,name,author,rating,date,version,total_votes,item_type,image_link,icon_link,description,file_link,downloads,date_modified,build,isinstalled,updateavailable]]
		path = metrixDefaults.pathRoot()+"packages/"+str(item_id)
		if isinstalled:
			pngtype = metrixDefaults.PLUGIN_DIR + "images/package-on.png"
			if updateavailable:
				res.append(MultiContentEntryText(pos=(70, 4), size=(365, 45), font=0, text=name,color=metrixDefaults.COLOR_UPDATE_AVAILABLE))
			else:
				res.append(MultiContentEntryText(pos=(70, 4), size=(365, 45), font=0, text=name,color=metrixDefaults.COLOR_INSTALLED))
		else:
			pngtype = metrixDefaults.PLUGIN_DIR + "images/package.png"
			res.append(MultiContentEntryText(pos=(70, 4), size=(365, 45), font=0, text=name))
		
		png = metrixDefaults.PLUGIN_DIR + "images/vote"+rating+".png"
		pngicon = metrixTools.webPixmap(icon_link,"openStoreIcon"+str(item_id),{'width':54})
		res.append(MultiContentEntryPixmapAlphaBlend(pos=(445, 9), size=(185, 32), png=loadPNG(png)))
		res.append(MultiContentEntryPixmapAlphaBlend(pos=(5, 1), size=(54, 54), png=loadPNG(pngicon)))
		return res
Esempio n. 21
0
 def SkinPartsListEntry(
     self,
     item_id,
     name,
     author,
     rating,
     date,
     version,
     total_votes,
     item_type,
     image_id,
     image_token,
     description,
     screenname,
     isactive="",
 ):
     res = [
         [
             item_id,
             name,
             author,
             rating,
             date,
             version,
             total_votes,
             item_type,
             image_id,
             image_token,
             description,
             screenname,
             isactive,
         ]
     ]
     path = metrixDefaults.pathRoot() + "skinparts/" + item_type + "s/active/" + item_type + "_" + str(item_id) + "/"
     if os.path.exists(path):
         pngtype = "/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/images/" + item_type + "-on.png"
     else:
         pngtype = "/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/images/" + item_type + ".png"
     png = "/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/images/vote" + rating + ".png"
     res.append(MultiContentEntryPixmapAlphaTest(pos=(412, 9), size=(170, 32), png=loadPNG(png)))
     res.append(MultiContentEntryPixmapAlphaTest(pos=(3, 7), size=(32, 32), png=loadPNG(pngtype)))
     res.append(MultiContentEntryText(pos=(40, 4), size=(367, 45), font=0, text=name))
     return res
Esempio n. 22
0
    def downloadPackage(self):
        id = self.currentid
        url = self.downloadurl + '&file_id=' + self.file_id + '&token=' + self.file_token
        localPath = '/tmp/metrixPackage.ipk'
        try:
            file_name = localPath
            u = urllib2.urlopen(url)
            f = open(file_name, 'wb')
            meta = u.info()
            file_size = int(meta.getheaders('Content-Length')[0])
            file_size_dl = 0
            block_sz = 8192
            while True:
                buffer = u.read(block_sz)
                if not buffer:
                    break
                file_size_dl += len(buffer)
                f.write(buffer)
                status = 'Downloading... (%3.0f%%)' % (file_size_dl * 100.0 / file_size)
                status = status + chr(8) * (len(status) + 1)
                self['isInstalled'].setText(status)

            f.close()
            self['isInstalled'].setText('Installing...')
            try:
                global_executer.execute('opkg install --force-overwrite ' + localPath)
                time.sleep(6)
                self['isInstalled'].setText(_('Installation complete!'))
                config.plugins.MetrixUpdater.Reboot.value = 1
                config.plugins.MetrixUpdater.save()
                configfile.save()
            except Exception as e:
                print '[MyMetrix] ' + str(e)
                traceback.print_exc()
                self['isInstalled'].setText(_('Installation error!'))

            path = metrixDefaults.pathRoot() + 'packages/' + id
            if not os.path.exists(path):
                os.makedirs(path)
        except Exception as e:
            print '[MyMetrix] ' + str(e)
            traceback.print_exc()
            self['isInstalled'].setText('Error during installation!')
Esempio n. 23
0
 def updateMeta(self):
     try:
         self["itemname"].setText(_(str(self["menu"].l.getCurrentSelection()[0][1])))
         self["author"].setText(_("loading..."))
         self["votes"].setText(str(self["menu"].l.getCurrentSelection()[0][6]))
         self["date"].setText(str(self["menu"].l.getCurrentSelection()[0][5]))
         self["description"].setText(str(self["menu"].l.getCurrentSelection()[0][10]))
         self.currentid = str(self["menu"].l.getCurrentSelection()[0][0])
         self.currenttype = str(self["menu"].l.getCurrentSelection()[0][7])
         self.currentauthor = str(self["menu"].l.getCurrentSelection()[0][2])
         id = self.currentid
         type = self.currenttype
         path = metrixDefaults.pathRoot() + "skinparts/" + type + "s/active/" + type + "_" + str(id) + "/"
         if os.path.exists(path):
             self["isInstalled"].setText("Already installed!")
         else:
             self["isInstalled"].setText("")
     except Exception as e:
         print "[MyMetrix] " + str(e)
         traceback.print_exc()
Esempio n. 24
0
def installPackage(param,actionId,isUpdate=False):
	params = param.split(";")
	packageId = params[0]
	metrixTools.log("Installing package "+packageId)
	downloadurl = metrixDefaults.URL_STORE_API + "get.xml.packagefile&file_id="+params[1]+"&token="+params[2]
	if isUpdate:
		downloadurl = metrixDefaults.URL_STORE_API + "get.xml.packagefile-update&file_id="+params[1]+"&token="+params[2]
	localPath = "/tmp/metrixPackage.ipk"
	instSuccess = metrix_PackageTools.installPackage(downloadurl,True)
	if instSuccess:
		config.plugins.MetrixUpdater.Reboot.value = 1
		config.plugins.MetrixUpdater.save()    
		configfile.save()
		path = metrixDefaults.pathRoot()+"packages/"+packageId
		if not os.path.exists(path):
			os.makedirs(path)
		showInfo(_("Package successfully installed!"))
	else:
		showInfo(_("Error installing package!"),MessageBox.TYPE_ERROR)
		metrixTools.log("Error installing package "+params[0])
Esempio n. 25
0
 def updateMeta(self):
     try:
         self['itemname'].setText(str(self['menu'].l.getCurrentSelection()[0][1]))
         self['author'].setText(_('loading...'))
         self['votes'].setText(str(self['menu'].l.getCurrentSelection()[0][6]))
         self['date'].setText(str(self['menu'].l.getCurrentSelection()[0][5]))
         self['description'].setText(str(self['menu'].l.getCurrentSelection()[0][10]))
         self.file_id = str(self['menu'].l.getCurrentSelection()[0][11])
         self.file_token = str(self['menu'].l.getCurrentSelection()[0][12])
         self.currentid = str(self['menu'].l.getCurrentSelection()[0][0])
         self.currenttype = str(self['menu'].l.getCurrentSelection()[0][7])
         id = self.currentid
         type = self.currenttype
         path = metrixDefaults.pathRoot() + 'packages/' + type + 's/active/' + type + '_' + str(id) + '/'
         if os.path.exists(path):
             self['isInstalled'].setText('Already installed!')
         else:
             self['isInstalled'].setText('')
     except:
         pass
Esempio n. 26
0
def installPackage(param,actionId,isUpdate=False):
	params = param.split(";")
	packageId = params[0]
	metrixTools.log("Installing package "+packageId)
	downloadurl = metrixDefaults.URL_STORE_API + "get.xml.packagefile&file_id="+params[1]+"&token="+params[2]
	if isUpdate:
		downloadurl = metrixDefaults.URL_STORE_API + "get.xml.packagefile-update&file_id="+params[1]+"&token="+params[2]
	localPath = "/tmp/metrixPackage.ipk"
	instSuccess = metrix_PackageTools.installPackage(downloadurl,True)
	if instSuccess:
		config.plugins.MetrixUpdater.Reboot.value = 1
		config.plugins.MetrixUpdater.save()    
		configfile.save()
		path = metrixDefaults.pathRoot()+"packages/"+packageId
		if not os.path.exists(path):
			os.makedirs(path)
		showInfo(_("Package successfully installed!"))
	else:
		showInfo(_("Error installing package!"),MessageBox.TYPE_ERROR)
		metrixTools.log("Error installing package "+params[0])
Esempio n. 27
0
 def PackagesListEntry(self,
                       item_id,
                       name,
                       author,
                       rating,
                       date,
                       version,
                       total_votes,
                       item_type,
                       image_id,
                       image_token,
                       description,
                       file_id,
                       file_token,
                       previouspackage='0',
                       isactive=''):
     res = [[
         item_id, name, author, rating, date, version, total_votes,
         item_type, image_id, image_token, description, file_id, file_token,
         isactive, previouspackage
     ]]
     path = metrixDefaults.pathRoot() + 'packages/' + str(item_id)
     if os.path.exists(path):
         pngtype = '/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/images/package-on.png'
     else:
         pngtype = '/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/images/package.png'
     png = '/usr/lib/enigma2/python/Plugins/Extensions/MyMetrix/images/vote' + rating + '.png'
     res.append(
         MultiContentEntryPixmapAlphaTest(pos=(412, 9),
                                          size=(170, 32),
                                          png=loadPNG(png)))
     res.append(
         MultiContentEntryPixmapAlphaTest(pos=(3, 7),
                                          size=(32, 32),
                                          png=loadPNG(pngtype)))
     res.append(
         MultiContentEntryText(pos=(40, 4),
                               size=(367, 45),
                               font=0,
                               text=name))
     return res
Esempio n. 28
0
def installPackage(param, actionId):
    params = param.split(';')
    packageId = params[0]
    print '[MyMetrix] Installing package ' + packageId
    downloadurl = 'http://connect.mymetrix.de/store/api/?q=get.xml.packagefile' + '&file_id=' + params[
        1] + '&token=' + params[2]
    localPath = '/tmp/metrixPackage.ipk'
    try:
        file_name = localPath
        u = urllib2.urlopen(downloadurl)
        f = open(file_name, 'wb')
        meta = u.info()
        file_size = int(meta.getheaders('Content-Length')[0])
        file_size_dl = 0
        block_sz = 8192
        while True:
            buffer = u.read(block_sz)
            if not buffer:
                break
            file_size_dl += len(buffer)
            f.write(buffer)
            status = 'Downloading... (%3.0f%%)' % (file_size_dl * 100.0 /
                                                   file_size)
            status = status + chr(8) * (len(status) + 1)

        f.close()
        global_executer.execute('opkg install --force-overwrite ' + localPath)
        config.plugins.MetrixUpdater.Reboot.value = 1
        config.plugins.MetrixUpdater.save()
        configfile.save()
        path = metrixDefaults.pathRoot() + 'packages/' + packageId
        if not os.path.exists(path):
            os.makedirs(path)
        showInfo(_('Package successfully installed!'))
    except:
        print '[MyMetrix] Error installing package ' + params[0]
Esempio n. 29
0
    def generateSkin(self):
        screennames = []
        screennames = self.getSkinPartsScreennames(metrixDefaults.pathRoot() + 'skinparts/screens/active/')
        self['output'].setText(_(str('Reading template file')))
        skindom = parse(metrixDefaults.pathRoot() + 'skintemplates/' + config.plugins.MyMetrix.templateFile.value)
        skinNode = skindom.getElementsByTagName('skin')[0]
        self['output'].setText(_(str('Setting colors')))
        self.setColor(skinNode)
        for screen in skindom.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            self['output'].setText(_(str('Checking screen ' + screenname)))
            if screenname in screennames:
                self['output'].setText(_(str('Removing default screen ' + screenname)))
                parentNode = screen.parentNode
                parentNode.removeChild(screen)

        path = metrixDefaults.pathRoot() + 'skinparts/screens/active/'
        dirs = listdir(path)
        for dir in dirs:
            self['output'].setText(_(str('Parsing SkinPart Screens')))
            try:
                screendom = parse(path + '/' + dir + '/data.xml')
                customscreen = skindom.importNode(screendom.getElementsByTagName('screen')[0], True)
                skinNode.appendChild(customscreen)
            except:
                pass

        path = metrixDefaults.pathRoot() + 'skinparts/widgets/active/'
        dirs = listdir(path)
        for dir in dirs:
            try:
                widgetdom = parse(path + '/' + dir + '/data.xml')
                widget = widgetdom.getElementsByTagName('skinpartwidget')[0]
                widgetscreenname = str(widget.getAttributeNode('screenname').nodeValue)
                self['output'].setText(_(str('Parsing SkinPart Widget for ' + widgetscreenname)))
                for screen in skinNode.getElementsByTagName('screen'):
                    screenname = str(screen.getAttributeNode('name').nodeValue)
                    if screenname == widgetscreenname:
                        for child in widget.childNodes:
                            childimport = skindom.importNode(child, True)
                            screen.appendChild(childimport)

                        break

            except:
                pass

        for screen in skindom.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            self['output'].setText(_(str('Setting ProgressBars for ' + screenname + ' screen')))
            try:
                for widget in screen.getElementsByTagName('widget'):
                    try:
                        pixmap = widget.getAttributeNode('pixmap').nodeValue
                        if pixmap == 'MetrixHD/colors/00ffffff.png':
                            widget.setAttribute('pixmap', pixmap.replace('/00ffffff', '/' + config.plugins.MyMetrix.Color.ProgressBar.value.replace('#', '')))
                        elif pixmap == '%METRIX:PROGRESSBAR:COLOR:MULTI%':
                            widget.setAttribute('pixmap', 'MetrixHD/colors/' + config.plugins.MyMetrix.Color.ProgressBar.value.replace('#', '') + '.png')
                        elif pixmap == '%METRIX:PROGRESSBAR:COLOR:WHITE%':
                            widget.setAttribute('pixmap', 'MetrixHD/colors/00ffffff.png')
                    except:
                        pass

            except:
                pass

        for screen in skinNode.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            self['output'].setText(_(str('Checking compatibility for ' + screenname)))
            screen = skinPartIsCompatible(screen)

        self['output'].setText(_(str('Writing skin file, please wait...')))
        file = '/usr/share/enigma2/MetrixHD/skin.xml'
        path = os.path.dirname(file)
        if not os.path.exists(path):
            os.makedirs(path)
        file = open(path + '/skin.xml', 'w')
        file.write(skindom.toxml())
        file.close()
        try:
            self['output'].setText(_(str('Activating MetrixHD')))
            config.skin.primary_skin.value = 'MetrixHD/skin.xml'
            config.skin.primary_fallback_skin.value = True
            config.skin.primary_fallback_skin.save()
            config.skin.primary_skin.save()
            configfile.save()
        except:
            print 'Error activating MetrixHD'

        restartbox = self.session.openWithCallback(self.restartGUI, MessageBox, _('GUI needs a restart to apply a new skin.\nDo you want to Restart the GUI now?'), MessageBox.TYPE_YESNO)
        restartbox.setTitle(_('Restart GUI'))
Esempio n. 30
0
def updateSkinParts():
    checkSkinPartUpdates(metrixDefaults.pathRoot() + "skinparts/screens/active/")
    checkSkinPartUpdates(metrixDefaults.pathRoot() + "skinparts/widgets/active/")
    checkSkinPartUpdates(metrixDefaults.pathRoot() + "skinparts/screens/inactive/", False)
    checkSkinPartUpdates(metrixDefaults.pathRoot() + "skinparts/widgets/inactive/", False)
Esempio n. 31
0
    def generateSkin(self):
        screennames = []
        screennames = self.getSkinPartsScreennames(metrixDefaults.pathRoot() +
                                                   'skinparts/screens/active/')
        self['output'].setText(_(str('Reading template file')))
        skindom = parse(metrixDefaults.pathRoot() + 'skintemplates/' +
                        config.plugins.MyMetrix.templateFile.value)
        skinNode = skindom.getElementsByTagName('skin')[0]
        self['output'].setText(_(str('Setting colors')))
        self.setColor(skinNode)
        for screen in skindom.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            self['output'].setText(_(str('Checking screen ' + screenname)))
            if screenname in screennames:
                self['output'].setText(
                    _(str('Removing default screen ' + screenname)))
                parentNode = screen.parentNode
                parentNode.removeChild(screen)

        path = metrixDefaults.pathRoot() + 'skinparts/screens/active/'
        dirs = listdir(path)
        for dir in dirs:
            self['output'].setText(_(str('Parsing SkinPart Screens')))
            try:
                screendom = parse(path + '/' + dir + '/data.xml')
                customscreen = skindom.importNode(
                    screendom.getElementsByTagName('screen')[0], True)
                skinNode.appendChild(customscreen)
            except:
                pass

        path = metrixDefaults.pathRoot() + 'skinparts/widgets/active/'
        dirs = listdir(path)
        for dir in dirs:
            try:
                widgetdom = parse(path + '/' + dir + '/data.xml')
                widget = widgetdom.getElementsByTagName('skinpartwidget')[0]
                widgetscreenname = str(
                    widget.getAttributeNode('screenname').nodeValue)
                self['output'].setText(
                    _(str('Parsing SkinPart Widget for ' + widgetscreenname)))
                for screen in skinNode.getElementsByTagName('screen'):
                    screenname = str(screen.getAttributeNode('name').nodeValue)
                    if screenname == widgetscreenname:
                        for child in widget.childNodes:
                            childimport = skindom.importNode(child, True)
                            screen.appendChild(childimport)

                        break

            except:
                pass

        for screen in skindom.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            self['output'].setText(
                _(str('Setting ProgressBars for ' + screenname + ' screen')))
            try:
                for widget in screen.getElementsByTagName('widget'):
                    try:
                        pixmap = widget.getAttributeNode('pixmap').nodeValue
                        if pixmap == 'MetrixHD/colors/00ffffff.png':
                            widget.setAttribute(
                                'pixmap',
                                pixmap.replace(
                                    '/00ffffff', '/' + config.plugins.MyMetrix.
                                    Color.ProgressBar.value.replace('#', '')))
                        elif pixmap == '%METRIX:PROGRESSBAR:COLOR:MULTI%':
                            widget.setAttribute(
                                'pixmap', 'MetrixHD/colors/' +
                                config.plugins.MyMetrix.Color.ProgressBar.
                                value.replace('#', '') + '.png')
                        elif pixmap == '%METRIX:PROGRESSBAR:COLOR:WHITE%':
                            widget.setAttribute(
                                'pixmap', 'MetrixHD/colors/00ffffff.png')
                    except:
                        pass

            except:
                pass

        for screen in skinNode.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            self['output'].setText(
                _(str('Checking compatibility for ' + screenname)))
            screen = skinPartIsCompatible(screen)

        self['output'].setText(_(str('Writing skin file, please wait...')))
        file = '/usr/share/enigma2/MetrixHD/skin.xml'
        path = os.path.dirname(file)
        if not os.path.exists(path):
            os.makedirs(path)
        file = open(path + '/skin.xml', 'w')
        file.write(skindom.toxml())
        file.close()
        try:
            self['output'].setText(_(str('Activating MetrixHD')))
            config.skin.primary_skin.value = 'MetrixHD/skin.xml'
            config.skin.primary_fallback_skin.value = True
            config.skin.primary_fallback_skin.save()
            config.skin.primary_skin.save()
            configfile.save()
        except:
            print 'Error activating MetrixHD'

        restartbox = self.session.openWithCallback(
            self.restartGUI, MessageBox,
            _('GUI needs a restart to apply a new skin.\nDo you want to Restart the GUI now?'
              ), MessageBox.TYPE_YESNO)
        restartbox.setTitle(_('Restart GUI'))
Esempio n. 32
0
def generateSkin(actionId):
    try:
        print '[MyMetrix] Generating Skin via web'
        showInfo(_('Generating skin!'))
        screennames = []
        screennames = getSkinPartsScreennames(metrixDefaults.pathRoot() +
                                              'skinparts/screens/active/')
        skindom = parse(metrixDefaults.pathRoot() + 'skintemplates/' +
                        config.plugins.MyMetrix.templateFile.value)
        skinNode = skindom.getElementsByTagName('skin')[0]
        setColor(skinNode)
        for screen in skindom.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            if screenname in screennames:
                parentNode = screen.parentNode
                parentNode.removeChild(screen)

        path = metrixDefaults.pathRoot() + 'skinparts/screens/active/'
        dirs = listdir(path)
        for dir in dirs:
            try:
                screendom = parse(path + '/' + dir + '/data.xml')
                customscreen = skindom.importNode(
                    screendom.getElementsByTagName('screen')[0], True)
                skinNode.appendChild(customscreen)
            except:
                pass

        path = metrixDefaults.pathRoot() + 'skinparts/widgets/active/'
        dirs = listdir(path)
        for dir in dirs:
            try:
                widgetdom = parse(path + '/' + dir + '/data.xml')
                widget = widgetdom.getElementsByTagName('skinpartwidget')[0]
                widgetscreenname = str(
                    widget.getAttributeNode('screenname').nodeValue)
                for screen in skinNode.getElementsByTagName('screen'):
                    screenname = str(screen.getAttributeNode('name').nodeValue)
                    if screenname == widgetscreenname:
                        for child in widget.childNodes:
                            childimport = skindom.importNode(child, True)
                            screen.appendChild(childimport)

                        break

            except:
                pass

        for screen in skindom.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            for widget in screen.getElementsByTagName('widget'):
                try:
                    pixmap = str(widget.getAttributeNode('pixmap').nodeValue)
                    if pixmap == 'MetrixHD/colors/00ffffff.png':
                        widget.setAttribute(
                            'pixmap',
                            pixmap.replace(
                                '/00ffffff', '/' + config.plugins.MyMetrix.
                                Color.ProgressBar.value.replace('#', '')))
                    elif pixmap == '%METRIX:PROGRESSBAR:COLOR:MULTI%':
                        widget.setAttribute(
                            'pixmap',
                            'MetrixHD/colors/' + config.plugins.MyMetrix.Color.
                            ProgressBar.value.replace('#', '') + '.png')
                    elif pixmap == '%METRIX:PROGRESSBAR:COLOR:WHITE%':
                        widget.setAttribute('pixmap',
                                            'MetrixHD/colors/00ffffff.png')
                except:
                    pass

        for screen in skindom.getElementsByTagName('screen'):
            screen = skinPartIsCompatible(screen)

        file = '/usr/share/enigma2/MetrixHD/skin.xml'
        path = os.path.dirname(file)
        if not os.path.exists(path):
            os.makedirs(path)
        file = open(path + '/skin.xml', 'w')
        file.write(skindom.toxml())
        file.close()
        try:
            config.skin.primary_skin.value = 'MetrixHD/skin.xml'
            config.skin.primary_skin.save()
            config.skin.primary_fallback_skin.value = True
            config.skin.primary_fallback_skin.save()
            configfile.save()
            showInfo(_('Skin successfully generated!'))
        except Exception as e:
            print '[MyMetrix] ' + str(e)
            traceback.print_exc()
            print '[MyMetrix] Error activating MetrixHD'

    except Exception as e:
        print '[MyMetrix] ' + str(e)
        traceback.print_exc()
Esempio n. 33
0
def generateSkin(actionId):
    try:
        print '[MyMetrix] Generating Skin via web'
        showInfo(_('Generating skin!'))
        screennames = []
        screennames = getSkinPartsScreennames(metrixDefaults.pathRoot() + 'skinparts/screens/active/')
        skindom = parse(metrixDefaults.pathRoot() + 'skintemplates/' + config.plugins.MyMetrix.templateFile.value)
        skinNode = skindom.getElementsByTagName('skin')[0]
        setColor(skinNode)
        for screen in skindom.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            if screenname in screennames:
                parentNode = screen.parentNode
                parentNode.removeChild(screen)

        path = metrixDefaults.pathRoot() + 'skinparts/screens/active/'
        dirs = listdir(path)
        for dir in dirs:
            try:
                screendom = parse(path + '/' + dir + '/data.xml')
                customscreen = skindom.importNode(screendom.getElementsByTagName('screen')[0], True)
                skinNode.appendChild(customscreen)
            except:
                pass

        path = metrixDefaults.pathRoot() + 'skinparts/widgets/active/'
        dirs = listdir(path)
        for dir in dirs:
            try:
                widgetdom = parse(path + '/' + dir + '/data.xml')
                widget = widgetdom.getElementsByTagName('skinpartwidget')[0]
                widgetscreenname = str(widget.getAttributeNode('screenname').nodeValue)
                for screen in skinNode.getElementsByTagName('screen'):
                    screenname = str(screen.getAttributeNode('name').nodeValue)
                    if screenname == widgetscreenname:
                        for child in widget.childNodes:
                            childimport = skindom.importNode(child, True)
                            screen.appendChild(childimport)

                        break

            except:
                pass

        for screen in skindom.getElementsByTagName('screen'):
            screenname = str(screen.getAttributeNode('name').nodeValue)
            for widget in screen.getElementsByTagName('widget'):
                try:
                    pixmap = str(widget.getAttributeNode('pixmap').nodeValue)
                    if pixmap == 'MetrixHD/colors/00ffffff.png':
                        widget.setAttribute('pixmap', pixmap.replace('/00ffffff', '/' + config.plugins.MyMetrix.Color.ProgressBar.value.replace('#', '')))
                    elif pixmap == '%METRIX:PROGRESSBAR:COLOR:MULTI%':
                        widget.setAttribute('pixmap', 'MetrixHD/colors/' + config.plugins.MyMetrix.Color.ProgressBar.value.replace('#', '') + '.png')
                    elif pixmap == '%METRIX:PROGRESSBAR:COLOR:WHITE%':
                        widget.setAttribute('pixmap', 'MetrixHD/colors/00ffffff.png')
                except:
                    pass

        for screen in skindom.getElementsByTagName('screen'):
            screen = skinPartIsCompatible(screen)

        file = '/usr/share/enigma2/MetrixHD/skin.xml'
        path = os.path.dirname(file)
        if not os.path.exists(path):
            os.makedirs(path)
        file = open(path + '/skin.xml', 'w')
        file.write(skindom.toxml())
        file.close()
        try:
            config.skin.primary_skin.value = 'MetrixHD/skin.xml'
            config.skin.primary_skin.save()
            config.skin.primary_fallback_skin.value = True
            config.skin.primary_fallback_skin.save()
            configfile.save()
            showInfo(_('Skin successfully generated!'))
        except Exception as e:
            print '[MyMetrix] ' + str(e)
            traceback.print_exc()
            print '[MyMetrix] Error activating MetrixHD'

    except Exception as e:
        print '[MyMetrix] ' + str(e)
        traceback.print_exc()
Esempio n. 34
0
def postBackup():
    postSkinParts(metrixDefaults.pathRoot() + 'skinparts/widgets/active/', 'Active')
    postSkinParts(metrixDefaults.pathRoot() + 'skinparts/screens/active/', 'Active')
    postSkinParts(metrixDefaults.pathRoot() + 'skinparts/widgets/inactive/', 'Inactive')
    postSkinParts(metrixDefaults.pathRoot() + 'skinparts/screens/inactive/', 'Inactive')