// by commy2 #define OFFSET_1 100 #define OFFSET_2 200 closeDialog 0; createDialog "GVAR(OptionsMenu_Dialog)"; GVAR(keyNew) = []; GVAR(keySet) = -1; GVAR(keySave) = 0; GVAR(keyNames) = []; GVAR(MenuPage) = 0; GVAR(OptionNames) = []; GVAR(OptionNamesNew) = []; GVAR(OptionStatesNew) = []; disableSerialization; _dlgMenuDialog = uiNamespace getVariable "GVAR(MenuDialog)"; _ehid_keydown = _dlgMenuDialog displayAddEventHandler ["KeyDown", "_this select 1 > 1"]; _ehid_keyup = _dlgMenuDialog displayAddEventHandler ["KeyUp", "_this select 1 > 1"]; _config = configFile >> "GVAR(Default_Keys)"; _count = count _config; _countPages = ceil (_count / 20) + 1; (_dlgMenuDialog displayCtrl 14) ctrlSetText format ["%1/%2", GVAR(MenuPage) + 1, _countPages]; for "_index" from 0 to (_count - 1 min 19) do { _configFile = _config select _index; _keyName = configName _configFile; _displayName = getText (_configFile >> "displayName"); _isDisabled = getNumber (_configFile >> "disabled") == 1; _keyCode = profileNamespace getVariable format ["AGM_Key_%1", _keyName]; _description = [_keyCode] call GVAR(fnc_revertKeyCodeLocalized); _control1 = _dlgMenuDialog displayCtrl (OFFSET_1 + _index); _control2 = _dlgMenuDialog displayCtrl (OFFSET_2 + _index); _control1 ctrlSetText _displayName; _control2 ctrlSetText _description; _control1 ctrlShow true; _control2 ctrlShow true; GVAR(keyNames) set [_index, _keyName]; }; for "_index" from _count to 19 do { _control1 = _dlgMenuDialog displayCtrl (OFFSET_1 + _index); _control2 = _dlgMenuDialog displayCtrl (OFFSET_2 + _index); _control1 ctrlShow false; _control2 ctrlShow false; }; waitUntil {!dialog}; _dlgMenuDialog displayRemoveEventHandler ["KeyDown", _ehid_keydown]; _dlgMenuDialog displayRemoveEventHandler ["KeyUp", _ehid_keyup]; if (GVAR(keySave) == 1) then { _count0 = count GVAR(keyNew); for "_index" from 0 to (_count0 - 1) do { _key = GVAR(keyNew) select _index; _keyName = _key select 0; _keyCode = _key select 1; profileNamespace setVariable [format ["AGM_Key_%1", _keyName], _keyCode]; }; _count1 = count GVAR(OptionNamesNew); for "_index" from 0 to (_count1 - 1) do { _name = GVAR(OptionNamesNew) select _index; _state = GVAR(OptionStatesNew) select _index; profileNamespace setVariable [_name, _state]; }; if (_count0 > 0 || {_count1 > 0}) then { saveProfileNamespace; [localize "STR_GVAR(ProfileSaved)"] call GVAR(fnc_displayTextStructured); } else { [localize "STR_GVAR(ProfileNotSaved)"] call GVAR(fnc_displayTextStructured); }; } else { [localize "STR_GVAR(ProfileNotSaved)"] call GVAR(fnc_displayTextStructured); }; GVAR(keyNewTemp) = nil; GVAR(keyNames) = nil; GVAR(MenuPage) = nil; GVAR(OptionNames) = nil; GVAR(OptionNamesNew) = nil; GVAR(OptionStatesNew) = nil;