Исправлена работа elog. Добавлена функция wallpaper.

master3.3
Mike Hiretsky 10 years ago
parent 3227007e66
commit d5fa4e3793

@ -34,6 +34,7 @@ import time
import glob import glob
import hashlib import hashlib
import fcntl import fcntl
from math import sqrt
from itertools import * from itertools import *
# < <= == != >= > # < <= == != >= >
from operator import lt, le, eq, ne, ge, gt from operator import lt, le, eq, ne, ge, gt
@ -3136,7 +3137,7 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
@classmethod @classmethod
def getLastElog(cls): def getLastElog(cls):
# get last timestamp # get last timestamp (of ::completed emerge)
entry = EmergeLog(EmergeLogPackageTask()).get_last_time() entry = EmergeLog(EmergeLogPackageTask()).get_last_time()
if entry: if entry:
return entry.partition(":")[0] return entry.partition(":")[0]
@ -3146,7 +3147,7 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
def funcElog(self,funArgv, resS, localVars, textTemplateTmp, nameTemp): def funcElog(self,funArgv, resS, localVars, textTemplateTmp, nameTemp):
"""Function for work with emerge.log""" """Function for work with emerge.log"""
funArgv = funArgv.strip() funArgv = funArgv.strip()
rePkg = re.compile(r'completed emerge \(\d+ of \d+\) (\S+)\s',re.S) rePkg = re.compile(r'\) Merging (?:Binary )?\((\S+)::',re.S)
replace = "" replace = ""
if funArgv: if funArgv:
lastTimestamp = self.getElogTimestamp() lastTimestamp = self.getElogTimestamp()
@ -3207,6 +3208,44 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
return self.timeConfigsIni[nameEnvFile] return self.timeConfigsIni[nameEnvFile]
return 0 return 0
def funcWallpaper(self, funArgv, resS, localVars, textTemplateTmp,
nameTemp):
"""
Получить наиболее близкое к заданному разрешение из списка обоев
"""
terms = funArgv.replace(" ", "").split(",")
if len(terms) != 2:
self.raiseErrTemplate(_("funtion takes only two parameters"))
resol, wpath = terms
re_resol = re.compile("^(\d+)x(\d+)$")
resol = re_resol.match(resol)
if not resol:
self.raiseErrTemplate(_("first parameter must be resolution"))
re_resol = re.compile(".*?(\d+)x(\d+).*")
res = map(lambda x:(int(x.group(1)),int(x.group(2)),x.group()),
filter(None,
map(re_resol.search,
listDirectory(wpath))))
width = int(resol.group(1))
height = int(resol.group(2))
gep = sqrt(height**2+width**2)
k = float(width)/float(height)
if res:
# наиболее подходящее разрешение:
# минимальная разность между пропорциями (отношение ширины к высоте)
# минимальная разность между размерами (гепотенуза)
near_res = min(res,
key=lambda x:(abs(x[0]/float(x[1])-k),
abs(gep-sqrt(x[0]**2+x[1]**2))))
replace = near_res[2]
else:
replace = ""
textTemplateTmp = textTemplateTmp[:resS.start()] + replace + \
textTemplateTmp[resS.end():]
return textTemplateTmp
def funcIni(self, funArgv, resS, localVars, textTemplateTmp, nameTemp): def funcIni(self, funArgv, resS, localVars, textTemplateTmp, nameTemp):
"""локальная функция записывает и считывает значение переменной """локальная функция записывает и считывает значение переменной
@ -3684,7 +3723,7 @@ class templateFunction(_error, _warning, _shareTemplate, _shareTermsFunction):
raise TemplatesError( raise TemplatesError(
_("error in template %s")%self.nameTemplate + "\n" + \ _("error in template %s")%self.nameTemplate + "\n" + \
_("error, template term '%s'")%str(self.functText) + \ _("error, template term '%s'")%str(self.functText) + \
message) " " + message)
def applyFuncTemplate(self, textTemplate, nameTemplate): def applyFuncTemplate(self, textTemplate, nameTemplate):
"""Применяет функции к тексту шаблона""" """Применяет функции к тексту шаблона"""

@ -989,7 +989,7 @@ class EmergeLogPackageTask(EmergeLogTask):
""" """
Определить есть ли в строке маркер завершения сборки пакета Определить есть ли в строке маркер завершения сборки пакета
""" """
return "::: completed emerge" in line return ") Merging " in line
class EmergeLog: class EmergeLog:
""" """

@ -41,4 +41,4 @@ class VariableClVer(ReadonlyVariable):
""" """
Package version Package version
""" """
value = "3.2.2" value = "3.2.2.1"

Loading…
Cancel
Save