For the new year, I thought about whether I could drop something for Real Studio.
The downloads for Real Studio are down to about 10% compared to Xojo plugin downloads.
The users with Real Studio version capable of building PPC apps may be down to less than 1%, so I wonder if I still should spend time building PPC and Universal libraries.
When PPC support is no longer needed, it may be worth to move the minimum target for OS X from 10.4 to 10.6. For 64-bit, we already use 10.7 as target and for Cocoa 10.5. Using 10.6 for all of those could simplify coding.
Finally if downloads for Real Studio go down further, the rbx plugin format is at question. I considered already to write a converter to convert Xojo plugins to rbx plugins, so users in need of those plugins could do conversion themselves. I would no longer need to upload those plugins.
What do you guys think about such changes?
PS: If you still use Real Studio, please use latest 15.4 plugins. They still work with REALbasic 2006r4 and newer!
It is great for receiving drags on Windows. Especially we got a case with Microsoft Outlook here. When you drag and email and/or attachments to your Xojo app, you do not get all data normally. But with using our classes, you can get more details.
For a normal Explorer file drag, the GetPaths function will give you folder items. But with Outlook attachments, there are not paths. But GetFileDescriptors gives you metadata for those attachments and GetFileContents function can give you the data. For the actual email, the GetFileName function gives you a path.
The reason for all those different functions is that Microsoft invented over the years newer ways to handle drag & drop, especially for files.
With now three ways to receive files, we are happy to get data into Xojo app from Microsoft Outlook.
The PauseOnError Steering Committee, in collaboration with Cleveland-based host firm Adatasol, is pleased to announce the Sixth PauseOnError Conference in Cleveland, OH, Monday, March 14th to Tuesday, March 15th, 2016, at the Metropolitan at the 9 hotel in downtown Cleveland.
Interface. Contribute. Learn. Be a part of your Community.
PauseOnError is a self-organized effort of software developers and consultants who use FileMaker. PauseOnError content is created by the attendees in a low tech and high touch environment, so leave Powerpoint at home and come prepared to share the mic.
Have a topic you'd like to talk about? Visit the wiki page, and add your session to the Schedule. It's just that easy.
Our objective is to provide a valuable and educational forum on which we can all collaborate to grow our community. We took care of most of the details so you an focus your energy on your contributions to the conference. PauseOnError is inexpensive because PauseOnError is a not-for-profit venture. The goal for each event is to cover our expenses and break even, and have some buffer for future events.
We would like to extend an early invitation to you to learn about the event, add your session to the schedule, and purchase tickets for you and your team.
To find out more about PauseOnError Cleveland - Sessions, Tickets, Hotel, and more, visit the conference wiki page!
We will have a MBS Plugin session there about our plugin, features and how the plugin is created and changed development with FileMaker.
We just got notice about the release of Xojo 2015r4.
This is a minor release fixing over 100 issues in Xojo. The planed features for retina support and high resolution aware applications has been moved to 2016r1 as it is not yet finished. Especially for Windows it seems to be harder than expected. Nevertheless you can already use the image sets in your projects to include assets in several resolutions. Be aware that those may be lost or not editable in older versions of the IDE.
Xojo 2015r4 is primarily a bug fix release. Some notable improvements include:
Added CGFloat data type to make it easier to create Declares to iOS and OS X Cocoa frameworks.
The Code Editor is now noticeably faster when working with large projects.
You can use the TextAlign property to more easily set the alignment for web text controls.
Added SecureAuth property to MySQLDatabase to allow connections to pre-4.1.1 authentication protocols.
We do have quite a few printing classes in our MBS Xojo Win plugin for Windows. You can query installed printers, learn about page formats and print jobs, show page setup and print dialogs, modify the device mode and create print jobs.
As we can enumerate printers, we can show them in a popupmenu. User can select one and we modify the printer setup string for a Xojo printerSetup object and than use normal Xojo printing functions to print:
//nowwehavenicesetupstringdim ss asstring = ps.SetupString
'MsgBoxstr(len(ss))//parseitindevicemode,toretainsettingstheredim d as WindowsDeviceModeMBS = WindowsDeviceModeMBS.FromSetupString(ss)
if d = nilthen//orstartwithablankone
d = new WindowsDeviceModeMBS
endif//changeprinterif PopupPrinter.ListIndex >= 0thendim w as WindowsPrinterInfoMBS = PopupPrinter.RowTag(PopupPrinter.ListIndex)
d.DeviceName = w.PrinterName
MsgBox "Noprinterselected."Returnendif//enableduplex'd.Fields=BitwiseOr(d.Fields,d.DM_DUPLEX)'d.Duplex=d.DMDUP_HORIZONTAL//getbackassetupstringdim da asstring = d.SetupString
if da = ""then
ps.SetupString = da
//andprintsomethingdim g as Graphics = OpenPrinter(ps)
g.DrawString "Pageon"+d.DeviceName, 50, 50
Once you are connected correctly, you can call the others functions. In our example we simply call the LDAP.Search function passing a query. For example we can search with Scope=Subtree through all nodes and find entries which have a given name: "(givenName=*)". This finds all people with a name.
Next we walk over all the entries found to list all the attributes and show values.
At this point you can of course redirect keys like FirstName to a matching field and import contact information.
Here our example script which does query values and show them in our example database as records:
Delete All Records [No dialog]
Set Variable [$r; Value:MBS("LDAP.Connect"; LDAP Query::Server; LDAP Query::SSL; LDAP Query::Port)]
Show Custom Dialog ["LDAP error"; "Failed to connect." & ¶ & $r]
Today I want to introduce you to SetThreadNameMBS, a newer function you can use in our MBS Xojo and Real Studio Plugins (15.5pr2).
Our plugin calls the SetThreadName function already for all the preemptive threads like for CURL or SQL. In a crash report you see the thread name and you can identify what the thread does. For example we create a project in Xojo and run there two threads. We name the main thread, the first and second test thread. Now we let one thread crash with a NULL pointer easily. In the crash report we can now see which thread is doing what by seeing our names:
The thread with number 10 is created by OS X and has no name. Out threads with indexes 0, 11 and 12 have names.
This does help debugging, because we often have several things running and just one instance crashes. The thread name allows us to pass a text value to the crash report. This can be the ID of a transaction, the name of the PDF we process or the file we upload. We may have ten threads with same code run in different instances, but the thread name in the crash report may give us the clue we need to find the problem.
Should work fine on OS X, Windows and Linux. Please try it.
Recently reinstalled a virtual machine with FileMaker versions to test:
Good news is that those all work on Windows 10 and allows me to check if my plugin works.
Especially if you have a problem with an older version, I can try myself here. Although I know that over 90% of my plugin users do use FileMaker 13 or 14, so bug reports for versions before 11 are rare.
But by using special code which is not in the official FileMaker SDK, I can keep my plugin load in older versions and still use newer SDK features if available.
PS: Still waiting for first bug report for FileMaker 15...
Sometimes you may have a reason to figure our the IP for a domain name or vice versa the name for an IP. Lookup up the name for an IP often helps to identify the IP address because the hostname you get may include the domain of the provider or company.
To do a lookup, you can use the two functions DNSLookup.LookupHostByAddress or DNSLookup.LookupHostByName. First one takes the IP, second the domain name. Both start a lookup and give back a reference number. Why? Because we get back a domain name, several IPs and several alias addresses.
So you can query the name of the record you got via DNSLookup.Name, the addresses with DNSLookup.AddressCount and DNSLookup.Address, the alias names with DNSLookup.AliasCount and DNSLookup.Alias and later release the whole data set with DNSLookup.Release function. For example lookup up apple.com from my office gives three IPs: 126.96.36.199, 188.8.131.52 and 184.108.40.206. But looking up www.apple.com gives just one 220.127.116.11. The record name is e6858.dscc.akamaiedge.net so Apple actually uses Akamai here for content distribution. The IP also has aliases listed as www.apple.com, www.apple.com.edgekey.net and www.apple.com.edgekey.net.globalredir.akadns.net.
We hope you find those IP lookup functions helpful and use them someday.
Updated source code is available for Xojo Inc. to update the official plugin soon. My plugin is build with my plugin build system, so it has MBS in the name and includes libraries for Mac, Windows and Linux including ARM, so you can use it in all projects. If you find a bug related to my 64-bit port, please tell me.
The Xojo developers in Atlanta area meeting next monday:
Hello Xojo enthusiasts!
Please join us for this Xojo monthly meeting! We promise that you'll learn something new at each meeting!
Who: Everyone interested in developing in Xojo!
What: Monthly Meeting
Where: Las Palmas Mexian Restaurant, 2210 Holly Springs Pkwy, Holly Springs, GA :: 770-720-0062
When: Monday, December 14th, 2015 - 6pm to 9pm
What a huge year for Xojo and Xojo developers. At this meeting we'll look back at the news highlights of the previous year. We'll also be looking into our crystal ball to speculate on what will occur in 2016.
We've got the latest Xojo news, reviews and announcements.
Today we had the need to write a script to update or install MBS FileMaker Plugin. Often developers put plugin files in containers in a special MBS table in their solution on a server. Now if client opens database, the plugin may need to be installed or updated on the client. So we check a few cases here and made sure script runs well if plugin is not installed.
Check If Update is Needed:
# Check what plugin version we have here in the database:
Go to Layout [ “Install Plugin Update if needed” ]
Go to Record/Request/Page [ First ]
Set Variable [ $DatabaseVersion ; Value: GetAsNumber(Install Plugin Update if needed::Version Number) ]
Set Variable [ $InstalledVersion ; Value: GetAsNumber(MBS("VersionAutoUpdate")) ]
Set Variable [ $InstalledVersionText ; Value: GetAsText(MBS("Version")) ]
If [ GetAsNumber($InstalledVersion) = "?" ]
# not installed
Show Custom Dialog [ "MBS Plugin is not installed. Can we install version " & Install Plugin Update if needed::Version D…" ]
If [ Get ( LastMessageChoice ) = 1 ]
Perform Script [ “Install MBS Plugin” ]
Else If [ $InstalledVersion = $DatabaseVersion ]
# current version
Show Custom Dialog [ "Already up to date" ]
Else If [ $InstalledVersion > $DatabaseVersion ]
# newer version
Show Custom Dialog [ "Already up to date. Installed version " & $InstalledVersionText & " is newer than version " & Inst…" ]
# found update
Show Custom Dialog [ "Newer Version " & Install Plugin Update if needed::Version Display & " is available. Install now?"… ]
If [ Get ( LastMessageChoice ) = 1 ]
Perform Script [ “Install MBS Plugin” ]
# go to fields to update them
Go to Field [ Install Plugin Update if needed::MBS Installed ]
Go to Field [ Install Plugin Update if needed::MBS Installed Version ]
Go to Field [ Install Plugin Update if needed::MBS Installed Version Number ]
Commit Records/Requests [ Skip data entry validation ; No dialog ]
Skript: Install MBS Plugin
# Check Architecture
# will be ? for older 32-bit FileMaker Pro
Set Variable [ $Arch ; Value: GetAsText( Get (ApplicationArchitecture)) ]
# Check Platform
Set Variable [ $Plat ; Value: Get ( SystemPlatform ) ]
If [ $Plat = 1 ]
Install Plug-In File [ Install Plugin Update if needed::Plugin File Mac ]
Early registration for the 2016 Xojo Developer Conference is now open! XDC will take place in Houston, TX October 5-7, 2016. It features sessions on best practices, special interests and other technical topics, with content for every level of Xojo developer. Educational sessions will cover topics like Xojo iOS, Raspberry Pi, database design, user interface design, debugging techniques, writing secure apps, and much more! Want to know what XDC is like? Watch our highlights video!
Early Bird Registration
Now through March 21, 2016: $799
March 22 - August 22, 2016: $899
August 23 - Conference: $999
XDC will take place at the lovely boutique Hotel Derek in the Galleria area of Houston. It's right in the middle of two airports, giving you plenty of options (and time) to find a great flight! We have negotiated a hotel room rate of $164 a night. Rooms can be reserved here.
If you have any questions about XDC, feel free to email or PM me on the forum.
More information, including the call for speakers, will be coming after the new year.