From d6fc763f9207f1daa250d276c873eabfccdea2db Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 21 Dec 2019 15:21:56 +0100 Subject: [PATCH 01/10] Aggiunto feedback running + hide/show finestre --- IOB-MAN/App.config | 7 +- IOB-MAN/IOBManPanel.Designer.cs | 183 ++++++++++++++++++++++++-------- IOB-MAN/IOBManPanel.cs | 114 +++++++++++++++++++- IOB-MAN/IOBManPanel.resx | 3 + 4 files changed, 254 insertions(+), 53 deletions(-) diff --git a/IOB-MAN/App.config b/IOB-MAN/App.config index 02dc44ed..073dc61f 100644 --- a/IOB-MAN/App.config +++ b/IOB-MAN/App.config @@ -4,9 +4,10 @@ - - - + + + \ No newline at end of file diff --git a/IOB-MAN/IOBManPanel.Designer.cs b/IOB-MAN/IOBManPanel.Designer.cs index df9ab084..121aa107 100644 --- a/IOB-MAN/IOBManPanel.Designer.cs +++ b/IOB-MAN/IOBManPanel.Designer.cs @@ -32,34 +32,47 @@ this.btnOpen = new System.Windows.Forms.Button(); this.btnClose = new System.Windows.Forms.Button(); this.MainTimer = new System.Windows.Forms.Timer(this.components); - this.lblNumChild = new System.Windows.Forms.Label(); this.dgvManagedItems = new System.Windows.Forms.DataGridView(); this.btnCloseAll = new System.Windows.Forms.Button(); this.btnRestartAll = new System.Windows.Forms.Button(); this.btnUpdateMode = new System.Windows.Forms.Button(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.tsslNumProc = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsProgBar = new System.Windows.Forms.ToolStripProgressBar(); + this.panel1 = new System.Windows.Forms.Panel(); + this.btnMinimizeAll = new System.Windows.Forms.Button(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnMaximixeAll = new System.Windows.Forms.Button(); ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).BeginInit(); + this.statusStrip1.SuspendLayout(); + this.panel1.SuspendLayout(); this.SuspendLayout(); // // btnOpen // - this.btnOpen.Location = new System.Drawing.Point(11, 11); - this.btnOpen.Margin = new System.Windows.Forms.Padding(2); + this.btnOpen.BackColor = System.Drawing.Color.Green; + this.btnOpen.ForeColor = System.Drawing.Color.Yellow; + this.btnOpen.Location = new System.Drawing.Point(14, 17); + this.btnOpen.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnOpen.Name = "btnOpen"; - this.btnOpen.Size = new System.Drawing.Size(108, 27); + this.btnOpen.Size = new System.Drawing.Size(128, 32); this.btnOpen.TabIndex = 1; - this.btnOpen.Text = "Open"; - this.btnOpen.UseVisualStyleBackColor = true; + this.btnOpen.Text = "Open ALL"; + this.btnOpen.UseVisualStyleBackColor = false; this.btnOpen.Click += new System.EventHandler(this.btnOpen_Click); // // btnClose // - this.btnClose.Location = new System.Drawing.Point(133, 11); - this.btnClose.Margin = new System.Windows.Forms.Padding(2); + this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnClose.BackColor = System.Drawing.Color.Red; + this.btnClose.ForeColor = System.Drawing.Color.Yellow; + this.btnClose.Location = new System.Drawing.Point(892, 17); + this.btnClose.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnClose.Name = "btnClose"; - this.btnClose.Size = new System.Drawing.Size(108, 27); + this.btnClose.Size = new System.Drawing.Size(128, 32); this.btnClose.TabIndex = 70; this.btnClose.Text = "Close SEL"; - this.btnClose.UseVisualStyleBackColor = true; + this.btnClose.UseVisualStyleBackColor = false; this.btnClose.Click += new System.EventHandler(this.btnClose_Click); // // MainTimer @@ -67,80 +80,154 @@ this.MainTimer.Interval = 500; this.MainTimer.Tick += new System.EventHandler(this.MainTimer_Tick); // - // lblNumChild - // - this.lblNumChild.AutoSize = true; - this.lblNumChild.Location = new System.Drawing.Point(12, 40); - this.lblNumChild.Name = "lblNumChild"; - this.lblNumChild.Size = new System.Drawing.Size(16, 13); - this.lblNumChild.TabIndex = 73; - this.lblNumChild.Text = "..."; - this.lblNumChild.Click += new System.EventHandler(this.lblNumChild_Click); - // // dgvManagedItems // this.dgvManagedItems.AllowUserToAddRows = false; this.dgvManagedItems.AllowUserToDeleteRows = false; + this.dgvManagedItems.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.dgvManagedItems.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgvManagedItems.Location = new System.Drawing.Point(11, 70); + this.dgvManagedItems.Location = new System.Drawing.Point(0, 69); + this.dgvManagedItems.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.dgvManagedItems.Name = "dgvManagedItems"; this.dgvManagedItems.ReadOnly = true; - this.dgvManagedItems.Size = new System.Drawing.Size(647, 246); + this.dgvManagedItems.RowHeadersWidth = 51; + this.dgvManagedItems.Size = new System.Drawing.Size(709, 404); this.dgvManagedItems.TabIndex = 75; + this.dgvManagedItems.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvManagedItems_CellDoubleClick); this.dgvManagedItems.SelectionChanged += new System.EventHandler(this.dgvManagedItems_SelectionChanged); // // btnCloseAll // - this.btnCloseAll.Location = new System.Drawing.Point(552, 11); - this.btnCloseAll.Margin = new System.Windows.Forms.Padding(2); + this.btnCloseAll.BackColor = System.Drawing.Color.Red; + this.btnCloseAll.ForeColor = System.Drawing.Color.Yellow; + this.btnCloseAll.Location = new System.Drawing.Point(282, 17); + this.btnCloseAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnCloseAll.Name = "btnCloseAll"; - this.btnCloseAll.Size = new System.Drawing.Size(108, 27); + this.btnCloseAll.Size = new System.Drawing.Size(128, 32); this.btnCloseAll.TabIndex = 77; this.btnCloseAll.Text = "Close ALL"; - this.btnCloseAll.UseVisualStyleBackColor = true; + this.btnCloseAll.UseVisualStyleBackColor = false; this.btnCloseAll.Click += new System.EventHandler(this.button1_Click); // // btnRestartAll // - this.btnRestartAll.Location = new System.Drawing.Point(429, 11); - this.btnRestartAll.Margin = new System.Windows.Forms.Padding(2); + this.btnRestartAll.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.btnRestartAll.Location = new System.Drawing.Point(148, 17); + this.btnRestartAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnRestartAll.Name = "btnRestartAll"; - this.btnRestartAll.Size = new System.Drawing.Size(108, 27); + this.btnRestartAll.Size = new System.Drawing.Size(128, 32); this.btnRestartAll.TabIndex = 78; this.btnRestartAll.Text = "Restart ALL"; - this.btnRestartAll.UseVisualStyleBackColor = true; + this.btnRestartAll.UseVisualStyleBackColor = false; this.btnRestartAll.Click += new System.EventHandler(this.button2_Click); // // btnUpdateMode // - this.btnUpdateMode.Location = new System.Drawing.Point(280, 11); - this.btnUpdateMode.Margin = new System.Windows.Forms.Padding(2); + this.btnUpdateMode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnUpdateMode.BackColor = System.Drawing.SystemColors.GradientActiveCaption; + this.btnUpdateMode.Location = new System.Drawing.Point(758, 17); + this.btnUpdateMode.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnUpdateMode.Name = "btnUpdateMode"; - this.btnUpdateMode.Size = new System.Drawing.Size(108, 27); + this.btnUpdateMode.Size = new System.Drawing.Size(128, 32); this.btnUpdateMode.TabIndex = 79; this.btnUpdateMode.Text = "Update mode"; - this.btnUpdateMode.UseVisualStyleBackColor = true; + this.btnUpdateMode.UseVisualStyleBackColor = false; + // + // statusStrip1 + // + this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsProgBar, + this.tsslNumProc}); + this.statusStrip1.Location = new System.Drawing.Point(0, 477); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(1032, 26); + this.statusStrip1.TabIndex = 82; + this.statusStrip1.Text = "statusStrip1"; + // + // tsslNumProc + // + this.tsslNumProc.Name = "tsslNumProc"; + this.tsslNumProc.Size = new System.Drawing.Size(18, 20); + this.tsslNumProc.Text = "..."; + // + // tsProgBar + // + this.tsProgBar.Name = "tsProgBar"; + this.tsProgBar.Size = new System.Drawing.Size(100, 18); + // + // panel1 + // + this.panel1.Controls.Add(this.btnMaximixeAll); + this.panel1.Controls.Add(this.btnMinimizeAll); + this.panel1.Controls.Add(this.btnOpen); + this.panel1.Controls.Add(this.btnRestartAll); + this.panel1.Controls.Add(this.btnCloseAll); + this.panel1.Controls.Add(this.btnUpdateMode); + this.panel1.Controls.Add(this.btnClose); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1032, 62); + this.panel1.TabIndex = 83; + // + // btnMinimizeAll + // + this.btnMinimizeAll.BackColor = System.Drawing.SystemColors.ControlDarkDark; + this.btnMinimizeAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; + this.btnMinimizeAll.Location = new System.Drawing.Point(550, 17); + this.btnMinimizeAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.btnMinimizeAll.Name = "btnMinimizeAll"; + this.btnMinimizeAll.Size = new System.Drawing.Size(128, 32); + this.btnMinimizeAll.TabIndex = 80; + this.btnMinimizeAll.Text = "Hide ALL"; + this.btnMinimizeAll.UseVisualStyleBackColor = false; + this.btnMinimizeAll.Click += new System.EventHandler(this.btnMinimizeAll_Click); + // + // panel2 + // + this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel2.Location = new System.Drawing.Point(716, 69); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(316, 405); + this.panel2.TabIndex = 84; + // + // btnMaximixeAll + // + this.btnMaximixeAll.BackColor = System.Drawing.SystemColors.Highlight; + this.btnMaximixeAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; + this.btnMaximixeAll.Location = new System.Drawing.Point(416, 17); + this.btnMaximixeAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.btnMaximixeAll.Name = "btnMaximixeAll"; + this.btnMaximixeAll.Size = new System.Drawing.Size(128, 32); + this.btnMaximixeAll.TabIndex = 81; + this.btnMaximixeAll.Text = "Show ALL"; + this.btnMaximixeAll.UseVisualStyleBackColor = false; + this.btnMaximixeAll.Click += new System.EventHandler(this.btnMaximixeAll_Click); // // IOBManPanel // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.ControlLight; - this.ClientSize = new System.Drawing.Size(670, 409); - this.Controls.Add(this.btnUpdateMode); - this.Controls.Add(this.btnRestartAll); - this.Controls.Add(this.btnCloseAll); + this.ClientSize = new System.Drawing.Size(1032, 503); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Controls.Add(this.statusStrip1); this.Controls.Add(this.dgvManagedItems); - this.Controls.Add(this.lblNumChild); - this.Controls.Add(this.btnClose); - this.Controls.Add(this.btnOpen); this.IsMdiContainer = true; - this.Margin = new System.Windows.Forms.Padding(2); + this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.Name = "IOBManPanel"; this.Text = "IOB MANAGER"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.IOBManPanel_FormClosing); this.Load += new System.EventHandler(this.IOBManPanel_Load_1); ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).EndInit(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.panel1.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); @@ -150,11 +237,17 @@ private System.Windows.Forms.Button btnOpen; private System.Windows.Forms.Button btnClose; private System.Windows.Forms.Timer MainTimer; - private System.Windows.Forms.Label lblNumChild; private System.Windows.Forms.DataGridView dgvManagedItems; private System.Windows.Forms.Button btnCloseAll; private System.Windows.Forms.Button btnRestartAll; private System.Windows.Forms.Button btnUpdateMode; - } + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ToolStripStatusLabel tsslNumProc; + private System.Windows.Forms.ToolStripProgressBar tsProgBar; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button btnMinimizeAll; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button btnMaximixeAll; + } } diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index 58e97ecf..6a169f21 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -2,12 +2,27 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Runtime.InteropServices; using System.Windows.Forms; namespace IOB_MAN { + + + public partial class IOBManPanel : Form { + #region area gestione hode/max finestre + + private const int SW_SHOWNORMAL = 1; + private const int SW_SHOWMINIMIZED = 2; + private const int SW_SHOWMAXIMIZED = 3; + [DllImport("user32.dll")] + private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); + + #endregion + + protected int countCheck = utils.CRI("chekMult"); /// /// Elenco ARGS (uno per child da avviare) /// @@ -25,11 +40,15 @@ namespace IOB_MAN { InitializeComponent(); myInit(); + updateStatus(); } private void myInit() { utils.lgInfo("Starting App"); + // init prog bar + tsProgBar.Maximum = 100; + tsProgBar.Step = 1; // gestione eventi binding source ElencoIOB.AddingNew += ElencoIOB_AddingNew; ElencoIOB.ListChanged += ElencoIOB_ListChanged; @@ -78,8 +97,7 @@ namespace IOB_MAN private void updateStatus() { // aggiorno labels - lblNumChild.Text = $"Avviati {ElencoIOB.Count} processi child"; - //dgvManagedItems.bind + tsslNumProc.Text = $"Avviati {ElencoIOB.Count} processi child"; } /// /// Chiama apertura + update status... @@ -105,7 +123,8 @@ namespace IOB_MAN psi = new ProcessStartInfo { FileName = TargetExe, - Arguments = item + Arguments = item, + WindowStyle = ProcessWindowStyle.Minimized }; //childProc.StartInfo = psi; @@ -211,9 +230,26 @@ namespace IOB_MAN /// private void MainTimer_Tick(object sender, EventArgs e) { - checkRunningchild(); - showUpdate(); + updateProgBar(); + countCheck--; + if (countCheck < 0) + { + countCheck = utils.CRI("chekMult"); + // se scaduto timer... + checkRunningchild(); + showUpdate(); + } } + + private void updateProgBar() + { + tsProgBar.PerformStep(); + if (tsProgBar.Value >= tsProgBar.Maximum) + { + tsProgBar.Value = 0; + } + } + /// /// Verifica se i proc child siano ancora in RUN /// @@ -323,6 +359,74 @@ namespace IOB_MAN { } + + + private void dgvManagedItems_CellDoubleClick(object sender, DataGridViewCellEventArgs e) + { + // seleziono riga... + int pid = -1; + if (e.RowIndex >= 0) + { + //dgvManagedItems.CurrentCell = dgvManagedItems.Rows[e.RowIndex].Cells[0]; + + dgvManagedItems.Rows[e.RowIndex].Selected = true; + using (var riga = dgvManagedItems.Rows[e.RowIndex]) + { + int.TryParse(riga.Cells["pID"].Value.ToString(), out pid); + if (pid >= 0) + { + // provo a vedere SE ci sia il processo e di conseguenza lo chiudo... + try + { + Process p = Process.GetProcessById(pid); + // cerco e chiudo quelli che mi interessano... + var windowsHandle = p.MainWindowHandle; + ShowWindowAsync(windowsHandle, SW_SHOWNORMAL); + } + catch + { + // errore era già chiuso.. + } + } + } + } + } + + private void btnMinimizeAll_Click(object sender, EventArgs e) + { + foreach (iobAdapt item in ElencoIOB.List) + { + try + { + Process p = Process.GetProcessById(item.pID); + // cerco e chiudo quelli che mi interessano... + var windowsHandle = p.MainWindowHandle; + ShowWindowAsync(windowsHandle, SW_SHOWMINIMIZED); + } + catch + { + // errore era già chiuso.. + } + } + } + + private void btnMaximixeAll_Click(object sender, EventArgs e) + { + foreach (iobAdapt item in ElencoIOB.List) + { + try + { + Process p = Process.GetProcessById(item.pID); + // cerco e chiudo quelli che mi interessano... + var windowsHandle = p.MainWindowHandle; + ShowWindowAsync(windowsHandle, SW_SHOWNORMAL); + } + catch + { + // errore era già chiuso.. + } + } + } } } diff --git a/IOB-MAN/IOBManPanel.resx b/IOB-MAN/IOBManPanel.resx index 414b3c46..4b7440da 100644 --- a/IOB-MAN/IOBManPanel.resx +++ b/IOB-MAN/IOBManPanel.resx @@ -120,4 +120,7 @@ 154, 17 + + 283, 17 + \ No newline at end of file From b826bc436dc7616e390fea8e6a27f2b160b5c78a Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 21 Dec 2019 15:28:45 +0100 Subject: [PATCH 02/10] Ok testato con ping... --- IOB-MAN/IOBManPanel.Designer.cs | 86 +++++++++++++++++++-------------- IOB-MAN/IOBManPanel.cs | 2 +- 2 files changed, 52 insertions(+), 36 deletions(-) diff --git a/IOB-MAN/IOBManPanel.Designer.cs b/IOB-MAN/IOBManPanel.Designer.cs index 121aa107..3020f1d4 100644 --- a/IOB-MAN/IOBManPanel.Designer.cs +++ b/IOB-MAN/IOBManPanel.Designer.cs @@ -32,7 +32,6 @@ this.btnOpen = new System.Windows.Forms.Button(); this.btnClose = new System.Windows.Forms.Button(); this.MainTimer = new System.Windows.Forms.Timer(this.components); - this.dgvManagedItems = new System.Windows.Forms.DataGridView(); this.btnCloseAll = new System.Windows.Forms.Button(); this.btnRestartAll = new System.Windows.Forms.Button(); this.btnUpdateMode = new System.Windows.Forms.Button(); @@ -41,11 +40,14 @@ this.tsProgBar = new System.Windows.Forms.ToolStripProgressBar(); this.panel1 = new System.Windows.Forms.Panel(); this.btnMinimizeAll = new System.Windows.Forms.Button(); - this.panel2 = new System.Windows.Forms.Panel(); this.btnMaximixeAll = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).BeginInit(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.dgvManagedItems = new System.Windows.Forms.DataGridView(); + this.panel2 = new System.Windows.Forms.Panel(); this.statusStrip1.SuspendLayout(); this.panel1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).BeginInit(); this.SuspendLayout(); // // btnOpen @@ -80,24 +82,6 @@ this.MainTimer.Interval = 500; this.MainTimer.Tick += new System.EventHandler(this.MainTimer_Tick); // - // dgvManagedItems - // - this.dgvManagedItems.AllowUserToAddRows = false; - this.dgvManagedItems.AllowUserToDeleteRows = false; - this.dgvManagedItems.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.dgvManagedItems.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgvManagedItems.Location = new System.Drawing.Point(0, 69); - this.dgvManagedItems.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); - this.dgvManagedItems.Name = "dgvManagedItems"; - this.dgvManagedItems.ReadOnly = true; - this.dgvManagedItems.RowHeadersWidth = 51; - this.dgvManagedItems.Size = new System.Drawing.Size(709, 404); - this.dgvManagedItems.TabIndex = 75; - this.dgvManagedItems.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvManagedItems_CellDoubleClick); - this.dgvManagedItems.SelectionChanged += new System.EventHandler(this.dgvManagedItems_SelectionChanged); - // // btnCloseAll // this.btnCloseAll.BackColor = System.Drawing.Color.Red; @@ -186,15 +170,6 @@ this.btnMinimizeAll.UseVisualStyleBackColor = false; this.btnMinimizeAll.Click += new System.EventHandler(this.btnMinimizeAll_Click); // - // panel2 - // - this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.panel2.Location = new System.Drawing.Point(716, 69); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(316, 405); - this.panel2.TabIndex = 84; - // // btnMaximixeAll // this.btnMaximixeAll.BackColor = System.Drawing.SystemColors.Highlight; @@ -208,26 +183,66 @@ this.btnMaximixeAll.UseVisualStyleBackColor = false; this.btnMaximixeAll.Click += new System.EventHandler(this.btnMaximixeAll_Click); // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 64.05038F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35.94961F)); + this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.dgvManagedItems, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 62); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1032, 415); + this.tableLayoutPanel1.TabIndex = 85; + // + // dgvManagedItems + // + this.dgvManagedItems.AllowUserToAddRows = false; + this.dgvManagedItems.AllowUserToDeleteRows = false; + this.dgvManagedItems.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.dgvManagedItems.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvManagedItems.Location = new System.Drawing.Point(4, 4); + this.dgvManagedItems.Margin = new System.Windows.Forms.Padding(4); + this.dgvManagedItems.Name = "dgvManagedItems"; + this.dgvManagedItems.ReadOnly = true; + this.dgvManagedItems.RowHeadersWidth = 51; + this.dgvManagedItems.Size = new System.Drawing.Size(652, 407); + this.dgvManagedItems.TabIndex = 76; + this.dgvManagedItems.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvManagedItems_CellDoubleClick); + // + // panel2 + // + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(663, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(366, 409); + this.panel2.TabIndex = 85; + // // IOBManPanel // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.ControlLight; this.ClientSize = new System.Drawing.Size(1032, 503); - this.Controls.Add(this.panel2); + this.Controls.Add(this.tableLayoutPanel1); this.Controls.Add(this.panel1); this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.dgvManagedItems); this.IsMdiContainer = true; this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.Name = "IOBManPanel"; this.Text = "IOB MANAGER"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.IOBManPanel_FormClosing); this.Load += new System.EventHandler(this.IOBManPanel_Load_1); - ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).EndInit(); this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); this.panel1.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -237,7 +252,6 @@ private System.Windows.Forms.Button btnOpen; private System.Windows.Forms.Button btnClose; private System.Windows.Forms.Timer MainTimer; - private System.Windows.Forms.DataGridView dgvManagedItems; private System.Windows.Forms.Button btnCloseAll; private System.Windows.Forms.Button btnRestartAll; private System.Windows.Forms.Button btnUpdateMode; @@ -246,8 +260,10 @@ private System.Windows.Forms.ToolStripProgressBar tsProgBar; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Button btnMinimizeAll; - private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Button btnMaximixeAll; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.DataGridView dgvManagedItems; } } diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index 6a169f21..64532bfc 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -67,7 +67,7 @@ namespace IOB_MAN { var rand = new Random(); // ne creo rand (5-15) di default... - for (int i = 0; i < rand.Next(5, 15); i++) + for (int i = 0; i < rand.Next(5, 10); i++) { ArgsList.Add("127.0.0.1"); } From dd5fd203d703d13790b4fcce743da0800848e7bf Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 21 Dec 2019 15:44:58 +0100 Subject: [PATCH 03/10] Abbozzato gestione restart --- IOB-MAN/App.config | 1 + IOB-MAN/IOBManPanel.cs | 92 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 83 insertions(+), 10 deletions(-) diff --git a/IOB-MAN/App.config b/IOB-MAN/App.config index 073dc61f..3dc05dd0 100644 --- a/IOB-MAN/App.config +++ b/IOB-MAN/App.config @@ -6,6 +6,7 @@ + diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index 64532bfc..dc208c10 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -22,7 +22,14 @@ namespace IOB_MAN #endregion - protected int countCheck = utils.CRI("chekMult"); + /// + /// Counter per verifica watchdog dei processi da riattivare... + /// + protected int watchDogMult = utils.CRI("watchDogMult"); + /// + /// Counter per verifica processi (ogni volta ceh va a zero faccio vero check) + /// + protected int chekMult = utils.CRI("chekMult"); /// /// Elenco ARGS (uno per child da avviare) /// @@ -224,18 +231,81 @@ namespace IOB_MAN } /// - /// Effettua tutte le verifiche periodiche... + /// Effettua tutte le verifiche periodiche a timer... /// /// /// private void MainTimer_Tick(object sender, EventArgs e) { updateProgBar(); - countCheck--; - if (countCheck < 0) + chekProcessStatus(); + checkWatchdog(); + } + /// + /// Controllo periodico dei processi DA RIATTIVARE + /// + private void checkWatchdog() + { + watchDogMult--; + if (watchDogMult < 0) { - countCheck = utils.CRI("chekMult"); - // se scaduto timer... + watchDogMult = utils.CRI("watchDogMult"); + // verifico se ci siano processi (da ARGS LIST) NON running --> li riavvio! + List proc2restart = new List(); + foreach (iobAdapt item in ElencoIOB.List) + { + if (!item.isRunning) + { + // segno da eliminare e riavviare + proc2restart.Add(item); + } + } + // se ho da riavviare... elimino! + foreach (var item in proc2restart) + { + ElencoIOB.Remove(item); + utils.lgInfo($"Chiusura processo non running | IOB: {item.CodIOB} | pid: {item.pID}"); + } + // aggiorno datagrid! + dgvManagedItems.Invalidate(); + ProcessStartInfo psi = null; + // li faccio ripartire! + foreach (var item in proc2restart) + { + // da testare x aprire chiudere risorsa... + psi = new ProcessStartInfo + { + FileName = TargetExe, + Arguments = item.CodIOB, + WindowStyle = ProcessWindowStyle.Minimized + }; + + //childProc.StartInfo = psi; + Process p = Process.Start(psi); + // accodo nuovo IOB... + iobAdapt newIob = new iobAdapt(); + DateTime adesso = DateTime.Now; + newIob.CodIOB = item.CodIOB; + newIob.startTime = adesso; + newIob.pID = p.Id; + newIob.isRunning = true; + // aggiungo a datasource + ElencoIOB.Add(newIob); + utils.lgInfo($"Riavvio processo | IOB: {newIob.CodIOB} | pid: {newIob.pID}"); + } + // aggiorno datagrid! + dgvManagedItems.Invalidate(); + } + } + /// + /// Controllo periodico dei processi attivi + /// + private void chekProcessStatus() + { + chekMult--; + if (chekMult < 0) + { + chekMult = utils.CRI("chekMult"); checkRunningchild(); showUpdate(); } @@ -255,8 +325,6 @@ namespace IOB_MAN /// private void checkRunningchild() { - int pid = 0; - List proc2rem = new List(); List item2rem = new List(); bool needRem = false; @@ -277,15 +345,19 @@ namespace IOB_MAN } if (needRem) { - proc2rem.Add(item.pID); item2rem.Add(item); + item.isRunning = false; + } + else + { + item.isRunning = true; } } // ora procdedo alla cancellazione... foreach (var item in item2rem) { - ElencoIOB.Remove(item); + //ElencoIOB.Remove(item); } // aggiorno datagrid! dgvManagedItems.Invalidate(); From 171d4290f6f937ea04f161c7e7593687fe015eba Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 21 Dec 2019 15:47:57 +0100 Subject: [PATCH 04/10] =?UTF-8?q?Update=20calcolo=20uptime=20REALE=20dei?= =?UTF-8?q?=20processi=20finch=C3=A9=20attivi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IOB-MAN/IOBManPanel.cs | 10 +++++----- IOB-MAN/iobAdapt.cs | 10 ++++++++-- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index dc208c10..40283e65 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -266,8 +266,7 @@ namespace IOB_MAN ElencoIOB.Remove(item); utils.lgInfo($"Chiusura processo non running | IOB: {item.CodIOB} | pid: {item.pID}"); } - // aggiorno datagrid! - dgvManagedItems.Invalidate(); + // gestisco processi chiusi ProcessStartInfo psi = null; // li faccio ripartire! foreach (var item in proc2restart) @@ -353,12 +352,13 @@ namespace IOB_MAN item.isRunning = true; } } - +#if false // ora procdedo alla cancellazione... foreach (var item in item2rem) { - //ElencoIOB.Remove(item); - } + ElencoIOB.Remove(item); + } +#endif // aggiorno datagrid! dgvManagedItems.Invalidate(); } diff --git a/IOB-MAN/iobAdapt.cs b/IOB-MAN/iobAdapt.cs index 94df4ed5..312c31da 100644 --- a/IOB-MAN/iobAdapt.cs +++ b/IOB-MAN/iobAdapt.cs @@ -4,6 +4,7 @@ namespace IOB_MAN { public class iobAdapt { + protected DateTime lastSeen { get; set; } = DateTime.Now; /// /// Codice univoco macchina /// @@ -15,7 +16,7 @@ namespace IOB_MAN /// /// DataOra avvio dell'IOB /// - public DateTime startTime { get; set; } + public DateTime startTime { get; set; } = DateTime.Now; /// /// Calcola uptime processo... /// @@ -23,7 +24,12 @@ namespace IOB_MAN { get { - TimeSpan uptime = DateTime.Now.Subtract(startTime); + // in primis cerco SE sia running --> aggiorno lastSeen + if (isRunning) + { + lastSeen = DateTime.Now; + } + TimeSpan uptime = lastSeen.Subtract(startTime); return utils.FormatTimeSpan(uptime); } } From 7720004979762d12df4d49868fbaf0c8dcf22c22 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 21 Dec 2019 16:14:58 +0100 Subject: [PATCH 05/10] Completati metodi avvio/riavvio/conteggio/reset... --- IOB-MAN/IOBManPanel.cs | 108 +++++++++++++++++++++++++++++------------ Jenkinsfile | 2 +- 2 files changed, 78 insertions(+), 32 deletions(-) diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index 40283e65..19491696 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -22,6 +22,14 @@ namespace IOB_MAN #endregion + /// + /// Totale processi avviati + /// + protected int numProcAvviati; + /// + /// Totale processi running + /// + protected int numProcRunning; /// /// Counter per verifica watchdog dei processi da riattivare... /// @@ -104,7 +112,20 @@ namespace IOB_MAN private void updateStatus() { // aggiorno labels - tsslNumProc.Text = $"Avviati {ElencoIOB.Count} processi child"; + tsslNumProc.Text = $"Configurati {ArgsList.Count} processi | Avviati: {numProcAvviati} | Attivi: {numProcRunning}"; + // colore da num proc... + if (numProcRunning == ArgsList.Count) + { + tsslNumProc.ForeColor = System.Drawing.Color.Green; + } + else if (numProcAvviati < ArgsList.Count) + { + tsslNumProc.ForeColor = System.Drawing.Color.DarkRed; + } + else + { + tsslNumProc.ForeColor = System.Drawing.Color.OrangeRed; + } } /// /// Chiama apertura + update status... @@ -149,7 +170,8 @@ namespace IOB_MAN utils.lgInfo($"Avviato child process per {item} | pid: {p.Id}"); } - + numProcAvviati = ArgsList.Count; + numProcRunning = numProcAvviati; #if false string path = Application.StartupPath; @@ -213,11 +235,12 @@ namespace IOB_MAN { // errore era già chiuso.. } - // rimuovo da datasource - ElencoIOB.RemoveAt(riga.Index); + // indico NON running su datasource + ((iobAdapt)ElencoIOB[riga.Index]).isRunning = false; } } } + updateStatus(); } /// /// Cerca nell'elenco il processo corrente @@ -306,7 +329,7 @@ namespace IOB_MAN { chekMult = utils.CRI("chekMult"); checkRunningchild(); - showUpdate(); + updateStatus(); } } @@ -327,6 +350,8 @@ namespace IOB_MAN List item2rem = new List(); bool needRem = false; + numProcRunning = numProcAvviati; + // leggo 1 sola volta TUTTO elenco processi... Process[] processList = Process.GetProcesses(); @@ -346,6 +371,7 @@ namespace IOB_MAN { item2rem.Add(item); item.isRunning = false; + numProcRunning--; } else { @@ -361,11 +387,7 @@ namespace IOB_MAN #endif // aggiorno datagrid! dgvManagedItems.Invalidate(); - } - - private void showUpdate() - { - // aggiorna visualizzazioni... + updateStatus(); } private void IOBManPanel_FormClosing(object sender, FormClosingEventArgs e) @@ -385,11 +407,25 @@ namespace IOB_MAN foreach (var item in item2rem) { - Process p = Process.GetProcessById(item.pID); - p.CloseMainWindow(); - ElencoIOB.Remove(item); + if (item.isRunning) + { + try + { + Process p = Process.GetProcessById(item.pID); + p.CloseMainWindow(); + ElencoIOB.Remove(item); + } + catch + { } + } } + // resetto elenco! + ElencoIOB.Clear(); + numProcAvviati = 0; + numProcRunning = 0; + // update! + updateStatus(); } private void dgvManagedItems_SelectionChanged(object sender, EventArgs e) @@ -413,6 +449,7 @@ namespace IOB_MAN private void button1_Click(object sender, EventArgs e) { closeAllChild(); + updateStatus(); } private void button2_Click(object sender, EventArgs e) @@ -420,6 +457,7 @@ namespace IOB_MAN // chiude tutto closeAllChild(); apriChild(); + updateStatus(); } private void lblNumChild_Click(object sender, EventArgs e) @@ -468,16 +506,20 @@ namespace IOB_MAN { foreach (iobAdapt item in ElencoIOB.List) { - try + if (item.isRunning) { - Process p = Process.GetProcessById(item.pID); - // cerco e chiudo quelli che mi interessano... - var windowsHandle = p.MainWindowHandle; - ShowWindowAsync(windowsHandle, SW_SHOWMINIMIZED); - } - catch - { - // errore era già chiuso.. + try + { + Process p = Process.GetProcessById(item.pID); + // cerco e chiudo quelli che mi interessano... + var windowsHandle = p.MainWindowHandle; + ShowWindowAsync(windowsHandle, SW_SHOWMINIMIZED); + } + catch (Exception exc) + { + // errore era già chiuso.. + utils.lgError($"Errore in HIDE windows:{Environment.NewLine}{exc}"); + } } } } @@ -486,16 +528,20 @@ namespace IOB_MAN { foreach (iobAdapt item in ElencoIOB.List) { - try + if (item.isRunning) { - Process p = Process.GetProcessById(item.pID); - // cerco e chiudo quelli che mi interessano... - var windowsHandle = p.MainWindowHandle; - ShowWindowAsync(windowsHandle, SW_SHOWNORMAL); - } - catch - { - // errore era già chiuso.. + try + { + Process p = Process.GetProcessById(item.pID); + // cerco e chiudo quelli che mi interessano... + var windowsHandle = p.MainWindowHandle; + ShowWindowAsync(windowsHandle, SW_SHOWNORMAL); + } + catch (Exception exc) + { + // errore era già chiuso.. + utils.lgError($"Errore in SHOW windows:{Environment.NewLine}{exc}"); + } } } } diff --git a/Jenkinsfile b/Jenkinsfile index 3df230c4..f8ae983d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ pipeline { /* calcolo numero versione... diverso x branch MASTER/DEVELOP */ script { - withEnv(['NEXT_BUILD_NUMBER=613']) { + withEnv(['NEXT_BUILD_NUMBER=615']) { // env.versionNumber = VersionNumber(versionNumberString : '3.0.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true) env.versionNumber = VersionNumber(versionNumberString : '3.0.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}') env.APP_NAME = 'MAPO-IOB-WIN' From 8c7d157958ecc224360eeecb426abed5dfad2137 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sun, 22 Dec 2019 10:34:12 +0100 Subject: [PATCH 06/10] Gestione chiusura con ricerca NOME file exe --- IOB-MAN/IOB-MAN.csproj | 3 + IOB-MAN/IOBManPanel.Designer.cs | 197 +++++++++++++++++++------------- IOB-MAN/IOBManPanel.cs | 73 +++++++----- IOB-MAN/IOBManPanel.resx | 3 + IOB-MAN/Resources/SteamWare.ico | Bin 0 -> 279582 bytes 5 files changed, 171 insertions(+), 105 deletions(-) create mode 100644 IOB-MAN/Resources/SteamWare.ico diff --git a/IOB-MAN/IOB-MAN.csproj b/IOB-MAN/IOB-MAN.csproj index 7f92fa24..6a1194b4 100644 --- a/IOB-MAN/IOB-MAN.csproj +++ b/IOB-MAN/IOB-MAN.csproj @@ -63,6 +63,9 @@ + + Always + IOBManPanel.cs diff --git a/IOB-MAN/IOBManPanel.Designer.cs b/IOB-MAN/IOBManPanel.Designer.cs index 3020f1d4..04b8d699 100644 --- a/IOB-MAN/IOBManPanel.Designer.cs +++ b/IOB-MAN/IOBManPanel.Designer.cs @@ -29,46 +29,39 @@ private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - this.btnOpen = new System.Windows.Forms.Button(); this.btnClose = new System.Windows.Forms.Button(); this.MainTimer = new System.Windows.Forms.Timer(this.components); - this.btnCloseAll = new System.Windows.Forms.Button(); - this.btnRestartAll = new System.Windows.Forms.Button(); this.btnUpdateMode = new System.Windows.Forms.Button(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.tsslNumProc = new System.Windows.Forms.ToolStripStatusLabel(); this.tsProgBar = new System.Windows.Forms.ToolStripProgressBar(); + this.tsslNumProc = new System.Windows.Forms.ToolStripStatusLabel(); this.panel1 = new System.Windows.Forms.Panel(); - this.btnMinimizeAll = new System.Windows.Forms.Button(); this.btnMaximixeAll = new System.Windows.Forms.Button(); + this.btnMinimizeAll = new System.Windows.Forms.Button(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.loadConfToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.updateModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.processManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.openALLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.closeALLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.dgvManagedItems = new System.Windows.Forms.DataGridView(); this.panel2 = new System.Windows.Forms.Panel(); + this.dgvManagedItems = new System.Windows.Forms.DataGridView(); + this.restartALLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.statusStrip1.SuspendLayout(); this.panel1.SuspendLayout(); + this.menuStrip1.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).BeginInit(); this.SuspendLayout(); // - // btnOpen - // - this.btnOpen.BackColor = System.Drawing.Color.Green; - this.btnOpen.ForeColor = System.Drawing.Color.Yellow; - this.btnOpen.Location = new System.Drawing.Point(14, 17); - this.btnOpen.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnOpen.Name = "btnOpen"; - this.btnOpen.Size = new System.Drawing.Size(128, 32); - this.btnOpen.TabIndex = 1; - this.btnOpen.Text = "Open ALL"; - this.btnOpen.UseVisualStyleBackColor = false; - this.btnOpen.Click += new System.EventHandler(this.btnOpen_Click); - // // btnClose // this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnClose.BackColor = System.Drawing.Color.Red; this.btnClose.ForeColor = System.Drawing.Color.Yellow; - this.btnClose.Location = new System.Drawing.Point(892, 17); + this.btnClose.Location = new System.Drawing.Point(892, 57); this.btnClose.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnClose.Name = "btnClose"; this.btnClose.Size = new System.Drawing.Size(128, 32); @@ -82,36 +75,11 @@ this.MainTimer.Interval = 500; this.MainTimer.Tick += new System.EventHandler(this.MainTimer_Tick); // - // btnCloseAll - // - this.btnCloseAll.BackColor = System.Drawing.Color.Red; - this.btnCloseAll.ForeColor = System.Drawing.Color.Yellow; - this.btnCloseAll.Location = new System.Drawing.Point(282, 17); - this.btnCloseAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnCloseAll.Name = "btnCloseAll"; - this.btnCloseAll.Size = new System.Drawing.Size(128, 32); - this.btnCloseAll.TabIndex = 77; - this.btnCloseAll.Text = "Close ALL"; - this.btnCloseAll.UseVisualStyleBackColor = false; - this.btnCloseAll.Click += new System.EventHandler(this.button1_Click); - // - // btnRestartAll - // - this.btnRestartAll.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); - this.btnRestartAll.Location = new System.Drawing.Point(148, 17); - this.btnRestartAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnRestartAll.Name = "btnRestartAll"; - this.btnRestartAll.Size = new System.Drawing.Size(128, 32); - this.btnRestartAll.TabIndex = 78; - this.btnRestartAll.Text = "Restart ALL"; - this.btnRestartAll.UseVisualStyleBackColor = false; - this.btnRestartAll.Click += new System.EventHandler(this.button2_Click); - // // btnUpdateMode // this.btnUpdateMode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnUpdateMode.BackColor = System.Drawing.SystemColors.GradientActiveCaption; - this.btnUpdateMode.Location = new System.Drawing.Point(758, 17); + this.btnUpdateMode.Location = new System.Drawing.Point(758, 57); this.btnUpdateMode.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnUpdateMode.Name = "btnUpdateMode"; this.btnUpdateMode.Size = new System.Drawing.Size(128, 32); @@ -131,37 +99,48 @@ this.statusStrip1.TabIndex = 82; this.statusStrip1.Text = "statusStrip1"; // + // tsProgBar + // + this.tsProgBar.Name = "tsProgBar"; + this.tsProgBar.Size = new System.Drawing.Size(100, 18); + // // tsslNumProc // this.tsslNumProc.Name = "tsslNumProc"; this.tsslNumProc.Size = new System.Drawing.Size(18, 20); this.tsslNumProc.Text = "..."; // - // tsProgBar - // - this.tsProgBar.Name = "tsProgBar"; - this.tsProgBar.Size = new System.Drawing.Size(100, 18); - // // panel1 // this.panel1.Controls.Add(this.btnMaximixeAll); this.panel1.Controls.Add(this.btnMinimizeAll); - this.panel1.Controls.Add(this.btnOpen); - this.panel1.Controls.Add(this.btnRestartAll); - this.panel1.Controls.Add(this.btnCloseAll); this.panel1.Controls.Add(this.btnUpdateMode); this.panel1.Controls.Add(this.btnClose); + this.panel1.Controls.Add(this.menuStrip1); this.panel1.Dock = System.Windows.Forms.DockStyle.Top; this.panel1.Location = new System.Drawing.Point(0, 0); this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(1032, 62); + this.panel1.Size = new System.Drawing.Size(1032, 138); this.panel1.TabIndex = 83; // + // btnMaximixeAll + // + this.btnMaximixeAll.BackColor = System.Drawing.SystemColors.Highlight; + this.btnMaximixeAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; + this.btnMaximixeAll.Location = new System.Drawing.Point(416, 57); + this.btnMaximixeAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.btnMaximixeAll.Name = "btnMaximixeAll"; + this.btnMaximixeAll.Size = new System.Drawing.Size(128, 32); + this.btnMaximixeAll.TabIndex = 81; + this.btnMaximixeAll.Text = "Show ALL"; + this.btnMaximixeAll.UseVisualStyleBackColor = false; + this.btnMaximixeAll.Click += new System.EventHandler(this.btnMaximixeAll_Click); + // // btnMinimizeAll // this.btnMinimizeAll.BackColor = System.Drawing.SystemColors.ControlDarkDark; this.btnMinimizeAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.btnMinimizeAll.Location = new System.Drawing.Point(550, 17); + this.btnMinimizeAll.Location = new System.Drawing.Point(550, 57); this.btnMinimizeAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnMinimizeAll.Name = "btnMinimizeAll"; this.btnMinimizeAll.Size = new System.Drawing.Size(128, 32); @@ -170,18 +149,62 @@ this.btnMinimizeAll.UseVisualStyleBackColor = false; this.btnMinimizeAll.Click += new System.EventHandler(this.btnMinimizeAll_Click); // - // btnMaximixeAll + // menuStrip1 // - this.btnMaximixeAll.BackColor = System.Drawing.SystemColors.Highlight; - this.btnMaximixeAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.btnMaximixeAll.Location = new System.Drawing.Point(416, 17); - this.btnMaximixeAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnMaximixeAll.Name = "btnMaximixeAll"; - this.btnMaximixeAll.Size = new System.Drawing.Size(128, 32); - this.btnMaximixeAll.TabIndex = 81; - this.btnMaximixeAll.Text = "Show ALL"; - this.btnMaximixeAll.UseVisualStyleBackColor = false; - this.btnMaximixeAll.Click += new System.EventHandler(this.btnMaximixeAll_Click); + this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem, + this.processManagerToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(1032, 28); + this.menuStrip1.TabIndex = 82; + this.menuStrip1.Text = "menuStrip1"; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.loadConfToolStripMenuItem, + this.updateModeToolStripMenuItem}); + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(46, 24); + this.fileToolStripMenuItem.Text = "&File"; + // + // loadConfToolStripMenuItem + // + this.loadConfToolStripMenuItem.Name = "loadConfToolStripMenuItem"; + this.loadConfToolStripMenuItem.Size = new System.Drawing.Size(184, 26); + this.loadConfToolStripMenuItem.Text = "&Load conf"; + // + // updateModeToolStripMenuItem + // + this.updateModeToolStripMenuItem.Name = "updateModeToolStripMenuItem"; + this.updateModeToolStripMenuItem.Size = new System.Drawing.Size(184, 26); + this.updateModeToolStripMenuItem.Text = "&Update Mode"; + // + // processManagerToolStripMenuItem + // + this.processManagerToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.openALLToolStripMenuItem, + this.closeALLToolStripMenuItem, + this.restartALLToolStripMenuItem}); + this.processManagerToolStripMenuItem.Name = "processManagerToolStripMenuItem"; + this.processManagerToolStripMenuItem.Size = new System.Drawing.Size(135, 24); + this.processManagerToolStripMenuItem.Text = "&Process Manager"; + // + // openALLToolStripMenuItem + // + this.openALLToolStripMenuItem.Name = "openALLToolStripMenuItem"; + this.openALLToolStripMenuItem.Size = new System.Drawing.Size(156, 26); + this.openALLToolStripMenuItem.Text = "&Open ALL"; + this.openALLToolStripMenuItem.Click += new System.EventHandler(this.openALLToolStripMenuItem_Click); + // + // closeALLToolStripMenuItem + // + this.closeALLToolStripMenuItem.Name = "closeALLToolStripMenuItem"; + this.closeALLToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.closeALLToolStripMenuItem.Text = "Clo&se ALL"; + this.closeALLToolStripMenuItem.Click += new System.EventHandler(this.closeALLToolStripMenuItem_Click); // // tableLayoutPanel1 // @@ -191,13 +214,21 @@ this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); this.tableLayoutPanel1.Controls.Add(this.dgvManagedItems, 0, 0); this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 62); + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 138); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowCount = 1; this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1032, 415); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1032, 339); this.tableLayoutPanel1.TabIndex = 85; // + // panel2 + // + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(663, 3); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(366, 333); + this.panel2.TabIndex = 85; + // // dgvManagedItems // this.dgvManagedItems.AllowUserToAddRows = false; @@ -211,17 +242,16 @@ this.dgvManagedItems.Name = "dgvManagedItems"; this.dgvManagedItems.ReadOnly = true; this.dgvManagedItems.RowHeadersWidth = 51; - this.dgvManagedItems.Size = new System.Drawing.Size(652, 407); + this.dgvManagedItems.Size = new System.Drawing.Size(652, 331); this.dgvManagedItems.TabIndex = 76; this.dgvManagedItems.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvManagedItems_CellDoubleClick); // - // panel2 + // restartALLToolStripMenuItem // - this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel2.Location = new System.Drawing.Point(663, 3); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(366, 409); - this.panel2.TabIndex = 85; + this.restartALLToolStripMenuItem.Name = "restartALLToolStripMenuItem"; + this.restartALLToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.restartALLToolStripMenuItem.Text = "&Restart ALL"; + this.restartALLToolStripMenuItem.Click += new System.EventHandler(this.restartALLToolStripMenuItem_Click); // // IOBManPanel // @@ -233,6 +263,7 @@ this.Controls.Add(this.panel1); this.Controls.Add(this.statusStrip1); this.IsMdiContainer = true; + this.MainMenuStrip = this.menuStrip1; this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.Name = "IOBManPanel"; this.Text = "IOB MANAGER"; @@ -241,6 +272,9 @@ this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); this.tableLayoutPanel1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).EndInit(); this.ResumeLayout(false); @@ -249,11 +283,8 @@ } #endregion - private System.Windows.Forms.Button btnOpen; private System.Windows.Forms.Button btnClose; private System.Windows.Forms.Timer MainTimer; - private System.Windows.Forms.Button btnCloseAll; - private System.Windows.Forms.Button btnRestartAll; private System.Windows.Forms.Button btnUpdateMode; private System.Windows.Forms.StatusStrip statusStrip1; private System.Windows.Forms.ToolStripStatusLabel tsslNumProc; @@ -264,6 +295,14 @@ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.Panel panel2; private System.Windows.Forms.DataGridView dgvManagedItems; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem loadConfToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem updateModeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem processManagerToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem openALLToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem closeALLToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem restartALLToolStripMenuItem; } } diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index 19491696..38b25594 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Windows.Forms; @@ -127,16 +128,6 @@ namespace IOB_MAN tsslNumProc.ForeColor = System.Drawing.Color.OrangeRed; } } - /// - /// Chiama apertura + update status... - /// - /// - /// - private void btnOpen_Click(object sender, EventArgs e) - { - apriChild(); - updateStatus(); - } /// /// Apro un child x ogni args specificato @@ -403,8 +394,7 @@ namespace IOB_MAN { item2rem.Add(item); } - - + // processod a elenco noto foreach (var item in item2rem) { if (item.isRunning) @@ -419,7 +409,17 @@ namespace IOB_MAN { } } } - + // per sicurezza CERCO i processi x nome... + string nomeProc = Path.GetFileName(TargetExe); + var stillRunningProc = Process.GetProcessesByName(nomeProc); + if (stillRunningProc != null) + { + foreach (var item in stillRunningProc) + { + Process p = Process.GetProcessById(item.Id); + p.CloseMainWindow(); + } + } // resetto elenco! ElencoIOB.Clear(); numProcAvviati = 0; @@ -446,19 +446,6 @@ namespace IOB_MAN } - private void button1_Click(object sender, EventArgs e) - { - closeAllChild(); - updateStatus(); - } - - private void button2_Click(object sender, EventArgs e) - { - // chiude tutto - closeAllChild(); - apriChild(); - updateStatus(); - } private void lblNumChild_Click(object sender, EventArgs e) { @@ -545,6 +532,40 @@ namespace IOB_MAN } } } + + /// + /// Chiama apertura + update status... + /// + /// + /// + private void openALLToolStripMenuItem_Click(object sender, EventArgs e) + { + apriChild(); + updateStatus(); + } + /// + /// Chiama chiusura + update status... + /// + /// + /// + private void closeALLToolStripMenuItem_Click(object sender, EventArgs e) + { + closeAllChild(); + updateStatus(); + } + + /// + /// Chiama Restart (close/start) + update status... + /// + /// + /// + private void restartALLToolStripMenuItem_Click(object sender, EventArgs e) + { + // chiude tutto + closeAllChild(); + apriChild(); + updateStatus(); + } } } diff --git a/IOB-MAN/IOBManPanel.resx b/IOB-MAN/IOBManPanel.resx index 4b7440da..43f5d7c9 100644 --- a/IOB-MAN/IOBManPanel.resx +++ b/IOB-MAN/IOBManPanel.resx @@ -123,4 +123,7 @@ 283, 17 + + 420, 17 + \ No newline at end of file diff --git a/IOB-MAN/Resources/SteamWare.ico b/IOB-MAN/Resources/SteamWare.ico new file mode 100644 index 0000000000000000000000000000000000000000..70ccadaff4b65965acc2004f6197e552114aa937 GIT binary patch literal 279582 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 Date: Sun, 22 Dec 2019 10:44:16 +0100 Subject: [PATCH 07/10] update processo x avvio con 1 solo IOB-WIN x update + fix grafico --- IOB-MAN/IOBManPanel.Designer.cs | 49 +++++++++------------------------ IOB-MAN/IOBManPanel.cs | 43 +++++++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 38 deletions(-) diff --git a/IOB-MAN/IOBManPanel.Designer.cs b/IOB-MAN/IOBManPanel.Designer.cs index 04b8d699..b69fb0c9 100644 --- a/IOB-MAN/IOBManPanel.Designer.cs +++ b/IOB-MAN/IOBManPanel.Designer.cs @@ -31,7 +31,6 @@ this.components = new System.ComponentModel.Container(); this.btnClose = new System.Windows.Forms.Button(); this.MainTimer = new System.Windows.Forms.Timer(this.components); - this.btnUpdateMode = new System.Windows.Forms.Button(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.tsProgBar = new System.Windows.Forms.ToolStripProgressBar(); this.tsslNumProc = new System.Windows.Forms.ToolStripStatusLabel(); @@ -43,7 +42,6 @@ this.loadConfToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.updateModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.processManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.openALLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.closeALLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.panel2 = new System.Windows.Forms.Panel(); @@ -59,9 +57,9 @@ // btnClose // this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnClose.BackColor = System.Drawing.Color.Red; + this.btnClose.BackColor = System.Drawing.SystemColors.WindowText; this.btnClose.ForeColor = System.Drawing.Color.Yellow; - this.btnClose.Location = new System.Drawing.Point(892, 57); + this.btnClose.Location = new System.Drawing.Point(280, 40); this.btnClose.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnClose.Name = "btnClose"; this.btnClose.Size = new System.Drawing.Size(128, 32); @@ -75,18 +73,6 @@ this.MainTimer.Interval = 500; this.MainTimer.Tick += new System.EventHandler(this.MainTimer_Tick); // - // btnUpdateMode - // - this.btnUpdateMode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnUpdateMode.BackColor = System.Drawing.SystemColors.GradientActiveCaption; - this.btnUpdateMode.Location = new System.Drawing.Point(758, 57); - this.btnUpdateMode.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); - this.btnUpdateMode.Name = "btnUpdateMode"; - this.btnUpdateMode.Size = new System.Drawing.Size(128, 32); - this.btnUpdateMode.TabIndex = 79; - this.btnUpdateMode.Text = "Update mode"; - this.btnUpdateMode.UseVisualStyleBackColor = false; - // // statusStrip1 // this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); @@ -114,20 +100,19 @@ // this.panel1.Controls.Add(this.btnMaximixeAll); this.panel1.Controls.Add(this.btnMinimizeAll); - this.panel1.Controls.Add(this.btnUpdateMode); this.panel1.Controls.Add(this.btnClose); this.panel1.Controls.Add(this.menuStrip1); this.panel1.Dock = System.Windows.Forms.DockStyle.Top; this.panel1.Location = new System.Drawing.Point(0, 0); this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(1032, 138); + this.panel1.Size = new System.Drawing.Size(1032, 81); this.panel1.TabIndex = 83; // // btnMaximixeAll // this.btnMaximixeAll.BackColor = System.Drawing.SystemColors.Highlight; this.btnMaximixeAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.btnMaximixeAll.Location = new System.Drawing.Point(416, 57); + this.btnMaximixeAll.Location = new System.Drawing.Point(12, 40); this.btnMaximixeAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnMaximixeAll.Name = "btnMaximixeAll"; this.btnMaximixeAll.Size = new System.Drawing.Size(128, 32); @@ -140,7 +125,7 @@ // this.btnMinimizeAll.BackColor = System.Drawing.SystemColors.ControlDarkDark; this.btnMinimizeAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.btnMinimizeAll.Location = new System.Drawing.Point(550, 57); + this.btnMinimizeAll.Location = new System.Drawing.Point(146, 40); this.btnMinimizeAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.btnMinimizeAll.Name = "btnMinimizeAll"; this.btnMinimizeAll.Size = new System.Drawing.Size(128, 32); @@ -173,32 +158,26 @@ // loadConfToolStripMenuItem // this.loadConfToolStripMenuItem.Name = "loadConfToolStripMenuItem"; - this.loadConfToolStripMenuItem.Size = new System.Drawing.Size(184, 26); + this.loadConfToolStripMenuItem.Size = new System.Drawing.Size(224, 26); this.loadConfToolStripMenuItem.Text = "&Load conf"; + this.loadConfToolStripMenuItem.Click += new System.EventHandler(this.loadConfToolStripMenuItem_Click); // // updateModeToolStripMenuItem // this.updateModeToolStripMenuItem.Name = "updateModeToolStripMenuItem"; - this.updateModeToolStripMenuItem.Size = new System.Drawing.Size(184, 26); + this.updateModeToolStripMenuItem.Size = new System.Drawing.Size(224, 26); this.updateModeToolStripMenuItem.Text = "&Update Mode"; + this.updateModeToolStripMenuItem.Click += new System.EventHandler(this.updateModeToolStripMenuItem_Click); // // processManagerToolStripMenuItem // this.processManagerToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.openALLToolStripMenuItem, this.closeALLToolStripMenuItem, this.restartALLToolStripMenuItem}); this.processManagerToolStripMenuItem.Name = "processManagerToolStripMenuItem"; this.processManagerToolStripMenuItem.Size = new System.Drawing.Size(135, 24); this.processManagerToolStripMenuItem.Text = "&Process Manager"; // - // openALLToolStripMenuItem - // - this.openALLToolStripMenuItem.Name = "openALLToolStripMenuItem"; - this.openALLToolStripMenuItem.Size = new System.Drawing.Size(156, 26); - this.openALLToolStripMenuItem.Text = "&Open ALL"; - this.openALLToolStripMenuItem.Click += new System.EventHandler(this.openALLToolStripMenuItem_Click); - // // closeALLToolStripMenuItem // this.closeALLToolStripMenuItem.Name = "closeALLToolStripMenuItem"; @@ -214,11 +193,11 @@ this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); this.tableLayoutPanel1.Controls.Add(this.dgvManagedItems, 0, 0); this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 138); + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 81); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowCount = 1; this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1032, 339); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1032, 396); this.tableLayoutPanel1.TabIndex = 85; // // panel2 @@ -226,7 +205,7 @@ this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; this.panel2.Location = new System.Drawing.Point(663, 3); this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(366, 333); + this.panel2.Size = new System.Drawing.Size(366, 390); this.panel2.TabIndex = 85; // // dgvManagedItems @@ -242,7 +221,7 @@ this.dgvManagedItems.Name = "dgvManagedItems"; this.dgvManagedItems.ReadOnly = true; this.dgvManagedItems.RowHeadersWidth = 51; - this.dgvManagedItems.Size = new System.Drawing.Size(652, 331); + this.dgvManagedItems.Size = new System.Drawing.Size(652, 388); this.dgvManagedItems.TabIndex = 76; this.dgvManagedItems.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvManagedItems_CellDoubleClick); // @@ -285,7 +264,6 @@ #endregion private System.Windows.Forms.Button btnClose; private System.Windows.Forms.Timer MainTimer; - private System.Windows.Forms.Button btnUpdateMode; private System.Windows.Forms.StatusStrip statusStrip1; private System.Windows.Forms.ToolStripStatusLabel tsslNumProc; private System.Windows.Forms.ToolStripProgressBar tsProgBar; @@ -300,7 +278,6 @@ private System.Windows.Forms.ToolStripMenuItem loadConfToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem updateModeToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem processManagerToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem openALLToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem closeALLToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem restartALLToolStripMenuItem; } diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index 38b25594..cfc87172 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.InteropServices; +using System.Threading; using System.Windows.Forms; namespace IOB_MAN @@ -190,6 +191,23 @@ namespace IOB_MAN #endif } + /// + /// Apro un child x fare udpate con parametro che impedisca avvio IOB + /// + private void apriOneUpdate() + { + ProcessStartInfo psi = null; + + // da testare x aprire chiudere risorsa... + psi = new ProcessStartInfo + { + FileName = TargetExe, + Arguments = "NONE", + WindowStyle = ProcessWindowStyle.Normal + }; + // avvio processo + Process p = Process.Start(psi); + } /// /// Chiudo primo processo child (se ce ne sono) /// @@ -540,8 +558,6 @@ namespace IOB_MAN /// private void openALLToolStripMenuItem_Click(object sender, EventArgs e) { - apriChild(); - updateStatus(); } /// /// Chiama chiusura + update status... @@ -566,6 +582,29 @@ namespace IOB_MAN apriChild(); updateStatus(); } + + private void loadConfToolStripMenuItem_Click(object sender, EventArgs e) + { + // lettura conf file... + + // apertura + apriChild(); + updateStatus(); + } + + private void updateModeToolStripMenuItem_Click(object sender, EventArgs e) + { + // chiude tutte + closeAllChild(); + Thread.Sleep(1000); + updateStatus(); + // apre solo 1 con conf "fake" x condurre update... + apriOneUpdate(); + Thread.Sleep(1000); + updateStatus(); + // si chiude x permettere update... + this.Close(); + } } } From 306ce113014f93252d0a96778d626d548177151a Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Mon, 23 Dec 2019 08:22:48 +0100 Subject: [PATCH 08/10] update x costura Fody (single assembly) --- IOB-MAN/FodyWeavers.xml | 3 ++ IOB-MAN/FodyWeavers.xsd | 111 ++++++++++++++++++++++++++++++++++++++++ IOB-MAN/IOB-MAN.csproj | 25 ++++++++- IOB-MAN/IobManIcon.ico | Bin 0 -> 141965 bytes 4 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 IOB-MAN/FodyWeavers.xml create mode 100644 IOB-MAN/FodyWeavers.xsd create mode 100644 IOB-MAN/IobManIcon.ico diff --git a/IOB-MAN/FodyWeavers.xml b/IOB-MAN/FodyWeavers.xml new file mode 100644 index 00000000..5029e706 --- /dev/null +++ b/IOB-MAN/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/IOB-MAN/FodyWeavers.xsd b/IOB-MAN/FodyWeavers.xsd new file mode 100644 index 00000000..44a53744 --- /dev/null +++ b/IOB-MAN/FodyWeavers.xsd @@ -0,0 +1,111 @@ + + + + + + + + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with line breaks. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with line breaks. + + + + + The order of preloaded assemblies, delimited with line breaks. + + + + + + This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file. + + + + + Controls if .pdbs for reference assemblies are also embedded. + + + + + Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option. + + + + + As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off. + + + + + Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code. + + + + + Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior. + + + + + A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with | + + + + + A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |. + + + + + A list of unmanaged 32 bit assembly names to include, delimited with |. + + + + + A list of unmanaged 64 bit assembly names to include, delimited with |. + + + + + The order of preloaded assemblies, delimited with |. + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/IOB-MAN/IOB-MAN.csproj b/IOB-MAN/IOB-MAN.csproj index 6a1194b4..162b615c 100644 --- a/IOB-MAN/IOB-MAN.csproj +++ b/IOB-MAN/IOB-MAN.csproj @@ -1,5 +1,6 @@  + Debug @@ -11,6 +12,8 @@ v4.6.1 512 true + + AnyCPU @@ -31,7 +34,13 @@ prompt 4 + + IobManIcon.ico + + + ..\packages\Costura.Fody.4.1.0\lib\net40\Costura.dll + ..\packages\NLog.4.6.8\lib\net45\NLog.dll @@ -53,6 +62,9 @@ + + VersGen.cs + Form @@ -63,7 +75,8 @@ - + + Always @@ -97,7 +110,7 @@ Settings.settings True - + PreserveNewest @@ -106,4 +119,12 @@ + + + Questo progetto fa riferimento a uno o più pacchetti NuGet che non sono presenti in questo computer. Usare lo strumento di ripristino dei pacchetti NuGet per scaricarli. Per altre informazioni, vedere http://go.microsoft.com/fwlink/?LinkID=322105. Il file mancante è {0}. + + + + + \ No newline at end of file diff --git a/IOB-MAN/IobManIcon.ico b/IOB-MAN/IobManIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2f010028823d860b948ad034f6addbd95ed9cebb GIT binary patch literal 141965 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 Mqe8Hny05eU2c|RU>;M1& literal 0 HcmV?d00001 From 3872af21aaa9a9f9981b8b95804fc92f351a4501 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Mon, 23 Dec 2019 08:23:45 +0100 Subject: [PATCH 09/10] update x start test da resources folder --- IOB-MAN/IOBManPanel.cs | 4 ++-- IOB-MAN/Properties/AssemblyInfo.cs | 10 +++++----- IOB-MAN/Resources/IobManIcon.ico | Bin 0 -> 141965 bytes IOB-MAN/Resources/SteamWare.ico | Bin 279582 -> 0 bytes IOB-MAN/{ => Resources}/Test.bat | 0 IOB-MAN/packages.config | 2 ++ 6 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 IOB-MAN/Resources/IobManIcon.ico delete mode 100644 IOB-MAN/Resources/SteamWare.ico rename IOB-MAN/{ => Resources}/Test.bat (100%) diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index cfc87172..6f050149 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; @@ -75,7 +75,7 @@ namespace IOB_MAN TargetExe = utils.CRS("targetExe"); if (string.IsNullOrEmpty(TargetExe)) { - TargetExe = string.Format(@"{0}\Test.bat", Application.StartupPath); + TargetExe = string.Format(@"{0}\Resources\Test.bat", Application.StartupPath); } utils.lgInfo($"Target exe: {TargetExe}"); string ArgsString = utils.CRS("ArgsList"); diff --git a/IOB-MAN/Properties/AssemblyInfo.cs b/IOB-MAN/Properties/AssemblyInfo.cs index 780240fc..6c482ed3 100644 --- a/IOB-MAN/Properties/AssemblyInfo.cs +++ b/IOB-MAN/Properties/AssemblyInfo.cs @@ -6,11 +6,11 @@ using System.Runtime.InteropServices; // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("IOB-MAN")] -[assembly: AssemblyDescription("")] +[assembly: AssemblyDescription("IOB Instance Manager")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] +//[assembly: AssemblyCompany("")] [assembly: AssemblyProduct("IOB-MAN")] -[assembly: AssemblyCopyright("Copyright © 2017")] +//[assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +//[assembly: AssemblyVersion("1.0.0.0")] +//[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/IOB-MAN/Resources/IobManIcon.ico b/IOB-MAN/Resources/IobManIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2f010028823d860b948ad034f6addbd95ed9cebb GIT binary patch literal 141965 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 Mqe8Hny05eU2c|RU>;M1& literal 0 HcmV?d00001 diff --git a/IOB-MAN/Resources/SteamWare.ico b/IOB-MAN/Resources/SteamWare.ico deleted file mode 100644 index 70ccadaff4b65965acc2004f6197e552114aa937..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279582 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 + + From c391d340ebb5ade886356b8280608cff2850deb3 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Mon, 23 Dec 2019 08:36:05 +0100 Subject: [PATCH 10/10] Fix comportamento finestra e buttons --- IOB-MAN/IOBManPanel.Designer.cs | 129 +++++++++++++++++++++----------- IOB-MAN/IOBManPanel.cs | 26 +++++++ IOB-MAN/IOBManPanel.resx | 3 + 3 files changed, 114 insertions(+), 44 deletions(-) diff --git a/IOB-MAN/IOBManPanel.Designer.cs b/IOB-MAN/IOBManPanel.Designer.cs index b69fb0c9..105090ed 100644 --- a/IOB-MAN/IOBManPanel.Designer.cs +++ b/IOB-MAN/IOBManPanel.Designer.cs @@ -43,14 +43,17 @@ this.updateModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.processManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.closeALLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.restartALLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.panel2 = new System.Windows.Forms.Panel(); this.dgvManagedItems = new System.Windows.Forms.DataGridView(); - this.restartALLToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.btnCloseAll = new System.Windows.Forms.Button(); + this.btnRestartAll = new System.Windows.Forms.Button(); this.statusStrip1.SuspendLayout(); this.panel1.SuspendLayout(); this.menuStrip1.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout(); + this.panel2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).BeginInit(); this.SuspendLayout(); // @@ -59,10 +62,10 @@ this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnClose.BackColor = System.Drawing.SystemColors.WindowText; this.btnClose.ForeColor = System.Drawing.Color.Yellow; - this.btnClose.Location = new System.Drawing.Point(280, 40); - this.btnClose.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.btnClose.Location = new System.Drawing.Point(11, 92); + this.btnClose.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.btnClose.Name = "btnClose"; - this.btnClose.Size = new System.Drawing.Size(128, 32); + this.btnClose.Size = new System.Drawing.Size(96, 26); this.btnClose.TabIndex = 70; this.btnClose.Text = "Close SEL"; this.btnClose.UseVisualStyleBackColor = false; @@ -79,43 +82,43 @@ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsProgBar, this.tsslNumProc}); - this.statusStrip1.Location = new System.Drawing.Point(0, 477); + this.statusStrip1.Location = new System.Drawing.Point(0, 376); this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(1032, 26); + this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 10, 0); + this.statusStrip1.Size = new System.Drawing.Size(689, 22); this.statusStrip1.TabIndex = 82; this.statusStrip1.Text = "statusStrip1"; // // tsProgBar // this.tsProgBar.Name = "tsProgBar"; - this.tsProgBar.Size = new System.Drawing.Size(100, 18); + this.tsProgBar.Size = new System.Drawing.Size(75, 16); // // tsslNumProc // this.tsslNumProc.Name = "tsslNumProc"; - this.tsslNumProc.Size = new System.Drawing.Size(18, 20); + this.tsslNumProc.Size = new System.Drawing.Size(16, 17); this.tsslNumProc.Text = "..."; // // panel1 // - this.panel1.Controls.Add(this.btnMaximixeAll); - this.panel1.Controls.Add(this.btnMinimizeAll); - this.panel1.Controls.Add(this.btnClose); this.panel1.Controls.Add(this.menuStrip1); this.panel1.Dock = System.Windows.Forms.DockStyle.Top; this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(1032, 81); + this.panel1.Size = new System.Drawing.Size(689, 31); this.panel1.TabIndex = 83; + this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint); // // btnMaximixeAll // this.btnMaximixeAll.BackColor = System.Drawing.SystemColors.Highlight; this.btnMaximixeAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.btnMaximixeAll.Location = new System.Drawing.Point(12, 40); - this.btnMaximixeAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.btnMaximixeAll.Location = new System.Drawing.Point(11, 11); + this.btnMaximixeAll.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.btnMaximixeAll.Name = "btnMaximixeAll"; - this.btnMaximixeAll.Size = new System.Drawing.Size(128, 32); + this.btnMaximixeAll.Size = new System.Drawing.Size(96, 26); this.btnMaximixeAll.TabIndex = 81; this.btnMaximixeAll.Text = "Show ALL"; this.btnMaximixeAll.UseVisualStyleBackColor = false; @@ -123,12 +126,12 @@ // // btnMinimizeAll // - this.btnMinimizeAll.BackColor = System.Drawing.SystemColors.ControlDarkDark; + this.btnMinimizeAll.BackColor = System.Drawing.SystemColors.Highlight; this.btnMinimizeAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; - this.btnMinimizeAll.Location = new System.Drawing.Point(146, 40); - this.btnMinimizeAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.btnMinimizeAll.Location = new System.Drawing.Point(11, 41); + this.btnMinimizeAll.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.btnMinimizeAll.Name = "btnMinimizeAll"; - this.btnMinimizeAll.Size = new System.Drawing.Size(128, 32); + this.btnMinimizeAll.Size = new System.Drawing.Size(96, 26); this.btnMinimizeAll.TabIndex = 80; this.btnMinimizeAll.Text = "Hide ALL"; this.btnMinimizeAll.UseVisualStyleBackColor = false; @@ -142,7 +145,8 @@ this.processManagerToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(1032, 28); + this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2); + this.menuStrip1.Size = new System.Drawing.Size(689, 24); this.menuStrip1.TabIndex = 82; this.menuStrip1.Text = "menuStrip1"; // @@ -152,20 +156,20 @@ this.loadConfToolStripMenuItem, this.updateModeToolStripMenuItem}); this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(46, 24); + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); this.fileToolStripMenuItem.Text = "&File"; // // loadConfToolStripMenuItem // this.loadConfToolStripMenuItem.Name = "loadConfToolStripMenuItem"; - this.loadConfToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.loadConfToolStripMenuItem.Size = new System.Drawing.Size(146, 22); this.loadConfToolStripMenuItem.Text = "&Load conf"; this.loadConfToolStripMenuItem.Click += new System.EventHandler(this.loadConfToolStripMenuItem_Click); // // updateModeToolStripMenuItem // this.updateModeToolStripMenuItem.Name = "updateModeToolStripMenuItem"; - this.updateModeToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.updateModeToolStripMenuItem.Size = new System.Drawing.Size(146, 22); this.updateModeToolStripMenuItem.Text = "&Update Mode"; this.updateModeToolStripMenuItem.Click += new System.EventHandler(this.updateModeToolStripMenuItem_Click); // @@ -175,37 +179,53 @@ this.closeALLToolStripMenuItem, this.restartALLToolStripMenuItem}); this.processManagerToolStripMenuItem.Name = "processManagerToolStripMenuItem"; - this.processManagerToolStripMenuItem.Size = new System.Drawing.Size(135, 24); + this.processManagerToolStripMenuItem.Size = new System.Drawing.Size(109, 20); this.processManagerToolStripMenuItem.Text = "&Process Manager"; + this.processManagerToolStripMenuItem.Click += new System.EventHandler(this.processManagerToolStripMenuItem_Click); // // closeALLToolStripMenuItem // this.closeALLToolStripMenuItem.Name = "closeALLToolStripMenuItem"; - this.closeALLToolStripMenuItem.Size = new System.Drawing.Size(224, 26); + this.closeALLToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.closeALLToolStripMenuItem.Text = "Clo&se ALL"; this.closeALLToolStripMenuItem.Click += new System.EventHandler(this.closeALLToolStripMenuItem_Click); // + // restartALLToolStripMenuItem + // + this.restartALLToolStripMenuItem.Name = "restartALLToolStripMenuItem"; + this.restartALLToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.restartALLToolStripMenuItem.Text = "&Restart ALL"; + this.restartALLToolStripMenuItem.Click += new System.EventHandler(this.restartALLToolStripMenuItem_Click); + // // tableLayoutPanel1 // this.tableLayoutPanel1.ColumnCount = 2; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 64.05038F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35.94961F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 120F)); this.tableLayoutPanel1.Controls.Add(this.panel2, 0, 0); this.tableLayoutPanel1.Controls.Add(this.dgvManagedItems, 0, 0); this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 81); + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 31); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowCount = 1; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(1032, 396); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(689, 345); this.tableLayoutPanel1.TabIndex = 85; // // panel2 // + this.panel2.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.panel2.Controls.Add(this.btnRestartAll); + this.panel2.Controls.Add(this.btnCloseAll); + this.panel2.Controls.Add(this.btnClose); + this.panel2.Controls.Add(this.btnMinimizeAll); + this.panel2.Controls.Add(this.btnMaximixeAll); this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel2.Location = new System.Drawing.Point(663, 3); + this.panel2.Location = new System.Drawing.Point(571, 2); + this.panel2.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(366, 390); + this.panel2.Size = new System.Drawing.Size(116, 341); this.panel2.TabIndex = 85; // // dgvManagedItems @@ -216,34 +236,52 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.dgvManagedItems.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgvManagedItems.Location = new System.Drawing.Point(4, 4); - this.dgvManagedItems.Margin = new System.Windows.Forms.Padding(4); + this.dgvManagedItems.Location = new System.Drawing.Point(3, 3); this.dgvManagedItems.Name = "dgvManagedItems"; this.dgvManagedItems.ReadOnly = true; this.dgvManagedItems.RowHeadersWidth = 51; - this.dgvManagedItems.Size = new System.Drawing.Size(652, 388); + this.dgvManagedItems.Size = new System.Drawing.Size(563, 339); this.dgvManagedItems.TabIndex = 76; this.dgvManagedItems.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvManagedItems_CellDoubleClick); // - // restartALLToolStripMenuItem + // btnCloseAll // - this.restartALLToolStripMenuItem.Name = "restartALLToolStripMenuItem"; - this.restartALLToolStripMenuItem.Size = new System.Drawing.Size(224, 26); - this.restartALLToolStripMenuItem.Text = "&Restart ALL"; - this.restartALLToolStripMenuItem.Click += new System.EventHandler(this.restartALLToolStripMenuItem_Click); + this.btnCloseAll.BackColor = System.Drawing.SystemColors.ControlDarkDark; + this.btnCloseAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; + this.btnCloseAll.Location = new System.Drawing.Point(11, 148); + this.btnCloseAll.Margin = new System.Windows.Forms.Padding(2); + this.btnCloseAll.Name = "btnCloseAll"; + this.btnCloseAll.Size = new System.Drawing.Size(96, 26); + this.btnCloseAll.TabIndex = 82; + this.btnCloseAll.Text = "Close ALL"; + this.btnCloseAll.UseVisualStyleBackColor = false; + this.btnCloseAll.Click += new System.EventHandler(this.btnCloseAll_Click); + // + // btnRestartAll + // + this.btnRestartAll.BackColor = System.Drawing.SystemColors.ControlDarkDark; + this.btnRestartAll.ForeColor = System.Drawing.SystemColors.ControlLightLight; + this.btnRestartAll.Location = new System.Drawing.Point(11, 178); + this.btnRestartAll.Margin = new System.Windows.Forms.Padding(2); + this.btnRestartAll.Name = "btnRestartAll"; + this.btnRestartAll.Size = new System.Drawing.Size(96, 26); + this.btnRestartAll.TabIndex = 83; + this.btnRestartAll.Text = "Restart ALL"; + this.btnRestartAll.UseVisualStyleBackColor = false; + this.btnRestartAll.Click += new System.EventHandler(this.btnRestartAll_Click); // // IOBManPanel // - this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.ControlLight; - this.ClientSize = new System.Drawing.Size(1032, 503); + this.ClientSize = new System.Drawing.Size(689, 398); this.Controls.Add(this.tableLayoutPanel1); this.Controls.Add(this.panel1); this.Controls.Add(this.statusStrip1); this.IsMdiContainer = true; this.MainMenuStrip = this.menuStrip1; - this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); this.Name = "IOBManPanel"; this.Text = "IOB MANAGER"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.IOBManPanel_FormClosing); @@ -255,6 +293,7 @@ this.menuStrip1.ResumeLayout(false); this.menuStrip1.PerformLayout(); this.tableLayoutPanel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.dgvManagedItems)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -280,6 +319,8 @@ private System.Windows.Forms.ToolStripMenuItem processManagerToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem closeALLToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem restartALLToolStripMenuItem; - } + private System.Windows.Forms.Button btnCloseAll; + private System.Windows.Forms.Button btnRestartAll; + } } diff --git a/IOB-MAN/IOBManPanel.cs b/IOB-MAN/IOBManPanel.cs index 6f050149..91e50163 100644 --- a/IOB-MAN/IOBManPanel.cs +++ b/IOB-MAN/IOBManPanel.cs @@ -605,6 +605,32 @@ namespace IOB_MAN // si chiude x permettere update... this.Close(); } + + private void panel1_Paint(object sender, PaintEventArgs e) + { + + } + + private void processManagerToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void btnCloseAll_Click(object sender, EventArgs e) + { + // chiude tutto + closeAllChild(); + //apriChild(); + updateStatus(); + } + + private void btnRestartAll_Click(object sender, EventArgs e) + { + // chiude tutto + closeAllChild(); + apriChild(); + updateStatus(); + } } } diff --git a/IOB-MAN/IOBManPanel.resx b/IOB-MAN/IOBManPanel.resx index 43f5d7c9..d4fb60ee 100644 --- a/IOB-MAN/IOBManPanel.resx +++ b/IOB-MAN/IOBManPanel.resx @@ -126,4 +126,7 @@ 420, 17 + + 420, 17 + \ No newline at end of file