Re: Object Theme Library (for Dark or Light Theme)
Posted: Sat May 25, 2024 10:39 pm
Is there a way to get normal buttons instead of fancy ones?
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
Macro _AddButtonTheme(Gadget)
; If MapSize(ThemeAttribute()) > 0 ; SetObjectTheme() Done
; If FindMapElement(ObjectTheme(), Str(GadgetID(Gadget)))
; AddButtonTheme(Gadget, ObjectTheme(), #True) ; UpdateTheme = #True
; Else
; AddMapElement(ObjectTheme(), Str(GadgetID(Gadget)))
; AddButtonTheme(Gadget, ObjectTheme())
; EndIf
; EndIf
EndMacro
Code: Select all
Data.l #PB_GadgetType_Button, #PB_Gadget_BackColor, $FFD8CA ; Border Color: Color | #PB_Default = Window BackColor. If IsDarkColor AccentColor 80
Data.l #PB_GadgetType_Button, #PB_Gadget_OuterColor, $FFD8CA ; Outer Color: Color | #PB_Default = Window BackColor. If not IsDarkColor AccentColor 80
Data.l #PB_GadgetType_Button, #PB_Gadget_CornerColor, #PB_Default ; Corner Color: Color | #PB_Default = Window BackColor
Data.l #PB_GadgetType_Button, #PB_Gadget_GrayBackColor, #PB_Default ; Gray Back Color: Color | #PB_Default = Disabled Button BackColor
Data.l #PB_GadgetType_Button, #PB_Gadget_FrontColor, #Black ; Text Color: Color | #PB_Default = If IsDarkColor Button BackColor White else Black
Data.l #PB_GadgetType_Button, #PB_Gadget_GrayTextColor, #PB_Default ; Gray Text Color: Color | #PB_Default = Disabled Button FrontColor
Data.l #PB_GadgetType_Button, #PB_Gadget_EnableShadow, 0 ; Enable Shadow Color 0 | 1 | #PB_Default = 0
Data.l #PB_GadgetType_Button, #PB_Gadget_ShadowColor, #PB_Default ; Shadow Color: Color | #PB_Default = If IsDarkColor Button FrontColor White else Black
Data.l #PB_GadgetType_Button, #PB_Gadget_BorderColor, $ADADAD ; Border Color: Color | #PB_Default = if IsDarkColor(Window) Button BackColor else Button OuterColor
Data.l #PB_GadgetType_Button, #PB_Gadget_HighLightBorder, #PB_Default ; HighLight Border Color: Color | #PB_Default = GetSysColor_(#COLOR_HIGHLIGHT)
Data.l #PB_GadgetType_Button, #PB_Gadget_RoundX, 0 ; The radius of the RoundBox corners in the x direction
Data.l #PB_GadgetType_Button, #PB_Gadget_RoundY, 0 ; The radius of the RoundBox corners in the y direction
Code: Select all
XIncludeFile "ObjectTheme.pbi"
UseModule ObjectTheme
SetObjectTheme(#ObjectTheme_Auto, #Black)
OpenWindow(0, 0, 0, 500, 200, "Test Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered)
ButtonGadget(0, 10, 10, 40, 27, "Test", #PB_Button_Default)
TextGadget(1, 10, 43, 400, 20, "The quick brown fox jumps over the lazy dog")
Define event.i
Repeat
event = WaitWindowEvent(10)
Until event = #PB_Event_CloseWindow
Code: Select all
XIncludeFile "ObjectTheme.pbi"
UseModule ObjectTheme
Path$ = #PB_Compiler_Home + "Examples" + #PS$ + "Sources" + #PS$ + "Data" + #PS$ + "ToolBar" + #PS$ + ""
SetObjectTheme(#ObjectTheme_DarkBlue)
UsePNGImageDecoder()
LoadImage(0, Path$ + "Properties.png")
OpenWindow(0, 0, 0, 500, 200, "Test Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered)
ButtonImageGadget(0, 10, 10, 30, 30, ImageID(0))
Define event.i
Repeat
event = WaitWindowEvent(10)
Until event = #PB_Event_CloseWindow
Code: Select all
DrawingMode(#PB_2DDrawing_Gradient | #PB_2DDrawing_AlphaBlend)
; Draw an ellipse a little wider than the button and slightly offset upwards, to have a gradient with the background color in the 4 corners and more important at the bottom
EllipticalGradient(cX / 2, cY * 2 / 5, cX * 3 / 5, cY * 4 / 5)
GradientColor(0.0, ButtonBackColor | $BE000000)
Select I
Case 0, 4 ; imgRegular, imgDisabled
GradientColor(0.15, ButtonBackColor | $BE000000)
Case 1, 3 ; imgHilite, imgHiPressed
GradientColor(0.3, ButtonBackColor | $BE000000)
Case 2 ; imgPressed
GradientColor(0.45, ButtonBackColor | $BE000000)
EndSelect
GradientColor(1.0, \lButtonOuterColor | $BE000000)
RoundBox(0, 0, cX, cY, \lRoundX, \lRoundY)
In Macro _SetObjectBrush change the linecoco2 wrote: Sun May 26, 2024 12:29 am Also, auto theme seem to have a problem with TextGadget, I'm just getting a white square where the text should be.
Code: Select all
If SavColor <> Color
Code: Select all
If SavColor <> Color Or (SavColor = Color And Color = 0)
Code: Select all
Data.l #PB_GadgetType_Button, #PB_Gadget_BackColor, $E1E1E1 ; Background Color: Color | #PB_Default = Window BackColor. If IsDarkColor AccentColor 80
Data.l #PB_GadgetType_Button, #PB_Gadget_OuterColor, $FBF1E5 ; Outer Color: Color | #PB_Default = Window BackColor. If not IsDarkColor AccentColor 80
Data.l #PB_GadgetType_Button, #PB_Gadget_CornerColor, #PB_Default ; Corner Color: Color | #PB_Default = Window BackColor
Data.l #PB_GadgetType_Button, #PB_Gadget_GrayBackColor, #PB_Default ; Gray Back Color: Color | #PB_Default = Disabled Button BackColor
Data.l #PB_GadgetType_Button, #PB_Gadget_FrontColor, #Black ; Text Color: Color | #PB_Default = If IsDarkColor Button BackColor White else Black
Data.l #PB_GadgetType_Button, #PB_Gadget_GrayTextColor, #PB_Default ; Gray Text Color: Color | #PB_Default = Disabled Button FrontColor
Data.l #PB_GadgetType_Button, #PB_Gadget_EnableShadow, 0 ; Enable Shadow Color 0 | 1 | #PB_Default = 0
Data.l #PB_GadgetType_Button, #PB_Gadget_ShadowColor, #PB_Default ; Shadow Color: Color | #PB_Default = If IsDarkColor Button FrontColor White else Black
Data.l #PB_GadgetType_Button, #PB_Gadget_BorderColor, $ADADAD ; Border Color: Color | #PB_Default = if IsDarkColor(Window) Button BackColor else Button OuterColor
Data.l #PB_GadgetType_Button, #PB_Gadget_HighLightBorder, #PB_Default ; HighLight Border Color: Color | #PB_Default = GetSysColor_(#COLOR_HIGHLIGHT)
Data.l #PB_GadgetType_Button, #PB_Gadget_RoundX, 0 ; The radius of the RoundBox corners in the x direction
Data.l #PB_GadgetType_Button, #PB_Gadget_RoundY, 0 ; The radius of the RoundBox corners in the y direction
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_BackColor, $E1E1E1 ; Background Color: Color | #PB_Default = Window BackColor. If IsDarkColor AccentColor 80
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_OuterColor, $FBF1E5 ; Outer Color: Color | #PB_Default = Window BackColor. If not IsDarkColor AccentColor 80
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_CornerColor, #PB_Default ; Corner Color: Color | #PB_Default = Window BackColor
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_GrayBackColor, #PB_Default ; Gray Back Color: Color | #PB_Default = Disabled Button BackColor
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_FrontColor, #Black ; Text Color: Color | #PB_Default = If IsDarkColor Button BackColor White else Black
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_GrayTextColor, #PB_Default ; Gray Text Color: Color | #PB_Default = Disabled Button FrontColor
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_EnableShadow, 0 ; Enable Shadow Color 0 | 1 | #PB_Default = 0
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_ShadowColor, #PB_Default ; Shadow Color: Color | #PB_Default = If IsDarkColor Button FrontColor White else Black
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_BorderColor, $ADADAD ; Border Color: Color | #PB_Default = if IsDarkColor(Window) Button BackColor else Button OuterColor
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_HighLightBorder, #PB_Default ; HighLight Border Color: Color | #PB_Default = GetSysColor_(#COLOR_HIGHLIGHT)
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_RoundX, 0 ; The radius of the RoundBox corners in the x direction
Data.l #PB_GadgetType_ButtonImage, #PB_Gadget_RoundY, 0 ; The radius of the RoundBox corners in the y direction
Code: Select all
Data.l #PB_GadgetType_Button, #PB_Gadget_BackColor, $333333 ; Border Color: Color | #PB_Default = Window BackColor. If IsDarkColor AccentColor 80
Data.l #PB_GadgetType_Button, #PB_Gadget_OuterColor, $333334 ; Outer Color: Color | #PB_Default = Window BackColor. If not IsDarkColor AccentColor 80