CT MENU STRIP: Difference between revisions

From Bohemia Interactive Community
Category: Control Types
m (Text replacement - "{{CT|intro" to "Category: Control Types {{CT|intro ")
m (Some wiki formatting)
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category: Control Types]]
{{CT|intro
{{CT|intro


|macro = CT_MENU_STRIP
|macro= CT_MENU_STRIP
|value = 47
|value= 47
|description = Control with expandable sublists. The top bar in 3den uses this CT.
|description= Control with expandable sublists. The top bar in 3den uses this CT.
|gallery=File:a3 ct menu strip.jpg{{!}}[[CT_MENU_STRIP]] in [[Eden Editor]].
|gallery= File:a3 ct menu strip.jpg{{!}}[[CT_MENU_STRIP]] in [[:Category:Eden Editor|Eden Editor]].
|commands =
|commands=
* [[:Category:Command_Group:_GUI_Control_-_Menu|Commands: Menu]]
* [[:Category:Command_Group:_GUI_Control_-_Menu|Commands: Menu]]
|events =
|events=
}}
}}


Line 15: Line 13:
=== A ===
=== A ===
{{CT|attribute
{{CT|attribute
|name=arrow
|name= arrow
|type1=String
|type1= String
|value1="\a3\3DEN\Data\Controls\ctrlMenu\arrow_ca.paa"
|value1= "\a3\3DEN\Data\Controls\ctrlMenu\arrow_ca.paa"
|description=
|description= Icon used to navigate from second to third level.
}}
}}


=== C ===
=== C ===
{{CT|attribute
{{CT|attribute
|name=colorBorder
|name= colorBorder
|type1=Array
|type1= Array
|value1={0,0,0,0}
|value1= { 0, 0, 0, 0 }
|description=
|description= Color of the border drawn around the menu strip and the flyout.
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorPicture
|name= colorPicture
|type1=Array
|type1= Array
|value1={1,1,1,1}
|value1= { 1, 1, 1, 1 }
|description=
|description= Default picture color.
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorPictureDisabled
|name= colorPictureDisabled
|type1=Array
|type1= Array
|value1={1,1,1,0.5}
|value1= { 1, 1, 1, 0.5 }
|description=
|description= Picture color when menu strip is disabled.
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorPictureSelect
|name= colorPictureSelect
|type1=Array
|type1= Array
|value1={0,0,0,1}
|value1= { 0, 0, 0, 1 }
|description=
|description= Picture color when entry is selected. All levels!
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorSelect
|name= colorSelect
|type1=Array
|type1= Array
|value1={0,0,0,1}
|value1= { 0, 0, 0, 1 }
|description=
|description= Text color when entry is selected. All levels!
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorSelectBackground
|name= colorSelectBackground
|type1=Array
|type1= Array
|value1={"(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}
|value1= {
|description=
"(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
}
|description= Background color when entry is selected. Only sub first level.
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorStripBackground
|name= colorStripBackground
|type1=Array
|type1= Array
|value1={0,0,0,0}
|value1= { 0, 0, 0, 0 }
|description=
|description= Background color.
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorStripDisabled
|name= colorStripDisabled
|type1=Array
|type1= Array
|value1={1,1,1,0.25}
|value1= { 1, 1, 1, 0.25 }
|description=
|description= Does not seem to do anything.
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorStripSelect
|name= colorStripSelect
|type1=Array
|type1= Array
|value1={0,0,0,1}
|value1= { 0, 0, 0, 1 }
|description=
|description= Does not seem to do anything.
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorStripSelectBackground
|name= colorStripSelectBackground
|type1=Array
|type1= Array
|value1={"(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}
|value1= {
|description=
"(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
}
|description= Background color when entry is selected. First level only!
}}
}}


{{CT|attribute
{{CT|attribute
|name=colorStripText
|name= colorStripText
|type1=Array
|type1= Array
|value1={1,1,1,1}
|value1= { 1, 1, 1, 1 }
|description=
|description= Text color
}}
}}


=== I ===
=== I ===
{{CT|attribute
{{CT|attribute
|name=Items
|name= Items
|type1=Class
|type1= Class
|value1=class Items
|value1= class Items
{
{
items[] = {"File","Edit","View","Attributes","Tools","Options","Preview","Help"};
items[] = { "MissionNew" }; // First level entries
class File
{
text = "Scenario";
items[] = {"MissionNew","MissionOpen","MissionSave","MissionSaveAs","Separator","MissionPublishSteam","MissionExport","MissionMerge","Separator","MissionStats","MissionAddons","MissionFolder","LogFolder","Separator","Exit"};
data = "test1";
value = 1;
};
class MissionNew
class MissionNew
{
{
text = "New";
action = "systemChat str _this"; // Action that is called when entry is selected. _this contains the control and the path to the entry e.g. [control#10, [0, 1, 5]]
data = "MissionNew";
data = "Data"; // Data, see menuSetData, menuData. String only. If set in Eden Editor it means that the functionality is handle in engine
shortcuts[] = {"512 + 0x31"};
default = "true"; // Sets the default state of the entry. Needs type property to be defined
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\new_ca.paa";
opensNewWindow = 1; // ... is added to the action, indicating that a new window will be opened. In this example, displayed text would be "New..."
opensNewWindow = 1;
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\new_ca.paa"; // Picture displayed to the left
shortcuts[] = {"512 + 0x31"}; // Shortcut that will automatically execute attached action
text = "New"; // Text displayed
type = "Checkbox2"; // Control type used for indicating the selection state. Only "Checkbox" seems to work
value = 1337; // Value, see menuSetValue, menuValue. Number only
weblink = "https:// arma3.com/"; // URL, see menuSetURL, menuURL
};
};
class MissionOpen
 
{
class Default; // Default entry. Needs to be defined otherwise error is shown upon creation of the display
text = "Open";
class Separator; // Needs to be defined to create a separator
data = "MissionLoad";
};
shortcuts[] = {"512 + 0x18"};
|description= List of entries ordered in subclasses. The {{hl|Default}} class needs to be defined.
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\open_ca.paa";
opensNewWindow = 1;
};
class MissionSave
{
text = "Save";
data = "MissionSave";
shortcuts[] = {"512 + 0x1F"};
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa";
};
class MissionSaveAs
{
text = "Save As";
data = "MissionSaveAs";
shortcuts[] = {"512 + 1024 + 0x1F"};
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\saveas_ca.paa";
opensNewWindow = 1;
};
class MissionPublishSteam
{
text = "Publish to Steam Workshop";
data = "MissionPublishSteam";
enable = 1;
action = "do3DENAction 'OpenSteamPublishDialog';";
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\steam_ca.paa";
};
class MissionExport
{
text = "Export";
items[] = {"MissionExportSP","MissionExportMP","MissionTerrainBuilder","MissionExportSQF"};
};
class MissionExportSP
{
text = "Export to Singleplayer";
data = "MissionExportSP";
};
class MissionExportMP
{
text = "Export to Multiplayer";
data = "MissionExportMP";
};
class MissionTerrainBuilder
{
text = "Export to Terrain Builder";
data = "MissionExportTerrainBuilder";
action = "[] spawn bis_fnc_3DENExportTerrainBuilder;";
};
class MissionExportSQF
{
text = "Export to SQF";
action = "[] call bis_fnc_3DENExportSQF;";
};
class MissionMerge
{
text = "Merge";
data = "MissionMerge";
shortcuts[] = {"512 + 0x32"};
};
class MissionFolder
{
text = "Open Scenario Folder";
data = "FolderMission";
};
class MissionAddons
{
text = "Show Required Addons";
data = "OpenRequiredAddons";
};
class MissionStats
{
text = "Statistics";
action = "[] call bis_fnc_3DENMissionStats;";
};
class LogFolder
{
text = "Open Log Folder";
data = "FolderLog";
};
class Exit
{
text = "Exit";
data = "Exit3DEN";
};
class Edit
{
text = "Edit";
items[] = {"Undo","Redo","Separator","EntitySelectScreen","Separator","Widget","Grid","Vertical","SurfaceSnapToggle","WaypointSnapToggle","Separator","Space","Mode"};
};
class Undo
{
text = "Undo";
data = "Undo";
shortcuts[] = {"512 + 0x2C"};
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\undo_ca.paa";
};
class Redo
{
text = "Redo";
data = "Redo";
shortcuts[] = {"512 + 0x15","512 + 1024 + 0x2C"};
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\redo_ca.paa";
};
class EntitySelectScreen
{
text = "Select All on Screen";
data = "SelectAllOnScreen";
shortcuts[] = {"512 + 0x1E"};
};
class EntityCut
{
text = "Cut";
data = "CutUnit";
shortcuts[] = {"512 + 0x2D"};
};
class EntityCopy
{
text = "Copy";
data = "CopyUnit";
shortcuts[] = {"512 + 0x2E"};
};
class EntityPaste
{
text = "Paste";
data = "PasteUnit";
shortcuts[] = {"512 + 0x2F"};
};
class EntityPasteOrig
{
text = "Paste on Original Position";
data = "PasteUnitOrig";
shortcuts[] = {"512 + 1024 + 0x2F"};
};
class EntitySimulation
{
xtext = "Preview Simulation";
data = "SimulateUnit";
shortcuts[] = {"512 + 0x19"};
enable = 0;
};
class Widget
{
text = "Transformation Widget";
items[] = {"WidgetToggle","WidgetNone","WidgetTranslation","WidgetRotation","WidgetScaling","WidgetArea"};
};
class WidgetToggle
{
text = "Toggle Widget";
data = "WidgetToggle";
shortcuts[] = {57};
};
class WidgetNone
{
text = "No Widget";
data = "WidgetNone";
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\widget_none_off_ca.paa";
shortcuts[] = {2};
};
class WidgetTranslation
{
text = "Translation Widget";
data = "WidgetTranslation";
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\widget_translation_off_ca.paa";
shortcuts[] = {3};
};
class WidgetRotation
{
text = "Rotation Widget";
data = "WidgetRotation";
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\widget_rotation_off_ca.paa";
shortcuts[] = {4};
};
class WidgetScaling
{
text = "Area Scaling Widget";
data = "WidgetScale";
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\widget_scaling_off_ca.paa";
shortcuts[] = {5};
};
class WidgetArea
{
text = "Area Widget";
data = "WidgetArea";
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\widget_area_off_ca.paa";
shortcuts[] = {6};
};
class WidgetSpace
{
text = "Toggle Widget Coordinate Space";
data = "WidgetSpace";
shortcuts[] = {34};
enable = 0;
};
class WidgetSpaceWorld
{
text = "World";
data = "WidgetSpaceWorld";
enable = 0;
};
class WidgetSpaceLocal
{
text = "Selected Entity";
data = "WidgetSpaceLocal";
enable = 0;
};
class WidgetPosition
{
xtext = "Toggle Position";
data = "WidgetPosition";
shortcuts[] = {34};
enable = 0;
};
class WidgetPositionEntity
{
xtext = "Selected Entity";
data = "WidgetPositionEntity";
enable = 0;
};
class WidgetPositionMean
{
xtext = "Mean Position";
data = "WidgetPositionMean";
enable = 0;
};
class Grid
{
text = "Grid";
items[] = {"GridTranslationToggle","GridRotationToggle","GridScalingToggle","GridDecrease","GridIncrease"};
};
class GridTranslationToggle
{
text = "Toggle Translation Grid";
data = "MoveGridToggle";
shortcuts[] = {39};
type = "CheckBox";
default = "false";
};
class GridRotationToggle
{
text = "Toggle Rotation Grid";
data = "RotateGridToggle";
type = "CheckBox";
default = "false";
};
class GridScalingToggle
{
text = "Toggle Area Scaling Grid";
data = "ScaleGridToggle";
type = "CheckBox";
default = "false";
};
class GridDecrease
{
text = "Decrease Grid Size";
data = "GridDecrease";
shortcuts[] = {26};
action = "['decrease'] call bis_fnc_3DENGrid;";
};
class GridIncrease
{
text = "Increase Grid Size";
data = "GridIncrease";
shortcuts[] = {27};
action = "['increase'] call bis_fnc_3DENGrid;";
};
class Vertical
{
text = "Vertical Mode";
items[] = {"VerticalToggle","VerticalATL","VerticalASL"};
};
class VerticalToggle
{
text = "Toggle Vertical Mode";
data = "VerticalToggle";
shortcuts[] = {40};
};
class VerticalATL
{
text = "Above Terrain Level (ATL)";
data = "VerticalATL";
};
class VerticalASL
{
text = "Above Sea Level (ASL)";
data = "VerticalASL";
};
class SurfaceSnapToggle
{
text = "Toggle Surface Snapping";
data = "SurfaceSnapToggle";
type = "CheckBox";
default = "true";
shortcuts[] = {43};
};
class WaypointSnapToggle
{
text = "Toggle Waypoint Snapping";
data = "WaypointSnapToggle";
type = "CheckBox";
default = "true";
shortcuts[] = {53};
};
class Space
{
text = "Phase";
items[] = {"SpaceMission","SpaceIntro","SpaceOutroWin","SpaceOutroLose"};
};
class SpaceMission
{
text = "Scenario";
data = "MissionPartMission";
};
class SpaceIntro
{
text = "Intro";
data = "MissionPartIntro";
};
class SpaceOutroWin
{
text = "Outro - Win";
data = "MissionPartOutroWin";
};
class SpaceOutroLose
{
text = "Outro - Lose";
data = "MissionPartOutroLoose";
};
class Mode
{
text = "Asset Type";
items[] = {"ModeObject","ModeGroup","ModeTrigger","ModeWaypoint","ModeLogic","ModeMarker","ModeFavorite","SubmodeToggle"};
};
class ModeObject
{
text = "Objects";
data = "SelectObjectMode";
shortcuts[] = {59};
};
class ModeGroup
{
text = "Compositions";
data = "SelectGroupMode";
shortcuts[] = {60};
};
class ModeTrigger
{
text = "Triggers";
data = "SelectTriggerMode";
shortcuts[] = {61};
};
class ModeWaypoint
{
text = "Waypoints";
data = "SelectWaypointMode";
shortcuts[] = {62};
};
|description=List of entries ordered in subclasses. The {{Inline code|Default}} class needs to be defined.
}}
}}


{{CT|attribute
{{CT|attribute
|name=itemSpacingH
|name= itemSpacingH
|type1=Number
|type1= Number
|value1=0.01
|value1= 0.01
|description=Vertical distance between two entries.
|description= Vertical distance between two entries. Will cause icons and text to not be aligned anymore if anything else than default value is used. Real use is unknown and should probably not be changed.
}}
}}


{{CT|attribute
{{CT|attribute
|name=itemSpacingW
|name= itemSpacingW
|type1=Number
|type1= Number
|value1=0.01
|value1= 0.01
|description=Horizontal distance between two entries.
|description= Horizontal distance between two entries. (Seems to have no effect)
}}
}}


=== P ===
=== P ===
{{CT|attribute
{{CT|attribute
|name=pictureCheckboxDisabled
|name= pictureCheckboxDisabled
|type1=String
|type1= String
|value1="#(argb,8,8,3)color(0,0,0,0)"
|value1= "#(argb,8,8,3)color(0,0,0,0)"
|description=
|description= Icon shown if entry was disabled. Seems to have no effect since there is no way to disable an entry.
}}
 
{{CT|attribute
|name=pictureCheckboxEnabled
|type1=String
|value1="\a3\3DEN\Data\Controls\CtrlMenu\pictureCheckboxEnabled_ca.paa"
|description=
}}
 
{{CT|attribute
|name=pictureRadioDisabled
|type1=String
|value1="#(argb,8,8,3)color(0,0,0,0)"
|description=
}}
 
{{CT|attribute
|name=pictureRadioEnabled
|type1=String
|value1="\a3\3DEN\Data\Controls\CtrlMenu\pictureRadioEnabled_ca.paa"
|description=
}}
 
=== R ===
{{CT|attribute
|name=rowHeight
|type1=Number
|value1=0
|description=
}}
}}


Line 540: Line 160:
{{CT|examples}}
{{CT|examples}}


None
== Other Examples ==


== Other Examples ==
<syntaxhighlight lang = "cpp">
<syntaxhighlight lang="cpp">class MenuStrip
class MenuStrip
{
{
idc=120;
idc = 120;
type=CT_MENU_STRIP;
type = CT_MENU_STRIP;
colorStripBackground[]={0,0,0,1};
colorStripBackground[] = { 0, 0, 0, 1 };
colorStripText[]={1,1,1,1};
colorStripText[] = { 1, 1, 1, 1 };
colorStripSelect[]={0,0,0,1};
colorStripSelect[] = { 0, 0, 0, 1 };
colorStripSelectBackground[]=
colorStripSelectBackground[] =
{
{
"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])",
"(profilenamespace getvariable ['GUI_BCG_RGB_R', 0.77])",
"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])",
"(profilenamespace getvariable ['GUI_BCG_RGB_G', 0.51])",
"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])",
"(profilenamespace getvariable ['GUI_BCG_RGB_B', 0.08])",
1
1
};
};
colorStripDisabled[]={1,1,1,0.25};
 
x="safezoneX";
colorStripDisabled[] = { 1, 1, 1, 0.25 };
y="safezoneY";
x = "safezoneX";
w="safezoneW - 5 * (pixelW * pixelGrid * 0.50)";
y = "safezoneY";
h="5 * (pixelH * pixelGrid * 0.50)";
w = "safezoneW - 5 * (pixelW * pixelGrid * 0.50)";
colorStripBackground[]={0,0,0,0};
h = "5 * (pixelH * pixelGrid * 0.50)";
colorBackground[]={0.1,0.1,0.1,1};
colorStripBackground[] = { 0, 0, 0, 0 };
font="RobotoCondensedLight";
colorBackground[] = { 0.1, 0.1, 0.1, 1 };
colorBorder[]={0,0,0,0};
font = "RobotoCondensedLight";
colorText[]={1,1,1,1};
colorBorder[] = { 0, 0, 0, 0 };
colorSelect[]={0,0,0,1};
colorText[] = { 1, 1, 1, 1 };
colorSelectBackground[]=
colorSelect[] = { 0, 0, 0, 1 };
colorSelectBackground[] =
{
{
"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])",
"(profilenamespace getvariable ['GUI_BCG_RGB_R', 0.77])",
"(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])",
"(profilenamespace getvariable ['GUI_BCG_RGB_G', 0.51])",
"(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])",
"(profilenamespace getvariable ['GUI_BCG_RGB_B', 0.08])",
1
1
};
};
colorDisabled[]={1,1,1,0.25};
colorDisabled[] = { 1, 1, 1, 0.25 };
colorPicture[]={1,1,1,1};
colorPicture[] = { 1, 1, 1, 1 };
colorPictureSelect[]={0,0,0,1};
colorPictureSelect[] = { 0, 0, 0, 1 };
colorPictureDisabled[]={1,1,1,0.5};
colorPictureDisabled[] = { 1, 1, 1, 0.5 };
arrow="\a3\3DEN\Data\Controls\ctrlMenu\arrow_ca.paa";
arrow = "\a3\3DEN\Data\Controls\ctrlMenu\arrow_ca.paa";
rowHeight=0;
rowHeight = 0;
itemSpacingW=0.0099999998;
itemSpacingW = 0.0099999998;
itemSpacingH=0.0099999998;
itemSpacingH = 0.0099999998;
pictureCheckboxEnabled="\a3\3DEN\Data\Controls\CtrlMenu\pictureCheckboxEnabled_ca.paa";
pictureCheckboxEnabled = "\a3\3DEN\Data\Controls\CtrlMenu\pictureCheckboxEnabled_ca.paa";
pictureCheckboxDisabled="#(argb,8,8,3)color(0,0,0,0)";
pictureCheckboxDisabled = "#(argb,8,8,3)color(0,0,0,0)";
pictureRadioEnabled="\a3\3DEN\Data\Controls\CtrlMenu\pictureRadioEnabled_ca.paa";
pictureRadioEnabled = "\a3\3DEN\Data\Controls\CtrlMenu\pictureRadioEnabled_ca.paa";
pictureRadioDisabled="#(argb,8,8,3)color(0,0,0,0)";
pictureRadioDisabled = "#(argb,8,8,3)color(0,0,0,0)";
class Items
class Items
{
{
items[]=
items[] =
{
{
"entry1",
"entry1",
Line 595: Line 216:
"entry3",
"entry3",
};
};
class entry1
class entry1
{
{
text="First Entry";
text = "First Entry";
items[]=
items[] =
{
{
"sub1_1",
"sub1_1",
Line 604: Line 226:
};
};
};
};
class sub1_1
class sub1_1
{
{
text="First Sub Entry";
text = "First Sub Entry";
action= systemchat ""Sub entry one."";";
action = "systemchat ""Sub entry one."";";
};
};
class sub1_2
class sub1_2
{
{
text="Second Sub Entry";
text = "Second Sub Entry";
};
};
class entry2
class entry2
{
{
text="Entry 2, no sub menu";
text = "Entry 2, no sub menu";
action="systemchat ""Entry 2."";";
action = "systemchat ""Entry 2."";";
};
};
class entry3
class entry3
{
{
text="Fancy entry 3";
text = "Fancy entry 3";
action ="systemchat ""Entry 3."";";
action = "systemchat ""Entry 3."";";
data="CustomData";
data = "CustomData";
shortcuts[]=  
shortcuts[] =
{
{
"512 + 0x31" // STRG+N
"512 + 0x31" // CTRL+N
};
};
picture="\a3\3DEN\Data\Displays\Display3DEN\ToolBar\new_ca.paa";
 
picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\new_ca.paa";
};
};
class Default;
class Separator;
};
};
};</syntaxhighlight>
};
</syntaxhighlight>


<syntaxhighlight lang="cpp">class RscMenuStrip
<syntaxhighlight lang = "cpp">
class RscMenuStrip
{
{
idd = -1;
idd = -1;
Line 641: Line 273:
class Controls
class Controls
{
{
class MenuStrip: ctrlMenuStrip
class MenuStrip : ctrlMenuStrip
{
{
idc = 1000;
idc = 1000;
Line 650: Line 282:
class Items
class Items
{
{
items[] = //First Level Entries, when editing an existing menu strip, one can use the += operator to add new entries without overwriting the old ones
items[] = // First Level Entries, when editing an existing menu strip, one can use the += operator to add new entries without overwriting the old ones
{
{
"Menu1",
"Menu1",
"Menu2"
"Menu2"
};
};
class Menu1
class Menu1
{
{
text = "Menu 1";
text = "Menu 1";
items[] = //Second Level Entries
items[] = // Second Level Entries
{
{
"WebLink"
"WebLink"
};
};
};
};
class Menu2
class Menu2
{
{
text = "Menu 2";
text = "Menu 2";
items[] = //Second Level Entries
items[] = // Second Level Entries
{
{
"SayHello",
"SayHello",
Line 672: Line 306:
};
};
};
};
class WebLink
class WebLink
{
{
text = "Go to Arma 3 Webpage"; //Display name of menu entry
text = "Go to Arma 3 Webpage"; // Display name of menu entry
picture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa"; //Picture shown in front of text
picture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa"; // Picture shown in front of text
            weblink = "https://arma3.com/"; //Opens a web page in default webbrowser
weblink = "https:// arma3.com/"; // Opens a web page in default webbrowser
opensNewWindow = 1; //Adds ... after text, indicating that this menu entry will open a new display
opensNewWindow = 1; // Adds ... after text, indicating that this menu entry will open a new display
};
};
class SayHello
class SayHello
{
{
text = "Say Hello";
text = "Say Hello";
action = "systemChat 'Hello World!'"; //Code executed when entry is clicked
action = "systemChat 'Hello World!'"; // Code executed when entry is clicked
};
};
class PlayMusic
class PlayMusic
{
{
Line 690: Line 327:
action = "playMusic 'Track15_MainTheme'";
action = "playMusic 'Track15_MainTheme'";
};
};
class Default //Default entries, otherwise error is shown upon creation of the display (Needs further investigation)
 
{
class Default;
text = "Default";
class Separator;
};
};
};
};
};
};
};
};</syntaxhighlight>
};
</syntaxhighlight>
 
 
[[Category: Control Types]]

Latest revision as of 15:49, 20 January 2026

Introduction

Control with expandable sublists. The top bar in 3den uses this CT.

Related commands & functions

Related User Interface Eventhandlers

Alphabetical Order

TokenNames common to most controls, such as x, y, w, h, text, idc... can be found here.
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_MENU_STRIP 47



A

arrow

Type
String
Description
Icon used to navigate from second to third level.
arrow = "\a3\3DEN\Data\Controls\ctrlMenu\arrow_ca.paa";


C

colorBorder

Type
Array
Description
Color of the border drawn around the menu strip and the flyout.
colorBorder[] = { 0, 0, 0, 0 };


colorPicture

Type
Array
Description
Default picture color.
colorPicture[] = { 1, 1, 1, 1 };


colorPictureDisabled

Type
Array
Description
Picture color when menu strip is disabled.
colorPictureDisabled[] = { 1, 1, 1, 0.5 };


colorPictureSelect

Type
Array
Description
Picture color when entry is selected. All levels!
colorPictureSelect[] = { 0, 0, 0, 1 };


colorSelect

Type
Array
Description
Text color when entry is selected. All levels!
colorSelect[] = { 0, 0, 0, 1 };


colorSelectBackground

Type
Array
Description
Background color when entry is selected. Only sub first level.
colorSelectBackground[] = {
	"(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
};


colorStripBackground

Type
Array
Description
Background color.
colorStripBackground[] = { 0, 0, 0, 0 };


colorStripDisabled

Type
Array
Description
Does not seem to do anything.
colorStripDisabled[] = { 1, 1, 1, 0.25 };


colorStripSelect

Type
Array
Description
Does not seem to do anything.
colorStripSelect[] = { 0, 0, 0, 1 };


colorStripSelectBackground

Type
Array
Description
Background color when entry is selected. First level only!
colorStripSelectBackground[] = {
	"(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
};


colorStripText

Type
Array
Description
Text color
colorStripText[] = { 1, 1, 1, 1 };


I

Items

Type
Class
Description
List of entries ordered in subclasses. The Default class needs to be defined.
class Items
{
	items[] = { "MissionNew" }; // First level entries
	class MissionNew
	{
		action = "systemChat str _this"; 									// Action that is called when entry is selected. _this contains the control and the path to the entry e.g. [control#10, [0, 1, 5]]
		data = "Data";														// Data, see menuSetData, menuData. String only. If set in Eden Editor it means that the functionality is handle in engine
		default = "true";													// Sets the default state of the entry. Needs type property to be defined
		opensNewWindow = 1;													// ... is added to the action, indicating that a new window will be opened. In this example, displayed text would be "New..."
		picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\new_ca.paa";	// Picture displayed to the left
		shortcuts[] = {"512 + 0x31"};										// Shortcut that will automatically execute attached action
		text = "New";														// Text displayed
		type = "Checkbox2";													// Control type used for indicating the selection state. Only "Checkbox" seems to work
		value = 1337;														// Value, see menuSetValue, menuValue. Number only
		weblink = "https:// arma3.com/";									// URL, see menuSetURL, menuURL
	};

	class Default; // Default entry. Needs to be defined otherwise error is shown upon creation of the display
	class Separator; // Needs to be defined to create a separator
};


itemSpacingH

Type
Number
Description
Vertical distance between two entries. Will cause icons and text to not be aligned anymore if anything else than default value is used. Real use is unknown and should probably not be changed.
itemSpacingH = 0.01;


itemSpacingW

Type
Number
Description
Horizontal distance between two entries. (Seems to have no effect)
itemSpacingW = 0.01;


P

pictureCheckboxDisabled

Type
String
Description
Icon shown if entry was disabled. Seems to have no effect since there is no way to disable an entry.
pictureCheckboxDisabled = "#(argb,8,8,3)color(0,0,0,0)";




Default Classes

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.


Other Examples

class MenuStrip
{
	idc = 120;
	type = CT_MENU_STRIP;
	colorStripBackground[] = { 0, 0, 0, 1 };
	colorStripText[] = { 1, 1, 1, 1 };
	colorStripSelect[] = { 0, 0, 0, 1 };
	colorStripSelectBackground[] =
	{
		"(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
	};

	colorStripDisabled[] = { 1, 1, 1, 0.25 };
	x = "safezoneX";
	y = "safezoneY";
	w = "safezoneW - 	5 * (pixelW * pixelGrid * 0.50)";
	h = "5 * (pixelH * pixelGrid * 0.50)";
	colorStripBackground[] = { 0, 0, 0, 0 };
	colorBackground[] = { 0.1, 0.1, 0.1, 1 };
	font = "RobotoCondensedLight";
	colorBorder[] = { 0, 0, 0, 0 };
	colorText[] = { 1, 1, 1, 1 };
	colorSelect[] = { 0, 0, 0, 1 };
	colorSelectBackground[] =
	{
		"(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
	};
	colorDisabled[] = { 1, 1, 1, 0.25 };
	colorPicture[] = { 1, 1, 1, 1 };
	colorPictureSelect[] = { 0, 0, 0, 1 };
	colorPictureDisabled[] = { 1, 1, 1, 0.5 };
	arrow = "\a3\3DEN\Data\Controls\ctrlMenu\arrow_ca.paa";
	rowHeight = 0;
	itemSpacingW = 0.0099999998;
	itemSpacingH = 0.0099999998;
	pictureCheckboxEnabled = "\a3\3DEN\Data\Controls\CtrlMenu\pictureCheckboxEnabled_ca.paa";
	pictureCheckboxDisabled = "#(argb,8,8,3)color(0,0,0,0)";
	pictureRadioEnabled = "\a3\3DEN\Data\Controls\CtrlMenu\pictureRadioEnabled_ca.paa";
	pictureRadioDisabled = "#(argb,8,8,3)color(0,0,0,0)";
	class Items
	{
		items[] =
		{
			"entry1",
			"entry2",
			"entry3",
		};

		class entry1
		{
			text = "First Entry";
			items[] =
			{
				"sub1_1",
				"sub1_2"
			};
		};

		class sub1_1
		{
			text = "First Sub Entry";
			action = "systemchat ""Sub entry one."";";
		};

		class sub1_2
		{
			text = "Second Sub Entry";
		};

		class entry2
		{
			text = "Entry 2, no sub menu";
			action = "systemchat ""Entry 2."";";
		};

		class entry3
		{
			text = "Fancy entry 3";
			action = "systemchat ""Entry 3."";";
			data = "CustomData";
			shortcuts[] =
			{
				"512 + 0x31" // CTRL+N
			};

			picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\new_ca.paa";
		};

		class Default;
		class Separator;
	};
};
class RscMenuStrip
{
	idd = -1;
	movingEnable = true;
	enableSimulation = true;
	onLoad = "";
	onUnload = "";
	class Controls
	{
		class MenuStrip : ctrlMenuStrip
		{
			idc = 1000;
			x = safeZoneX;
			y = (safeZoneY + (safezoneH * 0.132));
			w =  safezoneW;
			h = (safezoneH  * 0.03);
			class Items
			{
				items[] = // First Level Entries, when editing an existing menu strip, one can use the += operator to add new entries without overwriting the old ones
				{
					"Menu1",
					"Menu2"
				};

	 			class Menu1
				{
					text = "Menu 1";
					items[] = // Second Level Entries
					{
						"WebLink"
					};
				};

				class Menu2
				{
					text = "Menu 2";
					items[] = // Second Level Entries
					{
						"SayHello",
						"PlayMusic"
					};
				};

				class WebLink
				{
					text = "Go to Arma 3 Webpage"; // Display name of menu entry
					picture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa"; // Picture shown in front of text
					weblink = "https:// arma3.com/"; // Opens a web page in default webbrowser
					opensNewWindow = 1; // Adds ... after text, indicating that this menu entry will open a new display
				};

				class SayHello
				{
					text = "Say Hello";
					action = "systemChat 'Hello World!'"; // Code executed when entry is clicked
				};

				class PlayMusic
				{
					text = "Play Music";
					picture = "\a3\Modules_F_Curator\Data\portraitMusic_ca.paa";
					action = "playMusic 'Track15_MainTheme'";
				};

				class Default;
				class Separator;
			};
		};
	};
};