Xojo Conferences
XDCMay2019MiamiUSA

Platforms to show: All Mac Windows Linux Cross-Platform

/MacControls/Toolbar/Toolbar with retina Icons
Function:
Required plugins for this example: MBS MacBase Plugin, MBS MacControls Plugin, MBS Main Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacControls/Toolbar/Toolbar with retina Icons
This example is the version from Fri, 22th Oct 2015.
Project "Toolbar with retina Icons.rbp"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control myToolbar Inherits Toolbar1
ControlInstance myToolbar Inherits Toolbar1
End Control
Control Label1 Inherits Label
ControlInstance Label1 Inherits Label
End Control
Control CheckBox1 Inherits CheckBox
ControlInstance CheckBox1 Inherits CheckBox
EventHandler Sub Action() dim v as Variant = myToolbar.Item(0) dim it as ToolButton = v it.enabled = me.Value // start timer to implement retina image // as xojo recreates the toolbar item SetImageTimer.Mode = 1 End EventHandler
End Control
Control SetImageTimer Inherits Timer
ControlInstance SetImageTimer Inherits Timer
EventHandler Sub Action() // now get toolbar item dim nt as NSToolbarMBS = self.NSToolbarMBS dim items() as NSToolbarItemMBS = nt.items dim ti as NSToolbarItemMBS = items(0) // assign new picture ti.image = RetinaIcon End EventHandler
End Control
EventHandler Sub Open() // Xojo icon dim v as Variant = myToolbar.Item(0) dim it as ToolButton = v it.Icon = NewPictureInColor(&cFF0000, 32, 32) // now via plugin // make two images, a green one for retina and a blue one for non retina dim gp as Picture = NewPictureInColor(&c00FF00, 64, 64) // double sized! dim bp as Picture = NewPictureInColor(&c0000FF, 32, 32) // convert to NSImage via plugin dim gn as new NSImageMBS(gp) dim bn as new NSImageMBS(bp) // look what representations we have and pick first one from blue picture dim representations() as NSImageRepMBS = bn.Representations dim representation as NSImageRepMBS = Representations(0) // now move the representation from blue to green 'bn.removeRepresentation representation gn.addRepresentation representation // green image has now two representations // set size to 32x32 which makes 64x64 representation the one for retina gn.setSize 32, 32 // now get toolbar item dim nt as NSToolbarMBS = self.NSToolbarMBS dim items() as NSToolbarItemMBS = nt.items dim ti as NSToolbarItemMBS = items(0) // assign new picture ti.image = gn RetinaIcon = gn End EventHandler
Function NewPictureInColor(c as color, w as integer, h as integer) As Picture dim p as new Picture(w, h) dim g as Graphics = p.Graphics g.ForeColor = c g.FillRect 0, 0, w, h Return p End Function
Property RetinaIcon As NSImageMBS
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
SetRetina
End SetRetina
Class Toolbar1 Inherits Toolbar
ToolbarItem ToolItem1
End Class
End Project

See also:

Feedback, Comments & Corrections

The items on this page are in the following plugins: MBS MacControls Plugin.




Links
MBS Xojo Plugins