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.

#1126 Le 04/07/2012, à 11:08

ragamatrix

Re : [Conky] Alternative à weather.com (2)

@Didier-T et @Jpdipsy
j'utilise deux fichiers meteo lua (pas taper...) avec des chemins biens ordonnés, je n'ai pas d'erreurs par contre pour la direction du vent (dans rose) un script oriente la flèche dans un sens et l'autre dans l'autre...??
sens du vent
mais d'où vient le vent ? smile

Hors ligne

#1127 Le 04/07/2012, à 11:38

Phyllinux

Re : [Conky] Alternative à weather.com (2)

C'est un point que j'avais déjà noté.
En fait, dans un, la flèche colorée indique 'où va' le vent, et dans l'autre 'd'où vient' le vent.
Tu choisis ce que tu préfères, et pour que les 2 aient la pointe colorée dans la même direction, tu ouvres dans Gimp ton fichier Rose, et tu lui fais faire 180°.

Dernière modification par Phyllinux (Le 04/07/2012, à 11:39)


The ship is sinking normally...

Hors ligne

#1128 Le 04/07/2012, à 12:00

jpdipsy

Re : [Conky] Alternative à weather.com (2)

ragamatrix a écrit :

Merci pour vos conseils; je crois que je ne vais pas faire la mise à jour de Didiet-T...En tous cas pas tout de suite lol

Si c'est pas jouer petit bras !
Ou est cet esprit d'aventure et de découverte que l'on connait  lol

ragamatrix a écrit :

Ps:je trouve que le texte sur la carte sat est un peu flou...bon ok on va pas chipoter smile

Insoluble convert ne gère par les fontes comme tel mais comme une image.

Hors ligne

#1129 Le 04/07/2012, à 12:54

Didier-T

Re : [Conky] Alternative à weather.com (2)

Phyllinux a écrit :
Didier-T a écrit :

[
j'ai oublié de préciser qu'il fallait installer xdotool

pour les "Ok", je suppose qu'ils viennent de d'un echo "Ok" dans le imagesat.sh que tu récupéré sur le forum, j'ai mis a jour le pack avec les fichiers qui vont biens.

xdotool est bien installé, mais toujours pas d'ouverture de menu au clic de souris.
En revanche, je remarque que dans la zone de l'image concernée, le clic droit n'est pas accessible. Il se passe donc bien quelque chose, mais pas le résultat attendu mad
A titre info, dans mon répertoire /tmp, j'ai bien un fichier xdo qui se crée, mais il est vide.

Pour les 'OK', c'est bon, ils ont disparu.

Est-ce que yad est installé sur ton P.C. ?

Hors ligne

#1130 Le 04/07/2012, à 13:12

Phyllinux

Re : [Conky] Alternative à weather.com (2)

Oui, YAD est bien installé.
En prime, ton conky 'Météo-Clic' fonctionne correctement.
J'ai la boîte de dialogue pour le changement de ville, et j'ai les infos sur les conditions météo.

En revanche, pour le clic du changement de satellite, là, ça veut rien entendre...
Je reprends tous les fichiers pour voir si je n'ai pas un chemin mal déclaré...
Y a t'il un moyen pour avoir des infos en terminal ? Car pour météo-clic, tout déroule en terminal, mais pour le changement de satellite, lorsque je lance le conky spécifique au changement de SAT, je n'ai rien qui me permette de voir où ça coince.

Dernière modification par Phyllinux (Le 04/07/2012, à 13:18)


The ship is sinking normally...

Hors ligne

#1131 Le 04/07/2012, à 13:15

Didier-T

Re : [Conky] Alternative à weather.com (2)

Phyllinux a écrit :

Oui, YAD est bien installé.
En prime, ton conky 'Météo-Clic' fonctionne correctement.
J'ai la boîte de dialogue pour le changement de ville, et j'ai les infos sur les conditions météo.

En revanche, pour le clic du changement de satellite, là, ça veut rien entendre...
Je reprends tous les fichiers pour voir si je n'ai pas un chemin mal déclaré...
Y a t'il un moyen pour avoir des infos en terminal ? Car pour météo-clic, tout déroule en terminal, mais pour le changement de satellite, lorsque je lance le conky spécifique au changement de SAT, je n'ai rien qui me permette de voir où ça coince.

je me demande si la fenêtre du conky qui sert de surface de clic est au bonne endroit, pour vérifier il suffit de mettre en remarque la ligne suivante

own_window_argb_visual true

sa ferra un gros trous la ou ce situe la fenêtre.

Hors ligne

#1132 Le 04/07/2012, à 13:23

Phyllinux

Re : [Conky] Alternative à weather.com (2)

C'est bon, j'ai trouvé mon erreur lol
Le chemin du script change satellite était mal déclaré sad
Du coup, il pouvait chercher longtemps...
En revanche, comment fait on pour changer la position de la boîte de dialogue des choix ?
Car je la trouve un peu trop basse, et je voudrais la monter juste au dessus du dock.


The ship is sinking normally...

Hors ligne

#1133 Le 04/07/2012, à 13:26

Didier-T

Re : [Conky] Alternative à weather.com (2)

Phyllinux a écrit :

C'est bon, j'ai trouvé mon erreur lol
Le chemin du script change satellite était mal déclaré sad
Du coup, il pouvait chercher longtemps...
En revanche, comment fait on pour changer la position de la boîte de dialogue des choix ?
Car je la trouve un peu trop basse, et je voudrais la monter juste au dessus du dock.

dans Clic_sat.lua à la ligne 32 tu change posx posy par les coordonnées qui t'intéresse.

Hors ligne

#1134 Le 04/07/2012, à 13:33

Phyllinux

Re : [Conky] Alternative à weather.com (2)

Merquiiii smile


The ship is sinking normally...

Hors ligne

#1135 Le 04/07/2012, à 13:34

Didier-T

Re : [Conky] Alternative à weather.com (2)

ragamatrix a écrit :

@Didier-T et @Jpdipsy
j'utilise deux fichiers meteo lua (pas taper...) avec des chemins biens ordonnés, je n'ai pas d'erreurs par contre pour la direction du vent (dans rose) un script oriente la flèche dans un sens et l'autre dans l'autre...??
http://pix.toile-libre.org/upload/origi … 396427.png
mais d'où vient le vent ? smile

tien, j'ai raté des messages, pff sa vas trop vite pour moi.

tu as créé deux répertoires avec les images de bases, dans l'un des répertoires la flèche point en haut dans le second la flèche pointe en bas.

la direction à conserver est bas, comme sa elle se dirigeras dans le sens du vent

Hors ligne

#1136 Le 04/07/2012, à 14:25

ragamatrix

Re : [Conky] Alternative à weather.com (2)

Phyllinux a écrit :

C'est un point que j'avais déjà noté.
En fait, dans un, la flèche colorée indique 'où va' le vent, et dans l'autre 'd'où vient' le vent.
Tu choisis ce que tu préfères, et pour que les 2 aient la pointe colorée dans la même direction, tu ouvres dans Gimp ton fichier Rose, et tu lui fais faire 180°.

Simple et efficace ! Merci Phyllinux; la flèche s'oriente comme une girouette lorsque le vent souffle dessus.

Hors ligne

#1137 Le 04/07/2012, à 14:27

jpdipsy

Re : [Conky] Alternative à weather.com (2)

Didier

J'ai regarder la manière dont tu as géré le multi utilisateur en donnant les droits à tous le monde.
(attention j'y vais à pas de velour......)
Pour que cela soit plus "linuxiens" j'ai perso appliqué ceci

--Création répertoire de travail
    local utilisateur = "Meteo-"..os.getenv("USER")  -- premier changement
    l = cmd1:match("/(%d+)")
    if string.find(cmd1, 'forecast') ~= nil then
        pos1 = string.find(cmd1, '/weather')
        cmd = string.sub(cmd1, 0, pos1-1)
    else
        pos1 = string.find(cmd1, '/current')
        cmd = string.sub(cmd1, 0, pos1-1)
    end

    local bar, bar1
    local l1 = string.gsub(cmd, '/'..l, "" )
    local b = 1
    while bar1 == nil do
        b = b+1
        bar1 = string.find(l1, '/', -b)
    end
    l1 = string.sub(l1, bar1+1)
    Rep = r.."/"..utilisateur.."/"..l1.."/"..l  -- deuxieme changement
        if os.execute("cd "..Rep) ~= 0 then
        os.execute("mkdir "..r.."/"..utilisateur.." && mkdir "..r.."/"..utilisateur.."/"..l1.." && mkdir "..Rep) -- troisième changement
    end
    r = r.."/"..utilisateur -- dernier changement

donc je me retrouve avec un rep /tmp/Meteo-$USER/blabla à moi perso ousquelesautresonrienàfaire

en outre on peu éventuellement supprimer la variable TEMPSHELL= du cfg puisque de toute façon on travail dans le /tmp (tmpfs ou pas)

donc voici le meteo.lua.test
dans le fichier de cfg de meteo.lua.test laisser TEMPSHELL=/tmp

Tu essaies  et tu me dit mais pas taper  lol je rigole

Tant que j'y suis le images_meteo.lua.test modifié

Dernière modification par jpdipsy (Le 04/07/2012, à 15:35)

Hors ligne

#1138 Le 04/07/2012, à 15:35

Didier-T

Re : [Conky] Alternative à weather.com (2)

@ jpdipsy,

En fait, je vois bien l'utilité de protéger des données personnelles, mais les données météo la... je vois pas.
En plus si ont ne modifie pas les droits sur les fichiers sa signifie déplacer les infos lunaison (sinon elles ne seront pas actualisées).

Je trouve que sa fait trop de changement pour une mise à jour, de plus sa impacterai tous les utilisateurs de météo.lua qui feraient la mise a jour, avec la modif que j'ai fais tous est invisible, et la sécurité des données personnels est préservé, car ont ne modifie les droit que des fichiers créé par meteo.lua et image_meteo.lua

Dernière modification par Didier-T (Le 04/07/2012, à 15:39)

Hors ligne

#1139 Le 04/07/2012, à 16:10

jpdipsy

Re : [Conky] Alternative à weather.com (2)

Didier-T a écrit :

@ jpdipsy,

En fait, je vois bien l'utilité de protéger des données personnelles, mais les données météo la... je vois pas.
En plus si ont ne modifie pas les droits sur les fichiers sa signifie déplacer les infos lunaison (sinon elles ne seront pas actualisées).

Je trouve que sa fait trop de changement pour une mise à jour, de plus sa impacterai tous les utilisateurs de météo.lua qui feraient la mise a jour, avec la modif que j'ai fais tous est invisible, et la sécurité des données personnels est préservé, car ont ne modifie les droit que des fichiers créé par meteo.lua et image_meteo.lua

Bon perdu pour cette fois mais comme on dit "avec le temps....."

Je rigole  lol
(c'est pas tout, mais faut que je m'occupe de ragamatrix)

Hors ligne

#1140 Le 04/07/2012, à 16:36

jpdipsy

Re : [Conky] Alternative à weather.com (2)

ragamatrix a écrit :

@jpdipsy
Comment peut-on utiliser différentes polices dans creationmodules ? Chez moi lorsque je change dans les variables de fontes, par exemple pour la ville "Monotype Corsiva" cela n'est pas pris en compte par le script...
Comment changer la rose des vents par le baromètre ? (j'ai un peu de mal à comprendre le création modules, c'est un peut plus fastidieux qu'un conky normal...)
Merci

J'en avais déja parlé là
fontes

dans un terminal  convert -list font | grep "[C]orvisa" va te donner le nom à utiliser pour cette fonte.

Pour les noms de couleur "alambiqué" tel que coultemp2="dodgerblue1"  voilà le nuancier c'est de la "big" image en hauteur.

Hors ligne

#1141 Le 04/07/2012, à 20:05

ragamatrix

Re : [Conky] Alternative à weather.com (2)

jpdipsy a écrit :
ragamatrix a écrit :

@jpdipsy
Comment peut-on utiliser différentes polices dans creationmodules ? Chez moi lorsque je change dans les variables de fontes, par exemple pour la ville "Monotype Corsiva" cela n'est pas pris en compte par le script...
Comment changer la rose des vents par le baromètre ? (j'ai un peu de mal à comprendre le création modules, c'est un peut plus fastidieux qu'un conky normal...)
Merci

J'en avais déja parlé là
fontes

dans un terminal  convert -list font | grep "[C]orvisa" va te donner le nom à utiliser pour cette fonte.

Pour les noms de couleur "alambiqué" tel que coultemp2="dodgerblue1"  voilà le nuancier c'est de la "big" image en hauteur.

Merci pour ce petit cours particulier; ça avance smile
La commande pour trouver le bon nom des polices est très utile ainsi que le lien du nuancier.
Mais tout ça c'est un métier ! ;o) Bravo

Hors ligne

#1142 Le 05/07/2012, à 09:53

ragamatrix

Re : [Conky] Alternative à weather.com (2)

Attention c'est chargé : changement de fonte et aperçu 1
ecran_SF

Hors ligne

#1143 Le 05/07/2012, à 10:58

jpdipsy

Re : [Conky] Alternative à weather.com (2)

ragamatrix a écrit :

Attention c'est chargé : changement de fonte et aperçu 1
http://pix.toile-libre.org/upload/origi … 478294.png

C'est plutôt agréable et lisible juste le fond un peu trop sombre et uniforme.

En un seul mot "sapete" lol

Hors ligne

#1144 Le 05/07/2012, à 11:16

jpdipsy

Re : [Conky] Alternative à weather.com (2)

tous,toute

pour les cartes sat éffectivement le rendu est "pouha" cela est du à la rotation que l'on utilise dans convert je me suis donc penché dans les profondeurs abyssales de convert et effectivement il existe un autre moyen de faire une rotation à une image en ayant un meilleur rendu.

voilà déja ce que l'on à avec -rotate donc pouah

et maintenant avec l'autre fonction capture

pour un même angle de  rotation naturellement parce-que selon  l'angle le résultat est plus ou moins bon, là on avait une rotation de 15 ° et maintenant avec 25° c'est encore diff.
25°
Donc je met ça au propre je modifie le script pour image-sat et je vous "bigophone"

Hors ligne

#1145 Le 05/07/2012, à 13:35

ragamatrix

Re : [Conky] Alternative à weather.com (2)

jpdipsy a écrit :
ragamatrix a écrit :

Attention c'est chargé : changement de fonte et aperçu 1
http://pix.toile-libre.org/upload/origi … 478294.png

C'est plutôt agréable et lisible juste le fond un peu trop sombre et uniforme.

En un seul mot "sapete" lol

Salut et Merci Herr Profezor ! (hé oui vers chez moi ils ont un accent....spécial...)
En fait je ne peux pas changer de fond d'écran sinon on voit les défauts de mes conkyz lol oh quel imposteur !
Pour la terre entourée d'un cartouche, il s'agit d'une image carrée téléchargée et retaillée mais avec un fond noir.Impossible pour moi de découper cette image dans conky en cercle...
L'horloge lua et la terre font appel à deux script lua différents : le "square_to_round.lua" fonctionne sur la terre, mais le carré noir en dessous doit provenir de l'horloge (rings_clock.lua)...je crois...
pb_fond

Dernière modification par ragamatrix (Le 05/07/2012, à 13:36)

Hors ligne

#1146 Le 05/07/2012, à 13:55

jpdipsy

Re : [Conky] Alternative à weather.com (2)

ragamatrix a écrit :

Salut et Merci Herr Profezor ! (hé oui vers chez moi ils ont un accent....spécial...)
En fait je ne peux pas changer de fond d'écran sinon on voit les défauts de mes conkyz lol oh quel imposteur !
Pour la terre entourée d'un cartouche, il s'agit d'une image carrée téléchargée et retaillée mais avec un fond noir.Impossible pour moi de découper cette image dans conky en cercle...
L'horloge lua et la terre font appel à deux script lua différents : le "square_to_round.lua" fonctionne sur la terre, mais le carré noir en dessous doit provenir de l'horloge (rings_clock.lua)...je crois...
http://pix.toile-libre.org/upload/origi … 491773.png

Vu le nombre de cerveaux qui fument ici sa m'étonnerai que çà reste comme çà cool

Au cas ou fait péter les 2 images en lien

Dernière modification par jpdipsy (Le 05/07/2012, à 14:07)

Hors ligne

#1147 Le 05/07/2012, à 14:27

ragamatrix

Re : [Conky] Alternative à weather.com (2)

@jpdipsy
Tu veux dire une image avec fond noir et une avec fond violet+les conkys ?
Ou les fond d'écran originaux vides ?
Fond écran étoiles noir :
fond noir
Fond écran étoiles violet :
fond violet

Dernière modification par ragamatrix (Le 05/07/2012, à 14:48)

Hors ligne

#1148 Le 05/07/2012, à 14:48

jpdipsy

Re : [Conky] Alternative à weather.com (2)

ragamatrix a écrit :

@jpdipsy
Tu veux dire une image avec fond noir et une avec fond violet+les conkys ?
Ou les fond d'écran originaux vides ?

celle là  que tu as retaillée

Pour la terre entourée d'un cartouche, il s'agit d'une image carrée téléchargée et retaillée mais avec un fond noir.Impossible pour moi de découper cette image dans conky en cercle...

pour l'autre apparemment tu dis que c'est le script (rings_clock.lua) qui est en cause fait voir le script

Hors ligne

#1149 Le 05/07/2012, à 15:16

ragamatrix

Re : [Conky] Alternative à weather.com (2)

jpdipsy a écrit :
ragamatrix a écrit :

@jpdipsy
Tu veux dire une image avec fond noir et une avec fond violet+les conkys ?
Ou les fonds d'écran originaux vides ?

celle là  que tu as retaillée

Pour la terre entourée d'un cartouche, il s'agit d'une image carrée téléchargée et retaillée mais avec un fond noir.Impossible pour moi de découper cette image dans conky en cercle...

pour l'autre apparemment tu dis que c'est le script (rings_clock.lua) qui est en cause fait voir le script

Tiens j’espère que c'est ça cette fois big_smile
lien utilisé dans le conky
script.lua:
horloge_ring.lua :

 --[[
Ring Meters by londonali1010 (2009)

This script draws percentage meters as rings. It is fully customisable; all options are described in the script.

IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num>5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num>3; conversely if you update Conky every 0.5s, you should use update_num>10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.

To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):
    lua_load ~/scripts/rings-v1.2.lua
    lua_draw_hook_pre ring_stats

Changelog:
+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)
+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
+ v1.0 -- Original release (28.09.2009)
]]
 
require 'cairo'

function conky_main_rings()

if (os.date("%l"))=='12' then 
    heure=(os.date("%M")/60) 
else 
    heure=(os.date("%l"))+(os.date("%M")/60) 
end

-- START PARAMETERS HERE
local rings_settings={

    {
    name="",
    arg=heure,
    max=11.99,
    xc=125,
    yc=125,
    radius=113,
    thickness=10,
    gap_sectors=5,
    sectors=12,
    bg_colour1={{0,0x999999,0},{0.5,0x999999,1}, {1,0x999999,0}},
    fg_colour1={{0,0xFFFF00,0},{0.5,0xFFFF00,1}, {1,0xFFFF00,0}},
    fg_colour2={{0,0X0FF000,0},{0.5,0x0FF000,1}, {1,0x0FF000,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    {
    name="",
    arg=(os.date("%M"))+(os.date("%S")/60),
    max=59.99,
    xc=125,
    yc=125,
    radius=107,
    thickness=10,
    start_angle=0,
    end_angle=360,
    gap_sectors=2.5,
    sectors=60,
    fill_sector=false,
    bg_colour1={{0,0x999999,0},{0.5,0x999999,1}, {1,0x999999,0}},
    fg_colour1={{0,0X0FFFF0,0},{0.5,0X0FFFF0,1}, {1,0X0FFFF0,0}},
    fg_colour2={{0,0x00FF00,0},{0.5,0x00FF00,1}, {1,0x00FF00,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },
    {
    name="time",
    arg="%S",
    max=60,
    xc=125,
    yc=125,
    radius=100,
    thickness=10,
    start_angle=0,
    end_angle=360,
    sectors=60,
    fill_sector=false,
    bg_colour1={{0,0x999999,0},{0.5,0x999999,1}, {1,0x999999,0}},
    fg_colour1={{0,0XFFF00F,0},{0.5,0xFFF00F,1}, {1,0xFFF00F,0}},
    fg_colour2={{0,0XFF0000,0},{0.5,0xFF0000,1}, {1,0xFF0000,0}},
    bd_colour1={{0,0X00FF00,1},{0.5,0x00FF00,1}, {1,0x00FF00,1}},
    },

}

--END OF PARAMETERS HERE

--main function

    --if conky_window==nil then return end

    local cs=cairo_xlib_surface_create(conky_window.display,
        conky_window.drawable, 
        conky_window.visual, conky_window.width, conky_window.height)
    local cr=cairo_create(cs)

    if tonumber(conky_parse('${updates}'))>3 then
        for i in pairs(rings_settings) do
            draw_ring(cr,rings_settings[i])
        end
    end

    cairo_destroy(cr)
end



function draw_ring(cr, t)

    local function rgba_to_r_g_b_a(tcolour)
        local colour,alpha=tcolour[2],tcolour[3]
        return ((colour / 0x10000) % 0x100) / 255., 
            ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
    end
            
            
    local function calc_delta(tcol1,tcol2)
        --calculate deltas P R G B A to table_colour 1

        for x = 1, #tcol1 do
            tcol1[x].dA = 0
            tcol1[x].dP = 0
             tcol1[x].dR = 0
            tcol1[x].dG = 0
            tcol1[x].dB = 0
            if tcol2~=nil and #tcol1 == #tcol2 then
                local r1,g1,b1,a1 = rgba_to_r_g_b_a(tcol1[x])
                local r2,g2,b2,a2 = rgba_to_r_g_b_a(tcol2[x])
                tcol1[x].dP = (tcol2[x][1]-tcol1[x][1])/t.sectors
                 tcol1[x].dR = (r2-r1)/t.sectors
                tcol1[x].dG = (g2-g1)/t.sectors
                tcol1[x].dB = (b2-b1)/t.sectors
                tcol1[x].dA = (a2-a1)/t.sectors        
                
            end
        end
        
        return tcol1
    end

    --check values
    local function setup(t)
        if t.name==nil and t.arg==nil then 
            print ("No input values ... use parameters 'name'" +
                " with 'arg' or only parameter 'arg' ") 
            return
        end

        if t.max==nil then
            print ("No maximum value defined, use 'max'")
            print ("for name=" .. t.name)
            print ("with arg=" .. t.arg)
            return
        end
        if t.name==nil then t.name="" end
        if t.arg==nil then t.arg="" end

        if t.xc==nil then t.xc=conky_window.width/2 end
        if t.yc==nil then t.yc=conky_window.height/2 end
        if t.thickness ==nil then t.thickness = 10 end
        if t.radius ==nil then t.radius =conky_window.width/4 end
        if t.start_angle==nil then t.start_angle =0 end
        if t.end_angle==nil then t.end_angle=360 end
        if t.bg_colour1==nil then 
            t.bg_colour1={{0,0x00ffff,0.1},{0.5,0x00FFFF,0.5},{1,0x00FFFF,0.1}}
        end
        if t.fg_colour1==nil then
            t.fg_colour1={{0,0x00FF00,0.1},{0.5,0x00FF00,1},{1,0x00FF00,0.1}}
        end
        if t.bd_colour1==nil then
            t.bd_colour1={{0,0xFFFF00,0.5},{0.5,0xFFFF00,1},{1,0xFFFF00,0.5}}
        end
        if t.sectors==nil then t.sectors=10 end
        if t.gap_sectors==nil then t.gap_sectors=1 end 
        if t.fill_sector==nil then t.fill_sector=false end
        if t.sectors==1 then t.fill_sector=false end
        if t.border_size==nil then t.border_size=0 end
        if t.cap==nil then t.cap="p" end
        --some checks
        if t.thickness>t.radius then t.thickness=t.radius*0.1 end
        t.int_radius = t.radius-t.thickness

        --check colors tables 
        for i=1, #t.bg_colour1 do 
            if #t.bg_colour1[i]~=3 then t.bg_colour1[i]={1,0xFFFFFF,0.5} end
        end
        for i=1, #t.fg_colour1 do 
            if #t.fg_colour1[i]~=3 then t.fg_colour1[i]={1,0xFF0000,1} end
        end
        for i=1, #t.bd_colour1 do 
            if #t.bd_colour1[i]~=3 then t.bd_colour1[i]={1,0xFFFF00,1} end
        end
    
        if t.bg_colour2~=nil then
            for i=1, #t.bg_colour2 do 
                if #t.bg_colour2[i]~=3 then t.bg_colour2[i]={1,0xFFFFFF,0.5} end
            end
        end
        if t.fg_colour2~=nil then
            for i=1, #t.fg_colour2 do 
                if #t.fg_colour2[i]~=3 then t.fg_colour2[i]={1,0xFF0000,1} end
            end
        end
        if t.bd_colour2~=nil then
            for i=1, #t.bd_colour2 do 
                if #t.bd_colour2[i]~=3 then t.bd_colour2[i]={1,0xFFFF00,1} end
            end
        end     
        
        if t.start_angle>=t.end_angle then
         local tmp_angle=t.end_angle
         t.end_angle= t.start_angle
         t.start_angle = tmp_angle
         -- print ("inversed angles")
            if t.end_angle-t.start_angle>360 and t.start_angle>0 then
                t.end_angle=360+t.start_angle
                print ("reduce angles")
            end
        
            if t.end_angle+t.start_angle>360 and t.start_angle<=0 then
                t.end_angle=360+t.start_angle
                print ("reduce angles")
            end
        
            if t.int_radius<0 then t.int_radius =0 end
            if t.int_radius>t.radius then
                local tmp_radius=t.radius
                t.radius=t.int_radius
                t.int_radius=tmp_radius
                print ("inversed radius")
            end
            if t.int_radius==t.radius then
                t.int_radius=0
                print ("int radius set to 0")
            end 
        end
        
        t.fg_colour1 = calc_delta(t.fg_colour1,t.fg_colour2)
        t.bg_colour1 = calc_delta(t.bg_colour1,t.bg_colour2)
        t.bd_colour1 = calc_delta(t.bd_colour1,t.bd_colour2)
    end
    
    if t.draw_me == true then t.draw_me = nil end
    if t.draw_me ~= nil and conky_parse(tostring(t.draw_me)) ~= "1" then return end    
    --initialize table
    setup(t)
    
    --initialize cairo context
    cairo_save(cr)
    cairo_translate(cr,t.xc,t.yc)
    cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND)
    cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND)

    --get value
    local value = 0
    if t.name ~="" then
        value = tonumber(conky_parse(string.format('${%s %s}', t.name, t.arg)))
    else
        value = tonumber(t.arg)
    end
    if value==nil then value =0 end

    --initialize sectors
    --angle of a sector :
    local angleA = ((t.end_angle-t.start_angle)/t.sectors)*math.pi/180
    --value of a sector : 
    local valueA = t.max/t.sectors
    --first angle of a sector : 
    local lastAngle = t.start_angle*math.pi/180


    local function draw_sector(type_arc,angle0,angle,valpc, idx)
     
        --this function draws a portion of arc
         --type of arc, angle0 = strating angle, angle= angle of sector,
         --valpc = percentage inside the sector, idx = sctor number #
         local tcolor
         if type_arc=="bg" then         --background
             if valpc==1 then return end
             tcolor=t.bg_colour1
         elseif type_arc=="fg" then    --foreground
             if valpc==0 then return end
             tcolor=t.fg_colour1
         elseif type_arc=="bd" then    --border
             tcolor=t.bd_colour1
         end 

        --angles equivalents to gap_sector
        local ext_delta=math.atan(t.gap_sectors/(2*t.radius))
        local int_delta=math.atan(t.gap_sectors/(2*t.int_radius))

        --angles of arcs
        local ext_angle=(angle-ext_delta*2)*valpc
        local int_angle=(angle-int_delta*2)*valpc

        --define colours to use for this sector
        if #tcolor==1 then 
            --plain color
            local vR,vG,vB,vA = rgba_to_r_g_b_a(tcolor[1])
            cairo_set_source_rgba(cr,vR+tcolor[1].dR*idx,
                                    vG+tcolor[1].dG*idx,
                                    vB+tcolor[1].dB*idx,
                                    vA+tcolor[1].dA*idx    )
        else
            --radient color
            local pat=cairo_pattern_create_radial(0,0,t.int_radius,0,0,t.radius)
            for i=1, #tcolor do
                local vP,vR,vG,vB,vA = tcolor[i][1], rgba_to_r_g_b_a(tcolor[i])
                cairo_pattern_add_color_stop_rgba (pat, 
                                    vP+tcolor[i].dP*idx,
                                    vR+tcolor[i].dR*idx,
                                    vG+tcolor[i].dG*idx,
                                    vB+tcolor[i].dB*idx,
                                    vA+tcolor[i].dA*idx    )
            end
            cairo_set_source (cr, pat)
            cairo_pattern_destroy(pat)
        end

        --start drawing
         cairo_save(cr)
        --x axis is parrallel to start of sector
        cairo_rotate(cr,angle0-math.pi/2)

        local ri,re = t.int_radius ,t.radius

        --point A 
        local angle_a
    
        if t.cap == "p" then 
            angle_a = int_delta
            if t.inverse_arc and type_arc ~="bg" then
                angle_a = angle-int_angle-int_delta
            end
            if not(t.inverse_arc) and type_arc =="bg" then
                angle_a = int_delta+int_angle
            end
        else --t.cap=="r"
            angle_a = ext_delta
            if t.inverse_arc and type_arc~="bg" then
                angle_a = angle-ext_angle-ext_delta
            end
            if not(t.inverse_arc) and type_arc=="bg" then
                angle_a = ext_delta+ext_angle
            end
        end
        local ax,ay = ri*math.cos(angle_a),ri*math.sin(angle_a)


        --point B
        local angle_b = ext_delta
        if t.cap == "p" then 
            if t.inverse_arc and type_arc ~="bg" then
                angle_b = angle-ext_angle-ext_delta
            end
            if not(t.inverse_arc) and type_arc=="bg" then
                angle_b = ext_delta+ext_angle
            end
        else
            if t.inverse_arc and type_arc ~="bg" then
                angle_b = angle-ext_angle-ext_delta
            end
            if not(t.inverse_arc) and type_arc=="bg" then
                angle_b = ext_delta+ext_angle
            end
        end
        local bx,by = re*math.cos(angle_b),re*math.sin(angle_b)

        -- EXTERNAL ARC B --> C
        local b0,b1
        if t.inverse_arc then
            if type_arc=="bg" then
                b0,b1= ext_delta, angle-ext_delta-ext_angle
            else
                b0,b1= angle-ext_angle-ext_delta, angle-ext_delta
            end
        else
            if type_arc=="bg" then
                b0,b1= ext_delta+ext_angle, angle-ext_delta
            else
                b0,b1= ext_delta, ext_angle+ext_delta
            end
        end
        
        ---POINT D
        local angle_c, angle_d
        if t.cap == "p" then 
            angle_d = angle-int_delta
            if t.inverse_arc and type_arc=="bg" then
                angle_d = angle-int_delta-int_angle    
            end
            if not(t.inverse_arc) and type_arc~="bg" then
                angle_d=int_delta+int_angle
            end
        else
            angle_d = angle-ext_delta
            if t.inverse_arc and type_arc=="bg" then
                angle_d =angle-ext_delta-ext_angle
            end
            if not(t.inverse_arc) and type_arc~="bg" then
                angle_d = ext_angle+ext_delta
            end
        end
        local dx,dy = ri*math.cos(angle_d),ri*math.sin(angle_d)
        
        -- INTERNAL ARC D --> A
        local d0,d1
        if t.cap=="p" then    
            if t.inverse_arc then    
                if type_arc=="bg" then
                    d0,d1= angle-int_delta-int_angle,int_delta
                else
                    d0,d1= angle-int_delta, angle- int_angle-int_delta
                end
            else
                if type_arc=="bg" then
                    d0,d1= angle-int_delta, int_delta+int_angle
                else
                    d0,d1= int_delta+int_angle, int_delta
                end
            end
        else
            if t.inverse_arc then    
                if type_arc=="bg" then    
                    d0,d1= angle-ext_delta-ext_angle,ext_delta
                else
                    d0,d1= angle-ext_delta, angle- ext_angle-ext_delta
                end
            else
                if type_arc=="bg" then    
                    d0,d1= angle-ext_delta,ext_delta+ext_angle
                else    
                    d0,d1= ext_angle+ext_delta, ext_delta
                end
            end            
        end
            
        --draw sector
        cairo_move_to(cr,ax,ay)
        cairo_line_to(cr,bx,by)
        cairo_arc(cr,0,0,re,b0,b1)
        cairo_line_to(cr,dx,dy) 
        cairo_arc_negative(cr,0,0,ri,d0,d1)
         cairo_close_path (cr);

        --stroke or fill sector
         if type_arc=="bd" then
             cairo_set_line_width(cr,t.border_size)
             cairo_stroke(cr)
         else
             cairo_fill(cr)
         end

         cairo_restore(cr)

     end
    --draw sectors
    local n0,n1,n2 = 1,t.sectors,1
    if t.inverse_arc then n0,n1,n2 = t.sectors,1,-1 end
    local index = 0
    for i = n0,n1,n2 do 
        index = index +1
        local valueZ=1
        local cstA, cstB = (i-1),i
        if t.inverse_arc then cstA,cstB = (t.sectors-i), (t.sectors-i+1) end
        
        if value>valueA *cstA and value<valueA*cstB then
            if not t.fill_sector then
                valueZ = (value-valueA*cstA)/valueA
            end
        else
            if value<valueA*cstB then valueZ=0 end
        end
        
        local start_angle= lastAngle+(i-1)*angleA
        if t.foreground ~= false then 
            draw_sector("fg",start_angle,angleA,valueZ, index)
        end
        if t.background ~= false then 
            draw_sector("bg",start_angle,angleA,valueZ, i)
        end
        if t.border_size>0 then draw_sector("bd",start_angle,angleA,1, i) end
    end

    cairo_restore(cr)
end

--[[END OF RING-SECTORS WIDGET]]  

oups Ou retaillée après execution du script.....je crois que j'ai des problèmes de compréhensions:lol:
retaillée_nach_script Demain j' arrette...:)

Dernière modification par ragamatrix (Le 05/07/2012, à 15:39)

Hors ligne

#1150 Le 05/07/2012, à 16:00

ragamatrix

Re : [Conky] Alternative à weather.com (2)

@jpdipsy
Sinon carrément les conky en entier avec tous les scripts qui faut, en modifiant les chemins...
conky_earth_round_clock_lua
Conky_Terre_Cartouche

Hors ligne