The fact that GTK3 is constantly changing something doesn't make things easy for app developers or Fred either.
Link to Bug-Report:
viewtopic.php?f=23&t=71967Let's see how it works with the GtkCssProviders.
Since I'm not so fit with GTK and CSS, we can switch everything to CSS together.
Thanks to ccode and Oma for help.
Here my current status of the code
Update v1.01Update v1.02- Fixed some colors
- Added SetWindowColor. Thanks to Shardik
Update v1.03- Bugfix memory leak -> gtk_container_get_children_(...) returns a newly-allocated list
Update v1.04- Bugfix CSSColorString
- Update Macro SetProvider to Procedure GtkSetProvider(...)
- Update Macro SetOverride to Procedure GtkSetOverride(...)
- Update Example
Code:
;-TOP
; Workaround Linux GTK3 GadgetColor
; by : mk-soft, ccode, Oma, Shardik
; Version : v1.04.0
; Create : 25.12.2018
; Update : 22.02.2021
; -----------------------------------------------------------------------------
;- Begin Module GtkGadgetColor
DeclareModule GtkGadgetColor
Declare.s GtkGetVersionString()
Declare GtkSetWindowColor(Window, Color)
Declare GtkSetGadgetColor(Gadget, ColorType, Color)
Declare SetSelectedColor(Color)
Declare SetSelectionColor(Color)
Macro SetWindowColor(Window, Color)
GTKSetWindowColor(Window, Color)
EndMacro
Macro SetGadgetColor(Gadget, ColorType, Color)
GtkSetGadgetColor(Gadget, ColorType, Color)
EndMacro
EndDeclareModule
Module GtkGadgetColor
EnableExplicit
;- Imports
ImportC ""
;
gtk_get_major_version()
gtk_get_minor_version()
gtk_get_micro_version()
;
gtk_widget_override_color(*handle, state, color)
gtk_widget_override_background_color(*handle, state, color)
;
gtk_widget_get_style_context(*Widget.GtkWidget)
gtk_css_provider_new()
gtk_css_provider_load_from_data(*CSSProvider, CSSData.p-utf8, Length, *Error.GError)
gtk_style_context_add_provider(*CSSContext, *CSSProvider, Priority)
gtk_style_context_remove_provider(*CSSContext, *CSSProvider)
;
gtk_widget_get_screen(*Widget.GtkWidget)
gtk_style_context_add_provider_for_screen(*CSSContext, *CSSProvider, Priority)
gtk_style_context_remove_provider_for_screen(*CSSContext, *CSSProvider)
;
gtk_style_context_add_class(*CSSContext, ClassName.p-utf8)
gtk_style_context_list_classes(*CSSContext)
gtk_viewport_get_view_window(*Viewport)
EndImport
;- Constants
#GTK_STATE_FLAG_NORMAL = 0
#GTK_STATE_FLAG_ACTIVE = 1 << 0
#GTK_STATE_FLAG_PRELIGHT = 1 << 1
#GTK_STATE_FLAG_SELECTED = 1 << 2
#GTK_STATE_FLAG_INSENSITIVE = 1 << 3
#GTK_STATE_FLAG_INCONSISTENT = 1 << 4
#GTK_STATE_FLAG_FOCUSED = 1 << 5
#GTK_STATE_FLAG_BACKDROP = 1 << 6
#GTK_STATE_FLAG_DIR_LTR = 1 << 7
#GTK_STATE_FLAG_DIR_RTL = 1 << 8
#GTK_STYLE_PROVIDER_PRIORITY_FALLBACK = 1
#GTK_STYLE_PROVIDER_PRIORITY_THEME = 200
#GTK_STYLE_PROVIDER_PRIORITY_SETTINGS = 400
#GTK_STYLE_PROVIDER_PRIORITY_APPLICATION = 600
#GTK_STYLE_PROVIDER_PRIORITY_USER = 800
;- Structures
Structure GdkRGBA
red.d
green.d
blue.d
alpha.d
EndStructure
;- Maps
Global NewMap CSSProviderMap()
;- Global Variables
Global GTKMinorVersion = gtk_get_minor_version()
Global CSSColorSelected.s = "RGB(128,128,255)"
Global CSSColorSelection.s = "RGB(160,160,255)"
;- Macros
Macro PB(Function)
Function
EndMacro
Procedure GtkSetProvider(GadgetID, ColorType, CSSData.s)
Protected CSSProvider = gtk_css_provider_new()
Protected CSSContext = gtk_widget_get_style_context(GadgetID)
If FindMapElement(CSSProviderMap(), Hex(GadgetID) + "/" + Hex(ColorType))
gtk_style_context_remove_provider(CSSContext, CSSProviderMap())
EndIf
CSSProviderMap(Hex(GadgetID) + "/" + Hex(ColorType)) = CSSProvider
gtk_css_provider_load_from_data(CSSProvider, CSSData, -1, 0)
gtk_style_context_add_provider(CSSContext, CSSProvider, #GTK_STYLE_PROVIDER_PRIORITY_USER)
g_object_unref_(CSSProvider)
EndProcedure
Procedure GtkSetOverride(Gadget, ColorType, Color)
Protected *GdKColor.GdkRGBA = AllocateStructure(GdkRGBA)
*GdKColor\red = (1.0/255.) * Red(Color)
*GdKColor\green = (1.0/255.0) * Green(Color)
*GdKColor\blue = (1.0/255.0) * Blue(Color)
*GdKColor\alpha = 1.0
Select ColorType
Case #PB_Gadget_FrontColor
gtk_widget_override_color(GadgetID(Gadget), #GTK_STATE_FLAG_NORMAL, *GdKColor)
Case #PB_Gadget_BackColor
gtk_widget_override_background_color(GadgetID(Gadget), #GTK_STATE_FLAG_NORMAL, *GdKColor)
*GdKColor\red = 0.0
*GdKColor\green = 0.0
*GdKColor\blue = 1.0
*GdKColor\alpha = 0.5
gtk_widget_override_background_color(GadgetID(Gadget), #GTK_STATE_FLAG_SELECTED, *GdKColor)
Default
PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
FreeStructure(*GDKColor)
EndProcedure
; ---------------------------------------------------------------------------
Procedure.s CSSColorString(color)
!mov eax, dword [p.v_color]
!bswap eax
!shr eax, 8
!mov dword [p.v_color], eax
ProcedureReturn "#" + RSet(Hex(Color), 6, "0")
EndProcedure
; ---------------------------------------------------------------------------
Procedure.s CSSColorStringLight(color, prozent)
Protected r1.s, r,g,b
r = Red(color) * prozent / 100
g = Green(color) * prozent / 100
b = Blue(color) * prozent / 100
r1 = "rgb(" + r + "," + g + "," + b + ")"
ProcedureReturn r1
EndProcedure
; ---------------------------------------------------------------------------
Procedure SetSelectedColor(Color)
CSSColorSelected = CSSColorString(Color)
EndProcedure
; ---------------------------------------------------------------------------
Procedure SetSelectionColor(Color)
CSSColorSelection = CSSColorString(Color)
EndProcedure
; ---------------------------------------------------------------------------
Procedure.s GtkGetVersionString()
Protected major, minor, micro
major = gtk_get_major_version()
minor = gtk_get_minor_version()
micro = gtk_get_micro_version()
ProcedureReturn "" + major + "." + minor + "." + micro
EndProcedure
; ---------------------------------------------------------------------------
Procedure GtkSetWindowColor(Window, Color)
Static NewMap CSSWindowProviderMap()
Protected CSSProvider, CSSContainer, CSSContext, CSSColor.s, CSSData.s
Protected GList
CSSColor = CSSColorString(Color)
If GTKMinorVersion > 15
CSSData = "window.background {background-color: " + CSSColor + ";}"
CSSContainer = WindowID(Window)
Else
CSSData = "GtkLayout {background-color: " + CSSColor + ";}"
GList = gtk_container_get_children_(WindowID(Window))
CSSContainer = g_list_nth_data_(GList, 0)
g_list_free_(GList)
GList = gtk_container_get_children_(CSSContainer)
CSSContainer = g_list_nth_data_(GList, 0)
g_list_free_(GList)
EndIf
CSSProvider = gtk_css_provider_new()
CSSContext = gtk_widget_get_style_context(CSSContainer)
If FindMapElement(CSSWindowProviderMap(), Hex(Window))
gtk_style_context_remove_provider(CSSContext, CSSWindowProviderMap())
EndIf
CSSWindowProviderMap(Hex(Window)) = CSSProvider
gtk_css_provider_load_from_data(CSSProvider, CSSData, -1, 0)
gtk_style_context_add_provider(CSSContext, CSSProvider, #GTK_STYLE_PROVIDER_PRIORITY_USER)
g_object_unref_(CSSProvider)
EndProcedure
; ---------------------------------------------------------------------------
Procedure GtkSetGadgetColor(Gadget, ColorType, Color)
Protected CSSProvider, CSSContext, CSSColor.s, CSSColor2.s, CSSData.s
Protected GList, Layer, Layer2, Layer3
Protected *GdKColor.GdkRGBA
If GTKMinorVersion <= 15
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndIf
Select GadgetType(Gadget)
Case #PB_GadgetType_Button
;-* #PB_GadgetType_Button
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* button {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* button {background: " + CSSColor + ";}"
CSSData + "* button:active {" + "background: " + CSSColorSelected + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_ButtonImage
;-* #PB_GadgetType_ButtonImage
;TODO
PB(SetGadgetColor)(Gadget, ColorType, Color)
Case #PB_GadgetType_Calendar
;-* #PB_GadgetType_Calendar
;TODO Override
GtkSetOverride(Gadget, ColorType, Color)
Case #PB_GadgetType_CheckBox
;-* #PB_GadgetType_CheckBox
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* checkbutton {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* checkbutton {background: " + CSSColor + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_ComboBox
;-* #PB_GadgetType_ComboBox
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* .combo {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* .combo {background: " + CSSColor + ";}"
;CSSData + "* .combo:focus {" + "background: " + CSSColorSelected + ";}"
;CSSData + "* .combo > selection {" + "background-color: " + CSSColorSelection + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
Layer = gtk_bin_get_child_(GadgetID(Gadget))
Layer2 = gtk_widget_get_parent_(Layer)
Layer3 = gtk_widget_get_parent_(Layer2)
GtkSetProvider(Layer3, ColorType, CSSData)
Case #PB_GadgetType_Container
;-* #PB_GadgetType_Container
;TODO
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
;-* #PB_GadgetType_Frame
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* frame {color: " + CSSColor + "};"
Case #PB_Gadget_BackColor
CSSData = "* border {background: " + CSSColor + ";} "
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_Date
;-* #PB_GadgetType_Date
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* entry {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* entry {background: " + CSSColor + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_Editor
;-* #PB_GadgetType_Editor
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* text {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* text {background: " + CSSColor + ";}"
CSSData + "* text > selection {" + "background-color: " + CSSColorSelection + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_ExplorerCombo
;-* #PB_GadgetType_ExplorerCombo
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* .combo {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* .combo {background: " + CSSColor + ";}"
;CSSData + "*.combo:focus {" + "background: " + CSSColorSelected + ";}"
;CSSData + "*.combo > selection {" + "background-color: " + CSSColorSelection + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GList = gtk_container_get_children_(GadgetID(Gadget))
Layer = g_list_nth_data_(GList, 0)
g_list_free_(GList)
GtkSetProvider(Layer, ColorType, CSSData)
Case #PB_GadgetType_ExplorerList, #PB_GadgetType_ExplorerTree
;-* #PB_GadgetType_ExplorerList, #PB_GadgetType_ExplorerTree
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* .view {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* .view {background: " + CSSColor + ";}"
CSSData + "* .view:selected {background: " + CSSColorSelected + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_Frame
;-* #PB_GadgetType_Frame
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* frame {color: " + CSSColor + "};"
Case #PB_Gadget_BackColor
CSSData = "* border {background: " + CSSColor + ";} "
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_HyperLink
;-* #PB_GadgetType_HyperLink
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
;Intern: <span color='#0000FF'>Text</span>
ProcedureReturn 0
Case #PB_Gadget_BackColor
CSSData = "* label {background: " + CSSColor + "};"
Default
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_IPAddress
;-* #PB_GadgetType_IPAddress
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* entry {color: " + CSSColor + "};"
Case #PB_Gadget_BackColor
CSSData = "* entry {background: " + CSSColor + "};"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_ListIcon, #PB_GadgetType_ListView, #PB_GadgetType_Tree
;-* #PB_GadgetType_ListIcon, #PB_GadgetType_ListView, #PB_GadgetType_Tree
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* .view {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* .view {background: " + CSSColor + ";}"
CSSData + "* .view:selected {background: " + CSSColorSelected + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_Option
;-* #PB_GadgetType_Option
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* radiobutton {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* radiobutton {background: " + CSSColor + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_Panel
;-* #PB_GadgetType_Panel
CSSColor = CSSColorString(Color)
CSSColor2 = CSSColorStringLight(Color, 90)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* box * {background: " + CSSColor + ";}"
CSSData + "* .top * {background: " + CSSColor2 + ";}"
CSSData + "* .up {background: transparent}"
CSSData + "* .down {background: transparent}"
CSSData + "* :checked {background: " + CSSColor + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_ProgressBar
;-* #PB_GadgetType_ProgressBar
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* .left {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
;Eigentlich: .left{background-image: linear-gardient(..,..)}
CSSData = "* .left {background: " + CSSColor + ";}"
CSSData + "* .left:selected {background: " + CSSColorSelected + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_Scintilla
;-* #PB_GadgetType_Scintilla
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
ScintillaSendMessage(Gadget, #SCI_STYLESETFORE, #STYLE_DEFAULT, color)
ScintillaSendMessage(Gadget, #SCI_STYLECLEARALL)
Case #PB_Gadget_BackColor
ScintillaSendMessage(Gadget, #SCI_STYLESETBACK, #STYLE_DEFAULT, color)
ScintillaSendMessage(Gadget, #SCI_STYLECLEARALL)
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
Case #PB_GadgetType_ScrollArea
;-* #PB_GadgetType_ScrollArea (Bug ?)
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
; Nothing
ProcedureReturn 0
Case #PB_Gadget_BackColor
CSSData = "* {background-color:" + CSSColor + "};"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_ScrollBar
;-* #PB_GadgetType_ScrollBar
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* slider {background: " + CSSColor + "};"
Case #PB_Gadget_BackColor
CSSData = "* scrollbar {background: " + CSSColor + "};"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_Shortcut
;-* #PB_GadgetType_Shortcut
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* entry {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* entry {background: " + CSSColor + ";}"
CSSData + "* entry > selection {" + "background-color: " + CSSColorSelected + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_Spin
;-* #PB_GadgetType_Spin
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = ".input {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "*.input {background: " + CSSColor + ";}"
CSSData + "*.input:focus {" + "background: " + CSSColorSelected + ";}"
CSSData + "*.input > selection {" + "background-color: " + CSSColorSelection + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GList = gtk_container_get_children_(GadgetID(Gadget))
Layer = g_list_nth_data_(GList, 0)
g_list_free_(GList)
GtkSetProvider(Layer, ColorType, CSSData)
Case #PB_GadgetType_Splitter
;-* #PB_GadgetType_Splitter
;TODO
PB(SetGadgetColor)(Gadget, ColorType, Color)
Case #PB_GadgetType_String
;-* #PB_GadgetType_String
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* entry {color: " + CSSColor + ";}"
Case #PB_Gadget_BackColor
CSSData = "* entry {background: " + CSSColor + ";}"
CSSData + "* entry:focus {" + "background-color: " + CSSColorSelected + ";}"
CSSData + "* entry > selection {" + "background-color: " + CSSColorSelection + ";}"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_Text
;-* #PB_GadgetType_Text
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* label {color: " + CSSColor + "};"
Case #PB_Gadget_BackColor
CSSData = "* label {background: " + CSSColor + "};"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Case #PB_GadgetType_TrackBar
;-* #PB_GadgetType_TrackBar
CSSColor = CSSColorString(Color)
Select ColorType
Case #PB_Gadget_FrontColor
CSSData = "* slider {background: " + CSSColor + "};"
Case #PB_Gadget_BackColor
CSSData = "* highlight {background: " + CSSColor + "};"
Default
ProcedureReturn PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
GtkSetProvider(GadgetID(Gadget), ColorType, CSSData)
Default
PB(SetGadgetColor)(Gadget, ColorType, Color)
EndSelect
EndProcedure
EndModule
;- End Module GtkGadgetColor
; *****************************************************************************
;- Testing
CompilerIf #PB_Compiler_IsMainFile
UseModule GtkGadgetColor
If OpenWindow(0, 80, 80, 400, 240, "Gadget (GTK v" + GtkGetVersionString() + ")", #PB_Window_SystemMenu)
;widget = ButtonGadget(0, 10, 10, 380, 25, "Button")
;widget = CalendarGadget(0, 10, 10, 380, 25)
;widget = CheckBoxGadget(0, 10, 10, 380, 25, "Check 1")
;widget = ComboBoxGadget(0, 10, 10, 380, 25)
;widget = ContainerGadget(0, 10, 10, 380, 220, #PB_Container_Flat) : CloseGadgetList()
;widget = DateGadget(0, 10, 10, 380, 25)
;widget = EditorGadget(0, 10, 10, 380, 220)
;widget = ExplorerComboGadget(0, 10, 10, 380, 25, "/")
;widget = ExplorerListGadget(0, 10, 10, 380, 220, "/")
;widget = ExplorerTreeGadget(0, 10, 10, 380, 220, "/")
;widget = FrameGadget(0, 10, 10, 380, 220, "Text")
;widget = HyperLinkGadget(0, 10, 10, 380, 220, "Text", #Blue)
;widget = IPAddressGadget(0, 10, 10, 380, 25)
;widget = ListViewGadget(0, 10, 10, 380, 220)
;widget = ListIconGadget(0, 10, 10, 380, 220, "Column 1", 150) : AddGadgetColumn(0, 1, "Column 2", 150)
;widget = OptionGadget(0, 10, 10, 380, 25, "Option 1")
widget = PanelGadget(0, 10, 10, 380, 220)
;widget = ProgressBarGadget(0, 10, 10, 380, 40, 0, 100) : SetGadgetState(0, 50)
;widget = TextGadget(0, 10, 10, 380, 220, "Hello World!")
;widget = TreeGadget(0, 10, 10, 380, 220) : For i = 0 To 5 : AddGadgetItem (ID, -1, "Item "+Str(a), 0, i % 2) : Next
;widget = ScintillaGadget(0, 10, 10, 380, 220, 0) : SetGadgetText(0, "Hello world!")
;widget = ScrollAreaGadget(0, 10, 10, 380, 220, 760, 440, #PB_ScrollArea_Single) : TextGadget(1, 0, 0, 760, 440, "") : CloseGadgetList()
;widget = ShortcutGadget(0, 10, 10, 380, 40, #PB_Shortcut_End)
;widget = SpinGadget(0, 10, 10, 380, 40, 0, 100, #PB_Spin_Numeric) : SetGadgetState(0, 50)
;widget = StringGadget(0, 10, 10, 380, 25, "Hello World!")
;widget = TrackBarGadget(0, 10, 10, 380, 40, 0, 100) : SetGadgetState(0, 50)
Select GadgetType(0)
Case #PB_GadgetType_ListIcon, #PB_GadgetType_ListView, #PB_GadgetType_ComboBox
For a = 1 To 16
AddGadgetItem (0, -1, "Item " + Str(a)) ; define listview content
Next
Case #PB_GadgetType_Panel
For a = 1 To 6
AddGadgetItem (0, -1, "Item " + Str(a)) ; define listview content
Next
EndSelect
SetWindowColor(0, #Gray)
Select GadgetType(0)
Case #PB_GadgetType_ScrollArea
SetGadgetColor(1, #PB_Gadget_FrontColor, #Red)
SetGadgetColor(1, #PB_Gadget_BackColor, #Yellow)
EndSelect
SetGadgetColor(0, #PB_Gadget_FrontColor, #White)
SetGadgetColor(0, #PB_Gadget_BackColor, $FF5D524D)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
CompilerEndIf