Page 1 of 1

macOS Mojave IsDarkmode

Posted: Thu Nov 22, 2018 8:31 pm
by mk-soft
How to get macOS Style... :wink:

Just recompile your own programs and it will run with macOS Mojave Darkmode

Code: Select all

;-TOP

; Workaround PB v5.62+ OSX Darkmode
; Version : v1.0
; Create  : 22.11.2018
; Update  : 

; -----------------------------------------------------------------------------

Procedure IsDarkmode()
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_MacOS
      Protected UserDefaults, NSString, String.s
      UserDefaults = CocoaMessage(0, 0, "NSUserDefaults standardUserDefaults")
      NSString = CocoaMessage(0, UserDefaults, "stringForKey:$", @"AppleInterfaceStyle")
      If NSString
        String = PeekS(CocoaMessage(0, NSString, "UTF8String"), -1, #PB_UTF8)
        If String = "Dark"
          ProcedureReturn 1
        Else
          ProcedureReturn 0
        EndIf
      Else
        ProcedureReturn 0 
      EndIf
      
    CompilerCase #PB_OS_Windows
      ProcedureReturn 0
    CompilerCase #PB_OS_Linux
      ProcedureReturn 0
      
  CompilerEndSelect
  
EndProcedure

; -----------------------------------------------------------------------------

CompilerIf #PB_Compiler_IsMainFile
  
  LoadImage(0, #PB_Compiler_Home + "examples/sources/Data/Drive.bmp")
  LoadImage(1, #PB_Compiler_Home + "examples/sources/Data/File.bmp")
  
  If OpenWindow(0, 0, 0, 355, 180, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    TreeGadget(0, 10, 10, 160, 160)                                         ; TreeGadget Standard
    TreeGadget(1, 180, 10, 160, 160, #PB_Tree_CheckBoxes | #PB_Tree_NoLines); TreeGadget mit Checkboxen + ohne Linien
    
    If IsDarkmode()
      SetGadgetColor(0, #PB_Gadget_FrontColor, $E0E0E0)
      ;SetGadgetColor(1, #PB_Gadget_FrontColor, $E0E0E0)
    EndIf
    
    For ID = 0 To 1
      For a = 0 To 10
        AddGadgetItem (ID, -1, "Normal Item "+Str(a), 0, 0) ; wenn Sie ein Bild hinzufügen möchten, dann 
        AddGadgetItem (ID, -1, "Node "+Str(a), 0, 0)        ; benutzen Sie ImageID(x) als 4. Parameter
        AddGadgetItem(ID, -1, "Sub-Item 1", ImageID(0), 1)  ; diese sind auf dem ersten Sublevel
        AddGadgetItem(ID, -1, "Sub-Item 2", ImageID(0), 1)
        AddGadgetItem(ID, -1, "Sub-Item 3", ImageID(0), 1)
        AddGadgetItem(ID, -1, "Sub-Item 4", ImageID(0), 1)
        AddGadgetItem (ID, -1, "File "+Str(a), ImageID(1), 0)  ; hier wieder Sublevel 0
      Next
    Next
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
  
CompilerEndIf

Re: macOS Mojave IsDarkmode

Posted: Fri Nov 23, 2018 9:03 am
by wayne-c
Cool thank you!

Re: macOS Mojave IsDarkmode

Posted: Fri Nov 23, 2018 5:26 pm
by wayne-c
@Fred the PureBasic editor itself should implement this as well :-)