diff --git a/Form1.Designer.cs b/Form1.Designer.cs
new file mode 100644
index 0000000..661642a
--- /dev/null
+++ b/Form1.Designer.cs
@@ -0,0 +1,549 @@
+namespace JLC_SMT_Helper
+{
+ partial class Form1
+ {
+ ///
+ /// Variable nécessaire au concepteur.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Nettoyage des ressources utilisées.
+ ///
+ /// true si les ressources managées doivent être supprimées ; sinon, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Code généré par le Concepteur Windows Form
+
+ ///
+ /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
+ /// le contenu de cette méthode avec l'éditeur de code.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+ this.dataGridView1 = new System.Windows.Forms.DataGridView();
+ this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
+ this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.dataGridView2 = new System.Windows.Forms.DataGridView();
+ this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+ this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton();
+ this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.bOMcsvToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.cPLcsvToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.importToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.lSCSPartsListFromBOMcsvToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.comboBox2 = new System.Windows.Forms.ComboBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button6 = new System.Windows.Forms.Button();
+ this.button7 = new System.Windows.Forms.Button();
+ this.button8 = new System.Windows.Forms.Button();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
+ this.toolStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // dataGridView1
+ //
+ this.dataGridView1.AllowUserToAddRows = false;
+ this.dataGridView1.AllowUserToDeleteRows = false;
+ this.dataGridView1.AllowUserToResizeRows = false;
+ this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+ this.Column1,
+ this.Column2,
+ this.Column3,
+ this.Column4,
+ this.Column5});
+ this.dataGridView1.Location = new System.Drawing.Point(5, 84);
+ this.dataGridView1.Name = "dataGridView1";
+ this.dataGridView1.RowHeadersVisible = false;
+ this.dataGridView1.Size = new System.Drawing.Size(680, 368);
+ this.dataGridView1.TabIndex = 7;
+ this.dataGridView1.CellValidated += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellValidated);
+ this.dataGridView1.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellValueChanged);
+ this.dataGridView1.Click += new System.EventHandler(this.dataGridView1_Click);
+ this.dataGridView1.Validated += new System.EventHandler(this.dataGridView1_Validated);
+ //
+ // Column1
+ //
+ this.Column1.HeaderText = "Qty";
+ this.Column1.Name = "Column1";
+ this.Column1.Width = 30;
+ //
+ // Column2
+ //
+ this.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+ this.Column2.HeaderText = "Designator";
+ this.Column2.Name = "Column2";
+ //
+ // Column3
+ //
+ this.Column3.HeaderText = "Footprint";
+ this.Column3.Name = "Column3";
+ this.Column3.Width = 200;
+ //
+ // Column4
+ //
+ this.Column4.HeaderText = "Comment";
+ this.Column4.Name = "Column4";
+ this.Column4.Width = 195;
+ //
+ // Column5
+ //
+ this.Column5.HeaderText = "LSCS";
+ this.Column5.Name = "Column5";
+ //
+ // saveFileDialog1
+ //
+ this.saveFileDialog1.DefaultExt = "csv";
+ this.saveFileDialog1.Filter = "JLC CSV|*.csv";
+ this.saveFileDialog1.Title = "Save JLC CSV";
+ //
+ // openFileDialog1
+ //
+ this.openFileDialog1.DefaultExt = "csv";
+ this.openFileDialog1.Filter = "Eagle CSV|*.csv";
+ this.openFileDialog1.Title = "Open Eagle CSV File";
+ //
+ // button2
+ //
+ this.button2.ForeColor = System.Drawing.Color.Red;
+ this.button2.Location = new System.Drawing.Point(245, 30);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(115, 23);
+ this.button2.TabIndex = 8;
+ this.button2.Text = "Remove Item";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button4
+ //
+ this.button4.Location = new System.Drawing.Point(126, 30);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(115, 23);
+ this.button4.TabIndex = 9;
+ this.button4.Text = "Create Empty Line";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Visible = false;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // button5
+ //
+ this.button5.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.button5.Location = new System.Drawing.Point(5, 30);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(57, 23);
+ this.button5.TabIndex = 10;
+ this.button5.Text = "Unpack";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // dataGridView2
+ //
+ this.dataGridView2.AllowUserToAddRows = false;
+ this.dataGridView2.AllowUserToDeleteRows = false;
+ this.dataGridView2.AllowUserToResizeRows = false;
+ this.dataGridView2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.dataGridView2.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+ this.dataGridViewTextBoxColumn2,
+ this.dataGridViewTextBoxColumn3,
+ this.dataGridViewTextBoxColumn4,
+ this.dataGridViewTextBoxColumn5,
+ this.dataGridViewTextBoxColumn1});
+ this.dataGridView2.Location = new System.Drawing.Point(691, 84);
+ this.dataGridView2.Name = "dataGridView2";
+ this.dataGridView2.RowHeadersVisible = false;
+ this.dataGridView2.Size = new System.Drawing.Size(348, 368);
+ this.dataGridView2.TabIndex = 12;
+ this.dataGridView2.Click += new System.EventHandler(this.dataGridView2_Click);
+ //
+ // dataGridViewTextBoxColumn2
+ //
+ this.dataGridViewTextBoxColumn2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+ this.dataGridViewTextBoxColumn2.HeaderText = "Designator";
+ this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2";
+ //
+ // dataGridViewTextBoxColumn3
+ //
+ this.dataGridViewTextBoxColumn3.HeaderText = "Mid X";
+ this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3";
+ this.dataGridViewTextBoxColumn3.Width = 65;
+ //
+ // dataGridViewTextBoxColumn4
+ //
+ this.dataGridViewTextBoxColumn4.HeaderText = "Mid Y";
+ this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4";
+ this.dataGridViewTextBoxColumn4.Width = 65;
+ //
+ // dataGridViewTextBoxColumn5
+ //
+ this.dataGridViewTextBoxColumn5.HeaderText = "Layer";
+ this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5";
+ this.dataGridViewTextBoxColumn5.Width = 65;
+ //
+ // dataGridViewTextBoxColumn1
+ //
+ this.dataGridViewTextBoxColumn1.HeaderText = "Rotation";
+ this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1";
+ this.dataGridViewTextBoxColumn1.Width = 65;
+ //
+ // toolStrip1
+ //
+ this.toolStrip1.BackColor = System.Drawing.SystemColors.ControlLight;
+ this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
+ this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripDropDownButton1});
+ this.toolStrip1.Location = new System.Drawing.Point(0, 0);
+ this.toolStrip1.Name = "toolStrip1";
+ this.toolStrip1.Size = new System.Drawing.Size(1046, 25);
+ this.toolStrip1.TabIndex = 15;
+ this.toolStrip1.Text = "toolStrip1";
+ //
+ // toolStripDropDownButton1
+ //
+ this.toolStripDropDownButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripDropDownButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItem1,
+ this.saveAsToolStripMenuItem,
+ this.toolStripSeparator1,
+ this.importToolStripMenuItem});
+ this.toolStripDropDownButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton1.Image")));
+ this.toolStripDropDownButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripDropDownButton1.Name = "toolStripDropDownButton1";
+ this.toolStripDropDownButton1.Size = new System.Drawing.Size(38, 22);
+ this.toolStripDropDownButton1.Text = "File";
+ //
+ // toolStripMenuItem1
+ //
+ this.toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.bOMcsvToolStripMenuItem,
+ this.cPLcsvToolStripMenuItem});
+ this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(180, 22);
+ this.toolStripMenuItem1.Text = "Open";
+ //
+ // bOMcsvToolStripMenuItem
+ //
+ this.bOMcsvToolStripMenuItem.Name = "bOMcsvToolStripMenuItem";
+ this.bOMcsvToolStripMenuItem.Size = new System.Drawing.Size(208, 22);
+ this.bOMcsvToolStripMenuItem.Text = "Parts List BOM (.csv)";
+ this.bOMcsvToolStripMenuItem.Click += new System.EventHandler(this.bOMcsvToolStripMenuItem_Click);
+ //
+ // cPLcsvToolStripMenuItem
+ //
+ this.cPLcsvToolStripMenuItem.Name = "cPLcsvToolStripMenuItem";
+ this.cPLcsvToolStripMenuItem.Size = new System.Drawing.Size(208, 22);
+ this.cPLcsvToolStripMenuItem.Text = "SMD Locations CPL (.csv)";
+ this.cPLcsvToolStripMenuItem.Click += new System.EventHandler(this.cPLcsvToolStripMenuItem_Click);
+ //
+ // saveAsToolStripMenuItem
+ //
+ this.saveAsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripMenuItem2,
+ this.toolStripMenuItem3});
+ this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem";
+ this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.saveAsToolStripMenuItem.Text = "Save As";
+ //
+ // toolStripMenuItem2
+ //
+ this.toolStripMenuItem2.Enabled = false;
+ this.toolStripMenuItem2.Name = "toolStripMenuItem2";
+ this.toolStripMenuItem2.Size = new System.Drawing.Size(208, 22);
+ this.toolStripMenuItem2.Text = "Parts List BOM (.csv)";
+ this.toolStripMenuItem2.Click += new System.EventHandler(this.toolStripMenuItem2_Click);
+ //
+ // toolStripMenuItem3
+ //
+ this.toolStripMenuItem3.Enabled = false;
+ this.toolStripMenuItem3.Name = "toolStripMenuItem3";
+ this.toolStripMenuItem3.Size = new System.Drawing.Size(208, 22);
+ this.toolStripMenuItem3.Text = "SMD Locations CPL (.csv)";
+ this.toolStripMenuItem3.Click += new System.EventHandler(this.toolStripMenuItem3_Click);
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(177, 6);
+ //
+ // importToolStripMenuItem
+ //
+ this.importToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.lSCSPartsListFromBOMcsvToolStripMenuItem});
+ this.importToolStripMenuItem.Name = "importToolStripMenuItem";
+ this.importToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.importToolStripMenuItem.Text = "Import";
+ //
+ // lSCSPartsListFromBOMcsvToolStripMenuItem
+ //
+ this.lSCSPartsListFromBOMcsvToolStripMenuItem.Enabled = false;
+ this.lSCSPartsListFromBOMcsvToolStripMenuItem.Name = "lSCSPartsListFromBOMcsvToolStripMenuItem";
+ this.lSCSPartsListFromBOMcsvToolStripMenuItem.Size = new System.Drawing.Size(240, 22);
+ this.lSCSPartsListFromBOMcsvToolStripMenuItem.Text = "LSCS Parts List from BOM (.csv)";
+ this.lSCSPartsListFromBOMcsvToolStripMenuItem.Click += new System.EventHandler(this.lSCSPartsListFromBOMcsvToolStripMenuItem_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(6, 60);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(61, 13);
+ this.label1.TabIndex = 16;
+ this.label1.Text = "Designator:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(76, 60);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(21, 13);
+ this.label2.TabIndex = 17;
+ this.label2.Text = "Q1";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(705, 60);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(36, 13);
+ this.label3.TabIndex = 18;
+ this.label3.Text = "Layer:";
+ //
+ // comboBox1
+ //
+ this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Items.AddRange(new object[] {
+ "TOP",
+ "BOTTOM"});
+ this.comboBox1.Location = new System.Drawing.Point(747, 57);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(79, 21);
+ this.comboBox1.TabIndex = 19;
+ this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(691, 35);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(50, 13);
+ this.label4.TabIndex = 20;
+ this.label4.Text = "Rotation:";
+ //
+ // comboBox2
+ //
+ this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox2.FormattingEnabled = true;
+ this.comboBox2.Items.AddRange(new object[] {
+ "0",
+ "90",
+ "180",
+ "270"});
+ this.comboBox2.Location = new System.Drawing.Point(747, 32);
+ this.comboBox2.Name = "comboBox2";
+ this.comboBox2.Size = new System.Drawing.Size(79, 21);
+ this.comboBox2.TabIndex = 21;
+ this.comboBox2.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged);
+ //
+ // button1
+ //
+ this.button1.ForeColor = System.Drawing.SystemColors.ControlText;
+ this.button1.Location = new System.Drawing.Point(65, 30);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(57, 23);
+ this.button1.TabIndex = 22;
+ this.button1.Text = "Repack";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click_1);
+ //
+ // label5
+ //
+ this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.label5.AutoSize = true;
+ this.label5.BackColor = System.Drawing.SystemColors.AppWorkspace;
+ this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label5.Location = new System.Drawing.Point(252, 220);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(169, 48);
+ this.label5.TabIndex = 23;
+ this.label5.Text = "CLIC TO\r\nOPEN BOM FILE";
+ this.label5.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.label5.Click += new System.EventHandler(this.label5_Click);
+ //
+ // label6
+ //
+ this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.label6.AutoSize = true;
+ this.label6.BackColor = System.Drawing.SystemColors.AppWorkspace;
+ this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label6.Location = new System.Drawing.Point(788, 220);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(161, 48);
+ this.label6.TabIndex = 24;
+ this.label6.Text = "CLIC TO\r\nOPEN CPL FILE";
+ this.label6.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.label6.Click += new System.EventHandler(this.label6_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(832, 30);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(115, 23);
+ this.button3.TabIndex = 25;
+ this.button3.Text = "Rotate Selected +90";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click_1);
+ //
+ // button6
+ //
+ this.button6.Location = new System.Drawing.Point(832, 56);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(115, 23);
+ this.button6.TabIndex = 26;
+ this.button6.Text = "Rotate Selected -90";
+ this.button6.UseVisualStyleBackColor = true;
+ this.button6.Click += new System.EventHandler(this.button6_Click);
+ //
+ // button7
+ //
+ this.button7.Location = new System.Drawing.Point(953, 30);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(61, 23);
+ this.button7.TabIndex = 27;
+ this.button7.Text = "Move X";
+ this.button7.UseVisualStyleBackColor = true;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
+ // button8
+ //
+ this.button8.Location = new System.Drawing.Point(953, 55);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(61, 23);
+ this.button8.TabIndex = 28;
+ this.button8.Text = "Move Y";
+ this.button8.UseVisualStyleBackColor = true;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1046, 460);
+ this.Controls.Add(this.button8);
+ this.Controls.Add(this.button7);
+ this.Controls.Add(this.button6);
+ this.Controls.Add(this.button3);
+ this.Controls.Add(this.label6);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.comboBox2);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.comboBox1);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.toolStrip1);
+ this.Controls.Add(this.dataGridView2);
+ this.Controls.Add(this.button5);
+ this.Controls.Add(this.button4);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.dataGridView1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "Form1";
+ this.Text = "JLC PCB - SMT Assembly Files Helper";
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
+ this.toolStrip1.ResumeLayout(false);
+ this.toolStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.DataGridView dataGridView1;
+ private System.Windows.Forms.SaveFileDialog saveFileDialog1;
+ private System.Windows.Forms.OpenFileDialog openFileDialog1;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.DataGridView dataGridView2;
+ private System.Windows.Forms.ToolStrip toolStrip1;
+ private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton1;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem bOMcsvToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem cPLcsvToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
+ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripMenuItem importToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem lSCSPartsListFromBOMcsvToolStripMenuItem;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.ComboBox comboBox2;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column4;
+ private System.Windows.Forms.DataGridViewTextBoxColumn Column5;
+ private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2;
+ private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3;
+ private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4;
+ private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5;
+ private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button6;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.Button button8;
+ }
+}
+
diff --git a/Form1.cs b/Form1.cs
new file mode 100644
index 0000000..c449db8
--- /dev/null
+++ b/Form1.cs
@@ -0,0 +1,1016 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace JLC_SMT_Helper
+{
+ public partial class Form1 : Form
+ {
+ List EndLinesBOM = new List();
+ List EndLinesCPL = new List();
+
+ bool Opened_BOM = false;
+ bool Opened_CPL = false;
+
+ bool DoingPartsList = false;
+ bool AlreadyConverted = false;
+ string Filepath = "";
+ string Filename = "";
+
+
+ bool Loading = false;
+
+ public Form1()
+ {
+ InitializeComponent();
+
+ label2.Text = "";
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void SpawnGridBOM()
+ {
+ if (EndLinesBOM.Count > 0)
+ {
+ Loading = true;
+ dataGridView1.Rows.Clear();
+
+ for (int i = 1; i < EndLinesBOM.Count; i++)
+ {
+ string[] SplittedCmds = EndLinesBOM[i].Split(';');
+ dataGridView1.Rows.Add(SplittedCmds);
+ }
+ Loading = false;
+ }
+ }
+
+ private void SpawnGridCPL()
+ {
+ if (EndLinesCPL.Count > 0)
+ {
+ dataGridView2.Rows.Clear();
+
+ for (int i = 1; i < EndLinesCPL.Count; i++)
+ {
+ string[] SplittedCmds = EndLinesCPL[i].Split(';');
+ dataGridView2.Rows.Add(SplittedCmds);
+ }
+ }
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ if (dataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0)
+ {
+ EndLinesBOM.RemoveAt(dataGridView1.SelectedCells[0].RowIndex + 1);
+ }
+
+ SpawnGridBOM();
+ }
+
+ private void button4_Click(object sender, EventArgs e)
+ {
+ EndLinesBOM.Add(";;;;;");
+
+ int AddingAt = -1;
+ if (dataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0)
+ {
+ AddingAt = dataGridView1.SelectedCells[0].RowIndex + 1;
+ }
+
+ if (AddingAt != -1)
+ {
+ MoveLine(true, AddingAt + 1);
+ /*List EndLinesBuf = new List();
+ EndLinesBuf = EndLines;
+
+ for (int i = AddingAt; i < EndLines.Count; i++)
+ {
+ if (i == AddingAt) EndLines[i] = EndLinesBuf[EndLinesBuf.Count - 1];
+ else EndLines[i] = EndLinesBuf[i - 1];
+ }*/
+ }
+
+ SpawnGridBOM();
+ }
+
+ private void button3_Click(object sender, EventArgs e)
+ {
+ //SaveFile();
+ }
+
+ private void MoveLine(bool BOM_File, int ToLine)
+ {
+ if (BOM_File)
+ {
+ string ThisLine = EndLinesBOM[EndLinesBOM.Count - 1];
+ EndLinesBOM.RemoveAt(EndLinesBOM.Count - 1);
+ EndLinesBOM.Insert(ToLine, ThisLine);
+ }
+ else
+ {
+ string ThisLine = EndLinesCPL[EndLinesCPL.Count - 1];
+ EndLinesCPL.RemoveAt(EndLinesCPL.Count - 1);
+ EndLinesCPL.Insert(ToLine, ThisLine);
+ }
+ }
+
+ private void SaveFile(bool BOM_File)
+ {
+ List EndLinesBuffer = new List();
+
+ if (BOM_File) EndLinesBuffer = EndLinesBOM;
+ else EndLinesBuffer = EndLinesCPL;
+
+ if (EndLinesBuffer.Count > 0)
+ {
+ string SaveString = "";
+
+ for (int i = 0; i < EndLinesBuffer.Count; i++)
+ {
+ string[] SplittedCmds = EndLinesBuffer[i].Split(';');
+
+ for (int i2 = 0; i2 < SplittedCmds.Length; i2++)
+ {
+ string RemadeWithComma = SplittedCmds[i2];
+ if (RemadeWithComma.Contains(",")) RemadeWithComma = "\"" + RemadeWithComma + "\"";
+
+ SaveString += RemadeWithComma;
+ if (i2 < SplittedCmds.Length - 1) SaveString += ",";
+ }
+
+ if (i < EndLinesBuffer.Count - 1) SaveString += Environment.NewLine;
+ }
+
+ if (BOM_File)
+ {
+ string SName = Filename;
+ SName = SName.Replace("_locations", "");
+ SName = SName.Replace("_location", "");
+ SName = SName.Replace("_Locations", "");
+ SName = SName.Replace("_Location", "");
+ SName = SName.Replace("_JLC_BOM", "");
+ saveFileDialog1.FileName = SName + "_JLC_BOM.csv";
+ }
+ else
+ {
+ string SName = Filename;
+ SName = SName.Replace("_parts", "");
+ SName = SName.Replace("_part", "");
+ SName = SName.Replace("_Parts", "");
+ SName = SName.Replace("_part", "");
+ SName = SName.Replace("_JLC_CPL", "");
+ saveFileDialog1.FileName = SName + "_JLC_CPL.csv";
+ }
+
+ DialogResult result = saveFileDialog1.ShowDialog();
+ if (result == DialogResult.OK)
+ {
+ File.Create(saveFileDialog1.FileName).Dispose();
+ File.WriteAllText(saveFileDialog1.FileName, SaveString);
+ }
+ }
+ }
+
+ void LoadFile(bool BOM_File)
+ {
+ if (BOM_File)
+ {
+ openFileDialog1.Filter = "Eagle BOM File CSV|*.csv";
+ openFileDialog1.DefaultExt = "csv";
+ }
+ else
+ {
+ openFileDialog1.Filter = "Eagle Mount SMD File MNT or CSV|*.csv;*.mnt";
+ openFileDialog1.DefaultExt = "csv";
+ }
+ DialogResult result = openFileDialog1.ShowDialog();
+ if (result == DialogResult.OK)
+ {
+ Filepath = Path.GetDirectoryName(openFileDialog1.FileName);
+ Filename = Path.GetFileNameWithoutExtension(openFileDialog1.FileName);
+ string[] AllLines = File.ReadAllLines(openFileDialog1.FileName);
+
+ this.Text = "JLC PCB - SMT Assembly Files Helper - " + Filename + ".csv";
+
+ if (AllLines.Length > 0)
+ {
+ Loading = true;
+ DoingPartsList = false;
+ AlreadyConverted = false;
+ bool WarningDone = false;
+ //EndLines.Clear();
+ int QuantityAt = 0;
+ int DesignatorAt = 0;
+ int FootprintAt = 0;
+ int CommentAt = 0;
+ int ValueAt = 0;
+
+ bool CanGo = true;
+
+ for (int i = 0; i < AllLines.Length; i++)
+ {
+ //EndLines.Add(AllLines[i]);
+
+ //";"
+ if (i == 0)
+ {
+ if (AllLines[i].Contains(";") || AllLines[i].Contains("Footprint")) DoingPartsList = true;
+ if (AllLines[i].Contains("Designator")) AlreadyConverted = true;
+ }
+
+ if (!WarningDone)
+ {
+ if ((!DoingPartsList && BOM_File) || (DoingPartsList && !BOM_File))
+ {
+ CanGo = false;
+ DialogResult result2 = MessageBox.Show("The file opened aren't of the correct type\nDo you still want to open the file using the other type method?", "Warning", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
+ if (result2 == DialogResult.Yes) CanGo = true;
+
+ WarningDone = true;
+ }
+ }
+
+ if (CanGo)
+ {
+ if (i == 0)
+ {
+ if (DoingPartsList) EndLinesBOM.Clear();
+ else EndLinesCPL.Clear();
+ }
+
+ if (!AlreadyConverted)
+ {
+ if (DoingPartsList)
+ {
+ //"Qty";"Value";"Device";"Package";"Parts";"Description";"MF";"MPN";"OC_FARNELL";"OC_NEWARK";"PROD_ID";"SF_ID";"SPICEPREFIX";"VALUE";
+ //Qty,Designator,Footprint,Comment
+
+ //EndLines[i] = EndLines[i].Replace("\"", "");
+ AllLines[i] = AllLines[i].Replace("\"", "");
+ string ThisRemadeLine = "";
+ string[] SplittedCmds = AllLines[i].Split(';');
+
+ if (i == 0)
+ {
+ for (int i2 = 0; i2 < SplittedCmds.Length; i2++)
+ {
+ if (SplittedCmds[i2].Contains("Qty")) QuantityAt = i2;
+ if (SplittedCmds[i2].Contains("Parts")) DesignatorAt = i2;
+ if (SplittedCmds[i2].Contains("Package")) FootprintAt = i2;
+ if (SplittedCmds[i2].Contains("Description")) CommentAt = i2;
+ if (SplittedCmds[i2].Contains("Value")) ValueAt = i2;
+ }
+ ThisRemadeLine = "Qty;Designator;Footprint;Comment;LCSC";
+ }
+ else
+ {
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("C0402", "Capacitor 0402");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("C0603", "Capacitor 0603");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("C0805", "Capacitor 0805");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("C1206", "Capacitor 1206");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("C1205", "Capacitor 1205");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("R0402", "Resistor 0402");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("R0603", "Resistor 0603");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("R0805", "Resistor 0805");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("R1206", "Resistor 1206");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("R1205", "Resistor 1205");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("CHIPLED", "LED");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("CHIP-LED", "LED ");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("$", " ");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("-", " ");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("_", " ");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("/", " ");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("\\", " ");
+ SplittedCmds[FootprintAt] = SplittedCmds[FootprintAt].Replace("@1", "");
+
+
+ SplittedCmds[ValueAt] = SplittedCmds[ValueAt].Replace("$", " ");
+ SplittedCmds[ValueAt] = SplittedCmds[ValueAt].Replace("-", " ");
+ SplittedCmds[ValueAt] = SplittedCmds[ValueAt].Replace("_", " ");
+ SplittedCmds[ValueAt] = SplittedCmds[ValueAt].Replace("/", " ");
+ SplittedCmds[ValueAt] = SplittedCmds[ValueAt].Replace("\\", " ");
+ SplittedCmds[ValueAt] = SplittedCmds[ValueAt].Replace("0.1uF", "100nF");
+ SplittedCmds[ValueAt] = SplittedCmds[ValueAt].Replace("@1", "");
+
+ string CommentLine = SplittedCmds[FootprintAt] + " " + SplittedCmds[ValueAt];
+
+ if (CommentLine.Contains("MEGA") && !CommentLine.Contains("ATMEGA")) CommentLine = CommentLine.Replace("MEGA", "ATMEGA");
+ CommentLine = CommentLine.Replace("CAP ", "Capacitor ");
+ CommentLine = CommentLine.Replace("TO 252 +12v", "78M05");
+ CommentLine = CommentLine.Replace("DPACK 3 ", "");
+ CommentLine = CommentLine.Replace("DO214AC ", "");
+
+ ThisRemadeLine = SplittedCmds[QuantityAt] + ";" + SplittedCmds[DesignatorAt] + ";" + CommentLine + ";" + CommentLine + ";";
+ //ThisRemadeLine = SplittedCmds[QuantityAt] + ";" + SplittedCmds[DesignatorAt] + ";" + SplittedCmds[FootprintAt] + " " + SplittedCmds[ValueAt] + ";" + SplittedCmds[CommentAt] + ";";
+ }
+
+ EndLinesBOM.Add(ThisRemadeLine);
+ }
+ else
+ {
+ string ThisRemadeLine = "";
+ string[] SplittedCmds = AllLines[i].Split(' ');
+ int AddingCount = 0;
+
+ for (int i2 = 0; i2 < SplittedCmds.Length; i2++)
+ {
+ if (SplittedCmds[i2] != "")
+ {
+ ThisRemadeLine += SplittedCmds[i2] + ";";
+
+ if (AddingCount == 2)
+ {
+ ThisRemadeLine += "TOP;";
+ AddingCount++;
+ }
+ AddingCount++;
+ }
+ }
+
+ if (i == 0) EndLinesCPL.Add("Designator;Mid X;Mid Y;Layer;Rotation");
+ EndLinesCPL.Add(ThisRemadeLine);
+ }
+ }
+ else
+ {
+ string ThisRemadeLine = "";
+
+ if (DoingPartsList)
+ {
+ //5,"D2, D3, D4, D5, D8",LED-0603,
+ string CuttingLine = AllLines[i];
+ while (CuttingLine.Contains(","))
+ {
+ //Console.WriteLine("here:" + CuttingLine);
+ bool HasComma = false;
+ if (CuttingLine[0] == '\"') HasComma = true;
+
+ if (!HasComma) ThisRemadeLine += CuttingLine.Substring(0, CuttingLine.IndexOf(","));
+ else ThisRemadeLine += CuttingLine.Substring(1, CuttingLine.IndexOf("\",") - 1);
+ ThisRemadeLine += ";";
+
+ //Console.WriteLine("here:" + ThisRemadeLine);
+
+
+ if (!HasComma) CuttingLine = CuttingLine.Substring(CuttingLine.IndexOf(",") + 1);
+ else CuttingLine = CuttingLine.Substring(CuttingLine.IndexOf("\",") + 2);
+ }
+ //Console.WriteLine("here:" + ThisRemadeLine);
+
+ EndLinesBOM.Add(ThisRemadeLine);
+ }
+ else
+ {
+ ThisRemadeLine = AllLines[i].Replace(",", ";");
+ EndLinesCPL.Add(ThisRemadeLine);
+ }
+
+ }
+ }
+ }
+
+ if (DoingPartsList)
+ {
+ SpawnGridBOM(); //Must Spawn the grid before checking for unavailable parts
+ Check4unavailablepart();
+ SpawnGridBOM();
+ toolStripMenuItem2.Enabled = true;
+ lSCSPartsListFromBOMcsvToolStripMenuItem.Enabled = true;
+ Opened_BOM = true;
+ label5.Visible = false;
+ }
+ else
+ {
+ SpawnGridCPL();
+ toolStripMenuItem3.Enabled = true;
+ Opened_CPL = true;
+ label6.Visible = false;
+ }
+
+ Loading = false;
+ }
+ }
+ }
+
+ private void Check4LSCSPartNumber()
+ {
+ for (int i = 0; i < dataGridView1.Rows.Count; i++)
+ {
+ CheckPartNumber(dataGridView1.Rows[i].Cells[3].Value.ToString());
+ }
+ }
+
+ private void CheckPartNumber(string ThisPart)
+ {
+ //if (ThisPart == "")
+ //EndLinesBOM.RemoveAt(dataGridView1.SelectedCells[0].RowIndex + 1);
+
+ }
+
+ private void Check4unavailablepart()
+ {
+ int i = 0;
+ while (i < dataGridView1.Rows.Count)
+ {
+ if (IsUnavailablePart(dataGridView1.Rows[i].Cells[2].Value.ToString()))
+ {
+ EndLinesBOM.RemoveAt(i + 1);
+ SpawnGridBOM();
+ }
+ else
+ {
+ i++;
+ }
+ }
+ }
+
+ private bool IsUnavailablePart(string ThisPart)
+ {
+ if (ThisPart == "SMD1,27 2,54 1 MISO") return true;
+ if (ThisPart == "SMD1,27 2,54 3 SCK") return true;
+ if (ThisPart == "SMD1,27 2,54 5 RST") return true;
+ if (ThisPart == "SMD1,27 2,54 2") return true;
+ if (ThisPart == "SMD1,27 2,54 4") return true;
+ if (ThisPart == "SMD1,27 2,54 6") return true;
+
+ if (ThisPart == "MKDSN1,5 2 5,08 MKDSN1,5 2 5,08") return true;
+ if (ThisPart == "MKDSN1,5 2 5,08 ") return true;
+ if (ThisPart == "MKDSN1,5 2 5,08") return true;
+
+ if (ThisPart == "USB MINIB USB B") return true;
+ if (ThisPart == "USB B PTH USB B PTH") return true;
+
+ if (ThisPart == "SMT JUMPER 3 1 NC TRACE SILK JMP") return true;
+ if (ThisPart == "SMT JUMPER 2 NO NO SILK JMP") return true;
+ if (ThisPart == "SMT JUMPER 2 NC PASTE NO SILK ") return true;
+ if (ThisPart == "651005136521 651005136521") return true;
+
+ if (ThisPart == "HC49 HC49") return true;
+ if (ThisPart == "HC49 CRYSTAL") return true;
+
+ if (ThisPart == "B25P 5K") return true;
+ if (ThisPart == "C025 050X050 10uF 35V") return true;
+ if (ThisPart == "B3F 10XX ") return true;
+ if (ThisPart == "1727036 1727036") return true;
+ if (ThisPart == "EG1213 EG1213") return true;
+ if (ThisPart == "EVUF POT") return true;
+ if (ThisPart == "POWER JACK PTH POWER JACK") return true;
+ if (ThisPart == "BATTCOM 20MM PTH ") return true;
+ if (ThisPart == "DIL28 ") return true;
+ if (ThisPart == "228 1277 00 0602J ") return true;
+
+ if (ThisPart == "1X01 ") return true;
+ if (ThisPart == "1X02 ") return true;
+ if (ThisPart == "1X03 ") return true;
+ if (ThisPart == "1X04 ") return true;
+ if (ThisPart == "1X05 ") return true;
+ if (ThisPart == "1X06 ") return true;
+ if (ThisPart == "1X16 ") return true;
+ if (ThisPart == "1X01 90 ") return true;
+ if (ThisPart == "1X02 90 ") return true;
+ if (ThisPart == "1X03 90 ") return true;
+ if (ThisPart == "1X04 90 ") return true;
+ if (ThisPart == "1X05 90 ") return true;
+ if (ThisPart == "1X06 90 ") return true;
+ if (ThisPart == "1X03 SMALL DATA") return true;
+ if (ThisPart == "1X01 ROUND ") return true;
+ if (ThisPart == "1X01 90 ROUND ") return true;
+ if (ThisPart == "1X02 ROUND ") return true;
+ if (ThisPart == "1X02 90 ROUND ") return true;
+ if (ThisPart == "1X03 ROUND ") return true;
+ if (ThisPart == "1X03 90 ROUND ") return true;
+
+ if (ThisPart.Contains("NOT REQUIRED")) return true;
+ if (ThisPart.Contains("not required")) return true;
+
+ //if (ThisPart == "") return true;
+
+ return false;
+ }
+
+ private void bOMcsvToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ LoadFile(true);
+ }
+
+ private void cPLcsvToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ LoadFile(false);
+ }
+
+ private void toolStripMenuItem2_Click(object sender, EventArgs e)
+ {
+ SaveFile(true);
+ }
+
+ private void toolStripMenuItem3_Click(object sender, EventArgs e)
+ {
+ SaveFile(false);
+ }
+
+ private void button5_Click(object sender, EventArgs e)
+ {
+ int AddingAt = -1;
+ if (dataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0)
+ {
+ AddingAt = dataGridView1.SelectedCells[0].RowIndex + 1;
+ }
+
+ if (AddingAt != -1)
+ {
+ string CurrentItem = EndLinesBOM[AddingAt];
+ string[] SplittedCmds = CurrentItem.Split(';');
+
+ if (SplittedCmds.Length >= 1)
+ {
+ if (SplittedCmds[1].Contains(","))
+ {
+ string[] SplittedDesignator = SplittedCmds[1].Split(',');
+
+ EndLinesBOM[AddingAt] = "1;" + SplittedDesignator[0] + ";";
+ for (int i = 2; i < SplittedCmds.Length; i++) EndLinesBOM[AddingAt] += SplittedCmds[i] + ";";
+
+ for (int i = 1; i < SplittedDesignator.Length; i++)
+ {
+ EndLinesBOM.Add("1;" + SplittedDesignator[i].Substring(1) + ";");
+ for (int i2 = 2; i2 < SplittedCmds.Length; i2++) EndLinesBOM[EndLinesBOM.Count - 1] += SplittedCmds[i2] + ";";
+
+ MoveLine(true, AddingAt + i);
+ }
+
+ SpawnGridBOM();
+ }
+ }
+ }
+ }
+
+ private void dataGridView1_Click(object sender, EventArgs e)
+ {
+ if (!Opened_BOM)
+ {
+ LoadFile(true);
+ }
+ else
+ {
+ int AddingAt = -1;
+ if (dataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0)
+ {
+ AddingAt = dataGridView1.SelectedCells[0].RowIndex;
+ }
+
+ if (AddingAt != -1)
+ {
+ if (dataGridView1.Rows[AddingAt].Cells.Count >= 2)
+ {
+ label2.Text = dataGridView1.Rows[AddingAt].Cells[1].Value.ToString();
+ }
+ }
+ }
+ }
+
+ private void dataGridView2_Click(object sender, EventArgs e)
+ {
+ if (!Opened_CPL)
+ {
+ LoadFile(false);
+ }
+ else
+ {
+ int AddingAt = -1;
+ if (dataGridView2.GetCellCount(DataGridViewElementStates.Selected) > 0)
+ {
+ AddingAt = dataGridView2.SelectedCells[0].RowIndex;
+ }
+
+ if (AddingAt != -1)
+ {
+ if (dataGridView2.Rows[AddingAt].Cells.Count >= 5)
+ {
+ Loading = true;
+ if (dataGridView2.Rows[AddingAt].Cells[3].Value.ToString() == "TOP") comboBox1.SelectedIndex = 0;
+ if (dataGridView2.Rows[AddingAt].Cells[3].Value.ToString() == "BOTTOM") comboBox1.SelectedIndex = 1;
+
+ if (dataGridView2.Rows[AddingAt].Cells[4].Value.ToString() == "0") comboBox2.SelectedIndex = 0;
+ if (dataGridView2.Rows[AddingAt].Cells[4].Value.ToString() == "90") comboBox2.SelectedIndex = 1;
+ if (dataGridView2.Rows[AddingAt].Cells[4].Value.ToString() == "180") comboBox2.SelectedIndex = 2;
+ if (dataGridView2.Rows[AddingAt].Cells[4].Value.ToString() == "270") comboBox2.SelectedIndex = 3;
+ Loading = false;
+ }
+ }
+ }
+ }
+
+ private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (!Loading)
+ {
+ int AddingAt = -1;
+ if (dataGridView2.GetCellCount(DataGridViewElementStates.Selected) > 0)
+ {
+ AddingAt = dataGridView2.SelectedCells[0].RowIndex;
+ }
+
+ if (AddingAt != -1)
+ {
+ AddingAt++;
+ string[] SplittedCmds = EndLinesCPL[AddingAt].Split(';');
+ EndLinesCPL[AddingAt] = SplittedCmds[0] + ";" + SplittedCmds[1] + ";" + SplittedCmds[2] + ";" + comboBox1.Text + ";" + SplittedCmds[4] + ";";
+
+ SpawnGridCPL();
+ }
+ }
+ }
+
+ private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (!Loading)
+ {
+ for (int i = 0; i < dataGridView2.Rows.Count; i++)
+ {
+ if (ItemSelectedInThisRow(dataGridView2, i))
+ {
+ int AddingAt = i + 1;
+ string[] SplittedCmds = EndLinesCPL[AddingAt].Split(';');
+ EndLinesCPL[AddingAt] = SplittedCmds[0] + ";" + SplittedCmds[1] + ";" + SplittedCmds[2] + ";" + SplittedCmds[3] + ";" + comboBox2.Text + ";";
+
+ //SpawnGridCPL();
+ }
+ }
+ SpawnGridCPL();
+
+ //##########################
+ /*int AddingAt = -1;
+ if (dataGridView2.GetCellCount(DataGridViewElementStates.Selected) > 0)
+ {
+ AddingAt = dataGridView2.SelectedCells[0].RowIndex;
+ }
+
+ if (AddingAt != -1)
+ {
+ AddingAt++;
+ string[] SplittedCmds = EndLinesCPL[AddingAt].Split(';');
+ EndLinesCPL[AddingAt] = SplittedCmds[0] + ";" + SplittedCmds[1] + ";" + SplittedCmds[2] + ";" + SplittedCmds[3] + ";" + comboBox2.Text + ";";
+
+ SpawnGridCPL();
+ }*/
+ }
+ }
+
+ private void button1_Click_1(object sender, EventArgs e)
+ {
+ int AddingAt = -1;
+ if (dataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0)
+ {
+ AddingAt = dataGridView1.SelectedCells[0].RowIndex + 1;
+ }
+
+ if (AddingAt != -1)
+ {
+ string[] SplittedCmds = EndLinesBOM[AddingAt].Split(';');
+
+ string Search1 = SplittedCmds[2];
+ string Search2 = SplittedCmds[3];
+
+ bool FirstFound = true;
+ string AddedDesignator = "";
+ int NewQuantity = 1;
+
+ for (int i = 1; i < EndLinesBOM.Count; i++)
+ {
+ string[] SplittedCmdsInner = EndLinesBOM[i].Split(';');
+ if (SplittedCmdsInner.Length >= 4)
+ {
+ if (SplittedCmdsInner[2] == Search1 && SplittedCmdsInner[3] == Search2)
+ {
+ if (FirstFound)
+ {
+ FirstFound = false;
+ }
+ else
+ {
+ AddedDesignator += ", " + SplittedCmdsInner[1];
+ NewQuantity++;
+ EndLinesBOM.RemoveAt(i);
+ i--;
+ }
+ }
+ }
+ }
+
+ for (int i = 1; i < EndLinesBOM.Count; i++)
+ {
+ string[] SplittedCmdsInner = EndLinesBOM[i].Split(';');
+ if (SplittedCmdsInner.Length >= 4)
+ {
+ if (SplittedCmdsInner[2] == Search1 && SplittedCmdsInner[3] == Search2)
+ {
+ EndLinesBOM[i] = NewQuantity + ";" + SplittedCmdsInner[1] + AddedDesignator + ";";
+ for (int i2 = 2; i2 < SplittedCmdsInner.Length; i2++) EndLinesBOM[i] += SplittedCmdsInner[i2] + ";";
+ }
+ }
+ }
+
+ SpawnGridBOM();
+ }
+ }
+
+ private void label5_Click(object sender, EventArgs e)
+ {
+ LoadFile(true);
+ }
+
+ private void label6_Click(object sender, EventArgs e)
+ {
+ LoadFile(false);
+ }
+
+ private void lSCSPartsListFromBOMcsvToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ DialogResult result = openFileDialog1.ShowDialog();
+ if (result == DialogResult.OK)
+ {
+ string[] AllLines = File.ReadAllLines(openFileDialog1.FileName);
+
+ if (AllLines.Length > 0)
+ {
+ bool DoingPartsList2 = false;
+ bool AlreadyConverted2 = false;
+ bool CanGo = true;
+
+ for (int i = 0; i < AllLines.Length; i++)
+ {
+ if (i == 0)
+ {
+ if (AllLines[i].Contains(";") || AllLines[i].Contains("Footprint")) DoingPartsList2 = true;
+ if (AllLines[i].Contains("Designator")) AlreadyConverted2 = true;
+ }
+
+ if (CanGo)
+ {
+ if (AlreadyConverted2)
+ {
+ string ThisRemadeLine = "";
+
+ if (DoingPartsList2)
+ {
+ //5,"D2, D3, D4, D5, D8",LED-0603,
+ string CuttingLine = AllLines[i];
+ while (CuttingLine.Contains(","))
+ {
+ bool HasComma = false;
+ if (CuttingLine[0] == '\"') HasComma = true;
+
+ if (!HasComma) ThisRemadeLine += CuttingLine.Substring(0, CuttingLine.IndexOf(","));
+ else ThisRemadeLine += CuttingLine.Substring(1, CuttingLine.IndexOf("\",") - 1);
+ ThisRemadeLine += ";";
+
+
+ if (!HasComma) CuttingLine = CuttingLine.Substring(CuttingLine.IndexOf(",") + 1);
+ else CuttingLine = CuttingLine.Substring(CuttingLine.IndexOf("\",") + 2);
+ }
+
+ string[] SplittedCmdsInner = ThisRemadeLine.Split(';');
+ if (SplittedCmdsInner.Length >= 5)
+ {
+ string Search1 = SplittedCmdsInner[2];
+ string Search2 = SplittedCmdsInner[3];
+ string LSCS_Part = SplittedCmdsInner[4];
+ SearchAddLSCS(Search1, Search2, LSCS_Part);
+ }
+ }
+ }
+ }
+ }
+
+ SpawnGridBOM();
+ }
+ }
+ }
+
+ private void SearchAddLSCS(string Search1, string Search2, string LSCS_Part)
+ {
+ for (int i = 1; i < EndLinesBOM.Count; i++)
+ {
+ string[] SplittedCmdsInner = EndLinesBOM[i].Split(';');
+ if (SplittedCmdsInner.Length >= 4)
+ {
+ if (SplittedCmdsInner[2] == Search1 && SplittedCmdsInner[3] == Search2)
+ {
+ EndLinesBOM[i] = SplittedCmdsInner[0] + ";" + SplittedCmdsInner[1] + ";" + SplittedCmdsInner[2] + ";" + SplittedCmdsInner[3] + ";" + LSCS_Part + ";";
+ }
+ }
+ }
+ }
+
+ private void dataGridView1_Validated(object sender, EventArgs e)
+ {
+ //UpdateBOMLines();
+ }
+
+ private void UpdateBOMLines()
+ {
+ EndLinesBOM.Clear();
+ EndLinesBOM.Add("Qty;Designator;Footprint;Comment;LCSC");
+
+ for (int i = 0; i < dataGridView1.Rows.Count; i++)
+ {
+ string RemadeLine = "";
+ for (int i2 = 0; i2 < dataGridView1.Columns.Count; i2++)
+ {
+ if (i2 < dataGridView1.Rows[i].Cells.Count)
+ {
+ try
+ {
+ RemadeLine += dataGridView1.Rows[i].Cells[i2].Value.ToString() + ";";
+ }
+ catch
+ {
+ //RemadeLine += ";";
+ }
+ }
+ else
+ {
+ //RemadeLine += ";";
+ }
+ }
+ EndLinesBOM.Add(RemadeLine);
+ }
+ }
+
+ private void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)
+ {
+ //if (!Loading) UpdateBOMLines();
+ }
+
+ private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
+ {
+ if (!Loading) UpdateBOMLines();
+ }
+
+ private void button3_Click_1(object sender, EventArgs e)
+ {
+ for (int i = 0; i < dataGridView2.Rows.Count; i++)
+ {
+ try
+ {
+ if (ItemSelectedInThisRow(dataGridView2, i))
+ {
+ int OriginalAngleValue = int.Parse(dataGridView2.Rows[i].Cells[4].Value.ToString());
+
+ OriginalAngleValue = OriginalAngleValue + 90;
+ if (OriginalAngleValue > 270) OriginalAngleValue = 0;
+
+ int AddingAt = i + 1;
+ string[] SplittedCmds = EndLinesCPL[AddingAt].Split(';');
+ EndLinesCPL[AddingAt] = SplittedCmds[0] + ";" + SplittedCmds[1] + ";" + SplittedCmds[2] + ";" + SplittedCmds[3] + ";" + (OriginalAngleValue).ToString() + ";";
+
+ dataGridView2.Rows[i].Cells[4].Selected = true;
+ //SpawnGridCPL();
+ }
+ }
+ catch { }
+ }
+ SpawnGridCPL();
+ }
+
+ bool ItemSelectedInThisRow(DataGridView ThidGrid, int RowIndex)
+ {
+ bool IsSelected = false;
+ for (int i = 0; i < ThidGrid.Columns.Count; i++)
+ {
+ if (ThidGrid.Rows[RowIndex].Cells[i].Selected) IsSelected = true;
+ }
+ return IsSelected;
+ }
+
+ private void button6_Click(object sender, EventArgs e)
+ {
+ for (int i = 0; i < dataGridView2.Rows.Count; i++)
+ {
+ try
+ {
+ if (ItemSelectedInThisRow(dataGridView2, i))
+ {
+ int OriginalAngleValue = int.Parse(dataGridView2.Rows[i].Cells[4].Value.ToString());
+
+ OriginalAngleValue = OriginalAngleValue - 90;
+ if (OriginalAngleValue < 0) OriginalAngleValue = 270;
+
+ int AddingAt = i + 1;
+ string[] SplittedCmds = EndLinesCPL[AddingAt].Split(';');
+ EndLinesCPL[AddingAt] = SplittedCmds[0] + ";" + SplittedCmds[1] + ";" + SplittedCmds[2] + ";" + SplittedCmds[3] + ";" + (OriginalAngleValue).ToString() + ";";
+
+ //SpawnGridCPL();
+ }
+ }
+ catch { }
+ }
+ SpawnGridCPL();
+ }
+
+ private void button7_Click(object sender, EventArgs e)
+ {
+ Form2 Form2_0 = new Form2();
+ DialogResult result = Form2_0.ShowDialog();
+ if (result == DialogResult.OK)
+ {
+ for (int i = 0; i < dataGridView2.Rows.Count; i++)
+ {
+ if (ItemSelectedInThisRow(dataGridView2, i))
+ {
+ double TestVal = -9999.9;
+ try
+ {
+ TestVal = double.Parse(dataGridView2.Rows[i].Cells[1].Value.ToString());
+ }
+ catch
+ {
+ try
+ {
+ TestVal = double.Parse(dataGridView2.Rows[i].Cells[1].Value.ToString().Replace(".", ","));
+ }
+ catch { }
+ }
+ if (TestVal != -9999.9)
+ {
+ int AddingAt = i + 1;
+ string[] SplittedCmds = EndLinesCPL[AddingAt].Split(';');
+ EndLinesCPL[AddingAt] = SplittedCmds[0] + ";" + (TestVal + Form2_0.IncreaserVal).ToString().Replace(",", ".") + ";" + SplittedCmds[2] + ";" + SplittedCmds[3] + ";" + SplittedCmds[4] + ";";
+
+ //SpawnGridCPL();
+ }
+ }
+ }
+ SpawnGridCPL();
+ }
+
+ if (Form2_0 != null)
+ {
+ try
+ {
+ Form2_0.Dispose();
+ }
+ catch { }
+ Form2_0 = null;
+ }
+ }
+
+ private void button8_Click(object sender, EventArgs e)
+ {
+ Form2 Form2_0 = new Form2();
+ DialogResult result = Form2_0.ShowDialog();
+ if (result == DialogResult.OK)
+ {
+ for (int i = 0; i < dataGridView2.Rows.Count; i++)
+ {
+ if (ItemSelectedInThisRow(dataGridView2, i))
+ {
+ double TestVal = -9999.9;
+ try
+ {
+ TestVal = double.Parse(dataGridView2.Rows[i].Cells[2].Value.ToString());
+ }
+ catch
+ {
+ try
+ {
+ TestVal = double.Parse(dataGridView2.Rows[i].Cells[2].Value.ToString().Replace(".", ","));
+ }
+ catch { }
+ }
+ if (TestVal != -9999.9)
+ {
+ int AddingAt = i + 1;
+ string[] SplittedCmds = EndLinesCPL[AddingAt].Split(';');
+ EndLinesCPL[AddingAt] = SplittedCmds[0] + ";" + SplittedCmds[1] + ";" + (TestVal + Form2_0.IncreaserVal).ToString().Replace(",", ".") + ";" + SplittedCmds[3] + ";" + SplittedCmds[4] + ";";
+
+ //SpawnGridCPL();
+ }
+ }
+ }
+ SpawnGridCPL();
+ }
+
+ if (Form2_0 != null)
+ {
+ try
+ {
+ Form2_0.Dispose();
+ }
+ catch { }
+ Form2_0 = null;
+ }
+ }
+ }
+}
diff --git a/Form1.resx b/Form1.resx
new file mode 100644
index 0000000..eb3c71d
--- /dev/null
+++ b/Form1.resx
@@ -0,0 +1,544 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ 17, 17
+
+
+ 153, 17
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ True
+
+
+ 293, 17
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+
+
+
+
+ AAABAAEAAAAAAAEAIABUVQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAVRtJ
+ REFUeNrtnXd0FdX2x7/7TLktvQGhJTRpoqKAigXL02fX9+xdf+qzN1BRURR7wYq996fP3rsURUCU3jsp
+ JCE9uW1mztm/P4IFSUhyE3KTMJ+1WKyVO3NmnzPn7DllF8DFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXF
+ xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXF
+ xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXF
+ xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxaXDQvEWwKWdc8JDACsYu+yjUSBN
+ Y9OnIbGLjzQ9ALAPDB+YvQC8AAwAGsBa3f8kAGYAEiAJwAbBAhABUxiEEJhqEQkFObjJ4VCF42xYJuHx
+ AS+dFu+a7xS4CsAFxn0bASssyJ/igdD97E1IJYiuIHSBpnUBU1eAM8DIBJABomQAPgCeLf/MLf90AGLL
+ Pw11/YsBqC3/HAA2AAtAFEAEQBjgGjBKARSDqBAsN0FxIRMVQjpFiFRWq0htWOvWV1ozXgVeOifeTdZp
+ cBXATkbgLYZVVO0hTaTA9GYCIgfgviCRC0JvMHqBKANAAoAA6gZ4W8MAwgBqAFQAvAGgNWC1koFlxGoN
+ WcHNdkVZDTSN1YSceDdrh8VVAJ0Yf4hhP7BBE+lZ6UwiG5oxAMCuIBoAor4AegBIRN30XcRb3iagAIQA
+ lAJYCVYLmPkXSGspK3ujfGJkjbbrSXD+d2e85ewwuAqgk+C5YRq4pgiUPdzk1B5dQFp/aNowgIaDaCCA
+ 3gBSUbdO70xYAEoAXg7mmXCsH1nQYlm6pkQfPVhazzwGvH1VvGVst7gKoANjfMnAgnwDCRmZJLRBIG04
+ iEaBaBCAnqibxu9s77gWwBow/wxW37K056jqTZtINxznup7xlq3dsbN1jg6N/ngpmJg0RyTD8PeBbo4A
+ 0T4A7Ym6AZ8E953+lTDqlMEPrJzPOFj+ixOqLQdLYOIu8ZatXeB2lnaOZ9JKUKhKyOyBXcj07gqh7Q/Q
+ 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
+ cXHZ2fl/9TpSgr45pmAAAAAASUVORK5CYII=
+
+
+
\ No newline at end of file
diff --git a/Form2.Designer.cs b/Form2.Designer.cs
new file mode 100644
index 0000000..84e6d6f
--- /dev/null
+++ b/Form2.Designer.cs
@@ -0,0 +1,88 @@
+namespace JLC_SMT_Helper
+{
+ partial class Form2
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.label1 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(33, 9);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(195, 26);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "Set Increase or Decrease amount value\r\n(can be negative)";
+ this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(73, 43);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(100, 20);
+ this.textBox1.TabIndex = 1;
+ //
+ // button1
+ //
+ this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.button1.Location = new System.Drawing.Point(73, 71);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(100, 23);
+ this.button1.TabIndex = 2;
+ this.button1.Text = "Apply";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // Form2
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(245, 98);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.label1);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "Form2";
+ this.ShowIcon = false;
+ this.Text = "Set Inc/Decrease Value";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Button button1;
+ }
+}
\ No newline at end of file
diff --git a/Form2.cs b/Form2.cs
new file mode 100644
index 0000000..1e07641
--- /dev/null
+++ b/Form2.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace JLC_SMT_Helper
+{
+
+ public partial class Form2 : Form
+ {
+ public double IncreaserVal = 0.0;
+
+ public Form2()
+ {
+ InitializeComponent();
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ IncreaserVal = double.Parse(textBox1.Text);
+ this.Close();
+ }
+ catch
+ {
+ MessageBox.Show("Unable to parse text '" + textBox1.Text + "' to a number value!");
+ //DialogResult = DialogResult.None;
+ button1.DialogResult = DialogResult.None;
+ }
+ }
+ }
+}
diff --git a/Form2.resx b/Form2.resx
new file mode 100644
index 0000000..29dcb1b
--- /dev/null
+++ b/Form2.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/JLC SMT Helper.csproj b/JLC SMT Helper.csproj
new file mode 100644
index 0000000..70014a2
--- /dev/null
+++ b/JLC SMT Helper.csproj
@@ -0,0 +1,93 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {F6BC17DD-FF51-45B3-9529-EC95DA686B36}
+ WinExe
+ JLC_SMT_Helper
+ JLC SMT Helper
+ v4.0
+ 512
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ file.ico
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form1.cs
+
+
+ Form
+
+
+ Form2.cs
+
+
+
+
+ Form1.cs
+
+
+ Form2.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/JLC SMT Helper.sln b/JLC SMT Helper.sln
new file mode 100644
index 0000000..888c44f
--- /dev/null
+++ b/JLC SMT Helper.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29418.71
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JLC SMT Helper", "JLC SMT Helper.csproj", "{F6BC17DD-FF51-45B3-9529-EC95DA686B36}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F6BC17DD-FF51-45B3-9529-EC95DA686B36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F6BC17DD-FF51-45B3-9529-EC95DA686B36}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F6BC17DD-FF51-45B3-9529-EC95DA686B36}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F6BC17DD-FF51-45B3-9529-EC95DA686B36}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {D4865978-308B-4643-8616-F739F2458D38}
+ EndGlobalSection
+EndGlobal
diff --git a/Program.cs b/Program.cs
new file mode 100644
index 0000000..4004779
--- /dev/null
+++ b/Program.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace JLC_SMT_Helper
+{
+ static class Program
+ {
+ ///
+ /// Point d'entrée principal de l'application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..5ba77e7
--- /dev/null
+++ b/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Les informations générales relatives à un assembly dépendent de
+// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
+// associées à un assembly.
+[assembly: AssemblyTitle("JLC SMT Helper")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("JLC SMT Helper")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
+// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
+// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
+[assembly: ComVisible(false)]
+
+// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
+[assembly: Guid("f6bc17dd-ff51-45b3-9529-ec95da686b36")]
+
+// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
+//
+// Version principale
+// Version secondaire
+// Numéro de build
+// Révision
+//
+// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
+// en utilisant '*', comme indiqué ci-dessous :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..6784ee7
--- /dev/null
+++ b/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// Ce code a été généré par un outil.
+// Version du runtime :4.0.30319.42000
+//
+// Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
+// le code est régénéré.
+//
+//------------------------------------------------------------------------------
+
+namespace JLC_SMT_Helper.Properties
+{
+
+
+ ///
+ /// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
+ ///
+ // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
+ // à l'aide d'un outil, tel que ResGen ou Visual Studio.
+ // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
+ // avec l'option /str ou régénérez votre projet VS.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("JLC_SMT_Helper.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Remplace la propriété CurrentUICulture du thread actuel pour toutes
+ /// les recherches de ressources à l'aide de cette classe de ressource fortement typée.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Properties/Resources.resx b/Properties/Resources.resx
new file mode 100644
index 0000000..ffecec8
--- /dev/null
+++ b/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..65eed21
--- /dev/null
+++ b/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace JLC_SMT_Helper.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Properties/Settings.settings b/Properties/Settings.settings
new file mode 100644
index 0000000..abf36c5
--- /dev/null
+++ b/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/bin/Debug/JLC SMT Helper.exe b/bin/Debug/JLC SMT Helper.exe
new file mode 100644
index 0000000..c40e443
Binary files /dev/null and b/bin/Debug/JLC SMT Helper.exe differ
diff --git a/bin/Debug/JLC SMT Helper.pdb b/bin/Debug/JLC SMT Helper.pdb
new file mode 100644
index 0000000..a300cdc
Binary files /dev/null and b/bin/Debug/JLC SMT Helper.pdb differ
diff --git a/file.ico b/file.ico
new file mode 100644
index 0000000..c4f203b
Binary files /dev/null and b/file.ico differ
diff --git a/file.png b/file.png
new file mode 100644
index 0000000..fd7d2e8
Binary files /dev/null and b/file.png differ
diff --git a/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/obj/Debug/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000..31614d3
Binary files /dev/null and b/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..49caecb
Binary files /dev/null and b/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/obj/Debug/JLC SMT Helper.csproj.FileListAbsolute.txt b/obj/Debug/JLC SMT Helper.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..0ccbf82
--- /dev/null
+++ b/obj/Debug/JLC SMT Helper.csproj.FileListAbsolute.txt
@@ -0,0 +1,9 @@
+C:\Users\boule\Documents\Visual Studio 2019\Projects\JLC SMT Helper\bin\Debug\JLC SMT Helper.exe
+C:\Users\boule\Documents\Visual Studio 2019\Projects\JLC SMT Helper\bin\Debug\JLC SMT Helper.pdb
+C:\Users\boule\Documents\Visual Studio 2019\Projects\JLC SMT Helper\obj\Debug\JLC SMT Helper.csprojAssemblyReference.cache
+C:\Users\boule\Documents\Visual Studio 2019\Projects\JLC SMT Helper\obj\Debug\JLC_SMT_Helper.Form1.resources
+C:\Users\boule\Documents\Visual Studio 2019\Projects\JLC SMT Helper\obj\Debug\JLC_SMT_Helper.Properties.Resources.resources
+C:\Users\boule\Documents\Visual Studio 2019\Projects\JLC SMT Helper\obj\Debug\JLC SMT Helper.csproj.GenerateResource.cache
+C:\Users\boule\Documents\Visual Studio 2019\Projects\JLC SMT Helper\obj\Debug\JLC SMT Helper.exe
+C:\Users\boule\Documents\Visual Studio 2019\Projects\JLC SMT Helper\obj\Debug\JLC SMT Helper.pdb
+C:\Users\boule\Documents\Visual Studio 2019\Projects\JLC SMT Helper\obj\Debug\JLC_SMT_Helper.Form2.resources
diff --git a/obj/Debug/JLC SMT Helper.csproj.GenerateResource.cache b/obj/Debug/JLC SMT Helper.csproj.GenerateResource.cache
new file mode 100644
index 0000000..76208bf
Binary files /dev/null and b/obj/Debug/JLC SMT Helper.csproj.GenerateResource.cache differ
diff --git a/obj/Debug/JLC SMT Helper.csprojAssemblyReference.cache b/obj/Debug/JLC SMT Helper.csprojAssemblyReference.cache
new file mode 100644
index 0000000..0d61543
Binary files /dev/null and b/obj/Debug/JLC SMT Helper.csprojAssemblyReference.cache differ
diff --git a/obj/Debug/JLC SMT Helper.exe b/obj/Debug/JLC SMT Helper.exe
new file mode 100644
index 0000000..c40e443
Binary files /dev/null and b/obj/Debug/JLC SMT Helper.exe differ
diff --git a/obj/Debug/JLC SMT Helper.pdb b/obj/Debug/JLC SMT Helper.pdb
new file mode 100644
index 0000000..a300cdc
Binary files /dev/null and b/obj/Debug/JLC SMT Helper.pdb differ
diff --git a/obj/Debug/JLC_SMT_Helper.Form1.resources b/obj/Debug/JLC_SMT_Helper.Form1.resources
new file mode 100644
index 0000000..1153b42
Binary files /dev/null and b/obj/Debug/JLC_SMT_Helper.Form1.resources differ
diff --git a/obj/Debug/JLC_SMT_Helper.Form2.resources b/obj/Debug/JLC_SMT_Helper.Form2.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/obj/Debug/JLC_SMT_Helper.Form2.resources differ
diff --git a/obj/Debug/JLC_SMT_Helper.Properties.Resources.resources b/obj/Debug/JLC_SMT_Helper.Properties.Resources.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/obj/Debug/JLC_SMT_Helper.Properties.Resources.resources differ