top of page

Proxy Variables


In this article:


Proxy variables are a core feature in EventIDE, acting as an interface between your user code and the properties of EventIDE objects — including Experiments, Events, and Elements (E-objects). They enable powerful and flexible control over your experiment's behavior during runtime.


What Is a Proxy Variable?

A proxy variable is a reference label that links directly to a property of an EventIDE object. Once created:

  • It behaves like a global variable in all code snippets.

  • It can be monitored and modified during runtime using the Status Screen, Debug Window, or Proxy Panel.

  • It always has the same data type as the linked property.

  • Only one proxy variable can be assigned to each property.

For example, to change the color of a Text Element during the experiment:

FontColor = "Red";

This line will immediately update the color via the proxy variable linked to the Font Color property.

Types of Proxy Variables

EventIDE supports four kinds of proxy variables: single proxy variable, array proxy variable, hub proxy variable, and user proxy variable.

Types of proxy variables.
Types of proxy variables.

Single Proxy Variable

  • Links a single object’s property to a proxy variable.

  • Most common and straightforward type.

  • One-to-one relationship.


Array Proxy Variable vs. Hub Proxy Variable

Both Array and Hub Proxy Variables let you control the same property across multiple objects of the same type. The difference lies in how they manage and apply this control.


Array Proxy Variable

  • Treats the linked properties like elements of an array, providing indexed access to each object’s property.

  • Best suited for operations that act on objects individually but in a structured sequence (e.g., positioning multiple targets at specific coordinates).

Example:

TargetPositions[0] = new clPoint(100, 200);

Hub Proxy Variable

  • Connects the linked properties to one shared proxy, keeping them synchronized at all times, both at runtime and design-time.

  • Ideal for group-level operations, where all objects should behave identically (e.g., showing or hiding several elements at once).

Example:

GroupVisibility = false;
In short:
  • Use Array Proxies when you need indexed, separate control over a collection of properties.

  • Use Hub Proxies when you need uniform, synchronized control over multiple properties.


User Proxy Variable

User proxy variable is a custom global variable defined in the Header snippet and is not linked to any E-object by default. Once created, it appears in the Proxy Panel, where its value can be entered through the GUI. During runtime, the variable can also be monitored and edited, which makes it especially useful for parameters such as participant names.


Example:

string ParticipantName = "Default";

After compiling the header, this variable becomes a proxy accessible and editable before running the experiment.

Default Proxy Variables

EventIDE provides some default proxy variables in every experiment:

Name

Purpose

MouseRadar

Tracks mouse position

Report

Interfaces with the internal data collection mechanism

LibraryImageSource

Used in XAML scripts to access other XAML items in Material Library

ScreenClone

Captures a live snapshot of the presentation screen to display on status screen

These default proxies cannot be deleted.

Creating Proxy Variables

Single Proxy

  1. Select an E-object.

  2. In the Property Panel, hover over a property.

  3. If adding proxy variable is supported, a “+” button appears beside the property.

  4. Click it to define the name and category.

Creating single proxy variable.
Creating single proxy variable.

Array or Hub Proxy

  1. Select multiple objects of the same type.

  2. In the Property Panel, click the [..] button next to the target property.

  3. Choose between array or hub, then assign a name and category.

Tip: to select multiple elements across different events use pin button at the top of the Property Panel.

Creating array or hub proxy variable.
Creating array or hub proxy variable.

User Proxy

  1. Open the Header Snippet.

  2. Define your global variables.

  3. Click the “Check” button to compile.

  4. These variables will now appear in the Proxy Panel and support runtime editing.


Managing Proxy Variables

Use the Proxy Panel to:

  • Rename or remove proxies (right-click).

  • Sort and group by categories.

  • Reorder objects in array or hub proxies.

  • Drag & drop new objects into proxies (same type).

  • Replace linked objects in a single proxy.

Using Proxy Variables in Code Snippets

In snippets, proxy variables are used like global variables.

if (ResponseTime > 1000) {
    FeedbackText = "Too slow!";
}

Important:

Proxy variables behave as virtual copies within code snippets. This means:

  • The linked property is not updated immediately.

  • The change takes effect after the snippet finishes executing.

  • Only the last assigned value in the snippet is applied.




bottom of page