Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1370 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Gtk# : Avoir un renderer différent en fonction du niveau dans l'arbre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gtk# : Avoir un renderer différent en fonction du niveau dans l'arbre

n°817953
Niala
Posté le 09-08-2004 à 12:03:51  profilanswer
 


Bonjour,
 
 
J'essai de développer une petite application perso avec Mono et Gtk#.
L'application comporte un treeview.  
 
En Gtk#, les treeviews suivent le modèle MVC avec le composant Gtk.TreeView qui s'occupe de l'affichage (view) et l'interface Gtk.TreeModel qui s'occupe donc du modèle de données.
 
Le rendu du treeview s'effectue donc au niveau du Gtk.TreeView (par exemple la 1er colonne sera une image, la 2e du texte et la 3e une case à cocher).
 
Ce que je voudrai obtenir c'est d'avoir la possibilité d'avoir un rendu différent en fonction du niveau où on se trouve.
 
Pour être plus clair je prend l'exemple de Gaim car je souhaite obtenir le même effet : le 1er niveau (celui des groupes) est rendu en tant que texte gras) tandis que les éléments du niveau inférieur (celui des contacts) sont rendu avec une icone et un texte.
 
Bon je sais pas si j'ai été clair  :sweat: mais merci de m'aider


---------------
http://anothergeekwebsite.com
mood
Publicité
Posté le 09-08-2004 à 12:03:51  profilanswer
 

n°820103
pascal34
one point !
Posté le 11-08-2004 à 11:20:58  profilanswer
 

Reparge du cote de TreeViewColumn.
Tu doit pourvoir y spécifier un CellRenderer

n°820671
Niala
Posté le 11-08-2004 à 19:13:57  profilanswer
 

pascal34 a écrit :

Reparge du cote de TreeViewColumn.
Tu doit pourvoir y spécifier un CellRenderer


 
Ok mais je n'ai pas de problème avec le TreeViewColumn (enfin je crois). J'arrive à avoir les renderers que je veux pour chaque colonne.
 
Ce que je voudrai ce que pour chaque niveau le 1er niveau du TreeView puisse avoir un renderer différent des niveaux suivants.
 
Par exemple, j'ai l'arbre suivant :
- Item 1
+ - Item 11
+ - Item 12
+ - Item 13
- Item 2
+ - Item 21
+ - Item 22
+ + - Item 221
- Item 3
 
Je voudrai par exemple que le 1er niveau(Item 1, Item 2 et Item 3) soit rendu en tant qu'image et le 2e (Item 11, Item 12, Item 13, Item 21, Item 22) en texte ou en case à cocher par exemple.
 
Je commence à me demander si la seule solution qui me reste et d'implémenter moi même l'interface TreeModel (ListStore et TreeStore sont les modèles génériques fournit) en créeant un objet ou chaque élément serait aussi une treeview et ainsi de suite. Mais ça me parait lourd et j'aimerai pouvoir faire autrement :/
 
Si quelqu'un a une autre idée merci :hello:n]


---------------
http://anothergeekwebsite.com
n°820839
dex33
Posté le 11-08-2004 à 21:24:50  profilanswer
 

Salut, moi j'ai un treeView code en XSLT a partir d'un fichier XML.  Si tu est interesse je te post le code tu as juste a me le dire sur le forum.

n°821063
pascal34
one point !
Posté le 12-08-2004 à 08:52:03  profilanswer
 

Je pense que tu dois mettre un CellRenderer par colonne et ensuite chaque renderer doit gérer ce qu'il a à afficher en fonction de l'élément courant
Mais tu ne dois pas pouvoir mettre un renderer par élément


Message édité par pascal34 le 12-08-2004 à 08:52:34
n°821134
Niala
Posté le 12-08-2004 à 10:17:51  profilanswer
 

dex33 a écrit :

Salut, moi j'ai un treeView code en XSLT a partir d'un fichier XML.  Si tu est interesse je te post le code tu as juste a me le dire sur le forum.


 
Ça concerne Gtk#? Si oui je suis preneur mais là j'ai l'impression que tu me propose qqch pour le web


---------------
http://anothergeekwebsite.com
n°821140
Niala
Posté le 12-08-2004 à 10:19:51  profilanswer
 

pascal34 a écrit :

Je pense que tu dois mettre un CellRenderer par colonne et ensuite chaque renderer doit gérer ce qu'il a à afficher en fonction de l'élément courant
Mais tu ne dois pas pouvoir mettre un renderer par élément


 
Donc je dois moi même faire mon propre renderer et choisir en fonction du type de l'objet ce que je veux afficher.  
 
Je vais regarder de ce côté là (ça me parait déjà plus simple que de faire mon propre TreeModel) et je tiens au courant si j'arrive à qqch.


---------------
http://anothergeekwebsite.com
n°825760
Niala
Posté le 18-08-2004 à 12:45:05  profilanswer
 

Voilà j'ai enfin trouvé une solution que me convient à peu prés.
 
pascal34 c'était bien du côté du CellRenderer, merci :jap:
 
J'utilise le fait qu'il est possible d'avoir plusieurs CellRenderer pour une colonne TreeViewColumn donnée. Je mets donc un CellRendererText pour afficher les valeurs du modèle et un CellRendererPixbuf pour afficher une image.  
Peu importe que le modèle ne contienne que des données de type texte. Le CellRendererPixbuf ne prend en effet pas sa valeur directement dans le modèle. Pour lui dire d'afficher telle ou telle image, il faut passer par la méthode TreeViewColumn.SetCellDataFunc() qui effectuera les modification que l'on voudra, indépendament du modèle.
 
 
Autre question :
Comment faire pour créer une image vide?
En effet j'ai essayé de faire :

Code :
  1. CellRenderePixbuf pix = (CellRendererPixbuf)cell;
  2. pix.Pixbuf = null;


mais il veut pas. Il y'a bien sur la possiblité de créer un fichier image vide et de faire un pix.Pixbuf = new Gdk.Pixbuf("vide.png" ) mais si y'a un autre moyen ce serait bien


---------------
http://anothergeekwebsite.com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Gtk# : Avoir un renderer différent en fonction du niveau dans l'arbre

 

Sujets relatifs
Fonction "Val()"Obtenir le Nombre de collones sans la fonction num_fields
Fonction Explode : histoire de paramètrepb affichage différent suivant navigateurs
appliquer un syle different a un champ texte et a un radio button ?reecriture d'une fonction php
[mySQL] Besoin d'aide pour la fonction "LOAD DATA INFILE"[PHP] peut on inserer une fonction php dans une requete Mysql ?
Fonction qui me donne la version d'un executable [OK]problème avec la fonction herader
Plus de sujets relatifs à : Gtk# : Avoir un renderer différent en fonction du niveau dans l'arbre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR