public void SetKeyLayout(KeyLayout layout) { if (layout == null) return; SuspendLayout(); RemoveKeyLayout(); MinimumSize = layout.MinimumSize; MaximumSize = layout.MaximumSize; Size = layout.Size; var anchorStyle = AnchorStyles.None; var flatStyle = FlatStyle.Flat; var keys = layout.Keys; if (keys != null) for (int i = 0; i < keys.Count; i++) { var k = keys[i]; var b = new Button() { Text = k.Text, Location = k.Rectangle.Location, Size = k.Rectangle.Size, Anchor = anchorStyle, FlatStyle = flatStyle, Tag = k.Keys, BackColor = BackColor, ForeColor = _styles.Control.Color, TabIndex = 1, AutoEllipsis = true }; b.FlatAppearance.BorderSize = 2; b.FlatAppearance.BorderColor = Color.FromArgb(60, 255, 255, 255); b.FlatAppearance.MouseDownBackColor = Color.FromArgb(30, 255, 255, 255); b.FlatAppearance.MouseOverBackColor = Color.FromArgb(20, 255, 255, 255); b.NotifyDefault(false); b.MouseUp += Mouse_Up; Controls.Add(b); } Select(); ResumeLayout(); }
public bool GetKey(byte aScancode, bool released, out KeyEvent keyInfo) { if (KeyLayout == null) { Debugger.DoSend("No KeyLayout"); } keyInfo = KeyLayout.ConvertScanCode(aScancode, ControlPressed, ShiftPressed, AltPressed, Global.NumLock, Global.CapsLock, Global.ScrollLock); return(keyInfo != null); }
public KeyLayout GetKeyLayout() { var l = new KeyLayout() { MaximumSize = MaximumSize, MinimumSize = MinimumSize, Size = Size }; var ls = new List<Key>(); for (int i = 0; i < Controls.Count; i++) { var c = Controls[i]; if (c.Tag?.GetType() != typeof(string)) continue; var r = int.Parse((string)c.Tag); var k = new Key() { Keys = (Keys)r, Rectangle = new Rectangle(c.Location, c.Size), Text = ((Keys)r).ToString() }; ls.Add(k); } l.Keys = ls; return l; }
void Walk(KeyLayout key) { var character = key as CharacterKeyLayout; if (character != null) { var unshifted = character.Value ?? character.Caption; _keystrokes.Add(KeyboardHost.AutoEscape(unshifted)); KeystrokeCasesTest.CheckCovered(unshifted); var shifted = character.ShiftValue ?? character.ShiftCaption ?? (unshifted.ToUpperInvariant() != unshifted ? unshifted.ToUpperInvariant() : unshifted); _keystrokes.Add(KeyboardHost.AutoEscape(shifted)); KeystrokeCasesTest.CheckCovered(shifted); switch (unshifted) { case "{HOME}": case "{END}": case "{LEFT}": case "{RIGHT}": Assert.AreEqual("+" + unshifted, shifted, "Special case shifts"); break; } } else { var group = key as ConditionalGroupLayout; if (group != null) { foreach (var conditional in group.Conditionals) { foreach (var childKey in conditional.Keys) { Walk(childKey); } } } } }
private void _settingChange(object sender, EventArgs e) { if (sender == m_buttons[0]) { if (!m_soundChanged && !w.SoundEnabled) { EODialog.Show(DATCONST1.SETTINGS_SOUND_DISABLED, XNADialogButtons.OkCancel, EODialogStyle.SmallDialogSmallHeader, (o, args) => { if (args.Result == XNADialogResult.OK) { m_soundChanged = true; w.SoundEnabled = !w.SoundEnabled; World.Instance.ActiveMapRenderer.PlayOrStopAmbientNoise(); m_leftSide[0].Text = World.GetString(w.SoundEnabled ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } }); } else { if (!m_soundChanged) { m_soundChanged = true; } w.SoundEnabled = !w.SoundEnabled; World.Instance.ActiveMapRenderer.PlayOrStopAmbientNoise(); m_leftSide[0].Text = World.GetString(w.SoundEnabled ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } } else if (sender == m_buttons[1]) { if (!m_musicChanged && !w.MusicEnabled) { EODialog.Show(DATCONST1.SETTINGS_MUSIC_DISABLED, XNADialogButtons.OkCancel, EODialogStyle.SmallDialogSmallHeader, (o, args) => { if (args.Result == XNADialogResult.OK) { m_musicChanged = true; w.MusicEnabled = !w.MusicEnabled; World.Instance.ActiveMapRenderer.PlayOrStopBackgroundMusic(); m_leftSide[1].Text = World.GetString(w.MusicEnabled ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } }); } else { if (!m_musicChanged) { m_musicChanged = true; } w.MusicEnabled = !w.MusicEnabled; World.Instance.ActiveMapRenderer.PlayOrStopBackgroundMusic(); m_leftSide[1].Text = World.GetString(w.MusicEnabled ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } } else if (sender == m_buttons[2]) { m_keyboard++; if (m_keyboard > KeyLayout.Azerty) { m_keyboard = 0; } m_leftSide[2].Text = World.GetString(DATCONST2.SETTING_KEYBOARD_ENGLISH + (int)m_keyboard); } else if (sender == m_buttons[3]) { if (w.Language != EOLanguage.Portuguese) { w.Language++; } else { w.Language = 0; } _setTextForLanguage(); //need to reset all strings when language changes } else if (sender == m_buttons[4]) { w.HearWhispers = !w.HearWhispers; m_leftSide[4].Text = World.GetString(w.HearWhispers ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); Packet pkt = new Packet(PacketFamily.Global, w.HearWhispers ? PacketAction.Remove : PacketAction.Player); pkt.AddChar(w.HearWhispers ? (byte)'n' : (byte)'y'); w.Client.SendPacket(pkt); } else if (sender == m_buttons[5]) { w.ShowChatBubbles = !w.ShowChatBubbles; m_rightSide[0].Text = World.GetString(w.ShowChatBubbles ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } else if (sender == m_buttons[6]) { w.ShowShadows = !w.ShowShadows; m_rightSide[1].Text = World.GetString(w.ShowShadows ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } else if (sender == m_buttons[7]) { DATCONST2 str; if (w.StrictFilterEnabled) { w.StrictFilterEnabled = false; str = DATCONST2.SETTING_DISABLED; } else if (w.CurseFilterEnabled) { w.CurseFilterEnabled = false; w.StrictFilterEnabled = true; str = DATCONST2.SETTING_EXCLUSIVE; } else { w.CurseFilterEnabled = true; str = DATCONST2.SETTING_NORMAL; } m_rightSide[2].Text = World.GetString(str); } else if (sender == m_buttons[8]) { w.LogChatToFile = !w.LogChatToFile; m_rightSide[3].Text = World.GetString(w.LogChatToFile ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } else if (sender == m_buttons[9]) { w.Interaction = !w.Interaction; m_rightSide[4].Text = World.GetString(w.Interaction ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } }
public override void OnInspectorGUI() { HeathenEngineering.UIX.KeyboardTemplateManager keyboard = target as HeathenEngineering.UIX.KeyboardTemplateManager; if (keyboard.workingTemplate == null) { keyboard.workingTemplate = new HeathenEngineering.UIX.Serialization.KeyboardTemplate() { TemplateName = "New Template" } } ; keyboard.RefreshTemplate(); EditorGUILayout.LabelField("Template", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); if (drawButton("Save As", 45)) { keyboard.RefreshTemplate(); string pathTarget = EditorUtility.SaveFilePanel("Save Keyboard Layout", Application.dataPath, keyboard.workingTemplate.TemplateName, "asset"); if (!string.IsNullOrEmpty(pathTarget)) { try { //XmlSerializer serialize = new XmlSerializer(typeof(HeathenEngineering.UIX.Serialization.KeyboardTemplate)); //StreamWriter fileStream = new StreamWriter(pathTarget); //serialize.Serialize(fileStream, keyboard.workingTemplate); //fileStream.Close(); //fileStream.Dispose(); if (!pathTarget.StartsWith(Application.dataPath)) { Debug.LogError("Key Layouts must be saved within the project's Assets folder."); } else { pathTarget = pathTarget.Replace(Application.dataPath, "Assets"); var fileName = pathTarget.Substring(pathTarget.LastIndexOf("/") + 1); pathTarget = pathTarget.Substring(0, pathTarget.Length - fileName.Length); KeyLayout.SaveLayout(keyboard.keyboard, fileName, pathTarget); } } catch { Debug.LogError("An error occured while attempting to save the keyboard's template data"); } } } if (keyboard.selectedTemplate != null) { if (drawButton("Refresh From", 45)) { ReloadFromTemplate(keyboard); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.LabelField("References", EditorStyles.boldLabel); keyboard.Prototype = EditorGUILayout.ObjectField("Prototype", keyboard.Prototype, typeof(HeathenEngineering.UIX.KeyboardKey), false) as HeathenEngineering.UIX.KeyboardKey; keyboard.Container = EditorGUILayout.ObjectField("Container", keyboard.Container, typeof(RectTransform), true) as RectTransform; EditorGUILayout.Space(); if (keyboard.headerRowTransform != null && keyboard.Container != null && keyboard.Prototype != null) { EditorGUILayout.HelpBox("If you do not intend to load templates at run time you can safely remove the Template Manager without effecting the instantiated keyboard.", MessageType.Info); EditorGUILayout.LabelField("Transforms", EditorStyles.boldLabel); ShowRows(keyboard); } EditorGUILayout.Space(); LoadLayout(keyboard); LoadTemplate(keyboard); if (GUI.changed) { EditorUtility.SetDirty(target); } } void ShowRows(HeathenEngineering.UIX.KeyboardTemplateManager keyboard) { keyboard.headerRowTransform = EditorGUILayout.ObjectField("Header Row", keyboard.headerRowTransform, typeof(RectTransform), true) as RectTransform; if (keyboard.rowTransforms == null) { keyboard.rowTransforms = new System.Collections.Generic.List <RectTransform>(); } int rowCount = EditorGUILayout.IntField("Rows", keyboard.rowTransforms.Count); if (rowCount > keyboard.rowTransforms.Count) { int i = 1; foreach (RectTransform row in keyboard.rowTransforms) { keyboard.rowTransforms[i - 1] = EditorGUILayout.ObjectField("Row " + i.ToString(), row, typeof(RectTransform), true) as RectTransform; i++; } for (int x = 0; x < rowCount - (i - 1); x++) { keyboard.rowTransforms.Add(null); } } else if (rowCount < keyboard.rowTransforms.Count) { List <RectTransform> nTrans = new List <RectTransform>(); for (int i = 0; i < rowCount; i++) { nTrans.Add(keyboard.rowTransforms[i]); } keyboard.rowTransforms.Clear(); keyboard.rowTransforms.AddRange(nTrans); } else { for (int i = 0; i < keyboard.rowTransforms.Count; i++) { RectTransform row = keyboard.rowTransforms[i]; keyboard.rowTransforms[i] = EditorGUILayout.ObjectField("Row " + i.ToString(), row, typeof(RectTransform), true) as RectTransform; } } } //void SaveToTemplate(HeathenEngineering.UIX.KeyboardTemplateManager keyboard) //{ // //TODO: save the current template to disk //} void LoadTemplate(HeathenEngineering.UIX.KeyboardTemplateManager keyboard) { legacyFoldOut = EditorGUILayout.BeginToggleGroup("Load Legacy Templates", legacyFoldOut); if (legacyFoldOut) { EditorGUILayout.LabelField("Current: " + (keyboard.selectedTemplate == null || string.IsNullOrEmpty(keyboard.selectedTemplate.TemplateName) ? "Unnamed" : keyboard.selectedTemplate.TemplateName)); if (keyboard.Prototype != null && keyboard.Container != null) { TextAsset newAsset = EditorGUILayout.ObjectField("Legacy Template", null, typeof(TextAsset), false) as TextAsset; if (newAsset != null) { XmlSerializer deserializer = new XmlSerializer(typeof(HeathenEngineering.UIX.Serialization.KeyboardTemplate)); StringReader reader = new StringReader(newAsset.text); try { HeathenEngineering.UIX.Serialization.KeyboardTemplate result = deserializer.Deserialize(reader) as HeathenEngineering.UIX.Serialization.KeyboardTemplate; reader.Close(); if (result != null) { keyboard.selectedTemplate = result; ReloadFromTemplate(keyboard); } } catch (Exception ex) { Debug.LogError("Failed to read the selected template. Message: " + ex.Message); } } } else { EditorGUILayout.HelpBox("You must provide a key prototype in the Prototype field and a target Rect Transform in the Container field in order to load a template.", MessageType.Info); } EditorGUILayout.Space(); } EditorGUILayout.EndToggleGroup(); } bool legacyFoldOut = false; bool keyTemplate = true; void LoadLayout(HeathenEngineering.UIX.KeyboardTemplateManager keyboard) { keyTemplate = EditorGUILayout.BeginToggleGroup("Load Key Layout", keyTemplate); if (keyTemplate) { if (keyboard.Prototype != null) { KeyLayout newAsset = EditorGUILayout.ObjectField("Layout", null, typeof(KeyLayout), false) as KeyLayout; if (newAsset != null) { newAsset.ApplyTo(keyboard.keyboard, keyboard.Prototype); } } else { EditorGUILayout.HelpBox("You must provide a key prototype in the Prototype field load a key layout.", MessageType.Info); } EditorGUILayout.Space(); } EditorGUILayout.EndToggleGroup(); } void ReloadFromTemplate(HeathenEngineering.UIX.KeyboardTemplateManager keyboard) { try { if (keyboard.selectedTemplate != null) { keyboard.workingTemplate = keyboard.selectedTemplate; keyboard.RefreshKeyboard(); } } catch (Exception ex) { Debug.LogError("Failed to load the selected template. Message: " + ex.Message); } } bool drawButton(string label, float width) { Rect r = EditorGUILayout.BeginHorizontal("Button", GUILayout.Width(width)); if (GUI.Button(r, GUIContent.none)) { return(true); } GUILayout.Label(label); EditorGUILayout.EndHorizontal(); return(false); } bool drawButton(string label) { Rect r = EditorGUILayout.BeginHorizontal("Button"); if (GUI.Button(r, GUIContent.none)) { return(true); } GUILayout.Label(label); EditorGUILayout.EndHorizontal(); return(false); } }
private void _settingChange(object sender, EventArgs e) { if (sender == m_buttons[0]) { if (!m_soundChanged && !w.SoundEnabled) { EODialog.Show(DATCONST1.SETTINGS_SOUND_DISABLED, XNADialogButtons.OkCancel, EODialogStyle.SmallDialogSmallHeader, (o, args) => { if (args.Result == XNADialogResult.OK) { m_soundChanged = true; w.SoundEnabled = !w.SoundEnabled; World.Instance.ActiveMapRenderer.PlayOrStopAmbientNoise(); m_leftSide[0].Text = World.GetString(w.SoundEnabled ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } }); } else { if (!m_soundChanged) m_soundChanged = true; w.SoundEnabled = !w.SoundEnabled; World.Instance.ActiveMapRenderer.PlayOrStopAmbientNoise(); m_leftSide[0].Text = World.GetString(w.SoundEnabled ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } } else if (sender == m_buttons[1]) { if (!m_musicChanged && !w.MusicEnabled) { EODialog.Show(DATCONST1.SETTINGS_MUSIC_DISABLED, XNADialogButtons.OkCancel, EODialogStyle.SmallDialogSmallHeader, (o, args) => { if (args.Result == XNADialogResult.OK) { m_musicChanged = true; w.MusicEnabled = !w.MusicEnabled; World.Instance.ActiveMapRenderer.PlayOrStopBackgroundMusic(); m_leftSide[1].Text = World.GetString(w.MusicEnabled ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } }); } else { if (!m_musicChanged) m_musicChanged = true; w.MusicEnabled = !w.MusicEnabled; World.Instance.ActiveMapRenderer.PlayOrStopBackgroundMusic(); m_leftSide[1].Text = World.GetString(w.MusicEnabled ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } } else if (sender == m_buttons[2]) { m_keyboard++; if (m_keyboard > KeyLayout.Azerty) m_keyboard = 0; m_leftSide[2].Text = World.GetString(DATCONST2.SETTING_KEYBOARD_ENGLISH + (int)m_keyboard); } else if (sender == m_buttons[3]) { if(w.Language != EOLanguage.Portuguese) w.Language++; else w.Language = 0; _setTextForLanguage(); //need to reset all strings when language changes } else if (sender == m_buttons[4]) { w.HearWhispers = !w.HearWhispers; m_leftSide[4].Text = World.GetString(w.HearWhispers ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); Packet pkt = new Packet(PacketFamily.Global, w.HearWhispers ? PacketAction.Remove : PacketAction.Player); pkt.AddChar(w.HearWhispers ? (byte) 'n' : (byte) 'y'); w.Client.SendPacket(pkt); } else if (sender == m_buttons[5]) { w.ShowChatBubbles = !w.ShowChatBubbles; m_rightSide[0].Text = World.GetString(w.ShowChatBubbles ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } else if (sender == m_buttons[6]) { w.ShowShadows = !w.ShowShadows; m_rightSide[1].Text = World.GetString(w.ShowShadows ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } else if (sender == m_buttons[7]) { DATCONST2 str; if (w.StrictFilterEnabled) { w.StrictFilterEnabled = false; str = DATCONST2.SETTING_DISABLED; } else if (w.CurseFilterEnabled) { w.CurseFilterEnabled = false; w.StrictFilterEnabled = true; str = DATCONST2.SETTING_EXCLUSIVE; } else { w.CurseFilterEnabled = true; str = DATCONST2.SETTING_NORMAL; } m_rightSide[2].Text = World.GetString(str); } else if (sender == m_buttons[8]) { w.LogChatToFile = !w.LogChatToFile; m_rightSide[3].Text = World.GetString(w.LogChatToFile ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } else if (sender == m_buttons[9]) { w.Interaction = !w.Interaction; m_rightSide[4].Text = World.GetString(w.Interaction ? DATCONST2.SETTING_ENABLED : DATCONST2.SETTING_DISABLED); } }