SetLinuxStyle as Default
Posted: Sat May 21, 2022 3:04 pm
Most of the time the buttons, entry, panel are preset too large with Linux default CSS style.
Thus the gadgets from window to linux or the examples from PureBasic do not fit correctly.
Simply adjust the basic settings for all windows.
Thus the gadgets from window to linux or the examples from PureBasic do not fit correctly.
Simply adjust the basic settings for all windows.
Code: Select all
;-TOP by mk-soft, v1.01.0, 21.05.2022
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} "
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
; *********************************************************
#Example = 3
CompilerIf #Example = 1
Procedure UpdateWindow()
Protected dx, dy
dx = WindowWidth(0)
dy = WindowHeight(0)
Debug dx
ResizeGadget(0, 10, 10, dx - 20, dy - 70)
ResizeGadget(1, 10, dy - 50, 120, 30)
EndProcedure
Procedure ShowDialog()
If OpenWindow(1, 300, 300, 300, 200, "Dialog");, #PB_Window_Tool)
dx = WindowWidth(1)
dy = WindowHeight(1)
EditorGadget(10, 10, 10, dx - 20, dy - 70)
ButtonGadget(11, 10, dy - 50, 120, 30, "Ok")
ButtonGadget(12, dx - 130, dy - 50, 120, 30, "Cancel")
EndIf
EndProcedure
Procedure Main()
Protected info.s
info = "XDG_SESSION_TYPE: " + GetEnvironmentVariable("XDG_SESSION_TYPE") + #LF$
If OpenWindow(0, 100, 100, 400, 300, "Window", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
dx = WindowWidth(0)
dy = WindowHeight(0)
TextGadget(0, 10, 10, dx - 20, dy - 70, info, #PB_Text_Border)
ButtonGadget(1, 10, dy - 50, 120, 30, "Dialog")
BindEvent(#PB_Event_SizeWindow, @UpdateWindow(), 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case 0
Break
Case 1
CloseWindow(1)
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case 1
ShowDialog()
Case 11, 12
CloseWindow(1)
EndSelect
EndSelect
ForEver
EndIf
EndProcedure : Main()
CompilerEndIf
; ----
CompilerIf #Example = 2
OpenWindow(0, 100, 100, 300, 160, "StringGadgets")
For i = 0 To 2
StringGadget(i, 20, i * 35 + 20, WindowWidth(0) - 40, 25, "")
SetGadgetText(i, "StringGadget " + Str(i + 1) +
" - Required height: " + GadgetHeight(i, #PB_Gadget_RequiredSize))
Next i
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
CompilerEndIf
; ----
CompilerIf #Example = 3
If OpenWindow(0, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
PanelGadget (0, 8, 8, 306, 203)
AddGadgetItem (0, -1, "Panel 1")
PanelGadget (1, 5, 5, 290, 166)
AddGadgetItem(1, -1, "Sub-Panel 1")
AddGadgetItem(1, -1, "Sub-Panel 2")
AddGadgetItem(1, -1, "Sub-Panel 3")
CloseGadgetList()
AddGadgetItem (0, -1,"Panel 2")
ButtonGadget(2, 10, 15, 80, 24,"Button 1")
ButtonGadget(3, 95, 15, 80, 24,"Button 2")
CloseGadgetList()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
CompilerEndIf