using Newtonsoft.Json; 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.Threading.Tasks; using ShiftUI; using System.Reflection; namespace ShiftOS { public partial class Shifter : Form { public Shifter() { InitializeComponent(); ShowAllCategories(); } public void ShowAllCategories() { var categories = from a in AppDomain.CurrentDomain.GetAssemblies() from t in a.GetTypes() let attributes = t.GetCustomAttributes(typeof(ShifterCategoryAttribute), true) where attributes != null && attributes.Length > 0 select new { Type = t, Attributes = attributes.Cast() }; pnlcategories.Widgets.Clear(); foreach(var type in categories) { Button btn = new Button(); btn.Text = type.Attributes.First().Name; btn.Click += (o, a) => { ShowAllPropertyGridsInCategory(Activator.CreateInstance(type.Type)); }; pnlcategories.Widgets.Add(btn); btn.Show(); } } public void ShowAllPropertyGridsInCategory(object cls) { } } [ShifterCategory("Desktop")] [ShifterPropertyGrid("Desktop")] public class ShifterDesktopSettings { [Upgrade("skinning")] [SkinMap("images/desktopbackground")] public Image DesktopBackground { get; set; } [Upgrade("shiftdesktopbackground")] [SkinMap("skin/desktopbackgroundcolour")] public Color DesktopBackgroundColor { get; set; } } public class UpgradeAttribute : Attribute { public UpgradeAttribute(string upgrade) { upg = upgrade; } private string upg = ""; public bool UpgradeInstalled { get { return API.Upgrades[upg]; } } } public class SkinMapAttribute : Attribute { public SkinMapAttribute(string varName) { Variable = varName; } public string Variable { get; set; } } public class ShifterCategoryAttribute : Attribute { public ShifterCategoryAttribute(string name) { Name = name; } public string Name { get; set; } } public class ShifterPropertyGridAttribute : Attribute { public ShifterPropertyGridAttribute(string name) { Name = name; } public string Name { get; set; } } }