Skip to content

Quick Reference

std::gregwar edited this page Jun 27, 2017 · 4 revisions

ELVE provides different actions that can be issued to visualise a circuit. Some of these actions are implemented in the core library, while others are provided by the plug-ins that were loaded when ELVE was launched. Each available action can be issued as a command using the Command Line Interface (CLI), and some of these actions are available through the Graphical User Interface (GUI).

GUI and CLI

Most of ELVE's actions are mirrored between the GUI and the CLI. In theory, anything can be done from both ends equivalently. For example, as a proof of concept, we provide a GUI for the Level-Layout plug-in that supports the same options as the CLI. However, currently, the GUI includes only a subset of the actions available through the CLI.

Available Commands

A list of all available commands is provided through the command help or on the Command List page.

A detailed information about any command can be obtained by issuing <command_name> -h.

Undo - Redo

⚠️ There is no such thing for now in ELVE so our only advice is to save frequently while manipulating graphs.

Loading circuits

ELVE provides two main ways of loading circuits.

  • Using dedicated JSON format, this stores the whole visualisation state.
  • Using an importer plug-in to load arbitrary logic data.

JSON Loader

The usage of the JSON loader is straight forward, either use the File -> Open menu or use the read_graph command to load a graph in the Store.

Using an importer

Once you have an Loader Plug‐in compiled and set up in the <elve_dir>/plugins/loaders/ folder. Launching ELVE will automatically load the plug-in if it is valid. Then using the plug-in is as simple as using the JSON Loader.

Store

Once a graph is loaded. You may see it in the store panel that is normally at the left of the window. This is, in fact, one of the views to the store. You can, as always, access the store from the command line (see store command). Double clicking on the graph in the view will show it in the Main Viewport. Please note that depending on the size of the graph this may take some time, and as we are writing it is known that the window could become unresponsive while showing the graph. Once the graph is pre-simulated you should see it at the right.

Main Viewport

Once the graph is shown, you can interact with it. The main viewport provides an intuitive drag-and-drop way of moving things around and you can see information about the nodes by hovering the cursor over it.

Viewport must-know keys and tricks

  • 'Spacebar' pauses the simulation

  • 'Q' quick simulate to allow skipping stabilising state of the graph

  • Keys '1' to '9','0' allow switching Selection Masks

  • Maintain left click on a node to grab it

  • Maintain 'Ctrl' while grabbing to toggle Node lock

  • Right click to select a single node

  • Selection modifiers:

    • 'Shift' to add to current selection
    • 'Ctrl' to remove from current selection
  • 'A' toggle selection, meaning that it either clears or select all

  • 'R' enable rectangular selection

  • 'G' collapse selected nodes in a group node, nested groups are allowed

  • 'U' expand selected cluster nodes, expands only one level

There is currently no way to move several nodes around or to lock a batch of nodes.

Provided transforms

This section describes behaviour and usage of provided Transform Plug‐ins.

Select fans

The fanselect command allow to get fan-in or fan-out cones of the current selection in a selection (the current one by default, overriding current selection). Please note that it only select nodes, coloring of the edges is a side effect and don't reflect actual paths. See fanselect -h for more details.

Extract selection

The extract transform takes the selected subset of the logic graph and creates a new graph with fan-in and fan-out as respectively input and outputs.

cluster command

This is here for historical reasons. This doesn't take selections into account and apply a simple and greedy algorithm on the whole graph. See the paper for more details. Please note that this is still useful to cut down the node count if your graph is too big to be visualised.

Layouts

Via the Layout menu or with the dedicated commands, you can change the plug-in used to layout your graph. The provided layout are two flavours of the same force-based system. One with level constraints and one without. To write your own layout system see Writing Plug‐ins and Layout Plug‐in.

Looks

Via the Look menu or with the dedicated commands, you can change the plug-in used to draw your graph. The two provided default looks implements a dot-based minimalistic look and a block-based with differentiated inputs/outputs look. ⚠️ Please note that differentiated inputs/outputs are still in development in ELVE and grouping node could lead to disconnected inputs/outputs. To write your look plug-in see Writing Plug‐ins and Look Plug‐in.

Clone this wiki locally