Code: Select all
Procedure.l GtkGadgetColor(Gadget, Type, State)
;color types
#GtkGadgetColorBase = 0
#GtkGadgetColorBg = 1
#GtkGadgetColorDark = 2
#GtkGadgetColorFg = 3
#GtkGadgetColorLight = 4
#GtkGadgetColorText = 5
;states
#GtkStateNormal = 0
#GtkStateActive = 1
#GtkStatePrelight = 2
#GtkStateSelected = 3
#GtkStateIntensitive = 4
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
;returns a widget color
Protected *style.GtkStyle, *color.GdkColor
;get widget style
*style = gtk_widget_get_style_(GadgetID(Gadget))
;return color according type and state
Select Type
Case #GtkGadgetColorBase
*color = *style\base[State]
Case #GtkGadgetColorBg
*color = *style\bg[State]
Case #GtkGadgetColorDark
*color = *style\dark[State]
Case #GtkGadgetColorFg
*color = *style\fg[State]
Case #GtkGadgetColorLight
*color = *style\light[State]
Case #GtkGadgetColorText
*color = *style\text[State]
EndSelect
;return color value
ProcedureReturn RGB(*color\red >> 8, *color\green >> 8, *color\blue >> 8)
CompilerCase #PB_OS_Windows
Select Type
Case #GtkGadgetColorBg, #GtkGadgetColorBase
If State = #GtkStateSelected
ProcedureReturn GetSysColor_(#COLOR_HIGHLIGHT)
Else
ProcedureReturn GetSysColor_(#COLOR_WINDOW)
EndIf
Case #GtkGadgetColorFg, #GtkGadgetColorText
If State = #GtkStateSelected
ProcedureReturn GetSysColor_(#COLOR_HIGHLIGHTTEXT)
Else
ProcedureReturn GetSysColor_(#COLOR_WINDOWTEXT)
EndIf
Case #GtkGadgetColorDark
ProcedureReturn GetSysColor_(#COLOR_BTNSHADOW)
Case #GtkGadgetColorLight
ProcedureReturn GetSysColor_(#COLOR_3DLIGHT)
EndSelect
CompilerEndSelect
EndProcedure