FileMaker Cloud 1.17.0 now available


FileMaker Cloud 17We just got a notice that the new FileMaker 17 Server software for the cloud is released, so you can update your servers after you updated all clients to FileMaker Pro Advanced 17:

FileMaker, Inc. has released FileMaker Cloud 1.17.0. This release is available in the US, Canada, Europe, Japan, and Australia.

In addition, the Bring Your Own License (BYOL) option to purchase FileMaker Cloud through FileMaker, Inc. resumes availability today.

Some highlights of FileMaker Cloud 1.17.0 include:
Support for the features in the FileMaker 17 Platform.
The 90-day trial SSL certificate included with FileMaker Cloud can now be renewed up to 60 days prior to expiration.
The FileMaker Data API is no longer a trial version. The improved REST API includes support for FileMaker scripts and the ability to upload files to container fields.

NOTE: Any previously released software patches must be applied before updating to FileMaker Cloud 1.17.0. Only FileMaker 17 clients are compatible with FileMaker Cloud 1.17.0.

To download this software upgrade, visit the FileMaker Cloud Admin Console.


For more details, please check Release Notes.
MBS FileMaker Plugin 8.2 should work well on the new FileMaker Cloud software.

SSH tunnel in Xojo


As you may know, you can use SSH command line to start a tunnel from your computer through the SSH connection to a server on the other side. For one app, we use the following tunnel for MySQL:

e.g.
/usr/bin/ssh -L localhost:3307:localhost:3306 -N xxxx@1.2.3.4

We my not do the same in Xojo, but we can tunnel ourselves a connection with the new SSH2SessionMBS.OpenDirectTCPIPChannel function in the upcoming 18.3 plugins. This function opens a tunnel, so you can send data. Your data first goes through SSH connection and than through a TCP/IP connection to the server on the other side. Here is an example:
//* Open tunnel */ dim channel as SSH2ChannelMBS = session.OpenDirectTCPIPChannel("monkeybreadsoftware.de", 80) if channel = nil then print "Unable to open a channel" Return 4 end if // don't block channel.SetBlocking false app.DoEvents 10 // send http request through server to mbs website dim request as string request = "GET /cgi-bin/ip.cgi HTTP/1.1"+_ EndOfLine.windows+_ "Host: monkeybreadsoftware.de"+_ EndOfLine.windows+_ EndOfLine.windows app.DoEvents 10 call channel.Write request // now see if we get the IP of server returned do app.DoEvents 10 dim s as string = channel.Read(10000) if channel.LastError = session.kErrorEagain then // no answer yet Continue elseif s <> "" then // got answer print s else // no more data exit end if loop channel.Close channel = nil
If you'd use a local server socket to listen for incoming connections, you could have your socket feed data through the tunnel and do the same as the command line. But please be aware that we will use the command line tool in future as it's much easier than coding it all ourselves and without any threading trouble.

If you like to test, you can contact us for a preview of the new Network plugin.

Why you should try Xojo


Yesterday I was asked what is Xojo and why should you use it. So if you don't know what Xojo is or why you should use it, maybe here a few points:
  • Xojo is easy to learn, especially much easier than C++ or Java.
  • Xojo comes with a learning curriculum, several manuals and webinars to watch.
  • Xojo comes with a cross platform GUI framework, so no need to learn Cocoa, Win32 and GTK+ and no need to license QT or similar frameworks for C++.
  • Xojo Apps are free to distribute, as you only pay license fee once for your Xojo license.
  • Xojo comes with a graphical interface designer, so anyone can layout a window or webpage.
  • Xojo builds desktop apps for Mac, Windows and Linux from one project.
  • Xojo builds web apps to run on web servers and they offer cloud hosting.
  • Xojo can build apps to run on Raspberry Pi and other cheap computers.
  • Xojo can build mobile apps for iOS and soon Android.
  • Xojo comes with a debugger, which allows to inspect variables, step through code and monitor multiple threads.
  • Xojo can share code between projects, so you can use same classes in web, desktop and mobile projects.
  • Xojo comes with a community of friendly developers which help newbies.
  • Xojo provides localized resources in English, German, French, Spanish, Italian, Portugueses, Chinese and Japanese.
  • Xojo can connect to various databases.
    Choose between six built in database interfaces or 14 ones via MBS SQL Plugin.
  • Xojo runs a big conference in USA every year and we run a European conference in Germany.
  • Xojo is a company, where you can actually meat engineers and CEO and discuss Xojo topics in person.
Every Developer has to decide which tools to put in his toolbox and use in various projects. And Xojo is an excellent tool as it can build so many different things in short time. Try it today!

SQLite turned 18


SQLite just turned 18 years old.

The first check-in of SQLite code occurred 18 years ago.
see sqlite.org/src/timeline?c=2000-05-29

Version 1 just had a few commands. Open database, close database, execute a statement. Code for recordsets didn't exist at that time and came later.

Congratulations to Richard Hipp and his team!

XDC2018 Videos


Have you seen them all?
Here the title pictures of all the videos:

Video Preview

All XDC sessions are available for attendees of the conference for free on the Xojo website.
Or for purchase of the video pack for just $399 USD in the Xojo Store.

Free videos: "Superhero SQLite" XDC 2018 Session | Paul Lefebvre and XDC 2018 Recap

CubeSQL support for MBS Xojo SQL Plugin


Today we got CubeSQL support added to MBS Xojo SQL Plugin with a new internal cubeSQL client library.

So you can use our InternalCubeSQLLibraryMBS module to activate it with the Use command. This works the same way as our InternalSQLiteLibraryMBS module for SQLite and InternalPostgreSQLLibraryMBS for PostgreSQL. Once called, you don't need the cubesql dll file anymore, but use the one built into the plugin.

As usual you can use CubeSQL with our own SQLConnectionMBS interface or with SQLDatabaseMBS interface with the Xojo database interface.

// use internal CubeSQL library call InternalCubeSQLLibraryMBS.Use dim db as new SQLDatabaseMBS db.Option("APPNAME") = "Xojo Test" db.Option("ConnectionTimeout") = "5" // 5 seconds timeout? db.Option("ConnectionEncryption") = "AES128" // or "AES192" or "AES256" db.DatabaseName = "cubesql:localhost@mydatabase.sqlite" db.UserName = "admin" db.Password = "admin" if db.Connect then dim r as RecordSet = db.SQLSelect("select sqlite_version()") if r = nil or r.eof then MsgBox "Failed to query version." else MsgBox "Version: "+r.IdxField(1).StringValue end if end if
Betatesters are welcome and we include that in version 18.3 of our MBS Xojo SQL Plugin.

Gradients in GraphicsMagick


Did you know you can make Gradients with GraphicsMagick?

You can simply load an image with given size from a string specification with gradient as codec. It takes as parameters two color specifications, either as names or numeric values. With hex notation you can use #ffff00 for yellow as example.

e.g. "gradient:white-black" creates a gradient from white to black. Or "gradient:#20a0ff-#ffff00;" creates the gradients on the right with color effect from blue to yellow.

For FileMaker:

Set Variable [ $image ; Value: MBS( "GMImage.New"; "200x200"; "white" ) ]
Set Variable [ $r ; Value: MBS( "GMImage.Read"; $image; "gradient:#20a0ff-#ffff00;" ) ]
Set Field [ Contacts::Photo Container ; MBS( "GMImage.WriteToPNGContainer"; $image; "gradient.png") ]
Set Variable [ $r ; Value: MBS( "GMImage.Destroy"; $image) ]

For Xojo:

dim g as new GMGeometryMBS(200, 200)
dim i as new GMImageMBS(g, new GMColorMBS(&cFFFFFF))

i.read "gradient:#20a0ff-#ffff00;"

Backdrop = i.CopyPicture

Both snippets create a picture like the one on the right side.
The new GMImage.Read function is coming soon in next MBS FileMaker Plugin 8.3.

Privacy enhancements


In preparation for the Privacy and Electronic Communications Directive here in Europe, we made a few more adjustments already to comply better with regulation:
  • If you as client request to see our data about yourself, we can send you an email with records about you in customer database.
  • If you like to get an export all emails related to you from our email application for a client, we would export them in Apple Mail as PDF.
  • We got contracts for data handling with domainfactory (website hosted), Olark (website chat) and a few others.
  • We got our records of processing activities done.
  • Created an encrypted database to log emails we send, so we can tell people what emails we sent them.
  • Our privacy officer is me, Christian Schmitz.
  • The Olark chat is now only loading, when you click on it, so they can't track you if you don't use the chat.
So if everything works, those changes may benefit you. See also older posting about Privacy enhancements.
Anything we may have missed so far?

CURL function for OAuth


Today we got a new function for you to add OAuth authentication to your requests:

CURL.SetupOAuth for FileMaker and CURLSMBS.SetupOAuth for Xojo.

You call that method and pass in keys, secrets, parameters and we build the URL, authorization and set headers. You can pass in optionally headers, data entries, nonce and timestamp.

We use it for a project with magenta API using OAuth for the authorization for queries against the database from a FileMaker database. But you can use the same code for Twitter if needed.

Coming soon for next plugin versions.

Open Dialog upgraded


Today we upgraded our file dialog functions for Windows:



We now use IFileOpenDialog/IFileSaveDialog classes when available and only fall back to GetOpenFilename and GetSaveFilename for Windows XP.

So if you use OpenDialogMBS class in our Xojo Plugins or FileDialog.OpenFileDialog, FileDialog.SaveFileDialog or FileDialog.SelectFolderDialog in our FileMaker plugin, you may notice some improved dialogs the next time you update the plugins.

Coming soon for MBS Plugins.

Live chat for website


As you may know, we use a live chat on the website powered by olark.com.

On the bottom of each website, you see a chat button, which may open a chat window. This is very convenient, if you like to quickly ask a question to me about a function, an order or the next conference.

But there is a downside. The guys from Clark see all your browsing on our website and every time you load a page, they ping the olark server to add the chat button.

Starting today this changes. All MBS websites first show a chat button, with a more blue bubble (to see the difference) and only if you click on it, we start the chat system. If you have been in a chat before and you load a new page on the same domain, we start the chat automatically, so it can continue. In the next days, we will certainly fine tune this and try to optimize the chat to properly load everywhere. If you see a white bubble without being a chat, let me know.

MonkeyBread Software Releases the MBS Xojo Plugins in version 18.2


Nickenich, Germany (May 22nd, 2018) -- Monkeybread Software releases version 18.2 of the MBS plug-in for Xojo.

The MBS plug-in comprises a collection of several plug-in parts which extend the Xojo (Real Studio) development environment with 2,300 classes featuring over 60,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console including 64-bit and ARM targets. Some of the highlights on the 18.2 update:

This year we work on a Bluetooth plugin and in this release we start with 16 new classes for the CoreBluetooth.framework from Apple to connect to Bluetooth LE devices on your Mac.

For MacOS, our CanvasGesturesMBS class allows you to generically capture gestures on a canvas. This includes swipe, rotate and magnify gestures and now allows you to use standard Canvas to catch them instead of using a NSViewControlMBS control.

You can now query media libraries using our new MediaLibrary classes. This is 64-bit only, but allows e.g. to query playlists in iTunes.

For CURL, we added over 50 new properties and functions to query information. Our new CURLSSSLBackendMBS class allows to query what backends are available. The new AddMimePart and FinishMime methods and CURLSMimePartMBS class allows better MIME uploading handling. For the properties in CURLSMBS, we optimized storage and got memory usage reduced.

The new CWWiFiClientMBS class allows you to listen for Wifi related events. e.g. you can get notifications for new Wifi networks found.

For Windows, you can now enable spell checking for Xojo's textarea controls. The new WindowsGUIResourcesMBS class allows to query handle usage for GUI classes to detect running out of handles. With RemoteControlMBS.WinBringProcessToTop method you can bring a whole process to the front.

We got a new JSONMBS.ToHTML function to show JSON to user in a HTMLViewer, printing related functions for WebFrameViewMBS and printing related events for WebUIDelegateMBS class.

The NSURLConnectionFilterMBS class allows you on MacOS to filter connections for NSURLConnection queries. This allows you to set timeout for Xojo.Net.HTTPSocket requests.

Finally we updated CURL to version 7.60.0, DynaPDF to version 4.0.19.50, SQLite to version 3.23.1, SQLAPI to 4.2.2 and use the Xojo 2018r1 plugin SDK.

See release notes for a complete list of changes.

Xojo 2018r1.1 available


Xojo Inc. released Xojo in version 2018r1.1 today.
This is a bugfix release with 19 bug fixes.

You can read the details here: Xojo 2018r1.1 Release notes

We recommend you to install the update soon. It fixes the breakpoint problem in 32-bit applications as well as a few other debugger issues we saw. Also fixed are crashes related to undo :-)

You can download the update here: Xojo Download

And now we look forward what comes for 2018r2.
We hope to learn about the Xojo 2018r2 release and a lookout for version 2018r3 in the Xojo keynote at the MBS Xojo Conference.

MBS Xojo Plugins, version 18.2pr9


New in this prerelease of the 18.2 plugins:
  • Fixed crash with zxingQRCodeReaderMBS with out of bounds access in image for bad QRCodes.
  • Changed zxingQRCodeReaderMBS to report the version number read when complaining about invalid version in QRCode.
  • Fixed OpenDialogMBS for Cocoa target to handle better file extensions when several are separated by semicolon.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Two weeks left for early bird tickets for MBS Xojo Conference in Munich


Just about two weeks left for early bird tickets for our European MBS Xojo Conference 2018 in Munich. If you like to join, please sign up soon.

Already developers from nine countries are signed up including Xojo CEO Geoff Perlman and Xojo Evangelist Paul Lefebvre. The schedule is mostly done with only a few sessions still pending. Reserve your ticket and reserve your hotel room as soon as possible.

Our Hotel room contingent expires later this month, so please make sure you have a room booked.

The schedule:

Sep 4thDayoptional sight seeing tour
Sep 4thEveningoptional get-together with everyone arriving early
Sep 5thDayoptional Xojo training (English)
Sep 5thEveningoptional get-together with everyone arriving early
Sep 6th9:00 to 18:00First day of conference with keynotes
EveningDinner event in Augustiner Keller
Sep 7th9:00 to 18:00Second day of conference with more sessions
EveningOptional dinner together



We all look forward to presentations about Android, the new Web Framework other news in the Xojo keynote.

Registration is open. The late bird offer available till 7th June is just 599 Euro plus VAT if needed. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Maritim Hotel as well as an accompanying social program.

Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers. If you like to hold a presentation, please contact us as soon as possible.

MBS Xojo Plugins, version 18.2pr8


New in this prerelease of the 18.2 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Xojo Stammtisch in Zürich


On my next visit to Zurich, I'd love to make another Xojo developer meeting:

Wer hat Interesse an einem Xojo Entwicklertreffen am 10. oder 11. Juni in Zürich?



Einfach gemütlich zusammen sitzen und über Xojo schnacken.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.

Bei Interesse bitte eintragen für Terminfindung: Umfrage

Wer Interesse hat an einem Termin mit mir für Softwareentwicklung, Schulungen, Entwicklungshilfe, Plugin Empfehlungen, assistierte Fehlersuche, Code-Review und IT-Beratung, der darf sich gerne melden für eine baldige Terminfindung.

BBEdit turns 25 years old


Do you know BBEdit?

It's still after many years it is my favorite text editor on MacOS.
I've been using it since version 6.x around year 2000, first the Light version and than full version later.

You can use BBEdit to edit any text file, convert between different line endings and text encodings.

I love it for searching and replacing texts in multiple files using regular expression and edit all my html, php and javascript files in it.

As BBEdit can be downloaded and tested for free, please give it a try today.

Thanks Bare Bones Software, Inc. for making it.

UUID Numbers


FileMaker 17 introduces a new function Get(UUIDNumber). It allows you to query the numeric representation of an UUID.

e.g.
145234071807015280356493410184603392874
6D431095-AC81-4E79-8C4F-A14AAAE85B6A

Both refer to the same UUID and you can calculate the numeric value yourself by decoding hex parts and multiplying. Those UUID values allow you to use UUIDs as primary keys on the database. Sorting and indexing can be more efficient.

Sadly FileMaker 17 does not introduce the UUID data type to store UUIDs efficient as 16 byte in binary representation instead of 40 characters of text for the number or 36 characters for hex representation. That would save space.

So please start using UUID numbers, which avoid people guessing your record IDs by counting up or down.

If you need those for FileMaker 16 or older, you can use our new plugin function UUID.Number. It returns you an UUID as number, same as with FileMaker 17.

We also got UUID.FromNumber and UUID.ToNumber functions to convert between hexadecimal and numeric representation.

Windows GUI Resources


For next MBS Xojo Win Plugin, we add a new WindowsGUIResourcesMBS class:



This class allows you to query the number of handles used for GUI and user objects. So you can have a timer monitor those values and maybe detect a leak in memory usage. For example, each picture needs a GUI handle. But a window may contain a few user object and GUI handles.

Coming soon for version 18.2 of our Xojo plugins.

XDC 2018 Highlights Video


Watch the XDC 2018 highlights video now:



The next conference is just 4 months away: MBS Xojo Conference, 6th/7th Sep 2018 in Munich.

Xojo Stammtisch in München


Wer hat Interesse an einem MBS Xojo Entwicklertreffen am 14. Juni in München?

Einfach gemütlich zusammen sitzen in einem Restaurant oder Biergarten und über Xojo reden.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.

Bei Interesse bitte bald bei mir melden.

Für die Xojo Konferenz im September sind noch Plätze frei.

Sign PDFs with DynaPDF using Windows Certificate Storage


You may know that you can sign a PDF with DynaPDF cross platform in Xojo (and FileMaker) with a certificate file, usually a PKCS#12 file.

But for Windows, our Xojo plugin offers an alternative way by using the local certificate storage. So your user can have the private key with certificate installed on the Windows machine and sign without knowing the password for the certificate!

On the right, you see the dialog from Windows to pick a certificate in German.

If you have no certificate, you get an error message. If you have one, you can confirm to use it and if you have several certificates, you can pick one. The dialog is localized for the user.

PS: If needed, we could add that quite soon for FileMaker, too.

MBS Xojo Plugins, version 18.2pr7


New in this prerelease of the 18.2 plugins:
  • Implemented InvertMBS for alpha channel pictures.
  • Changed CURLSMBS to use less memory for storing properties.
  • Changed CollectOutputData, CollectHeaderData and CollectDebugData for CURLSMBS/CURLMBS/CURLNMBS to track if you set property and if you set to false, we ignore the data and do neither return error nor collect data. If never set, we may turn them to true, when you have no event and no file streaming.
  • Reduced memory footprint of CURLSMBS.FormAddField method.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

XDC2018 Superhero SQLite Video available for free


Nothing to do on a Sunday evening?
You can watch the Superhero SQLite session video from XDC 2018 and learn all about SQLite from Paul Lefebvre.



"Superhero SQLite" XDC 2018 Session | Paul Lefebvre and XDC 2018 Recap

All XDC sessions are available for attendees of the conference for free on the Xojo website.
Or for purchase of the video pack for just $399 USD in the Xojo Store.

Detect 32 vs. 64bit DLL in Xojo


Today we got some code to detect whether a DLL is 32-bit or 64-bit. That can be useful if your app requires the user to install a custom DLL, e.g. mysql DLL for use with our MBS Xojo SQL Plugin.

Technically you need to read the DOS header from the DLL/EXE file, check where the PE header starts and lookup the field for CPU architecture. If something is not supported, we ignore it, like a wrong position value and if the MZ or PE texts are not there. As you see, we can easily do that with binary stream class in Xojo and Microsoft defines a lot of constants for the various possible architectures.

If you find a DLL from a Windows RT copy, please let me know if it detects ARM as target. Thanks. (more)

Check our QuickLook Plugin for Xojo and Real Studio Projects


You have several Xojo and Real Studio versions in use?
You want to know in advance what Xojo version a project was saved with?

Please try our plug-in for QuickLook: MBS-Xojo-QuickLook-Plugin.dmg

After installation of our plug-in to /Library/QuickLook and you run "qlmanage -r" in Terminal app or logged in the next time, your icons look like this:


This plug-in is freeware, so please share with friends and enjoy!

xDev Magazine Issue 16.3


The May/June (16.3) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Farewell New Framework by Marc Zeedar
Big announcements were made at this year's Xojo Developers Conference in Denver, Colorado in late April. Find out all the details here!

A Roundabout Way to Denver by Marc Zeedar
As usual, Marc likes to do things the hard way. Instead of a quick flight to Denver and a stay in a comfy hotel, he decided to drive 1300 miles and sleep in his car. Er, what?!

Give Yourself to the Dark Side by Sam Rowlands
Apple has added "dark mode" support in recent OS updates, but using it in the best way can be tricky. Sam demonstrates how by creating a custom slider control.

A Predicate For Data, Part 2 by JC Cruz
This time Jose adds new features to his data predicate class.

Plus: Xojo 2018r1, refactoring, PITR, MailgunX, and more!

XDC 2018 Session Videos


The XDC Videos are available.

You can get over 30 videos from the sessions for download in your Xojo account, if you visited the conference. All others, can buy the video pack for just $399 USD in the Xojo Store.

Here is the list of all tracks:
DayNameLength
1Android Update Presentation34:45
1Ask the Engineers36:38
1Keynote1:05:40
1New IDE Features37:48
1SQLite Presentation46:17
1Web Framework38:57
1Windows Presentation43:39
2Advanced Reporting In Xojo50:39
2Aloe Express59:53
2Database Driven Web Apps54:12
2Databases 10144:55
2Factoring Project Testability51:47
2Lean On Me (the Compiler)45:58
2Leveraging LLVM42:53
2Practical Color Management48:06
2Rapid Database Application51:34
2Rest API54:18
2SELECT encrypted data52:02
2Use Monkeybread Plugins32:30
2Web Server For Mobile Apps43:16
3Anatomy Of An IOS App51:36
3Being Successful With An IOS App38:30
3Linux39:45
3Mastering The Dialog Box Part 250:09
3Mastering The Dialog Box39:14
3Moving Beyond Example Files40:24
3Policies Procedures & Processes51:21
3Project Management46:56
3Searching For Code54:37
3Tip Control SF59:15
3Using OPP52:02
In total over 24 hours of Xojo knowledge.

Sign up today for the next conferences: PS: Today is the XDC 2018 Recap webinar.

Store your ID in URLs in Mac address book


As you may know, we can query address book in our plugins. Now you can store your own IDs for users in the contacts database by using an extra URL.

The key today is that we use an URL in the addressbook and make it a FMP URL, so the user can actually click on the URL and go to the FileMaker database right away. When synchronizing the IDs between database, we can store our own ID this way. To search, we use Addressbook.searchElementForProperty function to search for our label in URLs property and compare to the ID.

To store the value, we use the following script: 

Set Variable [ $PersonID ; Value: MBS( "Addressbook.Me") ] 

Set Variable [ $myID ; Value: "FMP://~/Clients?script=ShowContact&param=123456" ] 

Set Variable [ $MyLabel ; Value: "FileMakerID" ] 

# Query current URLs

Set Variable [ $r ; Value: MBS( "Addressbook.record.valueForProperty"; $PersonID; "URLsProperty" ) ] 

Set Variable [ $Count ; Value: MBS( "Addressbook.multivalue.count" ) ] 

Set Variable [ $index ; Value: 0 ] 

Set Variable [ $foundIndex ; Value: -1 ] 

Loop

Set Variable [ $label ; Value: MBS( "Addressbook.multivalue.labelAtIndex"; $index ) ] 

If [ $label = $MyLabel ] 

Set Variable [ $foundIndex ; Value: $index ] 

Exit Loop If [ 1 ] 

End If

# next

Set Variable [ $index ; Value: $index + 1 ] 

Exit Loop If [ $index >= $count ] 

End Loop

If [ $foundIndex >= 0 ] 

# found, so update

Set Variable [ $r ; Value: MBS( "Addressbook.multivalue.replaceValueAtIndex"; $foundIndex; $myID ) ] 

Else

# not found, so add

Set Variable [ $r ; Value: MBS( "Addressbook.multivalue.addValue"; $myID; $MyLabel ) ] 

End If

Set Variable [ $r ; Value: MBS( "Addressbook.record.SetValueForProperty"; $PersonID; "URLsProperty"; "multi" ) ] 

# save...

Set Variable [ $r ; Value: MBS( "Addressbook.save" ) ] 

And to read back the value, we can use a script like this: 

Set Variable [ $PersonID ; Value: MBS( "Addressbook.Me") ] 

Set Variable [ $MyLabel ; Value: "FileMakerID" ] 

# Query current URLs

Set Variable [ $r ; Value: MBS( "Addressbook.record.valueForProperty"; $PersonID; "URLsProperty" ) ] 

Set Variable [ $MyID ; Value: MBS( "Addressbook.multivalue.valueForLabel"; $myLabel ) ] 

Show Custom Dialog [ "MyID" ; $MyID ] 

 
Let me know if you have questions. Same can of course be done with our Xojo plugins. 


Combine PDFs 5.3


Monkeybread Software today is proud to announce Combine PDFs 5.3, an update to their popular PDF merge and split tool for Mac OS X. With a focus on ease-of-use, Combine PDFs is a lightweight utility which allows anyone to merge PDF files and images into a single PDF file. The user need only drag & drop files onto the program icon. The main window appears, allowing the user to set the order in which the files are joined.

Changes in Version 5.3:
  • Added swedish translation.
  • Can use app store license in shareware version.
  • Added retina support and now a Cocoa application.
  • Added preference option to enable copying of annotations.
  • Requires MacOS 10.9 or newer.
  • Upgraded to 64-bit.
  • Fixed preview window setting, so it's saved and honored on next app start.
Combine PDFs Website

Requires MacOS 10.9 or newer for 64-bit. Older 32-bit version stays available and still works very well.

This application is made with Xojo 2018r1.

Query URL from downloaded file


Did you know that your Mac tracks URLs used with downloaded files?

In the metadata for a file, you find extra attributes for download URL and download date, which spotlight uses to track downloads. In Finder, you find the URL in the information dialog for the file.

In Xojo, you can use MDItemMBS class:

dim file as FolderItem = DownloadsFolderMBS(0).Child("test.html") dim item as new MDItemMBS(file) dim value as Variant = item.GetAttribute(MDItemMBS.kMDItemWhereFroms) if value <> nil then dim values() as Variant = value dim Link as String = values(0) MsgBox link end if

In FileMaker, our MetaDataQuery.AttributesForFile would provide all the metadata as JSON and this includes the kMDItemWhereFroms entry:

Set Variable [ $path ; Value: "/Users/cs/Downloads/test.html" ]
Set Variable [ $json ; Value: MBS( "MetaDataQuery.AttributesForFile"; $path) ]
Set Variable [ $link ; Value: MBS("JSON.GetPathItem"; $json; "kMDItemWhereFroms¶0") ]
Show Custom Dialog [ "Link" ; $link ]


If you like to get rid of the attributes, you can use   xattr -c   followed with the path to the file.
Or in Xojo use ExtendedAttributesMBS module to do it in code.

MBS Xojo Plugins, version 18.2pr6


New in this prerelease of the 18.2 plugins:
  • Updated DynaPDF to version 4.0.19.50.
  • Added DynaPDFMBS.GetUsesTransparency, DynaPDFMBS.GetDocUsesTransparency and DynaPDFPageMBS.SetBBox.
  • Added CWWiFiClientMBS class for MacOS to watch for Wifi changes.
  • Fixed SQL problem introduced in pr4 where all recordsets where empty.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Xojo Stammtisch in München


Wer hat Interesse an einem MBS Xojo Entwicklertreffen am 13. oder 14. Juni in München?

Einfach gemütlich zusammen sitzen in einem Restaurant oder Biergarten und über Xojo reden.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.

Bei Interesse bitte eintragen in die Umfrage hier: München Xojo Stammtisch

PS: Vorzugsweise bei Doodle anmelden vor dem Abstimmen, damit niemand ihre Stimme ändern kann. Danke.

Four months till European MBS Xojo Conference in Munich


Just four months left for our European MBS Xojo Conference 2018 in Munich. If you like to join, please sign up soon.

Already over 35 attendees are registered from seven countries and the schedule is filling quickly. Reserve your ticket and reserve your hotel room as soon as possible.
Our Hotel room contingent expires later this month, so please make sure you have a room booked.

The schedule:

Sep 5thEveningoptional get-together with everyone arriving early
Sep 6th9:00 to 18:00First day of conference with keynotes
EveningDinner event in Augustiner Keller
Sep 7th9:00 to 18:00Second day of conference with more sessions
EveningOptional dinner together



We all look forward to presentations about Android, the new Web Framework other news in the Xojo keynote.

Registration is open. The late bird offer available till 7th June is just 599 Euro plus VAT if needed. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Maritim Hotel as well as an accompanying social program.

Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers. If you like to hold a presentation, please contact us as soon as possible.

Xojo on Sale this weekend with 20% off


Xojo is on sale and you can buy all new licenses and updates for 20% off this weekend. See Xojo Store.

XDC 2018 videos arrived and are available for all attendees for free (included with ticket purchase).
If you didn't attend, you can buy them for $399 USD currently.

And finally if you like conferences, the XDC 2019 tickets are currently available for $200 off ($799 instead of $999 USD).

For our MBS Xojo Conference, you can sign up this weekend and save 200 Euro from the regular price with coupon code "Sale", so you pay 499 Euro instead of 699 Euro (+VAT if needed).

The sale at Application Systems Heidelberg for spring is still running with 20% off with coupon code BHKMTLS18Q2 and works for Xojo, too.

MBS Xojo Plugins, version 18.2pr5


New in this prerelease of the 18.2 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

PS: SQL Plugin broke for RecordSet class. Please keep pr4 for SQL Plugin.

Sightseeing in Munich


You like to join our MBS Xojo Conference in Munich?

You can do quite some sight seeing in Munich itself: Don't forget to walk though the various parks and enjoy a stop in one of the beer gardens!
To get around, a day ticket for the subway may be useful.

For a day trip, you can visit the following places: Depending on how many interested foreign visitors we have, we may organize a group tour to something, e.g. to go to Wendelstein, Palace Herrenchiemsee and back with a stop at a nice beer garden.

Xojo Stammtisch in Berlin


On my next visit to Berlin, we have another Xojo developer meeting:

Wer hat Interesse an einem Xojo Entwicklertreffen am 5. Juni in Berlin?
ca. 18 bis 21 Uhr.

Einfach gemütlich zusammen sitzen in einem Restaurant oder Biergarten und über Xojo schnacken.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.

Wer noch dabei sein möchte, bitte per Email melden. Anmelden

Archives

Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008