« Xojo Stammtisch in Zü… | Home | ChartDirector 6.3 Rel… »

IconFamilyMBS class deprecated

In our Xojo plugins we have the IconMBS and IconFamilyMBS classes. They use Apples frameworks with icon functions, but those are not well maintained the last few MacOS releases and we see more and more issues. Probably as a lot of functions are based on the deprecated QuickDraw framework. So we deprecate IconFamilyMBS class for the next prerelease plugin.

So please change code and move to newer functions. For example instead of IconFamilyMBS class to get an icon in various sizes, you can use NSWorkSpaceMBS class methods. IconForFile functions returns the icon for a file and than you can use NSImageMBS class to scale down. With the following code you can quite easily get a 2x picture for a FolderItem:

const SizeWanted = 256
dim file as FolderItem = SpecialFolder.Desktop.Child("test.rtf")

dim n as NSImageMBS = NSWorkspaceMBS.iconForFile(file)
// set size we want
n.setSize SizeWanted*2, SizeWanted*2

// make picture
dim p as Picture = n.CopyPictureWithMask

// make 2x picture here:
dim q as new Picture(SizeWanted, SizeWanted, array(p))

If you need an icon for a file type, you can use the IconForFileType function. If you need to add an icon to a file, please use SetIcon method in NSWorkSpaceMBS class.

The folderItem.IconMBS function is still working well and was upgraded in MBS Xojo Plugins in version 14.2 to use NSWorkspace methods to get the icon.

By the way, NSWorkspace's icon functions internally use the same functions as our IconMBS class, which is not deprecated! The biggest plugin in space...
04 11 18 - 18:27