diff --git a/AC_Examples.txt b/AC_Examples.txt index 0f0016f..2fae5e1 100644 --- a/AC_Examples.txt +++ b/AC_Examples.txt @@ -22,8 +22,8 @@ MINIMUM EXPORT: - - + + diff --git a/Devices/DeviceCls.cs b/Devices/DeviceCls.cs index 18497a8..af66327 100644 --- a/Devices/DeviceCls.cs +++ b/Devices/DeviceCls.cs @@ -42,6 +42,10 @@ namespace SCJMapper_V2.Devices /// The DX ProductName property /// public abstract string DevName { get; } + /// + /// The DX ProductGUID property + /// + public abstract string DevGUID { get; } /// /// The DX instance number of the object (from enum) - 0 based diff --git a/Devices/Gamepad/GamepadCls.cs b/Devices/Gamepad/GamepadCls.cs index 6402998..36fc0c7 100644 --- a/Devices/Gamepad/GamepadCls.cs +++ b/Devices/Gamepad/GamepadCls.cs @@ -23,10 +23,12 @@ namespace SCJMapper_V2.Devices.Gamepad #region Static Items - public new const string DeviceClass = "xboxpad"; // the device name used throughout this app + public new const string DeviceClass = "xboxpad"; // the device name used throughout this app (3.5 still in user mapping ??) + public const string DeviceClass_3_5 = "gamepad"; // defaultProfile from Alpha 3.5 onwards public new const string DeviceID = "xi1_"; static public int RegisteredDevices = 0; public const string DevNameCIG = "Controller (Gamepad)"; // seems CIG names the Gamepad always like this - and not as the device replies + public const string DevGUIDCIG = "{}"; // @@@ t.b.d. public const string JsUnknown = "xi_"; public new const string DisabledInput = DeviceID + DeviceCls.DisabledInput; @@ -53,7 +55,7 @@ namespace SCJMapper_V2.Devices.Gamepad /// static public new bool IsDeviceClass( string deviceClass ) { - return ( deviceClass == DeviceClass ); + return ( deviceClass == DeviceClass ) || ( deviceClass == DeviceClass_3_5 ); // handle Alpha 3.5+ } /// @@ -146,6 +148,7 @@ namespace SCJMapper_V2.Devices.Gamepad private Controller m_device; private string m_devName = DevNameCIG; + private string m_devGUID = DevGUIDCIG; private Capabilities m_gpCaps = new Capabilities( ); private State m_state = new State( ); @@ -181,6 +184,9 @@ namespace SCJMapper_V2.Devices.Gamepad /// public override string DevName { get { return m_devName; } } /// + /// The ProductGUID property + /// + public override string DevGUID { get { return m_devGUID; } } public void SetDeviceName( string devName ) { diff --git a/Devices/Joystick/JoystickCls.cs b/Devices/Joystick/JoystickCls.cs index d82bcd1..8207703 100644 --- a/Devices/Joystick/JoystickCls.cs +++ b/Devices/Joystick/JoystickCls.cs @@ -381,6 +381,10 @@ namespace SCJMapper_V2.Devices.Joystick /// public override string DevName { get { return m_device.Properties.ProductName; } } /// + /// The ProductGUID property + /// + public override string DevGUID { get { return "{" + m_device.Information.ProductGuid.ToString().ToUpperInvariant() + "}"; } } + /// /// The JS Instance GUID for multiple device support (VJoy gets 2 of the same name) /// public override string DevInstanceGUID { get { return m_device.Information.InstanceGuid.ToString( ); } } diff --git a/Devices/Keyboard/KeyboardCls.cs b/Devices/Keyboard/KeyboardCls.cs index 22b37ac..f725c65 100644 --- a/Devices/Keyboard/KeyboardCls.cs +++ b/Devices/Keyboard/KeyboardCls.cs @@ -293,6 +293,11 @@ namespace SCJMapper_V2.Devices.Keyboard /// The JS ProductName property /// public override string DevName { get { return m_device.Properties.ProductName; } } + /// + /// The ProductGUID property + /// + public override string DevGUID { get { return "{" + m_device.Information.ProductGuid.ToString( ).ToUpperInvariant( ) + "}"; } } + /// /// The JS Instance GUID for multiple device support (VJoy gets 2 of the same name) /// diff --git a/Devices/Mouse/MouseCls.cs b/Devices/Mouse/MouseCls.cs index 8e1905c..a6050e5 100644 --- a/Devices/Mouse/MouseCls.cs +++ b/Devices/Mouse/MouseCls.cs @@ -158,6 +158,10 @@ namespace SCJMapper_V2.Devices.Mouse /// public override string DevName { get { return "Mouse"; } } // no props in directX /// + /// The ProductGUID property + /// + public override string DevGUID { get { return "{}"; } } // @@@ tbd + /// /// The JS Instance GUID for multiple device support (VJoy gets 2 of the same name) /// public override string DevInstanceGUID { get { return m_device.Information.InstanceGuid.ToString( ); } } diff --git a/Devices/Options/DeviceTuningParameter.cs b/Devices/Options/DeviceTuningParameter.cs index dce20b1..6dfebf8 100644 --- a/Devices/Options/DeviceTuningParameter.cs +++ b/Devices/Options/DeviceTuningParameter.cs @@ -308,7 +308,7 @@ namespace SCJMapper_V2.Devices.Options string type = m_devClass; if ( MouseCls.IsDeviceClass( type ) ) type = KeyboardCls.DeviceClass; - tmp += string.Format( "\t\n", type, m_devInstanceNo.ToString( ) ); + tmp += $"\t\n";// 3.5 do we need Product here ?? tmp += string.Format( "\t\t<{0} ", m_option ); if ( InvertUsed ) { diff --git a/Devices/Options/OptionTree.cs b/Devices/Options/OptionTree.cs index 59c774b..2bac8c0 100644 --- a/Devices/Options/OptionTree.cs +++ b/Devices/Options/OptionTree.cs @@ -139,7 +139,7 @@ namespace SCJMapper_V2.Devices.Options private string[] FormatXml( string xml ) { try { - XDocument doc = XDocument.Parse( xml ); + var doc = XDocument.Parse( xml ); return doc.ToString( ).Split( new string[] { string.Format( "\n" ) }, StringSplitOptions.RemoveEmptyEntries ); } catch ( Exception ) { @@ -193,7 +193,7 @@ namespace SCJMapper_V2.Devices.Options * - + @@ -213,6 +213,7 @@ namespace SCJMapper_V2.Devices.Options string instance = (string)options.Attribute( "instance" ); // mandadory string type = (string)options.Attribute( "type" ); // mandadory if ( !int.TryParse( instance, out int nInstance ) ) nInstance = 0; // get the one from the map if given (else it's a map error...) + string productS = (string)options.Attribute( "Product" ); // optional 3.5 ?? string devClass = DeviceCls.DeviceClass; // the generic one if ( !string.IsNullOrEmpty(type)) devClass = type; // get the one from the map if given (else it's a map error...) diff --git a/FormMain.cs b/FormMain.cs index 8e63b9d..06798ad 100644 --- a/FormMain.cs +++ b/FormMain.cs @@ -1022,7 +1022,7 @@ namespace SCJMapper_V2 private void meDumpLogfile_Click( object sender, EventArgs e ) { AutoTabXML_Assignment( EATabXML.Tab_XML ); - rtb.Text = string.Format( "-- {0} - SC Joystick AC Log Controller Detection --\n{1}", DateTime.Now, SCLogExtract.ExtractLog( ) ); + rtb.Text = string.Format( "-- {0} - SC Joystick AC Path and Logfile --\n\n{1}\n{2}", DateTime.Now, SCPath.Summary(), SCLogExtract.ExtractLog( ) ); } private void meDumpDefaultProfile_Click( object sender, EventArgs e ) diff --git a/LICENSE b/LICENSE index 44eac48..91c6994 100644 --- a/LICENSE +++ b/LICENSE @@ -2,7 +2,7 @@ The MIT License (MIT) For SCJMapper: -Copyright (c) 2018 Martin Burri +Copyright (c) 2019 Martin Burri Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index d97795d..1dd935b 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -10,7 +10,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration( "" )] [assembly: AssemblyCompany( "Cassini (SC handle)" )] [assembly: AssemblyProduct( "SCJMapper" )] -[assembly: AssemblyCopyright( "Copyright (c) 2018 M.Burri + see LICENSE file" )] +[assembly: AssemblyCopyright( "Copyright (c) 2019 M.Burri + see LICENSE file" )] [assembly: AssemblyTrademark( "" )] [assembly: AssemblyCulture( "" )] @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion( "2.39.0.74" )] -[assembly: AssemblyFileVersion( "2.39.0.74" )] +[assembly: AssemblyVersion( "2.41.0.76" )] +[assembly: AssemblyFileVersion( "2.41.0.76" )] diff --git a/README.md b/README.md index aeeb839..2f4f62c 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,9 @@ SCJMapper-V2
SC Joystick Mapper (.Net 4.5.2; using sharpDX/OpenTK wrapper)
this should work with Win7, Win8.x Win 10 out of the box

+On RSI Spectrum see https://robertsspaceindustries.com/spectrum/community/SC/forum/51473/thread/scjmapper-news-and-updates +
+
Built using Windows Forms - Issues with display scaling may be encountered - set display scaling to 100%.
using sharpDX 2.6.3 .net wrapper (http://sharpdx.org/)
diff --git a/ReadMe.txt b/ReadMe.txt index b800ed8..f80134b 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,12 +1,12 @@ -SC Joystick Mapper V 2.39 - Build 74 BETA -(c) Cassini, StandardToaster - 04-Aug-2018 +SC Joystick Mapper V 2.41 - Build 76 BETA +(c) Cassini, StandardToaster - 11-Jul-2019 Contains 14 files + graphics: -SCJMapper.exe The program (V2.38) -SCJMapper.exe.config Program config (V2.38) - MUST be in the same folder as the Exe file -de\SCJMapper.resources.dll German language (V2.38) - MUST be in the same folder as the Exe file -fr\SCJMapper.resources.dll French language (V2.38) - MUST be in the same folder as the Exe file +SCJMapper.exe The program (V2.41) +SCJMapper.exe.config Program config (V2.41) - MUST be in the same folder as the Exe file +de\SCJMapper.resources.dll German language (V2.41) - MUST be in the same folder as the Exe file +fr\SCJMapper.resources.dll French language (V2.41) - MUST be in the same folder as the Exe file Storage\*.scj Folder for collected assets (V2.35) - MUST be in the same folder as the Exe file PTU_Storage\*.scj Folder for collected PTU (V2.37) - MUST be in the same folder as the Exe file SharpDX.DirectInput.dll Managed DirectInput Assembly - MUST be in the same folder as the Exe file @@ -24,11 +24,11 @@ ReadMe.txt This file graphics folder Skybox Images (V2.32) - graphics folder MUST be in the same folder as the Exe file -NOTE V 2.35+: +NOTE V 2.41+: search order for defaultProfile.xml to build the action tree is: 1. directory where SCJMapper Exe is located - 2. directory of \LIVE\USER - 3. extract from \LIVE\Data.p4k (using stored asset) + 2. directory of \LIVE\USER or \PTU\USER + 3. extract from \LIVE\Data.p4k \PTU\Data.p4k (preferred - using stored asset) 4. extract from SCJMapper exe file (derived from 3.2i build 790942) --> in order to get always the most current one use 3. (and therefore remove the ones in 1. and 2.) @@ -40,10 +40,19 @@ Put all files into one folder and hit SCJMapper.exe to run it For Updates and information visit: https://github.com/SCToolsfactory/SCJMapper-V2 +Or CIG Spectrum https://robertsspaceindustries.com/spectrum/community/SC/forum/51473/thread/scjmapper-news-and-updates + Scanned for viruses before packing... cassini@burri-web.org Changelog: +V 2.41 - BETA Build 76 +- update for SC Alpha PTU 3.6.0 and launcher 1.2.0 - new PTU path (#86) +- update Log File from game includes also used Pathes - revisit those if the progam does not find them +- NOTE: Gampad may not yet work and other new stuff is not complete so you're on your own here +V 2.40 - BETA Build 75 +- update for SC Alpha PTU 3.5.0 defaultProfile now using gamepad instead of xboxpad (#83) +- NOTE: other new stuff is not complete so you're on your own here V 2.39 - BETA Build 74 - fix - processing gamefile (PTU 3.2.1i) causes exception - NOTE: other new stuff is not complete so you're on your own here diff --git a/SC/DProfileReader.cs b/SC/DProfileReader.cs index 1c1a56c..6f58438 100644 --- a/SC/DProfileReader.cs +++ b/SC/DProfileReader.cs @@ -232,6 +232,7 @@ namespace SCJMapper_V2.SC KInput( ref kAC, action, (string)action.Attribute( KeyboardCls.DeviceClass ) ); MInput( ref mAC, action, (string)action.Attribute( MouseCls.DeviceClass ) ); XInput( ref xAC, action, (string)action.Attribute( GamepadCls.DeviceClass ) ); + XInput( ref xAC, action, (string)action.Attribute( GamepadCls.DeviceClass_3_5 ) );// Handle either or Alpha 3.5+ // then nested ones - they may or may not exist from the initial scan foreach ( XElement l1action in action.Elements( ) ) { diff --git a/SC/SCLogExtract.cs b/SC/SCLogExtract.cs index a76e5d6..6ffe7fa 100644 --- a/SC/SCLogExtract.cs +++ b/SC/SCLogExtract.cs @@ -22,20 +22,31 @@ namespace SCJMapper_V2.SC if ( l.StartsWith( "host cpu" ) ) return string.Format( "\t{0}\n", inLine ); - if ( l.StartsWith( "windows:" ) ) return string.Format( "\t{0}\n", inLine ); - if ( l.StartsWith( "current display mode" ) ) return string.Format( "\t{0}\n", inLine ); - + if ( l.Contains( "gamename" ) ) return string.Format( "\t{0}\n", inLine ); + if ( l.Contains( "buildtime" ) ) return string.Format( "\t{0}\n", inLine ); + if ( l.Contains( "windows:" ) ) return string.Format( "\t{0}\n", inLine ); if ( l.Contains( "physical memory" ) ) return string.Format( "\t{0}\n", inLine ); - if ( l.StartsWith( "--- dedicated video memory" ) ) return string.Format( "\t{0}\n", inLine ); - if ( l.StartsWith( "- final rating" ) ) return string.Format( "\t{0}\n", inLine ); + if ( l.Contains( "vendor " ) ) return string.Format( "\t{0}\n", inLine ); + if ( l.Contains( "dedicated video memory" ) ) return string.Format( "\t{0}\n", inLine ); + if ( l.Contains( "feature level" ) ) return string.Format( "\t{0}\n", inLine ); + if ( l.Contains( "final rating" ) ) return string.Format( "\t{0}\n", inLine ); + + if ( l.Contains( "benchmark" ) ) return string.Format( "\t{0}\n", inLine ); + if ( l.Contains( "performance" ) ) return string.Format( "\t{0}\n", inLine ); + if ( l.Contains( "64 bit" ) ) return string.Format( "\t{0}\n", inLine ); if ( l.Contains( "keyboard" ) ) return string.Format( "\t{0}\n", inLine ); if ( l.Contains( "display mode" ) ) return string.Format( "\t{0}\n", inLine ); - if ( l.StartsWith( "- connected" ) ) return string.Format( "\t{0}\n", inLine ); - if ( l.StartsWith( "reset controls" ) ) return string.Format( "\t{0}\n", inLine ); + if ( l.Contains( "- connected" ) ) return string.Format( "\t{0}\n", inLine ); + + if ( l.Contains( "faceware" ) ) return string.Format( "\t{0}\n", inLine ); + + if ( l.Contains( "reset controls" ) ) return string.Format( "\t{0}\n", inLine ); if ( l.Contains( "enjoy" ) ) return string.Format( "\t{0}\n", inLine ); + + return retVal; } diff --git a/SC/SCPath.cs b/SC/SCPath.cs index a396d19..0653d72 100644 --- a/SC/SCPath.cs +++ b/SC/SCPath.cs @@ -19,6 +19,7 @@ namespace SCJMapper_V2.SC /// /// Try to locate the launcher from Alpha 3.0.0 public - e.g. E:\G\StarCitizen\RSI Launcher + /// Alpha 3.6.0 PTU launcher 1.2.0 has the same entry (but PTU location changed) /// static private string SCLauncherDir6 { @@ -67,15 +68,16 @@ namespace SCJMapper_V2.SC /// /// Checks if the base path is correct - i.e. the subfolders can be found + /// Changed for Patcher 1.2.0 again /// /// - /// + /// An empty string if OK - else the issue found static public string CheckSCBasePath( string basePath ) { string issue = ""; if ( string.IsNullOrEmpty( basePath ) ) { - issue = Tx.Translate("scpEmptyString" ); // string.Format( "There is no vaild path given (empty string)" ); + issue = Tx.Translate( "scpEmptyString" ); // string.Format( "There is no vaild path given (empty string)" ); return issue; // no valid one can be found } @@ -84,25 +86,33 @@ namespace SCJMapper_V2.SC return issue; // no valid one can be found } // 20180321 New PTU 3.1 another change in setup path - Testing for PTU first - if ( Directory.Exists( Path.Combine( basePath, "StarCitizenPTU" ) ) ) { - basePath = Path.Combine( basePath, "StarCitizenPTU" ); + // 20190711 Lanuncher 1.2 - PTU has moved - change detection to find this one first. + basePath = Path.Combine( basePath, "StarCitizen" ); + + string scpX = ""; + scpX = Path.Combine( basePath, "PTU" ); + if ( Directory.Exists( scpX ) ) { + return ""; // OK at least PTU folder exists - seems legit } else { - // then try the retail path (was valid so far..) - basePath = Path.Combine( basePath, "StarCitizen" ); + // may be there is only LIVE ? + scpX = Path.Combine( basePath, "LIVE" ); + if ( Directory.Exists( scpX ) ) { + return ""; // OK LIVE folder exists - seems legit + } + // for now it failed + issue = string.Format( Tx.Translate( "scpClientDirNotFound" ).Replace( "\\n", "\n" ), scpX ); + //"Cannot find the SC Client Directory !!\n\nTried to look for:\n{0} \n\nPlease adjust the path in Settings\n" } - string scpX = ""; - // SC 3.0 try LIVE - scpX = Path.Combine( basePath, "LIVE" ); - - if ( !Directory.Exists( scpX ) ) { - issue = string.Format( Tx.Translate( "scpClientDirNotFound" ).Replace("\\n","\n") , scpX ); - //"Cannot find the SC Client Directory !!\n\nTried to look for:\n{0} \n\nPlease adjust the path in Settings\n" - return issue; + // last resort is old style PTU only + // This would be pre 1.2 laucher and PTU only + basePath += "PTU"; // makes it "StarCitizenPTU" + if ( Directory.Exists( basePath ) ) { + return ""; // OK at least old PTU folder exists - seems legit } - return issue; + return issue; // OK exit } /// @@ -167,11 +177,11 @@ namespace SCJMapper_V2.SC // nothing found log.Warn( "SCBasePath - cannot find any valid SC path" ); // Issue a warning here to let the user know - string issue = Tx.Translate( "scpAutoPathFailed" ).Replace( "\\n", "\n" ); + string issue = Tx.Translate( "scpAutoPathFailed" ).Replace( "\\n", "\n" ); //string.Format( "Cannot find the SC Installation Path !!\nUse Settings to provide the path manually" ); if ( !m_hasInformed ) - System.Windows.Forms.MessageBox.Show( issue, Tx.Translate( "setMsgBox"), + System.Windows.Forms.MessageBox.Show( issue, Tx.Translate( "setMsgBox" ), System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation ); m_hasInformed = true; } @@ -212,28 +222,29 @@ namespace SCJMapper_V2.SC string issue = ""; if ( string.IsNullOrEmpty( scp ) ) return ""; // no valid one can be found - + // 20180321 New PTU 3.1 another change in setup path - Testing for PTU first - if (AppSettings.Instance.UsePTU && Directory.Exists( Path.Combine( scp, "StarCitizenPTU" ) ) ) { - scp = Path.Combine( scp, "StarCitizenPTU" ); + // 20190711 Lanuncher 1.2 - PTU has moved - change detection to find this one first. + if ( AppSettings.Instance.UsePTU ) { + if ( Directory.Exists( Path.Combine( scp, @"StarCitizen\PTU" )) ) { + scp = Path.Combine( scp, @"StarCitizen\PTU" ); + } + else if ( Directory.Exists( Path.Combine( scp, @"StarCitizenPTU\LIVE" ) ) ) { + // this would be old style + scp = Path.Combine( scp, @"StarCitizenPTU\LIVE" ); + } } else { - // then try the retail path (was valid so far..) - scp = Path.Combine( scp, "StarCitizen" ); + // no PTU .. + scp = Path.Combine( scp, @"StarCitizen\LIVE" ); } + if ( Directory.Exists( scp ) ) return scp; // EXIT Success - string scpX = ""; - // SC 3.0 try LIVE - scpX = Path.Combine( scp, "LIVE" ); - if ( Directory.Exists( scpX ) ) return scpX; - + log.WarnFormat( "SCClientPath - StarCitizen\\LIVE or PTU subfolder does not exist: {0}", scp ); // Issue a warning here to let the user know - issue = string.Format( Tx.Translate( "scpClientDirNotFound" ).Replace( "\\n", "\n" ), scpX ); + issue = string.Format( Tx.Translate( "scpClientDirNotFound" ).Replace( "\\n", "\n" ), scp ); //"Cannot find the SC Client Directory !!\n\nTried to look for:\n{0} \n\nPlease adjust the path in Settings\n" - - log.WarnFormat( "SCClientPath - StarCitizen\\Live subfolder does not exist: {0}", scp ); - // Issue a warning here to let the user know if ( !m_hasInformed ) System.Windows.Forms.MessageBox.Show( issue, Tx.Translate( "setMsgBox" ), System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Exclamation ); m_hasInformed = true; @@ -425,6 +436,25 @@ namespace SCJMapper_V2.SC } } + /// + /// Returns a summary of the detected pathes + /// + /// A formatted string + static public string Summary() + { + string ret = $"SC Path:\n"; + + ret += $" InstallPath:\t{SCInstallPath}\n"; + ret += $" BasePath:\t\t{SCBasePath}\n"; + ret += $" Client:\t\t{SCClientPath}\n"; + ret += $" ClientData:\t\t{SCClientDataPath}\n"; + ret += $" ClientUSER:\t\t{SCClientUSERPath}\n"; + ret += $" ClientMapping:\t{SCClientMappingPath}\n"; + + return ret; + } + + } } diff --git a/SCJMapper-V2.csproj b/SCJMapper-V2.csproj index d83b6da..9e82c31 100644 --- a/SCJMapper-V2.csproj +++ b/SCJMapper-V2.csproj @@ -27,8 +27,8 @@ false false true - 74 - 2.39.0.%2a + 76 + 2.41.0.%2a false true diff --git a/Table/FormTable.cs b/Table/FormTable.cs index 6eb4bad..d2575c7 100644 --- a/Table/FormTable.cs +++ b/Table/FormTable.cs @@ -190,7 +190,7 @@ namespace SCJMapper_V2.Table else { deviceFilter = "( Device='X'" + ( ( cbxShowJoystick.Checked ) ? string.Format( " OR Device = 'joystick'" ) : "" ) - + ( ( cbxShowGamepad.Checked ) ? string.Format( " OR Device = 'xboxpad'" ) : "" ) + + ( ( cbxShowGamepad.Checked ) ? string.Format( " OR Device = 'xboxpad' OR Device = 'gamepad'" ) : "" ) // Alpha 3.5+ + ( ( cbxShowMouse.Checked ) ? string.Format( " OR Device = 'mouse'" ) : "" ) + ( ( cbxShowKeyboard.Checked ) ? string.Format( " OR Device = 'keyboard'" ) : "" ) + " )"; diff --git a/defaultProfile.xml b/defaultProfile.xml index 97494de..467be5d 100644 --- a/defaultProfile.xml +++ b/defaultProfile.xml @@ -1,8 +1,8 @@ - - - + + + @@ -11,23 +11,29 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + @@ -47,11 +53,7 @@ - - - - - + @@ -116,7 +118,7 @@ - + @@ -183,6 +185,9 @@ + + + @@ -206,17 +211,9 @@ - - - - - - - - - - - + + + @@ -288,15 +285,9 @@ - - - - - - - - - + + + @@ -348,332 +339,356 @@ - - - - - - + - - - - + + + + + - - - - - - - - - - + + + + + + + + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - + + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - + + + + + + - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + - - + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -681,207 +696,196 @@ - - - - - - + + + + + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - + + + + + + + + + - - + + - - + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + - - - - - - + + + + + + + + + - - + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + @@ -896,76 +900,59 @@ - - - - + + + - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + + + + @@ -973,64 +960,47 @@ - - - - - - - + + + - + - - - - - - - + + - + - - - - - - + + - + - - - - - - + + - + - - - - + + + + @@ -1042,7 +1012,7 @@ - + @@ -1050,57 +1020,55 @@ - - - - - - - - - - - - + + + + + + - + - + - + - + - + - + - + - + - - - + + + + + + + @@ -1108,29 +1076,35 @@ - - - - + + + - + + - - - - + + + + + + - + - - - - + + + + + + + + @@ -1151,148 +1125,134 @@ - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + - + - + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/graphics/MyButton1.psd b/graphics/MyButton1.psd deleted file mode 100644 index 48914e8..0000000 Binary files a/graphics/MyButton1.psd and /dev/null differ