Developer’s Guide
Table Of Contents
- Contents
- Chapter 1 Introducing FileMaker Developer 5
- Chapter 2 Customizing your database solution
- About the custom solution examples
- Using the FileMaker Developer Tool
- Binding your databases into a runtime database solution
- Displaying databases in Kiosk mode
- Renaming your databases
- Removing design access to your databases
- Customizing the About, Help, and Scriptsmenus
- Adding the FileMakerPro extension to database filenames
- Saving your settings in the Developer Tool
- Chapter 3 Preparing files for a custom solution
- About the Relational Example
- General steps for preparing your solutionfiles
- Issues to consider before creating a runtime database solution
- Opening files in Kiosk mode
- Design tips for navigating in Kiosk mode
- Creating startup scripts
- Using button image samples
- Documenting your database solution
- Design tips for cross-platform solutions
- Creating a consistent appearance
- Simulating outline and shadow text styles
- Using common character sets
- Designing text layouts for cross-platform solutions
- Using a common color palette
- Using graphics in cross-platform solutions
- Using QuickTime movies in cross-platform solutions
- Showing the status bar in Windows
- Using separate scripts for printing
- Using the Status (CurrentPlatform) function
- Creating platform-specific scripts
- Protecting your runtime database solutionfiles
- Testing before and after creating yoursolution
- Converting and upgrading solution files
- Chapter 4 Distributing FileMakerPro runtime database solutions
- Chapter 5 Creating custom layout themes
- Chapter 6 Publishing your database on the Web
- Moving forward using open web standards
- Using the FileMakerPro Web Companion
- Displaying a custom home page
- Using a custom home page with Instant Web Publishing
- Monitoring your site
- Exporting data to a static HTML page
- Testing your site without a networkconnection
- Opening password-protected databasesremotely
- Using the Web Security Database
- Chapter 7 Using FileMakerPro XML to deliver your data
- About the XML examples
- General process for custom web publishing using XML
- Generating an XML document
- Using the FMPDSORESULT grammar
- Using the FileMakerPro Extended XMLgrammars
- About UTF-8 encoded data
- Generating FileMakerPro CGI requests for an XML document
- Using style sheets with your XMLdocument
- Comparing CSS, XSLT, and JavaScript
- Looking at the XML Inventory example
- Chapter 8 Using Java and JDBC to deliver your data
- About the JDBC examples
- About JDBC
- Using the FileMaker JDBC Driver
- SQL supported by the FileMaker JDBCDriver
- FileMakerPro support for Unicodecharacters
- About the FileMaker JDBC Driver interfaces and extensions
- Example 1: Looking at the FileMakerPro Explorer application
- Example 2: Creating the JBuilder Inventoryapplication
- Example 3: Creating the Visual Cafe Inventory application
- Using the FileMaker Java classes
- Chapter 9 Custom web publishing using CDML
- About the CDML examples
- General steps for custom web publishing using CDML
- About CDML format files
- Generating FileMakerPro CGI requests using CDML
- Using the CDML Tool and templates
- New and modified CDML tags
- About the CDML Reference database
- Creating error messages
- Using an encoding parameter with a CDML replacement tag
- Planning your web site
- Chapter 10 Writing external function plug-ins
- About the plug-in examples and templates
- Installing, enabling, and configuring FileMakerPro plug-ins
- Using external functions in a calculation
- Requirements for writing an external function plug-in
- FileMakerPro messages sent to theplugin
- Debugging your plug-in
- Avoiding potential MacOS resourceconflicts
- Providing documentation for your plug-in
- Naming and registering your plug-ins
- Appendix A Feature comparison of the runtime application and FileMakerPro
- Appendix B Valid names used in CGI requests for FileMaker XML data
- Generating a –find, –findall, or –findany request
- Generating a –view request
- Generating a –new request
- Generating an –edit request
- Generating a –delete request
- Generating a –dbnames request
- Generating a –layoutnames request
- Generating a –scriptnames request
- Generating a –dbopen request
- Generating a –dbclose request
- Specifying parameters for the request
- db (Database)
- lay (Layout)
- format (Format)
- recid (Record ID)
- modid (Modification ID)
- lop (Logical operator)
- op (Comparison operator)
- max (Maximum records)
- skip (Skip records)
- sortfield (Sort field)
- sortorder (Sort order)
- script (Script)
- script.prefind (Script before Find)
- script.presort (Script before Sort)
- styletype (Style type)
- stylehref (Style href)
- password (Database password)
- field name (Name of specific field)
- Appendix C FileMaker Pro values for error codes
- Index
Writing external function plug-ins
10-11
1 kDoNotEnable should be returned if the plug-in should not be
enabled. This could be the result of a specific piece of hardware
missing or that a certain system software component was not of the
proper version number. If the plug-in is going to return this value, it
should first display some type of alert telling the user why it could
not be enabled.
1 kCurrentExtnVersion is the only other result value that should be
returned. This causes the plug-in to be enabled.
For the Full Example plug-ins, the Do_Init function is called when
the Initialization message is received. The Do_Init function first
checks the version of the API that the plug-in was compiled with to
verify if it’s compatible with the version of FileMaker Pro that has
loaded it. Then the function checks for preferences and sets them if
they exist. If no preferences currently exist, it will create them with
default values.
In Windows, these preferences are stored as registry entries. In the
Mac OS, they are stored in a file within the Preferences folder of the
System Folder. Due to the differences between the way this
information is stored on the two platforms, the Do_Init function uses
preprocessor instructions to choose the correct code at compile time.
The preprocessor flags controlling the selection process can be found
in the FMFlags.h file.
If the preferences are set properly and the API version is okay, the
Do_Init function in the Full Example plug-in will return
kCurrentExtnVersion—otherwise, it will return an error and the plug-
in will not be enabled by FileMaker Pro.
The Shutdown message
The Shutdown message kFMXT_Shutdown, is sent to the plug-in
whenever it is disabled in FileMaker Pro. This may or may not
correspond with the quitting of the FileMaker Pro application,
depending on whether the plug-in is disabled in the Application
Preferences dialog box.
The Full Example plug-in does not allocate any persistent memory
on the heap, and therefore does not do anything when it receives the
Shutdown message. You should implement a clean-up function in
your plug-in, however, to deallocate anything you have on the heap
and exit from any OS services you may be using. Remember that it’s
possible for a plug-in to be enabled and disabled multiple times
during a session so it’s important that your plug-in will clean up
memory.
The Idle message
The Idle message, kFMXT_Idle, is only sent to the plug-in during idle
time if the idle feature flag was set to “
Y” in the feature string and the
plug-in is currently enabled.
There are two times when this message is called by the
FileMaker Pro application:
1 If the unsafeCalls parameter is non-zero, then the routine has been
called at the same time that the FileMaker Pro application’s low-
level networking code has been called.
Do not perform any lengthy, user interface, or event processing when
the
unsafeCalls parameter is non-zero.
1 The other time when the Idle message will be sent is when
FileMaker Pro detects free time and does its own internal idle
handling.
The External Function message
The External Function message, kFMXT_External, is sent to the plug-
in when FileMaker Pro is processing a calculation that contains one
of the plug-in’s external functions. This is where the majority of the
action takes place.