Ejemplo n.º 1
0
        public ConfigureController()
        {
            InitializeComponent();
            this.PreviewKeyDown += new KeyEventHandler(HandleEsc);


            _timer.Tick += Timer_Tick;



            // get the mainwindow
            mw = Application.Current.Windows.OfType <MainWindow>().FirstOrDefault();
            //Input.Initialize(mw);

            // set the controller definition from mainwindow
            if (mw.ControllerDefinition == null)
            {
                this.Close();
            }

            ControllerDefinition = mw.ControllerDefinition;

            string vPortStr = "";

            if (ControllerDefinition.VirtualPort > 0)
            {
                vPortStr = " - Virtual Port: " + ControllerDefinition.VirtualPort;
            }


            // set the title
            titleTextBlock.Text = "Configure " + ControllerDefinition.DeviceName + vPortStr;

            // headers
            Label headDesc = new Label();

            headDesc.Content = "Binding";
            headDesc.SetValue(Grid.ColumnProperty, 0);
            headDesc.SetValue(Grid.RowProperty, 0);
            DynamicDataGrid.Children.Add(headDesc);

            Label headConfig1 = new Label();

            headConfig1.Content = "Primary";
            headConfig1.SetValue(Grid.ColumnProperty, 1);
            headConfig1.SetValue(Grid.RowProperty, 0);
            DynamicDataGrid.Children.Add(headConfig1);

            Label headConfig2 = new Label();

            headConfig2.Content = "Secondary";
            headConfig2.SetValue(Grid.ColumnProperty, 2);
            headConfig2.SetValue(Grid.RowProperty, 0);
            DynamicDataGrid.Children.Add(headConfig2);

            Label headConfig3 = new Label();

            headConfig3.Content = "Tertiary";
            headConfig3.SetValue(Grid.ColumnProperty, 3);
            headConfig3.SetValue(Grid.RowProperty, 0);
            DynamicDataGrid.Children.Add(headConfig3);

            Label headCustom = new Label();

            headCustom.Content = "Custom Insert";
            headCustom.SetValue(Grid.ColumnProperty, 4);
            headCustom.SetValue(Grid.RowProperty, 0);
            DynamicDataGrid.Children.Add(headCustom);

            // loop through maplist and populate the dynamic data grid row by row
            for (int i = 0; i < ControllerDefinition.MapList.Count; i++)
            {
                // description
                Label desc = new Label();
                desc.Content = ControllerDefinition.MapList[i].Description;
                desc.SetValue(Grid.ColumnProperty, 0);
                desc.SetValue(Grid.RowProperty, i + 1);
                ToolTip tt = new System.Windows.Controls.ToolTip();
                tt.Content   = ControllerDefinition.MapList[i].MednafenCommand;
                desc.ToolTip = tt;
                KeyboardNavigation.SetIsTabStop(desc, false);
                DynamicDataGrid.Children.Add(desc);


                // Config Primary
                TextBox configInfo = new TextBox();
                configInfo.Name       = "Primary_" + TranslateConfigName(ControllerDefinition.MapList[i].MednafenCommand);
                configInfo.Text       = KeyboardTranslation.SDLCodetoDx(GetConfigItem(ControllerDefinition.MapList[i].MednafenCommand, ConfigOrder.Primary), KeyboardType.UK); //ControllerDefinition.MapList[i].Config;
                configInfo.GotFocus  += TextBox_GotFocus;
                configInfo.LostFocus += TextBox_LostFocus;
                configInfo.KeyDown   += TextBox_KeyDownHandler;
                configInfo.IsReadOnly = true;
                configInfo.MinWidth   = 100;
                configInfo.SetValue(Grid.ColumnProperty, 1);
                configInfo.SetValue(Grid.RowProperty, i + 1);
                KeyboardNavigation.SetTabIndex(configInfo, i + 1);
                DynamicDataGrid.Children.Add(configInfo);

                // Config Secondary
                TextBox configInfo2 = new TextBox();
                configInfo2.Name       = "Secondary_" + TranslateConfigName(ControllerDefinition.MapList[i].MednafenCommand);
                configInfo2.Text       = KeyboardTranslation.SDLCodetoDx(GetConfigItem(ControllerDefinition.MapList[i].MednafenCommand, ConfigOrder.Secondary), KeyboardType.UK); //ControllerDefinition.MapList[i].Config;
                configInfo2.GotFocus  += TextBox_GotFocus;
                configInfo2.LostFocus += TextBox_LostFocus;
                configInfo2.KeyDown   += TextBox_KeyDownHandler;
                configInfo2.IsReadOnly = true;
                configInfo2.MinWidth   = 100;
                configInfo2.SetValue(Grid.ColumnProperty, 2);
                configInfo2.SetValue(Grid.RowProperty, i + 1);
                KeyboardNavigation.SetTabIndex(configInfo2, i + 1 + ControllerDefinition.MapList.Count);
                DynamicDataGrid.Children.Add(configInfo2);

                // Config Tertiary
                TextBox configInfo3 = new TextBox();
                configInfo3.Name       = "Tertiary_" + TranslateConfigName(ControllerDefinition.MapList[i].MednafenCommand);
                configInfo3.Text       = KeyboardTranslation.SDLCodetoDx(GetConfigItem(ControllerDefinition.MapList[i].MednafenCommand, ConfigOrder.Tertiary), KeyboardType.UK); //ControllerDefinition.MapList[i].Config;
                configInfo3.GotFocus  += TextBox_GotFocus;
                configInfo3.LostFocus += TextBox_LostFocus;
                configInfo3.KeyDown   += TextBox_KeyDownHandler;
                configInfo3.IsReadOnly = true;
                configInfo3.MinWidth   = 100;
                configInfo3.SetValue(Grid.ColumnProperty, 3);
                configInfo3.SetValue(Grid.RowProperty, i + 1);
                KeyboardNavigation.SetTabIndex(configInfo3, i + 1 + (ControllerDefinition.MapList.Count * 2));
                DynamicDataGrid.Children.Add(configInfo3);

                // configure button
                Button btn = new Button();
                btn.Content = "Configure";
                btn.Name    = "btn" + TranslateConfigName(ControllerDefinition.MapList[i].MednafenCommand);
                btn.Click  += btnConfigureSingle_Click;

                btn.SetValue(Grid.ColumnProperty, 4);
                btn.SetValue(Grid.RowProperty, i + 1);

                KeyboardNavigation.SetIsTabStop(btn, false);

                DynamicDataGrid.Children.Add(btn);
            }

            // populate the image
            BitmapImage b = GetImage(ControllerDefinition.DeviceName);

            if (b != null)
            {
                img.Source = b;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// handles conversions between how control bindings are displayed versus how mednafen stores them in its config file
        /// </summary>
        /// <param name="input"></param>
        /// <param name="conversionOrder"></param>
        /// <returns></returns>
        public static string ConvertText(string input, ConversionOrder conversionOrder)
        {
            // create the output string
            string output = input;

            switch (conversionOrder)
            {
            // Text is being loaded FROM mednafen config
            case ConversionOrder.Load:
                if (input.StartsWith("keyboard "))
                {
                    // keyboard binding
                    output = KeyboardTranslation.SDLCodetoDx(input, KeyboardType.UK);
                }
                if (input.StartsWith("mouse "))
                {
                    // mouse binding
                    if (input.Contains("mouse 0000000000000000 00000000"))
                    {
                        output = "LeftMouseButton";
                    }
                    if (input.Contains("mouse 0000000000000000 00000001"))
                    {
                        output = "MiddleMouseButton";
                    }
                    if (input.Contains("mouse 0000000000000000 00000002"))
                    {
                        output = "RightMouseButton";
                    }
                    if (input.Contains("mouse 0000000000000000 00000003"))
                    {
                        output = "MouseScrollWheelUp";
                    }
                    if (input.Contains("mouse 0000000000000000 00000004"))
                    {
                        output = "MouseScrollWheelDown";
                    }
                    if (input.Contains("mouse 0000000000000000 00000005"))
                    {
                        output = "MouseButton3";
                    }
                    if (input.Contains("mouse 0000000000000000 00000006"))
                    {
                        output = "MouseButton4";
                    }
                    if (input.Contains("mouse 0000000000000000 00000007"))
                    {
                        output = "MouseButton5";
                    }
                    if (input.Contains("mouse 0000000000000000 00008000"))
                    {
                        output = "MouseX-Axis";
                    }
                    if (input.Contains("mouse 0000000000000000 00008001"))
                    {
                        output = "MouseY-Axis";
                    }
                }
                if (input.StartsWith("joystick "))
                {
                    // joystick binding - not currently used
                }
                break;

            // Text is being saved TO mednafen config
            case ConversionOrder.Save:

                if (input == "LeftMouseButton")
                {
                    output = "mouse 0000000000000000 00000000"; return(output);
                }
                if (input == "MiddleMouseButton")
                {
                    output = "mouse 0000000000000000 00000001"; return(output);
                }
                if (input == "RightMouseButton")
                {
                    output = "mouse 0000000000000000 00000002"; return(output);
                }
                if (input == "MouseScrollWheelUp")
                {
                    output = "mouse 0000000000000000 00000003"; return(output);
                }
                if (input == "MouseScrollWheelDown")
                {
                    output = "mouse 0000000000000000 00000004"; return(output);
                }
                if (input == "MouseButton3")
                {
                    output = "mouse 0000000000000000 00000005"; return(output);
                }
                if (input == "MouseButton4")
                {
                    output = "mouse 0000000000000000 00000006"; return(output);
                }
                if (input == "MouseButton5")
                {
                    output = "mouse 0000000000000000 00000007"; return(output);
                }
                if (input == "MouseX-Axis")
                {
                    output = "mouse 0000000000000000 00008000"; return(output);
                }
                if (input == "MouseY-Axis")
                {
                    output = "mouse 0000000000000000 00008001"; return(output);
                }


                if (!input.StartsWith("mouse ") && !input.StartsWith("joystick "))
                {
                    // assume keyboard
                    output = KeyboardTranslation.DXtoSDLCode(input, KeyboardType.UK);
                }
                break;
            }

            return(output);
        }