Exemple #1
0
 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();
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 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;
 }
Exemple #4
0
        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);
                        }
                    }
                }
            }
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
    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);
    }
}
Exemple #7
0
        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);
            }
        }