News from the MBS Xojo Plugins Version 24.1
In this article I want to introduce you the new functionalities from the MBS Xojo Plugins in version 24.1.
SQLLite
Let's start with the new SQLiteFunctionMBS class. With this class you can now create your own functions for SQLite. We explain how this works in our blog article Did you know that you can load extensions in SQLite?
Since we added a path property to InternalSQLiteLibraryMBS module, we can even load our plugin as extension for using custom functions in SQLiteDatabase class, too.
Overlays
Our OverlayMBS class allows you to show custom windows and define the content with a picture including transparency and without the usual OS widgets. We rewrote the mouse handling to allow you to move them by background. You can decide to implement mouse events or have the control ignore mouse events altogether. For this we have also implemented our new property MovableByWindowBackground, with which you can specify whether the window is movable by clicking and dragging anywhere in its background.
DynaPDF
In the last release we already introduced the DynaPDFParserMBS class. The new method in this release SelBBox2 returns the bounding box as quad points of a single node or glyph of the current selection. This function is useful for rotated text. So you can use the coodinates for example to draw a box around that text.
The propetry SelText is also new in this class. It retrieves the text and text length of the current selection or found text. The function is useful if FindText() was called with the search type kstMatchAlways. In this case, and only in this case, it is not known which text FindText() has found.
Contextual Menu
In this release we have added the events willShowContextualMenu and didCloseContextualMenu for 34 controls. These events fire when the corresponding contextual menus are displayed or closed.
JSON
We already introduced you to the PatchFromDiff method from the JSONMBS class in the last release. In this release, we have a method with the same name, but we have added an input parameter to it. The method does the same as the older version, but copies the given primary key field from JSON entries to the diff.
HIDAPI
We rewrote our HIDAPI classes and added a new BusType property to the HIDAPIDeviceInfoMBS class. We added DeviceInfo and GetReportDescriptor functions to HIDAPIDeviceMBS class. Also here we add the GlobalError property that returns a string containing the last error which occurred or "" if none has occurred. GlobalError allows to catch errors without having an instance with an Error property. Like errors from opening a device We enabled logging for LibUSB on Linux to help finding issues.
See also blog post: Get started with HIDAPI classes in Xojo.
New functionalities for Mac
The MBS Xojo Plugins in version 24.1 offers some more new features for Mac users
Speech
We have 4 new classes in the Speech topic. These classes are all about speech synthesization. To synthesize speech, create an AVSpeechUtteranceMBS instance with text you want a speech synthesizer to speak. Optionally, change the voice, pitchMultiplier, volume, rate, preUtteranceDelay, or postUtteranceDelay parameters for the utterance. Pass the utterance to an instance of AVSpeechSynthesizerMBS to begin speech, or enqueue the utterance to speak later if the synthesizer is already speaking. For the voice change you need the AVSpeechSynthesisVoiceMBS class. The primary factors that distinguish a voice in speech synthesis are language, locale, and quality. You need an instance of AVSpeechSynthesisVoiceMBS to select a voice that's appropriate for the text and the language, and set it as the value of the voice property on an AVSpeechUtteranceMBS instance. The voice may optionally reflect a local variant of the language, such as Australian or South African English.
Network
We have added some functions to the Network section that allow you to monitor your network and react to changes. We use the NWPathMonitorMBS class for this purpose. This class has an event that is called when a path monitor has a new snapshot. The event then delivers this snapshot to us as an object of the NWPathMBS class. We can read out some properties here. For example, the local and remote endpoints represented by the NWEndPointMBS class.
CanvasGesture
We have also improved the touch gesture events under macOS. For this purpose, we have added new properties to our NSTouchMBS class.
With deviceSize you can determine the range of the touch device in points, such as 72 ppi. The property identity describes the changes to a particular touch during its lifetime. With normalizedPosition you get the normalized position of the touch. Also we can get the indicator for a resting touch in the property resting. Resting touches occur when a user simply rests their thumb on the trackpad device.
To support this further, we have also integrated new events into the CanvasGesturesMBS class. The touchesBeganWithEvent event informs the receiver that new set of touches has been recognized. In contrast, the event touchesEndedWithEvent returns that a set of touches have been removed. The event touchesCancelledWithEvent informs the receiver that tracking of touches has been canceled for any reason. The event touchesMovedWithEvent fires when one or more touches has moved.
Events
We have new methods for requesting authorizations for the EKEventStoreMBS class. With the method requestFullAccessToEvents you can prompt for grant or deny read and write access to event data. Similarly, requestWriteOnlyAccessToEvents queries the authorization for write access to event data. The requestFullAccessToReminders method queries the authorizations for reminders. All diese Dialoge the operating system only prompts them the first time your app requests entsprechende event accesses
We hope you will also find some interesting new features. We wish you a lot of fun with MBS Xojo Plugins version 24.1. If you have any Ideas for new cool features, need a license or have any questions, please contact us.