Skip to content

Rewrite of the configUi library based on the QML plugin.

License

Notifications You must be signed in to change notification settings

CoppeliaRobotics/configUi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ConfigUI 3

A library for CoppeliaSim models' configuration.

Compiling

  1. Install required packages for simStubsGen: see simStubsGen's README
  2. Checkout, compile and install into CoppeliaSim:
$ cd path/to/CoppeliaSim/programming
$ git clone https://github.com/CoppeliaRobotics/configUi.git
$ cd configUi
$ git checkout coppeliasim-v4.5.0-rev0
$ mkdir -p build && cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ cmake --build .
$ cmake --install .

NOTE: replace coppeliasim-v4.5.0-rev0 with the actual CoppeliaSim version you have.

Usage

Create a ConfigUI object with parameters:

  • a string identifying the model type (e.g. "MyRobot"),
  • a table with schema definition (see below),
  • a function that is called with a config parameter (table) when the configuration is changed, which can be used to generate or configure the model.

Schema

Schema is a table of element schemas, in the form:

{
    elementName1 = {
        ...
    },
    elementName2 = {
        ...
    },
    ...
}

where elementNameN is the name of the field which will be used also in the config table.

Element schema

The valid fields of an element schema are:

  • name: (mandatory) a string with the description of the field (i.e. for the UI label);
  • type: (mandatory) a string with the type of the field (valid types are: int, float, bool, string, color, choices, callback);
  • default: the default value of the field;
  • minimum: the minimum value (optional, only for types int and float);
  • maximum: the maximum value (optional, only for types int and float);
  • step: the step value (optional, only for types int and float);
  • choices: the option values for types radio and combo;
  • labels: labels to use in place of the choices above;
  • callback: only for callback type, the name of a lua function to call with the name of the clicked button as argument;
  • ui: a table of parameters for the UI:
    • order: an int to provide an ordering of fields;
    • group: an int to provide a visual grouping of fields;
    • col: an int to arrange fields in multiple columns within a group;
    • tab: a string to arrange fields in multiple tab pages;
    • control: manually specify a control when a type (e.g. int, float, choices) is supported by multiple controls (e.g. spinbox and slider for numeric types, radio and combo for choices type).

Example

Here's a complete example:

require 'configUi-3'

configUi = ConfigUI {
    a = {
        type = 'int',
        name = 'A',
        minimum = 0,
        maximum = 10,
        ui = {order = 1, control = 'spinbox', },
    },
    b = {
        type = 'string',
        name = 'B',
        ui = {order = 2, },
    }
}

configUi.generateCallback = function(cfg)
    print('Config has changed:')
    print(cfg)
end

Changelog

  1. initial version
  2. switch to QML-based UI
  3. switch to using properties instead of custom data blocks; single constructor arg is schema

About

Rewrite of the configUi library based on the QML plugin.

Resources

License

Stars

Watchers

Forks

Packages

No packages published