Interface GTK2 - Fonction zoom sur liste

Interface GTK2 - Fonction zoom sur liste - Perl - Programmation

Marsh Posté le 24-10-2007 à 14:33:15    

Bonjour amis programmeurs,
 
Je developpe une interface en perl Gtk2 qui contient une Gtk2::SimpleList avec different champ du type:
 
 $listTrame = Gtk2::SimpleList->new (
   'Numero'    => 'int',
   'Source'    => 'text',
   'Trame'    => 'text',
   'row color'     => 'color',
 );
 
 
La question est la suivante:
 
Comment fait-on pour agrandir la taille des caractères des valeurs de cette liste une fois affichée? Je suis sûr qu'il existe une proprieté concernant ce widget quelque part mais je n'ai pas trouvé laquelle.
 
Pour vous donnez un exemple, Ethereal (logiciel de capture réseau) réalise cette fonction pour zoomer plus ou moins sur la taille des trames réseaux capturées...Ou bien comme dans le navigateur de fichier sous Ubuntu ( un zoom en pourcentage permet d'agrandir ou diminuer la taille des caracteres)...je sais pas si ca vous parle....
 
Merci pour vos eventuelles réponses.

Reply

Marsh Posté le 24-10-2007 à 14:33:15   

Reply

Marsh Posté le 24-10-2007 à 14:36:59    

tu modifies les propriétés de tes renderer.

Reply

Marsh Posté le 24-10-2007 à 14:43:58    

Je vois très très vaguement de quoi tu me parles...est-ce que tu pourrais me détailler un peu plus

Reply

Marsh Posté le 24-10-2007 à 14:46:30    

...s'il te plait...merci

Reply

Marsh Posté le 24-10-2007 à 15:35:33    

Hum, jamais fait de gtk2perl et ce simplelist est peut etre un peu trop simple. Peut être tu devrais regarder comment une fait un liststore classiquement.

 

Pour chaque colonne, tu as un renderer. GtkCellRendererText pour du texte. Et dessus, t'as de jolis propriétés pour changer par exemple la taille du texte, sa couleur, etc.
http://library.gnome.org/devel/gtk [...] rText.html

 

C'est possible en GTK+, ça doit l'etre via perl.

 


Message édité par Taz le 24-10-2007 à 15:36:06
Reply

Marsh Posté le 24-10-2007 à 15:44:59    

ok, ta SimpleList c'est un TreeView.
Regarde la doc de TreeView.
 
T'as un $tree_view->get_column ($n)
T'enchaîne un $tree_column->get_cell_renderers
Tu prend ton renderer, t'as plus qu'a toucher la propriété qui t'intéresse, genre scale ou size, genre $cell->set("size" => 12)

Reply

Marsh Posté le 24-10-2007 à 15:46:12    

donc tu fais ça pour chaque colonne par exemple, en montant la "scale" et ça grossit mécaniquement ta liste

Reply

Marsh Posté le 24-10-2007 à 18:38:38    

Wouwouuuu punaise...ca marche....
Merci beaucoup...tu viens de me faire gagner de précieuses minutes où je vais éviter d'exploser mes yeux devant l'écran d'ordi

Reply

Marsh Posté le 24-10-2007 à 19:14:07    

Oups pardon j'ai parlé trop vite...
 
Il s'agit d'une liste que je rempli dynamiquement (trame réseau) jusqu'à ce que je stoppe ma capture.
Et je viens de me rendre compte que toutes les lignes du champ (le 3eme) qui contient la trame brute (beaucoup de caractere en general) disparait au bout d'un moment.
Seules les infos des deux autres colonnes restent visibles. Par contre, j'arrive toujours à recuperer l'information trame dans cette liste.
 
Est-ce que l'on doit aussi fixer certains paramètres de taille au CellRenderer pour éviter ce bug d'affichage.
 
Merci et encore désolé

Reply

Marsh Posté le 09-11-2007 à 17:41:00    

Bonjour tout le monde,
 
J'ai crée une barre d'outil dans laquelle sont contenus des boutons permettant de se deplacer sur les lignes de la simpleliste.
Il suffit simplement de recuperer le numero de ligne selectionnée puis de l'incrémenter pour se selectionner la suivante:

Code :
  1. my @row = $listTrame->get_selected_indices;
  2. $listTrame->select($row[0]+1);


J'ai juste un petit probleme : quand je continu à me deplacer et que j'arrive sur les lignes qui ne sont pas visibles dans la scrolledBar, la selection se fait bien mais la scrolledBar ne se met pas à jour et l'on ne voit donc plus les  lignes qui sont sélectionnées.
 
Auriez-vous une piste pour m'aider un peu...
Merci beaucoup...

Reply

Marsh Posté le 09-11-2007 à 17:41:00   

Reply

Marsh Posté le 09-11-2007 à 17:59:11    

t'as une GtkScrolledWindow ?

Reply

Marsh Posté le 05-12-2007 à 18:53:01    

oups pardon j'avais completement oublié ce probleme...j'ai travaillé sur un autre probleme ces derniers temps...et je ne m'étais pas apercu que tu m'avais posé une question...desolé taz
 
Par contre il est toujours en suspens ce probleme...
 
Et oui effectivement ma liste est contenue dans une Gtk2::ScrolledWindow;

Reply

Marsh Posté le 05-12-2007 à 18:58:59    

Suite à mon post précedent, je ne sais pas si quelqu'un saura me repondre mais en tous cas, me voici avec une nouvelle interrogation...
 
Voila j'ai crée un fenetre dans laquelle est contenue une Gtk2::Image->new_from_file ($graphImg)
 
Cette image va être modifiée dans un fichier temporaire au cours du programme et j'aurais voulu savoir comment il fallait agir pour recharger l'image dans la fenetre (suite à un callback)

Reply

Marsh Posté le 08-01-2008 à 17:33:55    

Bonjour c'est encore moi...
 
Je souhaiterais creer dans une de mes fenetres une zone que l'on puisse developper ou non...un peu comme sous Ubuntu pour la recherche de fichiers où en  cliquant sur un truc du genre : "->Sélectionner plus d'options" un nouvelle zone avec de nouveaux widgets apparait juste en dessous...
 
J'espere m'être assez clairement expliqué....
 
J'aimerais donc savoir si il existe un widget Gtk2 tout fait que l'on peut utiliser directement ou si c'est un peu plus compliqué que cela...
 
En tous  cas merci d'avance pour vos eventuelles reponses....

Reply

Marsh Posté le 08-01-2008 à 18:29:43    

Expander

Reply

Marsh Posté le 09-01-2008 à 10:22:15    

Merci beaucoup Taz...ca marche nickel...

Reply

Marsh Posté le 09-01-2008 à 12:01:47    

Ah au fait...j'en profites aussi pour te reposer la question concernant le deplacement sur les lignes de ma simplelist et où la scrolledBar ne se met pas à jour ....et l'on ne voit donc plus les  lignes qui sont sélectionnées lorsque l'on depasse la zone allouée.
 
Oui effectivement j'ai une GtkScrolledWindow...
 
Est-ce que tu aurais des pistes sur la question....
En tous cas merci encore pour tes eventuelles reponses...

Reply

Marsh Posté le 09-01-2008 à 12:11:56    

vérifie la policy
 
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

Reply

Marsh Posté le 09-01-2008 à 13:17:50    

Oui elle était déja fixée....Mystère....
 

Code :
  1. my $boxTrame = Gtk2::HBox->new( TRUE, TRUE ) ;
  2. my $scrolledTrame1 = Gtk2::ScrolledWindow->new();
  3. $scrolledTrame1->set_policy(qw/automatic automatic/);
  4. $boxTrame->pack_start($scrolledTrame1, TRUE, TRUE, 10);
  5. $scrolledTrame1->show();
  6. $vPaned -> pack1 ($boxTrame, TRUE, TRUE);

Reply

Marsh Posté le 09-01-2008 à 14:33:58    

et le code ou tu remplis ta scrolled ?

Reply

Marsh Posté le 09-01-2008 à 14:48:34    

Dans ma scrolledWindow je place un seul widget qui est une simplelist de cette facon:

Code :
  1. #Creation des champs dans lesquelles vont se décomposer chaque trame
  2. my $listTrame = createListe($scrolledTrame1,
  3.   'Numero'    => 'int',
  4.   'Source'    => 'text',
  5.   'Trame'    => 'text');
  6. .........
  7. sub createListe{
  8. my ($parent, @field) = @_;
  9. #Creation de la liste composé des champs contenus dans la table de hashage
  10. my $liste = Gtk2::SimpleList->new (@field);
  11. #Rattachement de la Liste à la barre de defilement
  12. $liste->show();
  13. $parent->add($liste);
  14. #Redimensionnement automatique des colonnes
  15. $liste->columns_autosize;
  16. map { $_->set_resizable (TRUE) } $liste->get_columns;
  17. #Alternance des couleurs pour chaque ligne
  18. $liste->set_rules_hint (TRUE);
  19. $liste->set_headers_clickable(TRUE);
  20. return $liste;
  21. }


 
Voila c'est tout....

Reply

Marsh Posté le 09-01-2008 à 15:14:00    

nan rien


Message édité par Taz le 09-01-2008 à 15:14:42
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed