Kann man (oder wie kann man) mit Hilfe eines GTKCellRenderes die Linien eines ListViews einfärben.
(Nicht nur den Texthintergrund (wie im Beispiel), sondern die ganze internen Label-Box).
Und wie kann man z.B diesen Callback vermeiden ?
Mit CSS scheint es nicht Möglich zu sein. (bzw. ich habe keine Ahnung!)
Dafür scheint die Magie des GTK-Cellrenderer nötig zu sein, oder ?
Hier ein kleines CellRenderer-Beispiel:
(Es erfühlt nicht annähernd meine Bedingung )
Code: Alles auswählen
ImportC ""
gtk_css_provider_load_from_data(*css_provider, data_.p-utf8, length, *error.GError)
gtk_css_provider_new()
gtk_style_context_add_provider(*context, *provider, priority)
gtk_style_context_remove_provider(*context, *provider)
gtk_widget_get_style_context(*widget.GtkWidget)
g_object_set(*Object.GtkObject, property.p-utf8, value.i, term.i = 0)
g_type_check_instance_is_a(*Instance.GTypeInstance, *Type.GTypeClass)
gtk_cell_layout_get_cells(*cell_layout)
EndImport
ProcedureC ColumnRenderingCallback(*Column.GtkTreeViewColumn, *Renderer.GtkCellRenderer, *Model, *Iter.GtkTreeIter, *UserData)
Protected CellText.S
Protected CellTextUTF8.S
Protected Row.I
Row = Val(PeekS(gtk_tree_model_get_string_from_iter_(*Model, *Iter), -1, #PB_UTF8))
CellText = GetGadgetItemText(0, Row, 0)
CellTextUTF8 = Space(StringByteLength(CellText, #PB_UTF8))
PokeS(@CellTextUTF8, CellText, -1, #PB_UTF8)
g_object_set(*Renderer, "markup", @CellTextUTF8)
EndProcedure
If OpenWindow(0, 0, 0, 270, 140, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0, 10, 10, 250, 120)
For a = 1 To 12
AddGadgetItem (0, -1, ~"<span bgcolor=\"#ffff00\"> Item </span> " + Str(a) + " of the Listview")
Next
Column = gtk_tree_view_get_column_(GadgetID(0), 0)
RendererList = gtk_cell_layout_get_cells(Column)
Renderer = g_list_nth_data_(RendererList, 1)
For i = 0 To g_list_length_(RendererList) - 1
Renderer = g_list_nth_data_(RendererList, i)
If g_type_check_instance_is_a(Renderer, gtk_cell_renderer_text_get_type_())
Break
EndIf
Next i
g_list_free_(RendererList)
If Renderer
gtk_tree_view_column_set_cell_data_func_(Column, Renderer, @ColumnRenderingCallback(), 0, 0) ;Wie umgehe ich den Callback ?
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf