diff --git a/DS4Control/Control.cs b/DS4Control/Control.cs index 183f0d2..3852930 100644 --- a/DS4Control/Control.cs +++ b/DS4Control/Control.cs @@ -288,6 +288,26 @@ namespace DS4Control return String.Empty; } + public string getDS4MacAddress(int index) + { + if (DS4Controllers[index] != null) + { + DS4Device d = DS4Controllers[index]; + if (!d.IsAlive()) + //return "Connecting..."; // awaiting the first battery charge indication + { + var TimeoutThread = new System.Threading.Thread(() => TimeoutConnection(d)); + TimeoutThread.IsBackground = true; + TimeoutThread.Name = "TimeoutFor" + d.MacAddress.ToString(); + TimeoutThread.Start(); + return "Connecting..."; + } + return d.MacAddress; + } + else + return String.Empty; + } + public string getShortDS4ControllerInfo(int index) { if (DS4Controllers[index] != null) @@ -307,7 +327,43 @@ namespace DS4Control { battery = d.Battery + "%"; } - return d.ConnectionType + " " + battery; + return d.ConnectionType + " " + battery + " (" + System.IO.Path.GetFileNameWithoutExtension(Global.getAProfile(index)) + ")"; + } + else + return "None"; + } + + public string getDS4Battery(int index) + { + if (DS4Controllers[index] != null) + { + DS4Device d = DS4Controllers[index]; + String battery; + if (!d.IsAlive()) + battery = "..."; + if (d.Charging) + { + if (d.Battery >= 100) + battery = "Full"; + else + battery = d.Battery + "%+"; + } + else + { + battery = d.Battery + "%"; + } + return battery; + } + else + return "N/A"; + } + + public string getDS4Status(int index) + { + if (DS4Controllers[index] != null) + { + DS4Device d = DS4Controllers[index]; + return d.ConnectionType+""; } else return "None"; @@ -391,39 +447,41 @@ namespace DS4Control public string GetInputkeys(int ind) { DS4State cState = CurrentState[ind]; - if (Mapping.getBoolMapping(DS4Controls.Cross, cState)) return "Cross"; - else if (Mapping.getBoolMapping(DS4Controls.Circle, cState)) return "Circle"; - else if (Mapping.getBoolMapping(DS4Controls.Triangle, cState)) return "Triangle"; - else if (Mapping.getBoolMapping(DS4Controls.Square, cState)) return "Square"; - else if (Mapping.getBoolMapping(DS4Controls.L1, cState)) return "L1"; - else if (Mapping.getBoolMapping(DS4Controls.R1, cState)) return "R1"; - else if (Mapping.getBoolMapping(DS4Controls.L2, cState)) return "L2"; - else if (Mapping.getBoolMapping(DS4Controls.R2, cState)) return "R2"; - else if (Mapping.getBoolMapping(DS4Controls.L3, cState)) return "L3"; - else if (Mapping.getBoolMapping(DS4Controls.R3, cState)) return "R3"; - else if (Mapping.getBoolMapping(DS4Controls.DpadUp, cState)) return "Up"; - else if (Mapping.getBoolMapping(DS4Controls.DpadDown, cState)) return "Down"; - else if (Mapping.getBoolMapping(DS4Controls.DpadLeft, cState)) return "Left"; - else if (Mapping.getBoolMapping(DS4Controls.DpadRight, cState)) return "Right"; - else if (Mapping.getBoolMapping(DS4Controls.Share, cState)) return "Share"; - else if (Mapping.getBoolMapping(DS4Controls.Options, cState)) return "Options"; - else if (Mapping.getBoolMapping(DS4Controls.PS, cState)) return "PS"; - else if (Mapping.getBoolMapping(DS4Controls.LXPos, cState)) return "LS Right"; - else if (Mapping.getBoolMapping(DS4Controls.LXNeg, cState)) return "LS Left"; - else if (Mapping.getBoolMapping(DS4Controls.LYPos, cState)) return "LS Down"; - else if (Mapping.getBoolMapping(DS4Controls.LYNeg, cState)) return "LS Up"; - else if (Mapping.getBoolMapping(DS4Controls.RXPos, cState)) return "RS Right"; - else if (Mapping.getBoolMapping(DS4Controls.RXNeg, cState)) return "RS Left"; - else if (Mapping.getBoolMapping(DS4Controls.RYPos, cState)) return "RS Down"; - else if (Mapping.getBoolMapping(DS4Controls.RYNeg, cState)) return "RS Up"; - else if (Mapping.getBoolMapping(DS4Controls.TouchLeft, cState)) return "Touch Left"; - else if (Mapping.getBoolMapping(DS4Controls.TouchRight, cState)) return "Touch Right"; - else if (Mapping.getBoolMapping(DS4Controls.TouchMulti, cState)) return "Touch Multi"; - else if (Mapping.getBoolMapping(DS4Controls.TouchUpper, cState)) return "Touch Upper"; + if (DS4Controllers[ind] != null) + if (Mapping.getBoolMapping(DS4Controls.Cross, cState)) return "Cross"; + else if (Mapping.getBoolMapping(DS4Controls.Circle, cState)) return "Circle"; + else if (Mapping.getBoolMapping(DS4Controls.Triangle, cState)) return "Triangle"; + else if (Mapping.getBoolMapping(DS4Controls.Square, cState)) return "Square"; + else if (Mapping.getBoolMapping(DS4Controls.L1, cState)) return "L1"; + else if (Mapping.getBoolMapping(DS4Controls.R1, cState)) return "R1"; + else if (Mapping.getBoolMapping(DS4Controls.L2, cState)) return "L2"; + else if (Mapping.getBoolMapping(DS4Controls.R2, cState)) return "R2"; + else if (Mapping.getBoolMapping(DS4Controls.L3, cState)) return "L3"; + else if (Mapping.getBoolMapping(DS4Controls.R3, cState)) return "R3"; + else if (Mapping.getBoolMapping(DS4Controls.DpadUp, cState)) return "Up"; + else if (Mapping.getBoolMapping(DS4Controls.DpadDown, cState)) return "Down"; + else if (Mapping.getBoolMapping(DS4Controls.DpadLeft, cState)) return "Left"; + else if (Mapping.getBoolMapping(DS4Controls.DpadRight, cState)) return "Right"; + else if (Mapping.getBoolMapping(DS4Controls.Share, cState)) return "Share"; + else if (Mapping.getBoolMapping(DS4Controls.Options, cState)) return "Options"; + else if (Mapping.getBoolMapping(DS4Controls.PS, cState)) return "PS"; + else if (Mapping.getBoolMapping(DS4Controls.LXPos, cState)) return "LS Right"; + else if (Mapping.getBoolMapping(DS4Controls.LXNeg, cState)) return "LS Left"; + else if (Mapping.getBoolMapping(DS4Controls.LYPos, cState)) return "LS Down"; + else if (Mapping.getBoolMapping(DS4Controls.LYNeg, cState)) return "LS Up"; + else if (Mapping.getBoolMapping(DS4Controls.RXPos, cState)) return "RS Right"; + else if (Mapping.getBoolMapping(DS4Controls.RXNeg, cState)) return "RS Left"; + else if (Mapping.getBoolMapping(DS4Controls.RYPos, cState)) return "RS Down"; + else if (Mapping.getBoolMapping(DS4Controls.RYNeg, cState)) return "RS Up"; + else if (Mapping.getBoolMapping(DS4Controls.TouchLeft, cState)) return "Touch Left"; + else if (Mapping.getBoolMapping(DS4Controls.TouchRight, cState)) return "Touch Right"; + else if (Mapping.getBoolMapping(DS4Controls.TouchMulti, cState)) return "Touch Multi"; + else if (Mapping.getBoolMapping(DS4Controls.TouchUpper, cState)) return "Touch Upper"; + else return "nothing"; else return "nothing"; } - bool touchreleased = true; + bool touchreleased = true, touchslid = false; byte[] oldtouchvalue = { 0, 0, 0, 0 }; protected virtual void CheckForHotkeys(int deviceID, DS4State cState, DS4State pState) { @@ -450,7 +508,7 @@ namespace DS4Control } } } - if (cState.Touch1 && pState.PS) + if (cState.TouchButton && pState.PS) { if (Global.getTouchSensitivity(deviceID) > 0 && touchreleased) { @@ -469,9 +527,31 @@ namespace DS4Control } } else - touchreleased = true; + touchreleased = true; } + public virtual string TouchpadSlide(int ind) + { + DS4State cState = CurrentState[ind]; + string slidedir = "none"; + if (cState.L1 && cState.R1) + if (touchPad[ind].slideright && !touchslid) + { + slidedir = "right"; + touchslid = true; + } + else if (touchPad[ind].slideleft && !touchslid) + { + slidedir = "left"; + touchslid = true; + } + else if (!touchPad[ind].slideleft && !touchPad[ind].slideright) + { + slidedir = ""; + touchslid = false; + } + return slidedir; + } public virtual void LogDebug(String Data) { Console.WriteLine(System.DateTime.Now.ToString("G") + "> " + Data); @@ -498,7 +578,9 @@ namespace DS4Control uint heavyBoosted = ((uint)heavyMotor * (uint)boost) / 100; if (heavyBoosted > 255) heavyBoosted = 255; - DS4Controllers[deviceNum].setRumble((byte)lightBoosted, (byte)heavyBoosted); + if (deviceNum < 4) + if (DS4Controllers[deviceNum] != null) + DS4Controllers[deviceNum].setRumble((byte)lightBoosted, (byte)heavyBoosted); } public DS4State getDS4State(int ind) diff --git a/DS4Control/Mapping.cs b/DS4Control/Mapping.cs index 9ec98bf..72138db 100644 --- a/DS4Control/Mapping.cs +++ b/DS4Control/Mapping.cs @@ -705,28 +705,28 @@ namespace DS4Control case X360Controls.MouseUp: if (MouseDeltaY == 0) { - MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState); + MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState, 0); MouseDeltaY = -Math.Abs((MouseDeltaY == -2147483648 ? 0 : MouseDeltaY)); } break; case X360Controls.MouseDown: if (MouseDeltaY == 0) { - MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState); + MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState, 1); MouseDeltaY = Math.Abs((MouseDeltaY == -2147483648 ? 0 : MouseDeltaY)); } break; case X360Controls.MouseLeft: if (MouseDeltaX == 0) { - MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState); + MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState, 2); MouseDeltaX = -Math.Abs((MouseDeltaX == -2147483648 ? 0 : MouseDeltaX)); } break; case X360Controls.MouseRight: if (MouseDeltaX == 0) { - MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState); + MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState, 3); MouseDeltaX = Math.Abs((MouseDeltaX == -2147483648 ? 0 : MouseDeltaX)); } break; @@ -743,15 +743,15 @@ namespace DS4Control MappedState.RY = cState.RY; InputMethods.MoveCursorBy(MouseDeltaX, MouseDeltaY); } - public static DateTime mousenow = DateTime.UtcNow; + public static DateTime[] mousenow = { DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow }; public static double mvalue = 0; - private static int getMouseMapping(int device, DS4Controls control, DS4State cState, DS4State pState) + private static int getMouseMapping(int device, DS4Controls control, DS4State cState, DS4State pState, int mnum) { int deadzone = 10; double value = 0; int speed = Global.getButtonMouseSensitivity(device); - DateTime now = mousenow; + DateTime now = mousenow[mnum]; switch (control) { case DS4Controls.LXNeg: @@ -801,11 +801,11 @@ namespace DS4Control case DS4Controls.Square: value = (cState.Square ? Math.Pow(1.01 + speed / 10000d, 100) - 1 : 0); break; case DS4Controls.Triangle: value = (cState.Triangle ? Math.Pow(1.01 + speed / 10000d, 100) - 1 : 0); break; case DS4Controls.Circle: value = (cState.Circle ? Math.Pow(1.01 + speed / 10000d, 100) - 1 : 0); break; - case DS4Controls.L2: value = ((cState.L2 / 2d) / 127d) * Math.Pow(1.01 + speed / 10000d, 100) - 1; break; - case DS4Controls.R2: value = ((cState.R2 / 2d) / 127d) * Math.Pow(1.01 + speed / 10000d, 100) - 1; break; + case DS4Controls.L2: value = Math.Pow(1.01 + speed / 10000d, cState.L2 / 2d) - 1; break; + case DS4Controls.R2: value = Math.Pow(1.01 + speed / 10000d, cState.R2 / 2d) - 1; break; } - if (value != 0) - mvalue = value; + //if (value != 0) + //mvalue = value; bool LXChanged = (Math.Abs(127 - cState.LX) < deadzone); bool LYChanged = (Math.Abs(127 - cState.LY) < deadzone); @@ -815,9 +815,9 @@ namespace DS4Control now = DateTime.UtcNow; if (value <= 1) { - if (now >= mousenow + TimeSpan.FromMilliseconds((1 - value)*250)) + if (now >= mousenow[mnum] + TimeSpan.FromMilliseconds((1 - value) * 250)) { - mousenow = now; + mousenow[mnum] = now; return 1; } else diff --git a/DS4Control/Mouse.cs b/DS4Control/Mouse.cs index df74d43..d7d0614 100644 --- a/DS4Control/Mouse.cs +++ b/DS4Control/Mouse.cs @@ -29,12 +29,16 @@ namespace DS4Control { return "Standard Mode"; } - + public bool slideleft, slideright; public virtual void touchesMoved(object sender, TouchpadEventArgs arg) { cursor.touchesMoved(arg); if (Math.Abs(firstTouch.hwX - arg.touches[0].hwX) > 5 && Math.Abs(firstTouch.hwY - arg.touches[0].hwY) > 5) wheel.touchesMoved(arg); + if (arg.touches[0].hwX - firstTouch.hwX > 300 && !slideleft) + slideright = true; + else if (firstTouch.hwX - arg.touches[0].hwX > 300 && !slideright) + slideleft = true; dev.getCurrentState(s); synthesizeMouseButtons(); //Console.WriteLine(arg.timeStamp.ToString("O") + " " + "moved to " + arg.touches[0].hwX + "," + arg.touches[0].hwY); @@ -58,6 +62,7 @@ namespace DS4Control public virtual void touchesEnded(object sender, TouchpadEventArgs arg) { //Console.WriteLine(arg.timeStamp.ToString("O") + " " + "ended at " + arg.touches[0].hwX + "," + arg.touches[0].hwY); + slideright = slideleft = false; if (Global.getTapSensitivity(deviceNum) != 0) { diff --git a/DS4Control/ScpUtil.cs b/DS4Control/ScpUtil.cs index 9af7c02..2a1cce5 100644 --- a/DS4Control/ScpUtil.cs +++ b/DS4Control/ScpUtil.cs @@ -471,27 +471,28 @@ namespace DS4Control { protected String m_Profile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Profiles.xml"; protected XmlDocument m_Xdoc = new XmlDocument(); - - public int[] buttonMouseSensitivity = { 25, 25, 25, 25 }; - - public Boolean[] touchpadJitterCompensation = {true, true, true, true}; - public Boolean[] lowerRCOn = { false, false, false, false }; - public Boolean[] ledAsBattery = { false, false, false, false }; - public Boolean[] flashLedLowBattery = { false, false, false, false }; - public Byte[] m_LeftTriggerMiddle = { 0, 0, 0, 0 }, m_RightTriggerMiddle = { 0, 0, 0, 0 }; - public String[] profilePath = { String.Empty, String.Empty, String.Empty, String.Empty }; - public Byte[] m_Rumble = { 100, 100, 100, 100 }; - public Byte[] touchSensitivity = { 100, 100, 100, 100 }; - public Byte[] LSDeadzone = { 0, 0, 0, 0 }, RSDeadzone = { 0, 0, 0, 0 }; - public Byte[] tapSensitivity = { 0, 0, 0, 0 }; - public bool[] doubleTap = { false, false, false, false }; - public int[] scrollSensitivity = { 0, 0, 0, 0 }; - public double[] rainbow = { 0, 0, 0, 0 }; + //fifth value used to for options, not fifth controller + public int[] buttonMouseSensitivity = { 25, 25, 25, 25, 25 }; + + public Boolean[] touchpadJitterCompensation = {true, true, true, true, true}; + public Boolean[] lowerRCOn = { false, false, false, false, false }; + public Boolean[] ledAsBattery = { false, false, false, false, false }; + public Boolean[] flashLedLowBattery = { false, false, false, false, false }; + public Byte[] m_LeftTriggerMiddle = { 0, 0, 0, 0, 0}, m_RightTriggerMiddle = { 0, 0, 0, 0, 0}; + public String[] profilePath = { String.Empty, String.Empty, String.Empty, String.Empty, String.Empty }; + public Byte[] m_Rumble = { 100, 100, 100, 100, 100 }; + public Byte[] touchSensitivity = { 100, 100, 100, 100, 100 }; + public Byte[] LSDeadzone = { 0, 0, 0, 0, 0 }, RSDeadzone = { 0, 0, 0, 0, 0}; + public Byte[] tapSensitivity = { 0, 0, 0, 0, 0 }; + public bool[] doubleTap = { false, false, false, false, false }; + public int[] scrollSensitivity = { 0, 0, 0, 0, 0 }; + public double[] rainbow = { 0, 0, 0, 0, 0 }; public Byte[][] m_LowLeds = new Byte[][] { new Byte[] {0,0,0}, new Byte[] {0,0,0}, new Byte[] {0,0,0}, + new Byte[] {0,0,0}, new Byte[] {0,0,0} }; public Byte[][] m_Leds = new Byte[][] @@ -500,9 +501,10 @@ namespace DS4Control new Byte[] {255,0,0}, new Byte[] {0,255,0}, new Byte[] {255,0,255}, + new Byte[] {255,255,255} }; - public bool[] flushHIDQueue = { true, true, true, true }; - public int[] idleDisconnectTimeout = { 0, 0, 0, 0 }; + public bool[] flushHIDQueue = { true, true, true, true, true }; + public int[] idleDisconnectTimeout = { 0, 0, 0, 0, 0 }; public Boolean useExclusiveMode = false; public Int32 formWidth = 782; @@ -510,13 +512,13 @@ namespace DS4Control public Boolean startMinimized = false; public double version; public DateTime lastChecked; - public Dictionary[] customMapKeyTypes = {null, null, null, null}; - public Dictionary[] customMapKeys = { null, null, null, null }; - public Dictionary[] customMapMacros = { null, null, null, null }; - public Dictionary[] customMapButtons = { null, null, null, null }; + public Dictionary[] customMapKeyTypes = {null, null, null, null, null}; + public Dictionary[] customMapKeys = { null, null, null, null, null }; + public Dictionary[] customMapMacros = { null, null, null, null, null }; + public Dictionary[] customMapButtons = { null, null, null, null, null }; public BackingStore() { - for (int i = 0; i < 4; i++) + for (int i = 0; i < 5; i++) { customMapKeyTypes[i] = new Dictionary(); customMapKeys[i] = new Dictionary(); diff --git a/DS4Tool/DS4Tool.csproj b/DS4Tool/DS4Tool.csproj index 52a6839..3668b6a 100644 --- a/DS4Tool/DS4Tool.csproj +++ b/DS4Tool/DS4Tool.csproj @@ -102,6 +102,12 @@ KBM360.cs + + Form + + + MessageTextBox.cs + Form @@ -115,6 +121,11 @@ True Resources.resx + + True + True + Resource.es.resx + Form @@ -140,6 +151,9 @@ KBM360.cs + + MessageTextBox.cs + Options.cs @@ -148,7 +162,10 @@ Designer Resources1.Designer.cs - + + ResXFileCodeGenerator + Resource.es.Designer.cs + ScpForm.cs @@ -181,21 +198,30 @@ + + + + + + + + - + + diff --git a/DS4Tool/Hotkeys.Designer.cs b/DS4Tool/Hotkeys.Designer.cs index cc70344..1fa8734 100644 --- a/DS4Tool/Hotkeys.Designer.cs +++ b/DS4Tool/Hotkeys.Designer.cs @@ -28,7 +28,6 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Hotkeys)); this.label1 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); @@ -49,48 +48,68 @@ this.linkInhexSTER = new System.Windows.Forms.LinkLabel(); this.linkJhebbel = new System.Windows.Forms.LinkLabel(); this.linkUninstall = new System.Windows.Forms.LinkLabel(); + this.label6 = new System.Windows.Forms.Label(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.label24 = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.label22 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.label21 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label28 = new System.Windows.Forms.Label(); + this.label29 = new System.Windows.Forms.Label(); + this.label25 = new System.Windows.Forms.Label(); + this.label27 = new System.Windows.Forms.Label(); + this.label26 = new System.Windows.Forms.Label(); + this.label23 = new System.Windows.Forms.Label(); + this.lLBUpdate = new System.Windows.Forms.LinkLabel(); + this.tableLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(26, 31); + this.label1.Location = new System.Drawing.Point(3, 110); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(129, 13); + this.label1.Size = new System.Drawing.Size(108, 13); this.label1.TabIndex = 0; - this.label1.Text = "Finger on Touchpad + PS"; + this.label1.Text = "Click Touchpad + PS"; // // label3 // this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(26, 111); + this.label3.Location = new System.Drawing.Point(3, 176); this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(176, 13); + this.label3.Size = new System.Drawing.Size(125, 13); this.label3.TabIndex = 2; - this.label3.Text = "Tap then hold touchpad (if enabled)"; + this.label3.Text = "Tap then hold touchpad*"; // // label4 // this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(26, 136); + this.label4.Location = new System.Drawing.Point(3, 132); this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(172, 13); + this.label4.Size = new System.Drawing.Size(121, 13); this.label4.TabIndex = 3; - this.label4.Text = "Pad click on lower right (if enabled)"; + this.label4.Text = "Pad click on lower right*"; // // label5 // this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(226, 31); + this.label5.Location = new System.Drawing.Point(193, 110); this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(138, 26); + this.label5.Size = new System.Drawing.Size(231, 13); this.label5.TabIndex = 4; - this.label5.Text = "Turn off touchpad movment\r\n(pressing still works)"; + this.label5.Text = "Turn off touchpad movment (clicking still works)"; // // label7 // this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(226, 111); + this.label7.Location = new System.Drawing.Point(193, 176); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(83, 13); this.label7.TabIndex = 6; @@ -99,27 +118,27 @@ // label8 // this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(226, 136); + this.label8.Location = new System.Drawing.Point(193, 132); this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(165, 26); + this.label8.Size = new System.Drawing.Size(313, 13); this.label8.TabIndex = 7; - this.label8.Text = "Right click (Best used when right \r\nside is used as a mouse button)"; + this.label8.Text = "Right click (Best used when right side is used as a mouse button)"; // // button1 // this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.button1.Location = new System.Drawing.Point(163, 332); + this.button1.Location = new System.Drawing.Point(215, 399); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 8; - this.button1.Text = "Ok"; + this.button1.Text = "Done"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // label9 // this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(226, 87); + this.label9.Location = new System.Drawing.Point(193, 154); this.label9.Name = "label9"; this.label9.Size = new System.Drawing.Size(83, 13); this.label9.TabIndex = 10; @@ -128,34 +147,36 @@ // label10 // this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(26, 87); + this.label10.Location = new System.Drawing.Point(3, 154); this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(171, 13); + this.label10.Size = new System.Drawing.Size(175, 13); this.label10.TabIndex = 9; - this.label10.Text = "Two fingers up/down on touchpad"; + this.label10.Text = "Two fingers up/down on touchpad*"; // // label13 // - this.label13.Location = new System.Drawing.Point(2, 171); + this.label13.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(3, 224); this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(397, 57); + this.label13.Size = new System.Drawing.Size(184, 13); this.label13.TabIndex = 14; - this.label13.Text = resources.GetString("label13.Text"); + this.label13.Text = "When mapping keyboard and mouse:"; this.label13.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // label14 // this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(227, 63); + this.label14.Location = new System.Drawing.Point(193, 88); this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(131, 13); + this.label14.Size = new System.Drawing.Size(201, 13); this.label14.TabIndex = 16; - this.label14.Text = "Disconnect Controller (BT)"; + this.label14.Text = "Disconnect Controller (Only on Bluetooth)"; // // label15 // this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(27, 63); + this.label15.Location = new System.Drawing.Point(3, 88); this.label15.Name = "label15"; this.label15.Size = new System.Drawing.Size(103, 13); this.label15.TabIndex = 15; @@ -165,7 +186,7 @@ // this.linkProfiles.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkProfiles.AutoSize = true; - this.linkProfiles.Location = new System.Drawing.Point(292, 337); + this.linkProfiles.Location = new System.Drawing.Point(378, 404); this.linkProfiles.Name = "linkProfiles"; this.linkProfiles.Size = new System.Drawing.Size(94, 13); this.linkProfiles.TabIndex = 17; @@ -177,7 +198,7 @@ // this.linkElectro.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkElectro.AutoSize = true; - this.linkElectro.Location = new System.Drawing.Point(215, 273); + this.linkElectro.Location = new System.Drawing.Point(272, 374); this.linkElectro.Name = "linkElectro"; this.linkElectro.Size = new System.Drawing.Size(149, 13); this.linkElectro.TabIndex = 18; @@ -189,7 +210,7 @@ // this.linkJays2Kings.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkJays2Kings.AutoSize = true; - this.linkJays2Kings.Location = new System.Drawing.Point(95, 273); + this.linkJays2Kings.Location = new System.Drawing.Point(17, 374); this.linkJays2Kings.Name = "linkJays2Kings"; this.linkJays2Kings.Size = new System.Drawing.Size(60, 13); this.linkJays2Kings.TabIndex = 18; @@ -201,7 +222,7 @@ // this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(146, 251); + this.label2.Location = new System.Drawing.Point(203, 352); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(109, 13); this.label2.TabIndex = 13; @@ -209,19 +230,19 @@ // // lbAbout // - this.lbAbout.AutoSize = true; this.lbAbout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbAbout.Location = new System.Drawing.Point(26, 9); + this.lbAbout.Location = new System.Drawing.Point(3, 9); this.lbAbout.Name = "lbAbout"; - this.lbAbout.Size = new System.Drawing.Size(243, 13); + this.lbAbout.Size = new System.Drawing.Size(515, 19); this.lbAbout.TabIndex = 0; this.lbAbout.Text = "DS4Windows - Jays2Kings Build (Version "; + this.lbAbout.TextAlign = System.Drawing.ContentAlignment.TopCenter; // // linkInhexSTER // this.linkInhexSTER.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkInhexSTER.AutoSize = true; - this.linkInhexSTER.Location = new System.Drawing.Point(38, 300); + this.linkInhexSTER.Location = new System.Drawing.Point(95, 374); this.linkInhexSTER.Name = "linkInhexSTER"; this.linkInhexSTER.Size = new System.Drawing.Size(159, 13); this.linkInhexSTER.TabIndex = 18; @@ -233,7 +254,7 @@ // this.linkJhebbel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkJhebbel.AutoSize = true; - this.linkJhebbel.Location = new System.Drawing.Point(268, 300); + this.linkJhebbel.Location = new System.Drawing.Point(450, 374); this.linkJhebbel.Name = "linkJhebbel"; this.linkJhebbel.Size = new System.Drawing.Size(41, 13); this.linkJhebbel.TabIndex = 18; @@ -245,7 +266,7 @@ // this.linkUninstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkUninstall.AutoSize = true; - this.linkUninstall.Location = new System.Drawing.Point(12, 337); + this.linkUninstall.Location = new System.Drawing.Point(35, 404); this.linkUninstall.Name = "linkUninstall"; this.linkUninstall.Size = new System.Drawing.Size(106, 13); this.linkUninstall.TabIndex = 17; @@ -253,36 +274,253 @@ this.linkUninstall.Text = "Uninstall VBus Driver"; this.linkUninstall.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkUninstall_LinkClicked); // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(193, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(59, 13); + this.label6.TabIndex = 14; + this.label6.Text = "Left Touch"; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel1.Controls.Add(this.label24, 0, 11); + this.tableLayoutPanel1.Controls.Add(this.label20, 0, 9); + this.tableLayoutPanel1.Controls.Add(this.label22, 1, 9); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 5); + this.tableLayoutPanel1.Controls.Add(this.label17, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.label5, 1, 5); + this.tableLayoutPanel1.Controls.Add(this.label6, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.label18, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.label11, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.label10, 0, 7); + this.tableLayoutPanel1.Controls.Add(this.label19, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.label9, 1, 7); + this.tableLayoutPanel1.Controls.Add(this.label12, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.label3, 0, 8); + this.tableLayoutPanel1.Controls.Add(this.label13, 0, 10); + this.tableLayoutPanel1.Controls.Add(this.label21, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.label7, 1, 8); + this.tableLayoutPanel1.Controls.Add(this.label4, 0, 6); + this.tableLayoutPanel1.Controls.Add(this.label15, 0, 4); + this.tableLayoutPanel1.Controls.Add(this.label16, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.label8, 1, 6); + this.tableLayoutPanel1.Controls.Add(this.label14, 1, 4); + this.tableLayoutPanel1.Controls.Add(this.label28, 1, 12); + this.tableLayoutPanel1.Controls.Add(this.label29, 1, 11); + this.tableLayoutPanel1.Controls.Add(this.label25, 0, 12); + this.tableLayoutPanel1.Controls.Add(this.label27, 1, 13); + this.tableLayoutPanel1.Controls.Add(this.label26, 0, 13); + this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 31); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 14; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(513, 318); + this.tableLayoutPanel1.TabIndex = 19; + // + // label24 + // + this.label24.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.label24.AutoSize = true; + this.label24.Location = new System.Drawing.Point(3, 246); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(40, 13); + this.label24.TabIndex = 14; + this.label24.Text = "Toggle"; + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Location = new System.Drawing.Point(3, 198); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(172, 13); + this.label20.TabIndex = 14; + this.label20.Text = "L1+R1+Touchpad Slide left or right"; + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Location = new System.Drawing.Point(193, 198); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(108, 13); + this.label22.TabIndex = 14; + this.label22.Text = "Cycle through profiles"; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(3, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(129, 13); + this.label17.TabIndex = 14; + this.label17.Text = "Click left side of touchpad"; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(3, 22); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(135, 13); + this.label18.TabIndex = 14; + this.label18.Text = "Click right side of touchpad"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(193, 22); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(66, 13); + this.label11.TabIndex = 14; + this.label11.Text = "Right Touch"; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(3, 44); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(146, 13); + this.label19.TabIndex = 14; + this.label19.Text = "Click touchpad with 2 fingers "; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(193, 44); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(56, 13); + this.label12.TabIndex = 14; + this.label12.Text = "Multitouch"; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Location = new System.Drawing.Point(3, 66); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(141, 13); + this.label21.TabIndex = 14; + this.label21.Text = "Click upper part of touchpad"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(193, 66); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(70, 13); + this.label16.TabIndex = 14; + this.label16.Text = "Upper Touch"; + // + // label28 + // + this.label28.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.label28.AutoSize = true; + this.label28.Location = new System.Drawing.Point(193, 268); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(160, 13); + this.label28.TabIndex = 14; + this.label28.Text = "Assign multiple keys to one input"; + // + // label29 + // + this.label29.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.label29.AutoSize = true; + this.label29.Location = new System.Drawing.Point(193, 246); + this.label29.Name = "label29"; + this.label29.Size = new System.Drawing.Size(313, 13); + this.label29.TabIndex = 14; + this.label29.Text = "Keys are interperted differently. May be needed for certain games"; + // + // label25 + // + this.label25.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.label25.AutoSize = true; + this.label25.Location = new System.Drawing.Point(3, 268); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(37, 13); + this.label25.TabIndex = 14; + this.label25.Text = "Macro"; + // + // label27 + // + this.label27.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.label27.AutoSize = true; + this.label27.Location = new System.Drawing.Point(193, 295); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(296, 13); + this.label27.TabIndex = 14; + this.label27.Text = "The key will remain in a \"held down\" state until pressed again"; + // + // label26 + // + this.label26.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.label26.AutoSize = true; + this.label26.Location = new System.Drawing.Point(3, 295); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(60, 13); + this.label26.TabIndex = 14; + this.label26.Text = "Scan Code"; + // + // label23 + // + this.label23.AutoSize = true; + this.label23.Location = new System.Drawing.Point(451, 9); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(58, 13); + this.label23.TabIndex = 3; + this.label23.Text = "*If enabled"; + // + // lLBUpdate + // + this.lLBUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.lLBUpdate.AutoSize = true; + this.lLBUpdate.Location = new System.Drawing.Point(-2, 9); + this.lLBUpdate.Name = "lLBUpdate"; + this.lLBUpdate.Size = new System.Drawing.Size(96, 13); + this.lLBUpdate.TabIndex = 48; + this.lLBUpdate.TabStop = true; + this.lLBUpdate.Text = "Check for Updates"; + this.lLBUpdate.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lLBUpdate_LinkClicked); + // // Hotkeys // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(399, 359); + this.ClientSize = new System.Drawing.Size(520, 426); + this.Controls.Add(this.lLBUpdate); + this.Controls.Add(this.tableLayoutPanel1); this.Controls.Add(this.linkJhebbel); this.Controls.Add(this.linkInhexSTER); this.Controls.Add(this.linkJays2Kings); this.Controls.Add(this.linkElectro); this.Controls.Add(this.linkUninstall); this.Controls.Add(this.linkProfiles); - this.Controls.Add(this.label14); - this.Controls.Add(this.label15); - this.Controls.Add(this.label13); + this.Controls.Add(this.label23); this.Controls.Add(this.label2); - this.Controls.Add(this.label9); - this.Controls.Add(this.label10); this.Controls.Add(this.button1); - this.Controls.Add(this.label8); - this.Controls.Add(this.label7); - this.Controls.Add(this.label5); - this.Controls.Add(this.label4); - this.Controls.Add(this.label3); this.Controls.Add(this.lbAbout); - this.Controls.Add(this.label1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "Hotkeys"; this.Text = "Help"; + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -310,5 +548,24 @@ private System.Windows.Forms.LinkLabel linkInhexSTER; private System.Windows.Forms.LinkLabel linkJhebbel; private System.Windows.Forms.LinkLabel linkUninstall; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Label label27; + private System.Windows.Forms.Label label28; + private System.Windows.Forms.Label label29; + private System.Windows.Forms.LinkLabel lLBUpdate; } } \ No newline at end of file diff --git a/DS4Tool/Hotkeys.cs b/DS4Tool/Hotkeys.cs index ad84dd3..f1a1635 100644 --- a/DS4Tool/Hotkeys.cs +++ b/DS4Tool/Hotkeys.cs @@ -7,6 +7,8 @@ using System.Linq; using System.Text; using System.Windows.Forms; using DS4Control; +using System.Net; +using System.IO; namespace ScpServer { @@ -58,5 +60,45 @@ namespace ScpServer try { System.Diagnostics.Process.Start(Global.appdatapath + "\\Virtual Bus Driver\\ScpDriver.exe"); } catch { System.Diagnostics.Process.Start(Global.appdatapath + "\\Virtual Bus Driver"); } } + + private void lLBUpdate_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + Uri url = new Uri("https://dl.dropboxusercontent.com/u/16364552/DS4Tool/newest%20version.txt"); //Sorry other devs, gonna have to find your own server + WebClient wc = new WebClient(); + wc.DownloadFileAsync(url, Global.appdatapath + "\\version.txt"); + wc.DownloadFileCompleted += wc_DownloadFileCompleted; + } + + void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) + { + Global.setLastChecked(DateTime.Now); + double newversion; + try + { + if (double.TryParse(File.ReadAllText(Global.appdatapath + "\\version.txt"), out newversion)) + if (newversion > Global.getVersion()) + if (MessageBox.Show("Download now?", "DS4Windows Update Available!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) + { + if (!File.Exists("Updater.exe")) + { + Uri url2 = new Uri("https://dl.dropboxusercontent.com/u/16364552/DS4Tool/Updater.exe"); + WebClient wc2 = new WebClient(); + wc2.DownloadFile(url2, "Updater.exe"); + } + System.Diagnostics.Process.Start("Updater.exe"); + this.Close(); + } + else + File.Delete(Global.appdatapath + "\\version.txt"); + else + { + File.Delete(Global.appdatapath + "\\version.txt"); + MessageBox.Show("You are up to date", "DS4 Updater"); + } + else + File.Delete(Global.appdatapath + "\\version.txt"); + } + catch { }; + } } } diff --git a/DS4Tool/Hotkeys.resx b/DS4Tool/Hotkeys.resx index 3ef9132..1af7de1 100644 --- a/DS4Tool/Hotkeys.resx +++ b/DS4Tool/Hotkeys.resx @@ -117,10 +117,4 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - When mapping as keyboard and mouse: -Toggle - The key will remain in a "held down" state until pressed again -Macro - Assign multiple keys to one input -Scan Code - keys are interperted differently. May be needed for certain games. - \ No newline at end of file diff --git a/DS4Tool/MessageTextBox.Designer.cs b/DS4Tool/MessageTextBox.Designer.cs new file mode 100644 index 0000000..b465cfb --- /dev/null +++ b/DS4Tool/MessageTextBox.Designer.cs @@ -0,0 +1,99 @@ +namespace ScpServer +{ + partial class MessageTextBox + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.tBProfile = new System.Windows.Forms.TextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.button1.Location = new System.Drawing.Point(195, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 2; + this.button1.Text = "Save"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // tBProfile + // + this.tBProfile.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.tBProfile.ForeColor = System.Drawing.SystemColors.GrayText; + this.tBProfile.Location = new System.Drawing.Point(12, 7); + this.tBProfile.Name = "tBProfile"; + this.tBProfile.Size = new System.Drawing.Size(177, 20); + this.tBProfile.TabIndex = 239; + this.tBProfile.Text = ""; + this.tBProfile.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.tBProfile.TextChanged += new System.EventHandler(this.tBProfile_TextChanged); + this.tBProfile.Enter += new System.EventHandler(this.tBProfile_Enter); + this.tBProfile.Leave += new System.EventHandler(this.tBProfile_Leave); + // + // button2 + // + this.button2.Anchor = System.Windows.Forms.AnchorStyles.Top; + this.button2.Location = new System.Drawing.Point(276, 5); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 23); + this.button2.TabIndex = 240; + this.button2.Text = "Cancel"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // MessageTextBox + // + this.AcceptButton = this.button1; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242))))); + this.ClientSize = new System.Drawing.Size(359, 35); + this.Controls.Add(this.button2); + this.Controls.Add(this.tBProfile); + this.Controls.Add(this.button1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "MessageTextBox"; + this.ShowInTaskbar = false; + this.Text = "Type name of New Profile"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox tBProfile; + private System.Windows.Forms.Button button2; + } +} \ No newline at end of file diff --git a/DS4Tool/MessageTextBox.cs b/DS4Tool/MessageTextBox.cs new file mode 100644 index 0000000..604bd8d --- /dev/null +++ b/DS4Tool/MessageTextBox.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using DS4Control; + +namespace ScpServer +{ + public partial class MessageTextBox : Form + { + public string oldfilename; + ScpForm yes; + public MessageTextBox(string name, ScpForm mainwindow) + { + InitializeComponent(); + oldfilename = name; + yes = mainwindow; + } + + private void button1_Click(object sender, EventArgs e) + { + if (tBProfile.Text != null && tBProfile.Text != "" && !tBProfile.Text.Contains("\\") && !tBProfile.Text.Contains("/") && !tBProfile.Text.Contains(":") && !tBProfile.Text.Contains("*") && !tBProfile.Text.Contains("?") && !tBProfile.Text.Contains("\"") && !tBProfile.Text.Contains("<") && !tBProfile.Text.Contains(">") && !tBProfile.Text.Contains("|")) + { + System.IO.File.Copy(Global.appdatapath + "\\Profiles\\" + oldfilename + ".xml", Global.appdatapath + "\\Profiles\\" + tBProfile.Text + ".xml", true); + yes.RefreshProfiles(); + this.Close(); + } + else + MessageBox.Show("Please enter a valid name", "Not valid", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + + private void tBProfile_TextChanged(object sender, EventArgs e) + { + if (tBProfile.Text != null && tBProfile.Text != "" && !tBProfile.Text.Contains("\\") && !tBProfile.Text.Contains("/") && !tBProfile.Text.Contains(":") && !tBProfile.Text.Contains("*") && !tBProfile.Text.Contains("?") && !tBProfile.Text.Contains("\"") && !tBProfile.Text.Contains("<") && !tBProfile.Text.Contains(">") && !tBProfile.Text.Contains("|")) + tBProfile.ForeColor = System.Drawing.SystemColors.WindowText; + else + tBProfile.ForeColor = System.Drawing.SystemColors.GrayText; + } + + private void tBProfile_Enter(object sender, EventArgs e) + { + if (tBProfile.Text == "") + tBProfile.Text = ""; + } + + private void tBProfile_Leave(object sender, EventArgs e) + { + if (tBProfile.Text == "") + tBProfile.Text = ""; + } + + private void button2_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/DS4Tool/MessageTextBox.resx b/DS4Tool/MessageTextBox.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/DS4Tool/MessageTextBox.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/DS4Tool/Options.Designer.cs b/DS4Tool/Options.Designer.cs index 5ac7f3f..3a82e4e 100644 --- a/DS4Tool/Options.Designer.cs +++ b/DS4Tool/Options.Designer.cs @@ -28,7 +28,6 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Options)); this.bnTouchUpper = new System.Windows.Forms.Button(); this.bnTouchMulti = new System.Windows.Forms.Button(); this.bnTouchRight = new System.Windows.Forms.Button(); @@ -135,10 +134,12 @@ this.numUDL2 = new System.Windows.Forms.NumericUpDown(); this.gBTouchpad = new System.Windows.Forms.GroupBox(); this.gBOther = new System.Windows.Forms.GroupBox(); + this.nUDSixaxis = new System.Windows.Forms.NumericUpDown(); this.cBControllerInput = new System.Windows.Forms.CheckBox(); this.gBLightbar = new System.Windows.Forms.GroupBox(); this.gBRumble = new System.Windows.Forms.GroupBox(); this.gBDeadzone = new System.Windows.Forms.GroupBox(); + this.btnCancel = new System.Windows.Forms.Button(); this.advColorDialog = new ScpServer.AdvancedColorDialog(); this.MainPanel.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pBController)).BeginInit(); @@ -175,6 +176,7 @@ ((System.ComponentModel.ISupportInitialize)(this.numUDL2)).BeginInit(); this.gBTouchpad.SuspendLayout(); this.gBOther.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nUDSixaxis)).BeginInit(); this.gBLightbar.SuspendLayout(); this.gBRumble.SuspendLayout(); this.gBDeadzone.SuspendLayout(); @@ -297,7 +299,7 @@ // pBController // this.pBController.Enabled = false; - this.pBController.Image = ((System.Drawing.Image)(resources.GetObject("pBController.Image"))); + this.pBController.Image = global::ScpServer.Properties.Resources.DS4_Controller; this.pBController.Location = new System.Drawing.Point(0, 0); this.pBController.Name = "pBController"; this.pBController.Size = new System.Drawing.Size(245, 132); @@ -1300,7 +1302,7 @@ // tBsixaxisAccelZ // this.tBsixaxisAccelZ.AutoSize = false; - this.tBsixaxisAccelZ.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.tBsixaxisAccelZ.BackColor = System.Drawing.Color.White; this.tBsixaxisAccelZ.Enabled = false; this.tBsixaxisAccelZ.Location = new System.Drawing.Point(394, 6); this.tBsixaxisAccelZ.Maximum = 32767; @@ -1315,19 +1317,19 @@ this.flushHIDQueue.AccessibleName = "flushHIDQueue"; this.flushHIDQueue.AutoSize = true; this.flushHIDQueue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); - this.flushHIDQueue.Location = new System.Drawing.Point(214, 15); + this.flushHIDQueue.Location = new System.Drawing.Point(302, 39); this.flushHIDQueue.Name = "flushHIDQueue"; this.flushHIDQueue.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.flushHIDQueue.Size = new System.Drawing.Size(195, 17); + this.flushHIDQueue.Size = new System.Drawing.Size(112, 30); this.flushHIDQueue.TabIndex = 198; - this.flushHIDQueue.Text = "Flush HID queue after each reading"; + this.flushHIDQueue.Text = "Flush HID queue \r\nafter each reading"; this.flushHIDQueue.UseVisualStyleBackColor = true; this.flushHIDQueue.CheckedChanged += new System.EventHandler(this.flushHIDQueue_CheckedChanged); // // tBsixaxisAccelY // this.tBsixaxisAccelY.AutoSize = false; - this.tBsixaxisAccelY.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.tBsixaxisAccelY.BackColor = System.Drawing.Color.White; this.tBsixaxisAccelY.Enabled = false; this.tBsixaxisAccelY.Location = new System.Drawing.Point(347, 6); this.tBsixaxisAccelY.Maximum = 32767; @@ -1349,7 +1351,7 @@ // tBsixaxisAccelX // this.tBsixaxisAccelX.AutoSize = false; - this.tBsixaxisAccelX.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.tBsixaxisAccelX.BackColor = System.Drawing.Color.White; this.tBsixaxisAccelX.Enabled = false; this.tBsixaxisAccelX.Location = new System.Drawing.Point(301, 6); this.tBsixaxisAccelX.Maximum = 32767; @@ -1371,7 +1373,7 @@ // tBsixaxisGyroZ // this.tBsixaxisGyroZ.AutoSize = false; - this.tBsixaxisGyroZ.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.tBsixaxisGyroZ.BackColor = System.Drawing.Color.White; this.tBsixaxisGyroZ.Enabled = false; this.tBsixaxisGyroZ.Location = new System.Drawing.Point(163, 6); this.tBsixaxisGyroZ.Maximum = 32767; @@ -1393,7 +1395,7 @@ // tBsixaxisGyroY // this.tBsixaxisGyroY.AutoSize = false; - this.tBsixaxisGyroY.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.tBsixaxisGyroY.BackColor = System.Drawing.Color.White; this.tBsixaxisGyroY.Enabled = false; this.tBsixaxisGyroY.Location = new System.Drawing.Point(116, 6); this.tBsixaxisGyroY.Maximum = 32767; @@ -1406,7 +1408,7 @@ // tBsixaxisGyroX // this.tBsixaxisGyroX.AutoSize = false; - this.tBsixaxisGyroX.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); + this.tBsixaxisGyroX.BackColor = System.Drawing.Color.White; this.tBsixaxisGyroX.Enabled = false; this.tBsixaxisGyroX.Location = new System.Drawing.Point(69, 6); this.tBsixaxisGyroX.Maximum = 32767; @@ -1482,9 +1484,9 @@ // // btnRumbleTest // - this.btnRumbleTest.Location = new System.Drawing.Point(149, 11); + this.btnRumbleTest.Location = new System.Drawing.Point(161, 11); this.btnRumbleTest.Name = "btnRumbleTest"; - this.btnRumbleTest.Size = new System.Drawing.Size(53, 23); + this.btnRumbleTest.Size = new System.Drawing.Size(41, 23); this.btnRumbleTest.TabIndex = 214; this.btnRumbleTest.Text = "Test"; this.btnRumbleTest.UseVisualStyleBackColor = true; @@ -1643,7 +1645,7 @@ this.tBProfile.ForeColor = System.Drawing.SystemColors.GrayText; this.tBProfile.Location = new System.Drawing.Point(77, 9); this.tBProfile.Name = "tBProfile"; - this.tBProfile.Size = new System.Drawing.Size(269, 20); + this.tBProfile.Size = new System.Drawing.Size(185, 20); this.tBProfile.TabIndex = 238; this.tBProfile.Text = ""; this.tBProfile.TextChanged += new System.EventHandler(this.tBProfile_TextChanged); @@ -1652,7 +1654,7 @@ // // btnSaveProfile // - this.btnSaveProfile.Location = new System.Drawing.Point(352, 7); + this.btnSaveProfile.Location = new System.Drawing.Point(268, 7); this.btnSaveProfile.Name = "btnSaveProfile"; this.btnSaveProfile.Size = new System.Drawing.Size(78, 23); this.btnSaveProfile.TabIndex = 237; @@ -1789,6 +1791,7 @@ // // gBOther // + this.gBOther.Controls.Add(this.nUDSixaxis); this.gBOther.Controls.Add(this.cBControllerInput); this.gBOther.Controls.Add(this.idleDisconnectTimeout); this.gBOther.Controls.Add(this.lBButtonMouseSens); @@ -1803,17 +1806,39 @@ this.gBOther.TabStop = false; this.gBOther.Text = "Other"; // + // nUDSixaxis + // + this.nUDSixaxis.Location = new System.Drawing.Point(386, 16); + this.nUDSixaxis.Maximum = new decimal(new int[] { + 4, + 0, + 0, + 0}); + this.nUDSixaxis.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nUDSixaxis.Name = "nUDSixaxis"; + this.nUDSixaxis.Size = new System.Drawing.Size(29, 20); + this.nUDSixaxis.TabIndex = 250; + this.nUDSixaxis.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + // // cBControllerInput // this.cBControllerInput.AutoSize = true; this.cBControllerInput.Checked = true; this.cBControllerInput.CheckState = System.Windows.Forms.CheckState.Checked; - this.cBControllerInput.Location = new System.Drawing.Point(303, 38); + this.cBControllerInput.Location = new System.Drawing.Point(187, 17); this.cBControllerInput.Name = "cBControllerInput"; this.cBControllerInput.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.cBControllerInput.Size = new System.Drawing.Size(106, 30); + this.cBControllerInput.Size = new System.Drawing.Size(194, 17); this.cBControllerInput.TabIndex = 242; - this.cBControllerInput.Text = "Use controller to \r\nchange mapping"; + this.cBControllerInput.Text = "Use a controller to change mapping"; this.cBControllerInput.UseVisualStyleBackColor = true; // // gBLightbar @@ -1865,6 +1890,16 @@ this.gBDeadzone.TabStop = false; this.gBDeadzone.Text = "Deadzone"; // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(352, 7); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 249; + this.btnCancel.Text = "Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // // advColorDialog // this.advColorDialog.AnyColor = true; @@ -1875,8 +1910,9 @@ // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); - this.ClientSize = new System.Drawing.Size(885, 297); + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(889, 297); + this.Controls.Add(this.btnCancel); this.Controls.Add(this.gBDeadzone); this.Controls.Add(this.gBRumble); this.Controls.Add(this.gBLightbar); @@ -1941,6 +1977,7 @@ this.gBTouchpad.PerformLayout(); this.gBOther.ResumeLayout(false); this.gBOther.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nUDSixaxis)).EndInit(); this.gBLightbar.ResumeLayout(false); this.gBLightbar.PerformLayout(); this.gBRumble.ResumeLayout(false); @@ -2067,6 +2104,8 @@ private System.Windows.Forms.GroupBox gBRumble; private System.Windows.Forms.GroupBox gBDeadzone; private System.Windows.Forms.CheckBox cBControllerInput; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.NumericUpDown nUDSixaxis; } }  \ No newline at end of file diff --git a/DS4Tool/Options.cs b/DS4Tool/Options.cs index 15b28a4..928f49a 100644 --- a/DS4Tool/Options.cs +++ b/DS4Tool/Options.cs @@ -11,7 +11,7 @@ namespace ScpServer public partial class Options : Form { private DS4Control.Control scpDevice; - private int device; + public int device; private string filename; Byte[] oldLedColor, oldLowLedColor; Timer inputtimer = new Timer(), sixaxisTimer = new Timer(); @@ -21,16 +21,22 @@ namespace ScpServer private Color reg, full; private Image colored, greyscale; ToolTip tp = new ToolTip(); - public Options(DS4Control.Control bus_device, int deviceNum, string name) + ScpForm root; + public Options(DS4Control.Control bus_device, int deviceNum, string name, ScpForm rt) { InitializeComponent(); device = deviceNum; scpDevice = bus_device; filename = name; colored = pBRainbow.Image; + root = rt; greyscale = GreyscaleImage((Bitmap)pBRainbow.Image); + if (deviceNum < 4) + nUDSixaxis.Value = deviceNum + 1; if (filename != "") { + Global.setAProfile(4, name); + Global.LoadProfile(deviceNum); tBProfile.Text = filename; DS4Color color = Global.loadColor(device); redBar.Value = color.red; @@ -92,19 +98,8 @@ namespace ScpServer sixaxisTimer.Start(); #region watch sixaxis data - sixaxisTimer.Tick += - (delegate - { - // MEMS gyro data is all calibrated to roughly -1G..1G for values -0x2000..0x1fff - // Enough additional acceleration and we are no longer mostly measuring Earth's gravity... - // We should try to indicate setpoints of the calibration when exposing this measurement.... - SetDynamicTrackBarValue(tBsixaxisGyroX, (scpDevice.ExposedState[device].GyroX + tBsixaxisGyroX.Value * 2) / 3); - SetDynamicTrackBarValue(tBsixaxisGyroY, (scpDevice.ExposedState[device].GyroY + tBsixaxisGyroY.Value * 2) / 3); - SetDynamicTrackBarValue(tBsixaxisGyroZ, (scpDevice.ExposedState[device].GyroZ + tBsixaxisGyroZ.Value * 2) / 3); - SetDynamicTrackBarValue(tBsixaxisAccelX, (scpDevice.ExposedState[device].AccelX + tBsixaxisAccelX.Value * 2) / 3); - SetDynamicTrackBarValue(tBsixaxisAccelY, (scpDevice.ExposedState[device].AccelY + tBsixaxisAccelY.Value * 2) / 3); - SetDynamicTrackBarValue(tBsixaxisAccelZ, (scpDevice.ExposedState[device].AccelZ + tBsixaxisAccelZ.Value * 2) / 3); - }); + sixaxisTimer.Tick += sixaxisTimer_Tick; + sixaxisTimer.Interval = 1000 / 60; #endregion foreach (System.Windows.Forms.Control control in this.MainPanel.Controls) @@ -131,11 +126,24 @@ namespace ScpServer inputtimer.Start(); inputtimer.Tick += InputDS4; } + + void sixaxisTimer_Tick(object sender, EventArgs e) + { + // MEMS gyro data is all calibrated to roughly -1G..1G for values -0x2000..0x1fff + // Enough additional acceleration and we are no longer mostly measuring Earth's gravity... + // We should try to indicate setpoints of the calibration when exposing this measurement.... + SetDynamicTrackBarValue(tBsixaxisGyroX, (scpDevice.ExposedState[(int)nUDSixaxis.Value -1].GyroX + tBsixaxisGyroX.Value * 2) / 3); + SetDynamicTrackBarValue(tBsixaxisGyroY, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].GyroY + tBsixaxisGyroY.Value * 2) / 3); + SetDynamicTrackBarValue(tBsixaxisGyroZ, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].GyroZ + tBsixaxisGyroZ.Value * 2) / 3); + SetDynamicTrackBarValue(tBsixaxisAccelX, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].AccelX + tBsixaxisAccelX.Value * 2) / 3); + SetDynamicTrackBarValue(tBsixaxisAccelY, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].AccelY + tBsixaxisAccelY.Value * 2) / 3); + SetDynamicTrackBarValue(tBsixaxisAccelZ, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].AccelZ + tBsixaxisAccelZ.Value * 2) / 3); + } private void InputDS4(object sender, EventArgs e) { #region DS4Input - if (Form.ActiveForm == this && cBControllerInput.Checked) - switch (scpDevice.GetInputkeys(device)) + if (Form.ActiveForm == root && cBControllerInput.Checked) + switch (scpDevice.GetInputkeys((int)nUDSixaxis.Value - 1)) { case ("Cross"): Show_ControlsBn(bnCross, e); break; case ("Circle"): Show_ControlsBn(bnCircle, e); break; @@ -358,8 +366,8 @@ namespace ScpServer private void redBar_ValueChanged(object sender, EventArgs e) { int value = ((TrackBar)sender).Value; - int sat = 244 - (value < 244 ? value : 244); - int som = 244 + 11 * (int)(value * 0.0039215); + int sat = 255 - (value < 255 ? value : 255); + int som = 255 + 11 * (int)(value * 0.0039215); ((TrackBar)sender).BackColor = Color.FromArgb(som, sat, sat); alphacolor = Math.Max(redBar.Value, Math.Max(greenBar.Value, blueBar.Value)); reg = Color.FromArgb(redBar.Value, greenBar.Value, blueBar.Value); @@ -371,8 +379,8 @@ namespace ScpServer private void greenBar_ValueChanged(object sender, EventArgs e) { int value = ((TrackBar)sender).Value; - int sat = 244 - (value < 244 ? value : 244); - int som = 244 + 11 * (int)(value * 0.0039215); + int sat = 255 - (value < 255 ? value : 255); + int som = 255 + 11 * (int)(value * 0.0039215); ((TrackBar)sender).BackColor = Color.FromArgb(sat, som, sat); alphacolor = Math.Max(redBar.Value, Math.Max(greenBar.Value, blueBar.Value)); reg = Color.FromArgb(redBar.Value, greenBar.Value, blueBar.Value); @@ -384,8 +392,8 @@ namespace ScpServer private void blueBar_ValueChanged(object sender, EventArgs e) { int value = ((TrackBar)sender).Value; - int sat = 244 - (value < 244 ? value : 244); - int som = 244 + 11 * (int)(value * 0.0039215); + int sat = 255 - (value < 255 ? value : 255); + int som = 255 + 11 * (int)(value * 0.0039215); ((TrackBar)sender).BackColor = Color.FromArgb(sat, sat, som); alphacolor = Math.Max(redBar.Value, Math.Max(greenBar.Value, blueBar.Value)); reg = Color.FromArgb(redBar.Value, greenBar.Value, blueBar.Value); @@ -398,8 +406,8 @@ namespace ScpServer private void lowRedBar_ValueChanged(object sender, EventArgs e) { int value = ((TrackBar)sender).Value; - int sat = 244 - (value < 244 ? value : 244); - int som = 244 + 11 * (int)(value * 0.0039215); + int sat = 255 - (value < 255 ? value : 255); + int som = 255 + 11 * (int)(value * 0.0039215); ((TrackBar)sender).BackColor = Color.FromArgb(som, sat, sat); alphacolor = Math.Max(lowRedBar.Value, Math.Max(lowGreenBar.Value, lowBlueBar.Value)); reg = Color.FromArgb(lowRedBar.Value, lowGreenBar.Value, lowBlueBar.Value); @@ -412,8 +420,8 @@ namespace ScpServer private void lowGreenBar_ValueChanged(object sender, EventArgs e) { int value = ((TrackBar)sender).Value; - int sat = 244 - (value < 244 ? value : 244); - int som = 244 + 11 * (int)(value * 0.0039215); + int sat = 255 - (value < 255 ? value : 255); + int som = 255 + 11 * (int)(value * 0.0039215); ((TrackBar)sender).BackColor = Color.FromArgb(sat, som, sat); alphacolor = Math.Max(lowRedBar.Value, Math.Max(lowGreenBar.Value, lowBlueBar.Value)); reg = Color.FromArgb(lowRedBar.Value, lowGreenBar.Value, lowBlueBar.Value); @@ -426,8 +434,8 @@ namespace ScpServer private void lowBlueBar_ValueChanged(object sender, EventArgs e) { int value = ((TrackBar)sender).Value; - int sat = 244 - (value < 244 ? value : 244); - int som = 244 + 11 * (int)(value * 0.0039215); + int sat = 255 - (value < 255 ? value : 255); + int som = 255 + 11 * (int)(value * 0.0039215); ((TrackBar)sender).BackColor = Color.FromArgb(sat, sat, som); alphacolor = Math.Max(lowRedBar.Value, Math.Max(lowGreenBar.Value, lowBlueBar.Value)); reg = Color.FromArgb(lowRedBar.Value, lowGreenBar.Value, lowBlueBar.Value); @@ -476,12 +484,12 @@ namespace ScpServer { if (((Button)sender).Text == "Test") { - scpDevice.setRumble((byte)numUDHeavyRumble.Value, (byte)numUDLightRumble.Value, device); + scpDevice.setRumble((byte)numUDHeavyRumble.Value, (byte)numUDLightRumble.Value, (int)nUDSixaxis.Value - 1); ((Button)sender).Text = "Stop"; } else { - scpDevice.setRumble(0, 0, device); + scpDevice.setRumble(0, 0, (int)nUDSixaxis.Value - 1); ((Button)sender).Text = "Test"; } } @@ -538,6 +546,8 @@ namespace ScpServer sixaxisTimer.Stop(); for (int i = 0; i < 4; i++) Global.LoadProfile(i); //Refreshes all profiles in case other controllers are using the same profile + inputtimer.Stop(); + sixaxisTimer.Stop(); } private void tBProfile_TextChanged(object sender, EventArgs e) @@ -838,5 +848,10 @@ namespace ScpServer { tp.Hide(((TrackBar)sender)); } + + private void btnCancel_Click(object sender, EventArgs e) + { + this.Close(); + } } } diff --git a/DS4Tool/Options.resx b/DS4Tool/Options.resx index cb851a8..88194df 100644 --- a/DS4Tool/Options.resx +++ b/DS4Tool/Options.resx @@ -117,464 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - iVBORw0KGgoAAAANSUhEUgAAAPUAAACECAYAAABIz20BAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH - DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp - bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE - sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs - AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4 - JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR - 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd - li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF - ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX - wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF - hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55 - 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ - VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB - 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC - qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE - j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I - 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9 - rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG - fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp - B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ - yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC - YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln - yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v - vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp - vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L - Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA - bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z - llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW - ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s - xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 - eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw - YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR - XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm - WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl - xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 - dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 - V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za - Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v - Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb - PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ - 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h - /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr - XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS - fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ - tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAuIwAALiMBeKU/dgAAXz9JREFUeF7tvQe0ZUW1 - 7306x9PdJ/fp3KfP6ZP6dM5N6EjnpqHpppsMlySIgArIFRVBUYliQJGgoogy7vUiilfxmhAUvfq+z2fC - HG4w61XvGO+98b4x6pu/WXvuXbt2rb33CQ2Nnj3Gf6y1qmaFVTX/NWfVqrV2zX//93+7Fyt+/etfu0c+ - /BF33XXXux07d7t1649zu/fscy+78mr3rnff67785a8k0w1jGD/60Y/c+97/kHvpS1/mjjt+o1u6bIXb - uWuP6hI69bvf/z6Z7sWAFyWp//CHP7g3vfktbsnSFW7uvAVlAdmfeOKTyXyG8beH577/fXfppZe5tgUL - k/piWL5itXvnO9+VzONYx4uO1E899SW1yKmOKIe/u/DiZH7D+NvBHXfe5draOpL6kYVdu/a673znu8n8 - jlW8qEj98MMfSjb8vPntufN2N79NRuD8dTHooN+/iN2qYQwcF118aVInwHwhOjoEOI/jOxZ2uy996elk - vsciXjSkZv4TNzagI+bMbdPzOXPmu5kz5+j1vPmlsmDvvv3J/Ifx14sLL7okqQuGWbPnudmiOxxnzZqb - lAFPP/NMMv9jDS8KUn/ta/+abGTAyDpzlhBZOoV5Usv0Ga61dWbZOdN99z+QLGcYf3246667kzoAMAiQ - uWV6q2tpaVVjgO5A7oL3V8DCzh73i1/8IlnOsYRjntSsQvYtXlbSwAZIPWPmbDdjxmzplPmuuXm6dtS8 - +dlzp95Fi92f//znZHnD+OvBj3/yk2T/G5TUQuCWlhni4YkOCSA407iUPNiy9aRkWccSjnlSX3HFlcnG - NczPud+MrjPFdaJjIDQdlhptDffee1+yvGH89YBHm6m+N93QubRcc8SzwzDMkOmb6U8qLbj99juT5R0r - OKZJ/dWvfjXfkNYJ2hHa4L7RbT5ti2PEEZYPD9KGnXXqgYPJMofx1wEWRDu7evN9X9AbrzN4c7Pn+Lm0 - gfh5IhfrTZjW8NxzzyXLPRZwTJMa4hkRzRrPmu2t8fTWWYKZCubRzeJCNcu8yGOGhll864xZOu+mE31n - dbj2ji73y1/9KlnuMF78+OJTT+WIaF7cnLzOeH0xXSmG6s10rzfIY7nROUgfEv3IkTOT5R4LOGZJ/eyz - z2pD0qhhRzTJnLm5BYQd4TvD4EkddJaksXTEt+bm3//6r19Plj2MFz/uvvtt2s9eH6z/Q50p6EuMUI50 - ltYbiNl5gn/5y19Olv1C45gl9dnnnJtvVI4ljZ9rdA9P2AIKcXE6wqyj/umfHkuWPYwXP2655U2usakl - qQNFAz5o5ohOFIejY2E6wlQfVW6G27P35GTZLzSOSVL/7ne/U7dJGzZuUA2jwcVNEreakRPgXukquIBr - XKdC2sJoa2FcX/eqv0+WP4wXP1jMamr2pA51p6AD3r1maoa+sEhmC62l+pMzBKTNpfdhre673z32dpsd - k6R+7LHHfCPmQCPa/IZ5sS6E5RYsbAGDMFvQ8GF+PuUXReZpR9GR+Q4SnLz/1GT5fy3405/+5H75y1+5 - f/u3f3M/+9nP3H/+53+6v/zlL0nZvza8733vz+lOYW6sujMnXET1usLiGEfmzqZLpl9ef2wa6InehJEA - TdPdTTe9IVn+C4ljktSvvuG16joxarLIQcPS6OFKZNuCTj+6SmNzzXzHd1QB2mG5dBytk+ggOqeru9d9 - 7nOfS9bhWMQf//hHJeizz37VfeKJJ9z99z+obub1f3+Du+qql7tLLr3MnXnWObrAuGnzNrdi5RrX2dXj - FrR3Shu063bH1WvWu93iNh45cpZunbz66le6G17zWsnnze49993nHn/84+7pp59xP/nJT9RjStXjWAcD - 2HnnX5if+5oOhIO+6QPgcRZWuqGhSXSKAYB587xAvngFnDh0CAOxbPmqZB1eSBxzpEahUEjIF3aEdUCh - IzpdS6t3o+kUyG+dWA6WJ2AUr6mpcfv3v3BbR7GcvEL6jW/8D/fP//wp9/CHHnH3vuc+d9ttdyhRTzt4 - utuxc5e+HshbaRDUPwXwTwJs0EMRJ02a7MaNH+/Gjh3nxowZ40aPBqPdqFGj9aiQ8DFjxrqx48a5cePG - u4kTJ7lp0+pVUWfPzm2VFODl9C5a4tau2+A2b9mmXs3Z55znXv3q17g773qre+CBB91HPvKo+/Snn3Tf - /Ob/dL/5zW+S9/d846GHHhKD0OQWdHRl6k4MT+o5rqGxWY0EekTbptISZvpjYW9605t1sE3V54XAMUPq - J8Ty7Dt5v5ufe4RVqTNoVJSvsalZOyAlUw5tQg6OI0aMVGI//vjjyXoNBhD25z//hfvWt76tLwT84z9+ - 1N1xx53uipddpdYUsqxavU48hkV5MpWHJ3EM2gLPhvsYKJTUqsxx/ukyY3T3LHJr1m5wW7dtdwdOO+Re - 8cpr3Nvf/g71KL72ta+5H/zgB0fd8n/2s5/Ve2FwW9DRXdLnWUDXcMu5f56KAM4r6SDxDAgqJwPr9ddf - n6zX841jgtS33HKLus+dXYvU6qQasBQFl5zrSh0Qg86grBEjRqgizJg5S9/i2rhxs2DLAFCcju2EELZt - gR98ihEShXO7ro5ABlxGwL0PhtQjR40qyrNwLFevMCwVbyjELepbKl7RAXfpSy53r33dje5DH/qwe+65 - 7yd1YiDo7OzU+5kwYaLuQ0j1exZowwLSMimYR7mws9eNHz/BnXfeecm6PZ94wUn95JNPakfgCrf3Y3Qd - DObIgNCxsMe1ts7KKzauKHFYrGKlHCxQ6ljpY0L4a4g0YyZEtZX8OUUr/Jwj0ypxHA25vP5X64xZv5W8 - vidW45lZs+Y+KXk8PmfOvEfnzVvwyNy58z+s13PnPzlvXttXJP45kf+14L8l3/8b5gd0RThXji426VyT - +rAy7J82UA/CkLFj6b1Wwlyd52/avNWddNJOt3v3PvHYTtFpB+7+hRddrF8nue5V17vXv/5m95Zbb3Nv - vftt7u3veKdOUx587/vcI498RN/is74cOXKkko0pWtz3RwMMBLynzbSG8t///vcndf35wgtO6nnz5mlD - MDdmtEs12lBjXlu7vnHD/NMUYYQoAkqJMqSVL4VyClwgnJJUzo2cBogAMVrlyPksdYHn/W9x/X4rnsiP - pC7fFCvwpfnz2z+1oH3hAwsXdt+8YMHCyxb3Ld3T0dF5Yt+ivpV9ixZ3t7W1z12zak3j4r5l45csWVZz - wvEn1sh5TUdHV83ypStqNqw/rmblijV6vX7dhpotJ26pWbZ0eU13d9/YFStW1S3qW9y6sLO7TcJ6u7p7 - V4p3cZycb+nt7Tsk55f39Cy6UdK+QwaHR0V5PyN4Wur4P6QtGUB+Lue/F0i9/cBk9wb59R7j+5b2sLYJ - 26v4Ogul6ehTyrG+BI0yP+6f5zdwMJXDXTevb9y4cS/oU4YXlNQ33fyGfCeMnzBBiYYrczQ7glG1u6dP - VzqtbAMDC4TPVqAYxfGmwBxR2pkSz3H2bIg679dyb19vW9D+8Y6FXfcISV4rxyuFnOd1dvWc2tXds0XC - lqxYvrJp0aLF45ctXVnT09NXs2rVGiHgiprFi5fWrFqxuqars6dm7ep1Etdbs2LZ8poVy1cIWTtr1q1e - W7Ood7GEL6pZred9Ne3tnXqEwH2Lluj1qpWra9avXa/hnZLXsmUrahYt6qvpkeu1a9bV9PUtqelY2KkD - gdSlRshec9yG4/WcsqnDOpFjgCCvvr7FIySfCZK2qauzt3dhR9fxkscuKetI76LFF8pg9HLBje0dnffK - gPSJ+W3t/4+0xR+kvf4/baMcwnasDJP3R/qsKZp+sCjIoiJu+NHUJ/Jm8GhoLNan9773vUmdfz7wgpH6 - E594wk2ePKWoIViFpYH6Ox+qFrj3C7t6k4QGdXUNOuoWK1B1gMiiyHd0d/fuF6Ve19XV0yEEaxJSTFoq - hBSLqgRaunSZHpcLlkg4WCrWdemS5TW9QmLCFwuxuIaInJMWwoqFrlnUI0cJh5SEI2PnyADCDMSRrw83 - EJ6TzR2B5i/HXhkYOEeOtEsXL9N0nBNOna2uDAKkWblilRwlXtJwTr0ZkIj397dMBqGVev+cS/goaaNp - 4g20iqfxUdqvtF0hbUj4+Npj/oKFumAa9ydza4iNB8hgntKJwQBC85gQQ8S6RFj2xo2bknr/fOAFITWb - Imjk2il1RQ0BamunaIN1iNW2BhtQh0ganevIvIq8GChQiMmTa0vKNPB4BwXBlUopTzawNnOkru2PiPI3 - orQoeIFQfaPkOL6nu7eup3tRs2C6YEYBvXoUmRmi6Hre3eXDuuW6uzsO49irR9Cr514mlPMoPtf8iuIL - 6MqFC6m1Ht1dct4tderkvEfrR9quzm5fVwnPp5Uw8jcZq5/FC7jnZgmbJoPAOAYJGQBHi5exQ+b5/7M6 - a11KavqKRc+pU0t1CTDPZdeYkbtddAqd4LNX6JbpV4ykTgVAxvSKwSMsc8QIMVB1TS/Y670vCKnPOfd8 - N2VqvVjGJnWTwgbxGCGEn6obRHjwTyfQeCxuAToGqxuCAUDjc4MBnehXuOfr80cIW1pOATzLnVxbJ7It - 2mmkKyV2eF2qhFgbFrrk/P8axNXMnw+jAJmS/B856npCZUKn4plL+91hDQ3NaiBsoSoF5rlTp9XpFIu5 - v7rkAshp5Ibo6Ay6w3Nur1de5zwK1+gj/Z0qc8LEya6+vlkGmnr3paef/2+bPe+k5lvc3Cyoq29yEydN - LmmUEKOE9DwqwMLW1TfoAgiPb+gcdvToG1hyreGCenGtp0yZpqMnmzBs8aIc2KhRV9coo2ujmzRpqtYL - C8CjjVJl8gpVqmiFa+bSrBg3NrEd1e8Rroz+yIL+yg8UQ19OI5C2Yf3Be0VhO1aG75t2HQymTmtwkyZP - lalbo/bb2HGFxc9yYIV81MhRYlRym3HGjtUnIOga6zvoJV4jHgB6x5wZFx9dY5qIXCpf8qoTQmO0AF9W - SfHgaOJ5J/WaNev0ZgvEbtaGTTXQ84Fx0jkoA4S2eqEkU6c2qNvG4y8sd0H5sgmNDKM3Cssjjp7ePicu - bRK8wF/u2qOnKNzO47A4LVtDQRiWQphfeB7KlIYV6hSmC+MtLq6/jxN09+pmFdqNAdpb6srkpn2tL3hL - Cus8WfvKEwiC14vVnjChvFd2tIARwe2eKgOMkRrwXD7FhaOF55XUfAQuvFkAmcDzTexRo0aJuz3Vu0mi - DGGdUJLJtdOU3BCejfxeoSC4d/lioGwoKVOGxYuXuK1btrnt23e6bdtOeoGwPRE2FBhMvqT1oG02nrjJ - dcp0ifa1wdMjPPegjWlfvDOzzpDaCF3ouwY1FLXSf0ypUn0/1MAbxOUOjYPpkZ1//OOfSHLiaOB5IzVb - BHldMrxRf16nDeE7aopaTkY8SJdqwMGAFUrynigd4N21gptUXKcCsAQQnDo2ynwbtzoFrDPHDRuOd3v3 - 7FPF3bx5q9ti2BKdG8K4LJkUQjk7D9PF11lhWSgna3GxjJ3HYQk52maHEPvkffvd8uUr3bT6RnXN/Rds - DP6acKZVeTJLf4R9ZAj7TgkmfQzZvD4NLcFx38eIy45X4Mvzc2grH4TX7CxM8eJo4Hkj9UUXXVJ0wwa7 - cTqMhTMahw7hGjJNnFSrHTN+vJ8j+5cUxmgnQfxi8NKCjx87lvnRRE1LHlhlLUPytvxL6pA7hrAwFEkJ - PlmOnEcYO3aCLrKdeupp7tQDp7l9oqzFOCWHrOusMAuPry0sdbTzELGcnYfhQdzJiTC7PjkMD+NDudx5 - kazF+Wu+wX7GGWe5TRu3uNFjxrtJk6YoabWN9eihYdLGKctcDmF/MyjXThHvS3SBQR29gJDoyLhxE3Q+ - DZiTA51boz8iM2GC6JDIkxbDQ13I3+fdrINHXHYKV1/9iiQ3hhrPC6m/973nMjsjM1w6hI7wRM81Xq5z - aMRpEo9MDI0HuTS+Q3064jXvHOw8LDdGpXrbcdz4SWpRdGvjhZfoCv85514wQKTSEna+O7ckvBKy61GU - 13nBueDc6DpEdpwvq5BvcZ1L636+u/ylV7qdu/aK1ZugpA3bOAthn8T9EJ/bNW656g36FOiU6UgaQVwu - nelXqEthWXGYL7tw/v3vD91e9yw8L6Q+/fAZ+ZsMb7bcdSXQSSGZFYQlZA39LQOEabLSE46lZnrxsqte - rl9Uuerlr3RXCzhWi2rlYzneiQ6v8+FVhoXhJXlnnCuCclP5EpYKtziON970BtWPUaPGJd3qavusXD+V - iyuHcrKpuKxy7Jzj8/FhjqNO6mee+XL+5uKbrBYp+aywODwVFiOUSclXk37U6HG64HPzG9/s7rjrbvfG - N906jCpw730PuosvvdzVjGCfQIHUYZvbeX/7JUQ1eWSdlwvrDyz9k5/5TJIrQ4WjTuoTT9xcdEODBfkY - 7DqOs+sUKsUDkynrDtr8DhkBSsmjmYc++Ij76Mc+7j74yKNHCR9JhB2rqFzXz37hS+61N96ki09K6kSb - 0w9FfZGQicNS/RyHcR2GlUtTLq5SeHy9fMXR/VrKUSX1Zz7zL3pD4U1lnaeQio/zs7Dw2sJSsuVgssy9 - Rowco/O8ceMmuomTpgim6mIO4cyfa2pGqXWuqRntJkysdSNHjXV8NeMd77jHvfe973f3vOvdHvfkjkXn - 9xaHp0B8lkwqvFJ+IeK87TzOo5o847zKIZTNnf/DP35UP6gwQgZF2pA2pZ1rRvCIc6Rej5U+GK3hE7RP - ND4XB9kZEEaIvPb3tOLHk2G/lkOWTLX6o2UH52G4nYf48EceTXJmKHBUSc2IFN5IfLPxDWc1QCWk0g0k - f4sfN36ifsFjz559+rcsKNHUafWut3ex6+np0zBWuPsWL3E7d+12xx13ghsjCsfq96UXX+quvOJK95JL - XuJxae4Yw8Kz4kE1MinE6arJhzhDKj5GtXIV8Kprr3OnyDxzxMjRjve3zzv/AvHuNun/nbFyvmnTFnf2 - 2ee4Q4dO1++HnXDCRnfOOee6lSvXuMWLlynZD0hfHDx4uvRf8WaUsE/t3GBhKaTSZF0PFB0dXUnODAWO - Gqmx0vGNVGoMi081XHidOk+liZGVRxw2dtwEt2P7DlWUk0/e7+644w5VnL1797kbbrhBFzseeeQRd/rh - w+622253Z515tpB6nKuvb3J7du8RJT3F7d2zdxhV4PRDh9zxMihibc859zzdd7127Xr3rnfd4+686y79 - PtuG9cfpZpWLLrpIyN6nL8+86lWvcueee67bJYPq4cNH3CUXX+Lmz2/TvqtWF8rJWFx4jOUrpS8XD97/ - /oeS3BksjhqpN2/eVnQDlW5wMLC8q2nIFOI0PJ9cvHixu+mmm92ZZ57ldu/eq38ucIacs6nkhhte4666 - 6mq3Zes2d8edd7pX//0N4haO13nd2jVr3XEbjnPr1q57nrE+ETZYDDbPyuk3nrhRd+DxEs/69RvUUu/d - e7K79CUvcXtkEIXsS5cu16928nWU7Tt2ubPOOtvtl4Fz3rw293cX/J1bL+19rVj8E07YpPJhX2ahnJ6E - cXZejV5VIxOC/esp7gwWR4XU5ax01o33p9Eq5RWjWjkDGw2WLV/pjjv+BJmz1YuijJR5Nm8B+a2si8Ra - MOcj3zVr1otSHa/zbq7Z19zTu8h1s795GBXR17fEtS1o1zWLUaPH6nRm8ZJl2s6sWxBeX9+Qf8uuo6PD - 7ZJBlhdvWNsYP36y7kg77vgTcwtqfgU91pHwaOep68EgzjeMywp75MMfSXJoMDgqpN60aWtRxatpuDg+ - TpN1ngWTCfOpNg82F7AghhKNF8Vhb+9Emas1t84W+O+ajZI5oCe83zZIOt70msk3zubO1+PfFGYnwqrA - bLG2fPfMr143aFuOlLbnNVj2HfDW06jRY1xTy0w3Y06bGyXTHGTYZcaCJseRI/3rj6yeV7u7y1BOD2KU - kyUupV/xMcbq1WuTHBoMhpzUvFppFU7dZIisGzVUigfIGMrFp+JCxDKsojLqQ+hZcxe45WtOdEtXHe+W - rTnBdfWtELJP0H3q7DLSNKKUpGlqnemaZ8zS4zAqo3nmbNfQ3Jp/JGX9wC4uCD1pcq1btGyNtvuy1ce7 - pQIGVl6b9BuOivsthSwZwsO4as7LoVo5g8l/6tNPJrk0UAw5qXfs2F1S+SzEjcB1qmHC8Kz4/pyHiMPt - GrKOHjXaNba0uhVrN7quRctdZ+8yBeRe0LlI95qzKo48rh9KBqFbRFFVaWfkgPIa0TXMnxeHpeQSYRyD - MD1Gcnn5jLCqy0rlG55nyKlMFflx3TJrjrZx+JwZC81efaY7DKCLV6zPt323XC9fK672VJkOibtug6r1 - W3wsd14tqk0Ty5VLR5zFn3Di0H76aEhJ/cMf/rDqGyt3wyCML5yn9u9GkHD/TmvpKF7pOgTl8AJJ28Ie - 17d8nZI6D1Gs3qWrVfHY8E9ZZqlR2DypU1CFzym1WJxCmMXbkbhZrlHlDGHamT6uKL8gLHfNeUrOI3ct - 4dS7qKxItrgeAovnGMhm1imCyXlS+3ej47afMnWaEHqd6wzanvOlq45z02fOFS9qpPZ3uX4EleLLoVxa - 4lLxqXC7zgr/9ne+k+TUQDCkpGajf3xDWTeRCiuRFZIwvzXC0tlFb9pM8G/a5DFxkn+bZvIUJRlpecyk - admEH+YdnMfXnFM2ijVvQae4f2uTpEbpJoyfXERqFLVZ5ojt7R1uzrz5+tnfjvaFSvQOCeO6VRR5oYRx - JIwvpcyWeXj7gg4lF/KEzZozV8+9nITJNZ9ZWrCgXZR6dj4PPs9D2unk27HQzZC0fLVlvoByOzs6VV7T - 8rVUrVOHxpGOa9KQljDypz4mp/WVOMq3snw9fVrec26XNCandYruh3S8J90m5RNPnbhH2gtSh5aavsIK - 8/mhxTqgrihqfyz3DJnD8/ojA3i+z3LpU31bEoZuiT6xDpLXLzMGgrzRkKPqjsjiQVh+YV4xwviUbKo+ - Z555dpJTA8GQkZr/ErIKh5WNUSkeeCL7jxdgDe21y/68E8tcmFcwx43l/6ImqyXwJCff9IvsISibMucm - SI0L2LNklZs8BUvtSW3utyf1LCUUCo/iKrmE6G1tC/Qa8vGHddNnzdY4voONLEQkbdv8dv1OOEQjHkJq - 2OycnJAD8kEQ4iDbvPltXi5HGgYUiNUyc5YSGXnSQizNV+pCHGVSJ9KQljkueelCVli+xOn3uiXM6kke - 5OXDiuvEl0p4bqz3k7vv2XN9+cQzcJAf5eF+F1lq6aexY7DUdeIl0falpG6V9hkp82ojtfZZ7pgCcUpi - Iap9GIMy2azCZqPR+kkj/7ouGCN9Txhx6KD1L2nJg/OwPM4NcblxmIXH50P1f1xDRuqb3/DGkkqmKh6f - h2E2YmKNx4vlpdNShB0oILkRXF+rixSiqI7Sad5Sd1VF6tD9BlgmiAlxIVchbI4S3BPOEw2Sq3WTcwYF - jlxPn+ktHnIcQznNjzCJIxzCWBmEKdlUzlto8iCtlqf5enmufVmFehJG+rjuyPGhQKtnPq3KzSvUk/KD - OvE0ADkbvJCjTsgZqWNLXR2pC5Y632/BOeAV3XxfSxm8W8/70+Enffn45YSJE0UevYD4MuiLDvKdu/Bj - HRgVSE4e5OWteemXc8qhSMei45vffGuSW/3FkJGaLzvElQ1BWHwTBnNzeEk+9XXGcuADcbjdqbgsYMUZ - lXkEQqegRCV1zJE6Zalxvz2p6fi0pcY1xnqhxLiaKDJhqsyi3F0LO1XRcU2RgQDEa1pxYWfJNeEm10mY - XJOeNBCiS/KFfIQvzLnYhJmFxUJD6u6FXZqHppV+gpRWJ/IiHJJ0iRx54DZjUa3uvvxOX08ta6HMi/09 - khb329xuc6sJJ8zfT6dek6dNE6gT+Xn3u5TU7NDrr6UOoV5ZQ4ue80EEBvQa6fdYF1jobJnu/9rI/n8a - cN46g788nil51JWkQ4fQVYwE/c630fAEwjrEeh7qVyqeP5lIcau/GBJSf+ADHyyqXIzUzXFkFMWdgVz9 - JTOgYed1dAk6ddROyVQCX7vwI3RhxNXGl/OY1CzSgGostYFFIY6NohwcWwjTOLFQEgexTBYLrmFy1LS5 - 8AYULXduICy8LqT1ZeJaWxjxVg/KDesUlg/CfCEueViYLdRxbmWZbKos4ovS5tLk5ZARgifn1P0ktemU - Ekz6krS40favpjHQFz5BxYci+WySfvm1ZZabMmaCmzpukp4TRhyffYa06Fs6r1GiB8FnjXJ6ZFB9Cq7j - uPCa/wdPcaw/GBJSr1q9tqSSWTcBiDMLiSuUaqhK4NPBM+e2uY7exYo5YpV0NE7IVsYIHXHxGPJKkiN1 - vFCmK7EJS22kRlEBi0gFa5dbKBMrhcXCGpoF9ItNWFuxbDlLbdYbi0daL2cWHUvtF7mIM0tNGPliHf0c - d4HOZSGbWXvKZkELeeSsTngJkMSsNxZ+Lot8WGApF8vKkXS+LLHUUk/CqA9uPufeUvs6+XpyP95D4Zo8 - yds8FdI1Sj6pOTWDfDlSM7WBmKGlNp2CYFkENLCAynSgsbnFNTRMd3UNM9zEMRNdQ+s8Vy+YPB59aHUN - jXwiWcgvshihVF4GysQroA7oktUrhRRPOD9p+84kx/qDQZOaP0u3SpVDWHlGvcF+7ZE/t0MB6xtlvtTY - pGTorxseA0VihZMOwS3Dis/v6Cl1vwW9S9fIvWANih9peUs2WwmN0qLgtrA1VxRb56pyThhzUYgGGQgn - DffBkTBgcoTZ4hnn5GdxyBFGvpZWBwABpLZFNNJSHgpqeeg1dcqVRZgSVcJMjjk4R67jenIdl09eYT05 - kp+t3uv9y6BDusoLZcWr3wyqi1dukPwLq9/m8TF9q2YdhgGce2kSS1xX1yL9Nt3Vjp/mRkrc7me+7jY/ - +jE3Qs6n1YrVndqiMkpsaYfx0b9xpIBe85013H/VjUD3Q4ScCK9//vOfJ7lWLQZNaj4cR2XiCqbhG5+F - hlRjVAssMqMxncOeYI4sakDCgbrhBtw1FIwRevSoUW7O/A7dbKKbH4zQS1a7nsUrtUz+DywkNcqOoqLM - gGuO6moSJiQjDMUOj3aOm8rRXFtNmwvT6yDM8o/TWjqVy537tDJvzJ2rfO5oZfk8vEtuaUI5rjWfnFxJ - 2lycyVh+hbSFOllY1nNq7d9Jk12fDKhMd/Kkln5YtuZE1yRu/UjpK7WyQmxc7VR/xsCa8q1x/g+9bpqQ - DtJOna4kXv36t7hNDz3qNj38D67z0NlK8vr6mW7qFE9s/s6Xr5qm8k2Be/DeX2HNpsAFf50Ku+E1r01y - rVoMitS//OWvylbQwu3IyIV7kmqAagBhGb1ZvGAhwy9s+KM/l7laM6O+eAEDdsU9IOmkiayUjhd3b51b - IsTu6lupVnvFuk0y55qhWxVRKL3HHKlRWDaQsGDFYhWWqaeTBSjvcmK1sFA9nd1qLXB5sajIsVCFonPE - JcbaqpxYuW7Jw7uwbZo3q9DEYQGRJY3Pt0stIq43i1KQqDdXFmlxu8mH/CAW5RNOGchRT2Sw7nzrHDny - ZWGLOvp6dubryV/XUE9z8bX8nJUmnvJVTq5pD3PTF3V1631797t4Tk17Qmz6e5bkv3L9Jt0X0C0D6bLV - J+iRz/PaQmd/pl2jx4xxLULoehkMpghZ6xtmulESPnfTDnfqD37hxsp547yF7pTv/sTVy/1PqJE+Fjcc - YjPQN8tgEq6IVwLen3oTEBsdyd1jFojncWCKb9ViUKS+4867KlYSIKOElpErdePVgJGYb0DjAulft4jr - pIsb4hblzwXI+JXM2WpJU3lVC1zx8TLnZyCa196tytTevdjVy0gPobEuuH7cI+d5Sy3ALTarBVHMYpmF - QrHZw4yrihzgHGtLnLfoyPu0GmZyAp9fLgw50mq5kq+WmZMLwnzaXDzy5GH5hmFca5h37cOytE6E5eTz - aYN6WllFaXNhKifn/h4lTI6xpQaQgGfIEAg52yKK58Rah18Daa7K3Q5BWgZ/LO+0ulY3YZRMuUSfTv5/ - n3NzT9jqxogMJF/56pvdtsc+pedTJ/NMGo/Ak7q/i7oMOtwPX7gN7zFEzKNPfvKfk5yrBoMi9YqV7Koq - rkwKND6dkLrhaoHbg3XS/9HKkTmJHMEhPy8DpPLqD9hxxGCE1Zgk7uBY6VAUTbesBos0oaVGqdmEoXNT - sZq2+YMwrBqkWSBWFMXGomIlvXUVuVxandMKCnI+jPRsRIEcbOAgDjniNV85MvfGomIdKdceI5EWaxnW - iQ0kLNSRj8oRJjI2r0aOOI5cA8qyeyRPK58/0LdNJawnEEYZpEWOPJlLUwZlka5pZqmlNqA3WGPcbDwm - plq4zxPFg2pobBnQVAtSN7fMlL6b7qZOalAX+6THn3Rr33K3xtfJ/HrqpHol844nn3LLr3udD5cBQEkt - dcVLCPOsBsyz8erMFQchkTkPr/nUdIpz1WDApH766WcyK1Q4r9OOwR1O3Wh/AEFxsY24zKVwoerrxYUC - co57ZNYb2WoWNSoBJdJdRNIhrAVgUXQhLbdlMI+I1Cw6mcJDEpSbMEhhxIGYhNkClO3U4qiLYhKel9Ow - 3I4uSWN5KKkFtqPLFqBwySE21paBA3nSmqttdeLa10kGjiCMurfO9vkSh3xJPXNpKS+uk9ZT0vr7YdHQ - D0j8vQ5ylEV+fqGs1P02HaJNGTwhNwthtD393F8LbeAlEUhdVydzcrle8rJr3Inve0Tjxgkm1IwU+AXc - KVLuzs9/xTV39bnxNaIHjTNFt8T9Hj2wstnk4hdhsxfPDHij/OVzinuVMGBS2wJZqkIGtmMyMg1kRI2B - K81CBWSellvgSIG4+vocqccP7HFZDNyteCWz5N5zpEaJgf5ZHgovSouF8mGe5BBHCadxPE7yrirnKidx - XKP8RkwLA+zQMjlkfNriMMrxO8pm5ctioIBYtupudQrLIswPRuwU84/B8B7y5QvBw7IsLXVHDnktP6oT - cla+3T/5xzvK8mQOzvPX0r4MsP11f0MwSGPlJ8pced6Ove6M//rfruvIeW7GqnVuwc79rm37PkX7zlNd - Y3evO+6eB9wp3/6xm4yBmlinHmMq32qBx8HTH7svu7fw2sLe8c57ktyrhAGR+o9//KM2TKoyViGOEKHa - vxathLHj/He1ldBTPHmzALlbZDTmsVcqr4EAK82zzfhe8wgsNWBByC82zXOdC9nt5Z/1sicbYrCwhOIT - hqKj+IUdWIVnwionBOX5LwMFZLDFpuIdZcU7urCY5v6W7iibr3KQm+fbhJOPX2xL7Sjzz7C1nrmytJ7c - j6QNd5RZnbSeEkb5HLkmT/JGznaUxQtlSt6gXcNr/UfLQU7jwAQZ7KfKlGrVTbe6k574rDvunQ+4rY8+ - 7jY/8tEA/+S2fPhj7vh7HnQ7PvMF13bSXjdl9Hj9m9tUnv0BLxzhwdo9ZmHDcSck+VcJAyL1Aw88mC84 - 7IDwGpcJVzV1UwMB1r6pBbe7VcpIkzkELhb/OZzKayCw1/xsYSy+3yJLLYqs5Ga60OpfMbQj8T48iDMQ - pq9e5uQ0zL+maOk0fzmyGyx/Hcj6PILwKKxIzvK1OLmmLMvXwi3Mpy2AOAPXKqfnPl+tZ1Fau49CGVjr - rDl1CDw+9g5gaVP901/UN7W6xoaZ4mqPcbUTprra8QlI+OQxk92kURPEC2lzU6UOqbz6C3TJ34/XpZhD - IX76058lOVgOAyL18uWFT/9mVYiRaOA7vNLgz7+bmmZWJLUtaAx1+czRM0fYwFKjrO1ixczaYalwSW1H - GdbQLBuvaOr/L4scVpMBwe8y8zvKkMOihzvK/IKW7d7yC2CkIT+sp81nbd7sra13h/W1SuokctSJvHSq - IPFqvSVfFrbstdGF7TmPQsri2pfld4rZPnI+ZUSYlY+lpizqRPkcuaY9bOHNW/7Cq5e2+p2lT+p2j/Wf - MhoKYCSm1da7hql+wWzKJCknAVa+66eIjMgOxTTSwE5Kc8PLkfr1r785ycFy6Depv/nNb+YLtMrElWIU - YsdY6mYGA95fbm6eVZ7UEldf7x95DWUnAKwExFUE96vnoaUWoMC6o0wUmEUk5ptsk0ThIZMtLCGHkkNO - zi0t80/C+cZ4Xk5kSM/ONMiii1gyQFAG8RqWy88PAP4tLZWTOHWLcf8DeQYZBgGtU24QsDDL18rnWsuX - 83w95dryK76fnNzMghztMYe5t8jZglqTnFey1HhIQ+n1GUaMqBE9rRPvb4ZrbJwtesMCWqvqT329hc3Q - 3WGp9IMFepO1Gm5ol8EvxcNy6Dep+TxuXHBcGUagoVqkCjG5dopY4PKkJk47qaklmcdgwQcasNZlSS2K - CimxeigwBMEiodi6OCTnhEF0XZASGSMdcSon16QNw7gmTw0TF9bCUnIQBlgYR8qmXsXylO/rSRjuP+mQ - JWymxFsepXXydS8OI3+eWxPmn1NbWg0L6qRp5TreJhq3Le3No6hUf7Bvnzi2CCtkrtzfR068N83XSWvF - Gk+dypONJiFyvdMvnPbzHX7WcaweLO6WW9TjG3d4IHav4b2HbfC1r30tycUs9JvUfYuXJitQgP9aSX92 - 3VQLBorprXOFvKyA86pbmtQtLXNEEYZm/hMDBfKPtAqNruc5UuvcUcDrhlg+3E4WoFBgXE6sNaRhoQjF - xq3FhUWOBTUUHjmsLNbW5FgwIwwrbe60xSGnYUJOysIdxhLiakMw271G2bjHvk7+VU1b7IKA5AfBcaWx - +OTrF/Ry5Vs9pSxfz9xCGeVLvNWJx1c8ukIOwhOHHB4D0w3kqBPpzP0OLXVR2+ZeZ6wRqxr3xeTJteqR - 6a5CNsXIPJ1NR2wuYVAf2LsA/Z+zQ2Ye2/IYyuqgR6kTazsNjWkjl/L8PIeK2+A1/dw22i9Sf/7zX8gX - FBYaAleJ54nxDaTgRzb+H2msbt/jOR4jIy+wE5eSZ+UQS9zQMDMiNF+kaJXwWdLA9UWDSj7/DLCgVq2r - jpx1RNG9h5Za4C0Ru6Zyltoslig08aH1RvG9VZyrC0tqxXNhxJPWwtTa5eTM6hJmZaic5AtxwrSUaWnz - 5efiCKeehXxzljonp2FyzNdJyi1KK/D5efmwrHTanKdCmJST5X6jYwyg8cYl3tDj6QuDWAsLhrmNR7ZH - obmFR5ricczwg3tKl4YK6BZk9u9ezyjUJXfk1U0exbLLkb8FitPrs3fhTHzvdv8cFy9ZnuRjFvpFav4k - PC4wBq7SBP0DueLKp0CD864qi1oerdpAuitMOo0RDsSbV3jXFhcJAjMHmjpV5ITkzH/4uHsoy4opDVoo - oxTTc3vGq93QwPbFko4ILDVKjQXE2mHdsHIosFlFnl2rBRTrSBgWCwuI1SYtFpCwgqX0i2Jck540kAYL - CGEIJy3za/tIAl4Ci1KUa/u3SYulpE5YUbPKhJOPt9TZH0lQS50rS+9RjtTbykeu5JGWtH38kQTkKIt0 - 3lIXu98A/TJSh643g2qTyNOnkIaNKGw80m2fMrjXBRuRiKftmA6G/TdU0C2suQ8sNIlnQJl19dPdeHHd - a8bVurGT61yd1IXBBt3mX1HZkBXmwYJZ5uJrDrTDs89+NcnJFKom9V/+8hf9D6NUoSHiTsgCrpHu4+aG - hVDcdAH+6xOMwoxyKGlqVxrvMrO40dQ0R4kdz3+Y/+qgwUAh+TJgFJfjoSOt1KXS+7IG9qFzn9xvfnCL - LDWLQigvJFHlFevEkTCIZhtNCMMqEu7lZupXT8K0eTm5VjlxrzUst+hEepODdIRBLLOaPsxbb8uH97ct - X18nL0cY7rO31sVypGMg4FzrmUubWU/kZI6ucpKOsHydhOTIUdcUqbVtpT3pk3CwZZBGbyDTiLHl123G - iH7gBnMvvE2XkhkMeO0XQkNavMeaGj9/ntUy163vXOYWzGiXa7yEUSLbKtNC/8GF8B0IdJaXV0yP8voU - XV951cuTvEyhalJ//OOfKCkoBvNpOqLS4gLukJ8LMfdhq6cf4TgWQUY5NrA0yghIR6Y6ZvTosdJIpeHs - 3MEiQlrKUEg+jKaFLaa5cqUMRnU6iHRxXjH4FJKROo+I1CgtxEKRsVK4shaGIhOGUhOGDIpHmKUlzNIi - x9HkiIeErGRDPMJ9WE5O2gry2I4yLCR54BkwmFi+yGudxIJAVubc1BMSFtU9KN/Kyt9jLiyUU1JrWcH9 - yDV5kjdy1Il0tk00i9QcbZ6Lq8s8lUGYPl/cvsy94cLXuTddeKN7w3k35PFmuf77s65xC2Z3ifFgcdUb - iKFc5+HxJjqJXk2ZNl3DtvaudJ+8/NXu8Ytf6T57xWvdxy++xv3zFTe4g6s3avyUaU2iY7NEBwuLuDyz - 5j7tXrPQ01v9p46qJjX/9JgqLIRVLsuN5bkxDcuuHHOfIBavwLHAlQlee2tglJsjnVR5PzcuGnMqOlLn - 25KHzb2T+QsgPHXSBbYKczCel1Zyv3Fr584vuLAosrm6KLO6qXIkDBmeFYduLWGQ0txfDRNCkp40ECd2 - v5FDHkKHO8r8TjFPPP9c2txv/wxZ6yRpqBNh3v3OLYDlyufo6xm437n7oZ5x+YQTRvkcuYbI9oJKsfud - JrWuzwQDOa4rOoCrzfUbz7/Bfe/BZ93bL7vF3XvVXXlw/auPfNddc/qVKse7AaTj/WzLa7CwaR3rOFwf - XnWC+z9v/aB7y/6zXEfLbFcvuja3aYa7cvNe9xcJv2nnQZWrE4sNsUPjgRcaf98shBlRPkiS4maMqkj9 - 29/+VuclYQEcY4tdjtQsiM0VJWBhCrfY3BYjWyVMndIsdfBzqXLbPyE0K5+4Z0bYVH4hkGFw8a64f1mA - Z+IsyKTK4DEFChe2RWypIUd4zoIR1pBzFFmPrJBKGDLMPTlXOVF6yBCmxfqqnFwX8vMyGiZpcIk5Wjry - K4T5jx9ouRqfi5PrQlm58sMwSRuWZXI+ra8n1r2QNqxncVicVuXIP8P9xhsKt4VOq5P25Q0r6S+ubzn/ - NW73ul35+BCvPetajeecPmZFmj6N5QYK1np4uWPkmIludVu3c3c95Na1L9K4URPr3ITJDW7MJP9fazOF - sP/r1gfcGavEYvM/3DPmyP1Ozeelj0kDIxHzysKuuea6JD9jVEXqhx/+ULKQ8KjnCVKPEJLVSmPO1w8E - dqlrzudXsaS4wdWQzsC8ma196kplEI6OmzFzvg4CVectcv6TNcyxpaOkzijq/IXdOhjFZUBqtsEWNX5g - qQEWy/Z+YylRcha71O2UcywVVpZFJGRwi0nDZhEscP6RVqfIieLbIyV7pAXJyAOraBYVAuYfabXxSMvv - 6OLxEdYR62u7u8iPPMzaUhf7cAKeAHUnX+RIixXHmzArDyE5klbLz8l1y9EsNWHcD3kwVeDeyRu5+JGW - kZo2tXaF1OEXTWxHoZH69edc7y7ac4Geh/3J9V0vuUWJzTl6oPsbpg0NqZk+qpcpRobrxy++1r3nyCV6 - juUO68LiLeFXbNrjvvGKm+V8lH7UMBxgGLi41yJ9SqDaP6qvitRHzjirKPOw4e1ckSA1L3Qs6OoVLHIz - RCl49Q3XBWJiHftDap5PNzbO0pcrsh5T+OfIfkdQ1rPsLOiiXY7UdQ1Nrr27z7X39LlJtcVzduZ2We63 - WSQUFuWFJKq8wUIZ8ZDD5q/IMDfGjTU5Dcultfy4Jj0LZZChIFdYKOMIkSEp5DI5yEVawuJ8CWeOzjkL - W8ho3XWhrLh8S6uPpXJp4/woX+uJXG6hzOb+5I0c9086tdTTC5ba9ArEpJ5WVy9eWIHUN/WX1ENoqXlb - axqu95hJ7mMXXOU2di5zNaMnFtUjX5+xtW7x3C739atvcs0Ns9xkMWahpfYffIj0KUDYJtVsRKmK1DNE - IYy4YWEGCzdSxwsSLCrMbe90bZ29+gy6tnaqrmqzWFU9qSH0bHVVwrwhN8+3wzDKZxT1z7KrJ3ZjU6sM - NjM0z/qmZrdw0VI3UyxO7O7rwBFbapnvccS1ZPEHa2jkwGqhyGYRUfo5c/02TV1EEplwoYyjkYVzXHML - 8wtlnkCEIROXQRjW2ohWWCjze7Kx6CrPirccWUDTOokc8hAOWctXF+XkyLWFMVhw1EU2k8uXX1jQ46UO - LUOuffkMZn6hDKJDar4kw7biQlt6qPsdrBTrNmGZr6IzXPfHUrdMny3GYOBf3omBYWponOlqRo13T15y - nTtl2XoJHyN6UTqlhPirFvS6bwipGZBqG1pkTl14QsRHH0JSx1zL80vwxlvelORoiIqkfuihDyQLSoF4 - dpMxbw4bABDGYgzfDuMLFixcNPCOclWkzlnoicUWk00jrGbzmiW7i8I43Hz28EJs3PZ0vgHE/cZK2/bS - 6Si1IMzTgPeRGllRzPpGUSBRVNxa9m1DkGJXF/fbu9MQhDDIh7LbAhRuOumwhCaXek5NHEQhnLQWxmDC - c2pdKJP8wufU6n7n8kXeFsrIx3a+pZ5Te/fbDxSUpVMMqQeEtTCTo3ytp4RBYOrONXmSN4MAU4c54uLz - XfApU6T98HSi9qSNw41MY8aOcc3NDNR+tZk58571u/PxIV539nX5OTV7GRqb+vdtsUpgsbdFBhjO7z/z - MvfUy16r5xOn8McUntj6FRUpm/C7D5zn/uXyV8s53zwrfm7O3/qEe8BDhG3C+Yknbk7yNERFUh84cDBZ - SHw00BH8NUlY6RBYQaw17jckKiEXUKKzocC70U2Nc9ykiNB8WohVxEYZLadN8zt66hsai+baRuymptlK - bvIiT/L2ZXj4gaVZBxqb60wos1Iaj6wGdSEFWKcWsX4ofh4SxhHSGsLrOC4MV+sfh0tYNfll5QuoU9G1 - hqXKimRyCGUsrjTM11ORywevgIGPsvDseKki1iOgK8LSnmHbsx7T1DxHz2+54DXu6bs/5V5zxsvdzede - nwfXP3jv19yrjrxc5ZpFHn0J8xkK8M2xibVNrr623v3ypne41+87MxcnU0NxxWtyX1A5b/1W979vfdAt - mtXuxk+uE++jwA/4wL3TDnbfqbawcOR+8YtfJLlqKEtqPoYA8TILiK45ouzVfI8MN5q5IXMkPi0D6bDG - kBTgPnvXme+bFQhNI7BggjvX0MhXHv2CGPD7bmcWuejMj0nvN+s3an76FleuHBbeKJ85F2mrecau9xs9 - grD7h9i4Zo1snsm5l7jj+WN4nj/68JIwQVFYDhXlsvLLh1WRR0ouFZZKS5gci8KCc4iNR0NbaXsF7RjC - pnP0Yb79R8rUSDy8WrGIPW197prDV7trT7/KvfLgFXlcJ9cvPeUSN3/WQkkvOiRWMOzDocLIUSNdS7NY - 61ET3NzmWe7fbn6n+9zLXuMuFBKfuvw4d86aje5RmW///rYH3faeFZJmtNxr8QYnvAc22MSkTnHLcOtt - tyf5aihL6k984ol8hnFBMfJyUjk6CuUPK58Coy4P4rlRXFcWwJhDsfmdBTU6MJTn2R4r1DNEMeKVcyN2 - czNfHOWVuWKrbSBPpgKUwTSALZ/UmcGrmhcAmL+XrHwHINyUlQGurqF5GCFyHo7OoaWN4vYzmL7R1vGb - TpCcRdbRiU1HIcZNkj6oy/67nKEA+qCr4DJvnjy5wd249wz3ofOvdv986avcRy642t1x8O/cTDFWEJpp - RpzeXhDKaoNU+K5de5J8NZQl9eEjZ+YzCguodM4z7aF8od3A6jQusn4vLCB0SGyOPP9moShcZBkqsBob - vy5XDBl1BZzjVqK8lTAlEVYtBpN2KMGHAVPhKdiiorWVR1qJ9V2CjH7UvzyaiuflPT2bYuGJ8W5A6nFk - FvDQmCfjGgMWsvozGGAcxsog4ne/jdVn1TUjcwus4yar3sRpQGrlO9UOBuL4wu2vfvWrJGdBWVL7OWYh - szDzLGihuODRKvVggZvit3yW/5zRFIljoYLV9aH4mmgM3f0jjaqKmHObFPk2QGELFiiUmQIIs7jcMUYY - niXTH5BHiJRMtRho+qL2ypHYxxXaq7RN/Wu8DASpvjCMGjVGrPk4sXp4eOMqTqFCsNjKLkI8NaZvrTqF - k3n/dP/2F2ssWX+yV4IRftvyaKnDyNFSDzmvVBf/KLT8brKwze263B/pZZL6008+mc8kdSwH6ww2nqRu - ZCDABdMNK43lH4MRp3+RIh2De53Ka6DA+1AvQRSOzuDRHB9umFxbKyP1ZF2MmTRpUg6TNYxVeWSQ9R2I - whY28Be3W2lYufAQ1fZPSq6a/A1xulR+hXi716i9aJOs9qItRYapGWSnvWjzof40FeBdAiXyDJnn53YT - huDxJk8q+DeWal5S6i8YgDCAYTuWtmE6jq/5pngLMknNljTLoFyBqXCA2zTYD/iHwJWyTwSXI7VBST2k - K54jcqSsd5NUISfK/RUwCUhYQUl9WJGMhKHQWHvaSBdIgjbL6sAQoUw52WrzSp1XigvDDcXhZmn93NkT - mP88q7a9WO/wcbQX20Nxb9P9MjBAaF6FhMwNMl3Tl3xkno5BAAwkhPFeNHqHPpX7islAQNvgSoftGbZj - OZT7a55MUq+s8O8bcWfaef4oys8oNFTPBpmT0LA0eDWkbhHZoXzdjg6dMmVqkcINBHmllnN2FXnL7d3y - sP2qRaoPQsT9Uum8kny5MA3HMkvf14q1tfv1BE63RyVoewnhp0yZMmS6xFt2+lGDVubf/pnxpAksqvmp - HeCV3pEyNx5RM1qIzwcXZuX2MAzNohuLtVnvUYf9UA5f/OIXk9xNkvrb3/lOSab9vQaQutJ8qFrwdhak - ThE4BV7oCPfXDgYsmHhXOq14A0OO3JIvrqbNq6pp1xjI9CedyZeTAan47DR+cMIL4f78wDVwMseolXaa - MATf3AYNDbwHLbo0tVGIOtut3b7HjRkx3k2cMFV01m9YQm5e5yK3Ydd+N2F8rVpzHqMOlffH05Fww0nc - H+Xa3o433fyGEu6CJKlvvPGmosyyEFYkPA+hHyEcggUrlL9aUjPS8tyZvcKpvPoLlKlW5nopZRs0sEQC - LJt3WQtW25Bq1xBZ8WHfhMcQYVyIWM4Qy+t5ztvAVR5qMofAWvOoM9VH1YK5Of96ydrMxPF1QtjJ7s7P - fta94t57Nb621j/TntrQ6D7wg+fc4Ve8Uq5HqF6hf4P9hw6gT1DEvS9px+hYCZs2byvhLkiSevuOXclM - UoVVqgBKyj9bDHahA1fVXqeMSRwDGd7mYZNKKq/+gNVRlCmlZDG8NQ+RlksBtx5SGEHSbVl9hxvKpQnj - Qpks+RD5dFpfv87APaTuLQtxe6VkQqicDK78YV6qr6oBj61sGsef5I0fK/WWadq7//Vf3Utuv0NlJkyq - dR/84Q/d2a++Qa/ZfWjv9DdPb9UdkWGe/QE80MWxXB/H7R63fRwfxvHo9ve//30Jf0tIzfOvLKWqBlZw - WAHcDDYRDKYxeH+VvbZTaivv4+ajC7pbrNnv4x4o6AAInaVwWG8QKqXOAdVaIePDQ7kwfQzSIaNESVjs - gSJWhhj9jc/3sdZTCJ2re3w/IbLaIWwvwkM5kwlh4an+qgb0yfTAONTrZ4hq3GRxh+/+4hfckWuudde8 - 53539g1+33jt5AYZAPzirL5zP33gfxLBNI42C93uGPm2DcLKXT/w4HuL+AtKSP1Pj32sKHEWyhUaxwHe - amK1tz/PEEPwr5csWDQ1z843cmy1LYwFj9bWOdKAbAZI51cJ7BSKFTBULMJxy/mPLxZw2OUUblbgnDAG - MlzG8eNlzpZLm6WwILTYcRumkGprwuL+SMnFqDYvf/QehbfQ2YRmLmz3SxvQFuXaizi8I9rWCB73AWED - nV+zsST+djzfuCOOT1v91Dl3+798Rq/Hj6lV0qucyENqdjQOdMGO9QZbHIvbNLyuhFCWj4HGHC4htb07 - Xei80mOYafVgddH/P+9ARzr+QhSiNjXxkgY7iPzuId6Ggehc82oeGwkG89/UKF6WMhGGcqKAqbRlIYrL - YAEJUvkbIDbPdMNNCVltnuqP8DoVXw6pvFLpIXStzqHTLrcRknPd8hsQuFrQxuzsCvMy4EENhNjUhS+W - 2As9tijG7rQ7P/c5d+jql7tr73/AnZO31I15I6I71gY4pw4JnQVr57C9U+0fhnUs7C7iLygh9fy2jpIM - wuswLFVYeB3C4iA1cwo+jZq6+WoAubEQPLIiXxssdG4nHT6YRx+8Ox0TjnNTosHkHQLlSimrAeLb5ous - tqwWJp+VLgznPJYruYbQoqRZhNb2E2BxU/feX0BuBtK4X7geCLFZvOXlIcg6bqzkVTtN59SX33GnxvO3 - tY/87CfuvNfdqNeQn52KzS1zpPz+GQsGs1oMWkDorH5IwWTLpfn2t79dxOEiUj/zzJeTiQxknCqkXFjq - mlfquEnepqp6C14EyMeXVHiBn3eAZ89vd7WDcLdxk5VI0aKYEW+oFDQEHe7LLCU24ZRdidSpto/R3zjC - stKo2y1H5qbUMa43bcU0I+vjk4OBDYQxsTn2Z70G3cGjmzyxQQaLSe6Wxx93r7zvPo2rneQXVxtbZ7mH - vv89d8pLr5DrEeIR+hXz+CWjcuBZNG2FESu0X2mbphDLcZ2V9s673ppN6ttuuz0zYRieJdMfkAcP/lHa - gfyHNYTg/6Q6eha7ts4eN6+9UxsxJVsO5MMbW0ZeUxZgYfGXVYYaWJvUCjukwSKmiJ2FuG9Iq4No3pvx - eZXrw3J9zZSAqUHKSiuhpc6pexwqYLVTxGYq0J+BFy+vgW/GN891yzdudaNqxrhJE6bpdM5c8lnzO92q - LTtEVqZ8zbP6lT8voUBmvyhWeBegqC3LnBssLIbFcdy4cUs2qfedfEpJRpUyTyGVR3gdwrvjzaK8dQN6 - s2vGnHlK7IGkZQrgV5n9hokYtUK0wT6KqxYs4NguLINaa1HY/pDaYNMcP2hO1JcL2GpJHATXuChNDIsP - j4CpT7xLzAbE1L0NNZgCUV5IbBuA2RzCH96l0sXgiyP8y8uomnF+lVsIbYtnEHtMzQQ3dsREXZytdu83 - Ow/9a7feYIVtae0YtmklVJIjnn+Y+cMf/pAmNf/AERceZ1AuLCttufwsjq9IoGg0NGRjRE41WgwasT+L - Yv4VOxZa6nQDACvyqW2MKEj4HaksMHozKEyrb3QNzdP14wh8oqehpdVNlTC+pBp+6SILeAyxBTLYiyBh - u9l5KgzSkob3zyFA3JbaZvyHU470lj6VbxinspJv7HYboSr12QjBBJFnmjStoUnbiLaizeql7WjD2qlT - 1c1OpQ+BjA0kBeDZTNEBjfurZkCmjaZM4bGV/8oOZNYFMTmH3JMmTatqKoGXyDfKeXRLu8btF14PFOXy - eeKJT5aS+nGZV8SCqUysg+PwGNXIpeK9FfGjHC4SI+RAH4MByEJ6Bgq2rOI+4vabK8obQSkl5ZjKz4Ay - 8L3qllnzXOvcNjdnwULXtrDbLejscgsWCjq7XXtXr34aefrseaq05T6RBOwxWlgXdcF1JbzUWoftZ+c2 - MIb5XnDBBe6ZZ55xF198kRsTTCXsW2upfFLXWe3F1KGSa8oXWRt4vXH2fP1UdHtXj7ZRob163FxpQ9qy - ZdZc19DUIt5X+TyZtqTai223OmBDbmkLvDj0IJWHAR3hralx4tXwCievUFZa7yFP9JN3yT2Z+QpPcfuV - Q0qWsHJ9EIdbXPhBwjypr7zy6mSiOGwoUS5/FAiFA8wJIaR9GQVCMTLSEYyiWAiOvmPG6htdPKJgIQ7L - 4hfmmN+gwIHFUyW1rY0FxcANzrIWWBusDESdOX+BWyjKuXzlKrdhw/Fu29btbseOPW7nzn2Cve6kk3a6 - E07Y6FavXuv6li5XpZ3a0Fz2H0CUxIG15jq/0yxoH61/fC33yf3Ged5yyy2O369/9Sv3ne98p0jB+doL - bZPMLzh6MNBK3YL2qjQAjpQ+qWuaroPeoiXL3CppC9qEttm5Y69vK2mzk7Ztd8cdd4K2ZWd3r8xn25Xc - U6Zlb/XNGgQZeKy9TIeY16I/kHAwO9LQNQZD1S3LH89IzuN2i2HtGF9nyRsqxYMN0nYlpD7u+BOTwiFS - mVcTVu6a80p56Iprbo7IaAjM0tpqrJ5D3tyIaY1NWFxeeO6VslRJUyP7qFEj1cWeJQra1btIGvJ4t3fv - fnfagSPu1FPPcKcITj1wVgGnnqnhpx04w+0/+TS3efNWt2LVGl0HGJHh0mHxcCGtPhCIOoWDURbwQFJf - 2Lj++uvdt771Lffoo48qucM4BkJtS0kftk0Mi/PvQBfaC1JlTVNGyQA7Uyzv8pWr3aZNW93J0ga0hW8r - aZugrWi7A7TVaWe4fXtPEX08wfUsWuxmty10dY3ZnyTyg57vM+BJXRgErd5cFwjuXwmF5BgA3tqC7BgE - XHbAORYeAiODrHp6ktb0izzD9rGyYoThKZk4rZ2XSxdfg5/+9GcFUv/8579IZhSjXJwhlInlq0nfHyih - lcw5aFgsk3VOh9TllcGAkqaefY4UpcJ9xHVcu26dkPSAO3jwbFXO/aec4U7ef0RwWM6PuFPkmiMgnHjk - TjtNFPiU0922bSe5hWKNahIWA0uAkhb2jQuB5NrqXQ6e1MV13759u/vgww/rR+DvvPNO99RTT7muri51 - mYkfJYOLkTqVZwHZ7ZV6OjBSiLGwe5HbsmWr3PMhuXfa6qxcWx1OttX+oK0OHhRZaeP16ze4+eKmTxNi - x2UAvLYia60kF1LnBvvUvaAr3LOR3IAnR7jGqXGI470hSeUJUrpXuV2LEcqXS5+K+8d//GiB1PyjpVaW - BZlIMCtTUC6uHPqbDvmBlgUsbZhHOVKPG1c6l6uta9A58+bNW9xBsSZYFwi7d98ht18szKFD50rYmWKN - Tnf7JAyguAdEmQ8ePEfP90mcJ7cMBCefKm5mT0k5oNj6YBXTpI7bBaWz+fSRI0fcn/70J/f5z3/ePf30 - 0+7f//3f3YEDB9x9992n1vqzn/2syrGQhuVJ5RfC9CNsK+pIXVNWtLOnVyyueDFyr9zzySfL/Uub0G4H - pa0gM+2xd99BOUobCqlPk3Y6TQZKwmmvU5CV9FtlYFgg05yJ0VoBKHHBc21X9l4SYYZUuqy8yuVTDuXS - 9SfPUJbzV77y2gKpL730clUIOi1MlIW44P5WxGDX4TE+zwqL5Q2hTBa8bPWWZ4xYg/kLu9TqmJJ60p6u - CooSbtq83a1es8EtW7HKLV2+yi0TLF+xWqz68W7L1l3eDReF1UFAFBrLdeqpB92sWf6D8CHwFFKkju8v - vLZzLAou+KLeXunkV0g997lXvepVaqFxw++66y5dMOvp6dH71LbIeTlhXuG1hpUhdVz/2XPmulP2H9B7 - 5F4hLqSlrXbvPuCOP2GLW7lqnbTRammrlb6txEVfv+FEt33HPt82MkD6AVOstng4J4l3M7+j0/FnEGFZ - DEqFthIEpA7rPxSI28WuU2WlwmKE6Q1ZcpXCWazbmfvKqJJ65aq1JW5FKqO44KzCDFl5pOLKycbXYXgY - FsuXgye131YaIkVqHrls3LRZrcYpp+SUTSzJwUPnuK3bdru+JcvU6nb3LHK9fYsFSxQ9ct4lFos4FHfX - rlPUamOZsPKk37f3ZCFx8eabmNSVlDRuD7ZBhvkBFv7a2xcUhfEYUQfzIH0WUoNgitTUfc+ek3VqApFp - K9YWICpk7lnUJ255t+vupa2knRbn2krCaSfaa5UMjlhq0hQGwTNlcNymTxHC8mJSey+nvPs91KAcKys8 - t+vwGMPks+JBuTwsjD0ILTI9/OUvf+lqvve95/R7R6GVLpc4Pi+HcnIDzSPrOiu/MJzz4uvS1VxIXbTy - LXPcxUuX67wQ1xGrDHC3N26UuXFnlyokMkVYUnyNsnbJPPqk7XvVYpmyHjlynluxgg+9FxS1iNR5y1Nm - jpgIY06o7jifrh1bGDT40iUDOBa9moG8gHAQ9O2VIvXSpUvlns6Ve/PejF88PNOtXr1e22qREHjJ0hVF - bROib+kyt7CrW9sPT4jpC23FfPy0A4clfFlReUlS51a/S+/Bo/x9+vhKMpVQLg8LL1dGpbQx6Gc+t/SN - b3zD1XzgAx90c+Yu0F0wRJKoUmFhfCX5apBKH+ZbKf+BxtPx8SMtnVOPL5Bgqsylt520UyyFn0OjqMz9 - tomF7pR53qLFS0UZc0oaEjkiNYrc09unA8CePaeJsvoBwq/8HnJ108J/QSyswnvLU3hE0997hdjhoo8+ - 1iuj8ClYnhy1Xvn28ptlbNMJe9j3i9ttgx/rC3gm6zdsdB0LOzPbJsaSZSvy3g2DAvNvb7nPctu373KT - c4t8gP/XCufUtJd9RSa+D0OqDeOwlEwlhGk470+eKVkLK5fO4Ek93X3wgw+7mrfcepubx8sQkFpQTQYh - QvmBpLU05dIOJN9UeAw63u9jLpAaJeV7aKY0c9vaxH2EfGJ5xG0+RVxKlBWL0S0kVUJXUFKDKesqsVq4 - lig+CnvkjPNcd1eXloflKVXS6jefVBNnYRYey6bkNU7bq3jzSfhMv7NzYc5K+0UwrOxOmXLgajNFSbVJ - FhgEO8Syn7hxm3hF5+WsPm78Ecf/bFv/4NWE7cWAE++XT91PufusBqn0/cmvv7KhfHwOjNRXv/yVruaS - Sy7LkxqECbJQjUyIlLxVJrwO42P0VzbOLxlGx8s95xUih8m1k/Mrun2LF7tDB5lLe0XFSm/ZslNd6RI3 - sgpyo9zMu3fs3K8DBRbo8OHz3bq1G7Q8v/2xeA84c1lbA8hCfG8hUnGp9ghR0lZAiVLcXurZ5J5Tr1q1 - xh0+cr7eEwMfA9fa9SfoQFbUDlUOgjynZiGNvJif0weHDp3llixZmie192jM/ZbBRq7L3ZuFp+Kz0oQI - 05fLqxKy0oT5louLzyE1H3A47eDpruYkcWfsHWpzwU0wPA+vQ2SFg3Jx5VApzzg+FVYOc+bMl3nafnfF - FVe6669/tcz1Or1CBIpq1ofdYIcOne1OFqWC1LiTxx2/WUldpITlFJW4IJ60mzbvyC2aYdHOclu3nCRl - siPOv15oStonA8BNN71BPwYJXv/6mz1u8uCLkm944y3ullveJHize/Obb3Vvectt7lbxwPgjtdtuv8Pd - fsedCl7Ru+uuu91b3/o2xd13v13xtrd5vP3t7/B4xzvdO955j+Kd97zL3QPe9W737nvf49717nvFCMzP - txUYP36cGz16lP7NKvfEXFiJLVi2YrWSs1oih/AD4BIdAA+IS89zbPpi7dp12jcpr+a00w66j370n7Tu - p59+pKTvU3rSH90JYekqpSfekBWfCjdYfJxHGD4pR2qmijWrV69zbQsW6lyLHTNxgnIIM43jUqgknwon - LA7vT/oYJ23fWfI/RB/72MeKlNQUBGu9Zs06UaTCc2aszzqxPix8FSlqP5S2q2dREamZg7JtcupUv4c6 - rAfPk8O6Hgu48847iuo4dhwfZ6x1W7du1wHKLCtHHuvhmaTaoSykPY3U23ecrKSmD+iLdes2aN/w4YTC - AOjxgx/8oKiur3vd65N6UA1CfaqkW+V00lAuPg4Lr0NkxUHqZiH1+g0nuJpFfUtde0eX+uNEpBKFYeUK - 7A/ifJ6PMsBPfvLTok439PX1FSmHLgCJ4qxcucodOv0cVdJMS12O0BYXyDAgFFlqUdht23ZIfYtJvXHj - xmRdX2iwqWXGjBn5euJ+18qUZcuWbTLo5UjN7rDQUlt7GMI2y2q/pKU+R70nrLSVbzjzzDOT9WXFPdSH - crqXhUppsvKOUS5+MGnhLn8ftELau2bRoiWufWG34+9HJk7ynwdKJQJhXKUKZCGVx0DzAqQ1xOHx+bmJ - j7QZ2EYZKgikxsVjS+Xhw4XFH4i4WebUzBPzc+pypDbkZNT6iJJ7RWVOfboMGufqCyHsZGPhx+oQW51j - CU888US+nng1TB3Wrl3vTj98XpFXY3Pq5PpDhXZjMFiyrDCnpg9Ol75gSkLfWPmAba+/+c1vknVlCmK6 - ECKlI1moFB+iv3nF9Uilj8NjGbxsHk0vlfaqWblqjZKa/xVish0KxrCMUoX2B+UqlwqvRia+js/59vh/ - /Md/JDvdcO211+aVxEjd1Ngo5DusK68oqj5ekSMK6Z9PZ6x+J8JQbBScnWesDHtlPcMdPoKi9hUp6htl - npyq47GE888/P19f6t4rHsjhw3g1g1z9lrajrXhe7Ve/z82vfh84cMS1TvcbUKxs8PDDDyfrCNgim6VD - hizdSV1nhds1R0MYXw6hbH/yIc6vhdW5ufMWaNvV8JV/3G8Wy3immbVYFqJceBgXXsdpssJDhDLl5Azl - ZF7zmtcmOzzG/v3784rCnG2cuMObNm1Ra4oFYiME1nrbtj2qdP45dalSxmE8ztLn1II9e+05td9UwXPq - Ga2tOk+k3HPPPTdZt2MR69ev1zqPHDnCTW9pkfY7mH9OrZ6NEJLn1O3hc+oK0Ed/XT1idVbp9lo/9WEH - 37m6oDhh4gR1+a2frrvuumTdQpx55tmqBykdCcPieK4tLDwP48PzLNnUtZ2nriuFG4jH9W5obHEL2qWN - IfU555ynF8Dm1XGi8DoVVk3Bhqz4VHgMk4vzCsMtLLzGLQk/91IJW7duVWUxa93R0aHPX721PiQWlgWb - c9WK8Cw1uaMsgu0o2759n98eKoMDm1kOi7u6TtxWVo9xvRlUUnU6VsGiI7vIqDvz3NWr1+g9qbVW68qr - lmfqs/n2zk4dBIumLUUD4Aq16Ow84+hd+LNkIGXv+JnaB0yH6BNbILvooouS9Yrxne98N68TIUJ9GWpU - m/9A6hGmYdrMfBrjzMJkzc03v9GTWgL4k3lbLEsVZGFxXEq2XLghlU+1eYdIpQtx3333Jzu6HHgRAqVh - nou13njiptx80e8qw3pgsXlmvUQUErca4qK0KGTfkqW6yNPZI+ESR2PjivoXQPzAcPCgzNX3H5CpQZ1Y - 6Rp39tlnJ+tyrOO3v/2tLurhaUybNkXaJ3ef0lYQkufxuOLs/aZN8HDYuBO2FfNn2hBXnekJUxP2BOAZ - 8Tjx9NPPc1s2b9XBg8d+9M1ll12WrE8WeIaLPlTSqWp0DphcSp6wcvnEacvJGkIZzvUaz1owZ26bPsU6 - 7viNrub++x9UUuN+zxOwwYA3PlKZVVOwIVmBMojj+yNfLv82uadUB1eDG264QSxCrX4WduqUKW7P7n2e - 2GKFVNnEHUd5Wexi8QxlZMUWJe3DIokbyeMvtpTqSw2sdpNOCK2vGZ52ups71/87xK233pqsw4sJL33p - 5Xovs2fPkrkvrrfMr5XYfhBkZ9juPQfciSducytWrVVCK7EFbAndcPwmt2PHydI2Z+tqNwMCgyhtvnfv - ya6ubpoOHFhpXiFN1aEc+D52SkdCmB7FxzA+FRYeq0GWbH/zyLveHZ7DvKlV8+Uvf0UvAOa7ZfrM5Cr4 - YCpRSYb4lEwcVk0+cZi9OD5QfPKTn3SrVq1SS9rQUO92S6MdOXJ+zhXnfWD/YgbuOIrIvm7exsIqo5SQ - F4tsK8K4kcgePHhE3Pp2t27dumPyWfRA8eEPf1gG0ja3YEGbDlqsRejLHXLvDGhYbe6fBUdew6Sddu0+ - VS0zAyQWXWUFtDE71BhMm5v8v1Hu3r1bX1pIlV0NLrjgwhIdMf2rpF+gGhmQkstKG4dXWwaA1EwvF7T7 - dbGXvOQyp69e9i5aoqYbEIGwfbrFEnNerlLVViQlF4al8qp0nRW+bv3xyY4dCG6//XZR1AVqLU48caO4 - g2erReF9X3XJUUQhrr2VBGylHEKjoMideuoRt3Pnbrd50yZ9tzlV1osdPMfGy1m5coVY3l3SVn5F3LeB - H9ysTbSt5Gj7AGgjBgFe3WQlfdPGzTI9qZe8Vrr3ve99yfL6gx//+MdFOmJI6VQ1YXZdSZbzrLRZ8TFC - GY4Qmqc6eNps9Ya7+kIHN3re+X+nVpoIHm+1ts5Sax1mZufVICzcrsP4EHFcSrZc+nJ46ktfSnbsYPCh - D31IlPR017lwoTtp2w6xOme6I2ecr89kUVxIjrIaUFaIvWvXfsFeXan92MceS+b914b/+q//UiJeJtZj - 18492gYQ1xPck1whJCaMNsQLYn/3ju073fJly9zlMm/GW0rlP1CEH9k03Qp1jPNyOlcpPkYsm5W+2jCF - zKN5BD17znxdD4O74Lvf/a4n9aeffLKI7Zzzmh7fTk5VKLwuh/7IhiBdVrnV5nno0OFkhw4VfvSjH7nH - HnvMXXvNNe60A6fpFsl9+3AjT3N79p7qtm/fI9itXxh9yUsud29/+9tL/vPobwko27ve9S53+eVXuK0y - GJ4kbbN9x16Zrpwi7XZA2u2A7qo7cuQM9+pXv9p9+tOf1hf+U3kNFgw29o17dKWcvpVDKFNOPhUXpw0R - yqWAzMSJtbrX24wxvF2zdoP7y1/+4kkN2C4KmXmAzZHVNMx7uB88RliBSpVJxRNWKV0MS1Mp7XPPfb+k - M48mvvKVryjJmVPy1U52XDFX/sEPfpiU/1sGA+LnPvc594lPPOH+4R/+QduL/fdf//rXk/JHAw899IES - HSqnTym5OH2MVJpySMnEeQC+Q4elZmGbKbORmpeTuLc8qXnTh7/FNDPOCMAjLnXDgw0pYeZhWBZSshYW - hscy1SDMx9JzvPDCi4s6cBjDSGH3nn15vTHdiXXLrsPwMD6UKSefdW1hhlRceI2RnTTJu91mpY3Uzz77 - Vb2vPKl/97vfuY6O7rwb7onNnvAZaupTxI6vsyp2tBGWy/e5fv3rXxd13jCGkQIv98R6lDq361DPUjJx - eBzfn/QWFx7Z7YmRxdjGhN6xc3f+vvKkBm9845uKrDXCJMZ3n6DEzq5IiFSl4vg4rBzivOL0YTjvF4f3 - NIxhlAPvjqM3hlCvQoTxKblycdWGcx7L2bUSWjg4vXVWEUcBLvgXv/hU/p6KSA14gyi01iSA2GaxyTyr - gsDiwgqG59VgoLKpf9UfxjAq4cCBgyU6Z9dZ4fF1HN5fkD6VB2G43FhoCA0XMbbGT85POfW0ovspIfWn - PvXpZELCeNTF4lmlt7lAWMGwwqmKhwhl+4sPf/gjRfcyjGFUA6aebQs68i8zhfpXTh9juTAuK6w/4VzD - N6AutxitkJfGzZ/9zP/djqGE1OBlV17lOjqLTfz8tna1hPo5YSmMkaOc1c4KD9Gfm0tdc6zlXOqxZetJ - JfcxjGFUi69+9au6HgOBQl0zhDrIeayT5TBQWdsrwqJY7HJ7Tna4Bx98b8m9JEkNeJaYysisuL3RxUqc - VQKkbqDasEoI03COW8LA0te3zP35z39O3scwhlEt7n/gQf0kEPszeP9hIDqaBfIy2HWWDJ4whGZPt3nJ - MQ+ZFvONvdR9ZJL6P/7jP/UVOYjNs+s4QwqaPWeeblKhAuaSpyqddZ5CuXjiLJ4yOeftp5/+NP2JomEM - o7+49dbbdY+GLkxhKct4owaLD+Xi82quGUhYt+K7Bny0BI7Zc+gQEP3IkfSnm0AmqcG3vvVt19nVK758 - 6UgBKJRFtVbx920HWpb7YghvJr6O41KwUaypebpumPnRj36crPswhjFQXP/3N6heF7zRwpbpLPRXj4HJ - KZkn+b/fnT59Vt5opjgHoU8/fEay3oaypAa8EcOL7ClX3AqxEYXJPOT2lfQuTHwjgJup9sYNNK5ZZzwE - /mT7+d41Noy/HbxUXFsM2uzZ83WubTodv+hk6K8+myeAXmOZp7fOzHOJY+wdG9cuvPiSZH1DVCQ1+P73 - v+9OOHGTEnt+VFBYoJGbiT2vcNZJZW2kw8LSMLbCmELYMLpzJkdk0tKwDBoLO3vcgQOH9LtTqboOYxhD - hRtvvNktxFMVvWaBmMe6WFMjYyV9DoEc8urNCsiH/R+42SGZs7gF7r77bcl6xqiK1IDPAZ199rlKbPXz - 55UWbsB1sUpSaQjeIKRkROIGjaxGdiO+AUJPk5uGyKSlQSm3q3uRu+zyK5L1G8Ywjgbe+c578u4wmCv6 - zaeDcM35jzLT57z+mj5HYRgsvFgGBozT3PkLND+4kkVmQNz2HbvcF77wxWT9Uqia1IZb3vTmPGlTlQhB - hUxWB4K2dl2E4KYgKzfIaMWKox7lmgfss4XEpLfGxA3q7lns7r33Pck6DWMYRxOf+cy/6Kd30WcQknGu - 6XNOlxVNuaOAcCWxuNPKB0lLes5jvoQgHr3nnYxUncqh36QGTz31Jbd79778zaUqlQIVhahGdI4xCEdG - 5XIyF8k84lj+BvYw/vrBdI95NnpphKxWnzmG6bJAPIDM/KXSj3/8k2RdKmFApDbwP0t86MwqX6nS1YA8 - jNhsf3vssY8lyx7GMF4I8D9d/F+VETClw/2F5cXnuvnPs4GS2TAoUhvuv/8Bd+C0Q7qIFo5SVDi1ihcD - AtuIxjVzd961TZU1jGEcC3jPe+7Tj/wNhNxhGj5s8LIrr3ZPPDF0X3cZElIbvvWtb+nNXnbZS93GjVv0 - 22c8S+aYAnHg+BM2uksvvUy3vD333HPJvIcxjGMRLGDdcMNr3b6TT3G9ZXTdwHZmvoRz11vvds8++6x+ - zy2V78Dx3+7/BxnFzFZEv6AVAAAAAElFTkSuQmCC - - 17, 17 diff --git a/DS4Tool/Properties/Resources.resx b/DS4Tool/Properties/Resources.resx index a26ee81..5878c30 100644 --- a/DS4Tool/Properties/Resources.resx +++ b/DS4Tool/Properties/Resources.resx @@ -154,4 +154,25 @@ ..\Resources\Pairmode.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\shell32_copy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\shell32_new.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\imageres_new.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\BT.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\none.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\USB.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/DS4Tool/Properties/Resources1.Designer.cs b/DS4Tool/Properties/Resources1.Designer.cs index 5c7cf75..074e161 100644 --- a/DS4Tool/Properties/Resources1.Designer.cs +++ b/DS4Tool/Properties/Resources1.Designer.cs @@ -70,6 +70,36 @@ namespace ScpServer.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap BT { + get { + object obj = ResourceManager.GetObject("BT", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap copy { + get { + object obj = ResourceManager.GetObject("copy", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap delete { + get { + object obj = ResourceManager.GetObject("delete", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// @@ -90,6 +120,16 @@ namespace ScpServer.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap edit { + get { + object obj = ResourceManager.GetObject("edit", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -120,6 +160,26 @@ namespace ScpServer.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap newprofile { + get { + object obj = ResourceManager.GetObject("newprofile", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap none { + get { + object obj = ResourceManager.GetObject("none", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -179,5 +239,15 @@ namespace ScpServer.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap USB { + get { + object obj = ResourceManager.GetObject("USB", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/DS4Tool/Resource.es.Designer.cs b/DS4Tool/Resource.es.Designer.cs new file mode 100644 index 0000000..e69de29 diff --git a/DS4Tool/Resources/1401402547_menu-24.png b/DS4Tool/Resources/1401402547_menu-24.png new file mode 100644 index 0000000..de607fc Binary files /dev/null and b/DS4Tool/Resources/1401402547_menu-24.png differ diff --git a/DS4Tool/Resources/BT.png b/DS4Tool/Resources/BT.png new file mode 100644 index 0000000..f94a35d Binary files /dev/null and b/DS4Tool/Resources/BT.png differ diff --git a/DS4Tool/Resources/DS4 Controller.png b/DS4Tool/Resources/DS4 Controller.png index 1248a08..18bc0dd 100644 Binary files a/DS4Tool/Resources/DS4 Controller.png and b/DS4Tool/Resources/DS4 Controller.png differ diff --git a/DS4Tool/Resources/LeftTouch.png b/DS4Tool/Resources/LeftTouch.png index 484ce84..f691ac5 100644 Binary files a/DS4Tool/Resources/LeftTouch.png and b/DS4Tool/Resources/LeftTouch.png differ diff --git a/DS4Tool/Resources/MultiTouch.png b/DS4Tool/Resources/MultiTouch.png index 20fa67d..7ad39aa 100644 Binary files a/DS4Tool/Resources/MultiTouch.png and b/DS4Tool/Resources/MultiTouch.png differ diff --git a/DS4Tool/Resources/RightTouch.png b/DS4Tool/Resources/RightTouch.png index 7ee3efc..95dab65 100644 Binary files a/DS4Tool/Resources/RightTouch.png and b/DS4Tool/Resources/RightTouch.png differ diff --git a/DS4Tool/Resources/USB.png b/DS4Tool/Resources/USB.png new file mode 100644 index 0000000..b0c07bf Binary files /dev/null and b/DS4Tool/Resources/USB.png differ diff --git a/DS4Tool/Resources/UpperTouch.png b/DS4Tool/Resources/UpperTouch.png index 3e99d09..2487bb8 100644 Binary files a/DS4Tool/Resources/UpperTouch.png and b/DS4Tool/Resources/UpperTouch.png differ diff --git a/DS4Tool/Resources/delete.png b/DS4Tool/Resources/delete.png new file mode 100644 index 0000000..e2d2379 Binary files /dev/null and b/DS4Tool/Resources/delete.png differ diff --git a/DS4Tool/Resources/imageres_new.png b/DS4Tool/Resources/imageres_new.png new file mode 100644 index 0000000..7bc1970 Binary files /dev/null and b/DS4Tool/Resources/imageres_new.png differ diff --git a/DS4Tool/Resources/none.png b/DS4Tool/Resources/none.png new file mode 100644 index 0000000..9e67a44 Binary files /dev/null and b/DS4Tool/Resources/none.png differ diff --git a/DS4Tool/Resources/shell32 delete.png b/DS4Tool/Resources/shell32 delete.png new file mode 100644 index 0000000..009eebc Binary files /dev/null and b/DS4Tool/Resources/shell32 delete.png differ diff --git a/DS4Tool/Resources/shell32_copy.png b/DS4Tool/Resources/shell32_copy.png new file mode 100644 index 0000000..5669430 Binary files /dev/null and b/DS4Tool/Resources/shell32_copy.png differ diff --git a/DS4Tool/Resources/shell32_new.png b/DS4Tool/Resources/shell32_new.png new file mode 100644 index 0000000..38a838d Binary files /dev/null and b/DS4Tool/Resources/shell32_new.png differ diff --git a/DS4Tool/ScpForm.Designer.cs b/DS4Tool/ScpForm.Designer.cs index c6782fd..41f3e7c 100644 --- a/DS4Tool/ScpForm.Designer.cs +++ b/DS4Tool/ScpForm.Designer.cs @@ -35,40 +35,16 @@ this.chData = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.tmrUpdate = new System.Windows.Forms.Timer(this.components); this.pnlButton = new System.Windows.Forms.Panel(); - this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.label1 = new System.Windows.Forms.Label(); this.btnImportProfiles = new System.Windows.Forms.Button(); this.llbHelp = new System.Windows.Forms.LinkLabel(); this.btnStartStop = new System.Windows.Forms.Button(); this.btnClear = new System.Windows.Forms.Button(); this.lnkControllers = new System.Windows.Forms.LinkLabel(); - this.hideDS4CheckBox = new System.Windows.Forms.CheckBox(); - this.startMinimizedCheckBox = new System.Windows.Forms.CheckBox(); - this.pnlDebug = new System.Windows.Forms.Panel(); - this.pnlStatus = new System.Windows.Forms.Panel(); - this.gpPads = new System.Windows.Forms.GroupBox(); - this.label1 = new System.Windows.Forms.Label(); - this.lbSelPro4 = new System.Windows.Forms.Label(); - this.lbSelPro3 = new System.Windows.Forms.Label(); - this.lbSelPro2 = new System.Windows.Forms.Label(); - this.lbSelPro1 = new System.Windows.Forms.Label(); - this.lbPad4 = new System.Windows.Forms.Label(); - this.lbPad3 = new System.Windows.Forms.Label(); - this.lbPad2 = new System.Windows.Forms.Label(); - this.lbPad1 = new System.Windows.Forms.Label(); - this.bnEditC4 = new System.Windows.Forms.Button(); - this.bnEditC3 = new System.Windows.Forms.Button(); - this.bnEditC2 = new System.Windows.Forms.Button(); this.StartWindowsCheckBox = new System.Windows.Forms.CheckBox(); - this.bnDeleteC4 = new System.Windows.Forms.Button(); - this.bnDeleteC3 = new System.Windows.Forms.Button(); - this.bnDeleteC2 = new System.Windows.Forms.Button(); - this.bnDeleteC1 = new System.Windows.Forms.Button(); - this.bnEditC1 = new System.Windows.Forms.Button(); - this.cBController4 = new System.Windows.Forms.ComboBox(); - this.cBController3 = new System.Windows.Forms.ComboBox(); - this.cBController2 = new System.Windows.Forms.ComboBox(); - this.cBController1 = new System.Windows.Forms.ComboBox(); this.lbLastMessage = new System.Windows.Forms.Label(); + this.startMinimizedCheckBox = new System.Windows.Forms.CheckBox(); + this.hideDS4CheckBox = new System.Windows.Forms.CheckBox(); this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); this.cMTaskbar = new System.Windows.Forms.ContextMenuStrip(this.components); this.editProfileForController1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -80,26 +56,67 @@ this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.openProfiles = new System.Windows.Forms.OpenFileDialog(); + this.tabMain = new System.Windows.Forms.TabControl(); + this.tabControllers = new System.Windows.Forms.TabPage(); + this.tabProfiles = new System.Windows.Forms.TabPage(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.tsBNewProfle = new System.Windows.Forms.ToolStripButton(); + this.tsBEditProfile = new System.Windows.Forms.ToolStripButton(); + this.tsBDeleteProfile = new System.Windows.Forms.ToolStripButton(); + this.tSBDupProfile = new System.Windows.Forms.ToolStripButton(); + this.lBProfiles = new System.Windows.Forms.ListBox(); + this.tabLog = new System.Windows.Forms.TabPage(); + this.tabAutoProfiles = new System.Windows.Forms.TabPage(); + this.pBStatus4 = new System.Windows.Forms.PictureBox(); + this.pBStatus3 = new System.Windows.Forms.PictureBox(); + this.pBStatus2 = new System.Windows.Forms.PictureBox(); + this.lBBatt4 = new System.Windows.Forms.Label(); + this.lBBatt3 = new System.Windows.Forms.Label(); + this.lBBatt2 = new System.Windows.Forms.Label(); + this.lBBatt1 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.cBController4 = new System.Windows.Forms.ComboBox(); + this.bnEditC1 = new System.Windows.Forms.Button(); + this.cBController3 = new System.Windows.Forms.ComboBox(); + this.cBController2 = new System.Windows.Forms.ComboBox(); + this.bnEditC2 = new System.Windows.Forms.Button(); + this.cBController1 = new System.Windows.Forms.ComboBox(); + this.lbPad4 = new System.Windows.Forms.Label(); + this.lbPad3 = new System.Windows.Forms.Label(); + this.bnEditC4 = new System.Windows.Forms.Button(); + this.bnEditC3 = new System.Windows.Forms.Button(); + this.lbPad2 = new System.Windows.Forms.Label(); + this.lbPad1 = new System.Windows.Forms.Label(); + this.pBStatus1 = new System.Windows.Forms.PictureBox(); + this.tLPControllers = new System.Windows.Forms.TableLayoutPanel(); this.pnlButton.SuspendLayout(); - this.pnlDebug.SuspendLayout(); - this.pnlStatus.SuspendLayout(); - this.gpPads.SuspendLayout(); this.cMTaskbar.SuspendLayout(); + this.tabMain.SuspendLayout(); + this.tabControllers.SuspendLayout(); + this.tabProfiles.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + this.tabLog.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pBStatus4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pBStatus3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pBStatus2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pBStatus1)).BeginInit(); + this.tLPControllers.SuspendLayout(); this.SuspendLayout(); // // lvDebug // - this.lvDebug.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); this.lvDebug.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.chTime, this.chData}); + this.lvDebug.Dock = System.Windows.Forms.DockStyle.Fill; this.lvDebug.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lvDebug.FullRowSelect = true; - this.lvDebug.Location = new System.Drawing.Point(0, 0); + this.lvDebug.Location = new System.Drawing.Point(3, 3); this.lvDebug.Name = "lvDebug"; - this.lvDebug.Size = new System.Drawing.Size(797, 353); + this.lvDebug.Size = new System.Drawing.Size(780, 281); this.lvDebug.TabIndex = 0; this.lvDebug.UseCompatibleStateImageBehavior = false; this.lvDebug.View = System.Windows.Forms.View.Details; @@ -122,32 +139,38 @@ // // pnlButton // - this.pnlButton.Controls.Add(this.linkLabel1); + this.pnlButton.BackColor = System.Drawing.SystemColors.Control; + this.pnlButton.Controls.Add(this.label1); this.pnlButton.Controls.Add(this.btnImportProfiles); this.pnlButton.Controls.Add(this.llbHelp); this.pnlButton.Controls.Add(this.btnStartStop); this.pnlButton.Controls.Add(this.btnClear); this.pnlButton.Controls.Add(this.lnkControllers); + this.pnlButton.Controls.Add(this.StartWindowsCheckBox); + this.pnlButton.Controls.Add(this.lbLastMessage); + this.pnlButton.Controls.Add(this.startMinimizedCheckBox); + this.pnlButton.Controls.Add(this.hideDS4CheckBox); this.pnlButton.Dock = System.Windows.Forms.DockStyle.Bottom; - this.pnlButton.Location = new System.Drawing.Point(0, 477); + this.pnlButton.Location = new System.Drawing.Point(0, 313); this.pnlButton.Name = "pnlButton"; - this.pnlButton.Size = new System.Drawing.Size(794, 35); + this.pnlButton.Size = new System.Drawing.Size(794, 80); this.pnlButton.TabIndex = 10; // - // linkLabel1 + // label1 // - this.linkLabel1.AutoSize = true; - this.linkLabel1.Location = new System.Drawing.Point(232, 11); - this.linkLabel1.Name = "linkLabel1"; - this.linkLabel1.Size = new System.Drawing.Size(51, 13); - this.linkLabel1.TabIndex = 15; - this.linkLabel1.TabStop = true; - this.linkLabel1.Text = "Programs"; - this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(290, 58); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(98, 13); + this.label1.TabIndex = 46; + this.label1.Text = "Used to test values"; + this.label1.Visible = false; // // btnImportProfiles // - this.btnImportProfiles.Location = new System.Drawing.Point(9, 6); + this.btnImportProfiles.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnImportProfiles.Location = new System.Drawing.Point(7, 51); this.btnImportProfiles.Name = "btnImportProfiles"; this.btnImportProfiles.Size = new System.Drawing.Size(87, 23); this.btnImportProfiles.TabIndex = 14; @@ -157,19 +180,20 @@ // // llbHelp // + this.llbHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.llbHelp.AutoSize = true; - this.llbHelp.Location = new System.Drawing.Point(102, 11); + this.llbHelp.Location = new System.Drawing.Point(641, 8); this.llbHelp.Name = "llbHelp"; - this.llbHelp.Size = new System.Drawing.Size(62, 13); + this.llbHelp.Size = new System.Drawing.Size(79, 13); this.llbHelp.TabIndex = 13; this.llbHelp.TabStop = true; - this.llbHelp.Text = "Help/About"; + this.llbHelp.Text = "Hotkeys/About"; this.llbHelp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llbHelp_LinkClicked); // // btnStartStop // this.btnStartStop.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnStartStop.Location = new System.Drawing.Point(666, 6); + this.btnStartStop.Location = new System.Drawing.Point(666, 51); this.btnStartStop.Name = "btnStartStop"; this.btnStartStop.Size = new System.Drawing.Size(119, 23); this.btnStartStop.TabIndex = 1; @@ -181,7 +205,7 @@ // this.btnClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.btnClear.Enabled = false; - this.btnClear.Location = new System.Drawing.Point(563, 6); + this.btnClear.Location = new System.Drawing.Point(563, 51); this.btnClear.Name = "btnClear"; this.btnClear.Size = new System.Drawing.Size(97, 23); this.btnClear.TabIndex = 9; @@ -191,8 +215,9 @@ // // lnkControllers // + this.lnkControllers.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.lnkControllers.AutoSize = true; - this.lnkControllers.Location = new System.Drawing.Point(170, 11); + this.lnkControllers.Location = new System.Drawing.Point(726, 8); this.lnkControllers.Name = "lnkControllers"; this.lnkControllers.Size = new System.Drawing.Size(56, 13); this.lnkControllers.TabIndex = 11; @@ -200,218 +225,11 @@ this.lnkControllers.Text = "Controllers"; this.lnkControllers.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkControllers_LinkClicked); // - // hideDS4CheckBox - // - this.hideDS4CheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.hideDS4CheckBox.AutoSize = true; - this.hideDS4CheckBox.Location = new System.Drawing.Point(675, 109); - this.hideDS4CheckBox.Name = "hideDS4CheckBox"; - this.hideDS4CheckBox.Size = new System.Drawing.Size(119, 17); - this.hideDS4CheckBox.TabIndex = 13; - this.hideDS4CheckBox.Text = "Hide DS4 Controller"; - this.hideDS4CheckBox.UseVisualStyleBackColor = true; - this.hideDS4CheckBox.CheckedChanged += new System.EventHandler(this.hideDS4CheckBox_CheckedChanged); - // - // startMinimizedCheckBox - // - this.startMinimizedCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.startMinimizedCheckBox.AutoSize = true; - this.startMinimizedCheckBox.Location = new System.Drawing.Point(572, 109); - this.startMinimizedCheckBox.Name = "startMinimizedCheckBox"; - this.startMinimizedCheckBox.Size = new System.Drawing.Size(97, 17); - this.startMinimizedCheckBox.TabIndex = 40; - this.startMinimizedCheckBox.Text = "Start Minimized"; - this.startMinimizedCheckBox.UseVisualStyleBackColor = true; - this.startMinimizedCheckBox.CheckedChanged += new System.EventHandler(this.startMinimizedCheckBox_CheckedChanged); - // - // pnlDebug - // - this.pnlDebug.Controls.Add(this.lvDebug); - this.pnlDebug.Dock = System.Windows.Forms.DockStyle.Fill; - this.pnlDebug.Location = new System.Drawing.Point(0, 124); - this.pnlDebug.Name = "pnlDebug"; - this.pnlDebug.Size = new System.Drawing.Size(794, 353); - this.pnlDebug.TabIndex = 11; - // - // pnlStatus - // - this.pnlStatus.Controls.Add(this.gpPads); - this.pnlStatus.Dock = System.Windows.Forms.DockStyle.Top; - this.pnlStatus.Location = new System.Drawing.Point(0, 0); - this.pnlStatus.Name = "pnlStatus"; - this.pnlStatus.Size = new System.Drawing.Size(794, 124); - this.pnlStatus.TabIndex = 9; - // - // gpPads - // - this.gpPads.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.gpPads.Controls.Add(this.label1); - this.gpPads.Controls.Add(this.lbSelPro4); - this.gpPads.Controls.Add(this.lbSelPro3); - this.gpPads.Controls.Add(this.lbSelPro2); - this.gpPads.Controls.Add(this.lbSelPro1); - this.gpPads.Controls.Add(this.lbPad4); - this.gpPads.Controls.Add(this.lbPad3); - this.gpPads.Controls.Add(this.lbPad2); - this.gpPads.Controls.Add(this.lbPad1); - this.gpPads.Controls.Add(this.bnEditC4); - this.gpPads.Controls.Add(this.bnEditC3); - this.gpPads.Controls.Add(this.hideDS4CheckBox); - this.gpPads.Controls.Add(this.bnEditC2); - this.gpPads.Controls.Add(this.StartWindowsCheckBox); - this.gpPads.Controls.Add(this.startMinimizedCheckBox); - this.gpPads.Controls.Add(this.bnDeleteC4); - this.gpPads.Controls.Add(this.bnDeleteC3); - this.gpPads.Controls.Add(this.bnDeleteC2); - this.gpPads.Controls.Add(this.bnDeleteC1); - this.gpPads.Controls.Add(this.bnEditC1); - this.gpPads.Controls.Add(this.cBController4); - this.gpPads.Controls.Add(this.cBController3); - this.gpPads.Controls.Add(this.cBController2); - this.gpPads.Controls.Add(this.cBController1); - this.gpPads.Controls.Add(this.lbLastMessage); - this.gpPads.Location = new System.Drawing.Point(-6, -9); - this.gpPads.Name = "gpPads"; - this.gpPads.Size = new System.Drawing.Size(803, 182); - this.gpPads.TabIndex = 1; - this.gpPads.TabStop = false; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 117); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(35, 13); - this.label1.TabIndex = 46; - this.label1.Text = "label1"; - this.label1.Visible = false; - // - // lbSelPro4 - // - this.lbSelPro4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lbSelPro4.AutoSize = true; - this.lbSelPro4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbSelPro4.Location = new System.Drawing.Point(470, 86); - this.lbSelPro4.Name = "lbSelPro4"; - this.lbSelPro4.Size = new System.Drawing.Size(96, 15); - this.lbSelPro4.TabIndex = 45; - this.lbSelPro4.Text = "Selected Profile:"; - // - // lbSelPro3 - // - this.lbSelPro3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lbSelPro3.AutoSize = true; - this.lbSelPro3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbSelPro3.Location = new System.Drawing.Point(470, 62); - this.lbSelPro3.Name = "lbSelPro3"; - this.lbSelPro3.Size = new System.Drawing.Size(96, 15); - this.lbSelPro3.TabIndex = 45; - this.lbSelPro3.Text = "Selected Profile:"; - // - // lbSelPro2 - // - this.lbSelPro2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lbSelPro2.AutoSize = true; - this.lbSelPro2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbSelPro2.Location = new System.Drawing.Point(470, 40); - this.lbSelPro2.Name = "lbSelPro2"; - this.lbSelPro2.Size = new System.Drawing.Size(96, 15); - this.lbSelPro2.TabIndex = 45; - this.lbSelPro2.Text = "Selected Profile:"; - // - // lbSelPro1 - // - this.lbSelPro1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lbSelPro1.AutoSize = true; - this.lbSelPro1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbSelPro1.Location = new System.Drawing.Point(470, 17); - this.lbSelPro1.Name = "lbSelPro1"; - this.lbSelPro1.Size = new System.Drawing.Size(96, 15); - this.lbSelPro1.TabIndex = 45; - this.lbSelPro1.Text = "Selected Profile:"; - // - // lbPad4 - // - this.lbPad4.AutoSize = true; - this.lbPad4.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbPad4.Location = new System.Drawing.Point(12, 89); - this.lbPad4.Name = "lbPad4"; - this.lbPad4.Size = new System.Drawing.Size(167, 13); - this.lbPad4.TabIndex = 44; - this.lbPad4.Text = "Pad 4 : Disconnected"; - // - // lbPad3 - // - this.lbPad3.AutoSize = true; - this.lbPad3.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbPad3.Location = new System.Drawing.Point(12, 66); - this.lbPad3.Name = "lbPad3"; - this.lbPad3.Size = new System.Drawing.Size(167, 13); - this.lbPad3.TabIndex = 44; - this.lbPad3.Text = "Pad 3 : Disconnected"; - // - // lbPad2 - // - this.lbPad2.AutoSize = true; - this.lbPad2.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbPad2.Location = new System.Drawing.Point(12, 43); - this.lbPad2.Name = "lbPad2"; - this.lbPad2.Size = new System.Drawing.Size(167, 13); - this.lbPad2.TabIndex = 44; - this.lbPad2.Text = "Pad 2 : Disconnected"; - // - // lbPad1 - // - this.lbPad1.AutoSize = true; - this.lbPad1.Font = new System.Drawing.Font("Lucida Console", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbPad1.Location = new System.Drawing.Point(12, 19); - this.lbPad1.Name = "lbPad1"; - this.lbPad1.Size = new System.Drawing.Size(167, 13); - this.lbPad1.TabIndex = 44; - this.lbPad1.Text = "Pad 1 : Disconnected"; - // - // bnEditC4 - // - this.bnEditC4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bnEditC4.Location = new System.Drawing.Point(698, 83); - this.bnEditC4.Name = "bnEditC4"; - this.bnEditC4.Size = new System.Drawing.Size(40, 23); - this.bnEditC4.TabIndex = 43; - this.bnEditC4.Tag = "3"; - this.bnEditC4.Text = "Edit"; - this.bnEditC4.UseVisualStyleBackColor = true; - this.bnEditC4.Click += new System.EventHandler(this.editButtons_Click); - // - // bnEditC3 - // - this.bnEditC3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bnEditC3.Location = new System.Drawing.Point(698, 60); - this.bnEditC3.Name = "bnEditC3"; - this.bnEditC3.Size = new System.Drawing.Size(40, 23); - this.bnEditC3.TabIndex = 43; - this.bnEditC3.Tag = "2"; - this.bnEditC3.Text = "Edit"; - this.bnEditC3.UseVisualStyleBackColor = true; - this.bnEditC3.Click += new System.EventHandler(this.editButtons_Click); - // - // bnEditC2 - // - this.bnEditC2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bnEditC2.Location = new System.Drawing.Point(698, 37); - this.bnEditC2.Name = "bnEditC2"; - this.bnEditC2.Size = new System.Drawing.Size(40, 23); - this.bnEditC2.TabIndex = 43; - this.bnEditC2.Tag = "1"; - this.bnEditC2.Text = "Edit"; - this.bnEditC2.UseVisualStyleBackColor = true; - this.bnEditC2.Click += new System.EventHandler(this.editButtons_Click); - // // StartWindowsCheckBox // - this.StartWindowsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.StartWindowsCheckBox.Anchor = System.Windows.Forms.AnchorStyles.Bottom; this.StartWindowsCheckBox.AutoSize = true; - this.StartWindowsCheckBox.Location = new System.Drawing.Point(452, 109); + this.StartWindowsCheckBox.Location = new System.Drawing.Point(228, 28); this.StartWindowsCheckBox.Name = "StartWindowsCheckBox"; this.StartWindowsCheckBox.Size = new System.Drawing.Size(117, 17); this.StartWindowsCheckBox.TabIndex = 40; @@ -419,119 +237,39 @@ this.StartWindowsCheckBox.UseVisualStyleBackColor = true; this.StartWindowsCheckBox.CheckedChanged += new System.EventHandler(this.StartWindowsCheckBox_CheckedChanged); // - // bnDeleteC4 - // - this.bnDeleteC4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bnDeleteC4.Location = new System.Drawing.Point(744, 83); - this.bnDeleteC4.Name = "bnDeleteC4"; - this.bnDeleteC4.Size = new System.Drawing.Size(47, 23); - this.bnDeleteC4.TabIndex = 43; - this.bnDeleteC4.Tag = "3"; - this.bnDeleteC4.Text = "Delete"; - this.bnDeleteC4.UseVisualStyleBackColor = true; - this.bnDeleteC4.Click += new System.EventHandler(this.deleteButtons_Click); - // - // bnDeleteC3 - // - this.bnDeleteC3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bnDeleteC3.Location = new System.Drawing.Point(744, 60); - this.bnDeleteC3.Name = "bnDeleteC3"; - this.bnDeleteC3.Size = new System.Drawing.Size(47, 23); - this.bnDeleteC3.TabIndex = 43; - this.bnDeleteC3.Tag = "2"; - this.bnDeleteC3.Text = "Delete"; - this.bnDeleteC3.UseVisualStyleBackColor = true; - this.bnDeleteC3.Click += new System.EventHandler(this.deleteButtons_Click); - // - // bnDeleteC2 - // - this.bnDeleteC2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bnDeleteC2.Location = new System.Drawing.Point(744, 37); - this.bnDeleteC2.Name = "bnDeleteC2"; - this.bnDeleteC2.Size = new System.Drawing.Size(47, 23); - this.bnDeleteC2.TabIndex = 43; - this.bnDeleteC2.Tag = "1"; - this.bnDeleteC2.Text = "Delete"; - this.bnDeleteC2.UseVisualStyleBackColor = true; - this.bnDeleteC2.Click += new System.EventHandler(this.deleteButtons_Click); - // - // bnDeleteC1 - // - this.bnDeleteC1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bnDeleteC1.Location = new System.Drawing.Point(744, 13); - this.bnDeleteC1.Name = "bnDeleteC1"; - this.bnDeleteC1.Size = new System.Drawing.Size(47, 23); - this.bnDeleteC1.TabIndex = 43; - this.bnDeleteC1.Tag = "0"; - this.bnDeleteC1.Text = "Delete"; - this.bnDeleteC1.UseVisualStyleBackColor = true; - this.bnDeleteC1.Click += new System.EventHandler(this.deleteButtons_Click); - // - // bnEditC1 - // - this.bnEditC1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bnEditC1.Location = new System.Drawing.Point(698, 13); - this.bnEditC1.Name = "bnEditC1"; - this.bnEditC1.Size = new System.Drawing.Size(40, 23); - this.bnEditC1.TabIndex = 43; - this.bnEditC1.Tag = "0"; - this.bnEditC1.Text = "Edit"; - this.bnEditC1.UseVisualStyleBackColor = true; - this.bnEditC1.Click += new System.EventHandler(this.editButtons_Click); - // - // cBController4 - // - this.cBController4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cBController4.FormattingEnabled = true; - this.cBController4.Location = new System.Drawing.Point(571, 84); - this.cBController4.Name = "cBController4"; - this.cBController4.Size = new System.Drawing.Size(121, 21); - this.cBController4.TabIndex = 42; - this.cBController4.Tag = "3"; - this.cBController4.SelectedValueChanged += new System.EventHandler(this.Profile_Changed); - // - // cBController3 - // - this.cBController3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cBController3.FormattingEnabled = true; - this.cBController3.Location = new System.Drawing.Point(571, 61); - this.cBController3.Name = "cBController3"; - this.cBController3.Size = new System.Drawing.Size(121, 21); - this.cBController3.TabIndex = 42; - this.cBController3.Tag = "2"; - this.cBController3.SelectedValueChanged += new System.EventHandler(this.Profile_Changed); - // - // cBController2 - // - this.cBController2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cBController2.FormattingEnabled = true; - this.cBController2.Location = new System.Drawing.Point(571, 38); - this.cBController2.Name = "cBController2"; - this.cBController2.Size = new System.Drawing.Size(121, 21); - this.cBController2.TabIndex = 42; - this.cBController2.Tag = "1"; - this.cBController2.SelectedValueChanged += new System.EventHandler(this.Profile_Changed); - // - // cBController1 - // - this.cBController1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.cBController1.FormattingEnabled = true; - this.cBController1.Location = new System.Drawing.Point(571, 15); - this.cBController1.Name = "cBController1"; - this.cBController1.Size = new System.Drawing.Size(121, 21); - this.cBController1.TabIndex = 42; - this.cBController1.Tag = "0"; - this.cBController1.SelectedValueChanged += new System.EventHandler(this.Profile_Changed); - // // lbLastMessage // - this.lbLastMessage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.lbLastMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.lbLastMessage.ForeColor = System.Drawing.SystemColors.GrayText; - this.lbLastMessage.Location = new System.Drawing.Point(12, 110); + this.lbLastMessage.Location = new System.Drawing.Point(7, 8); this.lbLastMessage.Name = "lbLastMessage"; - this.lbLastMessage.Size = new System.Drawing.Size(434, 17); + this.lbLastMessage.Size = new System.Drawing.Size(628, 17); this.lbLastMessage.TabIndex = 41; - this.lbLastMessage.Visible = false; + // + // startMinimizedCheckBox + // + this.startMinimizedCheckBox.Anchor = System.Windows.Forms.AnchorStyles.Bottom; + this.startMinimizedCheckBox.AutoSize = true; + this.startMinimizedCheckBox.Location = new System.Drawing.Point(348, 28); + this.startMinimizedCheckBox.Name = "startMinimizedCheckBox"; + this.startMinimizedCheckBox.Size = new System.Drawing.Size(97, 17); + this.startMinimizedCheckBox.TabIndex = 40; + this.startMinimizedCheckBox.Text = "Start Minimized"; + this.startMinimizedCheckBox.UseVisualStyleBackColor = true; + this.startMinimizedCheckBox.CheckedChanged += new System.EventHandler(this.startMinimizedCheckBox_CheckedChanged); + // + // hideDS4CheckBox + // + this.hideDS4CheckBox.Anchor = System.Windows.Forms.AnchorStyles.Bottom; + this.hideDS4CheckBox.AutoSize = true; + this.hideDS4CheckBox.Location = new System.Drawing.Point(451, 28); + this.hideDS4CheckBox.Name = "hideDS4CheckBox"; + this.hideDS4CheckBox.Size = new System.Drawing.Size(119, 17); + this.hideDS4CheckBox.TabIndex = 13; + this.hideDS4CheckBox.Text = "Hide DS4 Controller"; + this.hideDS4CheckBox.UseVisualStyleBackColor = true; + this.hideDS4CheckBox.CheckedChanged += new System.EventHandler(this.hideDS4CheckBox_CheckedChanged); // // notifyIcon1 // @@ -541,7 +279,8 @@ this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); this.notifyIcon1.Text = "DS4 Xinput Tool"; this.notifyIcon1.Visible = true; - this.notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon_Click); + this.notifyIcon1.BalloonTipClicked += new System.EventHandler(this.notifyIcon1_BalloonTipClicked); + this.notifyIcon1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseClick); // // cMTaskbar // @@ -596,6 +335,7 @@ // // openToolStripMenuItem // + this.openToolStripMenuItem.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.openToolStripMenuItem.Name = "openToolStripMenuItem"; this.openToolStripMenuItem.Size = new System.Drawing.Size(214, 22); this.openToolStripMenuItem.Text = "Open"; @@ -605,7 +345,7 @@ // this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; this.exitToolStripMenuItem.Size = new System.Drawing.Size(214, 22); - this.exitToolStripMenuItem.Text = "Exit"; + this.exitToolStripMenuItem.Text = "Exit (Middle Mouse)"; this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); // // toolStripSeparator2 @@ -618,15 +358,456 @@ this.openProfiles.Filter = "XML Files (*.xml)|*.xml"; this.openProfiles.Multiselect = true; // + // tabMain + // + this.tabMain.Controls.Add(this.tabControllers); + this.tabMain.Controls.Add(this.tabProfiles); + this.tabMain.Controls.Add(this.tabLog); + this.tabMain.Controls.Add(this.tabAutoProfiles); + this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabMain.Location = new System.Drawing.Point(0, 0); + this.tabMain.Name = "tabMain"; + this.tabMain.SelectedIndex = 0; + this.tabMain.Size = new System.Drawing.Size(794, 313); + this.tabMain.TabIndex = 12; + this.tabMain.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged); + // + // tabControllers + // + this.tabControllers.Controls.Add(this.tLPControllers); + this.tabControllers.Location = new System.Drawing.Point(4, 22); + this.tabControllers.Name = "tabControllers"; + this.tabControllers.Size = new System.Drawing.Size(786, 287); + this.tabControllers.TabIndex = 3; + this.tabControllers.Text = "Controllers"; + this.tabControllers.UseVisualStyleBackColor = true; + // + // tabProfiles + // + this.tabProfiles.Controls.Add(this.toolStrip1); + this.tabProfiles.Controls.Add(this.lBProfiles); + this.tabProfiles.Location = new System.Drawing.Point(4, 22); + this.tabProfiles.Name = "tabProfiles"; + this.tabProfiles.Padding = new System.Windows.Forms.Padding(3); + this.tabProfiles.Size = new System.Drawing.Size(786, 287); + this.tabProfiles.TabIndex = 0; + this.tabProfiles.Text = "Profiles"; + this.tabProfiles.UseVisualStyleBackColor = true; + // + // toolStrip1 + // + this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsBNewProfle, + this.tsBEditProfile, + this.tsBDeleteProfile, + this.tSBDupProfile}); + this.toolStrip1.Location = new System.Drawing.Point(3, 3); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(780, 25); + this.toolStrip1.TabIndex = 1; + this.toolStrip1.Text = "toolStrip1"; + // + // tsBNewProfle + // + this.tsBNewProfle.Image = global::ScpServer.Properties.Resources.newprofile; + this.tsBNewProfle.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tsBNewProfle.Name = "tsBNewProfle"; + this.tsBNewProfle.Size = new System.Drawing.Size(88, 22); + this.tsBNewProfle.Text = "New Profile"; + this.tsBNewProfle.TextAlign = System.Drawing.ContentAlignment.TopLeft; + this.tsBNewProfle.Click += new System.EventHandler(this.tsBNewProfile_Click); + // + // tsBEditProfile + // + this.tsBEditProfile.Image = global::ScpServer.Properties.Resources.edit; + this.tsBEditProfile.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tsBEditProfile.Name = "tsBEditProfile"; + this.tsBEditProfile.Size = new System.Drawing.Size(84, 22); + this.tsBEditProfile.Text = "Edit Profile"; + this.tsBEditProfile.TextAlign = System.Drawing.ContentAlignment.TopLeft; + this.tsBEditProfile.Click += new System.EventHandler(this.tsBNEditProfile_Click); + // + // tsBDeleteProfile + // + this.tsBDeleteProfile.Image = ((System.Drawing.Image)(resources.GetObject("tsBDeleteProfile.Image"))); + this.tsBDeleteProfile.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tsBDeleteProfile.Name = "tsBDeleteProfile"; + this.tsBDeleteProfile.Size = new System.Drawing.Size(97, 22); + this.tsBDeleteProfile.Text = "Delete Profile"; + this.tsBDeleteProfile.TextAlign = System.Drawing.ContentAlignment.TopLeft; + this.tsBDeleteProfile.Click += new System.EventHandler(this.tsBDeleteProfle_Click); + // + // tSBDupProfile + // + this.tSBDupProfile.Image = ((System.Drawing.Image)(resources.GetObject("tSBDupProfile.Image"))); + this.tSBDupProfile.ImageTransparentColor = System.Drawing.Color.Magenta; + this.tSBDupProfile.Name = "tSBDupProfile"; + this.tSBDupProfile.Size = new System.Drawing.Size(120, 22); + this.tSBDupProfile.Text = "Dupliacate Profile"; + this.tSBDupProfile.TextAlign = System.Drawing.ContentAlignment.TopLeft; + this.tSBDupProfile.Click += new System.EventHandler(this.tSBDupProfile_Click); + // + // lBProfiles + // + this.lBProfiles.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lBProfiles.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.lBProfiles.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lBProfiles.FormattingEnabled = true; + this.lBProfiles.ItemHeight = 16; + this.lBProfiles.Location = new System.Drawing.Point(3, 29); + this.lBProfiles.MultiColumn = true; + this.lBProfiles.Name = "lBProfiles"; + this.lBProfiles.Size = new System.Drawing.Size(780, 256); + this.lBProfiles.TabIndex = 0; + this.lBProfiles.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lBProfiles_MouseDoubleClick); + // + // tabLog + // + this.tabLog.Controls.Add(this.lvDebug); + this.tabLog.Location = new System.Drawing.Point(4, 22); + this.tabLog.Name = "tabLog"; + this.tabLog.Padding = new System.Windows.Forms.Padding(3); + this.tabLog.Size = new System.Drawing.Size(786, 287); + this.tabLog.TabIndex = 1; + this.tabLog.Text = "Log"; + this.tabLog.UseVisualStyleBackColor = true; + // + // tabAutoProfiles + // + this.tabAutoProfiles.Location = new System.Drawing.Point(4, 22); + this.tabAutoProfiles.Name = "tabAutoProfiles"; + this.tabAutoProfiles.Size = new System.Drawing.Size(786, 287); + this.tabAutoProfiles.TabIndex = 2; + this.tabAutoProfiles.Text = "Auto Profiles (Alpha)"; + this.tabAutoProfiles.UseVisualStyleBackColor = true; + // + // pBStatus4 + // + this.pBStatus4.Anchor = System.Windows.Forms.AnchorStyles.None; + this.pBStatus4.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus4.Image"))); + this.pBStatus4.InitialImage = global::ScpServer.Properties.Resources.BT; + this.pBStatus4.Location = new System.Drawing.Point(370, 106); + this.pBStatus4.Name = "pBStatus4"; + this.pBStatus4.Size = new System.Drawing.Size(39, 20); + this.pBStatus4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pBStatus4.TabIndex = 47; + this.pBStatus4.TabStop = false; + // + // pBStatus3 + // + this.pBStatus3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.pBStatus3.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus3.Image"))); + this.pBStatus3.InitialImage = global::ScpServer.Properties.Resources.BT; + this.pBStatus3.Location = new System.Drawing.Point(370, 77); + this.pBStatus3.Name = "pBStatus3"; + this.pBStatus3.Size = new System.Drawing.Size(39, 20); + this.pBStatus3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pBStatus3.TabIndex = 47; + this.pBStatus3.TabStop = false; + // + // pBStatus2 + // + this.pBStatus2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.pBStatus2.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus2.Image"))); + this.pBStatus2.InitialImage = global::ScpServer.Properties.Resources.BT; + this.pBStatus2.Location = new System.Drawing.Point(370, 48); + this.pBStatus2.Name = "pBStatus2"; + this.pBStatus2.Size = new System.Drawing.Size(39, 20); + this.pBStatus2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pBStatus2.TabIndex = 47; + this.pBStatus2.TabStop = false; + // + // lBBatt4 + // + this.lBBatt4.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lBBatt4.AutoSize = true; + this.lBBatt4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lBBatt4.Location = new System.Drawing.Point(521, 109); + this.lBBatt4.Name = "lBBatt4"; + this.lBBatt4.Size = new System.Drawing.Size(39, 15); + this.lBBatt4.TabIndex = 44; + this.lBBatt4.Text = "100%"; + // + // lBBatt3 + // + this.lBBatt3.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lBBatt3.AutoSize = true; + this.lBBatt3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lBBatt3.Location = new System.Drawing.Point(521, 80); + this.lBBatt3.Name = "lBBatt3"; + this.lBBatt3.Size = new System.Drawing.Size(39, 15); + this.lBBatt3.TabIndex = 44; + this.lBBatt3.Text = "100%"; + // + // lBBatt2 + // + this.lBBatt2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lBBatt2.AutoSize = true; + this.lBBatt2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lBBatt2.Location = new System.Drawing.Point(521, 51); + this.lBBatt2.Name = "lBBatt2"; + this.lBBatt2.Size = new System.Drawing.Size(39, 15); + this.lBBatt2.TabIndex = 44; + this.lBBatt2.Text = "100%"; + // + // lBBatt1 + // + this.lBBatt1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.lBBatt1.AutoSize = true; + this.lBBatt1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lBBatt1.Location = new System.Drawing.Point(521, 22); + this.lBBatt1.Name = "lBBatt1"; + this.lBBatt1.Size = new System.Drawing.Size(39, 15); + this.lBBatt1.TabIndex = 44; + this.lBBatt1.Text = "100%"; + // + // label5 + // + this.label5.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.Location = new System.Drawing.Point(515, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(51, 15); + this.label5.TabIndex = 45; + this.label5.Text = "Battery"; + // + // label4 + // + this.label4.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(366, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(47, 15); + this.label4.TabIndex = 45; + this.label4.Text = "Status"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(3, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(21, 15); + this.label3.TabIndex = 45; + this.label3.Text = "ID"; + // + // label2 + // + this.label2.Anchor = System.Windows.Forms.AnchorStyles.None; + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.Location = new System.Drawing.Point(624, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(109, 15); + this.label2.TabIndex = 45; + this.label2.Text = "Selected Profile"; + // + // cBController4 + // + this.cBController4.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cBController4.FormattingEnabled = true; + this.cBController4.Location = new System.Drawing.Point(622, 106); + this.cBController4.Name = "cBController4"; + this.cBController4.Size = new System.Drawing.Size(114, 21); + this.cBController4.TabIndex = 42; + this.cBController4.Tag = "3"; + this.cBController4.SelectedValueChanged += new System.EventHandler(this.Profile_Changed); + // + // bnEditC1 + // + this.bnEditC1.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.bnEditC1.Location = new System.Drawing.Point(742, 18); + this.bnEditC1.Name = "bnEditC1"; + this.bnEditC1.Size = new System.Drawing.Size(41, 23); + this.bnEditC1.TabIndex = 43; + this.bnEditC1.Tag = "0"; + this.bnEditC1.Text = "Edit"; + this.bnEditC1.UseVisualStyleBackColor = true; + this.bnEditC1.Click += new System.EventHandler(this.editButtons_Click); + // + // cBController3 + // + this.cBController3.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cBController3.FormattingEnabled = true; + this.cBController3.Location = new System.Drawing.Point(622, 77); + this.cBController3.Name = "cBController3"; + this.cBController3.Size = new System.Drawing.Size(114, 21); + this.cBController3.TabIndex = 42; + this.cBController3.Tag = "2"; + this.cBController3.SelectedValueChanged += new System.EventHandler(this.Profile_Changed); + // + // cBController2 + // + this.cBController2.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cBController2.FormattingEnabled = true; + this.cBController2.Location = new System.Drawing.Point(622, 48); + this.cBController2.Name = "cBController2"; + this.cBController2.Size = new System.Drawing.Size(114, 21); + this.cBController2.TabIndex = 42; + this.cBController2.Tag = "1"; + this.cBController2.SelectedValueChanged += new System.EventHandler(this.Profile_Changed); + // + // bnEditC2 + // + this.bnEditC2.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.bnEditC2.Location = new System.Drawing.Point(742, 47); + this.bnEditC2.Name = "bnEditC2"; + this.bnEditC2.Size = new System.Drawing.Size(41, 23); + this.bnEditC2.TabIndex = 43; + this.bnEditC2.Tag = "1"; + this.bnEditC2.Text = "Edit"; + this.bnEditC2.UseVisualStyleBackColor = true; + this.bnEditC2.Click += new System.EventHandler(this.editButtons_Click); + // + // cBController1 + // + this.cBController1.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cBController1.FormattingEnabled = true; + this.cBController1.Location = new System.Drawing.Point(622, 19); + this.cBController1.Name = "cBController1"; + this.cBController1.Size = new System.Drawing.Size(114, 21); + this.cBController1.TabIndex = 42; + this.cBController1.Tag = "0"; + this.cBController1.SelectedValueChanged += new System.EventHandler(this.Profile_Changed); + // + // lbPad4 + // + this.lbPad4.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.lbPad4.AutoSize = true; + this.lbPad4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbPad4.Location = new System.Drawing.Point(3, 109); + this.lbPad4.Name = "lbPad4"; + this.lbPad4.Size = new System.Drawing.Size(123, 15); + this.lbPad4.TabIndex = 44; + this.lbPad4.Text = "Pad 4 : Disconnected"; + // + // lbPad3 + // + this.lbPad3.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.lbPad3.AutoSize = true; + this.lbPad3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbPad3.Location = new System.Drawing.Point(3, 80); + this.lbPad3.Name = "lbPad3"; + this.lbPad3.Size = new System.Drawing.Size(123, 15); + this.lbPad3.TabIndex = 44; + this.lbPad3.Text = "Pad 3 : Disconnected"; + // + // bnEditC4 + // + this.bnEditC4.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.bnEditC4.Location = new System.Drawing.Point(742, 105); + this.bnEditC4.Name = "bnEditC4"; + this.bnEditC4.Size = new System.Drawing.Size(41, 23); + this.bnEditC4.TabIndex = 43; + this.bnEditC4.Tag = "3"; + this.bnEditC4.Text = "Edit"; + this.bnEditC4.UseVisualStyleBackColor = true; + this.bnEditC4.Click += new System.EventHandler(this.editButtons_Click); + // + // bnEditC3 + // + this.bnEditC3.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.bnEditC3.Location = new System.Drawing.Point(742, 76); + this.bnEditC3.Name = "bnEditC3"; + this.bnEditC3.Size = new System.Drawing.Size(41, 23); + this.bnEditC3.TabIndex = 43; + this.bnEditC3.Tag = "2"; + this.bnEditC3.Text = "Edit"; + this.bnEditC3.UseVisualStyleBackColor = true; + this.bnEditC3.Click += new System.EventHandler(this.editButtons_Click); + // + // lbPad2 + // + this.lbPad2.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.lbPad2.AutoSize = true; + this.lbPad2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbPad2.Location = new System.Drawing.Point(3, 51); + this.lbPad2.Name = "lbPad2"; + this.lbPad2.Size = new System.Drawing.Size(123, 15); + this.lbPad2.TabIndex = 44; + this.lbPad2.Text = "Pad 2 : Disconnected"; + // + // lbPad1 + // + this.lbPad1.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.lbPad1.AutoSize = true; + this.lbPad1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbPad1.Location = new System.Drawing.Point(3, 22); + this.lbPad1.Name = "lbPad1"; + this.lbPad1.Size = new System.Drawing.Size(123, 15); + this.lbPad1.TabIndex = 44; + this.lbPad1.Text = "Pad 1 : Disconnected"; + // + // pBStatus1 + // + this.pBStatus1.Anchor = System.Windows.Forms.AnchorStyles.None; + this.pBStatus1.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus1.Image"))); + this.pBStatus1.InitialImage = global::ScpServer.Properties.Resources.BT; + this.pBStatus1.Location = new System.Drawing.Point(370, 19); + this.pBStatus1.Name = "pBStatus1"; + this.pBStatus1.Size = new System.Drawing.Size(39, 20); + this.pBStatus1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pBStatus1.TabIndex = 47; + this.pBStatus1.TabStop = false; + // + // tLPControllers + // + this.tLPControllers.ColumnCount = 5; + this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 51.34884F)); + this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 23.34039F)); + this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.31077F)); + this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 120F)); + this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 45F)); + this.tLPControllers.Controls.Add(this.pBStatus1, 1, 1); + this.tLPControllers.Controls.Add(this.lbPad1, 0, 1); + this.tLPControllers.Controls.Add(this.lbPad2, 0, 2); + this.tLPControllers.Controls.Add(this.bnEditC3, 4, 3); + this.tLPControllers.Controls.Add(this.bnEditC4, 4, 4); + this.tLPControllers.Controls.Add(this.lbPad3, 0, 3); + this.tLPControllers.Controls.Add(this.lbPad4, 0, 4); + this.tLPControllers.Controls.Add(this.cBController1, 3, 1); + this.tLPControllers.Controls.Add(this.bnEditC2, 4, 2); + this.tLPControllers.Controls.Add(this.cBController2, 3, 2); + this.tLPControllers.Controls.Add(this.cBController3, 3, 3); + this.tLPControllers.Controls.Add(this.bnEditC1, 4, 1); + this.tLPControllers.Controls.Add(this.cBController4, 3, 4); + this.tLPControllers.Controls.Add(this.label2, 3, 0); + this.tLPControllers.Controls.Add(this.label3, 0, 0); + this.tLPControllers.Controls.Add(this.label4, 1, 0); + this.tLPControllers.Controls.Add(this.label5, 2, 0); + this.tLPControllers.Controls.Add(this.lBBatt1, 2, 1); + this.tLPControllers.Controls.Add(this.lBBatt2, 2, 2); + this.tLPControllers.Controls.Add(this.lBBatt3, 2, 3); + this.tLPControllers.Controls.Add(this.lBBatt4, 2, 4); + this.tLPControllers.Controls.Add(this.pBStatus2, 1, 2); + this.tLPControllers.Controls.Add(this.pBStatus3, 1, 3); + this.tLPControllers.Controls.Add(this.pBStatus4, 1, 4); + this.tLPControllers.Dock = System.Windows.Forms.DockStyle.Top; + this.tLPControllers.Location = new System.Drawing.Point(0, 0); + this.tLPControllers.Name = "tLPControllers"; + this.tLPControllers.RowCount = 5; + this.tLPControllers.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tLPControllers.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tLPControllers.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tLPControllers.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tLPControllers.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tLPControllers.Size = new System.Drawing.Size(786, 130); + this.tLPControllers.TabIndex = 46; + // // ScpForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(794, 512); - this.Controls.Add(this.pnlDebug); + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(794, 393); + this.Controls.Add(this.tabMain); this.Controls.Add(this.pnlButton); - this.Controls.Add(this.pnlStatus); - this.MinimumSize = new System.Drawing.Size(560, 192); + this.MinimumSize = new System.Drawing.Size(420, 190); this.Name = "ScpForm"; this.Text = "DS4Windows 1.0 Beta J2K Build"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_Close); @@ -634,11 +815,20 @@ this.Resize += new System.EventHandler(this.Form_Resize); this.pnlButton.ResumeLayout(false); this.pnlButton.PerformLayout(); - this.pnlDebug.ResumeLayout(false); - this.pnlStatus.ResumeLayout(false); - this.gpPads.ResumeLayout(false); - this.gpPads.PerformLayout(); this.cMTaskbar.ResumeLayout(false); + this.tabMain.ResumeLayout(false); + this.tabControllers.ResumeLayout(false); + this.tabProfiles.ResumeLayout(false); + this.tabProfiles.PerformLayout(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.tabLog.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pBStatus4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pBStatus3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pBStatus2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pBStatus1)).EndInit(); + this.tLPControllers.ResumeLayout(false); + this.tLPControllers.PerformLayout(); this.ResumeLayout(false); } @@ -651,35 +841,12 @@ private System.Windows.Forms.Timer tmrUpdate; private System.Windows.Forms.Panel pnlButton; private System.Windows.Forms.Button btnStartStop; - private System.Windows.Forms.Panel pnlDebug; private System.Windows.Forms.Button btnClear; - private System.Windows.Forms.Panel pnlStatus; - private System.Windows.Forms.GroupBox gpPads; private System.Windows.Forms.NotifyIcon notifyIcon1; private System.Windows.Forms.CheckBox hideDS4CheckBox; private System.Windows.Forms.CheckBox startMinimizedCheckBox; private System.Windows.Forms.Label lbLastMessage; private System.Windows.Forms.LinkLabel lnkControllers; - private System.Windows.Forms.ComboBox cBController4; - private System.Windows.Forms.ComboBox cBController3; - private System.Windows.Forms.ComboBox cBController2; - private System.Windows.Forms.ComboBox cBController1; - private System.Windows.Forms.Button bnEditC4; - private System.Windows.Forms.Button bnEditC3; - private System.Windows.Forms.Button bnEditC2; - private System.Windows.Forms.Button bnEditC1; - private System.Windows.Forms.Button bnDeleteC1; - private System.Windows.Forms.Button bnDeleteC4; - private System.Windows.Forms.Button bnDeleteC3; - private System.Windows.Forms.Button bnDeleteC2; - private System.Windows.Forms.Label lbPad4; - private System.Windows.Forms.Label lbPad3; - private System.Windows.Forms.Label lbPad2; - private System.Windows.Forms.Label lbPad1; - private System.Windows.Forms.Label lbSelPro1; - private System.Windows.Forms.Label lbSelPro4; - private System.Windows.Forms.Label lbSelPro3; - private System.Windows.Forms.Label lbSelPro2; private System.Windows.Forms.ContextMenuStrip cMTaskbar; private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem editProfileForController1ToolStripMenuItem; @@ -694,7 +861,42 @@ private System.Windows.Forms.Button btnImportProfiles; private System.Windows.Forms.CheckBox StartWindowsCheckBox; private System.Windows.Forms.Label label1; - private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.TabControl tabMain; + private System.Windows.Forms.TabPage tabProfiles; + private System.Windows.Forms.TabPage tabLog; + private System.Windows.Forms.ListBox lBProfiles; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton tsBNewProfle; + private System.Windows.Forms.ToolStripButton tsBEditProfile; + private System.Windows.Forms.ToolStripButton tsBDeleteProfile; + private System.Windows.Forms.TabPage tabAutoProfiles; + private System.Windows.Forms.ToolStripButton tSBDupProfile; + private System.Windows.Forms.TabPage tabControllers; + private System.Windows.Forms.TableLayoutPanel tLPControllers; + private System.Windows.Forms.PictureBox pBStatus1; + private System.Windows.Forms.Label lbPad1; + private System.Windows.Forms.Label lbPad2; + private System.Windows.Forms.Button bnEditC3; + private System.Windows.Forms.Button bnEditC4; + private System.Windows.Forms.Label lbPad3; + private System.Windows.Forms.Label lbPad4; + private System.Windows.Forms.ComboBox cBController1; + private System.Windows.Forms.Button bnEditC2; + private System.Windows.Forms.ComboBox cBController2; + private System.Windows.Forms.ComboBox cBController3; + private System.Windows.Forms.Button bnEditC1; + private System.Windows.Forms.ComboBox cBController4; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label lBBatt1; + private System.Windows.Forms.Label lBBatt2; + private System.Windows.Forms.Label lBBatt3; + private System.Windows.Forms.Label lBBatt4; + private System.Windows.Forms.PictureBox pBStatus2; + private System.Windows.Forms.PictureBox pBStatus3; + private System.Windows.Forms.PictureBox pBStatus4; //private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2; } } diff --git a/DS4Tool/ScpForm.cs b/DS4Tool/ScpForm.cs index cda2c70..96e3fb3 100644 --- a/DS4Tool/ScpForm.cs +++ b/DS4Tool/ScpForm.cs @@ -2,57 +2,118 @@ using System.Windows.Forms; using System.Runtime.InteropServices; using DS4Control; +using DS4Library; using System.IO; using System.Reflection; using System.Collections.Generic; using System.Net; using System.Management; +using System.Drawing; using Microsoft.Win32; using System.Diagnostics; namespace ScpServer { public partial class ScpForm : Form { - double version = 8.2; + double version = 9; private DS4Control.Control rootHub; delegate void LogDebugDelegate(DateTime Time, String Data); - protected Label[] Pads; + protected Label[] Pads, Batteries; protected ComboBox[] cbs; protected Button[] ebns; - protected Button[] dbns; - protected Label[] protexts; + protected PictureBox[] statPB; protected ToolStripMenuItem[] shortcuts; WebClient wc = new WebClient(); + Timer test = new Timer(), processcheck = new Timer(); + #region Aero + /*[StructLayout(LayoutKind.Sequential)] + public struct MARGINS + { + public int Left; + public int Right; + public int Top; + public int Bottom; + } + + [DllImport("dwmapi.dll")] + public static extern int DwmExtendFrameIntoClientArea(IntPtr hWnd, ref MARGINS pMargins); + /// + /// Determins whether the Desktop Windows Manager is enabled + /// and can therefore display Aero + /// + [DllImport("dwmapi.dll", PreserveSig = false)] + public static extern bool DwmIsCompositionEnabled(); + + + /// + /// Override the OnPaintBackground method, to draw the desired + /// Glass regions black and display as Glass + /// + protected override void OnPaintBackground(PaintEventArgs e) + { + base.OnPaint(e); + if (DwmIsCompositionEnabled()) + { + e.Graphics.Clear(Color.Black); + // put back the original form background for non-glass area + Rectangle clientArea = new Rectangle( + marg.Left, + marg.Top, + this.ClientRectangle.Width - marg.Left - marg.Right, + this.ClientRectangle.Height - marg.Top - marg.Bottom); + Brush b = new SolidBrush(this.BackColor); + e.Graphics.FillRectangle(b, clientArea); + } + } + + MARGINS marg = new MARGINS() { Left = 0, Right = 0, Top = 0, Bottom = 0 }; + /// + /// Use the form padding values to define a Glass margin + /// + private void trackBar1_Scroll(object sender, EventArgs e) + { + this.Padding = new Padding(this.trackBar1.Value); + int value = (int)trackBar1.Value; + marg = new MARGINS() { Left = value, Right = value, Top = value, Bottom = value }; + DwmExtendFrameIntoClientArea(this.Handle, ref marg); + //SetGlassRegion(); + //Invalidate(); + }*/ + #endregion + + protected void SetupArrays() + { + Pads = new Label[4] { lbPad1, lbPad2, lbPad3, lbPad4 }; + Batteries = new Label[4] { lBBatt1, lBBatt2, lBBatt3, lBBatt4 }; + cbs = new ComboBox[4] { cBController1, cBController2, cBController3, cBController4 }; + ebns = new Button[4] { bnEditC1, bnEditC2, bnEditC3, bnEditC4 }; + statPB = new PictureBox[4] { pBStatus1, pBStatus2, pBStatus3, pBStatus4 }; + + shortcuts = new ToolStripMenuItem[4] { (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[0], + (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[1], + (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[2], + (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[3] }; + } public ScpForm() { InitializeComponent(); ThemeUtil.SetTheme(lvDebug); - Pads = new Label[4] { lbPad1, lbPad2, lbPad3, lbPad4 }; - cbs = new ComboBox[4] { cBController1, cBController2, cBController3, cBController4 }; - ebns = new Button[4] { bnEditC1, bnEditC2, bnEditC3, bnEditC4 }; - dbns = new Button[4] { bnDeleteC1, bnDeleteC2, bnDeleteC3, bnDeleteC4 }; - protexts = new Label[4] { lbSelPro1, lbSelPro2, lbSelPro3, lbSelPro4 }; - - shortcuts = new ToolStripMenuItem[4] { (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[0], - (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[1], - (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[2], - (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[3] }; + SetupArrays(); foreach (ToolStripMenuItem t in shortcuts) t.DropDownItemClicked += Profile_Changed_Menu; CheckDrivers(); - Timer test = new Timer(), processcheck = new Timer(); //test.Start(); - processcheck.Start(); + //processcheck.Start(); processcheck.Tick += processcheck_Tick; - test.Tick += test_Tick; + test.Tick += test_Tick; } void processcheck_Tick(object sender, EventArgs e) { - Process pc = new Process(); + //Process[] processes = Process.GetProcessesByName(""); } private void test_Tick(object sender, EventArgs e) @@ -88,15 +149,18 @@ namespace ScpServer wd.ShowDialog(); } } - - private void Check_Version(object sender, System.ComponentModel.AsyncCompletedEventArgs e) + + private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e) { + Uri url = new Uri("https://dl.dropboxusercontent.com/u/16364552/DS4Tool/newest%20version.txt"); //Sorry other devs, gonna have to find your own server + wc.DownloadFile(url, Global.appdatapath + "\\version.txt"); + Global.setLastChecked(DateTime.Now); double newversion; try { if (double.TryParse(File.ReadAllText(Global.appdatapath + "\\version.txt"), out newversion)) if (newversion > version) - if (MessageBox.Show("Download now?", "New Version Available!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) + if (MessageBox.Show("Download now?", "DS4Windows Update Available!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { if (!File.Exists("Updater.exe")) { @@ -110,7 +174,38 @@ namespace ScpServer else File.Delete(Global.appdatapath + "\\version.txt"); else - File.Delete(Global.appdatapath + "\\version.txt"); + { + File.Delete(Global.appdatapath + "\\version.txt"); + MessageBox.Show("No new version", "You're up to date"); + } + else + File.Delete(Global.appdatapath + "\\version.txt"); + } + catch { }; + } + + private void Check_Version(object sender, System.ComponentModel.AsyncCompletedEventArgs e) + { + double newversion; + try + { + if (double.TryParse(File.ReadAllText(Global.appdatapath + "\\version.txt"), out newversion)) + if (newversion > version) + if (MessageBox.Show("Download now?", "DS4Windows Update Available!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) + { + if (!File.Exists("Updater.exe")) + { + Uri url2 = new Uri("https://dl.dropboxusercontent.com/u/16364552/DS4Tool/Updater.exe"); + WebClient wc2 = new WebClient(); + wc2.DownloadFile(url2, "Updater.exe"); + } + System.Diagnostics.Process.Start("Updater.exe"); + this.Close(); + } + else + File.Delete(Global.appdatapath + "\\version.txt"); + else + File.Delete(Global.appdatapath + "\\version.txt"); else File.Delete(Global.appdatapath + "\\version.txt"); } @@ -143,16 +238,7 @@ namespace ScpServer RegistryKey KeyLoc = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", false); StartWindowsCheckBox.Checked = (KeyLoc.GetValue("DS4Tool") != null); - Pads = new Label[4] { lbPad1, lbPad2, lbPad3, lbPad4 }; - cbs = new ComboBox[4] { cBController1, cBController2, cBController3, cBController4 }; - ebns = new Button[4] { bnEditC1, bnEditC2, bnEditC3, bnEditC4 }; - dbns = new Button[4] { bnDeleteC1, bnDeleteC2, bnDeleteC3, bnDeleteC4 }; - protexts = new Label[4] { lbSelPro1, lbSelPro2, lbSelPro3, lbSelPro4 }; - - shortcuts = new ToolStripMenuItem[4] { (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[0], - (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[1], - (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[2], - (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[3] }; + SetupArrays(); if (startMinimizedCheckBox.Checked) { this.WindowState = FormWindowState.Minimized; @@ -173,6 +259,13 @@ namespace ScpServer wc.DownloadFileCompleted += Check_Version; Global.setLastChecked(DateTime.Now); } + WinProgs WP = new WinProgs(profilenames.ToArray()); + WP.TopLevel = false; + WP.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + WP.Visible = true; + WP.Dock = DockStyle.Fill; + WP.Enabled = false; + tabAutoProfiles.Controls.Add(WP); } List profilenames = new List(); public void RefreshProfiles() @@ -184,6 +277,8 @@ namespace ScpServer foreach (String s in profiles) if (s.EndsWith(".xml")) profilenames.Add(Path.GetFileNameWithoutExtension(s)); + lBProfiles.Items.Clear(); + lBProfiles.Items.AddRange(profilenames.ToArray()); for (int i = 0; i < 4; i++) { cbs[i].Items.Clear(); @@ -261,6 +356,16 @@ namespace ScpServer } } + protected void ShowNotification(object sender, string text) + { + if (Form.ActiveForm != this) + { + this.notifyIcon1.BalloonTipText = text; + notifyIcon1.BalloonTipTitle = "DS4Windows"; + notifyIcon1.ShowBalloonTip(1); + } + } + protected void Form_Resize(object sender, EventArgs e) { if (FormWindowState.Minimized == this.WindowState) @@ -278,11 +383,8 @@ namespace ScpServer //Added last message alternative if (this.Height > 220) - lbLastMessage.Visible = false; + lbLastMessage.Visible = tabMain.SelectedIndex != 2; else lbLastMessage.Visible = true; - if (protexts != null) - for (int i = 0; i < 4; i++) - protexts[i].Visible = (this.Width > 665); } protected void btnStartStop_Click(object sender, EventArgs e) @@ -341,10 +443,17 @@ namespace ScpServer { // If controllers are detected, but not checked, automatically check #1 //bool checkFirst = true; - String tooltip = "DS4Windows"; + String tooltip = "DS4Windows v" + version; for (Int32 Index = 0; Index < Pads.Length; Index++) { - Pads[Index].Text = rootHub.getDS4ControllerInfo(Index); + Pads[Index].Text = rootHub.getDS4MacAddress(Index); + switch (rootHub.getDS4Status(Index)) + { + case "USB": statPB[Index].Image = Properties.Resources.USB; break; + case "BT": statPB[Index].Image = Properties.Resources.BT; break; + default: statPB[Index].Image = Properties.Resources.none; break; + } + Batteries[Index].Text = rootHub.getDS4Battery(Index); if (Pads[Index].Text != String.Empty) { Pads[Index].Enabled = true; @@ -352,9 +461,10 @@ namespace ScpServer { cbs[Index].Enabled = true; ebns[Index].Enabled = true; - dbns[Index].Enabled = true; - protexts[Index].Enabled = true; shortcuts[Index].Enabled = true; + Batteries[Index].Enabled = true; + MinimumSize = new Size(MinimumSize.Width, 190 + 29 * Index); + rootHub.DS4Controllers[Index].Report += ScpForm_Report; } // As above //if (checkFirst && (Pads[Index].Checked && Index != 0)) @@ -366,10 +476,12 @@ namespace ScpServer Pads[Index].Enabled = false; cbs[Index].Enabled = false; ebns[Index].Enabled = false; - dbns[Index].Enabled = false; - protexts[Index].Enabled = false; - if (OptionsDialog[Index] != null) - OptionsDialog[Index].Close(); + Batteries[Index].Enabled = false; + if (opt != null && opt.device == Index) + { + opt.Close(); + opt = null; + } shortcuts[Index].Enabled = false; // As above //if (Index == 0) @@ -385,22 +497,139 @@ namespace ScpServer // Pads[0].Checked = true; notifyIcon1.Text = tooltip; } + + delegate void HotKeysDelegate(object sender, EventArgs e); + void ScpForm_Report(object sender, EventArgs e) + { + if (InvokeRequired) + Invoke(new HotKeysDelegate(Hotkeys), new object[] { sender, e }); + else + Hotkeys(sender, e); + } + + void Hotkeys(object sender, EventArgs e) + { + //DS4Device device = (DS4Device)sender; + for (int i = 0; i < 4; i++) + { + string slide = rootHub.TouchpadSlide(0); + if (slide == "left") + { + if (cbs[i].SelectedIndex == 0) + cbs[i].SelectedIndex = cbs[0].Items.Count - 2; + else + cbs[i].SelectedIndex--; + } + else if (slide == "right") + { + if (cbs[i].SelectedIndex == cbs[0].Items.Count - 2) + cbs[i].SelectedIndex = 0; + else + cbs[i].SelectedIndex++; + } + if (slide.Contains("t")) + { + LogDebug(DateTime.Now, "Controller " + (i + 1) + " is now using Profile \"" + cbs[i].Text + "\""); + ShowNotification(this, "Controller " + (i + 1) + " is now using Profile \"" + cbs[i].Text + "\""); + } + } + } + protected void On_Debug(object sender, DS4Control.DebugEventArgs e) { LogDebug(e.Time, e.Data); } - private Options[] OptionsDialog = { null, null, null, null }; + + private void lBProfiles_MouseDoubleClick(object sender, MouseEventArgs e) + { + if (lBProfiles.SelectedIndex >= 0) + ShowOptions(4, lBProfiles.SelectedItem.ToString()); + } + + + private void tsBNewProfile_Click(object sender, EventArgs e) + { + ShowOptions(4, ""); + } + + + private void tsBNEditProfile_Click(object sender, EventArgs e) + { + if (lBProfiles.SelectedIndex >= 0) + ShowOptions(4, lBProfiles.SelectedItem.ToString()); + } + + private void tsBDeleteProfle_Click(object sender, EventArgs e) + { + if (lBProfiles.SelectedIndex >= 0) + { + string filename = lBProfiles.SelectedItem.ToString(); + if (MessageBox.Show("\"" + filename + "\" cannot be restored.", "Delete Profile?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) + { + System.IO.File.Delete(Global.appdatapath + "\\Profiles\\" + filename + ".xml"); + RefreshProfiles(); + } + } + } + + + private void tSBDupProfile_Click(object sender, EventArgs e) + { + string filename = ""; + if (lBProfiles.SelectedIndex >= 0) + { + filename = lBProfiles.SelectedItem.ToString(); + MessageTextBox MTB = new MessageTextBox(filename, this); + MTB.TopLevel = false; + MTB.Dock = DockStyle.Top; + MTB.Visible = true; + MTB.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + tabProfiles.Controls.Add(MTB); + lBProfiles.SendToBack(); + toolStrip1.SendToBack(); + toolStrip1.Enabled = false; + lBProfiles.Enabled = false; + MTB.FormClosed += delegate { toolStrip1.Enabled = true; lBProfiles.Enabled = true; }; + } + } + //private Options[] OptionsDialog = { null, null, null, null }; + Options opt; + private System.Drawing.Size oldsize; private void ShowOptions(int devID, string profile) { - if (OptionsDialog[devID] == null) + //if (OptionsDialog[devID] == null) + if (opt == null) { - Options opt; - opt = OptionsDialog[devID] = new Options(rootHub, devID, profile); + this.Show(); + WindowState = FormWindowState.Normal; + toolStrip1.Enabled = false; + opt = new Options(rootHub, devID, profile, this); opt.Text = "Options for Controller " + (devID + 1); opt.Icon = this.Icon; - opt.FormClosed += delegate { OptionsDialog[devID] = null; RefreshProfiles(); }; - opt.Show(); + opt.TopLevel = false; + opt.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + opt.Visible = true; + opt.Dock = DockStyle.Fill; + tabProfiles.Controls.Add(opt); + lBProfiles.SendToBack(); + toolStrip1.SendToBack(); + FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + opt.FormClosed += delegate + { + opt = null; + RefreshProfiles(); + FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; + this.Size = oldsize; + oldsize = new System.Drawing.Size(0, 0); + toolStrip1.Enabled = true; + }; + oldsize = this.Size; + if (this.Size.Height < 470) + this.Size = new System.Drawing.Size(this.Size.Width, 470); + if (this.Size.Width < 910) + this.Size = new System.Drawing.Size(910, this.Size.Height); + tabMain.SelectedIndex = 1; } } private void editButtons_Click(object sender, EventArgs e) @@ -426,23 +655,10 @@ namespace ScpServer private void Enable_Controls(int device, bool on) { ebns[device].Enabled = on; - dbns[device].Enabled = on; cbs[device].Enabled = on; shortcuts[device].Enabled = on; } - private void deleteButtons_Click(object sender, EventArgs e) - { - Button bn = (Button)sender; - int tdevice = Int32.Parse(bn.Tag.ToString()); - string filename = cbs[tdevice].Items[cbs[tdevice].SelectedIndex].ToString(); - if (MessageBox.Show("\"" + filename + "\" cannot be restored.", "Delete Profile?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) - { - System.IO.File.Delete(Global.appdatapath + "\\Profiles\\" +filename + ".xml"); - Global.setAProfile(tdevice, null); - RefreshProfiles(); - } - } - + private void hotkeysButton_Click(object sender, EventArgs e) { Hotkeys hotkeysForm = new Hotkeys(); @@ -504,6 +720,7 @@ namespace ScpServer else ebns[tdevice].Text = "Edit"; } + ControllerStatusChanged(); } private void Profile_Changed_Menu(object sender, ToolStripItemClickedEventArgs e) @@ -537,31 +754,26 @@ namespace ScpServer private void openToolStripMenuItem_Click(object sender, EventArgs e) { - notifyIcon_Click(sender, e); - } + this.Show(); + WindowState = FormWindowState.Normal; + } - private void notifyIcon_Click(object sender, EventArgs e) + private void notifyIcon1_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == System.Windows.Forms.MouseButtons.Left) + { + this.Show(); + WindowState = FormWindowState.Normal; + } + else if (e.Button == System.Windows.Forms.MouseButtons.Middle) + this.Close(); + } + private void notifyIcon1_BalloonTipClicked(object sender, EventArgs e) { this.Show(); WindowState = FormWindowState.Normal; } - private void linkProfiles_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) - { - openProfiles.InitialDirectory = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Profiles\"; - if (openProfiles.ShowDialog() == System.Windows.Forms.DialogResult.OK) - { - string[] files = openProfiles .FileNames; - for (int i = 0; i < files.Length; i++) - { - string[] temp = files[i].Split('\\'); - files[i] = temp[temp.Length-1]; - File.Copy(openProfiles.FileNames[i], Global.appdatapath + "\\Profiles\\" + files[i], true); - } - RefreshProfiles(); - } - } - private void llbHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Hotkeys hotkeysForm = new Hotkeys(); @@ -583,8 +795,16 @@ namespace ScpServer protected void Form_Close(object sender, FormClosingEventArgs e) { - Global.setFormWidth(this.Width); - Global.setFormHeight(this.Height); + if (oldsize == new System.Drawing.Size(0, 0)) + { + Global.setFormWidth(this.Width); + Global.setFormHeight(this.Height); + } + else + { + Global.setFormWidth(oldsize.Width); + Global.setFormHeight(oldsize.Height); + } Global.Save(); rootHub.Stop(); } @@ -604,6 +824,29 @@ namespace ScpServer WP.ShowDialog(); } + private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) + { + lbLastMessage.Visible = tabMain.SelectedIndex != 2; + if (tabMain.SelectedIndex == 3 && opt == null) + { + if (this.Size.Width < 755 || this.Size.Height < 355) + oldsize = Size; + if (this.Size.Height < 355) + this.Size = new System.Drawing.Size(this.Size.Width, 355); + if (this.Size.Width < 755) + this.Size = new System.Drawing.Size(755, this.Size.Height); + + } + else if (oldsize != new System.Drawing.Size(0, 0) && opt == null) + { + Size = oldsize; + oldsize = new System.Drawing.Size(0, 0); + } + + } + + + } public class ThemeUtil diff --git a/DS4Tool/ScpForm.resx b/DS4Tool/ScpForm.resx index 49fecf4..002297b 100644 --- a/DS4Tool/ScpForm.resx +++ b/DS4Tool/ScpForm.resx @@ -6302,4 +6302,255 @@ 449, 17 + + 568, 17 + + + 568, 17 + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEpSURBVDhPYxhc4GJ69P+zyRH/oVwMsMXX/f9GL2fs8ucS + gv9/XDnz/8eZHf932ZtgKFqgp/7/9YJJ/193F/1faqaPacipaL//76c2/P8+p/X/x96y/xvN9eCKQJpB + hn+bWgs2YKGhNnZXgGx+3ZD6/0Nb1v+Xdcn/V+ir/wdpfregDy42Q0Eau2YYANn8NMf3//OSULAGkI3P + C4PAYtPlpfBrhgGQzQ/S3P4/SLD7fyfEAIwJ2owMQM5+mBv0/6a/FhwTbTtYc2Mm3GYYvuavR9gQkOZH + 7cVgp9+KsgY7G6QJxIaJ4TRkvZM1WDMosO6leqL4GaQJJAaSu5Psjj0a19ib/7+X6Q/2O7YAAxkCkgPh + +fpa2F0B8sI8HTXskkAAksMnPxCAgQEAgp/brMfRrFIAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADQSURBVDhPlZCxCsIwEIbziO76CL6CXYNjJl1dMnQpLobu + Lm7ViuCkUwW1jtItcmdPbXoh8YOflHD5+nNCa225iFhg2AXu8jyPk/gEQJSEhsvz3a6PV/yGh8aYT9pR + Hq4BkCQJm14rEuxON2ywKi423VQ47EKS9ukbt0HTPPH0CQCl1FcSajBdHuwk3aNYSomPKR2BC9cAqB81 + picINRgvSjucb+1AFXj/dwPaDZ0dgZssy9gGoxnTwAcsjIC//gYICmAACO7ABwl8RAlCEUKIFyWXYHlY + K643AAAAAElFTkSuQmCC + + + + + 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 + 1WDefQHxFbbcLCQjmgAAAABJRU5ErkJggg== + + + + + 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 + 1WDefQHxFbbcLCQjmgAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACcAAAAUCAYAAAAOTSQ2AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp + bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE + sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs + AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4 + JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR + 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd + li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF + ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX + wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF + hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55 + 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ + VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB + 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC + qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE + j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I + 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9 + rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG + fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp + B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ + yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC + YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln + yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v + vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za + Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v + Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb + PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ + 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h + /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr + XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS + fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ + tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALEwAACxMBAJqcGAAAAT5JREFUSEvNlL2Kg1AQ + RvNsptdgY2EhaCPYphERBn8iKSzEMgQCQbBSECx9Nne/Czew7GRj1iA3cCCcKTzMiLt5npWFlarASlVg + pSqwcgl5nlOSJMTNQBAE5Pv+0/kSWPkK+v5N00TDMJDneb8CDMOgcRypaRqyLOvfgax8RRRF1HWdCGjb + lmzbfgQgDOF934s40zS3jQPY2PV6pfv9TpfLRUTIjUm33++3P6sEGyvLkuq6FjHYVFVVwmmatioMsPId + sLGiKChNUwrDULB2YxJWvgNOiU0dj8cHn9gaYOVSEIZzyo1JPhXIyiUg7Ha7iXPGcSxOiSD8l25tICtf + 4bquCMM5T6fTj3cMQXCYZVm2/afEcRw6n88igHv5EYgZOBwO28YBnFXX9acPxuyv+RJYqQqsVAVWqgIr + 1WDefQHxFbbcLCQjmgAAAABJRU5ErkJggg== + + + + + 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 + 1WDefQHxFbbcLCQjmgAAAABJRU5ErkJggg== + + \ No newline at end of file diff --git a/DS4Tool/WinProgs.Designer.cs b/DS4Tool/WinProgs.Designer.cs index 827654f..f1e0617 100644 --- a/DS4Tool/WinProgs.Designer.cs +++ b/DS4Tool/WinProgs.Designer.cs @@ -32,7 +32,6 @@ this.button2 = new System.Windows.Forms.Button(); this.listBox2 = new System.Windows.Forms.ListBox(); this.label1 = new System.Windows.Forms.Label(); - this.lBProfiles = new System.Windows.Forms.ListBox(); this.comboBox1 = new System.Windows.Forms.ComboBox(); this.comboBox2 = new System.Windows.Forms.ComboBox(); this.comboBox3 = new System.Windows.Forms.ComboBox(); @@ -42,6 +41,7 @@ this.label3 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); this.SuspendLayout(); // // listBox1 @@ -52,8 +52,6 @@ this.listBox1.Size = new System.Drawing.Size(279, 199); this.listBox1.TabIndex = 0; this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged); - this.listBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listBox1_KeyDown); - this.listBox1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseDoubleClick); // // button2 // @@ -72,8 +70,6 @@ this.listBox2.Size = new System.Drawing.Size(220, 199); this.listBox2.TabIndex = 0; this.listBox2.SelectedIndexChanged += new System.EventHandler(this.listBox2_SelectedIndexChanged); - this.listBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listBox2_KeyDown); - this.listBox2.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox2_MouseDoubleClick); // // label1 // @@ -82,15 +78,6 @@ this.label1.Size = new System.Drawing.Size(717, 19); this.label1.TabIndex = 3; // - // lBProfiles - // - this.lBProfiles.FormattingEnabled = true; - this.lBProfiles.Location = new System.Drawing.Point(516, 136); - this.lBProfiles.Name = "lBProfiles"; - this.lBProfiles.Size = new System.Drawing.Size(196, 30); - this.lBProfiles.TabIndex = 4; - this.lBProfiles.Visible = false; - // // comboBox1 // this.comboBox1.FormattingEnabled = true; @@ -173,11 +160,24 @@ this.label5.TabIndex = 7; this.label5.Text = "Controller 4"; // + // label6 + // + this.label6.AutoSize = true; + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(530, 129); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(182, 24); + this.label6.TabIndex = 8; + this.label6.Text = "Not yet ready for use"; + // // WinProgs // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; this.ClientSize = new System.Drawing.Size(736, 230); + this.Controls.Add(this.label6); this.Controls.Add(this.label5); this.Controls.Add(this.label4); this.Controls.Add(this.label3); @@ -186,7 +186,6 @@ this.Controls.Add(this.comboBox3); this.Controls.Add(this.comboBox2); this.Controls.Add(this.comboBox1); - this.Controls.Add(this.lBProfiles); this.Controls.Add(this.label1); this.Controls.Add(this.bnSave); this.Controls.Add(this.button2); @@ -205,7 +204,6 @@ private System.Windows.Forms.Button button2; private System.Windows.Forms.ListBox listBox2; private System.Windows.Forms.Label label1; - private System.Windows.Forms.ListBox lBProfiles; private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.ComboBox comboBox2; private System.Windows.Forms.ComboBox comboBox3; @@ -215,5 +213,6 @@ private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; } } \ No newline at end of file diff --git a/DS4Tool/WinProgs.cs b/DS4Tool/WinProgs.cs index 5ea4249..e2551f7 100644 --- a/DS4Tool/WinProgs.cs +++ b/DS4Tool/WinProgs.cs @@ -19,22 +19,23 @@ namespace ScpServer public partial class WinProgs : Form { ToolTip tp = new ToolTip(); + ComboBox[] cbs; public WinProgs(string[] oc) { InitializeComponent(); - comboBox1.Text = "(none)"; - comboBox2.Text = "(none)"; - comboBox3.Text = "(none)"; - comboBox4.Text = "(none)"; - comboBox1.Items.AddRange(oc); - comboBox2.Items.AddRange(oc); - comboBox3.Items.AddRange(oc); - comboBox4.Items.AddRange(oc); - foreach (string o in oc) - lBProfiles.Items.Add(o); - string[] lods = Directory.GetDirectories(@"C:\Program Files (x86)\Steam\SteamApps\common"); - foreach (string s in lods) - listBox1.Items.Add(Path.GetFileName(s)); + cbs = new ComboBox[4] { comboBox1, comboBox2, comboBox3, comboBox4 }; + for (int i = 0; i < 4; i++) + { + cbs[i].Text = "(none)"; + cbs[i].Items.AddRange(oc); + } + try + { + string[] lods = Directory.GetDirectories(@"C:\Program Files (x86)\Steam\steamapps\common"); + foreach (string s in lods) + listBox1.Items.Add(Path.GetFileName(s)); + } + catch { } if (!File.Exists(Global.appdatapath + @"\Auto Profiles.xml")) Create(); //foreach (ListBox.ObjectCollection s in listBox1.Items) @@ -47,21 +48,6 @@ namespace ScpServer } - private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e) - { - string s = listBox1.SelectedItem.ToString(); - string[] lods = Directory.GetFiles(@"C:\Program Files (x86)\Steam\SteamApps\common\" + s, "*.exe", SearchOption.AllDirectories); - listBox2.Items.Clear(); - foreach (string st in lods) - if (!st.Contains("setup") && !st.Contains("dotnet") && !st.Contains("SETUP") && !st.Contains("vcredist")) - listBox2.Items.Add(Path.GetFileNameWithoutExtension(st)); - } - - private void listBox1_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyValue == 13) - listBox1_MouseDoubleClick(sender, null); - } List lods = new List(); private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { @@ -79,35 +65,15 @@ namespace ScpServer listBox2.Items.Add(Path.GetFileNameWithoutExtension(st)); } - private void listBox2_MouseDoubleClick(object sender, MouseEventArgs e) - { - - } - - private void listBox2_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyValue == 13) - listBox2_MouseDoubleClick(sender, null); - } - private void listBox2_SelectedIndexChanged(object sender, EventArgs e) { if (listBox2.SelectedIndex >= 0) - label1.Text = lods[listBox2.SelectedIndex]; + { + label1.Text = lods[listBox2.SelectedIndex]; + LoadP(); + } } - private void Controller_CheckedChanged(object sender, EventArgs e) - { - /*if (cBC1.Checked) - Global.setAProfile(0, lBProfiles.SelectedItem.ToString()); - if (cBC2.Checked) - Global.setAProfile(1, lBProfiles.SelectedItem.ToString()); - if (cBC3.Checked) - Global.setAProfile(2, lBProfiles.SelectedItem.ToString()); - if (cBC4.Checked) - Global.setAProfile(3, lBProfiles.SelectedItem.ToString());*/ - Save(); - } protected String m_Profile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Auto Profiles.xml"; protected XmlDocument m_Xdoc = new XmlDocument(); @@ -143,13 +109,11 @@ namespace ScpServer //try { XmlNode Node; - Node = m_Xdoc.SelectSingleNode("Programs"); - //Node = m_Xdoc.CreateComment(String.Format(" Auto-Profile Configuration Data. {0} ", DateTime.Now)); - //m_Xdoc.AppendChild(Node); + Node = m_Xdoc.SelectSingleNode("Programs"); string programname = listBox2.SelectedItem.ToString(); //if (programname.Contains(" ")) - programname.Replace(' ', ','); + programname = programname.Replace(' ', '_'); XmlNode xmlprogram = m_Xdoc.CreateNode(XmlNodeType.Element, programname, null); XmlNode xmlController1 = m_Xdoc.CreateNode(XmlNodeType.Element, "Controller1", null); @@ -180,6 +144,42 @@ namespace ScpServer return Saved; } + public void LoadP() + { + //try + { + if (File.Exists(m_Profile)) + { + XmlNode Item; + m_Xdoc.Load(m_Profile); + string programname = listBox2.SelectedItem.ToString(); + programname = programname.Replace(' ', '_'); + string[] profiles = new string[4]; + for (int i = 0; i < 4; i++) + { + try + { + Item = m_Xdoc.SelectSingleNode("/Programs/" + programname + "/Controller" + (i + 1)); + profiles[i] = Item.InnerText; + for (int j = 0; j < cbs[i].Items.Count; j++) + if (cbs[i].Items[j].ToString() == profiles[i]) + { + cbs[i].SelectedIndex = j; + break; + } + //else + //cbs[i].Text = "(none)"; + } + catch { cbs[i].Text = "(none)"; } + } + } + } + //catch { missingSetting = true; } + //return missingSetting; + //if (missingSetting) + //label1.Content = "Current version not found, please re-run DS4Tool"; + } + private void CBProfile_IndexChanged(object sender, EventArgs e) {