At the moment the touch bar in the version PB v5.62 is deactivated because of massive problems with MacOS 10.9 and Xcode 8.x.
PrinterRequester and WebGadget can lead to crashes.
I tested it with MacOS 10.10.x and Xcode 9.x.
It seems to work correctly again with the current version of Xcode. But I can't guarantee it.
You can reactivate the touchbar for PB-APP with a workaround.
But I don't know how you can add your own functions to the touchbar via cocoa.
Translated with
www.DeepL.com/Translator
Code: Select all
;-TOP
; Touchbar workaround by mk-soft
; Version v1.03
; Date 08/15/2017
Procedure IsTouchbar()
Protected standardUserDefaults, r1
standardUserDefaults = CocoaMessage(0, 0, "NSUserDefaults standardUserDefaults")
r1 = CocoaMessage(0, standardUserDefaults, "integerForKey:$", @"NSFunctionBarAPIEnabled")
ProcedureReturn r1
EndProcedure
Procedure DisableTouchbar()
Protected standardUserDefaults
If IsTouchbar()
standardUserDefaults = CocoaMessage(0, 0, "NSUserDefaults standardUserDefaults")
CocoaMessage(0, standardUserDefaults, "setBool:", #NO, "forKey:$", @"NSFunctionBarAPIEnabled")
RunProgram(ProgramFilename(), ProgramParameter(), GetCurrentDirectory())
End
EndIf
EndProcedure
Procedure EnableTouchbar()
Protected standardUserDefaults
If IsTouchbar() = 0
standardUserDefaults = CocoaMessage(0, 0, "NSUserDefaults standardUserDefaults")
CocoaMessage(0, standardUserDefaults, "setBool:", #YES, "forKey:$", @"NSFunctionBarAPIEnabled")
RunProgram(ProgramFilename(), ProgramParameter(), GetCurrentDirectory())
End
EndIf
EndProcedure
; ***************************************************************************************
CompilerIf #PB_Compiler_IsMainFile
Debug IsTouchbar()
EnableTouchbar()
;DisableTouchbar()
If OpenWindow(0, 0, 0, 600, 300, "WebGadget: "+Str(IsTouchbar()), #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateImage(0,16,16)
StartDrawing(ImageOutput(0))
Box(0,0,16,16,RGB(255,255,255))
Box(4,4,8,8,RGB(255,0,0))
StopDrawing()
CreateImage(1,16,16)
StartDrawing(ImageOutput(1))
Box(0,0,16,16,RGB(255,0,0))
Box(4,4,8,8,RGB(255,255,255))
StopDrawing()
If CreateToolBar(0, WindowID(0), #PB_ToolBar_Large)
ToolBarImageButton(0,ImageID(0))
ToolBarImageButton(1,ImageID(1))
EndIf
;Delay(100)
; this website doesn't crash the app
;WebGadget(0, 10, 10, 580, 280, "http://www.apple.com")
; this website crashes the app
WebGadget(0, 10, 10, 580, 280, "http://google.com")
Repeat
; crash with "http://google.com"
Until WaitWindowEvent() = #PB_Event_CloseWindow ; <- Invalid memory access
EndIf
CompilerEndIf