2014-04-27 21:32:09 +02:00
using System ;
using System.Collections.Generic ;
using System.ComponentModel ;
using System.Data ;
using System.Drawing ;
using System.Linq ;
using System.Text ;
using System.Windows.Forms ;
namespace ScpServer
{
public partial class KBM360 : Form
{
private DS4Control . Control scpDevice ;
private int device ;
private Button button ;
private Options ops ;
2014-05-12 07:48:50 +02:00
public KBM360 ( DS4Control . Control bus_device , int deviceNum , Options ooo , Button buton )
2014-04-27 21:32:09 +02:00
{
InitializeComponent ( ) ;
device = deviceNum ;
scpDevice = bus_device ;
ops = ooo ;
button = buton ;
2014-05-28 04:49:58 +02:00
cbToggle . Checked = button . Font . Italic ;
cbScanCode . Checked = button . Font . Bold ;
cBMacro . Checked = button . Font . Underline ;
if ( cBMacro . Checked )
lBMacroOrder . Text + = button . Text ;
2014-04-27 21:32:09 +02:00
Text = "Select an action for " + button . Name . Substring ( 2 ) ;
2014-05-12 07:48:50 +02:00
foreach ( System . Windows . Forms . Control control in this . Controls )
2014-04-27 21:32:09 +02:00
if ( control is Button )
( ( Button ) control ) . Click + = new System . EventHandler ( anybtn_Click ) ;
2014-04-29 23:56:58 +02:00
if ( button . Name . Contains ( "Touch" ) )
{
bnMOUSEDOWN . Visible = false ;
bnMOUSELEFT . Visible = false ;
bnMOUSERIGHT . Visible = false ;
2014-05-28 04:49:58 +02:00
bnMOUSEUP . Visible = false ;
2014-04-29 23:56:58 +02:00
}
2014-05-28 04:49:58 +02:00
ToolTip tp = new ToolTip ( ) ;
tp . SetToolTip ( cBMacro , "Max 5 actions" ) ;
2014-04-27 21:32:09 +02:00
}
2014-05-28 04:49:58 +02:00
List < string > macros = new List < string > ( ) ;
List < int > macrostag = new List < int > ( ) ;
2014-04-27 21:32:09 +02:00
public void anybtn_Click ( object sender , EventArgs e )
{
if ( sender is Button )
{
2014-05-28 04:49:58 +02:00
Button bn = ( ( Button ) sender ) ;
2014-04-27 21:32:09 +02:00
string keyname ;
2014-04-29 23:56:58 +02:00
if ( ( ( Button ) sender ) . Text . Contains ( '↑' ) | | ( ( Button ) sender ) . Text . Contains ( '↓' ) | | ( ( Button ) sender ) . Text . Contains ( '→' ) | | ( ( Button ) sender ) . Text . Contains ( '←' ) | | ( ( Button ) sender ) . Text . Contains ( 'Ø' ) )
2014-04-27 21:32:09 +02:00
keyname = ( ( Button ) sender ) . Text . Substring ( 1 ) ;
else if ( ( ( Button ) sender ) . Font . Name = = "Webdings" )
{
if ( ( ( Button ) sender ) . Text = = "9" )
keyname = "Previous Track" ;
else if ( ( ( Button ) sender ) . Text = = "<" )
keyname = "Stop Track" ;
else if ( ( ( Button ) sender ) . Text = = "4" )
keyname = "Play/Pause" ;
else if ( ( ( Button ) sender ) . Text = = ":" )
keyname = "Next Track" ;
else
keyname = "How did you get here?" ;
}
else
keyname = ( ( Button ) sender ) . Text ;
2014-05-28 04:49:58 +02:00
if ( ! cBMacro . Checked )
{
object keytag ;
if ( ( ( Button ) sender ) . Tag . ToString ( ) = = "X360" )
keytag = ( ( Button ) sender ) . Text ;
else
keytag = ( ( Button ) sender ) . Tag ;
ops . ChangeButtonText ( keyname , keytag ) ;
this . Close ( ) ;
}
2014-05-12 07:48:50 +02:00
else
2014-05-28 04:49:58 +02:00
{
if ( ! bn . Font . Bold & & bn . Tag . ToString ( ) ! = "X360" & & macrostag . Count < 5 & & ( bn . Text . Contains ( "Mouse" ) ^ ! bn . Text . Contains ( "Button" ) ) ) //end is xor to remove mouse movement and wheel from macro
{
bn . Font = new Font ( bn . Font , FontStyle . Bold ) ;
macros . Add ( keyname ) ;
int value ;
if ( int . TryParse ( bn . Tag . ToString ( ) , out value ) )
macrostag . Add ( value ) ;
else
{
if ( bn . Text = = "Left Mouse Button" ) macrostag . Add ( 256 ) ;
if ( bn . Text = = "Right Mouse Button" ) macrostag . Add ( 257 ) ;
if ( bn . Text = = "Middle Mouse Button" ) macrostag . Add ( 258 ) ;
if ( bn . Text = = "4th Mouse Button" ) macrostag . Add ( 259 ) ;
if ( bn . Text = = "5th Mouse Button" ) macrostag . Add ( 260 ) ;
}
}
else if ( bn . Tag . ToString ( ) ! = "X360" )
{
bn . Font = new Font ( bn . Font , FontStyle . Regular ) ;
macros . Remove ( keyname ) ;
int value ;
if ( int . TryParse ( bn . Tag . ToString ( ) , out value ) )
macrostag . Remove ( value ) ;
else
{
if ( bn . Text = = "Left Mouse Button" ) macrostag . Remove ( 256 ) ;
if ( bn . Text = = "Right Mouse Button" ) macrostag . Remove ( 257 ) ;
if ( bn . Text = = "Middle Mouse Button" ) macrostag . Remove ( 258 ) ;
if ( bn . Text = = "4th Mouse Button" ) macrostag . Remove ( 259 ) ;
if ( bn . Text = = "5th Mouse Button" ) macrostag . Remove ( 260 ) ;
}
}
string macro = string . Join ( ", " , macros . ToArray ( ) ) ;
lBMacroOrder . Text = "Macro Order: " + macro ;
}
2014-04-27 21:32:09 +02:00
}
}
private void finalMeasure ( object sender , FormClosedEventArgs e )
{
2014-05-28 04:49:58 +02:00
if ( cBMacro . Checked & & macrostag . Count > 0 )
{
ops . ChangeButtonText ( string . Join ( ", " , macros ) , macrostag . ToArray ( ) ) ;
}
ops . Toggle_Bn ( cbScanCode . Checked , cbToggle . Checked , cBMacro . Checked ) ;
ops . UpdateLists ( ) ;
2014-04-27 21:32:09 +02:00
}
private void Key_Down_Action ( object sender , KeyEventArgs e )
{
ops . ChangeButtonText ( e . KeyCode . ToString ( ) , e . KeyValue ) ;
this . Close ( ) ;
}
2014-05-28 04:49:58 +02:00
private void cBMacro_CheckedChanged ( object sender , EventArgs e )
{
lBMacroOrder . Visible = cBMacro . Checked ;
if ( cBMacro . Checked )
cbToggle . Checked = false ;
}
private void cbToggle_CheckedChanged ( object sender , EventArgs e )
{
if ( cbToggle . Checked )
cBMacro . Checked = false ;
}
2014-04-27 21:32:09 +02:00
}
}