using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ShiftOS.Engine.WindowManager; using ShiftOS.Engine; namespace ShiftOS.Main.ShiftOS { public partial class Desktop : Form { public Desktop() { InitializeComponent(); timer1.Start(); this.Closed += (sender, args) => { Application.Exit(); }; #region Disgusting taskbar code ShiftWM.Windows.CollectionChanged += (sender, args) => { args.NewItems?.OfType().ToList().ForEach(window => { taskbar.Invoke(new Action(() => { taskbar.Items.Add(new ToolStripButton { Text = window.Title.Text, Image = window.Icon.ToBitmap(), Tag = window.Id }); })); }); args.OldItems?.OfType().ToList().ForEach(window => { taskbar.Invoke(new Action(() => { var tbRemovalList = taskbar.Items.OfType().Where(i => (uint) i.Tag == window.Id); tbRemovalList.ToList().ForEach(p => taskbar.Items.Remove(p)); })); }); }; #endregion } private void timer1_Tick(object sender, EventArgs e) => taskbarClock.Text = $"{DateTime.Now:t}"; private void terminalToolStripMenuItem_Click(object sender, EventArgs e) { Apps.Terminal trm = new Apps.Terminal(); ShiftWM.Init(trm, "Terminal", null, false, true); } private void textPadToolStripMenuItem_Click(object sender, EventArgs e) { var tp = new Apps.TextPad(); ShiftWM.Init(tp, "TextPad", Properties.Resources.iconTextPad.ToIcon()); } } }