Referenz von Treeview-Column auf ListStoreColumn (-Nr)
Verfasst: Donnerstag 12. August 2010, 08:20
Hallo,
ich habe die letzten Tage die Klassenreferenz von gtk rauf und runter durchforstet und bin jetzt kurz vor dem Aufgeben. Wahrscheinlich sehe ich aber auch einfach den Wald vor lauter Bäumen nicht mehr. Und deshalb wollte ich doch noch mal die Frage in die Runde werfen, vielleicht hat ja jemand eine Lösung gefunden.
Folgende Situation: Ich habe über Glade ein Treeview und einen dazugehörigen ListStore erstellt.
Der ListStore enthält allerdings mehr Spalten als das TreeView, und auch die Reihenfolge ist eine andere.
Über Glade habe ich den CellRenderern die entsprechenden Spalten des Modells zugewiesen. Die Daten werden auch brav geladen. Soweit alles schön. Jetzt benutze ich dieses Setup aus ListStore + Treeview + ein paar andere Widgets im Programm an verschiedenen Stellen mit verschiedenen Daten (und Liststores). Mein Wunsch ist es, das Binden der Callbacks nach Möglichkeit zu automatisieren. Dazu iteriere ich über TreeView.get_columns() und binde z.B. das "edited"-Signal. Um die neuen Werte aber an das dahinterliegende ListStore geben zu können, brauche ich die Spaltennummer. Die callbacks liefern mir aber immer nur eine Spaltennummer bezogen auf das TreeView, nicht auf das Modell. Wie oben schon beschrieben sind diese nicht notwendigerweise identisch.
Meine Frage ist nun: In Glade habe ich das Mapping TreeView-Column -> ListStore Column ja in den Cellrenderern hinterlegt. Komme ich von Python aus irgendwie an diesen Wert heran?
Als schnelle Lösung bin ich jetzt dazu übergegangen, den Wert "SortColumnId" auszulesen und zu verwenden. Ist aber auch eine wackelige Angelegenheit, weil dieser a) nicht immer sinnvoll gesetzt wird (Schussel, vor allem nach nachträglichen Änderungen am ListStore) und b) ja auch nicht notwendigerweise mit der Datenspalte übereinstimmt.
Kann mich jemand "inspirieren"?
ich habe die letzten Tage die Klassenreferenz von gtk rauf und runter durchforstet und bin jetzt kurz vor dem Aufgeben. Wahrscheinlich sehe ich aber auch einfach den Wald vor lauter Bäumen nicht mehr. Und deshalb wollte ich doch noch mal die Frage in die Runde werfen, vielleicht hat ja jemand eine Lösung gefunden.
Folgende Situation: Ich habe über Glade ein Treeview und einen dazugehörigen ListStore erstellt.
Der ListStore enthält allerdings mehr Spalten als das TreeView, und auch die Reihenfolge ist eine andere.
Über Glade habe ich den CellRenderern die entsprechenden Spalten des Modells zugewiesen. Die Daten werden auch brav geladen. Soweit alles schön. Jetzt benutze ich dieses Setup aus ListStore + Treeview + ein paar andere Widgets im Programm an verschiedenen Stellen mit verschiedenen Daten (und Liststores). Mein Wunsch ist es, das Binden der Callbacks nach Möglichkeit zu automatisieren. Dazu iteriere ich über TreeView.get_columns() und binde z.B. das "edited"-Signal. Um die neuen Werte aber an das dahinterliegende ListStore geben zu können, brauche ich die Spaltennummer. Die callbacks liefern mir aber immer nur eine Spaltennummer bezogen auf das TreeView, nicht auf das Modell. Wie oben schon beschrieben sind diese nicht notwendigerweise identisch.
Meine Frage ist nun: In Glade habe ich das Mapping TreeView-Column -> ListStore Column ja in den Cellrenderern hinterlegt. Komme ich von Python aus irgendwie an diesen Wert heran?
Als schnelle Lösung bin ich jetzt dazu übergegangen, den Wert "SortColumnId" auszulesen und zu verwenden. Ist aber auch eine wackelige Angelegenheit, weil dieser a) nicht immer sinnvoll gesetzt wird (Schussel, vor allem nach nachträglichen Änderungen am ListStore) und b) ja auch nicht notwendigerweise mit der Datenspalte übereinstimmt.
Kann mich jemand "inspirieren"?