REALbasic Plugins

What plugins and other resources are available?

HTMLrendering/URLaccess, 21 July, 2001, beta 1

Want to let you have a taste of the new URLentry and HTMLrenderer Plugins. URLentry has been build around the URLaccess library and it allows you to download files that can be rendered by HTMLrenderer. Yes, HTMLrenderer is adapted to work with "http" URLs. It is possible to save a html file to a folderItem or to a memoryBlock. The renderer handles these appropriately in OS 9.1 and OS X. Download here: HTMLrendering/URLaccess.


StringCompare Plugin, 13 April, 2001, version 1.0

It provides 2 classes. StringList is a class you can store a list of strings in and you can put them in an ascending or descending order. Even better, to append strings to the stringlist, methods are available that automatically insert the string in the list at the appropriate position while returning the strings position in the list. You can compare list of strings, perform operations like OR, AND, XOR, equivalence and difference on list of strings.

StringListMap is a class that can outline a stringlist as a map in memory. The creation of a stringlistmap depends on the presence of a stringlist. StringlistMap consists of pointers to elements in the stringlist. One method is available to retrieve strings from such a map. However, StringlistMaps can be used in plugin-methods that can render a list of strings on the screen, a listbox and other graphical "devices". This rendering is supposed to be much faster than using a stringlist and retrieving the elements of this list in the REALbasic environment for display purposes.

A macro for automatic creation of a string list map is used in the plugin code. The macro invocation is followed by a compound statement where most of the work is being done. This work also entails the drawing, rendering of the list of strings. And here the REALEntry API plays a critical role, because with this API plugin-plugin cross-talk is possible and paved the way to give the REALbasic users tools (methods taking a class and a control as arguments) that plugin developers can provide.

REALEntry API was introduced not so long ago being a valuable tool for plugin developers. In general REALEntry was taken as a very interesting mechanism to allow the binding of classes and/or controls.

Björn (Einhugur Software) and I would like to demonstrate the usefulness of such an approach and we upgrade our plugins to support the REALEntry API. The grid controls from Björn provide accessor functions that have been used in the StringCompare plugin. There are 2 global functions in this plugin, MapStringListToGridRow(list as StringList, grid as Control, row as integer, sorted as boolean) and MapStringListToGridColumn(list as StringList, grid as Control, col as integer sorted as boolean), that internally convert the stringlist to a stringlistmap, and blit the maps to a grid (listbox) as a row, respectively as a column. It can be done sorted and unsorted, and if case-sensitive-property was set in the stringlist, sorting will be case-sensitive.

StringCompare plugin also has entry-accessor functions, so potentially a plugin developer could use the C/C++ environment to access a StringList. If you download this plugin (with source) you will find a folder "StringListEntry.Export", you can use to access StringList. The folder "Gridentries.Import" are the accessors to the grids from Einhugur Software.

To appreciate the "blitting" of strings you donĂ•t need to obtain a license from Einhugur to obtain the styleGrid 2.1, you simply download the demo versions from Einhugur´s web. Also, other grids from Einhugur will have the compatibility with StringCompare Plugin. For more on this please visit Einhugur Software.

And as always, use RB Plugin Plunger.


RB Plugin Plunger, 8 June, 2001, version 2.3.1

RB Plugin Plunger is a REALbasic project. Several people have worked on it, including Björn Eiriksson, Thomas Tempelmann, James Bredijk, Stéphane Mons, and Doug Holton. We are currently updating Plugin Plunger to be more user friendly. If anyone would have ideas, please feel free to contact me. The Plunger Project comes also with 4 plugins, and a help file to set up RB Plugin Plunger. Download RB Plugin Plunger.

Binaries of RB plugin plunger can be downloaded too. PPC-classic version, 68K-classic version, and CarbonX-version .

The project utilizes the "Plugin Analyser" plugin and other plugins, including TT's FileMgr-Plugin, TT's FolderItem-Plugin and NavFolderItem plugins, RB Plugin Plunger retrieves information from the classes, controls, methods, events and eventInstances from a plugin, while additional information from the resource fork of the plugin is being retrieved as well. In its current state RB Plugin Plunger is also useful for plugin developers. They can add help files directly into the plugin resources. RB Plugin Plunger is open source and actively being improved. We'll provide an editor that delivers structured help files that can be used in various renderers.


-new Export to HTML menu choice. Automatically generates a readme for the plugin.

-can silently save while editting (changes autosaved).

-can directly edit in the editfield below the methods list, instead of popping up a new window (you can still change styles).

-pluginview editfield is erased when click from an item with help text to a list item like "methods" that normally doesn't have help text.

-Can export all help resources to a styled simpletext file (this essentially makes a ReadMe file for you).

-The "Info" item in the list is automatically selected when the plugin viewer window is shown.

-The "Info" list item is now a folder, underneath which are 3 new fields: author (name), authoremail, and authorwww. You can doubleclick the email and www lines to launch your email client or browser, or drag any of the author info rows to make a text clipping.

-3 new cicns (31500-31502) added to resources file for author, email, & www icons.

-Added a preference to turn off or on the "export help resources" prompt when you close a plugin view window. (off by default, since there is a menu option)

-Disabled plugins are stored in folder next to plugins folder, not within plugins folder. (search for "parent.child" in the IDE if you want to change this back -- remove the "parent." part).

--Search for "[DH]" for changes I made to the code.


you should use TT's FileMgr-Plugin and TT's FolderItem-Plugin that comes with Plunger project. These are compatible versions for this project; Thomas is currently updating these plugs but has not had time to upload them with sources on his web. NavFolderItem and Plugin Analyser plugins are copies of the plugins listed on this web site.


PluginAnalyser, 25 March, 2001, version 1.7.

PluginAnalyser, developed by Thomas Tempelmann, has been updated to be compatible with MacOS-68K, MacOS-PPC classic and MacOS X/PPC-carbon. The plugin is available here, and any additions, improvements should be sent to me, in stead to Thomas. Download here: Plugin Analyser. There is also a project build around Plugin Analyser and is called: RB Plugin Plunger. We are currently updating Plugin Plunger to be more user friendly. If anyone would have ideas, please feel free to contact me. The Plunger Project comes also with 4 plugins, and a help file to set up RB Plugin Plunger.


NavFolderItem, 6 June, 2001, version 1.3.

REALbasic 3.5 will have added support to Navigation services, finally, but I do not know whether all of the features of NavFolderItem will be "copied" in REALbasic 3.5. It seems RS is carrying out Operation "OverLord", but whatever the outcome, NavFolderItem will have my continuous support. I have added a global method "NavChooseObject" and class method "SetLocation" (NavDialogOptions), and a html-file as documentation, if you do not want to use RB Plugin Plunger.

REALbasic provides for a FolderItem Class that allows the calling of Navigation Dialogs. It looks nice, but ever wondered that you cannot custumize the outlook and/or behavior of such a dialog? I do, I like to see some additional information providing me the ability to understand what the application is about to do. This is especially important if you check out a novel application, and you do not want yet to read documents telling you what this application in a particular circumstance is doing.

I'd like to see banners, i.e., messages. I'd like to see whether something is exported when a NavDialog comes up. REALbasic does not provide you to modify, shape these Navigation Dialogs. Well now you can! This plugin has 4 classes. The major class is "NavFolderItem" that delivers a NavDialog window and will stash FolderItems into it's data structure. You can retrieve these as Folderitems, that have all of the characteristics of a FolderItem, including its path-name.

The 3 classes "NavDialogOptions", "NavDialogOptionFlags" and "NavTypeList" you can instantiate, populate and use to adjust "NavFolderItem".

I hope you will like these Navigation Services for PPC-classic and PPC-carbon/MacOS X. Note: this plugin is also compatible with 68K as a dummy. If you happen to make a application for 68K and PPC-classic, REALbasic will not complain that a plugin does not support the 68K environment. (I provided an example that calls REAbasic native stuff for Target68k, while using NavFolderItem for the Targets PPC and Carbon). You can download here: NavFolderItemPlugin.

Note: not every method is documented, but look at the examples........You need RB Plugin Plunger.


ObjectSnitcher, formely known as RuntimePlugin. 25 February 2001, version 1.1.

Dcon and/or DebugView is required to appreciate this plugin. These tools come with the plugin ObjectSnitcher.

This plugin "ObjectSnitcher", is based on Matthijs van Duin's Nubz weird tools plugin. Matthijs released recently the source of the plugin, likely because REALsoftware provided for the Runtime class in REALbasic 3.

Here, Matthijs' code has been used to build a plugin that allows for dumping class instances into DCON and DebugView. It looks very much like RB's runtime class properties, but the plugin does not use the runtime class, also because there are no accessor functions to the runtime class available in the plugin API.

ObjectSnitcher relies on structures that are mainly based on guesswork, carried out by Matthijs van Duin. These structures might change in later versions of REALbasic, although it seems to be unlikely.

struct REALobjectStruct {
	long		refcount;
	REALclass	classdef;
	REALobject	next;
	REALobject	prev;
	REALobject	self;
	long		unknown;
As such ObjectSnitcher is also useful with REALbasic v2.

An important addition in this plugin, is the ability to unlock Runtime Exception classes where ever and whenever you want to put it into your code. So although you have lost the reference of an Exception class, when leaving the scope, you still be able to unlock them.

This plugin release comes with the source codes, and is targeted to MacOS 68K, MacOS PPC-classic, MacOS PPC-carbon and QuickTime-WIN32-x86. For the windows platform it is required to have installed Quicktime for Windows. You need the additional QTMLheader.mcp project file to get the precompiled headers for QTML. Compile it and put it in the QT-Windows SDK folder. DownLoad QTMLheader.

Further info comes with the plugin, you can download here: ObjectSnitcher. To obtain information on the methods, properties, events, etc, RB Plugin Plunger is required.


REALEntry Plugin SDK, 31 January 2001, version 2.

The REALbasic Plugin_API provides for numerous functions that allow the development of a class or control. In some cases, however, several classes/controls are developed that require "binding". This means one class needs to use data fields from another class. Those datafields mostly contain MacOS "toolbox" types we cannot easily provide in the RB environment that then are used in other methods. In general, it is difficult to provide for those cross talks, especially when you want to talk to a plugin from another author, and the source is not available. The proposal we ( Björn Eiriksson and I, Alfred van Hoek) are about to suggest has everything to do with having accessors to existing REALbasic classes/controls, and one example was given by REALsoftware. The plugin_API was recently updated to provide accessor functions to the MemoryBlock class, but each of these functions, or entries to a datafield of MemoryBlock, makes the REALbasic Runtime Engine bigger.

A reliable way was found to provide for class and control entry function pointers that points to an array of function pointers to actual class member functions. This allowed the StringList class (in development) to report to a rudimentary listbox control, based on the MacOS Toolbox ListHandle, without extended manipulation in the RB environment. This direct communication between a class and control is not as dependent on the manner plugins are loaded by REALbasic, and moreover, does not increase the size of the REALbasic Runtime Engine. Further info comes with the SDK, you can download here: PluginREALentry


HTMLrendering 1.5, 25 April 2001

HTMLrendering is a plugin, capable to render html files. This plugin "HTMLrendering" contains the renderer control (resourceID 128) and a cIconButton control (resourceID 129). In addition a folderItemExtension is implemented.

The plugin contains separate resources for the various controls and classes, so you do not need to worry that everything will be compiled with your app, when only using 1 out of the 3 classes/controls. The cIconButton you can change the appearance of by mucking the resource cicn. The renderer also allows you to use RB's buttons, if you would prefer this.

The class FileItemFolder (regarded obsolete as of the introduction of NavFolderItem plugin) is populated with actual files (no folders), the user can choose from the NavServices dialog. This dialog box can be shuffled around the screen, generating appropriate update events to redraw RB-windows underneath, as well as other windows. The plugin(s) are PPC/CARBON compatible as of REALbasic 3.0b2 and MacOS X compatible with REALbasic 3.1. In the classic environment another minimum requirement is MacOS 9.1.

Download with source HTMLrendering

To obtain info on the methods and functions, please download RB Plugin Plunger


MongoToDCon, 3 May 2001, version 2.4.1

MongoToDebugConsole, the tool you will need to debug your REALbasic Project. It is a cross-platform REALbasic Plugin that funnels information from your project back to the C/C++ environment, where it is further processed.

Download MongoToDCon

What is it?

A REALbasic Plugin that adds debugging facilities better than ever. You do not want to use Virtual1's Project CuisinArt debugging console? Use the MongoToDebugConsole plugin. You would like to use Virtual1's facilities, Project CuisinArt, but need a remote console? Use the MongoToDebugConsole plugin. You want to quickly debug your WIN32-compatible code? Use the MongoToDebugConsole plugin. You also need to setup your computer with Dcon-DEMO (comes with MongoToDCon)) to appreciate it. For a quick look inspect with RB Plugin Plunger the 2 global methods and 2 properties of this new and refurbished plugin.

MongoToDCon is now compatible with MacOS X.


Alfred N. Van Hoek, Ph.D./Massachusetts General Hospital <>