[−][src]Crate fm_plugin
A wrapper around the FileMaker plug-in SDK.
Replicates much of the functionality found in the C++ library provided by FileMaker, which is mostly wrapping the C ffi, as well as some convenience functions.
Has only been tested with FileMaker 18 and 19 (windows, macos, and linux); your mileage may vary with older versions.
Quick Start
You'll want to make your project a library with a crate-type of cdylib
.
[lib]
path = "src/lib.rs"
crate-type = ["cdylib"]
Each custom function/script step must be configured in a FileMakerFunction
implementation.
pub struct MyFunction; impl FileMakerFunction for MyFunction { fn function(id: i16, env: &ExprEnv, args: &DataVect, result: &mut Data) -> FMError { //log some info to the file set in config.toml log("some troubleshooting info"); FMError::NoError } }
Next you'll need to implement Plugin
for your plugin's struct, defining all the information about the plug-in, as well as registering all the functions.
use fm_plugin::prelude::*; struct MyPlugin; impl Plugin for MyPlugin { fn id() -> &'static [u8; 4] { &b"MyPl" } fn name() -> &'static str { "MY PLUGIN" } fn description() -> &'static str { "Does all sorts of great things." } fn url() -> &'static str { "http://myplugin.com" } fn register_functions() -> Vec<Registration> { vec![Registration::Function { id: 100, name: "MyPlugin_MyFunction", definition: "MyPlugin_MyFunction( arg1 ; arg2 )", description: "Does some really great stuff.", min_args: 2, max_args: 2, display_in_dialogs: true, compatibility_flags: Compatibility::Future as u32, min_version: ExternVersion::V160, function_ptr: Some(MyFunction::extern_func), } ] } }
Lastly you'll need to register the plug-in.
register_plugin!(MyPlugin);
Re-exports
pub use binary_data::*; |
pub use calc_engine::*; |
pub use data::*; |
pub use datetime::*; |
pub use external::*; |
pub use fixed_point::*; |
pub use text::*; |
pub use text_style::*; |
pub use types::*; |
Modules
binary_data | |
calc_engine | |
client | |
config | Handles the force quitting of FileMaker before building the plug-in. This serves two purposes: |
data | |
datetime | |
external | |
ffi | Contains all the C ffi wrappers. |
fixed_point | |
helpers | Various helper functions, including a logging function. |
plugin | |
post_build | Controls bundling of the plug-in after build. Utilizes the |
prelude | Re-exports everything necessary for the register_plugin macro. |
text | |
text_style | |
types |
Macros
register_plugin | Sets up the entry point for every FileMaker call into the plug-in. The function then dispatches the calls to the various trait functions you can implement.
Impl |
Enums
Registration | Register |
Traits
FileMakerFunction | |
Plugin | Implement this trait for your plugin struct. The different functions are used to give FileMaker information about the plugin. You also need to register all your functions/script steps in the trait implementation. |
PluginInternal |
Functions
kill_filemaker | Force quits FileMaker using the path provided in |
log | Appends to log file specified in |
write_to_u16_buff⚠ | Safety |