diff --git a/FormMain.Designer.cs b/FormMain.Designer.cs
index 7e00a5d..67fdd9c 100644
--- a/FormMain.Designer.cs
+++ b/FormMain.Designer.cs
@@ -35,7 +35,6 @@
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
- this.btDumpList = new System.Windows.Forms.Button();
this.rtb = new System.Windows.Forms.RichTextBox();
this.cmCopyPaste = new System.Windows.Forms.ContextMenuStrip(this.components);
this.tsiCopy = new System.Windows.Forms.ToolStripMenuItem();
@@ -70,7 +69,6 @@
this.btClear = new System.Windows.Forms.Button();
this.lblAction = new System.Windows.Forms.Label();
this.btAssign = new System.Windows.Forms.Button();
- this.btMakeMod = new System.Windows.Forms.Button();
this.treeView1 = new System.Windows.Forms.TreeView();
this.cmAddDel = new System.Windows.Forms.ContextMenuStrip(this.components);
this.tdiCollapseAll = new System.Windows.Forms.ToolStripMenuItem();
@@ -105,23 +103,13 @@
this.SFD = new System.Windows.Forms.SaveFileDialog();
this.tlpanel = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.btOptions = new System.Windows.Forms.Button();
- this.btDumpLog = new System.Windows.Forms.Button();
- this.btJSTuning = new System.Windows.Forms.Button();
- this.btDumpProfile = new System.Windows.Forms.Button();
- this.btTable = new System.Windows.Forms.Button();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
- this.btSettings = new System.Windows.Forms.Button();
- this.btJsReassign = new System.Windows.Forms.Button();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.btSaveMyMapping = new System.Windows.Forms.Button();
this.txMappingName = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
- this.lblPTU = new System.Windows.Forms.Label();
this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
- this.lblProfileUsed = new System.Windows.Forms.Label();
- this.label3 = new System.Windows.Forms.Label();
this.btClearFilter = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.cbxShowMappedOnly = new System.Windows.Forms.CheckBox();
@@ -135,21 +123,40 @@
this.tPageOther = new System.Windows.Forms.TabPage();
this.tableLayoutPanel6 = new System.Windows.Forms.TableLayoutPanel();
this.cbxAutoTabXML = new System.Windows.Forms.CheckBox();
+ this.lbxOther = new System.Windows.Forms.RichTextBox();
this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel();
- this.tsBtReset = new System.Windows.Forms.ToolStripDropDownButton();
- this.resetDefaultsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.resetEmptyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel();
- this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
- this.tsDDbtMappings = new System.Windows.Forms.ToolStripDropDownButton();
- this.tsBtLoad = new System.Windows.Forms.ToolStripDropDownButton();
- this.defaultsLoadAndGrabToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.resetLoadAndGrabToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.loadAndGrabToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.loadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
- this.lbxOther = new System.Windows.Forms.RichTextBox();
+ this.tslblProfileUsed = new System.Windows.Forms.ToolStripStatusLabel();
+ this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+ this.msBtLoad = new System.Windows.Forms.ToolStripDropDownButton();
+ this.meResetDefaults = new System.Windows.Forms.ToolStripMenuItem();
+ this.meResetEmpty = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.msBtDump = new System.Windows.Forms.ToolStripDropDownButton();
+ this.meDumpMappingList = new System.Windows.Forms.ToolStripMenuItem();
+ this.meDumpLogfile = new System.Windows.Forms.ToolStripMenuItem();
+ this.meDumpDefaultProfile = new System.Windows.Forms.ToolStripMenuItem();
+ this.meDumpActiontreeAsXML = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
+ this.msShow = new System.Windows.Forms.ToolStripDropDownButton();
+ this.meShowToggleTable = new System.Windows.Forms.ToolStripMenuItem();
+ this.meShowOptionsDialog = new System.Windows.Forms.ToolStripMenuItem();
+ this.meShowDeviceTuningDialog = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
+ this.msConfig = new System.Windows.Forms.ToolStripDropDownButton();
+ this.meSettingsDialog = new System.Windows.Forms.ToolStripMenuItem();
+ this.meJsReassignDialog = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
+ this.meLoadMap = new System.Windows.Forms.ToolStripDropDownButton();
+ this.meDefaultsLoadAndGrab = new System.Windows.Forms.ToolStripMenuItem();
+ this.meResetLoadAndGrab = new System.Windows.Forms.ToolStripMenuItem();
+ this.meLoadAndGrab = new System.Windows.Forms.ToolStripMenuItem();
+ this.meLoad = new System.Windows.Forms.ToolStripMenuItem();
+ this.msSelectMapping = new System.Windows.Forms.ToolStripDropDownButton();
+ this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
+ this.IL2 = new System.Windows.Forms.ImageList(this.components);
this.cmCopyPaste.SuspendLayout();
this.panel2.SuspendLayout();
this.cmMouseEntry.SuspendLayout();
@@ -168,18 +175,9 @@
this.tPageOther.SuspendLayout();
this.tableLayoutPanel6.SuspendLayout();
this.statusStrip1.SuspendLayout();
+ this.toolStrip1.SuspendLayout();
this.SuspendLayout();
//
- // btDumpList
- //
- this.btDumpList.Location = new System.Drawing.Point(3, 33);
- this.btDumpList.Name = "btDumpList";
- this.btDumpList.Size = new System.Drawing.Size(120, 24);
- this.btDumpList.TabIndex = 24;
- this.btDumpList.Text = "Dump List-->";
- this.btDumpList.UseVisualStyleBackColor = true;
- this.btDumpList.Click += new System.EventHandler(this.btDumpList_Click);
- //
// rtb
//
this.rtb.AcceptsTab = true;
@@ -189,7 +187,7 @@
this.rtb.Font = new System.Drawing.Font("Lucida Console", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.rtb.Location = new System.Drawing.Point(3, 3);
this.rtb.Name = "rtb";
- this.rtb.Size = new System.Drawing.Size(348, 654);
+ this.rtb.Size = new System.Drawing.Size(348, 608);
this.rtb.TabIndex = 21;
this.rtb.Text = "";
this.rtb.WordWrap = false;
@@ -257,21 +255,27 @@
// btGrab
//
this.btGrab.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.btGrab.Image = global::SCJMapper_V2.Properties.Resources.LArrow;
+ this.btGrab.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btGrab.Location = new System.Drawing.Point(181, 3);
this.btGrab.Name = "btGrab";
- this.btGrab.Size = new System.Drawing.Size(120, 24);
+ this.btGrab.Size = new System.Drawing.Size(120, 50);
this.btGrab.TabIndex = 19;
- this.btGrab.Text = "<-- Grab XML";
+ this.btGrab.Text = "Grab XML";
+ this.btGrab.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.btGrab.UseVisualStyleBackColor = true;
this.btGrab.Click += new System.EventHandler(this.btGrab_Click);
//
// btDump
//
+ this.btDump.Image = global::SCJMapper_V2.Properties.Resources.RArrow;
+ this.btDump.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.btDump.Location = new System.Drawing.Point(3, 3);
this.btDump.Name = "btDump";
- this.btDump.Size = new System.Drawing.Size(120, 24);
+ this.btDump.Size = new System.Drawing.Size(120, 50);
this.btDump.TabIndex = 20;
- this.btDump.Text = "Dump XML-->";
+ this.btDump.Text = "Dump XML";
+ this.btDump.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btDump.UseVisualStyleBackColor = true;
this.btDump.Click += new System.EventHandler(this.btDump_Click);
//
@@ -292,9 +296,9 @@
this.panel2.Controls.Add(this.lblAction);
this.panel2.Controls.Add(this.btAssign);
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
- this.panel2.Location = new System.Drawing.Point(3, 379);
+ this.panel2.Location = new System.Drawing.Point(3, 376);
this.panel2.Name = "panel2";
- this.panel2.Size = new System.Drawing.Size(298, 167);
+ this.panel2.Size = new System.Drawing.Size(298, 164);
this.panel2.TabIndex = 17;
//
// label5
@@ -504,17 +508,6 @@
this.btAssign.UseVisualStyleBackColor = true;
this.btAssign.Click += new System.EventHandler(this.btAssign_Click);
//
- // btMakeMod
- //
- this.btMakeMod.Location = new System.Drawing.Point(155, 3);
- this.btMakeMod.Name = "btMakeMod";
- this.btMakeMod.Size = new System.Drawing.Size(73, 25);
- this.btMakeMod.TabIndex = 17;
- this.btMakeMod.Text = "Make MOD";
- this.btMakeMod.UseVisualStyleBackColor = true;
- this.btMakeMod.Visible = false;
- this.btMakeMod.Click += new System.EventHandler(this.btMakeMod_Click);
- //
// treeView1
//
this.treeView1.ContextMenuStrip = this.cmAddDel;
@@ -523,11 +516,11 @@
this.treeView1.HotTracking = true;
this.treeView1.ImageKey = "Map";
this.treeView1.ImageList = this.IL;
- this.treeView1.Location = new System.Drawing.Point(6, 81);
+ this.treeView1.Location = new System.Drawing.Point(6, 126);
this.treeView1.Name = "treeView1";
this.tlpanel.SetRowSpan(this.treeView1, 2);
this.treeView1.SelectedImageKey = "Selected";
- this.treeView1.Size = new System.Drawing.Size(364, 686);
+ this.treeView1.Size = new System.Drawing.Size(364, 640);
this.treeView1.TabIndex = 16;
this.treeView1.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);
//
@@ -687,7 +680,7 @@
this.tc1.Name = "tc1";
this.tc1.SelectedIndex = 0;
this.tc1.ShowToolTips = true;
- this.tc1.Size = new System.Drawing.Size(298, 370);
+ this.tc1.Size = new System.Drawing.Size(298, 367);
this.tc1.TabIndex = 15;
this.tc1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.tc1_DrawItem);
this.tc1.Selected += new System.Windows.Forms.TabControlEventHandler(this.tc1_Selected);
@@ -698,7 +691,7 @@
this.tabJS1.Location = new System.Drawing.Point(4, 24);
this.tabJS1.Name = "tabJS1";
this.tabJS1.Padding = new System.Windows.Forms.Padding(3);
- this.tabJS1.Size = new System.Drawing.Size(290, 342);
+ this.tabJS1.Size = new System.Drawing.Size(290, 339);
this.tabJS1.TabIndex = 0;
this.tabJS1.Text = "Joystick 1";
//
@@ -708,7 +701,7 @@
this.UC_JoyPanel.JsAssignment = 0;
this.UC_JoyPanel.Location = new System.Drawing.Point(3, 3);
this.UC_JoyPanel.Name = "UC_JoyPanel";
- this.UC_JoyPanel.Size = new System.Drawing.Size(284, 336);
+ this.UC_JoyPanel.Size = new System.Drawing.Size(284, 333);
this.UC_JoyPanel.TabIndex = 0;
//
// panel1
@@ -721,7 +714,7 @@
this.panel1.Controls.Add(this.lblTitle);
this.panel1.Controls.Add(this.label4);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
- this.panel1.Location = new System.Drawing.Point(6, 6);
+ this.panel1.Location = new System.Drawing.Point(6, 51);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1042, 66);
this.panel1.TabIndex = 14;
@@ -818,26 +811,27 @@
this.tlpanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 370F));
this.tlpanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 310F));
this.tlpanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tlpanel.Controls.Add(this.panel1, 0, 0);
- this.tlpanel.Controls.Add(this.treeView1, 0, 1);
- this.tlpanel.Controls.Add(this.tableLayoutPanel1, 1, 2);
- this.tlpanel.Controls.Add(this.tableLayoutPanel2, 1, 3);
- this.tlpanel.Controls.Add(this.tableLayoutPanel3, 2, 3);
- this.tlpanel.Controls.Add(this.tableLayoutPanel4, 1, 1);
- this.tlpanel.Controls.Add(this.tableLayoutPanel5, 0, 3);
- this.tlpanel.Controls.Add(this.tcXML, 2, 1);
+ this.tlpanel.Controls.Add(this.panel1, 0, 1);
+ this.tlpanel.Controls.Add(this.treeView1, 0, 2);
+ this.tlpanel.Controls.Add(this.tableLayoutPanel1, 1, 3);
+ this.tlpanel.Controls.Add(this.tableLayoutPanel2, 1, 4);
+ this.tlpanel.Controls.Add(this.tableLayoutPanel3, 2, 4);
+ this.tlpanel.Controls.Add(this.tableLayoutPanel4, 1, 2);
+ this.tlpanel.Controls.Add(this.tableLayoutPanel5, 0, 4);
+ this.tlpanel.Controls.Add(this.tcXML, 2, 2);
this.tlpanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.tlpanel.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.FixedSize;
this.tlpanel.Location = new System.Drawing.Point(0, 0);
this.tlpanel.Name = "tlpanel";
this.tlpanel.Padding = new System.Windows.Forms.Padding(3);
- this.tlpanel.RowCount = 5;
+ this.tlpanel.RowCount = 6;
+ this.tlpanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
this.tlpanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 75F));
this.tlpanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tlpanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 125F));
+ this.tlpanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 80F));
this.tlpanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 84F));
this.tlpanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
- this.tlpanel.Size = new System.Drawing.Size(1054, 892);
+ this.tlpanel.Size = new System.Drawing.Size(1054, 891);
this.tlpanel.TabIndex = 25;
//
// tableLayoutPanel1
@@ -845,90 +839,27 @@
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel1.Controls.Add(this.btOptions, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.btGrab, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.btDump, 0, 0);
- this.tableLayoutPanel1.Controls.Add(this.btDumpList, 0, 1);
- this.tableLayoutPanel1.Controls.Add(this.btDumpLog, 0, 2);
- this.tableLayoutPanel1.Controls.Add(this.btJSTuning, 1, 3);
- this.tableLayoutPanel1.Controls.Add(this.btDumpProfile, 0, 3);
- this.tableLayoutPanel1.Controls.Add(this.btTable, 1, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.FixedSize;
- this.tableLayoutPanel1.Location = new System.Drawing.Point(376, 648);
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(376, 692);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- this.tableLayoutPanel1.RowCount = 4;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(304, 119);
+ this.tableLayoutPanel1.RowCount = 1;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 74F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(304, 74);
this.tableLayoutPanel1.TabIndex = 23;
//
- // btOptions
- //
- this.btOptions.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.btOptions.Location = new System.Drawing.Point(181, 63);
- this.btOptions.Name = "btOptions";
- this.btOptions.Size = new System.Drawing.Size(120, 23);
- this.btOptions.TabIndex = 28;
- this.btOptions.Text = "Options...";
- this.btOptions.Click += new System.EventHandler(this.btOptions_Click);
- //
- // btDumpLog
- //
- this.btDumpLog.Location = new System.Drawing.Point(3, 63);
- this.btDumpLog.Name = "btDumpLog";
- this.btDumpLog.Size = new System.Drawing.Size(120, 24);
- this.btDumpLog.TabIndex = 25;
- this.btDumpLog.Text = "Dump Log-->";
- this.btDumpLog.UseVisualStyleBackColor = true;
- this.btDumpLog.Click += new System.EventHandler(this.btDumpLog_Click);
- //
- // btJSTuning
- //
- this.btJSTuning.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.btJSTuning.Location = new System.Drawing.Point(181, 93);
- this.btJSTuning.Name = "btJSTuning";
- this.btJSTuning.Size = new System.Drawing.Size(120, 23);
- this.btJSTuning.TabIndex = 17;
- this.btJSTuning.Text = "Device Tuning...";
- this.btJSTuning.Click += new System.EventHandler(this.btJSTuning_Click);
- //
- // btDumpProfile
- //
- this.btDumpProfile.Location = new System.Drawing.Point(3, 93);
- this.btDumpProfile.Name = "btDumpProfile";
- this.btDumpProfile.Size = new System.Drawing.Size(120, 23);
- this.btDumpProfile.TabIndex = 26;
- this.btDumpProfile.Text = "Dump Profile -->";
- this.btDumpProfile.UseVisualStyleBackColor = true;
- this.btDumpProfile.Click += new System.EventHandler(this.btDumpProfile_Click);
- //
- // btTable
- //
- this.btTable.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.btTable.Location = new System.Drawing.Point(181, 33);
- this.btTable.Name = "btTable";
- this.btTable.Size = new System.Drawing.Size(120, 24);
- this.btTable.TabIndex = 27;
- this.btTable.Text = "Toggle Table...";
- this.btTable.UseVisualStyleBackColor = true;
- this.btTable.Click += new System.EventHandler(this.btTable_Click);
- //
// tableLayoutPanel2
//
this.tableLayoutPanel2.ColumnCount = 2;
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel2.Controls.Add(this.btMakeMod, 1, 0);
this.tableLayoutPanel2.Controls.Add(this.buttonExit, 1, 1);
- this.tableLayoutPanel2.Controls.Add(this.btSettings, 0, 1);
- this.tableLayoutPanel2.Controls.Add(this.btJsReassign, 0, 0);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel2.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.FixedSize;
- this.tableLayoutPanel2.Location = new System.Drawing.Point(376, 773);
+ this.tableLayoutPanel2.Location = new System.Drawing.Point(376, 772);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 2;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
@@ -937,27 +868,6 @@
this.tableLayoutPanel2.Size = new System.Drawing.Size(304, 78);
this.tableLayoutPanel2.TabIndex = 24;
//
- // btSettings
- //
- this.btSettings.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
- this.btSettings.Location = new System.Drawing.Point(3, 51);
- this.btSettings.Name = "btSettings";
- this.btSettings.Size = new System.Drawing.Size(120, 24);
- this.btSettings.TabIndex = 14;
- this.btSettings.Text = "Settings...";
- this.btSettings.Click += new System.EventHandler(this.btSettings_Click);
- //
- // btJsReassign
- //
- this.btJsReassign.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
- this.btJsReassign.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
- this.btJsReassign.Location = new System.Drawing.Point(3, 21);
- this.btJsReassign.Name = "btJsReassign";
- this.btJsReassign.Size = new System.Drawing.Size(120, 24);
- this.btJsReassign.TabIndex = 16;
- this.btJsReassign.Text = "Js Reassign...";
- this.btJsReassign.Click += new System.EventHandler(this.btJsReassign_Click);
- //
// tableLayoutPanel3
//
this.tableLayoutPanel3.ColumnCount = 2;
@@ -966,10 +876,9 @@
this.tableLayoutPanel3.Controls.Add(this.btSaveMyMapping, 1, 1);
this.tableLayoutPanel3.Controls.Add(this.txMappingName, 1, 0);
this.tableLayoutPanel3.Controls.Add(this.label1, 0, 0);
- this.tableLayoutPanel3.Controls.Add(this.lblPTU, 0, 1);
this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel3.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.FixedSize;
- this.tableLayoutPanel3.Location = new System.Drawing.Point(686, 773);
+ this.tableLayoutPanel3.Location = new System.Drawing.Point(686, 772);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
this.tableLayoutPanel3.RowCount = 2;
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
@@ -981,9 +890,9 @@
//
this.btSaveMyMapping.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btSaveMyMapping.Image = ((System.Drawing.Image)(resources.GetObject("btSaveMyMapping.Image")));
- this.btSaveMyMapping.Location = new System.Drawing.Point(154, 51);
+ this.btSaveMyMapping.Location = new System.Drawing.Point(125, 51);
this.btSaveMyMapping.Name = "btSaveMyMapping";
- this.btSaveMyMapping.Size = new System.Drawing.Size(205, 24);
+ this.btSaveMyMapping.Size = new System.Drawing.Size(234, 24);
this.btSaveMyMapping.TabIndex = 15;
this.btSaveMyMapping.Text = "Dump and Save my Mapping";
this.btSaveMyMapping.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -1011,19 +920,6 @@
this.label1.TabIndex = 16;
this.label1.Text = "Mapping name:";
//
- // lblPTU
- //
- this.lblPTU.BackColor = System.Drawing.Color.SandyBrown;
- this.lblPTU.Dock = System.Windows.Forms.DockStyle.Fill;
- this.lblPTU.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblPTU.Location = new System.Drawing.Point(3, 48);
- this.lblPTU.Name = "lblPTU";
- this.lblPTU.Size = new System.Drawing.Size(116, 30);
- this.lblPTU.TabIndex = 17;
- this.lblPTU.Text = "Using PTU folders";
- this.lblPTU.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
- this.lblPTU.Visible = false;
- //
// tableLayoutPanel4
//
this.tableLayoutPanel4.ColumnCount = 1;
@@ -1031,12 +927,12 @@
this.tableLayoutPanel4.Controls.Add(this.panel2, 0, 1);
this.tableLayoutPanel4.Controls.Add(this.tc1, 0, 0);
this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Top;
- this.tableLayoutPanel4.Location = new System.Drawing.Point(376, 81);
+ this.tableLayoutPanel4.Location = new System.Drawing.Point(376, 126);
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
this.tableLayoutPanel4.RowCount = 2;
- this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel4.Size = new System.Drawing.Size(304, 549);
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 170F));
+ this.tableLayoutPanel4.Size = new System.Drawing.Size(304, 543);
this.tableLayoutPanel4.TabIndex = 28;
//
// tableLayoutPanel5
@@ -1047,8 +943,6 @@
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F));
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F));
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F));
- this.tableLayoutPanel5.Controls.Add(this.lblProfileUsed, 1, 2);
- this.tableLayoutPanel5.Controls.Add(this.label3, 0, 2);
this.tableLayoutPanel5.Controls.Add(this.btClearFilter, 4, 1);
this.tableLayoutPanel5.Controls.Add(this.label2, 0, 1);
this.tableLayoutPanel5.Controls.Add(this.cbxShowMappedOnly, 4, 0);
@@ -1058,43 +952,18 @@
this.tableLayoutPanel5.Controls.Add(this.cbxShowGamepad, 1, 0);
this.tableLayoutPanel5.Controls.Add(this.txFilter, 2, 1);
this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel5.Location = new System.Drawing.Point(6, 773);
+ this.tableLayoutPanel5.Location = new System.Drawing.Point(6, 772);
this.tableLayoutPanel5.Name = "tableLayoutPanel5";
- this.tableLayoutPanel5.RowCount = 3;
- this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel5.RowCount = 2;
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 58.33333F));
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 41.66667F));
this.tableLayoutPanel5.Size = new System.Drawing.Size(364, 78);
this.tableLayoutPanel5.TabIndex = 29;
//
- // lblProfileUsed
- //
- this.tableLayoutPanel5.SetColumnSpan(this.lblProfileUsed, 4);
- this.lblProfileUsed.Dock = System.Windows.Forms.DockStyle.Top;
- this.lblProfileUsed.Font = new System.Drawing.Font("Segoe UI", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.lblProfileUsed.Location = new System.Drawing.Point(75, 61);
- this.lblProfileUsed.Margin = new System.Windows.Forms.Padding(3);
- this.lblProfileUsed.Name = "lblProfileUsed";
- this.lblProfileUsed.Size = new System.Drawing.Size(286, 14);
- this.lblProfileUsed.TabIndex = 29;
- this.lblProfileUsed.Text = "...";
- this.lblProfileUsed.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // label3
- //
- this.label3.Font = new System.Drawing.Font("Segoe UI", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.label3.Location = new System.Drawing.Point(3, 61);
- this.label3.Margin = new System.Windows.Forms.Padding(3);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(39, 14);
- this.label3.TabIndex = 30;
- this.label3.Text = "Profile:";
- this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
// btClearFilter
//
- this.btClearFilter.Dock = System.Windows.Forms.DockStyle.Fill;
- this.btClearFilter.Location = new System.Drawing.Point(291, 32);
+ this.btClearFilter.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.btClearFilter.Location = new System.Drawing.Point(291, 50);
this.btClearFilter.Name = "btClearFilter";
this.btClearFilter.Size = new System.Drawing.Size(70, 23);
this.btClearFilter.TabIndex = 26;
@@ -1104,8 +973,9 @@
//
// label2
//
+ this.label2.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.tableLayoutPanel5.SetColumnSpan(this.label2, 2);
- this.label2.Location = new System.Drawing.Point(3, 32);
+ this.label2.Location = new System.Drawing.Point(3, 50);
this.label2.Margin = new System.Windows.Forms.Padding(3);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(83, 23);
@@ -1115,8 +985,9 @@
//
// cbxShowMappedOnly
//
+ this.cbxShowMappedOnly.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.cbxShowMappedOnly.AutoSize = true;
- this.cbxShowMappedOnly.Location = new System.Drawing.Point(291, 3);
+ this.cbxShowMappedOnly.Location = new System.Drawing.Point(291, 14);
this.cbxShowMappedOnly.Name = "cbxShowMappedOnly";
this.cbxShowMappedOnly.Size = new System.Drawing.Size(69, 17);
this.cbxShowMappedOnly.TabIndex = 1;
@@ -1126,8 +997,9 @@
//
// cbxShowMouse
//
+ this.cbxShowMouse.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.cbxShowMouse.AutoSize = true;
- this.cbxShowMouse.Location = new System.Drawing.Point(219, 3);
+ this.cbxShowMouse.Location = new System.Drawing.Point(219, 14);
this.cbxShowMouse.Name = "cbxShowMouse";
this.cbxShowMouse.Size = new System.Drawing.Size(61, 17);
this.cbxShowMouse.TabIndex = 28;
@@ -1137,10 +1009,11 @@
//
// cbxShowKeyboard
//
+ this.cbxShowKeyboard.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.cbxShowKeyboard.AutoSize = true;
this.cbxShowKeyboard.Checked = true;
this.cbxShowKeyboard.CheckState = System.Windows.Forms.CheckState.Checked;
- this.cbxShowKeyboard.Location = new System.Drawing.Point(147, 3);
+ this.cbxShowKeyboard.Location = new System.Drawing.Point(147, 14);
this.cbxShowKeyboard.Name = "cbxShowKeyboard";
this.cbxShowKeyboard.Size = new System.Drawing.Size(53, 17);
this.cbxShowKeyboard.TabIndex = 1;
@@ -1150,10 +1023,11 @@
//
// cbxShowJoystick
//
+ this.cbxShowJoystick.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.cbxShowJoystick.AutoSize = true;
this.cbxShowJoystick.Checked = true;
this.cbxShowJoystick.CheckState = System.Windows.Forms.CheckState.Checked;
- this.cbxShowJoystick.Location = new System.Drawing.Point(3, 3);
+ this.cbxShowJoystick.Location = new System.Drawing.Point(3, 14);
this.cbxShowJoystick.Name = "cbxShowJoystick";
this.cbxShowJoystick.Size = new System.Drawing.Size(65, 17);
this.cbxShowJoystick.TabIndex = 0;
@@ -1163,10 +1037,11 @@
//
// cbxShowGamepad
//
+ this.cbxShowGamepad.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.cbxShowGamepad.AutoSize = true;
this.cbxShowGamepad.Checked = true;
this.cbxShowGamepad.CheckState = System.Windows.Forms.CheckState.Checked;
- this.cbxShowGamepad.Location = new System.Drawing.Point(75, 3);
+ this.cbxShowGamepad.Location = new System.Drawing.Point(75, 14);
this.cbxShowGamepad.Name = "cbxShowGamepad";
this.cbxShowGamepad.Size = new System.Drawing.Size(66, 17);
this.cbxShowGamepad.TabIndex = 1;
@@ -1176,9 +1051,9 @@
//
// txFilter
//
+ this.txFilter.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.tableLayoutPanel5.SetColumnSpan(this.txFilter, 2);
- this.txFilter.Dock = System.Windows.Forms.DockStyle.Top;
- this.txFilter.Location = new System.Drawing.Point(147, 32);
+ this.txFilter.Location = new System.Drawing.Point(147, 50);
this.txFilter.Name = "txFilter";
this.txFilter.Size = new System.Drawing.Size(138, 22);
this.txFilter.TabIndex = 25;
@@ -1191,11 +1066,11 @@
this.tcXML.Controls.Add(this.tPageOther);
this.tcXML.Dock = System.Windows.Forms.DockStyle.Fill;
this.tcXML.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.tcXML.Location = new System.Drawing.Point(686, 81);
+ this.tcXML.Location = new System.Drawing.Point(686, 126);
this.tcXML.Name = "tcXML";
this.tlpanel.SetRowSpan(this.tcXML, 2);
this.tcXML.SelectedIndex = 0;
- this.tcXML.Size = new System.Drawing.Size(362, 686);
+ this.tcXML.Size = new System.Drawing.Size(362, 640);
this.tcXML.TabIndex = 30;
//
// tPageDump
@@ -1204,21 +1079,21 @@
this.tPageDump.Location = new System.Drawing.Point(4, 22);
this.tPageDump.Name = "tPageDump";
this.tPageDump.Padding = new System.Windows.Forms.Padding(3);
- this.tPageDump.Size = new System.Drawing.Size(354, 660);
+ this.tPageDump.Size = new System.Drawing.Size(354, 614);
this.tPageDump.TabIndex = 1;
this.tPageDump.Text = "Dumps (XML, Logs etc.)";
this.tPageDump.UseVisualStyleBackColor = true;
//
// tPageOther
//
+ this.tPageOther.BackColor = System.Drawing.Color.Gainsboro;
this.tPageOther.Controls.Add(this.tableLayoutPanel6);
this.tPageOther.Location = new System.Drawing.Point(4, 22);
this.tPageOther.Name = "tPageOther";
this.tPageOther.Padding = new System.Windows.Forms.Padding(3);
- this.tPageOther.Size = new System.Drawing.Size(354, 660);
+ this.tPageOther.Size = new System.Drawing.Size(354, 614);
this.tPageOther.TabIndex = 0;
this.tPageOther.Text = "All Mappings";
- this.tPageOther.UseVisualStyleBackColor = true;
//
// tableLayoutPanel6
//
@@ -1232,7 +1107,7 @@
this.tableLayoutPanel6.RowCount = 2;
this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel6.Size = new System.Drawing.Size(348, 654);
+ this.tableLayoutPanel6.Size = new System.Drawing.Size(348, 608);
this.tableLayoutPanel6.TabIndex = 0;
//
// cbxAutoTabXML
@@ -1246,164 +1121,316 @@
this.cbxAutoTabXML.UseVisualStyleBackColor = true;
this.cbxAutoTabXML.CheckedChanged += new System.EventHandler(this.cbxAutoTabXML_CheckedChanged);
//
+ // lbxOther
+ //
+ this.lbxOther.BackColor = System.Drawing.Color.WhiteSmoke;
+ this.lbxOther.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.lbxOther.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.lbxOther.Location = new System.Drawing.Point(3, 33);
+ this.lbxOther.Name = "lbxOther";
+ this.lbxOther.Size = new System.Drawing.Size(342, 618);
+ this.lbxOther.TabIndex = 3;
+ this.lbxOther.Text = "";
+ this.lbxOther.WordWrap = false;
+ //
// toolStripStatusLabel2
//
this.toolStripStatusLabel2.BackColor = System.Drawing.Color.DarkKhaki;
this.toolStripStatusLabel2.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
- this.toolStripStatusLabel2.Size = new System.Drawing.Size(52, 25);
- this.toolStripStatusLabel2.Text = "Profiles:";
- //
- // tsBtReset
- //
- this.tsBtReset.AutoSize = false;
- this.tsBtReset.BackColor = System.Drawing.Color.DarkKhaki;
- this.tsBtReset.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.resetDefaultsToolStripMenuItem,
- this.resetEmptyToolStripMenuItem});
- this.tsBtReset.Image = ((System.Drawing.Image)(resources.GetObject("tsBtReset.Image")));
- this.tsBtReset.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.tsBtReset.Name = "tsBtReset";
- this.tsBtReset.Size = new System.Drawing.Size(100, 28);
- this.tsBtReset.Text = "Reset...";
- this.tsBtReset.ToolTipText = "Reset with chosen options";
- //
- // resetDefaultsToolStripMenuItem
- //
- this.resetDefaultsToolStripMenuItem.BackColor = System.Drawing.Color.DarkKhaki;
- this.resetDefaultsToolStripMenuItem.Name = "resetDefaultsToolStripMenuItem";
- this.resetDefaultsToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
- this.resetDefaultsToolStripMenuItem.Text = "Reset defaults !";
- this.resetDefaultsToolStripMenuItem.Click += new System.EventHandler(this.resetDefaultsToolStripMenuItem_Click);
- //
- // resetEmptyToolStripMenuItem
- //
- this.resetEmptyToolStripMenuItem.BackColor = System.Drawing.Color.DarkKhaki;
- this.resetEmptyToolStripMenuItem.Name = "resetEmptyToolStripMenuItem";
- this.resetEmptyToolStripMenuItem.Size = new System.Drawing.Size(153, 22);
- this.resetEmptyToolStripMenuItem.Text = "Reset empty !";
- this.resetEmptyToolStripMenuItem.Click += new System.EventHandler(this.resetEmptyToolStripMenuItem_Click);
+ this.toolStripStatusLabel2.Size = new System.Drawing.Size(47, 17);
+ this.toolStripStatusLabel2.Text = "Profile:";
//
// toolStripStatusLabel3
//
- this.toolStripStatusLabel3.AutoSize = false;
this.toolStripStatusLabel3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
this.toolStripStatusLabel3.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.toolStripStatusLabel3.Margin = new System.Windows.Forms.Padding(5, 3, 5, 2);
this.toolStripStatusLabel3.Name = "toolStripStatusLabel3";
- this.toolStripStatusLabel3.Size = new System.Drawing.Size(450, 25);
+ this.toolStripStatusLabel3.Size = new System.Drawing.Size(913, 17);
+ this.toolStripStatusLabel3.Spring = true;
this.toolStripStatusLabel3.Text = " Support: profile version=\"1\" optionsVersion=\"2\" rebindVersion=\"2\" ";
- //
- // toolStripStatusLabel1
- //
- this.toolStripStatusLabel1.BackColor = System.Drawing.Color.DarkSeaGreen;
- this.toolStripStatusLabel1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
- this.toolStripStatusLabel1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.toolStripStatusLabel1.Margin = new System.Windows.Forms.Padding(5, 3, 0, 2);
- this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
- this.toolStripStatusLabel1.Size = new System.Drawing.Size(63, 25);
- this.toolStripStatusLabel1.Text = "Mappings:";
- this.toolStripStatusLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // tsDDbtMappings
- //
- this.tsDDbtMappings.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
- this.tsDDbtMappings.AutoSize = false;
- this.tsDDbtMappings.BackColor = System.Drawing.Color.DarkSeaGreen;
- this.tsDDbtMappings.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
- this.tsDDbtMappings.Image = ((System.Drawing.Image)(resources.GetObject("tsDDbtMappings.Image")));
- this.tsDDbtMappings.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.tsDDbtMappings.Margin = new System.Windows.Forms.Padding(5, 2, 5, 0);
- this.tsDDbtMappings.Name = "tsDDbtMappings";
- this.tsDDbtMappings.Size = new System.Drawing.Size(220, 28);
- this.tsDDbtMappings.Text = "Available Mappings";
- this.tsDDbtMappings.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- this.tsDDbtMappings.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.tsDDbtMappings_DropDownItemClicked);
- //
- // tsBtLoad
- //
- this.tsBtLoad.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
- this.tsBtLoad.AutoSize = false;
- this.tsBtLoad.BackColor = System.Drawing.Color.DarkSeaGreen;
- this.tsBtLoad.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.defaultsLoadAndGrabToolStripMenuItem,
- this.resetLoadAndGrabToolStripMenuItem,
- this.loadAndGrabToolStripMenuItem,
- this.loadToolStripMenuItem});
- this.tsBtLoad.Image = ((System.Drawing.Image)(resources.GetObject("tsBtLoad.Image")));
- this.tsBtLoad.ImageTransparentColor = System.Drawing.Color.Magenta;
- this.tsBtLoad.Margin = new System.Windows.Forms.Padding(5, 2, 5, 0);
- this.tsBtLoad.Name = "tsBtLoad";
- this.tsBtLoad.Size = new System.Drawing.Size(100, 28);
- this.tsBtLoad.Text = "Load...";
- this.tsBtLoad.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
- //
- // defaultsLoadAndGrabToolStripMenuItem
- //
- this.defaultsLoadAndGrabToolStripMenuItem.BackColor = System.Drawing.Color.DarkSeaGreen;
- this.defaultsLoadAndGrabToolStripMenuItem.Name = "defaultsLoadAndGrabToolStripMenuItem";
- this.defaultsLoadAndGrabToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
- this.defaultsLoadAndGrabToolStripMenuItem.Text = "Defaults, Load and Grab !";
- this.defaultsLoadAndGrabToolStripMenuItem.Click += new System.EventHandler(this.defaultsLoadAndGrabToolStripMenuItem_Click);
- //
- // resetLoadAndGrabToolStripMenuItem
- //
- this.resetLoadAndGrabToolStripMenuItem.BackColor = System.Drawing.Color.DarkSeaGreen;
- this.resetLoadAndGrabToolStripMenuItem.Name = "resetLoadAndGrabToolStripMenuItem";
- this.resetLoadAndGrabToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
- this.resetLoadAndGrabToolStripMenuItem.Text = "Reset, Load and Grab !";
- this.resetLoadAndGrabToolStripMenuItem.Click += new System.EventHandler(this.resetLoadAndGrabToolStripMenuItem_Click);
- //
- // loadAndGrabToolStripMenuItem
- //
- this.loadAndGrabToolStripMenuItem.BackColor = System.Drawing.Color.DarkSeaGreen;
- this.loadAndGrabToolStripMenuItem.Name = "loadAndGrabToolStripMenuItem";
- this.loadAndGrabToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
- this.loadAndGrabToolStripMenuItem.Text = "Load and Grab !";
- this.loadAndGrabToolStripMenuItem.Click += new System.EventHandler(this.loadAndGrabToolStripMenuItem_Click);
- //
- // loadToolStripMenuItem
- //
- this.loadToolStripMenuItem.BackColor = System.Drawing.Color.DarkSeaGreen;
- this.loadToolStripMenuItem.Name = "loadToolStripMenuItem";
- this.loadToolStripMenuItem.Size = new System.Drawing.Size(206, 22);
- this.loadToolStripMenuItem.Text = "Load !";
- this.loadToolStripMenuItem.Click += new System.EventHandler(this.loadToolStripMenuItem_Click);
+ this.toolStripStatusLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel2,
- this.tsBtReset,
- this.toolStripStatusLabel3,
- this.toolStripStatusLabel1,
- this.tsDDbtMappings,
- this.tsBtLoad});
- this.statusStrip1.Location = new System.Drawing.Point(0, 862);
+ this.tslblProfileUsed,
+ this.toolStripStatusLabel3});
+ this.statusStrip1.Location = new System.Drawing.Point(0, 869);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
this.statusStrip1.ShowItemToolTips = true;
- this.statusStrip1.Size = new System.Drawing.Size(1054, 30);
+ this.statusStrip1.Size = new System.Drawing.Size(1054, 22);
this.statusStrip1.TabIndex = 26;
this.statusStrip1.Text = "statusStrip1";
//
- // lbxOther
- //
- this.lbxOther.BackColor = System.Drawing.Color.WhiteSmoke;
- this.lbxOther.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.lbxOther.Dock = System.Windows.Forms.DockStyle.Fill;
- this.lbxOther.Location = new System.Drawing.Point(3, 33);
- this.lbxOther.Name = "lbxOther";
- this.lbxOther.Size = new System.Drawing.Size(342, 618);
- this.lbxOther.TabIndex = 3;
- this.lbxOther.Text = "";
- this.lbxOther.WordWrap = false;
+ // tslblProfileUsed
+ //
+ this.tslblProfileUsed.Name = "tslblProfileUsed";
+ this.tslblProfileUsed.Size = new System.Drawing.Size(69, 17);
+ this.tslblProfileUsed.Text = "used profile";
+ //
+ // toolStrip1
+ //
+ this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32);
+ this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.msBtLoad,
+ this.toolStripSeparator2,
+ this.msBtDump,
+ this.toolStripSeparator5,
+ this.msShow,
+ this.toolStripSeparator6,
+ this.msConfig,
+ this.toolStripSeparator8,
+ this.meLoadMap,
+ this.msSelectMapping,
+ this.toolStripLabel1});
+ this.toolStrip1.Location = new System.Drawing.Point(0, 0);
+ this.toolStrip1.MinimumSize = new System.Drawing.Size(0, 40);
+ this.toolStrip1.Name = "toolStrip1";
+ this.toolStrip1.Size = new System.Drawing.Size(1054, 40);
+ this.toolStrip1.Stretch = true;
+ this.toolStrip1.TabIndex = 27;
+ this.toolStrip1.Text = "toolStrip1";
+ //
+ // msBtLoad
+ //
+ this.msBtLoad.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.meResetDefaults,
+ this.meResetEmpty});
+ this.msBtLoad.Image = global::SCJMapper_V2.Properties.Resources.Home;
+ this.msBtLoad.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.msBtLoad.Name = "msBtLoad";
+ this.msBtLoad.Size = new System.Drawing.Size(89, 37);
+ this.msBtLoad.Text = "Reset...";
+ this.msBtLoad.ToolTipText = "Reset the action tree";
+ //
+ // meResetDefaults
+ //
+ this.meResetDefaults.Image = global::SCJMapper_V2.Properties.Resources.RSI;
+ this.meResetDefaults.Name = "meResetDefaults";
+ this.meResetDefaults.Size = new System.Drawing.Size(169, 38);
+ this.meResetDefaults.Text = "Reset defaults !";
+ this.meResetDefaults.Click += new System.EventHandler(this.meResetDefaults_Click);
+ //
+ // meResetEmpty
+ //
+ this.meResetEmpty.Image = global::SCJMapper_V2.Properties.Resources.NPad;
+ this.meResetEmpty.Name = "meResetEmpty";
+ this.meResetEmpty.Size = new System.Drawing.Size(169, 38);
+ this.meResetEmpty.Text = "Reset empty !";
+ this.meResetEmpty.Click += new System.EventHandler(this.meResetEmpty_Click);
+ //
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(6, 40);
+ //
+ // msBtDump
+ //
+ this.msBtDump.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.meDumpMappingList,
+ this.meDumpLogfile,
+ this.meDumpDefaultProfile,
+ this.meDumpActiontreeAsXML});
+ this.msBtDump.Image = global::SCJMapper_V2.Properties.Resources.Info;
+ this.msBtDump.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.msBtDump.Name = "msBtDump";
+ this.msBtDump.Size = new System.Drawing.Size(94, 37);
+ this.msBtDump.Text = "Dump...";
+ this.msBtDump.ToolTipText = "Get additional information";
+ //
+ // meDumpMappingList
+ //
+ this.meDumpMappingList.Name = "meDumpMappingList";
+ this.meDumpMappingList.Size = new System.Drawing.Size(206, 22);
+ this.meDumpMappingList.Text = "Dump Mapping List";
+ this.meDumpMappingList.Click += new System.EventHandler(this.meDumpMappingList_Click);
+ //
+ // meDumpLogfile
+ //
+ this.meDumpLogfile.Name = "meDumpLogfile";
+ this.meDumpLogfile.Size = new System.Drawing.Size(206, 22);
+ this.meDumpLogfile.Text = "Dump Logfile";
+ this.meDumpLogfile.Click += new System.EventHandler(this.meDumpLogfile_Click);
+ //
+ // meDumpDefaultProfile
+ //
+ this.meDumpDefaultProfile.Name = "meDumpDefaultProfile";
+ this.meDumpDefaultProfile.Size = new System.Drawing.Size(206, 22);
+ this.meDumpDefaultProfile.Text = "Dump DefaultProfile";
+ this.meDumpDefaultProfile.Click += new System.EventHandler(this.meDumpDefaultProfile_Click);
+ //
+ // meDumpActiontreeAsXML
+ //
+ this.meDumpActiontreeAsXML.Name = "meDumpActiontreeAsXML";
+ this.meDumpActiontreeAsXML.Size = new System.Drawing.Size(206, 22);
+ this.meDumpActiontreeAsXML.Text = "Dump Actiontree as XML";
+ this.meDumpActiontreeAsXML.Click += new System.EventHandler(this.meDumpActiontreeAsXML_Click);
+ //
+ // toolStripSeparator5
+ //
+ this.toolStripSeparator5.Name = "toolStripSeparator5";
+ this.toolStripSeparator5.Size = new System.Drawing.Size(6, 40);
+ //
+ // msShow
+ //
+ this.msShow.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.meShowToggleTable,
+ this.meShowOptionsDialog,
+ this.meShowDeviceTuningDialog});
+ this.msShow.Image = global::SCJMapper_V2.Properties.Resources.Monitor;
+ this.msShow.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.msShow.Name = "msShow";
+ this.msShow.Size = new System.Drawing.Size(90, 37);
+ this.msShow.Text = "Show...";
+ this.msShow.ToolTipText = "Show Options, Tuning and Tables";
+ //
+ // meShowToggleTable
+ //
+ this.meShowToggleTable.Name = "meShowToggleTable";
+ this.meShowToggleTable.Size = new System.Drawing.Size(228, 22);
+ this.meShowToggleTable.Text = "Show Toggle Table...";
+ this.meShowToggleTable.Click += new System.EventHandler(this.meShowToggleTable_Click);
+ //
+ // meShowOptionsDialog
+ //
+ this.meShowOptionsDialog.Name = "meShowOptionsDialog";
+ this.meShowOptionsDialog.Size = new System.Drawing.Size(228, 22);
+ this.meShowOptionsDialog.Text = "Show Options Dialog...";
+ this.meShowOptionsDialog.Click += new System.EventHandler(this.meShowOptionsDialog_Click);
+ //
+ // meShowDeviceTuningDialog
+ //
+ this.meShowDeviceTuningDialog.Name = "meShowDeviceTuningDialog";
+ this.meShowDeviceTuningDialog.Size = new System.Drawing.Size(228, 22);
+ this.meShowDeviceTuningDialog.Text = "Show Device Tuning Dialog...";
+ this.meShowDeviceTuningDialog.Click += new System.EventHandler(this.meShowDeviceTuningDialog_Click);
+ //
+ // toolStripSeparator6
+ //
+ this.toolStripSeparator6.Name = "toolStripSeparator6";
+ this.toolStripSeparator6.Size = new System.Drawing.Size(6, 40);
+ //
+ // msConfig
+ //
+ this.msConfig.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.meSettingsDialog,
+ this.meJsReassignDialog});
+ this.msConfig.Image = global::SCJMapper_V2.Properties.Resources.Settings;
+ this.msConfig.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.msConfig.Name = "msConfig";
+ this.msConfig.Size = new System.Drawing.Size(97, 37);
+ this.msConfig.Text = "Config...";
+ this.msConfig.ToolTipText = "Configure the program";
+ //
+ // meSettingsDialog
+ //
+ this.meSettingsDialog.Name = "meSettingsDialog";
+ this.meSettingsDialog.Size = new System.Drawing.Size(178, 22);
+ this.meSettingsDialog.Text = "Settings Dialog...";
+ this.meSettingsDialog.Click += new System.EventHandler(this.meSettingsDialog_Click);
+ //
+ // meJsReassignDialog
+ //
+ this.meJsReassignDialog.Name = "meJsReassignDialog";
+ this.meJsReassignDialog.Size = new System.Drawing.Size(178, 22);
+ this.meJsReassignDialog.Text = "Js Reassign Dialog...";
+ this.meJsReassignDialog.Click += new System.EventHandler(this.meJsReassignDialog_Click);
+ //
+ // toolStripSeparator8
+ //
+ this.toolStripSeparator8.Name = "toolStripSeparator8";
+ this.toolStripSeparator8.Size = new System.Drawing.Size(6, 40);
+ //
+ // meLoadMap
+ //
+ this.meLoadMap.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ this.meLoadMap.AutoSize = false;
+ this.meLoadMap.BackColor = System.Drawing.Color.DarkSeaGreen;
+ this.meLoadMap.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.meDefaultsLoadAndGrab,
+ this.meResetLoadAndGrab,
+ this.meLoadAndGrab,
+ this.meLoad});
+ this.meLoadMap.Image = global::SCJMapper_V2.Properties.Resources.Folder;
+ this.meLoadMap.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.meLoadMap.Name = "meLoadMap";
+ this.meLoadMap.Size = new System.Drawing.Size(150, 37);
+ this.meLoadMap.Text = "Load...";
+ this.meLoadMap.ToolTipText = "Load a map with options...";
+ //
+ // meDefaultsLoadAndGrab
+ //
+ this.meDefaultsLoadAndGrab.BackColor = System.Drawing.Color.DarkSeaGreen;
+ this.meDefaultsLoadAndGrab.Name = "meDefaultsLoadAndGrab";
+ this.meDefaultsLoadAndGrab.Size = new System.Drawing.Size(206, 22);
+ this.meDefaultsLoadAndGrab.Text = "Defaults, Load and Grab !";
+ this.meDefaultsLoadAndGrab.Click += new System.EventHandler(this.meDefaultsLoadAndGrab_Click);
+ //
+ // meResetLoadAndGrab
+ //
+ this.meResetLoadAndGrab.BackColor = System.Drawing.Color.DarkSeaGreen;
+ this.meResetLoadAndGrab.Name = "meResetLoadAndGrab";
+ this.meResetLoadAndGrab.Size = new System.Drawing.Size(206, 22);
+ this.meResetLoadAndGrab.Text = "Reset, Load and Grab !";
+ this.meResetLoadAndGrab.Click += new System.EventHandler(this.meResetLoadAndGrab_Click);
+ //
+ // meLoadAndGrab
+ //
+ this.meLoadAndGrab.BackColor = System.Drawing.Color.DarkSeaGreen;
+ this.meLoadAndGrab.Name = "meLoadAndGrab";
+ this.meLoadAndGrab.Size = new System.Drawing.Size(206, 22);
+ this.meLoadAndGrab.Text = "Load and Grab !";
+ this.meLoadAndGrab.Click += new System.EventHandler(this.meLoadAndGrab_Click);
+ //
+ // meLoad
+ //
+ this.meLoad.BackColor = System.Drawing.Color.DarkSeaGreen;
+ this.meLoad.Name = "meLoad";
+ this.meLoad.Size = new System.Drawing.Size(206, 22);
+ this.meLoad.Text = "Load !";
+ this.meLoad.Click += new System.EventHandler(this.meLoad_Click);
+ //
+ // msSelectMapping
+ //
+ this.msSelectMapping.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ this.msSelectMapping.AutoSize = false;
+ this.msSelectMapping.BackColor = System.Drawing.Color.DarkSeaGreen;
+ this.msSelectMapping.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.msSelectMapping.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.msSelectMapping.Image = ((System.Drawing.Image)(resources.GetObject("msSelectMapping.Image")));
+ this.msSelectMapping.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.msSelectMapping.Name = "msSelectMapping";
+ this.msSelectMapping.Size = new System.Drawing.Size(240, 37);
+ this.msSelectMapping.Text = "Available Mappings";
+ this.msSelectMapping.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ this.msSelectMapping.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.msSelectMapping_DropDownItemClicked);
+ //
+ // toolStripLabel1
+ //
+ this.toolStripLabel1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
+ this.toolStripLabel1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.toolStripLabel1.Name = "toolStripLabel1";
+ this.toolStripLabel1.Size = new System.Drawing.Size(69, 37);
+ this.toolStripLabel1.Text = "Mappings: ";
+ //
+ // IL2
+ //
+ this.IL2.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("IL2.ImageStream")));
+ this.IL2.TransparentColor = System.Drawing.Color.Transparent;
+ this.IL2.Images.SetKeyName(0, "User");
+ this.IL2.Images.SetKeyName(1, "Locked");
+ this.IL2.Images.SetKeyName(2, "RSI");
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
- this.ClientSize = new System.Drawing.Size(1054, 892);
+ this.ClientSize = new System.Drawing.Size(1054, 891);
+ this.Controls.Add(this.toolStrip1);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.tlpanel);
this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
@@ -1440,14 +1467,14 @@
this.tableLayoutPanel6.PerformLayout();
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
+ this.toolStrip1.ResumeLayout(false);
+ this.toolStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
-
- private System.Windows.Forms.Button btDumpList;
private System.Windows.Forms.RichTextBox rtb;
private System.Windows.Forms.Button btGrab;
private System.Windows.Forms.Button btDump;
@@ -1482,17 +1509,7 @@
private System.Windows.Forms.TableLayoutPanel tlpanel;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
- private System.Windows.Forms.ToolStripDropDownButton tsDDbtMappings;
- private System.Windows.Forms.ToolStripDropDownButton tsBtReset;
- private System.Windows.Forms.ToolStripMenuItem resetDefaultsToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem resetEmptyToolStripMenuItem;
- private System.Windows.Forms.ToolStripDropDownButton tsBtLoad;
- private System.Windows.Forms.ToolStripMenuItem loadAndGrabToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem loadToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem resetLoadAndGrabToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem defaultsLoadAndGrabToolStripMenuItem;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2;
- private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3;
private System.Windows.Forms.Button btClearFilter;
private System.Windows.Forms.TextBox txFilter;
@@ -1504,9 +1521,6 @@
private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.CheckBox cbxThrottle;
private System.Windows.Forms.TextBox txRebind;
- private System.Windows.Forms.Button btSettings;
- private System.Windows.Forms.Button btJsReassign;
- private System.Windows.Forms.Button btJSTuning;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.TextBox lblLastJ;
private System.Windows.Forms.Button btJsKbd;
@@ -1520,7 +1534,6 @@
private System.Windows.Forms.ContextMenuStrip cmAddDel;
private System.Windows.Forms.ToolStripMenuItem tdiAddBinding;
private System.Windows.Forms.ToolStripMenuItem tdiDelBinding;
- private System.Windows.Forms.Button btDumpLog;
private System.Windows.Forms.ToolStripSeparator tdiSGroup2;
private System.Windows.Forms.ToolStripMenuItem tdiBlendBinding;
private System.Windows.Forms.ToolStripMenuItem tdiClearBinding;
@@ -1537,22 +1550,15 @@
private System.Windows.Forms.ToolStripMenuItem tdiAddMod1;
private System.Windows.Forms.ToolStripMenuItem tdiAddMod2;
private System.Windows.Forms.ToolStripMenuItem tdiAddMod3;
- private System.Windows.Forms.Button btMakeMod;
- private System.Windows.Forms.Label lblPTU;
private System.Windows.Forms.ToolStripComboBox tdiCbxActivation;
private System.Windows.Forms.ToolStripSeparator tdiSGroup4;
private System.Windows.Forms.ToolStripTextBox tdiTxDefActivationMode;
- private System.Windows.Forms.Label label3;
- private System.Windows.Forms.Label lblProfileUsed;
private System.Windows.Forms.ToolStripMenuItem tmeK_Tab;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
- private System.Windows.Forms.Button btDumpProfile;
- private System.Windows.Forms.Button btTable;
private System.Windows.Forms.ToolStripMenuItem tdiCollapseAll;
private System.Windows.Forms.ToolStripMenuItem tdiExpandAll;
private System.Windows.Forms.ToolStripSeparator tdiSGroup1;
- private System.Windows.Forms.Button btOptions;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label lblAssigned;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
@@ -1562,6 +1568,35 @@
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel6;
private System.Windows.Forms.CheckBox cbxAutoTabXML;
private System.Windows.Forms.RichTextBox lbxOther;
+ private System.Windows.Forms.ToolStrip toolStrip1;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
+ private System.Windows.Forms.ToolStripStatusLabel tslblProfileUsed;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
+ private System.Windows.Forms.ToolStripDropDownButton msSelectMapping;
+ private System.Windows.Forms.ToolStripLabel toolStripLabel1;
+ private System.Windows.Forms.ToolStripDropDownButton meLoadMap;
+ private System.Windows.Forms.ToolStripMenuItem meDefaultsLoadAndGrab;
+ private System.Windows.Forms.ToolStripMenuItem meResetLoadAndGrab;
+ private System.Windows.Forms.ToolStripMenuItem meLoadAndGrab;
+ private System.Windows.Forms.ToolStripMenuItem meLoad;
+ private System.Windows.Forms.ImageList IL2;
+ private System.Windows.Forms.ToolStripDropDownButton msBtLoad;
+ private System.Windows.Forms.ToolStripMenuItem meResetDefaults;
+ private System.Windows.Forms.ToolStripMenuItem meResetEmpty;
+ private System.Windows.Forms.ToolStripDropDownButton msBtDump;
+ private System.Windows.Forms.ToolStripMenuItem meDumpMappingList;
+ private System.Windows.Forms.ToolStripMenuItem meDumpLogfile;
+ private System.Windows.Forms.ToolStripMenuItem meDumpDefaultProfile;
+ private System.Windows.Forms.ToolStripMenuItem meDumpActiontreeAsXML;
+ private System.Windows.Forms.ToolStripDropDownButton msShow;
+ private System.Windows.Forms.ToolStripMenuItem meShowToggleTable;
+ private System.Windows.Forms.ToolStripMenuItem meShowOptionsDialog;
+ private System.Windows.Forms.ToolStripMenuItem meShowDeviceTuningDialog;
+ private System.Windows.Forms.ToolStripDropDownButton msConfig;
+ private System.Windows.Forms.ToolStripMenuItem meSettingsDialog;
+ private System.Windows.Forms.ToolStripMenuItem meJsReassignDialog;
}
}
diff --git a/FormMain.cs b/FormMain.cs
index ca153a5..c17dce7 100644
--- a/FormMain.cs
+++ b/FormMain.cs
@@ -135,7 +135,7 @@ namespace SCJMapper_V2
private void UpdateDDMapping(string mapName )
{
- tsDDbtMappings.Text = mapName;
+ msSelectMapping.Text = mapName;
m_AppSettings.DefMappingName = mapName; m_AppSettings.Save( );
}
@@ -178,9 +178,14 @@ namespace SCJMapper_V2
private void LoadMappingDD()
{
SCMappings.UpdateMappingNames( );
- tsDDbtMappings.DropDownItems.Clear( );
+ msSelectMapping.DropDownItems.Clear( );
foreach ( string s in SCMappings.MappingNames ) {
- tsDDbtMappings.DropDownItems.Add( Path.GetFileNameWithoutExtension( s ) );
+ if ( !SCMappings.IsUserMapping( s ) ) {
+ msSelectMapping.DropDownItems.Add( Path.GetFileNameWithoutExtension( s ), IL2.Images["RSI"] );
+ }
+ else {
+ msSelectMapping.DropDownItems.Add( Path.GetFileNameWithoutExtension( s ), IL2.Images["User"] );
+ }
}
}
@@ -189,8 +194,8 @@ namespace SCJMapper_V2
///
private void SCFileIndication()
{
- if ( string.IsNullOrEmpty( SCPath.SCClientMappingPath ) ) tsDDbtMappings.BackColor = MyColors.InvalidColor;
- else tsDDbtMappings.BackColor = MyColors.MappingColor;
+ if ( string.IsNullOrEmpty( SCPath.SCClientMappingPath ) ) msSelectMapping.BackColor = MyColors.InvalidColor;
+ else msSelectMapping.BackColor = MyColors.MappingColor;
}
@@ -229,7 +234,7 @@ namespace SCJMapper_V2
// load mappings
log.Debug( "Loading Mappings" );
LoadMappingDD( );
- tsDDbtMappings.Text = m_AppSettings.DefMappingName;
+ msSelectMapping.Text = m_AppSettings.DefMappingName;
SCFileIndication( );
@@ -237,7 +242,7 @@ namespace SCJMapper_V2
log.Debug( "Loading Other" );
txMappingName.Text = m_AppSettings.MyMappingName;
SetRebindField( txMappingName.Text );
- foreach ( ToolStripDropDownItem d in tsDDbtMappings.DropDownItems ) {
+ foreach ( ToolStripDropDownItem d in msSelectMapping.DropDownItems ) {
if ( d.Text == txMappingName.Text ) {
UpdateDDMapping( txMappingName.Text );
break;
@@ -286,7 +291,7 @@ namespace SCJMapper_V2
if ( jsIndex >= 0 ) DeviceInst.JoystickInst = DeviceInst.JoystickListRef[jsIndex];
// init PTU folder usage sign
- lblPTU.Visible = false; // m_AppSettings.UsePTU; no longer used
+ //lblPTU.Visible = false; // m_AppSettings.UsePTU; no longer used
if ( m_AppSettings.UsePTU ) log.Debug( "Using PTU Folders" );
// Auto Tab XML
@@ -341,11 +346,8 @@ namespace SCJMapper_V2
Brush foreBrush = new SolidBrush( Color.Black );
- //This construct will hell you to deside which tab page have current focus
- //to change the style.
+ //This construct will tell you which tab page has focus to change the style.
if ( e.Index == this.tc1.SelectedIndex ) {
- //This line of code will help you to change the apperance like size,name,style.
- f = new Font( e.Font, FontStyle.Bold | FontStyle.Bold );
f = new Font( e.Font, FontStyle.Bold );
Rectangle tabRect = tc1.Bounds;
@@ -418,7 +420,7 @@ namespace SCJMapper_V2
m_AT.DefineShowOptions( cbxShowJoystick.Checked, cbxShowGamepad.Checked, cbxShowKeyboard.Checked, cbxShowMouse.Checked, cbxShowMappedOnly.Checked );
// Init with default profile filepath
m_AT.LoadProfileTree( addDefaultBinding );
- lblProfileUsed.Text = SCDefaultProfile.UsedDefProfile; // SCA 2.2 show used profile
+ tslblProfileUsed.Text = SCDefaultProfile.UsedDefProfile; // SCA 2.2 show used profile
// Activation Update
tdiCbxActivation.Items.Clear( );
@@ -645,6 +647,7 @@ namespace SCJMapper_V2
; // just ignore
}
UpdateTable( );
+ UpdateAssignmentList( );
}
@@ -739,7 +742,7 @@ namespace SCJMapper_V2
cbxThrottle.Checked = false; cbxThrottle.Enabled = false;
}
// Update joystick modifiers - not currently used
- btMakeMod.Enabled = JoystickCls.ValidModifier( ctrl );
+ //btMakeMod.Enabled = JoystickCls.ValidModifier( ctrl );
}
@@ -816,25 +819,56 @@ namespace SCJMapper_V2
else MySounds.PlayCannot( );
}
- //TODO
- // possibly obsolete - we dont support to make own modifiers - button is invisible
- private void btMakeMod_Click( object sender, EventArgs e )
+ // General Area Items
+
+ private void btDump_Click( object sender, EventArgs e )
{
+ Dump( );
}
- // possibly obsolete - we dont support to make own modifiers
- private void Cbx_CheckedChanged( object sender, EventArgs e )
+
+ private void btGrab_Click( object sender, EventArgs e )
{
+ Grab( );
}
+ private void btClearFilter_Click( object sender, EventArgs e )
+ {
+ txFilter.Text = "";
+ }
- // General Area Items
+ private void txFilter_TextChanged( object sender, EventArgs e )
+ {
+ m_AT.FilterTree( txFilter.Text );
+ }
- private void btDump_Click( object sender, EventArgs e )
+ private void cbxAutoTabXML_CheckedChanged( object sender, EventArgs e )
{
- Dump( );
+ m_AppSettings.AutoTabXML = cbxAutoTabXML.Checked; m_AppSettings.Save( );
}
- private void btDumpList_Click( object sender, EventArgs e )
+ // Toolstrip Items
+
+ private void meResetDefaults_Click( object sender, EventArgs e )
+ {
+ // start over and if chosen, load defaults from SC game
+ InitActionTree( true );
+ rtb.Text = "";
+ UpdateTable( );
+ UpdateAssignmentList( );
+ }
+
+ private void meResetEmpty_Click( object sender, EventArgs e )
+ {
+ // start over
+ cbxShowMappedOnly.Checked = false; // else it might get empty..
+ InitActionTree( false );
+ rtb.Text = "";
+ UpdateTable( );
+ UpdateAssignmentList( );
+ }
+
+
+ private void meDumpMappingList_Click( object sender, EventArgs e )
{
AutoTabXML_Assignment( EATabXML.Tab_XML );
@@ -842,122 +876,246 @@ namespace SCJMapper_V2
rtb.Text = string.Format( "-- {0} - SC Joystick Mapping --\n{1}", DateTime.Now, m_AT.ReportActionsCSV( m_AppSettings.ListModifiers ) );
else
rtb.Text = string.Format( "-- {0} - SC Joystick Mapping --\n{1}", DateTime.Now, m_AT.ReportActions( ) );
-
}
- private void btDumpLog_Click( object sender, EventArgs e )
+ 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( ) );
}
- private void btDumpProfile_Click( object sender, EventArgs e )
+ private void meDumpDefaultProfile_Click( object sender, EventArgs e )
{
AutoTabXML_Assignment( EATabXML.Tab_XML );
-
rtb.Text = SCDefaultProfile.DefaultProfile( );
}
- private void btGrab_Click( object sender, EventArgs e )
+ private void meDumpActiontreeAsXML_Click( object sender, EventArgs e )
{
- Grab( );
+ Dump( );
}
- private void btClearFilter_Click( object sender, EventArgs e )
+ // Dialogs
+
+ // Show the Table Window
+ private void meShowToggleTable_Click( object sender, EventArgs e )
{
- txFilter.Text = "";
+ bool created = false;
+ if ( FTAB == null ) {
+ FTAB = new FormTable( );
+ FTAB.EditActionEvent += FTAB_EditActionEvent;
+ FTAB.UpdateEditEvent += FTAB_UpdateEditEvent;
+ created = true;
+ }
+
+ if ( FTAB.Visible ) {
+ m_AppSettings.FormTableSize = FTAB.LastSize;
+ m_AppSettings.FormTableLocation = FTAB.LastLocation;
+ m_AppSettings.FormTableColumnWidth = FTAB.LastColSize;
+ FTAB.Hide( );
+
+ }
+ else {
+ FTAB.Show( );
+
+ if ( created ) {
+ FTAB.Size = m_AppSettings.FormTableSize;
+ FTAB.Location = m_AppSettings.FormTableLocation;
+ FTAB.LastColSize = m_AppSettings.FormTableColumnWidth;
+ }
+ // reload the data to display
+ UpdateTable( );
+ }
}
- private void txFilter_TextChanged( object sender, EventArgs e )
+ private void meShowOptionsDialog_Click( object sender, EventArgs e )
{
- m_AT.FilterTree( txFilter.Text );
+ timer1.Enabled = false; // must be off while a modal window is shown, else DX gets crazy
+
+ FormOptions OPT = new FormOptions( );
+
+ // Have to attach here to capture the currently valid settings
+ UpdateTuningItems( );
+ UpdateMoreOptionItems( );
+
+ DeviceList devlist = new DeviceList( );
+ if ( m_AppSettings.DetectGamepad && ( DeviceInst.GamepadRef != null ) ) {
+ devlist.Add( DeviceInst.GamepadRef );
+ }
+ devlist.AddRange( DeviceInst.JoystickListRef );
+
+ OPT.TuningOptions = m_AT.ActionMaps.TuningOptions;
+ OPT.DeviceOptions = m_AT.ActionMaps.DeviceOptions;
+ OPT.Devicelist = devlist;
+
+ OPT.ShowDialog( this );
+ m_AT.Dirty = true;
+
+ OPT = null; // get rid and create a new one next time..
+ devlist = null;
+
+ if ( m_AT.Dirty ) btDump.BackColor = MyColors.DirtyColor;
+ timer1.Enabled = true;
}
- private void cbxAutoTabXML_CheckedChanged( object sender, EventArgs e )
+ private void meShowDeviceTuningDialog_Click( object sender, EventArgs e )
{
- m_AppSettings.AutoTabXML = cbxAutoTabXML.Checked; m_AppSettings.Save( );
- }
+ timer1.Enabled = false; // must be off while a modal window is shown, else DX gets crazy
- // Toolstrip Items
+ JSCAL = new OGL.FormJSCalCurve( );
- private void tsBtReset_ButtonClick( object sender, EventArgs e )
- {
+ // Have to attach here to capture the currently valid settings
+ UpdateTuningItems( );
+ // run
+ JSCAL.TuningOptions = m_AT.ActionMaps.TuningOptions;
+ JSCAL.ShowDialog( this );
+ m_AT.Dirty = true;
+
+ JSCAL = null; // get rid and create a new one next time..
+
+ if ( m_AT.Dirty ) btDump.BackColor = MyColors.DirtyColor;
+ timer1.Enabled = true;
}
- private void resetEmptyToolStripMenuItem_Click( object sender, EventArgs e )
+
+ // Settings
+ private void meSettingsDialog_Click( object sender, EventArgs e )
{
- // start over
- InitActionTree( false );
- rtb.Text = "";
- UpdateTable( );
+ // have to stop polling while the Settings window is open
+ timer1.Enabled = false;
+ if ( m_AppSettings.ShowSettings( "" ) != System.Windows.Forms.DialogResult.Cancel ) {
+ m_AppSettings.Reload( ); // must reload in case of any changes in the form
+ // then reload the profile and mappings
+ LoadMappingDD( );
+ // indicates (in)valid folders
+ SCFileIndication( );
+
+ // now update the contents according to new settings
+ foreach ( JoystickCls j in DeviceInst.JoystickListRef ) j.ApplySettings( ); // update Seetings
+ m_AT.IgnoreMaps = m_AppSettings.IgnoreActionmaps;
+ // and start over with an empty tree
+ InitActionTree( false );
+ UpdateTable( );
+ }
+
+ timer1.Enabled = true;
}
- private void resetDefaultsToolStripMenuItem_Click( object sender, EventArgs e )
+ private void meJsReassignDialog_Click( object sender, EventArgs e )
{
- // start over and if chosen, load defaults from SC game
- InitActionTree( true );
- rtb.Text = "";
- UpdateTable( );
+ // have to stop polling while the Reassign window is open
+ timer1.Enabled = false;
+ if ( DeviceInst.JoystickListRef.ShowReassign( ) != DialogResult.Cancel ) {
+ // copy the action tree while reassigning the jsN mappings from OLD to NEW
+ ActionTree newTree = m_AT.ReassignJsN( DeviceInst.JoystickListRef.JsReassingList );
+
+ // we have still the old assignment in the ActionMap - change it here (map does not know about the devices)
+ JoystickCls j = null;
+ // for all supported jsN devices
+ for ( int i = 0; i < JoystickCls.JSnum_MAX; i++ ) {
+ j = DeviceInst.JoystickListRef.Find_jsN( i + 1 );
+ if ( j != null ) {
+ newTree.ActionMaps.jsN[i] = j.DevName; newTree.ActionMaps.jsNGUID[i] = j.DevInstanceGUID;
+ }
+ else {
+ newTree.ActionMaps.jsN[i] = ""; newTree.ActionMaps.jsNGUID[i] = "";
+ }
+ }
+
+ m_AT.NodeSelectedEvent -= M_AT_NodeSelectedEvent; // disconnect the Event
+ m_AT = newTree; // make it the valid one
+ m_AT.NodeSelectedEvent += M_AT_NodeSelectedEvent; // reconnect the Event
+
+ m_AT.DefineShowOptions( cbxShowJoystick.Checked, cbxShowGamepad.Checked, cbxShowKeyboard.Checked, cbxShowMouse.Checked, cbxShowMappedOnly.Checked );
+ m_AT.ReloadTreeView( );
+ if ( m_AT.Dirty ) btDump.BackColor = MyColors.DirtyColor;
+ }
+
+ timer1.Enabled = true;
}
- private void tsDDbtMappings_DropDownItemClicked( object sender, ToolStripItemClickedEventArgs e )
+ // Load maps
+
+ private void msSelectMapping_DropDownItemClicked( object sender, ToolStripItemClickedEventArgs e )
{
UpdateDDMapping( e.ClickedItem.Text );
}
-
- private void loadToolStripMenuItem_Click( object sender, EventArgs e )
+ private void meDefaultsLoadAndGrab_Click( object sender, EventArgs e )
{
+ // start over
+ InitActionTree( true );
rtb.Text = SCMappings.Mapping( m_AppSettings.DefMappingName );
+ Grab( );
if ( SCMappings.IsUserMapping( m_AppSettings.DefMappingName ) ) {
txMappingName.Text = m_AppSettings.DefMappingName;
SetRebindField( txMappingName.Text );
}
- btGrab.BackColor = MyColors.DirtyColor;
+ btDump.BackColor = MyColors.DirtyColor;
txMappingName.BackColor = MyColors.ValidColor;
}
- private void loadAndGrabToolStripMenuItem_Click( object sender, EventArgs e )
+ private void meResetLoadAndGrab_Click( object sender, EventArgs e )
{
+ // start over
+ InitActionTree( false );
rtb.Text = SCMappings.Mapping( m_AppSettings.DefMappingName );
- Grab( );
if ( SCMappings.IsUserMapping( m_AppSettings.DefMappingName ) ) {
txMappingName.Text = m_AppSettings.DefMappingName;
SetRebindField( txMappingName.Text );
}
- btDump.BackColor = MyColors.DirtyColor;
+ Grab( );
txMappingName.BackColor = MyColors.ValidColor;
}
- private void resetLoadAndGrabToolStripMenuItem_Click( object sender, EventArgs e )
+ private void meLoadAndGrab_Click( object sender, EventArgs e )
{
- // start over
- InitActionTree( false );
rtb.Text = SCMappings.Mapping( m_AppSettings.DefMappingName );
+ Grab( );
if ( SCMappings.IsUserMapping( m_AppSettings.DefMappingName ) ) {
txMappingName.Text = m_AppSettings.DefMappingName;
SetRebindField( txMappingName.Text );
}
- Grab( );
+ btDump.BackColor = MyColors.DirtyColor;
txMappingName.BackColor = MyColors.ValidColor;
}
- private void defaultsLoadAndGrabToolStripMenuItem_Click( object sender, EventArgs e )
+ private void meLoad_Click( object sender, EventArgs e )
{
- // start over
- InitActionTree( true );
rtb.Text = SCMappings.Mapping( m_AppSettings.DefMappingName );
- Grab( );
if ( SCMappings.IsUserMapping( m_AppSettings.DefMappingName ) ) {
txMappingName.Text = m_AppSettings.DefMappingName;
SetRebindField( txMappingName.Text );
}
- btDump.BackColor = MyColors.DirtyColor;
+ btGrab.BackColor = MyColors.DirtyColor;
txMappingName.BackColor = MyColors.ValidColor;
}
+
+ private void tsDDbtMappings_DropDownItemClicked( object sender, ToolStripItemClickedEventArgs e )
+ {
+ }
+
+
+
+ private void loadToolStripMenuItem_Click( object sender, EventArgs e )
+ {
+ }
+
+ private void loadAndGrabToolStripMenuItem_Click( object sender, EventArgs e )
+ {
+ }
+
+ private void resetLoadAndGrabToolStripMenuItem_Click( object sender, EventArgs e )
+ {
+ }
+
+ private void defaultsLoadAndGrabToolStripMenuItem_Click( object sender, EventArgs e )
+ {
+ }
+
+
// Context Menu Items
// RTB Menu
@@ -1221,62 +1379,6 @@ namespace SCJMapper_V2
}
- // Settings
-
- private void btSettings_Click( object sender, EventArgs e )
- {
- // have to stop polling while the Settings window is open
- timer1.Enabled = false;
- if ( m_AppSettings.ShowSettings( "" ) != System.Windows.Forms.DialogResult.Cancel ) {
- m_AppSettings.Reload( ); // must reload in case of any changes in the form
- // then reload the profile and mappings
- LoadMappingDD( );
- // indicates (in)valid folders
- SCFileIndication( );
-
- // now update the contents according to new settings
- foreach ( JoystickCls j in DeviceInst.JoystickListRef ) j.ApplySettings( ); // update Seetings
- m_AT.IgnoreMaps = m_AppSettings.IgnoreActionmaps;
- // and start over with an empty tree
- InitActionTree( false );
- UpdateTable( );
- }
-
- timer1.Enabled = true;
- }
-
- private void btJsReassign_Click( object sender, EventArgs e )
- {
- // have to stop polling while the Reassign window is open
- timer1.Enabled = false;
- if ( DeviceInst.JoystickListRef.ShowReassign( ) != DialogResult.Cancel ) {
- // copy the action tree while reassigning the jsN mappings from OLD to NEW
- ActionTree newTree = m_AT.ReassignJsN( DeviceInst.JoystickListRef.JsReassingList );
-
- // we have still the old assignment in the ActionMap - change it here (map does not know about the devices)
- JoystickCls j = null;
- // for all supported jsN devices
- for ( int i = 0; i < JoystickCls.JSnum_MAX; i++ ) {
- j = DeviceInst.JoystickListRef.Find_jsN( i + 1 );
- if ( j != null ) {
- newTree.ActionMaps.jsN[i] = j.DevName; newTree.ActionMaps.jsNGUID[i] = j.DevInstanceGUID;
- }
- else {
- newTree.ActionMaps.jsN[i] = ""; newTree.ActionMaps.jsNGUID[i] = "";
- }
- }
-
- m_AT.NodeSelectedEvent -= M_AT_NodeSelectedEvent; // disconnect the Event
- m_AT = newTree; // make it the valid one
- m_AT.NodeSelectedEvent += M_AT_NodeSelectedEvent; // reconnect the Event
-
- m_AT.DefineShowOptions( cbxShowJoystick.Checked, cbxShowGamepad.Checked, cbxShowKeyboard.Checked, cbxShowMouse.Checked, cbxShowMappedOnly.Checked );
- m_AT.ReloadTreeView( );
- if ( m_AT.Dirty ) btDump.BackColor = MyColors.DirtyColor;
- }
-
- timer1.Enabled = true;
- }
// Joystick Tuning
@@ -1427,55 +1529,6 @@ namespace SCJMapper_V2
}
- private void btJSTuning_Click( object sender, EventArgs e )
- {
- timer1.Enabled = false; // must be off while a modal window is shown, else DX gets crazy
-
- JSCAL = new OGL.FormJSCalCurve( );
-
- // Have to attach here to capture the currently valid settings
- UpdateTuningItems( );
- // run
- JSCAL.TuningOptions = m_AT.ActionMaps.TuningOptions;
- JSCAL.ShowDialog( this );
- m_AT.Dirty = true;
-
- JSCAL = null; // get rid and create a new one next time..
-
- if ( m_AT.Dirty ) btDump.BackColor = MyColors.DirtyColor;
- timer1.Enabled = true;
- }
-
-
- private void btOptions_Click( object sender, EventArgs e )
- {
- timer1.Enabled = false; // must be off while a modal window is shown, else DX gets crazy
-
- FormOptions OPT = new FormOptions( );
-
- // Have to attach here to capture the currently valid settings
- UpdateTuningItems( );
- UpdateMoreOptionItems( );
-
- DeviceList devlist = new DeviceList( );
- if ( m_AppSettings.DetectGamepad && ( DeviceInst.GamepadRef != null ) ) {
- devlist.Add( DeviceInst.GamepadRef );
- }
- devlist.AddRange( DeviceInst.JoystickListRef );
-
- OPT.TuningOptions = m_AT.ActionMaps.TuningOptions;
- OPT.DeviceOptions = m_AT.ActionMaps.DeviceOptions;
- OPT.Devicelist = devlist;
-
- OPT.ShowDialog( this );
- m_AT.Dirty = true;
-
- OPT = null; // get rid and create a new one next time..
- devlist = null;
-
- if ( m_AT.Dirty ) btDump.BackColor = MyColors.DirtyColor;
- timer1.Enabled = true;
- }
// Keyboard Input
@@ -1532,11 +1585,8 @@ namespace SCJMapper_V2
e.Handled = true;
}
- // text of input has changed
- private void lblLastJ_TextChanged( object sender, EventArgs e )
+ private void UpdateAssignmentList()
{
- AutoTabXML_Assignment( EATabXML.Tab_Assignment );
-
string devInput = Act.DevInput( lblLastJ.Text, InputMode );
RTF.RTFformatter RTF = new RTF.RTFformatter( );
m_AT.FindAllActionsRTF( devInput, RTF );
@@ -1547,6 +1597,12 @@ namespace SCJMapper_V2
}
lbxOther.Rtf = RTF.RTFtext;
}
+ // text of input has changed
+ private void lblLastJ_TextChanged( object sender, EventArgs e )
+ {
+ AutoTabXML_Assignment( EATabXML.Tab_Assignment );
+ UpdateAssignmentList( );
+ }
// maintain the global modifier store
@@ -1656,38 +1712,6 @@ namespace SCJMapper_V2
}
}
- // Show the Table Window
- private void btTable_Click( object sender, EventArgs e )
- {
- bool created = false;
- if ( FTAB == null ) {
- FTAB = new FormTable( );
- FTAB.EditActionEvent += FTAB_EditActionEvent;
- FTAB.UpdateEditEvent += FTAB_UpdateEditEvent;
- created = true;
- }
-
- if ( FTAB.Visible ) {
- m_AppSettings.FormTableSize = FTAB.LastSize;
- m_AppSettings.FormTableLocation = FTAB.LastLocation;
- m_AppSettings.FormTableColumnWidth = FTAB.LastColSize;
- FTAB.Hide( );
-
- }
- else {
- FTAB.Show( );
-
- if ( created ) {
- FTAB.Size = m_AppSettings.FormTableSize;
- FTAB.Location = m_AppSettings.FormTableLocation;
- FTAB.LastColSize = m_AppSettings.FormTableColumnWidth;
- }
- // reload the data to display
- UpdateTable( );
- }
-
- }
-
// called when the user clicks Update from the Table Window
private void FTAB_UpdateEditEvent( object sender, UpdateEditEventArgs e )
{
@@ -1712,6 +1736,5 @@ namespace SCJMapper_V2
{
m_AT.FindAndSelectActionKey( e.Actionmap, e.Actionkey, e.Nodeindex );
}
-
}
}
diff --git a/FormMain.resx b/FormMain.resx
index 16ed368..64326a8 100644
--- a/FormMain.resx
+++ b/FormMain.resx
@@ -128,7 +128,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA8
- EAAAAk1TRnQBSQFMAgEBCQEAAagBEQGoAREBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ EAAAAk1TRnQBSQFMAgEBCQEAAVgBEgFYARIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -207,278 +207,6 @@
652, 17
-
-
- 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
- x1//2Q==
-
-
-
- 133, 17
-
-
- 209, 17
-
-
- 421, 17
-
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH
@@ -551,42 +279,287 @@
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
-
+
- iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAa+SURBVGhD7ZhrTBRXFMdNmlZZWHmqCKIUedZHtLVNv/RD
- TfzQNE1rolUWpCqW+hZll/dDRFkhIgrCCiuwFRQKFLQiyKPx1SpVMbJSHyCIoIIoaj810Sb/3jMMCnJ3
- HVxdmtST/LKTmXPP+f/n3p29s6Pexv89NBpNZlZWFl6EzospIxMWvqGfWPip8gTYsXh6SJBYXtB5McX8
- wURvsFoWBc+a8wJ0TOfEy4OChD569GgII2Ng4cJ3ZApVil1ICmZe7MFHLRCgY1t2jq6Jmc+ChPb29g7B
- 7AYs/UPnyXxVZZMyyjH7yhPM/OMpptV0C9Dx7D+fwDm9DDJfZYmlf8hccZhgoKenZwhmNSDzU6mslsfA
- s+IyZjUC048/hM/RW/CpaO+DHdM5uuZRoQfl0hgaS0K7u7uHYBYDtgvDrGUKZbp92B5MP9OLGWf+hk9l
- J7wP3eBC1yiHcmkMG7trd4YGd+7cGcIbN2Dhp5xvoVDWOO+pxIxz/8CntgeeZc3wLL1qHJZDudPrn4LG
- frguDrrqk+jo6BjEGzXApj9WvmIz3MubMe3EY3ixu+tR2CidIr0wZtrJv+Bedg1UKzyvFDdv3nzGGzFg
- EbDRmYnPtA/TwKv2HrzYknAvasTU/POvBI2lGl41XWxJaRCY9iPqL+lx48aN12/AUqFUyPxD4by7Ct6s
- oUfJFbjlnYVb7u+moTsr1PKuvgunXUdBPdLKql6vgQ9WRRfLgxLgWnARHmwNu+nq4br3uFGmZNbBITQT
- 1qvVcGHCeDkDoZpU2zW/AfLv4zE/Um26gQVRiYs+Xr/5Kk3vVLrj+RfgqqnDlPRjRnFWF7N1HYfgnBJs
- K6mEZUA4HON03NyBUO2pBQ2YWtwEO1UG5qyNu+IbnfSNKGd4wX41gyyXhGHijkNwO3gJU7JOwCX1CFx2
- /mKYlMOwV6YJy2Bv1Qk8fPhQ4Nh5PRSpOtis2Q7n5J/5Y/thPagX9XRMLgNpkClCAkVZ0oI9HpPlQVvg
- kn0Srvt+E4pOSio1ysT4/ZAHxmGd9ie0dt7hbg8i8w/B8rtIjI/ScmsMxCW1oq83M0NLijSJ8gyHzC/k
- yzEKVYVdaAYmZ5+Cy+5KOCcWwSnhgBEKYBe8U7jrqYdq8eDBA6OUnj6Hr9VZwmxMjM/n1HsO9SYNpMU2
- hM0s26rQlkWUOzgsFKqt9Dx2TC7HpPRqOCUWwzFWx8gzyPiILMiXx2L13kI0td7kCjbEptxSWC2NxDi2
- 1nm1n6ODE/tOTUqvgWNSGazYLJNWUXZf0L5kLFsyTmy9U7JjdA4mMHHGsF2bJNz1pNJjuH///iuRW3Ma
- c+PSYLMqERPC93L79OMYk8u0lQga5SvYkvJVrhLlMwOLVW0Oqj2YwNyOY5/jlOkGcdiYCvmyaARlHsC5
- K9e5O8nh0NzegbVZRbBi3w17thR5PZ9BGpkRB7acxvgp9aJ8YQbgEJwiiBM+DWCzMkG46wlFFbh3795r
- JaW8mu1QQ2EdFM/t/Qym0X7DDmZg/WNRfp8B+7XbDWK3OhFytl4D9+Tj+MXLXAGvg8bmVgRlHBBmg3ry
- tBB2a9SDDbznF9Jj+0MC7FZuHYI1+9LQXY8pOMzdt78JthQeEXpaB8ZyNZHWdxWqLlG+8ARSj10aBVv2
- FOrHhgm3Yr+gi3fk4MiZC+jq6jIrvzbosTw9X9BAWgZqI62DfhfGLAmbTMtIHhABa3ZxLJtCWo+0H7l7
- 9+6IQhpIC2kibaSRtI72D3lflN8Xo/3D3emlm6am/weDdoS8tyVzQhr637cZt0kjaRVlGw8afPv27RHF
- pG31cAzUlR2EbnuUJCiXV4OHyQY6OzslkceE4UQQoA82DsuhXF4NHiYbePFl2xB56ki0FSySBOXyavAw
- 2cCtW7ckkctEtegWSIJyeTV4mGygvb1dErmJEbiqnS8JyuXV4GGygYF/dRgjh4nSZ34lCcrl1eBhVgMN
- u76QhFkNtLW1SSJnWzjqk+dJgnJ5NXiYbKC1tVUS+5ioUwmfS4JyeTV4mGyA/iWTwr6tYaiL+UwSlMur
- wcOsBqpCP5WEWQ20tLRIQstEHd4wRxKUy6vBw2QDzc3NktAmhKJ01SxJUC6vBg+zGigMnC4JsxnQaDQ9
- TU1NuH79+kvJZqL2B3hLgnJ5NV6EepMGUc7wgw1W19bWcou/CInK9fWQhFQDdXV1NAMv/0vRULDBk7Oz
- s4VCer0e165dM0j2FhW0C90kQbm8Gv1QL+pJvRmDXx2HG1qt1p0ZSWF00Xo0hDpiEyIDv5UE5fJqDIB6
- pVBvUcbb+I/GqFH/Ai0diS5mkMGBAAAAAElFTkSuQmCC
+ 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
+ VEPFEv0j3g3A94woz3mmbBnHX//Z
-
+
+ 133, 17
+
+
+ 209, 17
+
+
+ 421, 17
+
+
+ 555, 17
+
+
+ 17, 17
+
+
+ 894, 17
+
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
@@ -601,32 +574,127 @@
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
-
+
+ 999, 17
+
+
- iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAM9SURBVEhL7dTrU0xhHAfww7htWmIlRSUiacbf4BVvvGDM
- MORaRjEYsu2E0iS3WKKLbrIIG9lNi213H7nMItnOnm1ach9D1O7Wbp1okfH1nC3NYMQ4r8z4znzenfl9
- n9885xzmf36b/Pz8ULVaXcpxXA/Lsl6LxcILbDZbj8lk4gsLCxf3Pfp3ocNLHA4HfhWj0dgil8snCM9m
- ZWVJB5Kenj6KGuIb/C06nY54PB50dXXB7Xb3a2trg9frhdPphMFg6DabzR3fthPcq7vP041599NHPP+E
- 5TueNHXZ7fbPzZy1xaJWze4bzzBarZYIG/A8j/b29u+4XC50d3f37fJzhIOcqLVAWcsit45DAduIYs6O
- +JyS5pEL18T0F7S2tqKzs9N36h8JJT/iOzz44HiL+cVVYCoaMJQ8w/DqRximb8Iw42MEcTxCign8l6ck
- +gpeN7/Bx/fvgE/0tJ/e/x7Nqwc2BB++gojaL4ipdmKmwdVL78As8wfE3PBApsgjzAWNhnjaXHC3tiD3
- ag0UlQRpuhrsHMD+6ltYV1qO0IIbmGFyIlr3nHrRb6b+NaI0jyFLOkIYA71kr+MNEk7rwRwzY/BFO4aU
- cwMapGYhqWjEDP0rRGuaEFXxAFEXH/aLrnqG6eUNCNiSTZh7NUbSyNYjXKlFUOVLTCvjEHnG9ofqEVlG
- nWG/M/18I6aerEPAJmVvgbXegil7ziH4xH1MOW6mbosSSYdHFN1EwPr9hKmlBTYrbc48hcD86wjPM4k2
- ufA6wo5W04I9hLl9zUg4lsXU9OOQKS8jVHlJtLDsK5h0QANpglBgNBD6RSJiewFGZ6gRknlWtIl7yxGc
- UQbp2oy+AqsV4Yoc+KeUIGiHeBPSSjF+WxGk8WlCwVVSb+UQnnQIIzcfwXh5jmhBijwEbj0KaRwtEC6Z
- tTUgZMM+SBL3YdzGA6IFbjqIcRuyIF25jTA1VdqSu3X09Uw6iKGrdmJsQqZossTdGLN2F/xXKAhzqqgo
- rFJ99uTc1ENgFm1FwOpU8eJS6fAUSGKT1/v+qCqVasS8lMw5zILNKr+l8juSZYprklgF+Rt+sYqbfsuS
- b0mWyNfJ4pKlvoJ/OAzzFclFUL2L/h02AAAAAElFTkSuQmCC
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADc
+ GQAAAk1TRnQBSQFMAgEBAwEAARgBAAEYAQABMAEAATABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ AwABwAMAATADAAEBAQABCAYAASQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+ AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+ AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+ AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+ AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+ AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+ ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+ AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+ AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+ AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+ AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+ AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+ AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+ AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+ ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+ AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+ AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+ AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+ ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+ Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+ AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+ AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+ AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+ AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+ AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/2sAHP8JAAH/SAAB/wL0
+ AfME8AHzAvQB/0MAAf8B8wG6HKwBugHzAf9KAAH/AfIBBwG0AYsMawGLAfcBvAHzAf8aAAH0AfABBwHv
+ ApIB7wEHAfAB9BgAAf8B8wGyIKwBsgHzAf9GAAHzAfcWawG7AfQVAAH/AfEB9wHvAQcCvALxArwBBwHv
+ AfcB8QH/FAAB/wEJJKwBCQH/QwAB9AG7GmsBuwH0EgAB8QGSAe8B8ArxAfAB7wGSAfESAAH/AQkmrAEJ
+ Af9BAAHzAmsaigJrAfQPAAH/AfAB7wHwDvEB8AHvAfAB/w8AAf8B8yisAfMB/0AAAfcBaxyKAWsBuw4A
+ AfQBvAEHBPEB8AH3AZABiwJrAosBkQG8BPEBBwG8AfQOAAH/KqwB/z8AAfQBax4GAWsB/wwAAf8BvAEH
+ BPEBkQprAZEBvAPxAQcBvAH/DQAB8yqsAfM/AAHzAWseigFrAfMMAAHwAQcD8QG7A2sCigGLAvMBiwOK
+ AmsBkQPxAQcB8A0AAboqrAG6PwAB9AFrHooBawHzCwAB8QHvA/EB9wFrAYoEBgG7Av8BtAQGAYoBawGR
+ A/EB7wHxCwAB/wGyBqwXsw6sAf8+AAH/AWseigFrAfQKAAH/AZIB8ALxAe8BawEGBYoBkALzAYsFigEG
+ AWsBkQLxAfABkgH/CgAB/wesAbMBZgINGWYBswesAf8/AAGQHooBiwsAAfEBBwPxAWsRBgGKAWsBvALx
+ AQcB8QoAAf8GrAGzAa0BDQEQBQ0GQwpmBUMBrQGzBqwB/z0AAf8B9AEHAYoBkBmKAYsBkAEGAbwKAAH/
+ AZID8QGRE4oBBgGRA/EBkgH/CQAB/wasAbMBrQkNBUMIZgVDAQ0BrQGzBqwB/zgAAf8BGwEaAXkBUgMr
+ AWsCkBeLApABgQGRCwAB8wHvAvIB8QFrCYoCawmKAWsBvALyAe8B8wkAAf8GrAGzAa0NDQFDBWYCQwFm
+ AkMEDQGtAbMGrAH/NgAB8wGZAisBMQUyAUsBawKzAZATiwKQAbMBkAFrAfILAAHwAQcC8gHvAYoGiwGK
+ AYsBuwK8AbsBiwGKBosBigGRAvIBBwHwCQAB/wasArMODQJDA2YEQwUNArMGrAH/NAAB9AGZASsKMgFL
+ AWsBkAKzEZADswGKAWsB8gwAAQcB8ALyAZEBigWQAYoBiwG8BPEBvAGLAYoFkAGKAYsC8gHwAQcJAAH/
+ BqwCsw8NBkMHDQKzBqwB/zMAAfMBKwExDDIBTAHqAYoFswmQBbMBgQFrAQcB/w0AAfcB8QLyAosBswG6
+ AbMCkAEGAe8G8gHvAQYCkAGzAboBswGQAWsC8gHxAfcJAAH/BqwCswINAmUEDQRmAWUHZgENAmYBZQEN
+ ARACDQKzBqwB/zMAAXkQMgFMAeoBawGKAYEBkAGzB5ABswGQAbMBigFrAZEBvAH/DwABkgPyAYsBkAH0
+ Af8BGQKzAWsB8AbyAfEBawKzAfQB/wEZAbMBawHwAvIBkgkAAf8GrAKzAQ0BQwGzAdsBiwINAWwBugHb
+ AbMDiwG0A7oB2wG0AUMBswHbAbMEDQKzBqwB/zIAAf8BKxIyATEBTAFKAQYJswGKAbsB8wH/EgABkgPy
+ AYsBswH0Af8BGQKzAWsB8gbzAfIBawKzAfQB/wEZAbMBawHwAvIBkgkAAf8GrAKzAg0BtAHbAbMCDQGz
+ A9sCkAGLAbQF2wFsAYsC2wFmAg8BDQKzBqwB/zIAAfMBKxQyAUoBigmzAYoBuxQAAfcB8gHzAfIBiwGQ
+ AbMBugOzAYoBuwH/BPMB/wG7AYoDswG6ArMBawHyAfMB8gH3CQAB/wasArMCDQGQAtsBZgENAbQC2wG0
+ A4sBkAO0AtsBiwFsAtsBiwMPArMGrAH/MgAB9AErFDIBbAuzAWsB/xMAAQcB8AH0AfIBkQGQBrMBiwH0
+ BP8B9AGLAZAGswGLAfIB9AHwAQcJAAH/BqwCswEPAQ0BbALbAbQBiwLbAbMHDQFmAtsBtAFmAtsBkAEK
+ Ag8CswasAf8yAAH/ASsTMgFSAWsLswGKAfMTAAHwAbwB9AHzAbsBigazAYoBiwG7AvMBuwGLAYoGswGB
+ AZEB8wH0AbwB8AkAAf8GrAKzAQ8BDQFmBtsBiwYNAYsD2wGzAQ0BtAHbAbQBDQIPArMGrAH/MwABUhMy
+ AVEBiguzAYoBuxMAAfMB7wH/AfMB8gFrAbMBuQazAYoCawGKCLMBigHwAfMB9AHvAfMJAAH/BqwCswEP
+ Ag0BugXbAbQBZgQNAZAD2wG0AWYBDQGRAtsBZgEKAQ8CswasAf8zAAEaATESMgFKAZAMswGREwAB/wGS
+ AfQB/wHzAbQBigHaAbkPswHaAbMBkQHzAf8B9AGSAf8JAAH/BqwBuQGzAg8BDQG0AtsBtATbAZABDQFm
+ AbQD2wGLAQ0BDwEKAYsC2wFsAQ4BDwGzAbkGrAH/MwAB/wErATIBUxAyAWwNswFrAf8TAAHxAbwB/wLz
+ AWsBswHaDrkB2gG5AWsB8AHzAf8BvAHxCgAB/wasAboBswEPAQ4BCgGLAtsBZgFsAbQD2wFsAboC2wG6
+ AWwEDQFmAtsBkAEKAQ8BswG6BqwB/zQAARoBKwJZD1MBbA2zAQYB9BMAAf8BkgH0Af8B8wG7AWsC2gW5
+ AvQFuQLaAYoB9wHzAf8B9AGSAf8KAAH/BqwBugGzAQ8CCgFsAtsBiwENAQ8BiwLbAZABugHbAboBFQYN
+ AboB2wG0AQ0BDwGzAboGrAH/NQABGgErATICWQ1TAWwNswGKAfMUAAGSAQcC/wHzAbUBawG5AtoCuQHc
+ Av8B3AK5A9oBigGRAfMC/wEHAZILAAH/BqwBugGzAQ4BCgEPAUMD2wO6AtsCtALbBLoDiwG0AtsBDQEP
+ AbMBugasAf82AAH0AZkBMQVZCVMBbA2zAYoB8hQAAfcB7wG8Av8B8wG7AWsBkAPaAdsC9ATaAbMBawH3
+ AfMC/wG8Ae8BkgsAAf8GrAG6AbMBDgEKAQ4BDQG6BdwC2wG6AZEB3AHbA9wB4QG0ApEBtALcAWwBCgGz
+ AboGrAH/OAAB9AGZASsBMQEyAVMBWQdTAVkBbAGzDLkBigHyFAABkgHxAe8B8QL/AvMBtAFrAZACuQLf
+ ArkBswGKAZEB8QHzAv8B8QHvAfEBkgsAAf8GrAG6AbMBDgMKAZEB3AbbAbQBZgG6BNsB3AG0A5EBugHc
+ AYsBDQGzAboGrAH/OgAB/wHzARoBMQlTAWwBswy5AYoB9BQAAZIB8gHwAe8BvAL/AfQC8wG7AZEBiwJr
+ AYsBkAG1AfIB8wH0Av8BvAHvAfAB8gGSCwAB/wasAboBswEOAgoCDQdDAw0CQwNmAUMBDQFDAQ0CQwIN
+ AbMBugasAf88AAGZATEJUwFLAZAB2gm5AdoBuQFrAf8UAAGSAvIB8QHvAQcB9AL/AfQI8wH0Av8B9AEH
+ Ae8B8QLyAZILAAH/BqwBugGzAg4BCgcOAQ8CDQIPAQ4FDQEPAQ0BDwEQAQ8CCgGzAboGrAH/PAABUgpT
+ AVIBawLaCLkB2gGzAbsVAAGSBPICkgEHAfQK/wH0AQcCkgTyAZILAAH/BqwBugGzCgoCDwINAg4BDwQN
+ AQ8CDgEPAQoCDgGzAboGrAH/OwAB9gExC1kBSgGBA9oEuQPaAYoB9BUAAZIB8gHzAvIBkgH/AfEB9wHv
+ AbwC8wL/AvMBvAHvAfcB8QH/AZIC8gHzAfIBkgsAAf8GrAG6AbkBCgIOBwoBDgEPAQ0BDwIKAQ4BDwIN
+ Ag8BDgEKAQ4CCgEOAbkBugasAf87AAEbATELWQFSAewBgQHaAd8E2gHfAbkBBgG8FgAB7wHxAfMC8gHv
+ AfQCAAH0AfABBwHvApIB7wEHAfAB9AIAAfQB7wLyAfMB8QHvCwAB/wasAdsBuQEKAQ4BCgUOAQoBDgMP
+ AQ4BCgEOAQoBDgIPAQ0BDwMKAw4BuQHbBqwB/zsAAZkBUgtZAVMBdAG8AYsBBgGQAbkBswGBAQYBkQHy
+ FwABBwHwAfQC8gEHAfIOAAHyAQcC8gH0AfABBwsAAf8GrAK6AQ4BAAYKAQ4BCgMOAQoBDgIKAQ4CCgIO
+ AQoDDgIAAroGrAH/OwABdAFTDFkBKwH/AQAB8wHwAbsBvAHzAf8ZAAHxAQcB/wLzArwOAAK8AvMB/wEH
+ AfELAAH/BqwBswHbAWwaDQFsAdsBswasAf87AAFSDVkBMQH/IAAB9AHvAf8B9AHzAfIB7wHzDAAB8wHv
+ AfIB8wH0Af8B7wH0CwAB/wesAbkB2xq6AdsBuQesAf87AAFSDVkBMQHzIQABBwHyAf8C8wHwAfcB9AoA
+ AfQB9wHwAvMB/wHyAQcMAAH/CKwBshqzAbIIrAH/OwABUg1ZATEBGyEAAfMB7wL/AvMBvAH3AfMIAAHz
+ AfcBvALzAv8B7wHzDAAB/yysAf87AAFSDVkBMQEbIgAC8AH/AfQC8wHwAe8BvAHyAfQC/wH0AfIBvAHv
+ AfAC8wH0Af8C8A4AAboqrAG6PAABeQFTDFkBMQH0IgAB9AGSAfMB/wH0A/MB8AEHAe8CkgHvAQcB8APz
+ AfQB/wHzAZIB9A4AAfMqrAHzPAABGgFSDFkBKwH/IwAB8gH3AfIC/wzzAv8B8gH3AfIPAAH/KqwB/zwA
+ Af8BMQxZAZklAAHzAZIB8AP/CPMD/wHwAZIB8xAAAf8B8yisAfMB/z0AARoBUgFeCVkBMQH0JgAB9AHw
+ Ae8B8gT/AvQE/wHyAe8B8AH0EgAB/wEJJqwBCQH/PwABmQFSAV4G5QFZATEBGikAAfMBBwH3AbwB8gHz
+ Av8B8wHyAbwB9wEHAfMVAAH/AQkkrAEJAf9BAAEaAVIBMQFSAVkBWAFSATEBdAEbLAAB/wHxAQcB7wKS
+ Ae8BBwHxAf8YAAH/AfMBsiCsAbIB8wH/RAAB8wEaAZkBGgHzAf9SAAH/AfMBuxusAbMBuwHzAf+hABz/
+ OgABQgFNAT4HAAE+AwABKAMAAcADAAEwAwABAQEAAQEFAAGAAQQWAAP/AQAN/wHAAgABAwH+BgAD/wEA
+ AQ8H/wH+BAABfwYAAv8B4AIAAX8C/wHgAQcC/wH4BAABHwYAAv8BgAIAAR8C/wIAAv8B8AQAAQ8GAAH/
+ Af4DAAEHAf8B/gIAAX8B/wHgBAABBwYAAf8B/AMAAQMB/wH4AgABHwH/AcAEAAEDBgAB/wH8AwABAwH/
+ AfACAAEPAf8BwAQAAQMGAAH/AfgDAAEBAf8B4AIAAQcB/wHABAABAwYAAf8B+AMAAQEB/wHgAgABBwH/
+ AcAEAAEDBgAB/wH4AwABAQH/AcACAAEDAf8BgAQAAQEGAAH/AfgDAAEBAf8BgAIAAQEB/wGABAABAQYA
+ Af8B/AMAAQMB/wGAAgABAQH/AYAEAAEBBgAB/wHwAwABAwH/BAAB/wGABAABAQYAAf4EAAEHAf8EAAH/
+ AYAEAAEBBgAB+AQAAQcB/wQAAf8BgAQAAQEGAAHgBAABDwH/BAAB/wGABAABAQYAAcAEAAEfAf8EAAH/
+ AYAEAAEBBgABwAQAAX8B/wQAAf8BgAQAAQEGAAGAAwABAwL/BAAB/wGABAABAQYAAYADAAEPAv8EAAH/
+ AYAEAAEBBgABgAMAAQcC/wQAAf8BgAQAAQEGAAGAAwABBwL/BAAB/wGABAABAQYAAcADAAEHAv8EAAH/
+ AYAEAAEBBgABwAMAAQcC/wQAAf8BgAQAAQEGAAHAAwABAwL/AYACAAEBAf8BgAQAAQEGAAHgAwABAwL/
+ AYACAAEBAf8BgAQAAQEGAAHwAwABAwL/AcACAAEDAf8BgAQAAQEGAAH4AwABAwL/AcACAAEDAf8BgAQA
+ AQEGAAH+AwABAwL/AcACAAEDAf8BgAQAAQEGAAH/AYACAAEDAv8BwAIAAQMB/wGABAABAQYAAf8B4AIA
+ AQMC/wHAAgABAwH/AYAEAAEBBgAB/wHgAgABBwL/AcACAAEDAf8BgAQAAQEGAAH/AcACAAEHAv8BwAIA
+ AQMB/wGABAABAQYAAf8BwAIAAQ8C/wHAAWABBgEDAf8BgAQAAQEGAAH/AcACAAEfAv8BwAF/Af4BAwH/
+ AYAEAAEBBgAB/wHAAQABIAF/Av8BwAF/Af4BAwH/AYAEAAEBBgAB/wHAAQABPwP/AcABPwH8AQMB/wGA
+ BAABAQYAAf8BwAEAAT8D/wHgAR8B+AEHAf8BgAQAAQEGAAH/AcABAAE/A/8B4AEPAfABBwH/AYAEAAEB
+ BgAB/wHAAQABPwP/AfACAAEPAf8BwAQAAQMGAAH/AcABAAE/A/8B8AIAAQ8B/wHABAABAwYAAf8BwAEA
+ AT8D/wH4AgABHwH/AcAEAAEDBgAB/wHAAQABfwP/AfwCAAE/Af8BwAQAAQMGAAH/AeABAAF/A/8B/gIA
+ AX8B/wHgBAABBwYAAf8B8AEABf8BgAEBAv8B8AQAAQ8GAAH/AfgBAQX/AeABBwL/AfgEAAEfBgAB/wH+
+ AQcJ/wH+BAABfwYADf8BwAIAAQMB/wYACw==
-
- 555, 17
-
-
- 17, 17
-
55
diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs
index 02f5630..882bd21 100644
--- a/Properties/Resources.Designer.cs
+++ b/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace SCJMapper_V2.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@@ -105,7 +105,7 @@ namespace SCJMapper_V2.Properties {
/// </actiongroup>
///
/// <ActivationModes >
- /// <ActivationMode name="tap" onPres [rest of string was truncated]";.
+ /// <ActivationMode name="tap" onPress= [rest of string was truncated]";.
///
internal static string defaultProfile {
get {
@@ -113,6 +113,26 @@ namespace SCJMapper_V2.Properties {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Folder {
+ get {
+ object obj = ResourceManager.GetObject("Folder", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Home {
+ get {
+ object obj = ResourceManager.GetObject("Home", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -123,6 +143,46 @@ namespace SCJMapper_V2.Properties {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Info {
+ get {
+ object obj = ResourceManager.GetObject("Info", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap LArrow {
+ get {
+ object obj = ResourceManager.GetObject("LArrow", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Load {
+ get {
+ object obj = ResourceManager.GetObject("Load", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Monitor {
+ get {
+ object obj = ResourceManager.GetObject("Monitor", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -133,6 +193,46 @@ namespace SCJMapper_V2.Properties {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap NPad {
+ get {
+ object obj = ResourceManager.GetObject("NPad", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap RArrow {
+ get {
+ object obj = ResourceManager.GetObject("RArrow", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap RSI {
+ get {
+ object obj = ResourceManager.GetObject("RSI", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Settings {
+ get {
+ object obj = ResourceManager.GetObject("Settings", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
diff --git a/Properties/Resources.resx b/Properties/Resources.resx
index 17ecf3c..4337931 100644
--- a/Properties/Resources.resx
+++ b/Properties/Resources.resx
@@ -118,25 +118,55 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\graphics\Load.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\graphics\hornet.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\defaultprofile.xml;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
+
+ ..\graphics\aurora.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\graphics\Cassini_Logo2_s.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\graphics\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\graphics\LArrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\graphics\YPR.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\graphics\aurora.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\graphics\Info.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\graphics\Notes.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\graphics\RArrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\graphics\Cassini_Logo2_s.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\defaultprofile.xml;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
+
+
+ ..\graphics\Monitor.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\graphics\RSI.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\graphics\300i.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\graphics\Home.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\graphics\Settings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\graphics\NPad.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/ReadMe.txt b/ReadMe.txt
index c3e664b..d8300f0 100644
--- a/ReadMe.txt
+++ b/ReadMe.txt
@@ -42,7 +42,11 @@ cassini@burri-web.org
Changelog:
V 2.34 - BETA Build 68
- improvement - complete rework of XML defaultProfile/mapping parsing
+- add - provide CIG mappings from game assets
+- update - unclutter GUI, allow more scaling
- internal cleanup - consistent type naming, others
+- fix - overwritten profile actions removed in Assignment Tab
+- update - doc SCJMapper_QGuide V2.34beta.pdf
V 2.33 - BETA Build 67
- update for SC 3.0.0 Alpha public
- fix - finding SC game folder - may work automatically for 3.0 Alpha else define it in Settings
diff --git a/SC/DProfileReader.cs b/SC/DProfileReader.cs
index c3cf6c3..44f5c01 100644
--- a/SC/DProfileReader.cs
+++ b/SC/DProfileReader.cs
@@ -384,7 +384,7 @@ namespace SCJMapper_V2.SC
where ( x.Name == "modifiers" )
select x;
foreach ( XElement modifier in modifiers ) {
- ValidContent &= Modifiers.Instance.FromXML( modifier );
+ ValidContent &= Modifiers.Instance.FromXML( modifier, true );
}
IEnumerable actionmaps = from x in el.Elements( )
diff --git a/SC/SCMappings.cs b/SC/SCMappings.cs
index 7701b0a..b03fc65 100644
--- a/SC/SCMappings.cs
+++ b/SC/SCMappings.cs
@@ -14,11 +14,11 @@ namespace SCJMapper_V2.SC
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod( ).DeclaringType );
- public const string c_MapStartsWith = "layout_"; // we only allow those mapping names
- private const string c_UserMapStartsWith = c_MapStartsWith + "my_"; // we only allow those mapping names
+ public const string c_MapStartsWith = "layout_"; // we only allow those mapping names
+ private const string c_UserMapStartsWith = c_MapStartsWith + "my_"; // we only allow those mapping names
static private List m_scMappings = new List( );
-
+ static private SCGameMaps m_scGameMaps = new SCGameMaps( );
///
/// Returns true if a mapping file exists
@@ -52,7 +52,7 @@ namespace SCJMapper_V2.SC
/// True if it is a user mapping name
static public bool IsUserMapping( string mapName )
{
- return mapName.StartsWith( c_UserMapStartsWith );
+ return Path.GetFileNameWithoutExtension( mapName ).StartsWith( c_UserMapStartsWith );
}
///
@@ -69,11 +69,14 @@ namespace SCJMapper_V2.SC
}
- static public void UpdateMappingNames( )
+ static public void UpdateMappingNames()
{
if ( Directory.Exists( SCPath.SCClientMappingPath ) ) {
m_scMappings.Clear( );
- m_scMappings = ( List )Directory.EnumerateFiles( SCPath.SCClientMappingPath ).ToList( );
+ m_scMappings = (List)Directory.EnumerateFiles( SCPath.SCClientMappingPath ).ToList( );
+ foreach ( KeyValuePair kv in m_scGameMaps ) {
+ m_scMappings.Insert( 0, kv.Key ); // insert before others
+ }
}
else {
log.Warn( "UpdateMappingNames - cannot find SC Mapping directory" );
@@ -87,8 +90,7 @@ namespace SCJMapper_V2.SC
/// A list of filenames - can be empty
static public List MappingNames
{
- get
- {
+ get {
log.Debug( "MappingNames - Entry" );
if ( m_scMappings.Count == 0 ) {
UpdateMappingNames( );
@@ -98,20 +100,27 @@ namespace SCJMapper_V2.SC
}
///
- /// Returns the sought default profile as string from GameData.pak
+ /// Returns the sought mapping
///
- /// The filename of the profile to be extracted
+ /// The filename of the profile to be extracted
/// A string containing the file contents
static public string Mapping( string mappingName )
{
string retVal = "";
- string mFile = Path.Combine( SCPath.SCClientMappingPath, ( mappingName + ".xml" ) );
- if ( File.Exists( mFile ) ) {
- using ( StreamReader sr = new StreamReader( mFile ) ) {
- retVal = sr.ReadToEnd( );
+ if ( IsUserMapping( mappingName ) ) {
+ string mFile = Path.Combine( SCPath.SCClientMappingPath, ( mappingName + ".xml" ) );
+ if ( File.Exists( mFile ) ) {
+ using ( StreamReader sr = new StreamReader( mFile ) ) {
+ retVal = sr.ReadToEnd( );
+ }
+ }
+ }
+ else {
+ // game mapping
+ if ( m_scGameMaps.ContainsKey( mappingName ) ) {
+ retVal = m_scGameMaps[mappingName];
}
}
-
return retVal;
}
diff --git a/SC/SCgameMaps.cs b/SC/SCgameMaps.cs
new file mode 100644
index 0000000..73e33d5
--- /dev/null
+++ b/SC/SCgameMaps.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SCJMapper_V2.CryXMLlib;
+using SCJMapper_V2.p4kFile;
+
+namespace SCJMapper_V2.SC
+{
+ ///
+ /// Maintains the game mappings contained in the p4k file
+ ///
+ public class SCGameMaps: SortedList
+ {
+ private static readonly log4net.ILog log = log4net.LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod( ).DeclaringType );
+
+ public SCGameMaps()
+ {
+ if ( File.Exists( SCPath.SCData_p4k ) ) {
+ try {
+ var PD = new p4kDirectory( );
+ IList fileList = PD.ScanDirectoryContaining( SCPath.SCData_p4k, @"Data\Libs\Config\Mappings\layout_" );
+
+ foreach (p4kFile.p4kFile file in fileList ) {
+ byte[] fContent = PD.GetFile( SCPath.SCData_p4k, file );
+
+ // use the binary XML reader
+ CryXmlNodeRef ROOT = null;
+ CryXmlBinReader.EResult readResult = CryXmlBinReader.EResult.Error;
+ CryXmlBinReader cbr = new CryXmlBinReader( );
+ ROOT = cbr.LoadFromBuffer( fContent, out readResult );
+ if ( readResult == CryXmlBinReader.EResult.Success ) {
+ XmlTree tree = new XmlTree( );
+ tree.BuildXML( ROOT );
+ this.Add( Path.GetFileNameWithoutExtension(file.Filename), tree.XML_string );
+ }
+ else {
+ log.ErrorFormat( "SCGameMaps - Error in CryXmlBinReader: {0}", cbr.GetErrorDescription( ) );
+ }
+ }
+ }
+ catch ( Exception ex ) {
+ log.Error( "SCGameMaps - Unexpected ", ex );
+ }
+
+ }
+
+ }
+
+
+ }
+}
diff --git a/SC/p4kFile/p4kDirectory.cs b/SC/p4kFile/p4kDirectory.cs
index 922b5a8..e16b01e 100644
--- a/SC/p4kFile/p4kDirectory.cs
+++ b/SC/p4kFile/p4kDirectory.cs
@@ -65,11 +65,10 @@ namespace SCJMapper_V2.p4kFile
private p4kZ64EndOfCentralDirRecord m_z64EndOfCentralDirRecord = null;
///
- /// Scans directory entries and extract a file (string.EndsWith is used)
+ /// Scans directory entries and return the a file descriptor (string.EndsWith is used)
///
/// The p4k file
/// The filename to look for
- /// A BackgroundWorker object
public p4kFile ScanDirectoryFor( string p4kFilename, string filename )
{
if ( !File.Exists( p4kFilename ) ) return null;
@@ -105,5 +104,45 @@ namespace SCJMapper_V2.p4kFile
}
+ ///
+ /// Scans directory entries and return the a list of matching file descriptors (string.Contains is used)
+ ///
+ /// The p4k file
+ /// The filename part to look for
+ public IList ScanDirectoryContaining( string p4kFilename, string filenamepart )
+ {
+ if ( !File.Exists( p4kFilename ) ) return null;
+
+ List fileList = new List( );
+
+ using ( p4kRecReader reader = new p4kRecReader( p4kFilename ) ) {
+ // work from the end of the file
+ reader.GotoLastPage( );
+ m_endOfCentralDirRecord = new p4kEndOfCentralDirRecord( reader );
+
+ // position first
+ reader.Seek( m_endOfCentralDirRecord.RecordOffset - p4kRecReader.PageSize );
+ m_z64EndOfCentralDirLocator = new p4kZ64EndOfCentralDirLocator( reader );
+
+ // for the next the position should be found already - seek it
+ reader.Seek( m_z64EndOfCentralDirLocator.Z64EndOfCentralDir );
+ m_z64EndOfCentralDirRecord = new p4kZ64EndOfCentralDirRecord( reader );
+ // now we should have the start of the directory entries...
+
+ // position first
+ reader.Seek( m_z64EndOfCentralDirRecord.Z64StartOfCentralDir );
+ // loop all file - as per dir reporting
+ for ( long i = 0; i < m_z64EndOfCentralDirRecord.NumberOfEntries; i++ ) {
+ p4kDirectoryEntry de = new p4kDirectoryEntry( reader );
+ if ( !string.IsNullOrEmpty( filenamepart ) && de.Filename.ToLower( ).Contains( filenamepart.ToLower( ) ) ) {
+ var p = new p4kFile( de ); // FOUND
+ fileList.Add( p );
+ }
+ }
+ }
+ return fileList;
+ }
+
+
}
}
diff --git a/SCJMapper-V2.csproj b/SCJMapper-V2.csproj
index 30b37b4..ddf09d8 100644
--- a/SCJMapper-V2.csproj
+++ b/SCJMapper-V2.csproj
@@ -155,6 +155,7 @@
+
DS_ActionMaps.xsd
@@ -348,6 +349,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/actions/ActionCls.cs b/actions/ActionCls.cs
index eb187ae..33d18e5 100644
--- a/actions/ActionCls.cs
+++ b/actions/ActionCls.cs
@@ -252,8 +252,15 @@ namespace SCJMapper_V2.Actions
if ( string.IsNullOrEmpty( input ) ) input = "";
actModeName = (string)bindingNode.Attribute( "ActivationMode" );
multi = (string)bindingNode.Attribute( "multiTap" );
+ string device = (string)bindingNode.Attribute( "device" );
//process
input = DeviceCls.fromXML( input ); // move from external to internal blend
+ if ( !string.IsNullOrEmpty( device ) ) {
+ // AC1 style - need to reformat mouse and keyboard according to AC2 style now
+ if ( KeyboardCls.IsDeviceClass( device ) ) input = KeyboardCls.FromAC1( input );
+ else if ( MouseCls.IsDeviceClass( device ) ) input = MouseCls.FromAC1( input );
+ else if ( GamepadCls.IsDeviceClass( device ) ) input = GamepadCls.FromAC1( input );
+ }
Device = Act.DeviceClassFromInput( input );
ActivationMode actMode = null;
if ( !string.IsNullOrEmpty( actModeName ) ) {
diff --git a/actions/ActionMapsCls.cs b/actions/ActionMapsCls.cs
index 7921a70..3660ff6 100644
--- a/actions/ActionMapsCls.cs
+++ b/actions/ActionMapsCls.cs
@@ -342,38 +342,39 @@ namespace SCJMapper_V2.Actions
using ( XmlReader reader = XmlReader.Create( new StringReader( xml ), settings ) ) {
reader.MoveToContent( );
- // read the header element
- if ( reader.Name == "ActionMaps" ) {
- if ( reader.HasAttributes ) {
- version = reader["version"];
- if ( version == "0" ) version = ACM_VERSION; // update from legacy to actual version
-
- // get the joystick mapping if there is one
- for ( int i = 0; i < JoystickCls.JSnum_MAX; i++ ) {
- jsN[i] = reader[string.Format( "js{0}", i + 1 )];
- jsNGUID[i] = reader[string.Format( "js{0}G", i + 1 )];
+ if ( reader.EOF ) return false;
+
+ if ( XNode.ReadFrom( reader ) is XElement el ) {
+
+ // read the header element
+ if ( el.Name.LocalName == "ActionMaps" ) {
+ if ( el.HasAttributes ) {
+ version = (string)el.Attribute( "version" );
+ if ( version == "0" ) version = ACM_VERSION; // update from legacy to actual version
+
+ // get the joystick mapping if there is one
+ for ( int i = 0; i < JoystickCls.JSnum_MAX; i++ ) {
+ jsN[i] = (string)el.Attribute( string.Format( "js{0}", i + 1 ) );
+ jsNGUID[i] = (string)el.Attribute( string.Format( "js{0}G", i + 1 ) );
+ }
+ }
+ else {
+ return false;
}
}
- else {
- return false;
- }
- }
- // now handle the js assignment from the map
- // Reset with the found mapping
- DeviceInst.JoystickListRef.ResetJsNAssignment( jsNGUID );
- // Only now create the default optiontree for this map, containing included joysticks and the gamepad
- CreateNewOptions( );
+ // now handle the js assignment from the map
+ // Reset with the found mapping
+ DeviceInst.JoystickListRef.ResetJsNAssignment( jsNGUID );
+ // Only now create the default optiontree for this map, containing included joysticks and the gamepad
+ CreateNewOptions( );
- // now read the CIG content of the map
- reader.MoveToContent( );
- // could be actionmap OR (AC 0.9) deviceoptions OR options
- if ( XNode.ReadFrom( reader ) is XElement el ) {
+ // now read the CIG content of the map
IEnumerable actionmaps = from x in el.Elements( )
- where ( x.Name == "actionmap" )
- select x;
+ where ( x.Name == "actionmap" )
+ select x;
foreach ( XElement actionmap in actionmaps ) {
ActionMapCls acm = new ActionMapCls( );
if ( acm.fromXML( actionmap ) ) {
@@ -403,8 +404,8 @@ namespace SCJMapper_V2.Actions
}
IEnumerable modifiers = from x in el.Elements( )
- where ( x.Name == "modifiers" )
- select x;
+ where ( x.Name == "modifiers" )
+ select x;
foreach ( XElement modifier in modifiers ) {
SC.Modifiers.Instance.FromXML( modifier );
}
diff --git a/actions/ActionTree.cs b/actions/ActionTree.cs
index 65cfea4..8cc812a 100644
--- a/actions/ActionTree.cs
+++ b/actions/ActionTree.cs
@@ -867,13 +867,15 @@ namespace SCJMapper_V2.Actions
matn.Nodes.Add( matin ); // add to master tree
matin.UpdateAction( acc ); UpdateMasterNode( matin );
}
- } catch {
+ }
+ catch {
; // key not found
}
Dirty = true;
} // foreach
}
- } catch ( Exception e ) {
+ }
+ catch ( Exception e ) {
log.DebugFormat( "ReloadTreeView - Exception in loading Treevie\n{0}", e.Message ); // map key not found ??
}
}
@@ -1051,11 +1053,7 @@ namespace SCJMapper_V2.Actions
foreach ( ActionMapCls acm in ActionMaps ) {
// have to search Actions in Maps
foreach ( ActionCls ac in acm ) {
- if ( ac.DefBinding == input ) {
- aMode = string.Format( "{0};{1}", ac.DefActivationMode.Name, ac.DefActivationMode.MultiTap );
- rtf.Write( "profile" ); rtf.WriteTab( ac.Name ); rtf.WriteTab( acm.Name ); rtf.WriteTab( aMode ); rtf.WriteLn( );
- rtf.WriteLn( );
- }
+ bool used = false;
foreach ( ActionCommandCls acc in ac.InputList ) {
if ( acc.DevInput == input ) {
aMode = string.Format( "modified;{0};{1}", acc.ActivationMode.Name, acc.ActivationMode.MultiTap );
@@ -1065,7 +1063,14 @@ namespace SCJMapper_V2.Actions
rtf.Write( "mapped" ); rtf.WriteTab( ac.Name ); rtf.WriteTab( acm.Name ); rtf.WriteTab( aMode.PadRight( 80 ) ); rtf.WriteLn( );
rtf.RHighlightColor = RTF.RTFformatter.ERColor.ERC_Black;
rtf.WriteLn( );
+ used = true;
}
+ used = !string.IsNullOrEmpty( acc.DevInput );
+ }
+ if ( ( !used ) && ac.DefBinding == input ) {
+ aMode = string.Format( "{0};{1}", ac.DefActivationMode.Name, ac.DefActivationMode.MultiTap );
+ rtf.Write( "profile" ); rtf.WriteTab( ac.Name ); rtf.WriteTab( acm.Name ); rtf.WriteTab( aMode ); rtf.WriteLn( );
+ rtf.WriteLn( );
}
}
}
diff --git a/doc/ReadMe.txt b/doc/ReadMe.txt
deleted file mode 100644
index ca7667b..0000000
--- a/doc/ReadMe.txt
+++ /dev/null
@@ -1,289 +0,0 @@
-SC Joystick Mapper V 2.33 - Build 67 BETA
-(c) Cassini, StandardToaster - 23-Dec-2017
-
-Contains 12 files + graphics:
-
-SCJMapper.exe The program (V2.33)
-SCJMapper.exe.config Program config (V2.33) - 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
-SharpDX.dll Managed DirectX Assembly - MUST be in the same folder as the Exe file
-OpenTK.dll Managed OpenGL Assembly - MUST be in the same folder as the Exe file
-OpenTK.GLControl.dll Managed OpenGL Assembly - MUST be in the same folder as the Exe file
-ZstdNet.dll Managed Zip Assembly (v2.33) - MUST be in the same folder as the Exe file
-x64/libzstd.dll Native dll for ZstdNet (v2.33) - MUST be in the same folder as the Exe file
-x86/libzstd.dll Native dll for ZstdNet (v2.33) - MUST be in the same folder as the Exe file
-log4net.dll Managed Logging Assembly - MUST be in the same folder as the Exe file
-log4net.config.OFF Config file for logging - To use it - rename as log4net.config and run the program
- then look for trace.log in the same folder
-SCJMapper_QGuide V2.30beta.pdf Quick Guide
-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.33:
- 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
- 4. extract from SCJMapper exe file (derived from 3.0 build 695052)
-
- --> in order to get always the most current one use 3. (and therefore remove the ones in 1. and 2.)
- --> The one used is shown below the actionTree (Profile: ....)
-
-Read the Guide first RTFM ;-)
-Put all files into one folder and hit SCJMapper.exe to run it
-
-For Updates and information visit:
-https://github.com/SCToolsfactory/SCJMapper-V2
-
-Scanned for viruses before packing...
-cassini@burri-web.org
-
-Changelog:
-V 2.33 - BETA Build 67
-- update for SC 3.0.0 Alpha public
-- fix - finding SC game folder - may work automatically for 3.0 Alpha else define it in Settings
-- add - get the defaultProfile.xml from LIVE\data.p4k file if possible (real game assets)
-- improvement - caching def profile once it is read from disk
-- removed - old SC path and folder locators (SCJM does not longer work with pre 3.0 game)
-- removed - reference to Iconic.Zip DLL (replaced with Zstd)
-- update - defaultProfile.xml as last resort from PTU 3.0-695052 (Dec 18, build)
-V 2.32 - BETA Build 66
-- add - path to defaultProfile can be in USER directory of SC
-- add - some skyboxes from game captures (thanks to Rellim)
-- removed - PTU folders in Settings - no longer used in PTU 3.0
-- fix - finding SC game folder - may work automatically for PTU 3.0 else define it in Settings
-- update - defaultProfile from PTU 3.0-689345 (Dec 15, build)
-V 2.30 - BETA Build 64
-- add - Tab to show all mappings for the current input (Tabbed with XML other Dump items)
-- add - Setting (enabled, disabled -> default) to automatically switch the new tabs - either Input or Dump
-- add - addbind of Mouse input is possible for Keyboard actions - seems to work somehow in the game...
-- improvement - mouse mappings in kbd entries in defaultProfile are collected as mouse now and allowed to map
-- improvement - removed some unneeded tree scans - to speed things up
-- fix - issue with user activations modes while dumping the mapping list
-- fix - issue with loading a map with gamepad mappings and the gamepad is not connected
-- fixes and refacturing while encountered...
-- update - doc SCJMapper_QGuide V2.30beta.pdf
-V 2.29 - BETA Build 63
-- add - Calibrate gamepad thumb axes (press ABXY buttons all together and wait 2 sec - should zero all 4 axes)
-- fix #56 - exception when entering Tuning
-- fix - wrong gamepad action codes (xi1_xi_command instead of xi1_command)
-- fix - some more issues with gamepads
-- fix - options did not properly update when assigning them to another cmd or clearing the entry
-- improvement - Options Dialog selection and deselection of items improved
-- improvement - Tuning Dialog selection and deselection of items improved
-- improvement - Dump Log: added some more interesting captures from the game log file
-- improvement - Win7 / Win10 hidden text/controls with High DPI scaling issues partly resolved
-- update - doc SCJMapper_QGuide V2.29beta.pdf
-V 2.28 - BETA Build 62
-- add #48 - Tune Strafe controls
-- add - "Options ..." dialog to edit all device and control options
-- add - 2 more three 3D scenes for Tuning
-- improvement #49 - Mapping area: Current mapping is shown
-- improvement - Gamepad support improved, Tab is now always the most left one if gamepads are enabled
-- improvement - Dump Log: added some more interesting captures from the game log file
-- improvement - Tuning is now closer to CIG implementation, remove Sensitivity, add Saturation instead
-- fix #51 - accepting multiple actionmaps in default profile (collects only the first one found)
-- fix - bug re- joystick hats (affected No 2..4)
-- fixes and refacturing while encountered...
-- update - fallback default profile from SC 2.6.3 alpha
-- update - doc SCJMapper_QGuide V2.28beta.pdf
-V 2.27 - BETA Build 61
-- add - Collapse/Expand in context menu in Mapping tree
-- improvement - actionmaps are taken from the defaultProfile and will no longer need a program update
-- improvement - rename Blend to Disable
-- fix - an issue in Seetings for actionmap ignore handling
-- update - fallback default profile from SC 2.6.0 alpha
-- update - doc SCJMapper_QGuide V2.27beta.pdf
-V 2.26 - BETA Build 60
-- add - new actionmaps from SC 2.5.0 alpha to choose from in Settings
-- update - fallback default profile from SC 2.5.0 alpha
-V 2.25 - BETA Build 59
-- fix - an issue in parsing options from imported maps
-- add - an option to show the actiontree as CSV list with more/less details (change in Settings)
-- improvement - In table view add possibility to Blend All visible unmapped entries
-V 2.24 - BETA Build 58
-- fix - some trouble in SC path finding
-V 2.23 - BETA Build 57
-- update - Using .Net 4.5.2 Now (seems to handle some scaling issues WinForm apps)
-- update - Try to find the SC path also as StarCitizen\Live (instead of Public) was mentioned for SC2.2.2 onwards ???
-- fix - addbind UNDEF removed when assigned
-- improvement - Issue a infobox if the Client folder cannot be found
- (please submit the complete folder structure of your installation as bug report ...)
-- add - a table display for mappings
-- some internal stuff (namespaces etc)
-- update - doc SCJMapper_QGuide V2.23beta.pdf
-V 2.22 - BETA Build 56
-- fix - try again to fix Win10 scaling issues for some PCs (hidden assignment area)
-- improvement - actions with a profile modifier attached will show underlined in the action tree
-- improvement - less offensive gamepad color mark ...
-- add - a button to dump the used defaultProfile in the right area
-- some internal stuff
-- update - doc SCJMapper_QGuide V2.22beta.pdf
-V 2.21 - BETA Build 55
-- fix #40 added Tab entry in Ctrl. context menu
-- fix - try to fix Win10 scaling issues (hidden assignment area)
-- fix - profile tree color indication also applied when re-reading defaultProfile
-- improvement - enumerates up to 12 devices now (though not tested as I don't have 12 ..)
-- add - use of SCA 2.2 provided defaultProfile (new location and format)
-- add - indication of the used defaultProfile
-- add - built in defaultProfile updated to SCA 2.2
-V 2.19 - BETA Build 52
-- fix #37 improved defaultProfile Parsing
-- fix #38 locale issue - changed App number formatting to US
-- fix #39 changed equal to equals string for kbd entry
-- add - default actionmap to choose from (it is on the ignore list)
-V 2.18 - BETA Build 51
-- fix - layout works now for Win10
-- fix - uses game defaultProfile again
-- fix - keyboard command for all Ctrl keys fixed
-- fix - keyboard command formatting
-- improvement - timeout ~4 sec for kbd modifiers in Joystick Mode (Esc no longer needed)
-- improvement - ActivationMode handling finished
-- improvement - user ActivationMode change indication in mapping tree
-- improvement - Blending adds multiTap=1 to overwrite double taps
-- improvement - Dump List: added ActivationModes; device checkBox applied to list
-- update - doc SCJMapper_QGuide V2.18beta.pdf
-V 2.17 - BETA Build 50
-- update - Updated for SC Alpha 2.0/2.1PTU using new actionmap syntax (no longer use device attribute)
-- update - Complete new QuickReference Guide
-- update - Supports actionmaps with
-- add - ActivationMode - Use Context Menu in ActionTree (or read the manual)
-- add - PTU file usage in Settings
-- add - Prepared JS Modifiers (but SC cannot right now - so it is disabled)
-- add - full mouse settings
-- improvement - some GUI improvements
-- improvement - reworked blending
-- removed - global JS or GP blend options in Settings
-- removed - ignoreversion from Settings
-- NOTE: - Dump Log does not work right now as CIG does no longer list detected controllers in the log file
-- NOTE: - Right now a number of binds behave erratically e.g. addbind does not work at all
- so be aware that your map is not necessarily wrong but the game may just have a bug there
-V 2.16 - BETA Build 49
-- update - Updated for AC Alpha 1.3 defaultProfile does no longer have js1_ or xi_ marks form commands
-- NOTE: - Dump Log does not work right now as CIG does no longer list detected controllers in the log file
-V 2.15 - BETA Build 48
-- update - Updated for AC Alpha 1.1.6 new files locations to find files and mappings
-- NOTE: - Dump Log does not work right now as CIG does no longer list detected controllers in the log file
-V 2.14 - BETA Build 47
-- update - added new defaultProfile (CIG allows some more joystick mappings)
-V 2.13 - BETA Build 46
-- update - added new defaultProfile and actionmaps from AC 1.1.1
-- add - keyboard modifier for joystick (e.g. rctrl+js1_xy) - Press ESC to clear modifiers
-- fix - device checkboxes are now applied after Reassign
-- fix - invert checkbox handling (removed flight invert - use the one in Tuning)
-- fix - Add UICustomization Header and Devices List in any case
-V 2.12 - BETA Build 45
-- improvement - SCJM maintains mappings in USER rather than data folder (AC 1.03)
-- improvement - UICustomization Header for joystick updated (label is the filename minus "layout_") (AC 1.03)
-V 2.11 - BETA Build 44
-- fix - reading of deadzone value (if not a number should not break anymore)
-- fix - writing the proper deadzone XML if first used
-- fix - reading addbind commands from existing mappings will appear now in the tree
-- improvement - better handling of the default mapping name from config file
-- improvement - mapping name added to XML mapping (first line comment extended with mapping name)
-V 2.10 - Build 43 - Production
-- new feature - added Action Tree context menu for Assign, Clear and Blend
-- fix - issue for Js Reassignment if more than one was not yet assigned
-- improvement - Right click in Action Tree selects the items (no need to select and then right click anymore)
-V 2.10 - BETA Build 41
-- fix - issue with null ptr assignment in Device Tuning (review and fix of AC1.0 changes)
-- fix - disabled first joystick tab when gamepad is second or later
-- improvement - added tooltips for device tabs showing Name and GUID
-- improvement - added full 4 number version for beta builds
-V 2.10 - BETA Build 40
-- rework for AC 1.0
-- new feature - add DumpLog to get the AC detected Controller assignments from logfile
-- new feature - add Invert checkboxes for supported option items
-- new feature - context menu in treeview allows to add/delete action sub items (support addbind mapping in XML)
-- update - cannot longer assign cross device mappings (AC 1.0 related - use addbind above)
-- update - new options naming and structure (not compatible with pre 2.10 - delete them in the file and then reload)
-- update - Profile Version to 1
-V 2.8 - BETA Build 37
-- new feature - add checkboxes to show Joystick, Gamepad, Kbd and Mapped Only
-- fix - Blended ones don't reload with proper visual
-V 2.8 - BETA Build 36
-- new feature - add invert for single mappings
-- improvement - initialization and assignment of Joystick devices
-V 2.8 - BETA Build 34
-- new feature - add keyboard input
-- new feature - add gamepad input as xboxpad
-- new feature - add gamepad for tuning
-- new feature - blend single entries with
-- fix - tuning copy to all axis now applies immediately
-- improvement - cleanup of some inconsistencies
-V 2.7 - Build 33
-- fix - if an axis is not mapped the prog will not longer crash (was null ptr exception)
-- doc update 2.7
-V 2.7 - BETA
-- new feature - Joystick Tuning
-V 2.6
-- fix - taking actionmaps from config file now works
-- improvement - added actionmap vehicle_driver
-V 2.5
-- new feature - support and maintain option tags
-- improvement - support and maintain version and ignoreversion attribute / can force ignoreversion="1"
-- improvement - makes backup copy before each save (in my documents e.g. layout_my_xyz.xml.backup)
-- Update of the Guide for V2.5
-V 2.4
-- improvement - add new actionmaps for AC 0.9 (flycam, spaceship_turret)
-- improvement - supports now assignment of js1 .. js8 - SC may not support all though...
-- Update of the Guide for V2.4
-V 2.3
-- new feature - allow reassignment of the jsN group
-- improvement - uniquely identified devices with the same name (use GUID)
-- improvement - shows jsN assignment in Joystick tab
-- improvement - detection of the SC install path extended to one more Registry entry
-- fix - blend unmapped works properly now
-- fix - manual entry of SC directory works now
-- Update of the Guide for V2.3
-V 2.2
-- new feature - option to ignore actionmaps in Settings
-- improvement - add actionmaps for multiplayer, singleplayer, player
-- improvement - GUI layout of Joystick tabs for more than 4 devices
-- Update of the Guide for V2.2
-V 2.1
-- program is maintained at "https://github.com/SCToolsfactory/SCJMapper-V2/releases"
-- new feature - option to blend unmapped actions
-- improvement - ignore buttons in Settings
-- improvement - override the built in detection of the SC folder in Settings
-- added - trace log for resolving crash and other issues
-- Update of the Guide for V2.1
-V 2.0
-- program is maintained at "https://github.com/bm98/SCJMapper-V2/releases"
-- new feature - get defaultProfile.xml from game assets
-- new feature - get actionsmaps from game assets
-- new feature - reset to defaults
-- new feature - load and save own maps to gamefolders (makes backup in My Documents\SCJMapper)
-- new feature - filter the action tree
-- new feature - drag and drop an mapping file into the XML window
-- new feature - make throttle assignment for any axis
-- improved joystick detection (jitter avoidance, limit can be set in Program config file)
-- improved button detection (blend buttons that are always on)
-- improved sizeable window
-- improved settings persist between sessions
-- Update of the Guide for V2.0
-- removed defaultProfile.xml from distribution (REMOVE IT FROM YOUR FOLDER - else it will be taken as action list)
-V 1.4PRE
-- using a new Managed DirectX assembly and built with .Net4 (Hope this works for Win8.1)
-- added Joystick properties and Axis Names from the Joystick driver
-V 1.3
-- new feature - read the original defaultProfile.xml from SC to derive the actions (must be in the EXE folder)
-- added support for up to 8 devices
-- added multibinding i.e. bind the same action to multiple buttons, one for kbd, one for xbox etc. if the profile supports it
-- added Dump List - a readable list of the commands (can be saved as txt file - using Save as)
-- fixed "Find 1st"
-- Update of the Guide
-- removed MappingVars file from distribution (REMOVE IT FROM YOUR FOLDER - else it will be taken as action list)
-V 1.2
-- added support for rebinding xboxpad and ps3pad
-- added Find 1st for a Control
-- fixed Hat direction not maintained as last Control used
-- some GUI refinements
-- Update of the Guide (incl MappingVar.csv format)
-MappingVar file
-- added commands that where missing
-- changed from keyboard to xboxpad rebinding where possible to leave kbd intact
-V 1.1
-- fixed issue with less than 3 joysticks attached
-V 1.0 initial
diff --git a/doc/SCJMapper_QGuide V2.34beta.pdf b/doc/SCJMapper_QGuide V2.34beta.pdf
new file mode 100644
index 0000000..adbdbe1
Binary files /dev/null and b/doc/SCJMapper_QGuide V2.34beta.pdf differ
diff --git a/doc/SCJMapper_QGuide V2.x.pub b/doc/SCJMapper_QGuide V2.x.pub
index b70fc44..b8104a2 100644
Binary files a/doc/SCJMapper_QGuide V2.x.pub and b/doc/SCJMapper_QGuide V2.x.pub differ
diff --git a/graphics/Folder.png b/graphics/Folder.png
new file mode 100644
index 0000000..48df359
Binary files /dev/null and b/graphics/Folder.png differ
diff --git a/graphics/Info.png b/graphics/Info.png
new file mode 100644
index 0000000..76876e2
Binary files /dev/null and b/graphics/Info.png differ
diff --git a/graphics/LArrow.png b/graphics/LArrow.png
new file mode 100644
index 0000000..d8bdcd4
Binary files /dev/null and b/graphics/LArrow.png differ
diff --git a/graphics/Locked.png b/graphics/Locked.png
new file mode 100644
index 0000000..cace675
Binary files /dev/null and b/graphics/Locked.png differ
diff --git a/graphics/Magic.png b/graphics/Magic.png
new file mode 100644
index 0000000..b7e612e
Binary files /dev/null and b/graphics/Magic.png differ
diff --git a/graphics/Monitor.png b/graphics/Monitor.png
new file mode 100644
index 0000000..2cd99bc
Binary files /dev/null and b/graphics/Monitor.png differ
diff --git a/graphics/NPad.png b/graphics/NPad.png
new file mode 100644
index 0000000..1c8e57a
Binary files /dev/null and b/graphics/NPad.png differ
diff --git a/graphics/RArrow.png b/graphics/RArrow.png
new file mode 100644
index 0000000..8513eb8
Binary files /dev/null and b/graphics/RArrow.png differ
diff --git a/graphics/RSI.png b/graphics/RSI.png
new file mode 100644
index 0000000..83e462e
Binary files /dev/null and b/graphics/RSI.png differ
diff --git a/graphics/Settings.png b/graphics/Settings.png
new file mode 100644
index 0000000..033e0a8
Binary files /dev/null and b/graphics/Settings.png differ
diff --git a/graphics/User.png b/graphics/User.png
new file mode 100644
index 0000000..0496ab7
Binary files /dev/null and b/graphics/User.png differ