J'ai quelques difficultés à comprendre comment utiliser les boutons à bascule pour la liaison GTK + avec Haskell.Utiliser le bouton bascule avec Haskell et Glade
Ce que je veux faire est d'afficher un treeView
avec deux colonnes: l'une contenant des chaînes et l'autre contenant des boutons à bascule. L'utilisateur doit cocher les boutons à bascule pour sélectionner les entrées qu'il veut utiliser dans une autre partie du programme.
Mon modèle est une liste de tuples (String,Bool)
, le booléen censé refléter l'état du bouton bascule. Initialement, tous sont faux.
Voici mon code:
treeview <- builderGetObject builder castToTreeView "diffDisplayTreeView"
treeviewselect <- treeViewGetSelection difftreeview
dcolumn <- builderGetObject builder castToTreeViewColumn "dcolumn"
selcolumn <- builderGetObject builder castToTreeViewColumn "selcolumn"
dcell <- builderGetObject builder castToCellRendererText "dcell"
selcell <- builderGetObject builder castToCellRendererToggle "selcell"
[...]
store <- listStoreNew modelFromSomewhereElse
cellLayoutSetAttributes dcolumn dcell store $ \x -> [cellText := fst(x)]
cellLayoutSetAttributes selcolumn selcell store $ \x -> [cellToggleActivate := snd(x)]
treeViewSetModel treeview store
Il fonctionne bien à initating TreeView, mais quand je clique sur un bouton à bascule, il reste à l'état dans lequel il a été initalized. Je voudrais attraper le cellToggled
pour une cellule spécifique et changer le modèle correctement, mais je ne comprends pas très bien comment naviguer dans une sélection TreeView.
Toute aide serait grandement appréciée :)
Désolé, je n'ai pas le code Haskell pour vous montrer. En tout cas, vous devez vous connecter au signal de rendu 'toggled' et changer le magasin vous-même. Le moteur de rendu affichera automatiquement l'état actuel. – theGtknerd
Semble que cela a fonctionné quand je lie le changement de magasin à un bouton «cliqué», mais le signal «toggled» est quelque peu bogué (ayant quelques types de déconner ici) –