Arma 3 Scripting

CT TREE

  • Also known as DialogControls-Tree, Tree View

Topic · Markdown · JSON · original wiki page

Introduction

The CT_TREE, also referred to as tree view (tv), is a control with similar functionality as the CT_LISTBOX. In addition to that it supports multiple levels of entries as well as a search functionality.
Since Arma 3 v2.01: Multiple selections are now also supported via commands.

Important

The engine driven search is very slow. Searching a tree view with many entries can freeze the game.

Alphabetical Order

Note

TokenNames common to most controls, such as x, y, w, h, text, idc... can be found here.

Warning

Not all of the listed attributes might have an effect nor might the list be complete. All attributes were gathered with this config crawler.

#define CT_TREE 12

B

borderSize

Type: Number

Description: Shows a border around the control. Setting the size to 0 will not hide the border. Set the colorBorder to transparent instead.

borderSize = 0;

C

colorArrow

Important

This attribute is mandatory for the control to work!

Type: Array

Description: Has no effect but without it an error is thrown.

colorArrow[] = {1,1,1,1};

colorBorder

Type: Array

Description: With borderSize = 1 determines the color of that border.

colorBorder[] = {0,0,0,0};

colorLines

Type: Array

Description: These lines connect the different entries for better clarity.

colorLines[] = {0,0,0,0};

colorMarked

Type: Array

Description: Background color of all subsequently selected entries when multiselectEnabled = 1;.

colorMarked[] = {0.2,0.3,0.7,1};

colorMarkedSelected

Type: Array

Description: Background color of the first selected entry with multiselectEnabled = 1;.

colorMarkedSelected[] = {0,0.5,0.5,1};

colorMarkedText

Type: Array

Description: Text color of secondarly selected entries with multiselectEnabled = 1;.

colorMarkedText[] = {0,0,0,1};

colorPicture

Type: Array

Description: Left picture color of an unselected entry.

colorPicture[] = {1,1,1,1};

colorPictureDisabled

Type: Array

Description: Left picture color when control is disabled.

colorPictureDisabled[] = {1,1,1,0.25};

colorPictureRight

Type: Array

Description: Right picture color of an unselected entry.

colorPictureRight[] = {1,1,1,1};

colorPictureRightDisabled

Type: Array

Description: Right picture color when control is disabled.

colorPictureRightDisabled[] = {1,1,1,0.25};

colorPictureRightSelected

Type: Array

Description: Right picture color of an selected entry.

colorPictureRightSelected[] = {0,0,0,1};

colorPictureSelected

Type: Array

Description: Left picture color of an selected entry.

colorPictureSelected[] = {1,1,1,1};

colorSearch

Type: Array

Description: Color of the entries that fit the search of the idcSearch listbox.

colorSearch[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])",1};

colorSelect

Type: Array

Description: Entry's background when multiselectEnabled = 0;.

colorSelect[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])",1};

colorSelectBackground

Type: Array

Description: n/a

colorSelectBackground[] = {0,0,0,0.5};

colorSelectText

Type: Array

Description: Text color of a selected entry with multiselectEnabled = 0;.

colorSelectText[] = {0,0,0,1};

D

defaultItem

Type: Array

Description: n/a

defaultItem[] = {"BLU_F","Infantry"};

disableKeyboardSearch

Type: Number

Description: n/a

disableKeyboardSearch = 1;

disableSearchHighlight

Type: Number

Description: n/a

disableSearchHighlight = 1;

E

expandedTexture

Type: String

Description: "Arrow" texture on the left side, if non is given ("") a minus with box will be displayed.

expandedTexture = "A3\ui_f\data\gui\rsccommon\rsctree\expandedTexture_ca.paa";

expandOnDoubleclick

Type: Number

Description: Enable/disable expanding and collapsing with double-click.

expandOnDoubleclick = 1;

H

hiddenTexture

Type: String

Description: "Arrow" texture on the left side, if non is given ("") a plus with box will be displayed.

hiddenTexture = "A3\ui_f\data\gui\rsccommon\rsctree\hiddenTexture_ca.paa";

I

iconFolder

Type: String

Description: n/a

iconFolder = "\a3\3DEN\Data\Cfg3DEN\Layer\icon_ca.paa";

iconFolderDefault

Type: String

Description: n/a

iconFolderDefault = "\a3\3DEN\Data\Cfg3DEN\Layer\iconDefault_ca.paa";

idcSearch

Type: Number

Description: IDC of a CT_EDIT control which functions as the search input.

idcSearch = 283;

M

maxHistoryDelay

Type: Number

Description: n/a

maxHistoryDelay = 1;

multiselectEnabled

Type: Number

Description: Enable/disable multi selection with CTRL or SHIFT to select all entries up to the first selected entry.

Note

Commands to retrieve all selected entries in a multi selection tv are only available after Arma 3 v2.01.

multiselectEnabled = 1;

Default Classes

Note

Arma 3: AddOns: Classes need to be initialised first with class SomeClass;


Missions: Since Arma 3 v2.02 one can use import SomeClass; to initialise a class (see the import keyword).

In older versions, use "Default" call BIS_fnc_exportGUIBaseClasses; and paste the result into the description.ext.

RscExample

class RscTree
{
    deletable = 0;
    fade = 0;
    access = 0;
    type = CT_TREE;
    colorBackground[] = {0,0,0,0};
    colorSelect[] = {1,1,1,0.7};
    colorDisabled[] = {1,1,1,0.25};
    colorText[] = {1,1,1,1};
    colorSelectText[] = {0,0,0,1};
    colorBorder[] = {0,0,0,0};
    colorSearch[] =
    {
        "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])",
        "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])",
        "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])",
        "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])"
    };
    colorMarked[] = {0.2,0.3,0.7,1};
    colorMarkedText[] = {0,0,0,1};
    colorMarkedSelected[] = {0,0.5,0.5,1};
    multiselectEnabled = 0;
    colorPicture[] = {1,1,1,1};
    colorPictureSelected[] = {0,0,0,1};
    colorPictureDisabled[] = {1,1,1,0.25};
    colorPictureRight[] = {1,1,1,1};
    colorPictureRightSelected[] = {0,0,0,1};
    colorPictureRightDisabled[] = {1,1,1,0.25};
    colorArrow[] = {1,1,1,1};
    maxHistoryDelay = 1;
    shadow = 0;
    style = ST_LEFT;
    font = "RobotoCondensed";
    sizeEx = GUI_TEXT_SIZE_MEDIUM;
    expandedTexture = "A3\ui_f\data\gui\rsccommon\rsctree\expandedTexture_ca.paa";
    hiddenTexture = "A3\ui_f\data\gui\rsccommon\rsctree\hiddenTexture_ca.paa";
    x = 0;
    y = 0;
    w = 0.1;
    h = 0.2;
    rowHeight = 0.0439091;
    colorSelectBackground[] = {0,0,0,0.5};
    colorLines[] = {0,0,0,0};
    borderSize = 0;
    expandOnDoubleclick = 1;
    class ScrollBar : ScrollBar
    {
    };
};

Other examples

RscTree with search functionality

class Dialog
{
    idd = -1;
    class Controls
    {
        class _CT_EDIT
        {
            idc = 100;
            type = 2;
            style = "512";
            x = GUI_GRID_CENTER_X + 10 * GUI_GRID_CENTER_W;
            y = GUI_GRID_CENTER_Y + 0 * GUI_GRID_CENTER_H;
            w = 20 * GUI_GRID_CENTER_W;
            h = 2 * GUI_GRID_CENTER_H;
            font = "PuristaMedium";
            sizeEx = 0.04;
            autocomplete = "";
            canModify = true;
            maxChars = 100;
            forceDrawCaret = false;
            colorSelection[] = {0,1,0,1};
            colorText[] = {1,1,1,1};
            colorDisabled[] = {1,0,0,1};
            colorBackground[] = {0,0,0,0.8};
            text = "";
            tooltip = "Type to search";
        };
        class _CT_TREE
        {
            /* Common properties */
            idc = 200;
            /* Add some entries */
            onLoad = "params ['_tv'];\
                    _classes = 'true' configClasses (configFile >> 'CfgVehicles');\
                    for '_i' from 0 to 10 do\
                    {\
                        _tv tvAdd [[], configName selectRandom _classes];\
                        for '_j' from 0 to 10 do\
                        {\
                            _tv tvAdd [[_i], configName selectRandom _classes];\
                            for '_k' from 0 to 10 do\
                            {\
                                _tv tvAdd [[_i, _j], configName selectRandom _classes];\
                            };\
                        };\
                    };";
            moving = 0;
            type = CT_TREE;
            style = ST_LEFT;
            x = GUI_GRID_CENTER_X + 10 * GUI_GRID_CENTER_W;
            y = GUI_GRID_CENTER_Y + 3 * GUI_GRID_CENTER_H;
            w = 20 * GUI_GRID_CENTER_W;
            h = 23 * GUI_GRID_CENTER_H;
            sizeEx = GUI_TEXT_SIZE_MEDIUM;
            font = "RobotoCondensed";
            colorText[] = {1,1,1,1};
            colorBackground[] = {0,0,0,0.8};
            colorDisabled[] = {1,1,1,0.25};
            shadow = 0;
            access = 0;

            /* CT_TREE specific properties */
            idcSearch = 100;
            colorSelect[] = {1,1,1,0.7};
            colorSelectText[] = {0,0,0,1};
            colorBorder[] = {0,0,0,0};
            colorSearch[] =
            {
                "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.13])",
                "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.54])",
                "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.21])",
                "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])"
            };
            colorMarked[] = {0.2,0.3,0.7,1};
            colorMarkedText[] = {0,0,0,1};
            colorMarkedSelected[] = {0,0.5,0.5,1};
            multiselectEnabled = 0;
            colorPicture[] = {1,1,1,1};
            colorPictureSelected[] = {0,0,0,1};
            colorPictureDisabled[] = {1,1,1,0.25};
            colorPictureRight[] = {1,1,1,1};
            colorPictureRightSelected[] = {0,0,0,1};
            colorPictureRightDisabled[] = {1,1,1,0.25};
            colorArrow[] = {1,1,1,1};
            maxHistoryDelay = 1;
            colorSelectBackground[] = {0,0,0,0.5};
            colorLines[] = {0,0,0,0};
            class ScrollBar : ScrollBar
            {
            };
            expandedTexture = "A3\ui_f\data\gui\rsccommon\rsctree\expandedTexture_ca.paa";
            hiddenTexture = "A3\ui_f\data\gui\rsccommon\rsctree\hiddenTexture_ca.paa";
            rowHeight = 0.0439091;
            borderSize = 0;
            expandOnDoubleclick = 1;

            /* CT_TREE user interface eventhandlers */
            onTreeSelChanged = "systemChat str ['onTreeSelChanged',_this]; false";
            onTreeLButtonDown = "systemChat str ['onTreeLButtonDown',_this]; false";
            onTreeDblClick = "systemChat str ['onTreeDblClick',_this]; false";
            onTreeExpanded = "systemChat str ['onTreeExpanded',_this]; false";
            onTreeCollapsed = "systemChat str ['onTreeCollapsed',_this]; false";
            onTreeMouseMove = "systemChat str ['onTreeMouseMove',_this]; false";
            onTreeMouseHold = "systemChat str ['onTreeMouseHold',_this]; false";
            onTreeMouseExit = "systemChat str ['onTreeMouseExit',_this]; false";
        };
    };
};

Scripting Example

private ["_count", "_current", "_data", "_text", "_value", "_pic"];
_CT_TREE tvAdd [[], "Parent_A"];
_CT_TREE tvAdd [[0], "Child_A"];
_CT_TREE tvAdd [[0,0], "Grandchild_A"];
_CT_TREE tvAdd [[], "Parent_B"];
_CT_TREE tvAdd [[1], "Child_B"];
_count = _CT_TREE tvCount []; // return 2
_CT_TREE tvSetCurSel [0,0,0]; // select grandchild_A
_current = tvCurSel _CT_TREE; // return [0,0,0]
_CT_TREE tvSetData [_current, "I'm grandchild_A"];
_data = _CT_TREE tvData _current; // "I'm grandchild_A"
_text = _CT_TREE tvText _current; // "Grandchild_A"
_CT_TREE tvSetValue [_current,14];
_value = _CT_TREE tvValue _current; // 14
_CT_TREE tvSetPicture [_current, getText (configFile >> "CfgWeapons" >> "optic_NVS" >> "picture")];
_pic = _CT_TREE tvPicture _current;
_CT_TREE tvExpand [1];
_CT_TREE tvSort [[], false];
_CT_TREE tvSortByValue [[], false];
_CT_TREE tvDelete [0,0]; // remove child_b
tvClear 12;
_CT_TREE tvCollapse [];