; Module/File: LIG_HeaderCellBackground_gtk2.pb ; Function: Change column header cells background - Linux gtk2 ; Author: Omi ; Date: Jul. 27, 2017 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.3/5.4/5.5/5.6 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- ;function depends on window manager & theme !!! EnableExplicit ImportC "" gtk_tree_view_get_column(*tree_view.GtkTreeView, n) gtk_tree_view_column_get_widget(*tree_column.GtkTreeViewColumn) gtk_tree_view_column_set_clickable(*Column.GtkTreeViewColumn, clickable) gdk_color_parse(spec.p-utf8, *color) gtk_widget_modify_bg(*widget.GtkWidget, state, *color.GdkColor) gtk_widget_get_name(*widget.GtkWidget) EndImport Structure GdkRGBA red.d green.d blue.d alpha.d EndStructure ;Object constants #Win_Main= 0 #LIG = 0 Global.i gEvent, gQuit Global bgcolor.GdkColor Procedure TV_SetColumnHeaderCellBackground(Gadget, Column, Clickable, *Gdk_Color.GdkColor) Protected *Column= gtk_tree_view_get_column(GadgetID(Gadget), Column) Protected *Widget.GtkWidget, *Button.GtkWidget If *Column If Clickable gtk_tree_view_column_set_clickable(*Column, #True); make column clickable too EndIf *Widget= gtk_tree_view_column_get_widget(*Column) If *Widget If PeekS(gtk_widget_get_name(*widget), -1, #PB_UTF8) = "GtkLabel" ;Button background ... *Button= gtk_widget_get_parent_(gtk_widget_get_parent_(gtk_widget_get_parent_(*Widget))) If PeekS(gtk_widget_get_name(*Button), -1, #PB_UTF8) = "GtkButton"; change the button background gtk_widget_modify_bg(*Button, #GTK_STATE_NORMAL, bgcolor) ; gtk_widget_modify_bg(gtk_widget_get_parent_(gtk_widget_get_parent_(gtk_widget_get_parent_(*Widget))), #GTK_STATE_NORMAL, bgcolor) Else Debug "No GtkButton found to change background!" EndIf EndIf EndIf EndIf EndProcedure Procedure CreateWindow_Main() Protected.i I If OpenWindow(#Win_Main, 0, 0, 600, 400, "ListIcon Header cell background (gtk2)", #PB_Window_SystemMenu |#PB_Window_ScreenCentered) ListIconGadget(#LIG, 10, 10, 580, 380, "'Aqua' (selectable)", 150, #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_GridLines) AddGadgetColumn(#LIG, 1, "'Cornsilk' as rgb()", 150) AddGadgetColumn(#LIG, 2, "'#E0E0E0' (selectable)", 150) AddGadgetColumn(#LIG, 3, "'#F4A460'", 150) bgcolor\red= 0 : bgcolor\green= $FFFF : bgcolor\blue= $FFFF : bgcolor\pixel= 0 TV_SetColumnHeaderCellBackground(#LIG, 0, #True, @bgcolor) ;another way to set the GdkColor ... gdk_color_parse("#FFFFF8F8DCDC", @bgcolor); = bgcolor\red= $FFFF : bgcolor\green= $F8F8 : bgcolor\blue= $DCDC TV_SetColumnHeaderCellBackground(#LIG, 1, #False, @bgcolor) bgcolor\red= $E0E0 : bgcolor\green= $E0E0 : bgcolor\blue= $E0E0 TV_SetColumnHeaderCellBackground(#LIG, 2, #True, @bgcolor) gdk_color_parse("#F400A4A46060", @bgcolor); = bgcolor\red= $F400 : bgcolor\green= $A4A4 : bgcolor\blue= $6060 TV_SetColumnHeaderCellBackground(#LIG, 3, #False, @bgcolor) For I= 0 To 9 AddGadgetItem(#LIG, -1, "Cell " + Str(I) + "-0" + #LF$ + "Cell " + Str(I) + "-1" + #LF$ + "Cell " + Str(I) + "-2" + #LF$ + "Cell " + Str(I) + "-3") Next I EndIf EndProcedure CreateWindow_Main() Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True EndSelect Until gQuit ; IDE Options = PureBasic 5.44 LTS (Linux - x86) ; CursorPosition = 8 ; Folding = - ; EnableUnicode ; EnableXP ; SubSystem = gtk2