Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/08/2015, à 09:03

lordenoy

[Résolu] Indicateurs météo

Bonjour,
Depuis deux trois jours, les indicateurs météo ClearWeather, placés sur le bureau ne s'ouvrent plus.
Le Pc sous Ubuntu 14.04 LTS, est à jour.
Quelqu'un aurait-il une explication s'il vous plaît
Merci de votre attention

Dernière modification par lordenoy (Le 08/09/2015, à 13:25)

Hors ligne

#2 Le 26/08/2015, à 17:32

erresse

Re : [Résolu] Indicateurs météo

Bonjour,
Je n'ai malheureusement pas d'explication, mais j'ai constaté le même problème sur la machine de ma cousine qui refuse d'afficher la météo "clearweather" depuis deux ou trois jours, alors qu'elle fonctionne toujours très bien chez moi... roll
J'ai vraiment tout essayé, en supprimant le sceenlet puis en le re-paramétrant, en réinstallant carrément "screenlets" avec reboot de la machine... rien à faire, il ne s'est jamais ré-affiché !
J'ai fini par le virer (provisoirement, j'espère) en attendant de voir si d'autres ont rencontré le problème et peuvent proposer une solution.
Pour le moment, tu es le seul qui le signale, mais au moins on sait qu'on n'est pas des exceptions. Suivons l'affaire, ça va peut-être bouger dans quelques temps.
tongue


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#3 Le 26/08/2015, à 17:59

lordenoy

Re : [Résolu] Indicateurs météo

Re...
J'ai aussi désinstallé et réinstallé totalement les screenlets et rebooté,  sans plus de succès.

De plus je me suis aperçu cet après-midi, que nous avons le même problème sur les machines de notre médiathèque !

Dans un premier temps j'ai pensai qu'un mise à jour pouvait être responsable.
Mais notre médiathèque a été fermée pour congés, et personne n'a utilisé les ordis avant moi.
Donc pas de mises à jour depuis trois semaines.

Bon bin, suivons l'affaire... wink

Hors ligne

#4 Le 27/08/2015, à 08:56

LapiGNU

Re : [Résolu] Indicateurs météo

Les gars,

si c'est un screenlet, vous arrêtez le programme qui les affiche, vous ouvrez un terminal, vous lancez ce programme (à la louche, je dirais que la commande est "screenlets") et avec un peu de bol vous avez le ou les messages d'erreurs concernant l'initialisation de votre screenlet Clearweather.

Non ?


frenchKISS sur www.tchitcha.info, Ubuntu clé en main pour les réseaux de postes de travail.
et surtout : Sauvez les arbres, mangez des castors. Sauvez les castors, ne mangez pas d'arbres !

Hors ligne

#5 Le 28/08/2015, à 14:36

erresse

Re : [Résolu] Indicateurs météo

erresse a écrit :

alors qu'elle fonctionne toujours très bien chez moi...

Du nouveau, mais pas du bon...
Le screenlet ne fonctionne plus chez moi non plus, depuis que j'ai redémarré ma machine suite à une mise à jour.
Dans les mises à jour de ces derniers jours, il me semble qu'il y en avait pour "python". Comme les screenlets fonctionnent avec python, peut-être est-ce une piste à explorer. Qu'est-ce qui a changé ? Je tâche d'en savoir un peu plus et de tester en console (si possible) pour avoir d'éventuels messages d'erreurs.

EDIT : Ben non, rien de significatif...:rolleyes:
J'ai recherché dans l'historique des mises à jour du mois en cours, et je n'ai trouvé que deux paquets pour python, concernant le rapport d'erreurs et "apport", donc qui ne devraient pas concerner le fonctionnement des screenlets.
J'ai tenté le lancement de clearweather en console : il se lance sans la moindre erreur... mais ne s'ouvre pas pour autant, donc chou blanc !
Comme ça dépasse mes compétences, je vais sagement attendre qu'un intervenant plus calé se penche sur le problème.
Wait and see, comme ils disent là-bas.
lol

Dernière modification par erresse (Le 28/08/2015, à 15:18)


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#6 Le 03/09/2015, à 18:12

erresse

Re : [Résolu] Indicateurs météo

Suite...

erresse a écrit :

Comme ça dépasse mes compétences, je vais sagement attendre qu'un intervenant plus calé se penche sur le problème.

Finalement, avec un peu d'opiniâtreté, mes compétences ont suffi et j'ai corrigé moi-même le problème !
En fait, il provient du serveur de météo qui a du changer de procédure pour être consulté : l'URL "http://xaop.weather.com/..." n'est plus correcte actuellement. Peut-être n'est-ce que provisoire, mais je n'ai pas trouvé d'information en ce sens sur la toile...
L'accès aux données météo se fait maintenant par : "http://wxdata.weather.com/wxdata/..." et doit être modifié dans le script.
Voici la procédure à suivre pour remplacer sans risque la version du script, en conservant l'original au cas où...
1 - Créer (s'il n'existe pas déjà) un répertoire privé pour les screenlets dans son dossier personnel, et y dupliquer le dossier "ClearWeather" :

mkdir ~/.screenlets
cp -r /usr/share/screenlets/screenlets-pack-all/ClearWeather ~/.screenlets/
cd /usr/share/screenlets/screenlets-pack-all
sudo mv ClearWeather ClearWeather_bad

2 - Copier le script ci-dessous dans un éditeur de texte :

#!/usr/bin/env python

#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

#ClearWeatherScreenlet (c) Whise <helder.fraga@hotmail.com>
#ClearWeatherScreenlet (c) Aditya Kher  - http://www.kher.org
#ClearWeatherScreenlet (c) Rastko Karadzic <rastkokaradzic@gmail.com>
import re
from urllib import urlopen
import httplib
import socket # for socket.error
import screenlets
from screenlets.options import StringOption, BoolOption, ColorOption, FontOption, IntOption
from screenlets import Notify
import pygtk
pygtk.require('2.0')
import cairo
import pango
import sys
import gobject
import time
import datetime
import math
import gtk
from gtk import gdk
import os
from screenlets import Plugins
proxy = Plugins.importAPI('Proxy')

#use gettext for translation
import gettext

_ = screenlets.utils.get_translator(__file__)

def tdoc(obj):
	obj.__doc__ = _(obj.__doc__)
	return obj

@tdoc

class ClearWeatherScreenlet(screenlets.Screenlet):
	"""A Weather Screenlet modified from the original to look more clear and to enable the use of icon pack , you can use any icon pack compatible with weather.com , you can find many packs on deviantart.com or http://liquidweather.net/icons.php#iconsets."""

	# default meta-info for Screenlets
	__name__ = 'ClearWeatherScreenlet'
	__version__ = '0.7.42+++'
	__author__ = 'Aditya Kher <http://www.kher.org>, Whise <helder.fraga@hotmail.com>, Rastko Karadzic <rastkokaradzic@gmail.com>'
	__desc__ = __doc__

	# internals
	__timeout = None

        # Default update interval is 5 mins (300 Sec)
	update_interval = 5
	show_error_message = 1

	lasty = 0
	lastx = 0   ## the cursor position inside the window (is there a better way to do this??)
	over_button = 1

	ZIP = "KSXX0025"
	CITY = "Suwon"
	use_metric = True
	show_daytemp = True
	mini = False
	font = 'Sans'
	font_color = (1,1,1, 0.8)
	background_color = (0,0,0, 0.8)
	latest = []          ## the most recent settings we could get...
	latestHourly = []

	updated_recently = 0 ## don't keep showing the error messages until a connection has been established
			     ## and then lost again.
	
	# constructor
	def __init__(self, text="", **keyword_args):
		#call super (and not show window yet)
		screenlets.Screenlet.__init__(self, width=int(132 * self.scale), height=int(100 * self.scale),uses_theme=True, **keyword_args) 
		self.__tooltip = gtk.Tooltip()
		#self.__widget = self.get
		# set theme
		self.theme_name = "default"
		# add zip code menu item 
		self.add_menuitem("city", _("Enter city name"))
		self.add_menuitem("mini", _("Toggle mini-view"))
		# init the timeout function
		#self.update_interval = self.update_interval
		#self.add_menuitem("update_interval", _("Update Interval"))

                self.add_options_group(_('Weather'),
                        _('The weather widget settings'))
                self.add_option(StringOption(_('Weather'), 'ZIP',
                        str(self.ZIP), 'ZIP', _('The ZIP code to be monitored taken from Weather.com')), realtime=False)
		self.add_option(BoolOption(_('Weather'), 'show_error_message', 
			bool(self.show_error_message), _('Show error messages'), 
			_('Show an error message on invalid location code')))
		self.add_option(BoolOption(_('Weather'), 'use_metric', 
			bool(self.use_metric), _('Use celsius temperature '), 
			_('Use the metric system for measuring values')))
		self.add_option(BoolOption(_('Weather'), 'mini',
			bool(self.mini), _('Use mini-mode'),
			_('Switch to the mini-mode')))
		self.add_option(BoolOption(_('Weather'), 'show_daytemp',
			bool(self.show_daytemp), _('Show 6 day temperature'),
			_('Show 6 day temperature high/low')))
                # minimum update interval is 1 mins (60 Sec)
		self.add_option(IntOption(_('Weather'), 'update_interval',
                        int(self.update_interval), _('Update Interval(In minutes)'), _('The update interval for weather forecast'),min=1,max=1440), realtime=False)
		self.add_option(FontOption(_('Weather'),'font', 
			self.font, _('Font'), 
			'font'))
		self.add_option(ColorOption(_('Weather'),'font_color', 
			self.font_color, _('Text color'), 'font_color'))
		self.add_option(ColorOption(_('Weather'),'background_color', 
			self.background_color, _('Back color'), _('Only works with the default theme')))

                # Update the weather data as soon as initialized.
                #uncomment following if debugging
                #print "updating now"
		gobject.idle_add(self.update_weather_data)
                # Add timer function in constructor call
		self.__timeout = gobject.timeout_add((self.update_interval*1000*60), self.update)
	
	# attribute-"setter", handles setting of attributes
	def __setattr__(self, name, value):
		# call Screenlet.__setattr__ in baseclass (ESSENTIAL!!!!)
		screenlets.Screenlet.__setattr__(self, name, value)
		# check for this Screenlet's attributes, we are interested in:
		if name == "ZIP":
			self.__dict__[name] = value
			gobject.idle_add(self.update_weather_data)
		if name == "use_metric":
			self.__dict__[name] = value
			gobject.idle_add(self.update_weather_data)
		if name == "update_interval":
			#if value > 0:
				self.__dict__['update_interval'] = value
			#	if self.__timeout:
			#		gobject.source_remove(self.__timeout)
			#	self.__timeout = gobject.timeout_add(value * 1000 * 60, self.update)
			#else:
			# The minimum value accepted is 1 	
			#	pass

	def on_init (self):
		print "Screenlet has been initialized."
		# add default menuitems
		self.add_default_menuitems()	

	def update(self):
                # Uncomment following for debugging
                #print " Inside update: update_interval at ", time.localtime()
		gobject.idle_add(self.update_weather_data)
		
		return True


	def update_weather_data(self):
		temp = self.parseWeatherData()
		temp2 = self.parseWeatherDataHourly()
		

		if len(temp) == 0 or temp[0]["where"]  == '':    ##did we get any data?  if not...
			if self.show_error_message==1 and self.updated_recently == 1:
				self.show_error()
			self.updated_recently = 0
		else:
			#if temp[0]["where"].find(',') > -1:
			#	temp[0]["where"] = temp[0]["where"][:temp[0]["where"].find(',')]
			self.latest = temp
			self.latestHourly = temp2
			self.updated_recently = 1
			self.redraw_canvas()


	def parseWeatherData(self):
		if self.use_metric:
			unit = 'm'
		else:
			unit = 's'

		forecast = []

		
		proxies = proxy.Proxy().get_proxy()
		try:
			data = urlopen('http://wxdata.weather.com/wxdata/weather/local/'+self.ZIP+'?cc=*&dayf=10&prod=xoap&par=1003666583&key=4128909340a9b2fc&unit='+unit + '&link=xoap',proxies=proxies).read()

			dcstart = data.find('<loc ')
			dcstop = data.find('</cc>')     ###### current conditions
			data_current = data[dcstart:dcstop]
			forecast.append(self.tokenizeCurrent(data_current))

			for x in range(10):
				dcstart = data.find('<day d=\"'+str(x))
				dcstop = data.find('</day>',dcstart)   #####10-day forecast
				day = data[dcstart:dcstop]
				forecast.append(self.tokenizeForecast(day))
		except (IOError, socket.error), e:
			print "Error retrieving weather data", e
			self.show_error((_("Error retrieving weather data"), e))

		return forecast


	def parseWeatherDataHourly(self):
		if self.use_metric:
			unit = 'm'
		else:
			unit = 's'

		hforecast = []
		try:
			
			proxies = proxy.Proxy().get_proxy()
			data = urlopen('http://wxdata.weather.com/wxdata/weather/local/'+self.ZIP+'?cc=*&dayf=10&prod=xoap&par=1003666583&key=4128909340a9b2fc&unit='+unit+'&hbhf=12&link=xoap',proxies=proxies).read()
			for x in range(8):
				dcstart = data.find('<hour h=\"'+str(x))
				dcstop = data.find('</hour>',dcstart)   ####hourly forecast
				hour = data[dcstart:dcstop]
				hforecast.append(self.tokenizeForecastHourly(hour))
		except (IOError, socket.error), e:
			print "Error retrieving weather data", e
			self.show_error((_("Error retrieving weather data"), e))

		return hforecast


	def tokenizeForecast(self, data):
	
		day = self.getBetween(data, '<part p="d">', '</part>')
		daywind = self.getBetween(day, '<wind>', '</wind>')
	
		night = self.getBetween(data, '<part p="n">', '</part>')
		nightwind = self.getBetween(night, '<wind>', '</wind>')

		tokenized = {
		'date': self.getBetween(data, 'dt=\"','\"'),
		'day' : self.getBetween(data, 't=\"','\"'),
		'high': self.getBetween(data, '<hi>','</hi>'),
		'low': self.getBetween(data, '<low>','</low>'),	
		'sunr': self.getBetween(data, '<sunr>','</sunr>'),
		'suns' : self.getBetween(data, '<suns>','</suns>'),		
		'dayicon' : self.getBetween(day, '<icon>','</icon>'), 
		'daystate' : self.getBetween(day, '<t>','</t>'), 
		'daywindspeed' : self.getBetween(daywind, '<s>','</s>'), 
		'daywinddir' : self.getBetween(daywind, '<t>','</t>'), 
		'dayppcp' : self.getBetween(day, '<ppcp>','</ppcp>'), 
		'dayhumid' : self.getBetween(day, '<hmid>','</hmid>'),
		'nighticon' : self.getBetween(night, '<icon>','</icon>'), 
		'nightstate' : self.getBetween(night, '<t>','</t>'), 
		'nightwindspeed' : self.getBetween(nightwind, '<s>','</s>'), 
		'nightwinddir' : self.getBetween(nightwind, '<t>','</t>'), 
		'nightppcp' : self.getBetween(night, '<ppcp>','</ppcp>'), 
		'nighthumid' : self.getBetween(night, '<hmid>','</hmid>'),
		}
		return tokenized

	def tokenizeForecastHourly(self, data):
		tokenized = {
		'hour' : self.getBetween(data, 'c=\"','\"'),
		'tmp': self.getBetween(data, '<tmp>','</tmp>'),
		'flik': self.getBetween(data, '<flik>','</flik>'),
		'icon': self.getBetween(data, '<icon>','</icon>')
		}
		return tokenized
	
	def tokenizeCurrent(self, data):
		wind = self.getBetween(data, '<wind>', '</wind>')
		bar = self.getBetween(data, '<bar>', '</bar>')
		uv = self.getBetween(data, '<uv>', '</uv>')
		state = self.getBetween(data, '</flik>', '<t> ')

		tokenized = {
		'where': self.getBetween(data, '<dnam>','</dnam>'),
		'time' : self.getBetween(data, '<tm>','</tm>'),
		'sunr': self.getBetween(data, '<sunr>','</sunr>'),
		'suns' : self.getBetween(data, '<suns>','</suns>'),	
		'date' : self.getBetween(data, '<lsup>','</lsup>'),
		'temp' : self.getBetween(data, '<tmp>','</tmp>'),	
		'flik' : self.getBetween(data, '<flik>','</flik>'), 
		'state' : self.getBetween(state, '<t>','</t>'), 
		'icon' : self.getBetween(data, '<icon>','</icon'),
		'pressure' : self.getBetween(data, '<r>','</r>'),
		'windspeed' : self.getBetween(wind, '<s>','</s>'), 
		'winddir' : self.getBetween(wind, '<t>','</t>'), 
		'humid' : self.getBetween(data, '<hmid>','</hmid>'),
		'vis' : self.getBetween(data, '<vis>','</vis>'),
		'dew' : self.getBetween(data, '<dewp>','</dewp>')
		}
		return tokenized		


	def getBetween(self, data, first, last):
		x = len(first)
		begin = data.find(first) +x
		end = data.find(last, begin)
		return data[begin:end]


	def get_icon(self, code):
		if code < 3200:
			weather = str(code)
		
		elif code == 3200:
			weather = "na"
		return weather


	def get_day_or_night(self, weather):
		time = weather[0]["time"].split()[0]
		ampm = weather[0]["time"].split()[1]
		sunset = weather[0]["suns"].split()[0]
		sunrise = weather[0]["sunr"].split()[0]

		hour = time.split(':')[0]
		min = time.split(':')[1]
		risehr = sunrise.split(':')[0]
		risemin = sunrise.split(':')[1]
		sethr = sunset.split(':')[0]
		setmin = sunset.split(':')[1]

		if int(hour) == 12:
			hour = 0
		if ampm == "AM" :
		        if int(risehr) > int(hour) :
		                dark = 1
		        elif int(risehr) < int(hour) :
				dark = 0
		        else :
		                if int(risemin) > int(min) :
        	                	dark = 1
      		          	elif int(risemin) < int(min) :
       	 	                	dark = 0
         		        else :
           				dark = -1

		elif ampm == "PM" :
		        if int(sethr) > int(hour) :
		                dark = 0
		        elif int(sethr) < int(hour) :
		                dark = 1
		        else :
		                if int(setmin) > int(min) :
		                        dark = 0
		                elif int(setmin) < int(min) :
		                        dark = 1
		                else :
		                        dark = -1
		if dark == 1:
			return "moon"
		else:
			return "sun"


	def on_draw(self, ctx):
		weather = self.latest
		hourly = self.latestHourly


		# set size
		ctx.scale(self.scale, self.scale)
		# draw bg (if theme available)
		ctx.set_operator(cairo.OPERATOR_OVER)
		ctx.set_source_rgba(*self.background_color)
		if self.theme:
			s = self.theme.path
			if (self.mini == False and weather != []):
				self.theme.render(ctx,'weather-bg')
				
				if self.theme_name == 'default':self.draw_rounded_rectangle(ctx,11.5,18.5,8,120,80)
				self.theme.render(ctx,'weather-bg')
			else:
				if self.theme_name == 'default':self.draw_rounded_rectangle(ctx,11.5,18.5,8,120,41.8)
				self.theme.render(ctx,'weather-bg-mini')
				
		ctx.set_source_rgba(*self.font_color)
		# draw memory-graph
		if self.theme:
			if weather == []:
				
				self.draw_text(ctx,'<b>No weather information available</b>', 15, 35, self.font.split(' ')[0], 4,  self.width,pango.ALIGN_LEFT)

			else:
				ctx.save()
				ctx.translate(-2, 0)
				ctx.scale(.6,.6)
				if weather[0]["icon"]=="-": weather[0]["icon"]="48"
				icon = str(self.get_icon(int(weather[0]["icon"])) )
				self.theme.render(ctx,icon)
				ctx.restore()
				
			#	for x in range(4):
			#		ctx.save()
			#		ctx.translate(28+x*10,3);
			#		icon = str(self.get_icon(int(hourly[x+1]["icon"])) )
			#		ctx.scale(.25,.25)
			#		self.theme.render(ctx,icon)
			#		ctx.restore()

				degree = unichr(176) 
				if self.use_metric:
					suffix =  'C'
					speed_suffix = 'Kph'
				else:
					suffix = 'F' 
					speed_suffix = 'Mph'

				if len(str(weather[0]["temp"])) == 3:
					ctx.translate(-7, 0)
				self.draw_text(ctx,'<b>' + weather[0]["temp"] + degree + suffix + '</b>' , 95,25, self.font.split(' ')[0], 10,  self.width,pango.ALIGN_LEFT)
				self.draw_text(ctx,'<b>' + weather[0]["where"][:weather[0]["where"].find(',')][:12] +'</b>', -5,45, self.font.split(' ')[0], 7, self.width,pango.ALIGN_RIGHT)

			#	ctx.translate(0, 6)
			#	p_layout = ctx.create_layout()
			#	p_fdesc.set_size(3 * pango.SCALE)
			#	p_layout.set_font_description(p_fdesc)
			#	p_layout.set_markup('<b>'+weather[0]["where"][weather[0]["where"].find(',') + 2:]+'</b>')
			#	ctx.show_layout(p_layout)

			#	ctx.translate(0, 8)
			#	p_layout = ctx.create_layout()
			#	p_fdesc = pango.FontDescription()
			#	p_fdesc.set_family_static("Sans")
			#	p_fdesc.set_size(5 * pango.SCALE)
			#	p_fdesc.set_weight(300)
			#	p_fdesc.set_style(pango.STYLE_NORMAL)   ####render today's highs and lows
			#	p_layout.set_font_description(p_fdesc)
			#	p_layout.set_markup('<b>' + "High: "+weather[1]["high"] + degree + "   Low: " +weather[1]["low"] + degree +'</b>')						
			#	ctx.show_layout(p_layout)
					


#other stuff text

			
	#			for x in range(4):
	#				ctx.save();
	#				ctx.translate(x*10,0);
	#				p_layout.set_markup('<i>' + ""+hourly[x+1]["hour"] + "h</i>")						
	#				ctx.show_layout(p_layout)
	#				ctx.restore();
	#			ctx.translate(0,5);
	#			for x in range(4):
	#				ctx.save();
	#				ctx.translate(x*10,0);
	#				p_layout.set_markup('<b>' + ""+hourly[x+1]["tmp"] + degree + "</b>")						
	#				ctx.show_layout(p_layout)
	#				ctx.restore();

				
		#		ctx.translate(0, 5)
		#		p_layout.set_markup("p:<b>"+weather[0]["pressure"]+"</b>  h:<b>"+weather[0]["humid"] + "%</b>  w:<b>" +weather[0]["windspeed"] + " m/s</b>")	
		#		ctx.show_layout(p_layout)

				if (self.mini == False):
			
					ctx.save() 
					ctx.translate(14, 60)
					self.theme.render(ctx,'day-bg')					
					#self.theme['day-bg.svg'].render_cairo(ctx)   ###render the days background
					#print self.theme.path
					self.draw_text(ctx,weather[1]["day"][:3], 0,0, self.font.split(' ')[0], 5, self.width,pango.ALIGN_LEFT)

				#	p_layout.set_markup('<b>' +weather[1]["day"][:3] + '</b>')		
				#	ctx.show_layout(p_layout)
					ctx.translate(24, 0)
					self.draw_text(ctx,weather[2]["day"][:3], 0,0, self.font.split(' ')[0], 5, self.width,pango.ALIGN_LEFT)

					ctx.translate(24, 0)
					self.draw_text(ctx,weather[3]["day"][:3], 0,0, self.font.split(' ')[0], 5, self.width,pango.ALIGN_LEFT)

					ctx.translate(24, 0)
					self.draw_text(ctx,weather[4]["day"][:3], 0,0, self.font.split(' ')[0], 5, self.width,pango.ALIGN_LEFT)

					ctx.translate(24, 0)
					self.draw_text(ctx,weather[5]["day"][:3], 0,0, self.font.split(' ')[0], 5, self.width,pango.ALIGN_LEFT)

					ctx.translate(24, 0)
					self.draw_text(ctx,weather[6]["day"][:3], 0,0, self.font.split(' ')[0], 5, self.width,pango.ALIGN_LEFT)


					ctx.restore()	

				#	ctx.save()	
				#	ctx.translate(0, 50)   ###render the days background
				#	self.theme['day-bg.svg'].render_cairo(ctx)
				#	p_layout = ctx.create_layout()
				#	p_fdesc = pango.FontDescription()
				#	p_fdesc.set_family_static("Monospace")
				#	p_fdesc.set_size(3 * pango.SCALE)
				#	p_fdesc.set_weight(300)    ###render the days of the week (second row)
				#	p_fdesc.set_style(pango.STYLE_NORMAL)
				#	p_layout.set_font_description(p_fdesc)
				#	p_layout.set_markup('<b>' + "  "+weather[4]["day"].center(14)+weather[5]["day"].center(14)+weather[6]["day"].center(12)+'</b>')						
				#	ctx.show_layout(p_layout)
				#	ctx.restore()

					#ctx.save()
					#ctx.translate(36, 28)
					#self.theme['divider.svg'].render_cairo(ctx)
					#ctx.translate(31,0)     ######render the dividers
					#self.theme['divider.svg'].render_cairo(ctx)
					#ctx.restore()
		

					ctx.save()
					ctx.translate(14, 68)
					self.draw_scaled_image(ctx,0,0,self.theme.path + '/' +self.get_icon(int(weather[1]["nighticon"]))+ '.png',22,22)
					ctx.translate(24,0)
					self.draw_scaled_image(ctx,0,0,self.theme.path + '/' +self.get_icon(int(weather[2]["dayicon"]))+ '.png',22,22)
					ctx.translate(24,0)
					self.draw_scaled_image(ctx,0,0,self.theme.path + '/' +self.get_icon(int(weather[3]["dayicon"]))+ '.png',22,22)
					ctx.translate(24, 0)
					self.draw_scaled_image(ctx,0,0,self.theme.path + '/' +self.get_icon(int(weather[4]["dayicon"]))+ '.png',22,22)
					ctx.translate(24,0)
					self.draw_scaled_image(ctx,0,0,self.theme.path + '/' +self.get_icon(int(weather[5]["dayicon"]))+ '.png',22,22)
					ctx.restore()						
	
					if self.show_daytemp == True:
						ctx.save()	
						
						ctx.translate(16,90)
						if(weather[1]["high"] == "N/A"):
							self.draw_text(ctx,'<b> </b>'+'|'+'<b>' + weather[1]["low"]+degree+'</b>', 0,0, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)
						else:
							self.draw_text(ctx,'<b>' + weather[1]["high"]+degree+'</b>'+'|'+'<b>' + weather[1]["low"]+degree+'</b>', 0,0, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)
						ctx.translate(24, 0)
						self.draw_text(ctx,'<b>' + weather[2]["high"]+degree+'</b>'+'|'+'<b>' + weather[2]["low"]+degree+'</b>', 0,0, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)
						ctx.translate(24,0)
						self.draw_text(ctx,'<b>' + weather[3]["high"]+degree+'</b>'+'|'+'<b>' + weather[3]["low"]+degree+'</b>', 0,0, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)
						ctx.translate(24,0)
						self.draw_text(ctx,'<b>' + weather[4]["high"]+degree+'</b>'+'|'+'<b>' + weather[4]["low"]+degree+'</b>', 0,0, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)	
						ctx.translate(24,0)
						self.draw_text(ctx,'<b>' + weather[5]["high"]+degree+'</b>'+'|'+'<b>' + weather[5]["low"]+degree+'</b>', 0,0, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)

					
						ctx.restore()
			
				#self.draw_text(ctx,'<b>' + weather[1]["high"]+degree+'</b>', 68, 28, self.font.split(' ')[0], 5, self.width,pango.ALIGN_LEFT)
				#self.draw_text(ctx,'<b>' + weather[1]["low"]+degree+'</b>', 68, 34, self.font.split(' ')[0], 5, self.width,pango.ALIGN_LEFT)

				self.draw_text(ctx,'H:' + weather[0]["humid"]+'%', 68, 28, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)

				if(weather[0]["windspeed"] != "calm"):
					self.draw_text(ctx,'W:'+weather[0]["windspeed"] + speed_suffix, 68, 34, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)
				else:
					self.draw_text(ctx,'W:'+weather[0]["windspeed"] , 68, 34, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)

				self.draw_text(ctx,'W Ch:'+ weather[0]["flik"] + degree + suffix , 68, 40, self.font.split(' ')[0], 4, self.width,pango.ALIGN_LEFT)
                		#self.display_details()
					

	def display_details(self):
		weather = self.latest
		
		if len(weather)<=0:return
		
		if self.use_metric:
			degree = unichr(176) + 'C'
			speed_suffix = _('Kph')
			distance_suffix = _('Km')
			pr_suffix = 'hPa'
		else:
			degree = unichr(176) + 'F' 
			speed_suffix = _('Mph')
			distance_suffix = _('Mi')
			pr_suffix = 'in'

		if(weather[0]["windspeed"] != "calm"):
			wind_direction = speed_suffix + ' From ' + weather[0]["winddir"][:2] 
		else:
			wind_direction = ''



		details = 'Location    : ' + weather[0]["where"] + '  \n' \
			  'Now         : ' + weather[0]["state"] +'\n'\
			  'Temperature : ' + weather[0]["temp"] + degree +'\n'\
			  'Feels Like  : ' + weather[0]["flik"] + degree +' \n'\
			  'Humidity   : ' + weather[0]["humid"] + '% \n' \
			  'Wind  : ' + weather[0]["windspeed"]  + wind_direction + '\n'\
			  'Pressure    : ' + weather[0]["pressure"] + pr_suffix + '\n' \
			  'Visibility    : ' + weather[0]["vis"] + distance_suffix + '\n' \
			  'Sunrise      : ' + weather[0]["sunr"] + '\n' \
			  'Sunset       : ' + weather[0]["suns"] + '\n' 

		self.window.set_tooltip_text(details)
		#print details
		

	def on_mouse_leave (self, event):
		"""Called when the mouse leaves the Screenlet's window."""
		#self.redraw_canvas()
		pass
					
	def on_mouse_move(self, event):
		"""Called when the mouse moves in the Screenlet's window."""
		self.display_details()
		self.redraw_canvas()	

	def on_mouse_down(self,event):
		if event.button == 1:
			x = event.x / self.scale
			y = event.y / self.scale

		
			if y >= 75 and x <= 132 and x >= 110:
				os.system('xdg-open http://weather.com')

	def on_draw_shape(self,ctx):
		if self.theme:
			# set size rel to width/height
			self.on_draw(ctx)

	def menuitem_callback(self, widget, id):
		screenlets.Screenlet.menuitem_callback(self, widget, id)
		if id=="city":
			self.show_edit_dialog()
			self.update()
		if id == "mini":
			self.mini = not self.mini
			self.update()
			


	def show_edit_dialog(self):
		# create dialog
		dialog = gtk.Dialog(_("City"), self.window)
		dialog.resize(300, 100)
		dialog.add_buttons(gtk.STOCK_OK, gtk.RESPONSE_OK, 
			gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
		entrybox = gtk.Entry()
		entrybox.set_text(self.CITY)
		dialog.vbox.add(entrybox)
		entrybox.show()	
		# run dialog
		response = dialog.run()
		if response == gtk.RESPONSE_OK:
                    city = entrybox.get_text()
                    dialog.hide()
                    zip = self.get_zip_code(city)
                    if zip != -1:
                        self.ZIP = zip
                        self.CITY=city
                        self.updated_recently = 1
		


	def get_zip_code(self,city):
            """Getting ZIP from www.weather.com"""
            city_name = city
            req_string = "/search/enhancedlocalsearch?where="
            req_string = req_string + '+'.join(city_name.split())
            try:
                connection1 = httplib.HTTPConnection("www.weather.com")
                connection1.request("GET",req_string)
                resp = connection1.getresponse()
                response = resp.read()
                rg_zip = re.compile("[+]\D\D\D\D\d\d\d\d\"")
                rg_city = re.compile(city_name+",(.+)")
                list_zip_codes = rg_zip.findall(response)
                list_cities = rg_city.findall(response)
                if len(list_zip_codes)==1:
                    zip = list_zip_codes[0]
                    return zip[1:9]
                elif len(list_zip_codes)==0 or len(list_cities)==0:
                    self.show_error()
                    return -1
                else:
                    return self.show_choose_city_dialog(city_name, list_cities,list_zip_codes)
            except (IOError, socket.error, Exception), e:
                self.show_error()
                return -1

        def show_choose_city_dialog(self, city_name, list_of_cities, list_of_zips):
            """Dialog to choose if multiple cities from multiple countries with same name available"""
            self.city_select_dialog = gtk.Dialog("Choose city")
            self.city_select_dialog.resize(200,50) 
            cnt = 0
            for city in list_of_cities:
                button = gtk.Button(city_name+" - "+ city)
                button.connect("button_press_event", self.city_selected_callback, list_of_zips[cnt])
                button.show()
                self.city_select_dialog.vbox.add(button)
                cnt = cnt + 1
            self.city_select_dialog.run()
            return self.czip

        def city_selected_callback(self,widget, event, data):
            self.czip = data[1:9]
            self.city_select_dialog.destroy()



	def show_error(self, reason=None):

		dialog = gtk.Dialog(_("Zip Code"), self.window)
		dialog.resize(300, 100)
		dialog.add_buttons(gtk.STOCK_OK, gtk.RESPONSE_OK)

		reasonstr = "\nReason: %s" % reason if reason is not None else ""

		label = gtk.Label(_("Could not reach weather.com.  Check your internet connection and location and try again.")+reasonstr)
		dialog.vbox.add(label)
		check = gtk.CheckButton(_("Do not show this again"))
		dialog.vbox.add(check)
		dialog.show_all()
		response = dialog.run()
		if response == gtk.RESPONSE_OK:
			if check.get_active() == True:
				self.show_error_message = 0			
			dialog.hide()


if __name__ == "__main__":
	import screenlets.session
	screenlets.session.create_session(ClearWeatherScreenlet)

Note : Cette version porte un numéro de version modifié "0.7.42+++", l'original étant le "0.7.41+++".
3 - Dans le répertoire "~/.screenlets/ClearWeather" remplacer le fichier script "ClearWeatherScreenlet.py" par la copie modifiée.
4 - Faire clic droit sur le ClearWeather courant (qui ne fonctionne pas) et choisir "Quitter ce ClearWeather" pour le fermer.
5 - Ouvrir le gestionnaire de screenlets, choisir "ClearWeather" et cocher l'option "Démarrer/Arrêter" pour relancer ClearWeather.
Voilà, vous devez à nouveau pouvoir profiter des prévisions météo sur votre bureau !
Edit : Pense-bête... Si vous enregistrez la copie comme nouveau fichier script, n'oubliez pas de lui ajouter l'option "Exécuter comme un programme" dans les Propriétés, afin qu'il puisse être exécuté. Si vous avez plusieurs comptes sur la machine, cette version ne fonctionnera que pour le compte dans lequel elle a été installée, contrairement à celle de "/usr/share" qui s'applique globalement à tous les utilisateurs.

Dernière modification par erresse (Le 03/09/2015, à 18:22)


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#7 Le 05/09/2015, à 08:31

lordenoy

Re : [Résolu] Indicateurs météo

Bonjour,

Merci de me donner la solution. J'apprécie beaucoup le travail effectué, et l'attention portée à ma question.
Hélas, je ne comprend pas bien comment faire, n'étant pas très aguerri sous Linux hmm

Ma foi tant pis, ces screenlets ne sont pas essentiels et je m'en passerai.

Bonne continuation.
Cordialement.

Dernière modification par lordenoy (Le 05/09/2015, à 09:32)

Hors ligne

#8 Le 06/09/2015, à 16:08

erresse

Re : [Résolu] Indicateurs météo

Bonjour,

Dommage d'abandonner ce gadget si pratique. Pour ma part je suis particulièrement heureux d'avoir réussi à le remettre en fonction, car j'aime bien avoir les prévisions sous les yeux sur mon bureau, d'autant plus qu'elles sont plutôt fiables et automatiquement actualisées.
J'ai aussi, sans grand espoir de prise en compte malheureusement, adressé ma version du script au développeur qui figure dans les propriétés du paquet "screenlets", en lui demandant de l'intégrer à une prochaine version du paquet, mais comme il semble que "screenlets" ne soit plus maintenu...
Enfin, on ne sait jamais, si la démarche aboutit, peut-être aura-t-on la surprise de recevoir une mise à jour un de ces jours.

Bonne continuation également !


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#9 Le 06/09/2015, à 16:34

lordenoy

Re : [Résolu] Indicateurs météo

Bonjour,
Oui je regrette également, d'autant plus que cela me permettait de visualiser la météo chez mes proches.
Mais bon, tant pis,  puisque je ne parviens pas faire...
J'ai bien copié le scrip dans l'éditeur de texte, mais ne vois pas en 1, où trouver le dossier ClearWeather pour le dupliquer et en 3, comment trouver le fameux répertoire à remplacer.
Il ne me reste plus qu'à espérer que votre démarche aboutisse...
Encore merci.

Hors ligne

#10 Le 06/09/2015, à 17:51

erresse

Re : [Résolu] Indicateurs météo

Hé bien, j'ai donné dans mon message les commandes à exécuter pour construire l'environnement. Il faut juste ouvrir un terminal et copier / coller chaque ligne du point 1 dedans, l'une après l'autre.
Le répertoire privé ".screenlets" est un répertoire caché (le nom commence par un point). S'il existe déjà dans le dossier personnel, un message d'erreur s'affichera lors de l'exécution de la commande "mkdir", sinon le répertoire sera créé.
Ensuite, la commande "cp" duplique le dossier ClearWeather dans ce répertoire privé.
Ensuite, la commande "cd" permet de se placer dans le dossier d'origine, et la commande "mv" change le nom du dossier ClearWeather en ClearWeather_bad pour le sauvegarder.
Il ne reste plus qu'à remplacer le script dans le dossier ClearWeather privé.
Pour cela, le plus simple est de faire, dans son dossier personnel :
- Ouvrir l'éditeur de texte. Pour voir les fichiers / dossiers cachés, il faut utiliser le raccourci "Ctrl+H".
- On cherche le répertoire ".screenlets" et on l'ouvre d'un double clic.
- Dans ce répertoire, oàn voit le dossier "ClearWeather". On l'ouvre d'un double clic.
- Dans ce dossier se trouve le script "ClearWeatherScreenlet.py" que l'on charge pour le modifier.
- On sélectionne tout le contenu que l'on remplace par la nouvelle version récupérée ici, et on réécrit le fichier.
- On ferme l'éditeur de texte.
C'est tout.
Si ce n'est déjà fait, on ferme le gadget ClearWeather en cours sur le bureau (par clic droit et "Quitter ce ClearWeather").
Il suffit alors d'aller dans le gestionnaire de screenlets et de lancer à nouveau ClearWeather qui va alors s'ouvrir et afficher normalement la météo...
Voilà, j'espère que le détail de ces manipulation te permettra de relancer le gadget sans problème et... d'apprendre (un peu) des manipulations que l'on peut faire sous Linux.
Tu ne risques rien d'essayer, au fond, ce n'est pas si compliqué, il faut juste un peu de rigueur pour passer les commandes, car en terminal, les noms sont "case sensitive", on ne doit donc pas taper une minuscule si une majuscule est attendue sinon ça ne marche pas !


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#11 Le 06/09/2015, à 18:18

lordenoy

Re : [Résolu] Indicateurs météo

Ma foi, le terminal me donne ça à la deuxième commande :
http://www.cjoint.com/c/EIgqrIdSMgV
je ne peux donc pas poursuivre...

Hors ligne

#12 Le 06/09/2015, à 19:07

erresse

Re : [Résolu] Indicateurs météo

Bizarre ! Aurais-tu désinstallé "screenlets" ou supprimé le gadget "ClearWeather" au lieu de juste le fermer ?
Normalement, si "screenlets" est installé sur ta machine avec le paquet "screenlets-pack-all", tu dois forcément avoir le dossier ClearWeather dedans...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#13 Le 06/09/2015, à 20:06

Tootoon

Re : [Résolu] Indicateurs météo

Bonjour,

Un petit message pour dire un grand MERCI à erresse!!!!!!!!
C'est effectivement le genre de trucs banals et anodins, mais trèèèès agaçants...

Du coup, je retrouve enfin la météo (fiable) de notre belle ville de La Rochelle souvent ensoleillée sur mon bureau!!!! cool

Merci encore pour ta persévérance!!! smile


Ubuntu 19.10 sur: Lenovo Ideapad U430 Touch Core i5 1,6GHz 8Go RAM; Lenovo Thinkcentre M93p Tiny Core i5 2,9GHz 16Go RAM; Ubuntu 19.04: Lenovo Ideapad 100-14IBY Intel Celeron 2,16GHz 8Go RAM.
BQ Aquaris E4.5 Ubuntu Edition
BQ Aquaris E5 HD Ubuntu Edition
BQ Aquaris M10 Ubuntu Edition Full HD

Hors ligne

#14 Le 06/09/2015, à 20:31

Carroués

Re : [Résolu] Indicateurs météo

Et quasiment de consort, à mon tour des remerciements sincères erresse. Mon "Clear weather" me manquait bien depuis 3 semaines environ.

J'ai fait en mode raccourci, ce qui peut fonctionner pour lordenoy par exemple qui a eu la même erreur que moi car je n'ai pas, non plus, de répertoire /usr/share/screenlets/screenlets-pack-all. (Je suis sous Mate, est-ce ça qui crée la différence ?)

J'ai tout simplement modifié dans le script l'adresse du site que tu as donnée, au moyen d'un éditeur de texte, c'est à dire avec "Plume" sous Mate. J'ai fait ma recherche (Ctrl+f) de xoap.weather.com - et non xaop comme tu l'as marqué - puis j'ai remplacé les deux occurrences par wxdata.weather.com/wxdata/, puis enregistré et relancé Screenlets. Nickel !!!

Merci bien erresse ! smile

Hors ligne

#15 Le 07/09/2015, à 07:47

lordenoy

Re : [Résolu] Indicateurs météo

Bonjour erresse,

erresse a écrit :

Bizarre ! Aurais-tu désinstallé "screenlets" ou supprimé le gadget "ClearWeather" au lieu de juste le fermer ?
Normalement, si "screenlets" est installé sur ta machine avec le paquet "screenlets-pack-all", tu dois forcément avoir le dossier ClearWeather dedans...

Voyant que ça ne fonctionnait plus, j'ai dans un premier temps désinstallé "screenlets".
Là je l'ai réinstallé avec le paquet sreenlets-pack-all" et remis et configuré les gadgets sur le bureau qui bien sûr ne s'ouvrent pas.
Après avoir redémarré l'ordinateur, le terminal ne trouve toujours pas le dossier hmm

Hors ligne

#16 Le 07/09/2015, à 09:00

lordenoy

Re : [Résolu] Indicateurs météo

Voilà ce que j'obtiens en saisissant la commande cp --help, ce qui est pour moi, un charabia incompréhensible :

Dernière modification par lordenoy (Le 08/09/2015, à 13:29)

Hors ligne

#17 Le 07/09/2015, à 09:38

sinbad83

Re : [Résolu] Indicateurs météo

Pour info, la doc https://doc.ubuntu-fr.org/screenlets comporte un avertissement:
Screenlets n'est plus maintenu et de nombreux gadgets ne fonctionnent pas. De plus, aucun gadget météo ne parvient à se connecter à son serveur.


La connaissance n'est pas une denrée rare, il faut la partager avec les autres.
Linux registered #484707
Site: www.coursinforev.org/doku.php
Desktop AMD Ryzen 5-3600, RAM 16GB, Ubuntu 20.10,   HP Pavillon G6 Ubuntu 20.10 et Ten, Serveur Ubuntu 18.04

Hors ligne

#18 Le 07/09/2015, à 16:02

erresse

Re : [Résolu] Indicateurs météo

@sinbad83: C'est exact, j'avais aussi vu cette information dans la doc, mais elle n'a pas été inscrite récemment, or le dysfonctionnement de ClearWeather ne remonte qu'à quelques jours, jusqu'ici il fonctionnait très bien.
C'est dommage que screenlets ne soit plus maintenu, je l'aimais bien, moi ! Peut-être qu'il n'est pas compatible avec Unity, ce serait pour cela qu'on l'a abandonné ???
@Carroués: Bah, je suis moi-même sous Ubuntu-MATE, je peux donc t'assurer que ça fonctionne bien dans cet environnement... et que ce dossier (/usr/share/screenlets/screenlets-pack-all) existe bien :

user@user:~$ ls /usr/share/screenlets/screenlets-pack-all
ACPIBattery       EvolutionContacts  MainMenu       Shutdown
AgeExtended       Example            Manometer      Sidebar
AppMenu           Execute            Meter          Slideshow
Brightness        FeedReader         Mount          SmoothWeather
Calc              FeedReaderPlus     MyIp           Speech
Calendar          FlipClock          Netmon         Sticker
CircleClock       Flower             Netmonitor     Stocks
ClearCalendar     FolderView         NetSpeed       Storage
ClearRss          FreemeteoWeather   Notes          Sysmonitor
ClearWeather      Funnyordie         NowPlaying     Terminal
Clock             FuriusMoon         NVidia         Test
CompositeToggler  FusionSwitch       OSM            TextDateTime
Control           FuzzyClock         Output         Tomboy
Convert           Gmail              Pager          Transmission
CopyStack         GoogleCalendar     PhotoWall      Trash
Countdown         Googlemaps         Picframe       Tux
CPUMeter          HAL9000            PicUpload      Twitter
DayinHistory      humanPopulation    Pidgin         Uptime
dayNight          InfoPanel          Places         VolumeControl
DigiClock         Kclock             PongClock      WallpaperClock
DigitalClock      Launcher           PPPOE          Weather
DiskIOSpace       LinuxEstoniaStats  Radio          Webframe
DiskSpace         LinuxSerbiaStats   RingSensors    WidescapeWeather
Diskusage         Lipik              Ruler          Windowlist
Dropbox           LostCountdown      Search         Wireless
EMHI              Lyrics             SearchTorrent  WorldClock
eventCal          MailCheck          Sensors        Youtube
user@user:~$ 

Voici son contenu, listé ci-dessus.
@lordenoy: Comme je l'ai dit à Carroués, ce répertoire existe forcément... Toutes les installations *buntu ou Debian comportent une arborescence standard dans laquelle on trouve le répertoire "/usr" qui contient tous les logiciels installés par l'utilisateur (sauf quelques exceptions hors-dépôts qui s'installent alors dans "/opt").
Pour éviter les erreurs de saisie (il me semble que ta commande "cp" que je n'ai pas vue a échoué parce-que tu as oublié l'option "-r") il est recommandé de copier sur le forum et de coller les commandes dans le terminal. Comme je le disais, il suffit d'une lettre incorrecte pour que la commande ne fonctionne pas...
Puisque tu maîtrises suffisamment le terminal pour poster les retours ici, je te propose de passer les commandes suivantes et de nous donner les retours :

ls -la ~/
ls -la /usr/share/screenlets
ls /usr/share/screenlets/screelets-pack-all

On doit y voir que le répertoire caché ".screenlets" existe bien dans ton dossier personnel, et que l'arborescence "/usr/..." que j'ai citée existe aussi, ainsi que le dossier ClearWeather original.
A partir de là, il n'y a pas de raison qu'on ne puisse copier ce dossier puis le modifier comme on le désire !


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#19 Le 07/09/2015, à 16:20

Carroués

Re : [Résolu] Indicateurs météo

Que nenni !

paul@carroues:~$ ls /usr/share/screenlets
screenlets-pack-basic
paul@carroues:~$ 
paul@carroues:~$ ls /opt
paul@carroues:~$

Toujours-est il qu'avec la modification de l'URL à http://wxdata.weather.com/wxdata/weather/local/ aux lignes 165 et 194, ça fonctionne parfaitement. Bien trouvé et mes remerciements de nouveau.

Hors ligne

#20 Le 07/09/2015, à 16:33

erresse

Re : [Résolu] Indicateurs météo

Le paquet "...pack-basic" contient beaucoup moins de gadgets. C'est celui qui est installé par défaut, mais on peut le remplacer par "...pack-all" qui en ajoute plein d'autres.
C'est ce que j'avais suggéré à lordenoy, et il me dit avoir réinstallé "screenlets" et "screenlets-pack-all". Il n'y a donc pas de raison pour qu'il ne trouve pas ce répertoire !

Dernière modification par erresse (Le 07/09/2015, à 16:36)


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#21 Le 08/09/2015, à 07:42

lordenoy

Re : [Résolu] Indicateurs météo

Bonjour à tous,

erresse a écrit :

(il me semble que ta commande "cp" que je n'ai pas vue a échoué parce-que tu as oublié l'option "-r")

Non non, j'ai bien fait un copié/collé, mais n'ai envoyé que la partie concernant la suggestion de commande "help"

Dernière modification par lordenoy (Le 08/09/2015, à 13:30)

Hors ligne

#22 Le 08/09/2015, à 10:23

erresse

Re : [Résolu] Indicateurs météo

Bonjour,
Donc, le répertoire privé ".screenlets" existe bien dans ton dossier personnel.
Ici, il y a une erreur :

lordenoy a écrit :

drwxr-xr-x 110 root root  4096 sept.  6 20:29 screenlets-pack-all
mamie@mamie-PW766AA-ABF-SR1345FR-FR510:~$ ls /usr/share/screenlets/screelets-pack-all
ls: impossible d'accéder à /usr/share/screenlets/screelets-pack-all: Aucun fichier ou dossier de ce type

Il manque un "n" au nom du répertoire : screelets au lieu de screenlets, c'est pourquoi le système ne trouve pas...
Toutefois, ce répertoire existe bien, comme le montre la première ligne.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#23 Le 08/09/2015, à 10:50

lordenoy

Re : [Résolu] Indicateurs météo

Ah, flûte... :

Ma foi je crois avoir trouvé avec la commande Ctrl H il apparaît celui-ci : ClearWeatherScreenlet.py
Donc je le vide et copie l'autre script... c'est ça ?

Dernière modification par lordenoy (Le 08/09/2015, à 13:31)

Hors ligne

#24 Le 08/09/2015, à 11:58

erresse

Re : [Résolu] Indicateurs météo

Dans mon message #11 :

erresse a écrit :

Il ne reste plus qu'à remplacer le script dans le dossier ClearWeather privé.
Pour cela, le plus simple est de faire, dans son dossier personnel :
- Ouvrir l'éditeur de texte. Pour voir les fichiers / dossiers cachés, il faut utiliser le raccourci "Ctrl+H".
- On cherche le répertoire ".screenlets" et on l'ouvre d'un double clic.
- Dans ce répertoire, oàn voit le dossier "ClearWeather". On l'ouvre d'un double clic.
- Dans ce dossier se trouve le script "ClearWeatherScreenlet.py" que l'on charge pour le modifier.
- On sélectionne tout le contenu que l'on remplace par la nouvelle version récupérée ici, et on réécrit le fichier.
- On ferme l'éditeur de texte.
C'est tout.
Si ce n'est déjà fait, on ferme le gadget ClearWeather en cours sur le bureau (par clic droit et "Quitter ce ClearWeather").
Il suffit alors d'aller dans le gestionnaire de screenlets et de lancer à nouveau ClearWeather qui va alors s'ouvrir et afficher normalement la météo...

Donc, oui, c'est la procédure à suivre pour modifier le script de ClearWeather (qui est normalement dans le dossier caché ".screenlets" de ton dossier personnel, bien sûr).


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#25 Le 08/09/2015, à 13:38

lordenoy

Re : [Résolu] Indicateurs météo

Ça y est, j'y suis enfin parvenu et retrouve avec beaucoup de plaisir mes gadgets météo. cool

Je fais hélas parti des ces personnes qui :
"comprennent vite, mais à qui il faut expliquer longtemps" hmm

Que ferions-nous sans votre soutien et celui de vos semblables...
Un grand merci erresse pour la  patience dont vous avez fait preuve, et pour le suivi.

Bonne continuation... smile
Lordenoy.

Dernière modification par lordenoy (Le 09/09/2015, à 08:57)

Hors ligne