Code: Select all
;-TOP by mk-soft, v1.02.0, create 21.05.2022, update 06.12.2023, update 02.06.2024
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
;- Constants
#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
ImportC ""
gtk_css_provider_load_from_data(*CSSProvider, CSSData.P-UTF8, Length, *Error.GError)
gtk_css_provider_new()
gtk_style_context_add_provider_for_screen(*Screen.GdkScreen, *StyleProvider, Priority)
EndImport
Procedure _SetLinuxStyle()
Protected CSSProvider, CSSDefault.s, Screen
CSSDefault = "button, entry {min-height: 20px;} "
CSSDefault + "tab {min-height: 20px;} "
CSSDefault + "button, scale {padding-bottom: 2px; padding-left: 2px; padding-right: 2px; padding-top: 2px} "
CSSDefault + "entry {padding-bottom: 3px; padding-left: 6px; padding-right: 6px; padding-top: 3px} "
CSSDefault + "scrolledwindow undershoot.top, scrolledwindow undershoot.right, scrolledwindow undershoot.bottom, scrolledwindow undershoot.left { background-image: none; } "
CSSProvider= gtk_css_provider_new()
gtk_css_provider_load_from_data(CSSProvider, CSSDefault, -1, 0)
Screen = gdk_display_get_default_screen_(gdk_display_get_default_())
gtk_style_context_add_provider_for_screen(Screen, CSSProvider, #GTK_STYLE_PROVIDER_PRIORITY_APPLICATION)
g_object_unref_(CSSProvider)
EndProcedure : _SetLinuxStyle()
CompilerEndIf
; *********************************************************
Procedure SetDarkMode(State)
Protected boolVal, *Settings
*Settings = gtk_settings_get_default_()
If *Settings
g_object_get_(*Settings, "gtk-application-prefer-dark-theme", @boolVal)
g_object_set_(*Settings, "gtk-application-prefer-dark-theme", State);
ProcedureReturn boolVal
EndIf
EndProcedure
; *********************************************************
Procedure BindScrollDatas()
SetWindowTitle(0, "ScrollAreaGadget " + "(" + GetGadgetAttribute(0, #PB_ScrollArea_X) + "," + GetGadgetAttribute(0, #PB_ScrollArea_Y) + ")" )
EndProcedure
If OpenWindow(0, 0, 0, 405, 240, "ScrollAreaGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Invisible)
SetDarkMode(#True)
ScrollAreaGadget(0, 10, 10, 390,220, 575, 555, 30, #PB_ScrollArea_Single)
ButtonGadget (1, 10, 10, 230, 30,"Button 1")
ButtonGadget (2, 50, 50, 230, 30,"Button 2")
ButtonGadget (3, 90, 90, 230, 30,"Button 3")
TextGadget (4,130,130, 230, 20,"This is the content of a ScrollAreaGadget!",#PB_Text_Right)
CloseGadgetList()
HideWindow(0, #False)
BindGadgetEvent(0, @ BindScrollDatas())
Repeat
event = WaitWindowEvent(10)
Until event = #PB_Event_CloseWindow
EndIf