New in the ninth prerelease of the 10.4 plugins:
- Fixed crash on Linux and Windows related to picture access.
- Fixed crash related to new picture code in NSImageMBS constructor.
- FileListMBS sort methods no longer crash if you have no files.
In recent plugin prereleases we added functions like this:
CallMethodMBS(target as object, name as string, value... as variant) as boolean
CallMethodOnMainThreadMBS(target as object, name as string, value... as variant) as boolean
CallMethodOnThreadMBS(BackgroundThread as BackgroundThreadMBS, target as object, name as string, value... as variant) as boolean
They are very similar. Currently they can take up to three variants as parameters, but that number can be increased if you need. The number of parameters you pass must of course match the declaration of the method you want to call.
Now you may ask: What do this methods do and why should I use them?
Well, first they call a method for you. Something that you can do yourself. Let's say you have a method like this:
sub test(someParameter as variant)
Now you can call in your code this method like this: window1.test("Hello World"). But you can also use our CallMethodMBS function can call it this way: CallMethodMBS(window1, "test", "Hello World"). As you see you need to pass an object for the function to be searched on. As you pass the function name as a string, you can make it dynamically. From time to time a feature like this is requested on the mailing lists and forums, so here you have it. CallMethodMBS returns a boolean whether the call worked. It fails of course if the target object is nil or has no such method.
Next you can use CallMethodOnMainThreadMBS to call this method. While this function returns directly to you, the actual function call will happen later on the main thread. Normally within a few milliseconds, but that depends on how busy your application is. You need a function like this if you do some work in a background thread and you need to perform code on the main thread. There is code doing GUI functions which must be called on the main thread, because it will crash otherwise. Especially with the new Cocoa target we will see this need. That it works most cases on Carbon/Win32 code has its reason in the fact that the main thread is mostly idle at that time.
The third set of functions called CallMethodOnThreadMBS will create a new thread for you and call your method there. Is makes multi threading in REAL Studio much easier than before. So instead of calling window1.test(somedata), you can now call CallMethodOnThreadMBS(new BackgroundThreadMBS, window1, "Test", somedata). This will spin off a new thread and do the execution there, so your main thread has time for doing GUI actions. Your other code will run after this line just fine.
We need you to pass a new BackgroundThreadMBS object as the plugin can't create one on itself. Within some limitations you could build functions like this yourself, but our plugin gives you a convenience way to improve your times. Email us if you have more ideas for functions like this.
New in the ninth prerelease of the 10.4 plugins:
- Updated DynaPDF to version 126.96.36.1994.
- ScaleMBS works for me, but crashes for one customer. Help on reproducing is very welcome.
- Replaced REALBuildPictureFromGWorld from the plugin SDK with my own replacement for Cocoa so all plugin functions using it, will now work on Cocoa. for example: StringtoPictureByOSTypeMBS and StringtoPictureMBS.
Today REAL Software released a new version of REAL Studio. We worked hard on getting plugins ready, but the Cocoa target and the console graphics gave us a lot of work. Most is ready, we hope, but not everything.
We already have a few bug reports REAL Software said they will fix in a 3.1 update. For example feedback ID 12772 where a project with the line "Backdrop = LogoMBS(500)" in a window.open event in Cocoa will not show the picture. Although the picture is there and you can see it in the debugger or if you display it in a canvas.backdrop.
Please email us about any problem you find related to our plugins so we can fix it.
New in the eighth prerelease of the 10.4 plugins:
- Removed Base64MBS.close.
- Updated DynaPDF to version 188.8.131.523.
- Added WindowsSystemTrayMBS.InstallEvent.
- Much more classes/modules have been modified to work on console applications.
- Added CallMethodOnThreadMBS, CallMethodOnMainThreadMBS and CallMethodMBS functions.
- Added BackgroundThreadMBS class.
- Changed MutexMBS.Tag to Variant.
- Fixed DRFileMBS.symLinkPointingTo function.
- Added ThreadMBS.StackSize property.
- In SQLDatabaseMBS the database error is now better cleared after an operation was successful.
- Changed picture handling code to work better with Cocoa and Console targets in REAL Studio 2010r3.
- Updated PictureEditor24MBS, PictureEditor32MBS, PictureReaderMBS and PictureWriterMBS classes.
- Added PictureEditor32ConsoleMBS, PictureReaderConsoleMBS and PictureWriterConsoleMBS classes.
- Added new NotificationObserverMBS class.
- Added new NotificationReceiverMBS interface.
- Added new NotificationMBS class.
- Renamed NotificationMBS to MacNotificationMBS.
A few changes are coming to plugin developers with REAL Studio 2010r3. We make progress on this and also REAL Software fixed a few of the bugs we found in the latest final candidates. So we are confident, we can have our 10.4 plugins working well with the new REAL Studio release.
Of course our version supported table
will soon be updated to show plugin version 10.4 as minimum for REAL Studio 2010r3. This does not mean that older plugins will stop working if you upgrade REAL Studio, but we recommend keeping the plugins up to date.
Currently we are busy like crazy. REAL Studio 2010r3 is close to release and will bring a beta of the new Cocoa target. I do expect that we'll get a ton of support requests because something is not working. And I do hope that we can simply point most people to download the latest plugin beta version.
So please be patient. Especially if REAL Studio 2010r3 may have some bug or non implemented functionality which we need for our plugins and you'll have to wait for 2010r4.
Some things work already, but some not, so we hope the final release will fix the problems.
The Atlanta REALbasic Users Group will be meeting tonight, Monday, July 19th. For this meeting we'll be discussing popular plugins, how to best implement them, strengths and weaknesses.
In addition, we'll be talking all of the latest news including news that pertains to us in Atlanta!
When: 6pm to 9pm
Where: Ippolitos Restaurant, Sandy Springs
If you live in the Atlanta area, we'd love to meet you and talk all things REAL Studio!
We are happy about the birth of our son Michael.
New in the seventh prerelease of the 10.4 plugins:
- Added NSTextFieldMBS.bezelStyle property and constants.
- Added SetAnnotOpenState, SetAnnotIcon, SetAnnotHighlightMode, SetAnnotFlagsEx, SetAnnotColor, SetAnnotBorderWidth, SetAnnotBorderStyle, RenameSpotColor, AddRenderingIntentEx to DynaPDFMBS.
- Updated DynaPDF to version 184.108.40.2062.
- Added a lot of new methods for DiscRecording plugin affecting the following classes: DRTrackMBS, DRSetupPanelMBS, DRFSObjectMBS, DRFileMBS, DREraseProgressPanelMBS, DREraseMBS, DRDeviceMBS, DRBurnSetupPanelMBS, DRBurnProgressPanelMBS and DRBurnMBS.
- Renamed initWithLinkType to linkWithLinkType in DRFileMBS class.
- Added more write methods to DynaPDF so you can pass arrays of values.
- Unregistered plugin dialogs now show version number and process ID.
- Fixed FontActivateMBS and FontDeactivateMBS on Windows to work again. Also console safe now.
- Made changes to the common picture creating code for better support of future REAL Studio versions.
- Most EyeOneMBS methods are shared methods now.
If you have a couple of license for our plugin parts like Util, Compression, Win, etc. and you like to get a complete license, you can email us and we give you your discounted upgrade price.
That's a cool move as this gives REAL Software a lot of real world bug reports for the new Cocoa target. And plugin users can test our plugins with Cocoa, too.
New in the sixth prerelease of the 10.4 plugins:
- Added ProcessMBS.CurrentProcessID.
- Added GifExtensionMBS.FirstData and GIFMBS.FirstBlock for easier debugging.
- Added GifPictureMBS.CopyData, GifBlockMBS.Clone, GifDataMBS.Clone, GifExtensionMBS.Clone, GIFMBS.Clone, GifPaletteMBS.Clone, GifPictureMBS.Clone, GifPictureMBS.HasPalette and GifScreenMBS.Clone.
- Added TraceFile and TraceHandle to the DynaPDFMBS class.
- Added DynapdfMBS.PageCoords property.
- Added QTPrerollMBS class.
Seems like today is a day where my email server is on the blacklist of some other email servers. In that case I send again using another email server.
So if you are waiting for an answer from me, it may be that your email or my email is in the filters and was rejected. In that case you can contact us with our feedback forms.
Create a new REAL Studio project and add this test method to the window:
Sub Test(x as shell)
dim c as BevelButton
c.Enabled = true
Now build your application.
You will see that the shell plugin code is added to the binary. But the AppearancePack is not included.
So REAL Studio detects, that this method is not needed and marks Bevelbutton for not to be included.
But it forgets to mark shell class here to be not included.
So the application size is bigger than needed.
Please add yourself to Feedback 12735
Normally we all put username and password in the URL for a download. It's simple and convenient. Like this:
But what to do if the username or the password contains characters like "@" or ":"?
this URL will fail to parse as CURL expects the server name after the first @.
The solution is to use the OptionUsername and OptionPassword properties for the name and password:
c.OptionUsername = "christian@mbs"
c.OptionPassword = "123456"
c.OptionURL = "ftp://ftp.someserver.com/test/file.txt"
I hope this helps you.
Today a user asked: Where can I get this URL from the file I downloaded?
The answer is to use the MacQuarantinePropertiesMBS
class. There you have properties to get he origin URL, normally the website. Also the data URL where the file is located, the time stamp and which app did make the download. Also there is a property to tell you what type of download it is like a web download, an email, an calendar event or an instant message attachment.
New in the fifth prerelease of the 10.4 plugins:
- Updated DynaPDF to version 220.127.116.111.
- Added MacUSBDeviceMBS class.
- Changed linking of ChartDirector plugin to work better in the future with Windows 64 bit.
- Added more folder functions: (Create)AppleshareAutomountServerAliasesFolderMBS, (Create)AudioDigidesignFolderMBS, (Create)AudioPresetsFolderMBS, (Create)AudioVSTFolderMBS, (Create)AutomatorWorkflowsFolderMBS, (Create)AutosaveInformationFolderMBS, (Create)BootTimeStartupItemsFolderMBS, (Create)ClassicPreferencesFolderMBS, (Create)ColorPickersFolderMBS, (Create)CompositionsFolderMBS, (Create)DownloadsFolderMBS, (Create)FindByContentIndexesFolderMBS, (Create)FontCollectionsFolderMBS, (Create)iMovieFolderMBS, (Create)iMoviePlugInsFolderMBS, (Create)iMovieSoundEffectsFolderMBS, (Create)IndexFilesFolderMBS, (Create)InputManagersFolderMBS, (Create)InputMethodsFolderMBS, (Create)KeyboardLayoutsFolderMBS, (Create)LibraryAssistantsFolderMBS, (Create)MagicTemporaryItemsFolderMBS, (Create)ManagedItemsFolderMBS, (Create)QuickLookFolderMBS, (Create)SpotlightImportersFolderMBS, (Create)SpotlightMetadataCacheFolderMBS, (Create)SpotlightSavedSearchesFolderMBS, (Create)TemporaryItemsInCacheDataFolderMBS and (Create)TemporaryItemsInUserDomainFolderMBS.
A quick note to those who looked for this: Next plugins will have a MacUSBDeviceMBS class to enumerate all USB devices on Mac.
For Windows, I suggest you check the WindowsDeviceMBS class which enumerates all devices on a Windows machine. Getting the vendor and product IDs is a little bit tricky there as you grab it from the device path, but certainly doable.
Please check them, add a comment or put them on your favorites list. Every vote counts
: CDbl/Val fail when encountering BOM character in UTF8 files
: add a runtimeexception.ClassName property
: OutOfBoundsException exceptions should have details
: Add function to test for identifier existants
: Feedback should have recent changes list on the library part of the bar on the left.
With the 10.4pr4 release of the plugins, we crossed the 30,000 mark on the feature count. So now we have 30,267 documented features in 1378 classes, 9 controls, 23 modules and 908 global functions. Also our plugin collection features 1190 example projects as well as 4215 examples inside the reference.
New in the forth prerelease of the 10.4 plugins:
- Improved resolution handling in DisplayMBS class and ResolutionMBS class on Windows.
- The PDFAnnotationMBS constructor is now private. This is to make sure you don't create instances from this class. You should only create instances of the subclasses.
- Fixed PDFActionGoToMBS constructor.
- Fixed bug in PDFDestination constructor.
- Added more methods and constants to QTMetaDataMBS class.
- Added WindowsDiscInfoMBS class.
- Added WindowsDeviceMBS class.
- Updated DynaPDF to version 18.104.22.1680.
- Added ComplexSingleMBS and ComplexDoubleMBS classes for complex numbers.
Update: The WindowsDeviceMBS class is missing in this upload, so I uploaded a new Win Plugin part.
Go and get your copy. Check the new layout, which is better for reading on the iPad.
Don't have a subscription?
Well, we raffle 3 six months subscriptions off today.
If you want one, send us an email, a text message, post a comment or use the feedback form to inform us with your email address. We will select three people randomly on tomorrow morning.
Update: A little bit late, but we got our 3 winners. Congratulations and thanks to everyone who emailed or commented.
What to do on a hot summer day? We have here 36°C (97 F) here today.
My suggestion is to take your wife or girl friend and drive to the next air conditioned
shopping mall. Buy the next birthday presents you need, maybe a little gift for a friend, enjoy some gelato and just look around
We drove today to the Löhr Center in Koblenz (140 shops).
And now enjoy the soccer game: Argentina against Germany
Today I updated our film scripting application Cameraman. The new version 2.1.4 fixed a few bugs.
My website with downloads:
And the official website is in German currently, but the application is German and English:
Over a month ago I had the idea to try clustrmaps.com and make the visitors of the blog visible. So here is the current map:
Please not that this does only count people browsing to the blog with a browser and not all the RSS readers or search machines.
I have been to two REALworld events in Austin Texas. Beside the conference we spend a good time there visiting a lot of nice places:
The OMNI Hotel we stayed had a big inner courtyard where dinners for big groups like ours were served.
Looking outside there is the Texas capitol where we walked in. I was amazed on how much we were allowed to see. Walking on several levels we looked in both the Texas Senate Chamber and the Texas House of Representatives Chamber.
This is the catholic bishop church just two blocks away from the hotel:
One evening we drove to a nearby rodeo, cowboy, car show event.
We also drove to George Town, north of Austin
There was a nice dripstone cave:
Driving to the west of austin through the country side we found a big nice lake:
South of Texas we visited an old historical city from the wild west:
And this is near Gruene the oldest church of Texas. The grave yard nearby has a lot of graves with German names.
And finally on the way back to Austin we came to a big shopping outlet:
See you on the next REALbasic event!
New in the third prerelease of the 10.4 plugins:
- Added PNGOptimizerMBS.Panic event.
- Added GetPropertyCode and SetPropertyCode to QTMetaDataItemMBS class.
- Added functions for Windows: WindowsGetProcessIntegrityLevelMBS, WindowsIsApplicationRunAsAdminMBS, WindowsIsProcessElevatedMBS and WindowsIsUserInAdminGroupMBS.
- Removed a couple accessors for 32 bit and 64 bit integers from the memoryblock as you can do the same since 2006 with built-in REAL Studio methods.
- Updated GraphicsMagick to version 1.3.12 on Mac and Linux.
- Added GetPropertyCode and SetPropertyCode to QTMetaDataItemMBS class.
- Updated lintiff to version 3.9.4.
- Updated OptiPNG to version 0.6.4.
- Updated libpng to version 1.4.3.
- PDFDocumentMBS.outlineRoot is now setable.
- Changed WinHIDMBS class. Now returns more devices even if you can't access them, but this way we see all devices.
- Deprecated LoadAPI and LoadDLL in PHPMBS class.
- Deprecated LoadFrameworkFile, LoadFramework and LoadDLL in EyeOneMBS class.
- Deprecated LoadAPIframework, LoadAPIdll and LoadAPIlibrary in GhostScriptMBS class.
- Added CDBaseChartMBS.LoadLibrary.
- Added CURLMBS.LoadLibrary.
- Added EyeOneMBS.LoadLibrary.
- Added GhostScriptMBS.LoadLibrary.
- Added Phidgets.LoadPhidgetLibraryMBS.
- Added PHPMBS.LoadLibrary.
- Changed the library loading code in several plugin parts to work with folderitems and strings for passing the path.
- Updated HasNoTitleBarMBS, HasCloseBoxMBS, HasCollapseBoxMBS, IsResizableMBS and IsMetalWindowMBS on window class to work on Cocoa targets.
- Added PatchedRuntimeObjectLocking, PatchedRuntimeStackChecking, PatchedRuntimeStringLocking, RestoreRuntimeStackChecking to ThreadMBS class.
- Added new LookupHostbyNameMBS method which takes a AddressType parameter.
- Added ParseIPv6, ParseIPv4 and FormatIP shared methods to DNSLookupMBS class.
- Added constants AddressTypeIPv4 and AddressTypeIPv6 to DNSLookupMBS class.
- ScreenshotMBS, ScreenshotDisplayMBS and ScreenshotRectMBS updated to support multiple displays on Windows.
- Added CIFilterMBS.Constructor to take a handle.
- Added CIFilterMBS.FilterWithHandle.
Those changes on LoadLibrary are to unify code. We now can load all libraries using folderitems or string pathes. I hope it works fine for you.
10.4pr3 later today will add a couple of Windows related functions:
WindowsIsApplicationRunAsAdminMBS as boolean
WindowsIsUserInAdminGroupMBS as boolean
WindowsIsProcessElevatedMBS as boolean
WindowsGetProcessIntegrityLevelMBS as integer
To see what which function returns on what Windows version, I made a couple of screenshots and composed the picture on the right.
It's July now and within the next two weeks we expect our first baby, a son. Everything is arranged and the pregnancy went very well. Mum, dad and baby are all healthy.
So if the baby comes, we'll close the company for a day or two. Emails, orders and phone calls will have to wait. Please excuse.
PS: If you want to send best wishes, how about sending them as a nice postcard? That way we could collect them and show them our son in a few years.