Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


MonkeybreadSoftware last won the day on April 21 2019

MonkeybreadSoftware had the most liked content!

Community Reputation

12 Good

1 Follower

About MonkeybreadSoftware

  • Rank

Profile Information

  • Title
  • Industry
  • Gender
  • Location
  • Interests
    FileMaker, Xojo, Hiking, Traveling

Contact Methods

  • Website URL
  • Skype

FileMaker Experience

  • Skill Level
  • FM Application
    16 Advanced

Platform Environment

  • OS Platform
  • OS Version

FileMaker Partner

  • Certification
    Not Certified
  • Membership
    FileMaker TechNet
    FileMaker Business Alliance

Recent Profile Visitors

8,791 profile views
  1. For the upcoming virtual dotfmp conference, we prepared a presentation video to show you what MBS FileMaker Plugin can do: https://www.mbsplugins.com/MBS2020.shtml All movies Watch on Youtube. Please do not hesitate to contact us if you have questions.
  2. You may have read the documentation about the new JavaScript integration in FileMaker 19. Let's take a look on this in detail. For every website you load, FileMaker injects automatically a little JavaScript when the page is finished loading. The JavaScript for the PerformScript script in the FileMaker namespace looks like this: As you see for MacOS (and iOS), they use the MessageHandler protocol offered by WebKit, which is the same we use for our WebView.AddScriptMessageHandler function in MBS FileMaker Plugin. The message handler is quotes the given parameters, builds a JSON text and passes this to the message handler. If you need, you can use MBS FileMaker Plugin to add the same functionality for MacOS and iOS (iOS with FileMaker iOS SDK) to your solution for FileMaker 16 to 19. Use WebView.RunJavaScript to install the FileMaker object with the function above. You may need to add a file name parameter as we need that for the plugin to call a script. For Windows, the use the external messaging, which is available in Internet Explorer control. Sadly we can't access this via plugin interface for our plugin. But a great move by Claris to add this for us! Now you may notice that the function checks whether window.webkit.messageHandlers.fm is defined, so if the message handler is not yet installed, the calls to PerformScript do nothing. But you may be able to check whether FileMaker is not undefined like this: In your JavaScript on the website, you may just run setup work on start and set a timer to do any call to FileMaker.PerformScript a few milliseconds later. You may want to checkout onfmready.js from Stephan Casas, who made a nice utility function to delay the call until FileMaker.PerformScript is available. See also community posting. See also Check out options for FileMaker JavaScript Integration
  3. you can expect that all deprecated features won't be ported to Linux or Cloud.
  4. Do you use MBS FileMaker Plugin? You could use DragDrop functions to create a drop area and accept the drop to get the picture. Or you use WebView.RenderImage or WebView.Screenshot functions to get a picture from web viewer.
  5. Have you seen the machine learning functions in FileMaker 19? Apple added CoreML framework in 2017 and presented it at WWDC that year. The framework allows to easily load a model for machine learning and call it with your input data. Examples include visual detection of things in pictures like image classification. Other examples include speech detection and sound analysis, text analysis or pattern matching. For example we saw models to take text and tell you the language or the mood of the writer. Also welcome are models to detect porn or violence to filter those. FileMaker 19 comes built-in with a new script step Configure Machine Learning Model to load a model and let FileMaker know the parameters. Then you can use the new ComputeModel function to run the model. The great thing here is that this is built-in to FileMaker Go, so we expect many more people to use this on the go with FileMaker databases without the need to use iOS SDK and a plugin. Since 2017 we have CoreML functions in MBS FileMaker Plugin. Compared to the built-in functions in FileMaker, the plugin may have a few more goodies for you. While you can't use it in FileMaker Go, you can do a FileMaker iOS SDK application or in MacOS with FileMaker Pro. Due to the plugin being separate with FileMaker, you can use it in older FileMaker versions if needed. The plugin provides the functionality as functions, so you can use them in custom functions and don't need to use a script. Although we usually use scripts, it can be handy to do something in a Let statement somewhere. A few extra options you have with our plugin is to provide array parameters to the model. e.g. if you have a model doing math on an one or two dimension array, check the CoreML.AddArrayParameter and CoreML.Add2DArrayParameter functions. Use our CoreML.ResultImage function for models returning you an image. And finally use CoreML.Update to update the model on the go with new data. See also: CoreML Example video Train machine learning models on device blog article Mac and iOS/Machine Learning/Core ML Photos example database Mac and iOS/Machine Learning/CoreML example database Please don't hesitate to contact us with your questions.
  6. Congratulations on the download counter! We enjoy listening to your podcasts here at MBS.
  7. The just released FileMaker version 19 brings some welcome additions to use JavaScript with web viewer. You can now use a script step Perform JavaScript in Web Viewer to run JavaScript within the web viewer on the current layout. In MBS FileMaker Plugin, we have our own WebView.RunJavaScript function since version 1.3 from July 2007. That function has been upgraded as WebView.Evaluate end of last year for version 10.0 of our plugin to provide results back on MacOS, Windows and iOS. The built-in functionality has an advantage the plugin can't provide, which is is having it work in FileMaker Go or Web Direct. But you first need to upgrade everything to FileMaker version 19. As usual we expect that the majority of the FileMaker developers will be happy with the built-in functionality, but if you need more, our plugin can provide additional features. Here is a table to compare features between MBS FileMaker Plugin and FileMaker's built-in functions. Feature Platform FileMaker 19 MBS FileMaker Plugin Required FileMaker version FileMaker 19 and newer FileMaker 19, 18, 17 and older Run JavaScript in web viewer FileMaker MacOS Yes Yes FileMaker Windows Yes Yes iOS with FileMaker Go Yes No plugin on FileMaker Go iOS with SDK Yes Yes Web Direct Yes No, plugin has no access to browser with Web Direct Run JavaScript without Web Viewer FileMaker MacOS No Yes, see JavaScript or JavaScriptMac functions FileMaker Windows No Yes, see JavaScript Functions iOS with FileMaker Go No No plugin on FileMaker Go iOS with SDK No Yes, see JavaScript or JavaScriptMac functions Web Direct No Yes, see JavaScript Functions Server Scripting No Yes, see JavaScript Functions Returns result from JS directly FileMaker MacOS No Yes, with WebView.Evaluate, JavaScriptMac or JavaScript functions FileMaker Windows No Yes, with WebView.Evaluate or JavaScript functions iOS with FileMaker Go No No plugin on FileMaker Go iOS with SDK No Yes, with WebView.Evaluate, JavaScriptMac or JavaScript functions Web Direct No No, plugin has no access to browser with Web Direct Server Scripting No Yes, see JavaScript Functions Trigger script via FMP URL Yes Yes Trigger script from JavaScript FileMaker MacOS Yes Yes, via WebView.AddScriptMessageHandler FileMaker Windows Yes No, WebView.InstallCallback broke with newer IE versions. ServerSocketfunctions may work. iOS with FileMaker Go Yes No plugin on FileMaker Go iOS with SDK Yes Yes, via WebView.AddScriptMessageHandler Web Direct Yes No Pass file name for script: No, always current file. Yes Available via Script Step Yes Yes Available as Function No Yes Available for Custom Functions No Yes Data Types for parameter or return value Text only Text, Boolean, Number or JSON. Set Webviewer to be silent No Yes, for Windows, see WebView.SetSilent Run JavaScript synchronously No Yes Run JavaScript asynchronously Yes Yes, for MacOS & iOS via option for WebView.RunJavaScript function Works in runtimes No Yes Let us know if you have a correction or addition for the table above. Please don't hesitate to contact us with your questions.
  8. We have three handy custom functions for you to log function calls with MBS FileMaker Plugin: CountScriptCall LogFunctionCall LogFunctionResult And they can be used together to log function calls like on the screenshot here: CountScriptCall Now let's take a look on each function. Start of the script may just call the first two functions together in one Set variable script step: The CountScriptCall function is to check which scripts get called and how often. We can call it in each script on the start to log that this script is still in use. We use a global variable $$LogScriptCalls to turn this on/off as needed. In the custom function we first try to insert a record via FM.InsertRecord in the log table. If that fails as the record with same unique key is already there, we use the FM.ExecuteFileSQL to run an SQL statement to update the counter and increase it. FileMaker also updates the modification time stamp field. This way we know the first time the function was called via creation date and the last time called via modification date. Take a look on our CountScriptCall function here: As you see we pass FileName to the two MBS functions for the file name of the log table. But that is not required as you can move the logs to another file. This way logs appear in a different file as they can become quite big. LogFunctionCall This function should log a function call. Again enabled via $$LogScriptCalls global variable, we query a few information pieces for the context like user name, current table and layout. We then generate an unique ID and store it in a local variable to be able to later find the record again. We add our script to the $$CallStack variable, we always have the current call stack in a variable and we can know which script calls which other script. To log we use FM.InsertRecord again to pass all the field names and values. Here is the calculation for the LogFunctionCall function: Every script must have such a line on the end and you call the function for each way the script can be exited. That is some work, but only if the function is called, we can cleanup the $$CallState variable. We check $ScriptCallID variable for whether we have an ID set earlier. If so, we can use it to update the log and add the end time and the script result to the table. As start and end time of each script is set, you can calculate later how long those scripts take. Here the calculation for the LogFunctionResult function with parameter Result: What do you think about those functions? See problems? Flaws? Please let us know, so we can update our example. The example database will be included with future plugin updates. See also Looping over records in FileMaker with error checking for the CheckError custom function.
  9. Nickenich, Germany - (May 12th, 2020) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 10.2 for macOS, iOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin currently available for FileMaker Pro. As the leading database management solution for Windows, macOS, iOS and the web, the FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 10.2 has been updated and now includes over 6200 different functions, and the versatile plugin has gained more new functions: For our JavaScript engine embedded in the plugin, we got a great example using LibPhoneNumber. This is a library to format and validate phone numbers. The library is part of the example file and loaded in the JavaScript environment at start of the solution, so you can run queries against it later. Great to format phone numbers in your solution or to alert the user if the format is incorrect. This can be used on clients and server and does not need a web viewer on the layout! Our DynaPDF functions got new capabilities to create signature fields. We can sign PDFs for years, but now you can show a field on the PDF page with a custom appearance. The PDF viewer validates the signature and shows the status next to your own graphics. For form fields we can now attach images to buttons in forms. To draw gradients, you can now create radial and axial shadings. If you like data structures with our plugin, check out the improved matrix functions. Columns and rows can now be named and accessed by name. The Matrix.Evaluate function allows you to pass an expression, so we evaluate it for each value to generate a new value. To add or subtract a value, you can check the new Matrix.Add function. We have two functions to copy rows or columns from one matrix to another: Matrix.CopyColumn and Matrix.CopyRow. For JSON we added a JSON.SortWithEvaluate function to sort JSON objects or arrays with custom expression. Your expression can check the JSON to compare and define how the JSON values are compared. The JSON.AddArrayToArray function quickly copies the content of one array to append another JSON array. The SQL functions to other databases can get you all fields in a row or the whole result set as a JSON block. You can get and set all parameters for a SQL command with JSON. Those functions can be used together with FM.SQL.JSONRecord and FM.SQL.JSONRecords functions to export data to foreign databases. In the other direction, to FileMaker, the SQL.InsertOrUpdateRecords function can now pass dates, times and timestamps better. To synchronize multiple scripts in FileMaker server between WebDirect and Script Engine, we got new Mutex functions. They also help to synchronize use of our SharedMemory functions. Our list functions got new ways to count items in the list and find the index of the first matching element. The List.SortWithEvaluate and QuickList.SortWithEvaluate functions allow you to sort lists with custom expressions. Your expression is evaluated to compare two entries and provide a custom sorting. For CURL we can now provide HTTP headers as JSON with our new CURL.GetHeaderAsJSON function. If you need to use a specific CURL library, you can load it with the CURL.LoadLibrary function. For Linux we load libidn dynamically if installed and use it to resolve domain names with unicode characters. For MacOS and Windows we let the system do this. We enabled SSPI, Kerberos 5 and SPNEGO for CURL functions on Windows. Our new plugin allows you to use LibXL in version 3.9, the library we use to read and write Excel documents (xlsx and xls) without having Microsoft Excel being installed. The new version enables us to read styled text from cells in the document and return them as styled text in FileMaker with XL.Sheet.CellReadStyledText function. In the other direction, we can pass styled text from a FileMaker field directly to a cell in the Excel document with XL.Sheet.CellWriteStyledText function. You can query whether a cell contains styled text with XL.Sheet.CellIsStyledText and you can set the calculation mode for the whole document. For columns and rows you can now let LibXL return you the size in pixels to better adjust pictures to place to the right size. The hotkey functions can now define hotkeys to work only in ScriptWorkspace and to be permanently stored in preferences file. This helps to automate actions in Script Workspace in relation to our custom contextual menu commands there. Please enjoy improved font size support in the Script Workspace. The new XML.Compact function can compact XML and is the reverse for XML.Format function. With WebView.SetInternetExplorerHiDPI function you can enable HiDPI support for the web viewer on Windows. The CoreML functions can now pass 2D data with CoreML.Add2DArrayParameter function. With WebView.InstallUserMediaAccess and new preferences keys you can enable camera access within web viewer on MacOS and iOS. Finally we updated CURL to version 7.70.0, DynaPDF to, SQLAPI to 5.0.6, LibXL to 3.9 and OpenSSL to 1.1.1g. See release notes for a complete list of changes. More details in the release notes. Please take the time to check our 500 example databases and check where you can use our plugin features in your solutions. System Requirements: * macOS 10.9 or later, including macOS 10.15 * Windows 7 and newer, including Windows 10 and Windows Server 2020 * FileMaker Cloud for AWS (64-bit Linux) * FileMaker Pro 7 to 18 * FileMaker iOS SDK 16 to 18 Pricing and Availability: MBS FileMaker Plugin is available directly from the MonkeyBread Software website with licenses starting at just $149 (USD). You can just download and try the plugin without a license or request a trail license. Not all functions are available in all platforms, please check specifications. Please join us on the next conferences and visit our booth. Monkeybread Software: https://www.monkeybreadsoftware.com/ MBS FileMaker Plugin Website: https://www.monkeybreadsoftware.com/filemaker/ Function Reference: https://www.mbsplugins.eu/ Download Free Trial: https://www.monkeybreadsoftware.com/filemaker/download.shtml Events and conferences: https://www.monkeybreadsoftware.com/filemaker/events/ Logo: https://www.monkeybreadsoftware.com/images/MBSLogo.jpg Release notes: https://www.monkeybreadsoftware.com/filemaker/releasenotes.shtml Located in beautiful Nickenich, Germany, MonkeyBread Software is a privately held company founded in 2000 by Christian Schmitz. MonkeyBread Software focuses on the Macintosh, Linux and Windows platforms. With over twenty years as a software developer, Christian's aim is developing unique and useful utilities, complemented by first-class customer support. Copyright 2000-2020 Christian Schmitz Software GmbH. MonkeyBread Software is a registered trademark of Christian Schmitz, Nickenich. All Rights Reserved. Apple, and the Apple logo are registered trademarks of Apple Computer in the U.S. and/or other countries. FileMaker Pro and FileMaker are trademarks of FileMaker, Inc. Other trademarks and registered trademarks may be the property of their respective owners. Greetings Christian Schmitz Monkeybread Software
  10. Please look in /Library/Logs/DiagnosticalReports folder for FileMaker things. Zip them and post a download link here. The crash logs may show what the problem is.
  11. MBS FileMaker Plugin can help here. Check our AVPlayer functions for Mac and WMFP functions for Windows. Or check WebView functions to control an audio player in a web viewer with JavaScript. All ways you can load an audio file to play and control it via functions.
  12. You have a FileMaker Server installed, e.g. on Windows Server, and you need the MBS Plugin installed. Let us guide you though the installation process. We expect you have a current FileMaker Server running. If you have an older/newer one, the buttons may be on a different position. Copy Plugin Files First in Admin Console, please stop the database server, so you can later enable it again. Only when server engine starts, it scan extensions folder and leans which plugins are available. Please use the "Stop Database Server" button: Now the browser changes and shows the server is off: Next go to explorer and locate two folders and copy the MBS.fmx64 (Windows 64-bit plugin) file there: C:\Program Files\FileMaker\FileMaker Server\Database Server\Extensions and for Web Direct the second folder: C:\Program Files\FileMaker\FileMaker Server\Web Publishing\publishing-engine\cwpc\Plugins DebugView You can download DebugView, a little utility from Microsoft to view log messages. Launch DbgView.exe as administrator and check the option "Capture Global Win32" in Capture menu. The window then can show messages from MBS Plugin, even in server. Our plugin writes a greeting on startup and shutdown of the plugin. If you use Trace command without file path, you can watch MBS commands live here. Enable Plugins Back in Admin Console start database server. It scans plugin folder now. Go to Connectors tab and select Plugins. Turn on the switches to enable plugins and turn on MBS Plugin. For Web Direct the plugins are not listed and all enabled. When MBS Plugin gets loaded, you may see a message in DebugView like this one: For Web Direct the message shows "Web Direct" there. The Admin Console should look now like this: Check Plugin version In a test database, please add a test script named "Return MBS Version": Now add a second script to call this one named "Check MBS Version on Server": Now you can run this script in FMP and it should show the version on server. For Web Direct you may make a script to call via a button on a layout: If the dialog box for either version shows a question mark, the plugin is not installed or activated. Please do not hesitate to contact us with your questions.
  13. With latest pre-release we added the WebView.SetInternetExplorerHiDPI function to switch on the HiDPI aware more for FileMaker application (or runtime). See comparison picture: In your start script you can just call this function once to enable it: MBS( "WebView.SetInternetExplorerHiDPI"; 1 ) When this option is active before web viewer is created, the web control will display the content high-dpi aware and zoom to 100% independent of the DPI of the display. In earlier blog post we recommended to use JavaScript to zoom the website: MBS( "WebView.RunJavaScript"; "web"; "document.body.style.zoom = \"200%\"; ") But this is no longer needed on Windows once the web viewer zooms correctly.
  14. We have made a ton of example code in the last decade showing how to connect to Microsoft SQL Server from MacOS or Linux using FreeTDS and our MBS FileMaker Plugin. And there are two ways to do it: 1. With loading driver directly Set Variable [$result; Value: MBS("SQL.SetClient"; $Connection; "ODBC")] #Tell plugin where freetds library is Set Variable [$result; Value: MBS( "SQL.SetConnectionOption"; $Connection; "ODBC.LIBS"; "/Users/cs/Desktop/libtdsodbc.dylib")] #Connect to database Set Variable [$result; Value: MBS("SQL.Connect"; $Connection; "DRIVER={FREETDS};Server=;UId=SA;PWD=test;Database=test;TDS_VERSION=7.2;Port=1433")] As you see, we point to the dylib as ODBC library, load it and connect through it. 2. With loading iODBC and having driver in connection string Set Variable [$result; Value: MBS("SQL.SetClient"; $Connection; "ODBC")] #Tell plugin where freetds library is Set Variable [$path; Value: "/Users/cs/Desktop/libtdsodbc.dylib" ] #Connect to database Set Variable [$result; Value: MBS("SQL.Connect"; $Connection; "DRIVER={" & $path & "};Server=;UId=SA;PWD=test;Database=test;TDS_VERSION=7.2;Port=1433")] As you see, we let the plugin load libiodbc.dylib (ODBC manager) and then have it load the library. What is better? Both ways do work, so for most customers there is no difference. But the second way is better as the libiodbc does some additional services like text encoding conversations, provide additional functions like a directory of the various database drivers, functions to browser for databases and a way to work with data sources. So we recommend in general that all customers prefer the second way over the ODBC manager to make sure all things work well. For the next weeks, we'll try to update a couple of blog posts and examples projects.
  15. With the recent release of LibXL 3.9, we got new functions for working with styled text. For our MBS FileMaker Plugin, we added new functions for styled text: XL.Sheet.CellIsStyledText XL.Sheet.CellReadStyledText XL.Sheet.CellWriteStyledText Now you can pass directly styled text from a field in FileMaker to a cell in an Excel document. Or you build a styled text from scratch with text formatting functions in FileMaker like in the example below: # create sheet Set Variable [ $sheet ; Value: MBS( "XL.Book.AddSheet"; $book; "Styled Text Test") ] # Set Variable [ $row ; Value: 1 ] Set Variable [ $col ; Value: 0 ] Set Variable [ $text ; Value: TextColor ( TextSize ( "Red"; 15 ) & " Text" ; RGB ( 255 ; 0 ; 0 ) ) & TextColor ( TextSize ( " and blue"; 14 ) ; RGB (0 ; 0 ; 255 ) ) & " in FileMaker" ] # Set Variable [ $r ; Value: MBS( "XL.Sheet.CellWriteStyledText"; $book; $sheet; $row; $col; $text) ] # Set Variable [ $text ; Value: TextFont ( TextStyleAdd ( "Hello World" ; Bold+Underline+Italic ); "Calibri" ) ] Set Variable [ $row ; Value: 2 ] Set Variable [ $r ; Value: MBS( "XL.Sheet.CellWriteStyledText"; $book; $sheet; $row; $col; $text) ] In our example database we show the styled text in two fields to check if we got them right: For the conversion to/from styled text, we support passing font name, color, size and the following styles: bold, italic, strikethrough, single/double underline, subscript and superscript. Optionally, you can attach a format to the cell, which may define the alignment and other formatting options. We hope you enjoy this functions and use them to post process the Excel exports from FileMaker or code your own export from scratch via script. Please try the new functionality and don't hesitate to contact us with questions. This is already included in 10.2pr4 download.
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.