IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ Discussion :

[gtkmm] encapsulation d'objet dans un treeview


Sujet :

GTK+

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Par défaut [gtkmm] encapsulation d'objet dans un treeview
    Bonjour

    Dans mon appli, j'ai un treeview qui représente une arborescence de fichier.

    Afin d'acceder facilement aux infos des fichiers et pouvoir les utiliser, je voudrais associer chaque fichier avec un objet Gio::File.
    La manière la plus évidente me parait d'encapsuler les references aux fichiers dans le TreeStore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    typedef Glib::RefPtr<Gio::File> FileRef_t;
     
    class FileTreeColumns
    :	public Gtk::TreeModel::ColumnRecord
    {
    public:
    	FileTreeColumns() { add(file); }
     
    	Gtk::TreeModelColumn<FileRef_t> file;
    };
    Ce code compile et s'execute, mais je ne sais pas comment gérer le rendu du nom du fichier (avec appel à File::get_basename() )
    Pour l'instant à l'execution j'ai plein d'erreurs "GLib-GObject-WARNING **: unable to set property `text' of type `gchararray' from value of type `GFile'"

    Merci de votre aide.
    Si par ailleurs cette stratégie est vraiment mauvaise, merci de me le dire

    Rémi

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Par défaut
    J'ai trouvé. C'est pas compliqué mais il fallait y penser : il faut ajouter un champs de colonne qu'on affiche pas. Le champs existe, donc on peux retrouver son objet, il n'est pas affiché, du coup Gtk ne cherche pas après et ne soulève pas d'erreur.

    Voici une partie de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    typedef Glib::RefPtr<Gio::File > FileRef_t;
     
    class FileTreeModel
    :	public Gtk::TreeStore
    {
    public:
    	FileTreeModel();
    	virtual ~FileTreeModel();
     
    	class FileTreeColumns
    	:	public Gtk::TreeModel::ColumnRecord
    	{
    	public:
    		FileTreeColumns()
    		{ add(name); add(file); }
     
    		Gtk::TreeModelColumn<string> name;
    		Gtk::TreeModelColumn<FileRef_t> file;
    	};
     
    	const FileTreeColumns& columns() const
    		{ return _columns; }
     
     
    private:
    	FileTreeColumns	_columns;
    };
     
     
    // on definit les colonne comme suit :
    	_tree_view.append_column("Name", _model->columns().name);
    	// ne pas appeler append_column pour _model->columns().file
     
     
    // on ajoute des fichiers comme suit (à partir de FileTreeModel) :
    	FileRef_t file = Gio::File::create_for_path(pathStr);
    	Gtk::TreeModel::Row row = *(append());
    	row[_columns.name] = file->get_basename();
    	row[_columns.file] = file;
    on peut ensuite reprendre le fichier à partir des objets Row dans n'importe quel callback

    J'espère que ça peux aider certains
    Rémi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/04/2014, 20h21
  2. [ GTKMM ] effacer les lignes dans un TREEVIEW
    Par LM_programme dans le forum GTK+
    Réponses: 4
    Dernier message: 19/02/2011, 16h23
  3. C# - Afficher des objets dans un treeview, comme le debugger VS
    Par Rits dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 12/08/2009, 16h52
  4. Réponses: 2
    Dernier message: 01/08/2007, 15h46
  5. encapsulation d'objets dans des sessions
    Par Steph_SOUMIER dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2007, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo