All Tutorials / DJ Sures / How To Make An EZ-Builder Plugin

How To Make An EZ-Builder Plugin

Custom EZ-Script Function

The EZ-Script engine has an event that will execute if the function specified by the user does not exist in the native library. This means that if a user's script calls...

Code:


SetColor(20, 100, 20)



The ExpressionEvaluation.FunctionEval.AdditionalFunctionEvent event is raised. Your plugin may attach to this event and process functions for the script.

Here is an example plugin that creates a user defined function called SetColor(): http://www.ez-robot.com/EZ-Builder/Plugins/view/162

Code:


using System;
using System.Drawing;
using System.Windows.Forms;

namespace User_Defined_Function_Example {

public partial class FormMaster : EZ_Builder.UCForms.FormPluginMaster {

public FormMaster() {

InitializeComponent();
}

private void FormMaster_Load(object sender, EventArgs e) {

// Intercept all unknown functions called from any ez-script globally.
// If a function is called that doesn't exist in the ez-script library, this event will execute
ExpressionEvaluation.FunctionEval.AdditionalFunctionEvent += FunctionEval_AdditionalFunctionEvent;
}

private void FormMaster_FormClosing(object sender, FormClosingEventArgs e) {

// Disconnect from the function event
ExpressionEvaluation.FunctionEval.AdditionalFunctionEvent -= FunctionEval_AdditionalFunctionEvent;
}

///
/// This is executed when a function is specified in any ez-scripting that isn't a native function.
/// You can check to see if the function that was called is your function.
/// If it is, do something and return something.
/// If you don't return something, a default value of TRUE is returned.
/// If you throw an exception, the ez-script control will receive the exception and present the error to the user.
///
private void FunctionEval_AdditionalFunctionEvent(object sender, ExpressionEvaluation.AdditionalFunctionEventArgs e) {

// Check if the function is our function (SetColor)
if (!e.Name.Equals("setcolor", StringComparison.InvariantCultureIgnoreCase))
return;

// Check if the correct number of parameters were passed to this function
if (e.Parameters.Length != 3)
throw new Exception("Expects 3 parameters. Usage: SetColor(red [0-255], green [0-255], blue [0-255]). Example: SetColor(20, 200,100)");

// Convert the parameters to datatypes
byte red = Convert.ToByte(e.Parameters[0]);
byte green = Convert.ToByte(e.Parameters[1]);
byte blue = Convert.ToByte(e.Parameters[2]);

// Do something
EZ_Builder.Invokers.SetBackColor(label1, Color.FromArgb(red, green, blue));

// Return something. Good idea to return TRUE if your function isn't meant to return anything
e.ReturnValue = true;
}
}
}