Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques Jauges en forme de barre
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
Technical discussions | Discussions techniques

Subjects Author Language Messages Last message
[Locked] Jauges en forme de barre [Bug #60]
Page : 1 2 3 4 5 6
SQP Français 103 nochka85 [Read]
05 January 2011 à 20:33

SQP, Friday 27 August 2010 à 12:03


Subscription date : 03 July 2010
Messages : 1081
quand tu auras un peu de temps, si tu pouvais auditer mon patch sur ces points :
  • impact sur le comportement actuel
  • impact des effets sur les performances
  • interet de séparer la gestion de thèmes multi des thèmes mono svg (le calcul du pointer sur l'image à afficher)

pour moi la réponse à ces 3 questions est "absolument aucun", donc il serait possible appliquer le patch pour avoir quelques testeurs pour jouer avec un peu aussi et me fournir du retour

je suis sur d'un truc, c'est que les thèmes actuels doivent rebuter quelques contributeurs potentiels. Devoir faire 20 svg pour avoir un thème un peu précis, c'est trop chiant. Vu mon niveau d'utilisation des ces outils, c'etait pas la peine. A tel point que j'ai préféré coder la fonction crop.
Je suis d'accord avec toi sur le besoin de bien définir les besoins avant d'avancer, et je ne veux pas d'une diffusion large de l'utilisation du truc, pour pouvoir tout changer si besoin. Mais quelques testeurs qui testeront des thèmes disponibles sur le forum ca m'aiderait bien qu'ils puissent dire ce qu'ils pensent des options secondaires dont je pense avoir besoin pour avancer
par exemple, mon besoin de l'option du texte "on theme" reste un peu virtuel tant qu'il n'y a pratiquement pas de thème avec texte (qui vient faire chier si je préfère on icon ou qui devient moche si je redimentionne trop mon applet)

Ensuite j'ai pensé à un truc pour cette option "on theme". J'avais envie de faire évoluer l'affichage du texte pour le renderer graph, et je me suis dit que ca serait peut etre bien de combiner les 2 :
  • on icon et on label : affichage cohérent avec le reste du dock
  • on theme : placé en haut à gauche, taille très légèrement réduite, couleur identique mais légèrement transparente


voila pour la base, je pourrais après voir après les besoins en xml pour les thèmes svg, pour le multi indicateurs, ou réfléchir à un truc qui pourrait être très intéréssant, des options aux thèmes (pouvoir choisir par exemple la couleur, taille ou position du texte, ou changer l'image ou le thème d'images)

les questions techniques :

  • petit test au niveau du set_renderer de mon applet

    CairoGaugeAttribute attr; // les attributs de la jauge.
    memset (&attr, 0, sizeof (CairoGaugeAttribute));
    attr.bWriteThemeValues = FALSE;
    cd_warning("SQP     attr.bWriteThemeValues %d", attr.bWriteThemeValues);
    pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
    cd_warning("SQP     attr.bWriteThemeValues %d", attr.bWriteThemeValues);


SQP     attr.bWriteThemeValues 0
SQP     attr.bWriteThemeValues -21991786


alors avant le CAIRO_DATA_RENDERER_ATTRIBUTE, j'ai bien attr qui est un struct, après je sais pas trop (si je met le =FALSE après ca plante)
et dans static void cairo_dock_load_gauge (Gauge *pGauge, CairoContainer *pContainer, *CairoGaugeAttribute pAttribute)
la c'est carrément un objet:
    cd_warning("SQP     pAttribute->bWriteThemeValues %d", pAttribute->bWriteThemeValues);

me donne bien la même valeur (la mauvaise).
Donc je préfèrerais utiliser le pGauge et son attribute (ou équivalents si split) pour coller mes merdes, mais la j'y arrive pas trop

fabounet, Friday 27 August 2010 à 12:13


Subscription date : 30 November 2007
Messages : 17118
je fork directement le gauge (j'appelle ca comment ? thème, images ?) et je nettoye tout ce qui concerne les aiguilles et la oui je suis tranquille pour implementer les options de placement pour les images pour gerer les multi indicateurs

je pense
ça évitera de casser le code des jauges qui marche bien, et surtout de devoir faire des contorsions pour intégrer des nouveautés.
logiquement on devrait l'appeler "bar", vu qu'on cherche à représenter une valeur par une barre de progression.

pour la rotation, je dépend de pContainer->bIsHorizontal. Je peux y acceder à partir d'un pGauge ?

je pense que le rendu (l'implémentation) ne devrait pas s'en soucier. c'est l'API plus haut qui fera un rotate si le dock est vertical et que le renderer veut tourner avec le dock.
donc en rajoutant un booléen bRotateWithDock, l'implémentation le positionnera à true si elle veut tourner (par exemple pas les graphes ni les jauges, mais pour une barre ça peut être bien), le dock fera une rotation avant d'appeler la fonction render

SQP, Friday 27 August 2010 à 12:30


Subscription date : 03 July 2010
Messages : 1081
pour le nom, tu verras que les thèmes svg passeront par la, et donc on a le droit thèoriquement à n'importequoi au niveau affichage

je pense que le rendu est impliqué vu que le texte doit rester droit (enfin ca me parait plus sympa), et que si c'est limité aux seuls thèmes, ca me parait logique de garder les variables à ce niveau (j'avais pensé à une option dans le thème aussi pour dire de tourner dans l'autre sens si on a par exemple une batterie horizontale, sans, elle se retrouve la tête en bas)

mon application du rotate actuel :
je tourne si besoin au début du cairo_dock_draw_one_gauge_opengl
au texte, je le tourne dans l'autre sens (il y a deja un push/popmatrix)

(et t'as du rater un post ^^)

SQP, Friday 27 August 2010 à 12:44


Subscription date : 03 July 2010
Messages : 1081
j'oubliais, pour la création d'un nouveau renderer, c'est simple, mais ca a quand même un impact au niveau des applets (un cas de plus à gérer à chaque fois)

fabounet, Friday 27 August 2010 à 12:44


Subscription date : 30 November 2007
Messages : 17118
Devoir faire 20 svg pour avoir un thème un peu précis, c'est trop chiant.

on est d'accord
disons que ça permet une grande souplesse, c'est une façon possible de représenter une valeur parmi tant d'autres.

les attributs dérivent des CairoDataRendererAttribute (si tu connais un peu la prog objet, c'est la classe parente).

en fait on définit les classes CairoDataRenderer et CairoDataRendererAttribute, puis ensuite on les spécialise (les jauges et les graphes sont des implémentations des data-renderers)
CAIRO_DATA_RENDERER et CAIRO_DATA_RENDERER_ATTRIBUTE sont de simples macros qui te permettent de remonter à la classe parente.

Donc tu as :
CairoGaugeAttribute attr;
que tu remplis avec les atributs spécifiques aux jauges.
Il dérive d'un CairoDataRendererAttribute; pour l'avoir tu fais :
CairoDataRendererAttribute *parent_attr = CAIRO_DATA_RENDERER_ATTRIBUTE(&attr);
là tu peux faire parent_attr->bWriteValues = TRUE;

matttbe, Friday 27 August 2010 à 12:48


Subscription date : 24 January 2009
Messages : 12573
(et t'as du rater un post ^^)
En postant de si longs commentaires, je comprends

SQP, Friday 27 August 2010 à 13:22


Subscription date : 03 July 2010
Messages : 1081
je n'ai pas dit que le multi svg était pas bien, ca permet des trucs impossibles avec d'autres techniques, mais c'est chiant pour faire certains trucs qui paraissent simples.
Et je préférais la version plus simple à faire (et à modifier surtout, vu que je suis une quiche, il en faut des tests) et plus précise

struct _CairoGaugeAttribute {
gboolean bTest;
...

    attr.bTest = TRUE; //(myConfig.iInfoDisplay == CAIRO_DOCK_INFO_ON_THEME ? TRUE : FALSE);
    cd_warning("SQP     attr.bTest %d", attr.bTest);
    pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
    pRenderAttr->bTest = TRUE;

applet-init.c:71: error: ‘CairoDataRendererAttribute’ has no member named ‘bTest’


j'ai surement du chier un truc, parce que sinon c'est pas très utile de remplir le GaugeAttribute si je dois redéfinir pareil dans l'autre
si t'as des pointeurs vers de la bonne doc c++ ca me ferait du bien je crois (pour voir la différence avec ce que je fais en php)

@matttbe : tu crois que éclaté en plein de posts dans plusieurs threads ca serait mieux ?
si je fais de longs posts c'est parceque j'ai plein de questions ou de remarques. Après vu que ya environ 20% de répondu à chaque fois, bah j'essaye de faire avec, mais ca ne fait qu'augmenter mes questions (trop de possibilités). Je veux juste essayer de faire un truc bien qui pourra être utilisé, donc si je pose trop de questions, suffit de le dire

J'ajoute que je suis en train de tester l'option de rotation automatique en fonction de la taille et que ca a l'air de se comporter correctement : ca remplit mes besoins et ajoute la rotation à la flexibilité au desklet, ce qui est sympa. Il y a quelques combinaisons qui disparaissent, mais ca n'a pas l'air trop génant.

matttbe, Friday 27 August 2010 à 13:37


Subscription date : 24 January 2009
Messages : 12573
Boh, c'est juste que je suis quasi certain que Fab est pressé lorsqu'il lit ces infos au boulot donc je ne pourrais que te conseiller de poser de courtes questions en utilisant des numéros => (éventuellement en commançant la ligne par un #)

SQP, Friday 27 August 2010 à 14:11


Subscription date : 03 July 2010
Messages : 1081
j'essaye de regrouper, mais oui l'idée des numéros est bonne, j'aurais du faire comme ca. Je referais des compilations de mes questions alors ^^

Et c'est pas facile de se lancer dans un split du code de gauge qui fera surement 500 lignes, + l'impact sur les applets (un renderer de plus à gérer), et la gestion de thèmes séparée en plus, alors qu'après plus de 4 pages de questions et 3 versions de patch (stretch, crop, multi effets), je n'ai eu aucun commentaire sur le patch en lui même (20 lignes non condensées). Alors que le split est presque une question indépendante (pas impacter les gauges needle alors que je ne veux pas y toucher, mon code est dans la partie spécifique svg). Il suffirait peut etre de split au chargement en fonction du type de theme.

Enfin si t'es vraiment décidé, si je fais mon renderer et que je l'applique sur sysmon et netspeed pour commencer, tu me le commit pour que je puisse avoir du testeur ?

et personne pour commenter mon nouveau theme ?

fabounet, Friday 27 August 2010 à 14:47


Subscription date : 30 November 2007
Messages : 17118
'ai surement du chier un truc, parce que sinon c'est pas très utile de remplir le GaugeAttribute si je dois redéfinir pareil dans l'autre
si t'as des pointeurs

je confirme
CairoGaugeAttribute dérive de CairoDataRendererAttribute, il le spécialise, c'est une implémentation de.
donc un CairoGaugeAttribute contient un CairoDataRendererAttribute, plus des paramètres qui sont spécifiques à l'implémentation (et qu'elle seule connait)
idem pour le Gauge, qui dérive d'un CairoDataRenderer.

pour la doc, tu vas dans le répertoire doc (même niveau que src et data), tu lu lances le script, après c'est dans html


Enfin si t'es vraiment décidé, si je fais mon renderer et que je l'applique sur sysmon et netspeed pour commencer, tu me le commit pour que je puisse avoir du testeur ?

les testeurs sont censés prendre ta branche et la compiler, c'est comme ça que fonctionne bzr il ne faut pas s'attendre à avoir un max de retours non plus, c'est quand même assez technique à ce niveau.
maintenant la bonne nouvelle c'est que comme tout est très modulaire, on pourra ajouter ton code sans que ça n'impacte quoique ce soit (et il suffira de ne pas ajouter l'option dans la config de l'applet pour que tout soit invisible => seuls les beta-testeurs y auront accès)

matttbe, Friday 27 August 2010 à 14:52


Subscription date : 24 January 2009
Messages : 12573
Enfin si t'es vraiment décidé, si je fais mon renderer et que je l'applique sur sysmon et netspeed pour commencer, tu me le commit pour que je puisse avoir du testeur ?
Le mieux serait vraiment d'attendre la sortie de la 2.2.0... Elle devrait deja etre sortie depuis un petit temps mais bon, ce n'est pas grave du tout.
Pour moi (et Fab aussi je parie), ton patch est bon comme les themes mais... il suffit d'attendre, ce n'est qu'une questions de jours.

Aussi, si tu veux des testeurs, n'hesite pas à pusher sur une branche BZR à toi puis de donner son adresse ici

SQP, Friday 27 August 2010 à 15:32


Subscription date : 03 July 2010
Messages : 1081
pour le moment il y a juste le patch effect
bzr branch lp:~meuarrr/cairo-dock-core/sqp


j'essaye de faire proprement pour les autres avant de commit, mais si c'est pour rester sur une branche séparée, autant que j'avance sur ce que j'ai besoin plutot que de casser tout avant de savoir ou je vais
et je met les thèmes sur le bzr aussi ?

bon j'ai trouvé mon bug (il est sympa) :
struct _CairoGaugeAttribute {
    gboolean bWriteThemeValues;
    /// General attributes of any DataRenderer.
    CairoDataRendererAttribute rendererAttribute;
    /// path to a gauge theme.
    const gchar *cThemePath;
};

au lieu de
struct _CairoGaugeAttribute {
    /// General attributes of any DataRenderer.
    CairoDataRendererAttribute rendererAttribute;
    gboolean bWriteThemeValues;
    /// path to a gauge theme.
    const gchar *cThemePath;
};

matttbe, Friday 27 August 2010 à 16:29


Subscription date : 24 January 2009
Messages : 12573
Oui, tout sur bzr en attendant

SQP, Friday 27 August 2010 à 23:44


Subscription date : 03 July 2010
Messages : 1081
SQP :

Ensuite j'ai pensé à un truc pour cette option "on theme". J'avais envie de faire évoluer l'affichage du texte pour le renderer graph, et je me suis dit que ca serait peut etre bien de combiner les 2 :
  • on icon et on label : affichage cohérent avec le reste du dock
  • on theme : placé en haut à gauche, taille très légèrement réduite, couleur identique mais légèrement transparente



allez, je me quote pour dire qu'après avoir bien galéré à passer mon bWriteThemeValue du renderer au gauge, avant de le commit comme ca, j'ai quand eu un remord sur l'idée que j'avais eu de changer l'affichage du graph. Et voici donc un screen de ce que ca donne.
J'ai enfin une vue sur la partie basse du graph qui est celle utilisée la majorité du temps. Ya pas photo, je garde, et je vais généraliser l'option

http://uppix.net/d/c/5/16ee5758e0a410a128385588e4fc8.png

Vu que j'ai les mains dedans, je vais faire un test pour virer l'axe vertical et remplacer par quelques lignes horizontales (ca rend très bien dans gkrellm)

Je sais pas si c'est possible d'appliquer une transparence en mode cairo (utilisé pour les graphs), et j'ai vu un gros todo pour la partie graph opengl, je me garde un pointeur dessus

matttbe, Saturday 28 August 2010 à 00:12


Subscription date : 24 January 2009
Messages : 12573
Oui, j'aime bien la possibilité d'avoir la petite écriture dans les petits graphes

Vu que j'ai les mains dedans, je vais faire un test pour virer l'axe vertical et remplacer par quelques lignes horizontales (ca rend très bien dans gkrellm)
C'est à dire

SQP, Saturday 28 August 2010 à 00:33


Subscription date : 03 July 2010
Messages : 1081
http://meuarrr.free.fr/images/temp/mygkrellm.png
je recycle un vieux screen.
c'est pas le meilleur thème pour bien les voir, mais on arrive quand même bien à distinguer le niveau d'activité de chaque graph.
mes réglages préférés c'est 3 ou 4 barres (20 ou 25% par zone)
je sais pas pour le nombre de lignes si il faut laisser un slider de 0 à 9 ou juste un select 0, 1, 2, 3, 4 et 9 qui sont les réglages les plus logiques. (gkrellm va de 0 à 5)

matttbe, Saturday 28 August 2010 à 00:36


Subscription date : 24 January 2009
Messages : 12573
Moui, pour ceux qui aime bien les vieux style
Un slider est p-ê meilleur.

SQP, Saturday 28 August 2010 à 15:20


Subscription date : 03 July 2010
Messages : 1081
je l'ai pas mal utilisé parce qu'il offre une excellente lisibilité au premier coup d'oeil et une grande discretion (sobriété )

bon alors j'ai ajouté 2 patchs à ma branche (enfin presque, j'ai besoin d'un merge plz, désolé pour le doublon)
  • Applet Text Display : Added 'On theme' option to get the ability to choose which text will be displayed (to have only one). This also add the graph on theme display, smaller value on top left. Applied on System Monitor, Netspeed and Alsamixer
  • Applet Theme Rotation : rotate theme if width > height (following dock orientation) - Does not update well on dock position change (need refresh or restart)


Disponible sur core/SQP et plugins/SQP

voir les diverses images réparties dans le thread pour les exemples. Je ferais un post récapitulatif correct avec plus de détails pour attirer des testeurs.

matttbe, Saturday 28 August 2010 à 16:23


Subscription date : 24 January 2009
Messages : 12573
Voilà, il ne reste plus qu'à attendre la sortie de la 2.2.0 pour s'amuser!

PS: Pourrais-tu supprimer la branche inutile sur LaunchPad (sqp?)?

SQP, Saturday 28 August 2010 à 16:36


Subscription date : 03 July 2010
Messages : 1081
j'ai fait un merge request pour regrouper mes trucs, je crois que ca attend ton accord

Merged into lp:~meuarrr/cairo-dock-core/SQP at revision 651
SQP: Approve 3 hours ago
Cairo-Dock Team: Pending requested 3 hours ago

Technical discussions | Discussions techniques

Subjects Author Language Messages Last message
[Locked] Jauges en forme de barre [Bug #60]
Page : 1 2 3 4 5 6
SQP Français 103 nochka85 [Read]
05 January 2011 à 20:33


Glx-Dock / Cairo-Dock List of forums Technical discussions | Discussions techniques Jauges en forme de barre Top

Online users :

Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts.
Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball
Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.
Many thanks to TuxFamily for the web Hosting and Mav for the domain name.