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(btn.Text); }; pnlcategories.Widgets.Add(btn); btn.Show(); } } public void ShowAllPropertyGridsInCategory(string cat) { } } [ShifterCategory("Desktop")] [ShifterPropertyGrid("Desktop")] public class ShifterDesktopSettings { [SkinMap("images/desktopbackground")] public Image DesktopBackground { get; set; } [SkinMap("skin/desktopbackgroundcolour")] public Color DesktopBackgroundColor { get; set; } } 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; } } }