Short Description

Software Development Kit for the 'Protocols' programming environment

Documentation

Acknowledgements

Contributors to this project include:

  • Joel Rogers (tweaking ROI erosion and dilation)
  • All of the happy (and patient) alpha/beta/gamma testers out there!

Protocols - the missing link between developers and users

Developing a plug-in (for Icy or other software) generally involves the following steps:

  1. Design a graphical interface to receive input data and/or user interaction,
  2. Write the main code
  3. Generate result(s) that are displayed, saved, or made available to other plug-ins for further use

While many developers (like me) enjoy taking care of all three steps, most of them (also including me) don't necessarily have the time to focus on steps 1 and 3 all the time, and rather need to jump to step 2 as fast as possible (raise your hand if you never had a deadline to meet...). Users, on the other hand, mostly focus on steps 1 and 3. Yes, they do care about user interaction (and will run away if your interface looks complicated). They also know (or figure out soon enough) that solving a given problem involves more than one plug-in.

To summarize, plug-ins must be user-friendly, do some good work, communicate with one another, and all of that should be simple and intuitive. With these concepts in mind, We designed 'Protocols', a user-friendly graphical interface that simplifies the life of both users and developers:

  • Users get to create entire image processing protocols without any programming knowledge. Plug-ins are represented as graphical blocks with inputs and outputs that can be linked together, and the engine automatically handle the ordering, execution and data communication between the plug-ins.
  • Developers get a very simple API to write (or adapt existing plug-ins into) blocks, such that you never have to worry about steps 1 and 3 anymore.

This page contains developer-oriented information on how to create Blocks for use in the Protocols environment. If you are a user and just needs general information on how to use the Protocols graphical interface, please check the Protocols page.

 

The Block interface

Similarly to the EzPlug library, Blocks aims at minimizing the coding effort by taking care of all the tedious aspects such as writing the graphical user interface and handling input/output synchronization. To write a block from scratch or to convert an existing plug-in into a block, the main class should extend Plugin (as usual) and implement the Block interface:

package plugins.adufour.blocks.lang.Block;

public interface Block extends Runnable
{
   void declareInput(VarList inputMap);
   void declareOutput(VarList outputMap);
}

These two methods are quite explicit: the first one lets the developer add all block inputs to the specified input map, while the second one does likewise for outputs. Also, since this interface extends Runnable, your block should also contain a method called run()containing the main code.
Note to EzPlug users: since EzPlug already implements the Runnable interface, the run()method need not be implemented anymore. Hence, the main computation code may remain in your execute()method.

 

Handling and encapsulating objects with Var

Block inputs and outputs are encapsulated using Var objects, provided by EzPlug in the plugins.adufour.vars package. Var objects simplify the encapsulation of objects by adding various features such as value-change listeners and a referencing mechanism (a variable may be asked to transparently 'point to' another variable). In a nutshell, here is a short example of how Var objects work:

Integer i = 2;
VarInteger varInt = new VarInteger("my number", 0); // the second argument is the default value
VarInteger varInt2 = new VarInteger("some other number", 0);
VarListener listener = new VarListener
{
   public void valueChanged(Var source, Integer oldValue, Integer newValue)
   {
      System.out.println("the value of " + source.getName() + " changed from " + oldValue + " to " + newValue);
   }
   public void referenceChanged(Var source, Var<? extends Integer> oldReference, Var<? extends Integer> newReference)
   {
      System.out.println("the reference of " + source.getName() + " changed from " + oldReference + " to " + newReference);
   }
}
varInt.addListener(listener);
varInt2.addListener(listener);
varInt2.setReference(varInt); //will display "the reference of my other number changed from null to my number"
varInt.setValue(i); // will display "the value of my number changed from 0 to 2"
System.out.println(varInt2.getValue()); // will display "2"

 

Declaring block inputs

We will now focus on declaring inputs (declaration of outputs is analogous). Each block input should be added to the 'VarList' parameter of the 'declareInput' method, using any of the following methods:

  • void add(Var<?> variable)
  • void add(String id, Var<?> variable)

It is highly recommended to use the second version, which explicitely asks for a unique variable identifier. This unique identifier is used to save parameter values inside the protocol, and must be unique throughout the map (an exception will be thrown if a similar id already exists). This id must not be changed to ensure that parameter values will be correctly reloaded from disk. This being said, you are free to change the name of the variable itself at anytime (this name is the one displayed on the graphical interface). In case you opt for the first version, the variable name is considered as the id, and you therefore cannot change it afterwards.

Note to EzPlug users: since your plugin extends EzPlug, most of your parameters are probably EzVarXXX objects. If this is the case, no need to create new Var objects to represent input variables. Each EzVar contains a variable field of type Var. Hence, within the declareInput method, all you have to do is to add one line per object in the form inputMap.add("some unique ID", myEzVar.variable).

Important note: in block mode, the initialize() method is no longer called. Therefore, make sure your EzVar objects are initialized upon declaration of the instance field and not in the initialize() method. It is not recommended to simply call the initialize() method within the declareInput method, as the graphical user interface system works a little bit differently in standalone and block mode, and this may result in performance decrease and memory leaks.

 

 

Declaring block outputs

As you may guess, declaring block outputs is analogous to input case, nothing fancy here. Keep in mind however that output Var objects should be filled with the output of the algorithm, however this output should not be displayed directly to the user (or stored in some sort), as this is the goal of other blocks dedicated to these tasks.
Note to EzPlug users: it is presumable that your plug-in does nothing much about the output data (it is either sent to screen for display, to disk, to the swimming pool etc.). Therefore, the output should be (as usual) stored in Var instance fields, however one should ensure that nothing is displayed / stored when the plug-in is in block mode. To do so, use the EzPlug.isHeadless(), which will return false if the EzPlug runs standalone, or true if it is run headless, i.e., called from within another plugin or as a block.

Example:

// old code
public void execute()
{
  Sequence sout; // assume this contains a result
  addSequence(sout); // display the result on screen
}
// new code
VarSequence outputSequence = new VarSequence("output sequence", null);
public void execute()
{
  Sequence sout; // assume this contains a result
  outputSequence.setValue(outputSequence); // store the result
  if (!EzPlug.isHeadless)
  {
    addSequence(sout);
}
}

Note that when submitting your plugin online, you will have to list both Blocks and EzPlug as dependencies, even though your plugin's main does not extend 'EzPlug'.

 

 

Handling user interruption

It may happen quite often that you (or any user) wish to interrupt a running protocol (wrong parameters, taking too long to do the job, etc.). Interrupting the execution is possible at two levels: at the protocol level, and at the block level:

  • Interrupting a protocol: this is the easiest scenario (nothing to do on the developer side). When a user clicks on the "stop" button (on top of the Protocols interface), Protocols waits for the currently running block to finish its job and will stop there. This is not necessarily the most convenient use-case, since the number one reason to stop a process is because a block itself is taking forever to finish the job.
  • Interrupting a block: this is where you kick in. The entire workflow (i.e. your block) runs in a specific thread. When the previous "Stop" button is clicked, Protocols actually doesn't just wait for the current Block to end its process, it also interrupts your main block thread by calling Thread.interrupt() on it. Note that this will not automatically kill your process (remember that proper Java practice dictates that threads shouldn't be killed "brutally", as this could leave the memory in a weird state). Instead, it changes the thread state to "interrupted", and you can easily check this state using Thread.currentThread.isInterrupted() in your main code. All you have to do is check the value of this method every now and then throughout your process (at the beginning/end of a recursion for instance) and exit your process smoothly before exiting (i.e. closing file streams & network connections, stop other custom threads you started yourself, etc.).

Resources needing this

2 reviews on “Protocols SDK

Leave a Review

Leave a review
Cancel review
View full changelog
Close changelog

Changelog

  • Version 5.2.7.0 • Released on: 2018-10-02 10:53:28
    Download
    Description:

    Fixed minor issue with Java 10

  • Version 5.2.6.0 • Released on: 2018-06-27 18:50:07
    Download
    Description:

    All blocks contained in a Loop now reset their state before execution otherwise they could keep their previous value and that is never what we want.

  • Version 5.2.5.0 • Released on: 2018-06-01 15:05:55
    Download
    Description:

    fixed compatibility with Icy 1.9.6.0

  • Version 5.2.4.0 • Released on: 2018-02-27 17:50:21
    Download
    Description:

    Moved a method to public so we can now retrieve a graphical component for a specific Var object.

  • Version 5.2.3.1 • Released on: 2018-02-12 17:40:04
    Download
    Description:

    minor fix.

  • Version 5.2.3.0 • Released on: 2018-01-28 01:36:22
    Download
    Description:

    - reintroduced compatibility with java 7

  • Version 5.2.2.0 • Released on: 2018-01-28 01:15:11
    Download
    Description:

    fixed command line support for FileBatch loop (regression)

  • Version 5.2.1.0 • Released on: 2017-09-27 15:20:53
    Download
    Description:

    * Adjust names of dilated & eroded ROI
    * Fixed the embed menu to automatically gather acceptable batch modules

  • Version 5.2.0.0 • Released on: 2017-09-26 13:47:11
    Download
    Description:

    * Updated to Icy 1.9.4
    * SubtractROI: added static access

  • Version 5.1.1.0 • Released on: 2017-04-05 14:12:18
    Download
    Description:

    Updated to Icy 1.9.0.1

  • Version 5.1.0.0 • Released on: 2017-02-24 16:58:12
    Download
    Description:

    New: Boolean input block

  • Version 5.0.0.0 • Released on: 2017-02-06 12:22:10
    Download
    Description:

    New: command-line support! Protocols can now fetch parameters from the command-line and therefore run in headless mode

  • Version 4.6.13.0 • Released on: 2017-01-25 00:54:37
    Download
    Description:

    Call IJ Plugin now outputs the latest know "active" image plus (useful to retrieve the last processed image)

  • Version 4.6.12.0 • Released on: 2016-12-06 13:52:50
    Download
    Description:

    Some tests towards command-line support

  • Version 4.6.11.0 • Released on: 2016-10-11 13:43:53
    Download
    Description:

    (Dirty but temporary) attempt fix to an issue in the ErodeROI block

  • Version 4.6.10.0 • Released on: 2016-06-13 12:02:13
    Download
    Description:

    Fixed the ROI subtraction block

  • Version 4.6.9.0 • Released on: 2016-06-01 14:03:27
    Download
    Description:

    Updated the "Subtract ROI" block to avoid creating duplicates of the original ROIs

  • Version 4.6.8.0 • Released on: 2016-05-25 13:36:25
    Download
    Description:

    Updated the "Merge ROI" block to support other ROI types (thanks to Frederik Grull and Niko Ehrenfeuchter for their valuable input)

  • Version 4.6.7.0 • Released on: 2016-03-18 14:02:09
    Download
    Description:

    * Better handling of the "tools" category
    * New "ListSize" block (counts and returns the number of items in a list)

  • Version 4.6.6.0 • Released on: 2016-03-10 18:47:37
    Download
    Description:

    * Fixed an issue where removing a dynamic variable wouldn't disappear
    * Fixed an issue in the ROI subtraction block
    * New block: get sequence folder

  • Version 4.6.5.0 • Released on: 2016-01-12 16:30:58
    Download
    Description:

    FileToSequence: Replaced exception by a proper error message

  • Version 4.6.4.0 • Released on: 2016-01-05 19:06:24
    Download
    Description:

    Fixed several copy-pasting issues

  • Version 4.6.3.0 • Released on: 2015-12-17 23:22:45
    Download
    Description:

    * Fixed the copy-paste system
    * CreateFile: new "overwrite" option
    * SendToSwimmingPool: fixed NPE

  • Version 4.6.2.0 • Released on: 2015-10-22 00:42:15
    Download
    Description:

    * Fixed an issue causing protocol links to be loaded in the wrong order
    * Erosion and Dilation no longer optimise bounds (removed in Icy 1.6.2)

  • Version 4.6.1.0 • Released on: 2015-10-20 09:16:54
    Download
    Description:

    "Append file path" block now handles a text or file as input

  • Version 4.6.0.0 • Released on: 2015-09-03 11:10:45
    Download
    Description:

    * Improved error messages when the protocol fails
    * ROI Erosion and Dilation blocks now support script access as well as percentage-based parameters in addition to radius

  • Version 4.5.4.0 • Released on: 2015-05-05 13:11:58
    Download
    Description:

    New: Workflow.runWorkflow(boolean) to indicate whether the method should wait for completion of the workflow before returning.

  • Version 4.5.3.0 • Released on: 2015-04-24 11:36:29
    Download
    Description:

    Fixed issue in the execution log when describing variables exposed outside a workflow

  • Version 4.5.2.0 • Released on: 2015-03-30 16:25:22
    Download
    Description:

    * Added option to remove current extension in "Append File Path"
    * Fixed parameter name in "CreateFile"
    * Inverted parameters in "Sequence to File" for easier reading

  • Version 4.5.1.0 • Released on: 2015-03-27 16:39:43
    Download
    Description:

    Fixed the channel of dilated and eroded ROI

  • Version 4.5.0.0 • Released on: 2015-03-18 00:11:38
    Download
    Description:

    * Fixed some block installation issues
    * Fixed Erode and Dilate blocks
    * New: execution log (BETA)

  • Version 4.4.5.1 • Released on: 2015-02-08 01:23:14
    Download
    Description:

    Updated to EzPlug 3.7.6

  • Version 4.4.5.0 • Released on: 2015-01-29 16:18:32
    Download
    Description:

    * Fixed SequenceScreenshot not taking T and Z into account
    * deprecated an old API function for adding variables to blocks

  • Version 4.4.4.0 • Released on: 2015-01-12 11:33:32
    Download
    Description:

    Fixed issue causing recursive batches not browsing sub-folders properly

  • Version 4.4.3.0 • Released on: 2015-01-10 22:57:46
    Download
    Description:

    Fixed an issue when embedding blocks

  • Version 4.4.2.0 • Released on: 2015-01-08 19:22:03
    Download
    Description:

    Fixed block search to support spaces

  • Version 4.4.1.0 • Released on: 2014-12-19 13:11:39
    Download
    Description:

    * Fixed issue in "Merge ROI"
    * Fixed issues with loops not terminating properly
    * Fixed issues with user interruptions
    * Fixed block auto-ordering process
    * Fixed batches not running properly
    * Improved block search

  • Version 4.4.0.0 • Released on: 2014-12-11 13:31:06
    Download
    Description:

    Major update: the running state (and results) of each block is preserved for faster repeated executions
    * BlockStatus: new "ERROR" status; each status carries a default and an optional user-provided message
    * "DIRTY" status is propagated upstream and to following blocks
    * Some blocks can be forced not to keep results in memory (e.g. random generators) => option is stored in protocol
    Minor updates:
    * BlocksReloadedException: no more parameters in constructor (the user message is set by default)
    * Improved thread handling as well as exceptions and user interruptions
    * Improved block cut/copy/paste/embed mechanism (and fixed a potential memory leak)
    Fixes:
    * FileBatch: fixed recursive search
    * CreateFile and CreateFolder: fixed output
    * Loop: option to stop on first error

  • Version 4.3.1.0 • Released on: 2014-11-28 17:11:18
    Download
    Description:

    Fixed issue with batch processing

  • Version 4.3.0.0 • Released on: 2014-11-22 20:17:49
    Download
    Description:

    Batch processing with protocols just got a whole lot simpler!
    * "ArrayLoop" is now known as "Batch"
    * "FolderLoop" is now called "File batch"
    * New "Sequence file batch": similar to a file batch, but reads sequence data
    * New "Sequence series batch": batches through all series of a multi-series imaging data

  • Version 4.2.4.0 • Released on: 2014-10-24 15:04:52
    Download
    Description:

    Fixed an issue causing some protocols with collapsed blocks not to reload all links properly

  • Version 4.2.3.0 • Released on: 2014-10-06 20:00:57
    Download
    Description:

    Fixed a copy-paste issue when using script blocks

  • Version 4.2.2.1 • Released on: 2014-10-05 18:28:55
    Download
    Description:

    Updated JAR file for v.4.2.2

  • Version 4.2.2.0 • Released on: 2014-10-05 18:13:07
    Download
    Description:

    Fixed issue causing blocks not to collapse or reload their collapsed state properly

  • Version 4.2.1.0 • Released on: 2014-10-05 17:36:24
    Download
    Description:

    * Fixed JDK8 issue
    * Block sub-categories are now split (via a "more" option) if too long

  • Version 4.2.0.0 • Released on: 2014-09-15 21:57:21
    Download
    Description:

    * Bug fixes on protocol loading
    * Bug fixes on ROI operations (merge, subtract, translate)

  • Version 4.1.2.0 • Released on: 2014-08-04 17:21:54
    Download
  • Version 4.1.1.0 • Released on: 2014-07-29 15:17:37
    Download
    Description:

    * Fixed the "Subtract ROI" block not working properly in 3D
    * Fixed the "Erode ROI" block not working properly for zero-value radii

  • Version 4.1.0.0 • Released on: 2014-07-24 19:16:44
    Download
    Description:

    Major code refactoring: better separation between the engine (Protocols SDK) and the graphical user interface (Protocols)

  • Version 4.0.2.0 • Released on: 2014-07-23 13:02:04
    Download
    Description:

    Workflow interruption is now correctly handled

  • Version 4.0.1.0 • Released on: 2014-07-23 00:05:07
    Download
    Description:

    * Updated to EzPlug 3.5
    * Better error handling
    * Improved block collapsing

  • Version 4.0.0.0 • Released on: 2014-07-09 19:26:08
    Download
    Description:

    * New feature: inner workflows and loops can now be collapsed while their exposed variables remain visible and linkable! (contributed by Ludovic Laborde)
    * Fixed and cleaned ROI erosion and dilation in 3D

  • Version 3.0.1.0 • Released on: 2014-06-17 18:32:10
    Download
    Description:

    * Fixed issue when drag'n'dropping XML files into the Protocols interface
    * Improved the block renaming interface
    * Fixed an issue causing blocks at location (0,0) not to allow resizing anymore

  • Version 3.0.0.0 • Released on: 2014-06-17 14:50:16
    Download
    Description:

    New major release, thanks to Ludovic Laborde!

    What's new: blocks can now be selected, moved around by group, copy/pasted inside a protocol or to another protocol, and inner workflows can be deleted without losing the inside

  • Version 2.10.1.0 • Released on: 2014-05-21 19:16:19
    Download
    Description:

    Update by Ludovic Laborde

    * Updated to Icy 1.5
    * Fixed drag'n'drop issue from the search bar

  • Version 2.10.0.0 • Released on: 2014-05-16 21:19:42
    Download
    Description:

    Updates by Ludovic Laborde

    * Blocks can be renamed by the user (double-click on block title)
    * Improved drag-n-drop support from search results

  • Version 2.9.2.0 • Released on: 2014-05-12 20:31:59
    Download
    Description:

    * Fixed flickering issue when scrolling through large protocols
    * Detect missing variables when loading links

  • Version 2.9.0.0 • Released on: 2014-04-24 18:47:06
    Download
    Description:

    Numerous bug fixes and improvements to the graphical interface

  • Version 2.8.2.0 • Released on: 2014-02-20 21:53:21
    Download
    Description:

    * New: ErodeROI block
    * Minor polishing

  • Version 2.8.1.2 • Released on: 2014-01-27 13:57:54
    Download
    Description:

    Custom error message when trying to install plugins using Icy4Eclipse D/R

  • Version 2.8.1.1 • Released on: 2014-01-10 18:37:46
    Download
    Description:

    Minor addition to the previous update (ROI can be dilated individually)

  • Version 2.8.1.0 • Released on: 2014-01-10 18:27:46
    Download
    Description:

    Dilate ROI is now accessible programmatically (i.e. via plugins & scripts)

  • Version 2.8.0.0 • Released on: 2013-12-23 19:23:51
    Download
    Description:

    * Block sizes are now properly reloaded from XML
    * Fixed an issue in the "Translate ROI" block

  • Version 2.7.1.0 • Released on: 2013-12-18 18:23:33
    Download
    Description:

    Updated ROI blocks:
    - Subtract ROI works in all dimensions
    - Dilate ROI has a radius along X,Y,Z
    - new: Translate ROI block

  • Version 2.7.0.0 • Released on: 2013-11-15 21:43:55
    Download
    Description:

    Updated to Icy 1.4.2.0:
    - removed deprecated calls
    - fixed 'Merge ROI' block
    - fixed 'Subtract ROI' block
    - new 'Dilate ROI' block

  • Version 2.6.4.0 • Released on: 2013-11-07 19:44:27
    Download
    Description:

    Reload dynamic variables with a type selection model (don't know of any other use cases for now)

  • Version 2.6.3.0 • Released on: 2013-11-05 22:45:33
    Download
    Description:

    Fixed an issue in the "Crop sequence to ROI" that fixes the latest Icy update

  • Version 2.6.2.0 • Released on: 2013-10-24 12:04:38
    Download
    Description:

    New block: Show ImagePlus

  • Version 2.6.1.0 • Released on: 2013-10-14 15:17:41
    Download
    Description:

    Fixed issue causing blocks requiring the EDT not loading anymore (introduced in v.2.6.0.0)

  • Version 2.6.0.0 • Released on: 2013-10-12 18:11:25
    Download
    Description:

    Missing plugins are now all fetched and installed at once, whatever the version of the protocol (a single reload is much more efficient, should reduce PerGenSpace usage)

  • Version 2.5.0.0 • Released on: 2013-08-22 18:39:29
    Download
    Description:

    Fixed a long-lasting graphical issue when resizing blocks. Default size of components is now also respected

  • Version 2.4.14.0 • Released on: 2013-07-30 17:34:45
    Download
    Description:

    Fixed an issue causing loops to fail executing (since 2.4.13.0)

  • Version 2.4.13.0 • Released on: 2013-07-24 14:59:00
    Download
    Description:

    Minor improvement to the protocol's interruption process.

  • Version 2.4.12.0 • Released on: 2013-07-22 19:19:20
    Download
    Description:

    Multiple (though minor) engine and GUI fixes

  • Version 2.4.11.0 • Released on: 2013-07-12 13:47:31
    Download
    Description:

    Fixed block deletion routine failing or stalling the interface in some specific cases

  • Version 2.4.10.0 • Released on: 2013-06-08 23:54:54
    Download
    Description:

    AddROIToSequence saves metadata to disk alongside the sequence

  • Version 2.4.9.2 • Released on: 2013-05-21 15:27:51
    Download
    Description:

    Merged diverging versions 2.4.8.0 and 2.4.9.1

  • Version 2.4.9.1 • Released on: 2013-05-18 23:38:24
    Download
    Description:

    Missing file in the previous update

  • Version 2.4.9.0 • Released on: 2013-05-18 23:36:02
    Download
    Description:

    * Updated to Icy 1.3.5.0
    * Add ROI to Sequence: new option to replace existing ROI before adding new ones

  • Version 2.4.8.0 • Released on: 2013-04-25 12:19:37
    Download
    Description:

    New block: Append file path

  • Version 2.4.7.0 • Released on: 2013-04-17 18:29:30
    Download
    Description:

    * Stop saving the value of linked variables to XML (can be huge!)
    * Throw simpler error message when unable to load a variable from the store xml data.

  • Version 2.4.6.0 • Released on: 2013-04-17 00:09:36
    Download
    Description:

    Fixed loading of dynamic output variables

  • Version 2.4.5.0 • Released on: 2013-03-22 15:46:06
    Download
    Description:

    Fixed SequenceToFile block

  • Version 2.4.4.0 • Released on: 2013-03-22 14:33:26
    Download
    Description:

    New block: sequence screenshot

  • Version 2.4.3.0 • Released on: 2013-03-21 10:40:17
    Download
    Description:

    * CropSequenceToROI block should now support all ROI types
    * Indexer block displays an error message for invalid indexes
    * Folder loops are now case insensitive on the file extension parameter

  • Version 2.4.2.0 • Released on: 2013-03-12 20:33:34
    Download
    Description:

    Improve block/protocol interruption from the user interface

  • Version 2.4.1.0 • Released on: 2013-03-08 16:10:54
    Download
    Description:

    Renamed "dynamic" variables to "runtime" variables, and clarified methods to add such variables.

  • Version 2.4.0.0 • Released on: 2013-03-08 15:05:17
    Download
    Description:

    New: runtime variables (can be added via the graphical user interface)
    Fixed an issue causing the Accumulator block not to reload correctly from XML

  • Version 2.3.3.0 • Released on: 2013-02-28 18:13:30
    Download
    Description:

    Blocks is more permissive while loading protocols with errors (warnings go in the console)

  • Version 2.3.2.0 • Released on: 2013-01-28 18:28:05
    Download
    Description:

    Fixed unlinking variables in bulk via VarList.clear()

  • Version 2.3.1.0 • Released on: 2013-01-28 18:12:11
    Download
    Description:

    * All panels are now resizable by default.
    * Remove variables properly by unlinking them first

  • Version 2.3.0.0 • Released on: 2013-01-24 18:08:48
    Download
    Description:

    New accumulator block (converts a list of variables into a single array)

  • Version 2.2.0.0 • Released on: 2013-01-16 15:13:50
    Download
    Description:

    * Updated to Icy 1.3.0.0
    * New "Sequence" menu for protocols

  • Version 2.1.1.0 • Released on: 2013-01-10 16:53:04
    Download
    Description:

    Updated to EzPlug v.2.8.2.0

  • Version 2.1.0.0 • Released on: 2013-01-08 18:31:00
    Download
    Description:

    * Updated to EzPlug 2.8
    * New IO blocks: file <=> path
    * (experimental) new block to call an ImageJ macro file (no output yet)

  • Version 2.0.1.0 • Released on: 2012-12-12 20:15:32
    Download
    Description:

    Fixed bug when working with local blocks (not published online)

  • Version 2.0.0.0 • Released on: 2012-12-07 17:42:11
    Download
    Description:

    * New graphical interface
    * ROI manipulation blocks
    * ImageJ compat blocks

  • Version 1.12.3.0 • Released on: 2012-11-07 16:46:03
    Download
    Description:

    * Prevent risk of changing the type of a mutable value linked in an array loop
    * Removed unnecessary (and erratic) steps when loading protocols

  • Version 1.12.2.0 • Released on: 2012-11-06 18:57:29
    Download
    Description:

    * Refresh state of exposed variables after linking / unlinking
    * Catch error when running an empty array loop

  • Version 1.12.1.0 • Released on: 2012-10-31 19:41:13
    Download
    Description:

    New block: CropSequenceToROI

  • Version 1.12.0.1 • Released on: 2012-10-31 17:30:37
    Download
    Description:

    Fixed jar export

  • Version 1.12.0.0 • Released on: 2012-10-31 17:25:24
    Download
    Description:

    New: ROI management blocks

  • Version 1.11.4.0 • Released on: 2012-10-24 16:10:45
    Download
    Description:

    Check for network connection when installing missing plugins

  • Version 1.11.3.0 • Released on: 2012-10-24 15:50:16
    Download
    Description:

    * Fixed loading/saving of mutable variables
    * Fixed loading/saving of loop parameters

  • Version 1.11.2.0 • Released on: 2012-10-24 13:57:02
    Download
    Description:

    Fixed a minor error while loading a protocol with a missing variable

  • Version 1.11.1.1 • Released on: 2012-10-11 18:35:52
    Download
    Description:

    Re-upload jar file (weird progress bar issue with FileToSequence)

  • Version 1.11.1.0 • Released on: 2012-10-11 17:15:32
    Download
    Description:

    new FolderLoop block (browses through all files of a folder, with or without extension)

  • Version 1.10.0.0 • Released on: 2012-10-02 19:26:04
    Download
    Description:

    Updated to EzPlug 2.5.0.0
    Display type selector of VarMutable outputs

  • Version 1.9.0.0 • Released on: 2012-09-27 15:49:34
    Download
    Description:

    Reworked XML loading/saving strategy to support live plugin download and install

  • Version 1.8.0.1 • Released on: 2012-09-26 16:59:15
    Download
    Description:

    Re-upload jar file (was including Protocols plug-in by mistake)

  • Version 1.8.0.0 • Released on: 2012-09-26 16:19:55
    Download
    Description:

    * New BlocksML logic to load/save protocols
    * Variables can be tested for whether they are referenced by other variables within a workflow
    * Minor code improvements

  • Version 1.7.1.0 • Released on: 2012-09-14 15:49:40
    Download
    Description:

    * Block menu: filter out loops from other blocks
    * WorkFlow extends Plugin
    * Adjusted BlockPanel's paint strategy (prepares for the upcoming SwingX update)
    * BlocksML: fixed causing BlocksML v2 not to load properly
    * BlocksML: catch error when creating blocks to help diagnosis
    * Fixed bug causing some links to be cut off on screenshot edges.

  • Version 1.7.0.0 • Released on: 2012-09-06 16:26:59
    Download
    Description:

    * Revamped linking system (highlighting, deletion)
    * Improved graphical rendering quality

  • Version 1.6.0.0 • Released on: 2012-08-30 15:45:13
    Download
    Description:

    * Ability to stop running protocols
    * Console messages more explicit (regarding elapsed time)

  • Version 1.5.2.0 • Released on: 2012-08-09 11:46:08
    Download
    Description:

    Fixed bug causing inner workflows and loops to fail during insertion into a protocol and XML I/O

  • Version 1.5.1.0 • Released on: 2012-08-07 19:01:17
    Download
    Description:

    Catch an error when downloading new plugins upon protocol loading (the protocol editor needs to be re-opened after installation)

  • Version 1.5.0.0 • Released on: 2012-08-07 18:51:28
    Download
    Description:

    - Improved stability when new plug-ins are installed
    - Fixed error messages not properly showing for several IO blocks

  • Version 1.4.2.0 • Released on: 2012-08-06 18:15:29
    Download
    Description:

    New block: AppendText (appends any value to a text or sequence name)

  • Version 1.4.1.0 • Released on: 2012-08-06 11:54:51
    Download
    Description:

    Fixed issue 70 (range loops not reloading correctly from xml)
    NOTE: protocols must be saved again to be reloaded correctly. Old protocols will keep showing the same error until they are saved again.

  • Version 1.4.0.0 • Released on: 2012-08-03 12:02:10
    Download
    Description:

    WorkFlow does not extend Plugin anymore (in order for bug reports to work properly)
    => Loops menus must be generated manually
    => Plugin names in context menus have been adjusted

  • Version 1.3.1.0 • Released on: 2012-07-17 19:32:03
    Download
    Description:

    * BlocksFinder: split "Blocks" menu into sub-menus of max. 15 items
    * new IO block: FilesToSequence (multiple files into a single sequence)

  • Version 1.3.0.0 • Released on: 2012-07-12 14:45:01
    Download
    Description:

    * Upgraded to EzPlug 2.0 (Vars integration)
    * Adjust block title

    Previous changes in v.1.2:
    * Don't resize the variable name when resizing a panel
    * Resize the entire panel if a VarEditor requires so (as of Vars 1.4)
    * new: getContentsBoundingBox()
    * Adjust the label name in the drop-down menu depending on the type of plugin
    * Handle primitive types in XML

  • Version 1.1.0.0 • Released on: 2012-07-09 18:44:14
    Download
    Description:

    * Fixed several interface bugs
    * Renamed some input blocks for easier reading

  • Version 1.0.0.0 • Released on: 2012-07-06 12:05:53
    Download
    Description:

    First officially stable release !
    Workflows can now be embedded into loops (useful for batch process)

  • Version 0.14.0.0 • Released on: 2012-07-05 19:16:36
    Download
    Description:

    - Fixed issues in XML I/O
    - New: workflows can be embedded into larger workflows or loops (experimental)

  • Version 0.13.0.0 • Released on: 2012-07-04 14:24:47
    Download
    Description:

    * Updated SequenceToFile block to work with Icy 1.2.6.0 (and to appear in IO submenu)
    * Fixed BlocksFinder not finding some blocks, and improved generation of menu labels from class names

  • Version 0.12.0.0 • Released on: 2012-07-04 11:51:33
    Download
    Description:

    - Removed Float and FloatArray inputs
    - Display a message in the center of a workflow container to help the user create a first block
    - new I/O submenu

  • Version 0.11.0.0 • Released on: 2012-07-03 18:52:52
    Download
    Description:

    - XML I/O reworked
    - GUI engine improvements

  • Version 0.9.9.9 • Released on: 2012-07-02 20:22:54
    Download
    Description:

    Graphical interface is *much* faster and responsive

  • Version 0.9.9.8 • Released on: 2012-07-02 17:19:37
    Download
    Description:

    * Updated to Vars v.1.3.3.0
    * Fixed bugs in some drag'n'drop operations
    * Fixed XML I/O for Workflows and primitive arrays
    * Display block has now a mutable variable to allow pass-through links

  • Version 0.9.9.7 • Released on: 2012-06-29 19:22:39
    Download
    Description:

    Fixed issue causing the right-click not to work

  • Version 0.9.9.6 • Released on: 2012-06-29 19:08:00
    Download
    Description:

    * create blocks popup in a workflow pane given by a variable
    * block popup menu moved to instance field
    * fixed issue #64 (hiding exposed variables wasn't refreshing the panel)

  • Version 0.9.9.5 • Released on: 2012-06-29 11:14:21
    Download
    Description:

    Fixed XML IO bugs

  • Version 0.9.9.4 • Released on: 2012-06-28 17:06:05
    Download
    Description:

    Updated Blocks to Vars 1.3.0.0 (changes to VarMutableArray)

  • Version 0.9.9.3 • Released on: 2012-06-24 23:12:53
    Download
    Description:

    Updated to Vars 1.2.0.0
    WARNING: array input blocks now rely on native types. Blocks must be updated accordingly

  • Version 0.9.9.2 • Released on: 2012-06-22 14:16:18
    Download
    Description:

    v.1.0-RC2 release.
    Major changes:
    - Main graphical interface moved to new "Protocols" plugin
    - Blocks becomes a library
    Engine changes:
    - fixed issue causing drag'n'drop to fail
    - fixed XML saving with inner workflows
    - fixed handling of VarExceptions
    - save confirmation dialog not shown when workflow is empty

  • Version 0.0.1.0 • Released on: 2012-06-20 22:13:55
    Download