using qdr.app.tools.qfu.gui.Subforms; using Quadarax.Foundation.Core.QConsole; using Quadarax.Foundation.Core.Reflection.Extensions; using System.Reflection; namespace qdr.app.tools.qfu.gui { public partial class frmMain : Form { private IList _views = new List(); private ICommanControl? _lastSelectedCommandControl; private ICommanControl CurrentCommandControl => _views[tscbCommand.SelectedIndex]; #region *** Constructors *** public frmMain() { InitializeComponent(); Text = $"{Application.ProductName} GUI - {Application.ProductVersion?.Split("+")?.FirstOrDefault()} / supports qfu v.{Assembly.GetAssembly(typeof(ConsoleRunner))?.GetVersion()?.ToString()}"; Console.SetOut(new RTFConsoleTextWriter(tbConsole)); var ctrl = new CtrlImgList(); ctrl.Dock = DockStyle.Fill; ctrl.Name = "ctrlImgList"; _views.Add(ctrl); var ctrl1 = new CtrlClearDir(); ctrl1.Dock = DockStyle.Fill; ctrl1.Name = "ctrlClearDir"; _views.Add(ctrl1); var ctrl2 = new CtrlClone(); ctrl2.Dock = DockStyle.Fill; ctrl2.Name = "ctrlClone"; _views.Add(ctrl2); tscbCommand.Items.AddRange(_views.Select(v => v.ViewName).ToArray()); tscbCommand.SelectedIndex = 0; //tlpLevel0.Controls.Add(ctrlImgList, 0, 1); } #endregion #region *** Form handlers *** private void frmMain_Load(object sender, EventArgs e) { } #endregion private void tscbCommand_SelectedIndexChanged(object sender, EventArgs e) { tbDescription.Text = CurrentCommandControl.Description; tbDescription.SelectionStart = 0; tbDescription.SelectionLength = 0; if (_lastSelectedCommandControl != null) { foreach (var control in tlpLevel0.Controls) { if (control is ICommanControl cmdControl && cmdControl.ViewName == _lastSelectedCommandControl.ViewName) { tlpLevel0.Controls.Remove((Control)cmdControl); break; } } } tlpLevel0.Controls.Add((Control)CurrentCommandControl, 0, 1); _lastSelectedCommandControl = CurrentCommandControl; } private void tsbutExecute_Click(object sender, EventArgs e) { try { CurrentCommandControl.Execute(); } catch (Exception ex) { MessageBox.Show(this, $"Error executing command: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void tsbutClear_Click(object sender, EventArgs e) { tbConsole.Clear(); } } }