[COMO] Personalizar Widgets de Wireless y ClearWeather

Imagen de Franio
0 puntos

Recordar que solo modificamos para que podamos ver lo que nosotros queramos pero el autor es otra persona.

Se pueden conseguir aki

http://www.screenlets.org/index.php/Wireless

http://www.screenlets.org/index.php/Clear_Weather

 

La peor consecuencia de tocar esto es que el widget deje de funcionar, por eso mismo haremos una copia del original para poder reponerlo en caso de hacer algo que no este bien.

 

En un principio las screenlet tienen x defecto unos valores que nos muestran una informacion en la que tal vez nosotros no estemos interesados, asi que aqui os enseñare como cambiar el codigo para meter valores nuevos, quietar los que vienen por defecto y en definitiva personalizar la informacion mostrada.

Para hacer una rapida ejecucion nos posicionamos en la carpeta con el shell y hacemos ./WirelessScreenlet.py nos mostrara los errores en tiempo de ejecucion

o

Abrimos el Screenlets manager y le damos a Enable/disable pero no muestra los errores en tiempo de ejecucion

Wireless

desde sistema de archivos nos dirigimos a: usr/local/share/screenlets/ --> Deben estar aqui los screenlets para que puedan funcionar. Alli veremos varias carpetas nosotros nos dirigimos a la carpeta Wireless.

alli veremos el archivo---> WirelessScreenlet.py

lo abrimos con gedit o cualquier otro programa editor de textos que tengamos y veremos las tripas del programa.

Las variables que son mostradas por pantalla vienen definidas en este apartado;

# internals
__timeout = None
__icon = 'link-0'
__stats = {"essid": "Not updated", "percentage": 0, "bitrate":0} ---> Aki cambiamos las variables que deseamos que se muestren, como veis yo he metido bitrate para mostrar los Mb/s a los que funciona la red wifi. si queremos añadir mas poneos despues de , "bitrate":0, "XXXX":0} --> el 0 es para inicializar la variable a 0.

    __not_connected_stats = {"essid": "Not connected", "percentage": 0, "bitrate":0} --> Todo lo que añadamos en stats hay que añadir su analogo aqui como 0 para que si no tenemos conexion no de problemas.

__update_interval = 3 # every 3 seconds

 

Dentro de la funcion

def on_draw(self, ctx):

Bajams y encontramos esto

ctx.scale(self.scale, self.scale)
self.draw_text(ctx, '<b>' + self.__stats['essid'] + '</b>', 10, 10, 12)
self.draw_text(ctx, str(self.__stats['percentage']) + '%', 20, 30, 20)
self.draw_text(ctx, str(self.__stats['bitrate']) + 'Mb/s', 20, 60, 20) --> Esta es la linea que habria que añadir para que muestre el bitrate,

Posicion: X, Y, Tamaño letra

si queremos añadir otra;

self.draw_text(ctx,str(self.__stats['xxx'])+' XXXX', 20,60,20) hay que tener cuidado con las posiciones x, y, tamaño de la letra para que quede mas o menos bonito y encajado

ctx.restore()

 

Para saber los valores que podemos añadir tenemos estas lineas

bitrate = iwconfig[iwconfig.find("Bit Rate:")+9:]
stats['bitrate'] = bitrate[:bitrate.find(" ")] --->bitrate
quality = iwconfig[iwconfig.find("Link Quality=")+13:]
quality = quality[:quality.find(" ")]
if quality.find("/") > 0:
stats['quality'], stats['quality_max'] = quality.split("/")
else:
stats['quality'] = quality
stats['percentage'] = self.get_percentage(int(stats['quality']), int(stats['quality_max']))

signal = iwconfig[iwconfig.find("Signal level=")+13:]
stats['signal'] = signal[:signal.find(" ")] -->Señal
noise = iwconfig[iwconfig.find("Noise level=")+12:]
stats['noise'] = noise[:noise.find('\n')] -->Ruido
return stats

Si os fijais solo son los datos recogidos despues de hacer el iwconfig, que usando el comando iwconfig.find("xxxx")+4 busca la palabra xxxx y le suma 4 caracteres para recoger el dato que viene despues.

 

Para personalizar el ClearWeather abrimos el ClearWeatherScreenlet.py ( Recordar hacer una copia antes de hacer los cambios -- Si la hemos liado no tenemos mas que volver a bajarlo con lo que el problema tan poco es para tirarse de los pelos).

En este no es necesario añadir ninguna variable ni hacer nada especial

Debemos encontrar este texto, casi al final

ctx.translate(68, 24) #Este nos indica posicion X e Y de las variables pequeñas que a mi criterio son las que pueden ser interesante modificar

p_layout2.set_markup('<b>' + weather[1]["high"]+degree+'</b>') #Este da la temperatura alta del dia
ctx.show_layout(p_layout2) ##day1's temps
ctx.translate(0, 6)
p_layout2.set_markup('<b>' + weather[1]["low"]+degree+'</b>') #Temperatura baja
ctx.show_layout(p_layout2)
if weather[1]["dayppcp"] <> '0':
ctx.translate(0, 6)
p_layout2.set_markup('<b>' + weather[1]["dayppcp"]+'%</b>') #probabilidad de lluvia
ctx.show_layout(p_layout2)
ctx.translate(0,6)
p_layout2.set_markup('<b>'+'ST:'+ weather[0]["flik"]+'</b>') #Y este es el puesto x mi que nos indica la sensacion termica,ATENCION CON WEATHER[0] q es un array y depende si queremos los datos de ahora ( en este instante) o lo previsto para hoy hay que poner 0 o 1 respectivamente, hay datos que solo estan en previsto para hoy y datos que solo estan en este instante.

ctx.show_layout(p_layout2)
ctx.restore()

 

Para que se vea mejor hay que mover un poco hacia la derecha el numero que nos esta dando la temperatura en este momento

Buscamos estas lineas

ctx.translate(100,25) -->Y copiamos este tal y como esta, si nos gusta en otra posicion es tan facil como pensar X,Y y ponlo donde mas te guste

degree = unichr(176)
p_layout = ctx.create_layout()
p_fdesc = pango.FontDescription()
p_fdesc.set_family_static("Sans")
p_fdesc.set_size(14 * pango.SCALE)
p_fdesc.set_weight(300)
p_fdesc.set_style(pango.STYLE_NORMAL)
p_layout.set_font_description(p_fdesc) ######render current temp
if len(str(weather[0]["temp"])) == 3:
ctx.translate(-7, 0)
p_layout.set_markup('<b>' + weather[0]["temp"] + degree +'</b>')#Pone la temperatura en grande
ctx.show_layout(p_layout)
ctx.restore()

Para acabar un pequeño detalle el clear weather al entrar nos dice cual es tu codigo postar? pero tu vas y pones 28800 (x ejemplo) y no funciona, tienes que ir a esta pagina

http://espanol.weather.com/weather/local/SPXX0050?from=search_enespanol

metemos nuestra ciudad o pueblo en el buscador y si no aparece, deberiamos buscar el lugar mas cercano a donde vivimos y buscarlo

copiamos el codigo SPXX0050 en mi caso, en el vuesto el que salga, lo pegamos donde pide el codigo postal el clear weather y hemos terminado.

Como curiosidad si queremos ver la pagina de donde se cargan todos los datos del clear weather no tenemos mas que mirar en el codigo... Investigar un poko!!Salu2