GTK + 3.0: Jak używać Gtk.TreeStore z niestandardowymi elementami modelu?

Próbuję opracować aplikację GTK w Pythonie i naprawdę utknąłem z poprawnym użyciem agtk.TreeStore. Mój główny problem: już przeanalizowałem JSON i mam własną strukturę danych, która jest zasadniczo listą Pythona i dwoma rodzajami obiektów: jeden reprezentuje zbiór elementów (kolekcje nie mogą być zagnieżdżane) i jeden do reprezentowania przedmiotów ( które mogą pojawić się zarówno na liście, jak iw kolekcji).

Znam już podstawowe użycie aTreeStore i udało się uzyskać poprawnie renderowane elementy na ekranie. Nie wiem, jak sobie poradzić z faktem, że treestore jest zdolny tylko do przechowywania typów gobjectów (w tym momencie nie jestem pewien, ponieważ nie wiem zbyt wiele o systemie typu gobject). Dokumentacja dla C zawiera następujące (oprócz PixBuf) podstawowe typy, które można wstawiać i są automatycznie mapowane na typy danych Pythona:

Na przykład gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF); utworzy nowy GtkTreeStore z trzema kolumnami, odpowiednio typu int, string i GdkPixbuf.

Ponadto mówi, że możesz wstawić dowolneGType. Link z dokumentacji bezpośrednio wskazuje na ten akapit:

Wartość liczbowa reprezentująca unikalny identyfikator zarejestrowanego typu.

Moje badania tematu kończą się tutaj, a Google znajduje głównie samouczki GTK 2.x i nic o wstawianiu innych typów danych z wyjątkiemstr iint itp.
Pytania:

Czy można zaimplementować nowy GType (lub jakikolwiek inny interfejs, który umożliwi wstawianie niestandardowych danych w treestore) i jak to zrobić?
Już próbowałem wyprowadzićGObject ale to nie pomogło.

Jak pozbyć się utrzymywania dwóch struktur danych w tym samym czasie?
Mianowicie mój wynik analizowania i duplikaty informacji w Treestore.

Jak można radzić sobie z treściami mieszanymi?
W moim przypadku mam kolekcje i przedmioty z różnymi dodatkowymi informacjami (które są odzwierciedlane w widoku drzewa jako węzły z dziećmi lub bez nich).

Jeśli powyższe pytania zostaną rozwiązane, pozbędę się także problemu podczas obsługi selekcji: trudno jest dopasować prosty typ jakstr lubint aby dopasować element, który wstawiłem wcześniej. Taki atrybut musi być kluczem i nadal trzeba przeszukiwać listę z analizowanymi wynikami, które są nieskuteczne.

Z góry dziękuję!

Dodatkowe informacje niezwiązane bezpośrednio z pytaniem:

Myślałem, że wdrożenie zwyczaju może być wykonalnym wyzwaniemTreeModel aż przeczytam to wsamouczek dla GTK 2:

Jednak wszystko to kosztuje: jesteśmało prawdopodobne, aby napisał użyteczny model niestandardowy w mniej niż tysiącu linii, chyba że usuniesz wszystkie znaki nowej linii. Pisanie niestandardowego modelu nie jest jednak tak trudne, jak mogłoby się wydawać, i może być warte wysiłku, nie tylko dlatego, że spowoduje to dużo zdrowszy kod, jeśli masz dużo danych do śledzenia.

Czy to nadal obowiązuje?

Właśnie się natknąłemhttp://www.pygtk.org/articles/subclassing-gobject/sub-classing-gobject-in-python.htm Czy to może być pomocne? Wiele zasobów jest przeznaczonych dla PyGTK 2.0. przestarzałe.

questionAnswers(1)

yourAnswerToTheQuestion