In this article I want to introduce you the new functionalities from the MBS Xojo Plugins in version 21.4.
Let's starts with the news from DynaPDF. With the methods CreateTraceFile and AppendTraceFile you can create and append a file that log debugging information. The plugin writes debug messages to this file so you can check which methods you called. The AppendTraceFile method is practical because with this method it is possible to append debug information and not need to override it.
Another new method from the DynaPDFMBS class is the GetInIsTaggedPDF method. It returns true if the currently opened PDF is a tagged PDF.
We have the new method ReadFileMBS for FolderItems to allow you the transfer of a file into a memory block. In the parameters we specify the memory block element in which the result should be stored. As return of the method we get a true if the file was read as a memory block.
In this context, the new method FindByteMBS for memory blocks is also interesting . With this method we can search for given characters in a memory block. In the parameters we specify an array with the characters to be searched in UInt8. Additionally we can specify from which position in the memory block to search. The default is 0 (At the beginning). The method returns the first position in the memory block where there was a hit. In the following example the positions of the first two hits are determined.
Dim m As MemoryBlock = "Hello World"
Dim u() As UInt8
Dim pos1 As Integer = m.FindByteMBS(u)
Dim pos2 As Integer = m.FindByteMBS(u, pos1+1)
MsgBox "Found position: "+Str(pos1)+" and „+Str(pos2)
With the new method FieldExists from the SQLCommandMBS class you can check if a given field exists that we want to query. To do this, we specify the name of the field in the parameters. If the field exists, we get true as return value.
We also have the new methods Contains and Substitute from the wordfilembs.shtml">WordFileMBS class. With the Contains method you can check if a defined string occurs in a Word document. As answer you receive a boolean value. With the method Substitute you can replace certain text pieces in the document. You specify the search text as well as the new text that is replaced in the parameters of the method. Optionally, you can decide whether all found passages should be replaced with the same text.
A note to this method: A piece of text is recognized only if in the found fragment have no formatting breaks. So make sure that the text is uniformly formatted before you use this functionality.
New functionalities for Mac and iOS users
The MBS Xojo Plugins in version 21.4 offers some more new features for Mac and iOS users
Random generated bytes
With the new method RandomGenerateBytes from the class CCCryptorMBS we can generate a memory block with random bytes. The memory block in which our result should be stored afterwards is specified in the parameters of the method. As a return of the method we get only an integer which says something about the success of the creation of this byte block. We can then continue to work with the memory block and use it, for example, as cryptographic keys, IVs or nonces.
Also the class NSPastboard got a new method. With SetPasteboardItems we can put several items of various types in one Pastboard item. So you can write for example several image files into a pastboard.
There are also a few new properties in the WebKit section in the WKPreferencesMBS class.
Also new is the telephoneNumberDetectionIsEnabled property. It decides if the phone number detection in texts is enabled. In addition we can enable/disable fullscreen for the web browser and can disable the web security. If you want web page actions to be included in the console set logsPageMessagesToSystemConsoleEnabled true.
With the new class CKOperationConfigurationMBS you can describe how a CloudKit operation behaves. You can set some properties for this Object. For example set the maximum amount of time that a request or a resource request can take, or whether the operations that use the configuration are long-lived. Also you can set with the property QualityOfService the priority that the system uses when it allocates resources to the operations that use the configuration or if they are be able to send data over the cellular network.
Sharing Panel for iOS
An also new class is the SharingPanelMBS class. An object of this class offers us a view controller that you can use to offer standard services from your app such as copying items to the pasteboard, posting content to social media sites, sending items via email or SMS, and more. Apps can also define custom services.
New functionalities for Windows users
Last but not least I want to introduce the new functionalities for Windows users.
For windows users there is available the new class WinMouseFilterMBS. This class makes it possible to filter mouse events in the whole application. You may be able to intercept all mouse actions and block mouse events. There is a MouseRecive event in this class that gives us the identifier of the mouse message, the position coordinates of the mouse courser, a handle to the window that will receive the mouse message, the hit-test values and maybe some additional information about the click. The mouse message describes what action is performed with the mouse. We can receive the events of the left, right, middle or other buttons. These can be pressed, released or double clicked. But there are also the horizontally mouse wheel and the vertically mouse wheel. They are detected when the mouse wheel is moved. There are also Mouse Leave, Mouse moved and Mouse hover. We hope to be able to offer you more great possibilities for your mouse under windows.
For Windows the SystemInformationMBS class holds a new method for the future. With isWindows11 we test if the operating system on which our application is used is Windows 11 or higher. In this case the return is true. When we call it on an other Windows version or on an other operating system the result is false.
Web View 2
We have some new properties for class WebView2ControlMBS. With the property areBrowserAcceleratorKeysEnabled you can disable the use of accelerator keys in relation to the web browser. This means for example that you can no longer print or copy the page content with shortcuts. But also the command that opens the page search cannot be executed. With the property IsGeneralAutofillEnabled you can switch on and off the possibility of automatic filling of user data in form fields. This can be useful, for example, if you want the user to enter his data manually. Also the possibility to automatically save a password on a page can be switched on and off. So it is possible to protect a previously saved password from being overwritten by a deactivated password save. Also the pitch zoom can be deactivated or activated with IsPinchZoomEnabled.
That may help for all the MT methods we have. For example if you use MBS Xojo CURL Plugin and the PerformMT method there. If you run multiple transfers in background using this, we will now recycle threads. Also for some of our functionalities doing multi threaded processing like TransformMT for LCMS, it may use multiple threads to do work in parallel.
We use one thread pool for all our plugins. As Windows manages that thread pool, it can add and remove threads as needed and adjust it depending to the system load. Another benefit seems to be that Windows leaks memory per thread, so creating and destroying a lot of threads can be a problem, which should now be fixed.
We hope you will also find some interesting new features. We wish you a lot of fun with MBS Xojo Plugins version 21.4. If you need a license or have any questions, please contact us.