diff options
| author | Michael <[email protected]> | 2017-04-14 10:03:28 -0400 |
|---|---|---|
| committer | Michael <[email protected]> | 2017-04-14 10:03:33 -0400 |
| commit | 791290857f6feed7da6b583b8f39cb45698d69e8 (patch) | |
| tree | e7957faabe1ba2319b49ffb9d81f81179dcfc1a5 /ShiftOS.WinForms/Applications/Shifter.cs | |
| parent | 71440207cdaecea96f09f71861eb7b3af2c7d44e (diff) | |
| download | shiftos_thereturn-791290857f6feed7da6b583b8f39cb45698d69e8.tar.gz shiftos_thereturn-791290857f6feed7da6b583b8f39cb45698d69e8.tar.bz2 shiftos_thereturn-791290857f6feed7da6b583b8f39cb45698d69e8.zip | |
Huge optimizations.
Windows load A LOT faster, and Shifter has a preview.
Diffstat (limited to 'ShiftOS.WinForms/Applications/Shifter.cs')
| -rw-r--r-- | ShiftOS.WinForms/Applications/Shifter.cs | 245 |
1 files changed, 244 insertions, 1 deletions
diff --git a/ShiftOS.WinForms/Applications/Shifter.cs b/ShiftOS.WinForms/Applications/Shifter.cs index 02e2d0a..e7ad768 100644 --- a/ShiftOS.WinForms/Applications/Shifter.cs +++ b/ShiftOS.WinForms/Applications/Shifter.cs @@ -47,6 +47,193 @@ namespace ShiftOS.WinForms.Applications PopulateShifter(); } + [ShifterMeta("Windows")] + public void SetupWindowPreview() + { + pnlwindow.BringToFront(); + WBSetup(); + } + + [ShifterMeta("Menus")] + public void SetupMenusPreview() + { + SetupWindowPreview(); + } + + [ShifterMeta("System")] + public void SetupSystemPreview() + { + SetupWindowPreview(); + } + + /// <summary> + /// Setup this instance. + /// </summary> + public void WBSetup() + { + this.lbtitletext.Text = "Window Preview"; + + if (SaveSystem.CurrentSave != null) + { + this.pnltitle.Visible = Shiftorium.UpgradeInstalled("wm_titlebar"); + this.pnlclose.Visible = Shiftorium.UpgradeInstalled("close_button"); + this.pnlminimize.Visible = Shiftorium.UpgradeInstalled("minimize_button"); + this.pnlmaximize.Visible =Shiftorium.UpgradeInstalled("maximize_button"); + WBSetupSkin(); + } + else + { + this.pnltitle.Visible = false; + this.pnlclose.Visible = false; + this.pnlminimize.Visible = false; + this.pnlmaximize.Visible = false; + + } + } + + public Image GetImage(string id) + { + var type = typeof(ShiftOS.Engine.Skin); + foreach(var field in type.GetFields(BindingFlags.Public | BindingFlags.Instance)) + { + foreach(var attrib in field.GetCustomAttributes(false)) + { + if(attrib is ImageAttribute) + { + var img = attrib as ImageAttribute; + if(img.Name == id) + { + return SkinEngine.ImageFromBinary((byte[])field.GetValue(LoadedSkin)); + } + } + } + } + return null; + } + + public ImageLayout GetImageLayout(string img) + { + if (LoadedSkin.SkinImageLayouts.ContainsKey(img)) + { + return LoadedSkin.SkinImageLayouts[img]; + } + else + { + LoadedSkin.SkinImageLayouts.Add(img, ImageLayout.Tile); + return ImageLayout.Tile; + } + + } + + /// <summary> + /// Setups the skin. + /// </summary> + /// <returns>The skin.</returns> + public void WBSetupSkin() + { + this.DoubleBuffered = true; + var renderer = new ShiftOSMenuRenderer(LoadedSkin); + mspreview.Renderer = renderer; + tspreview.Renderer = renderer; + pnltitle.Height = LoadedSkin.TitlebarHeight; + pnltitle.BackColor = LoadedSkin.TitleBackgroundColor; + pnltitle.BackgroundImage = GetImage("titlebar"); + pnltitleleft.Visible = LoadedSkin.ShowTitleCorners; + pnltitleright.Visible = LoadedSkin.ShowTitleCorners; + pnltitleleft.BackColor = LoadedSkin.TitleLeftCornerBackground; + pnltitleright.BackColor = LoadedSkin.TitleRightCornerBackground; + pnltitleleft.Width = LoadedSkin.TitleLeftCornerWidth; + pnltitleright.Width = LoadedSkin.TitleRightCornerWidth; + pnltitleleft.BackgroundImage = GetImage("titleleft"); + pnltitleleft.BackgroundImageLayout = GetImageLayout("titleleft"); + pnltitleright.BackgroundImage = GetImage("titleright"); + pnltitleright.BackgroundImageLayout = GetImageLayout("titleright"); + pnltitle.BackgroundImageLayout = GetImageLayout("titlebar"); //RETARD ALERT. WHY WASN'T THIS THERE WHEN IMAGELAYOUTS WERE FIRST IMPLEMENTED? + + lbtitletext.BackColor = (pnltitle.BackgroundImage != null) ? Color.Transparent : LoadedSkin.TitleBackgroundColor; + lbtitletext.ForeColor = LoadedSkin.TitleTextColor; + lbtitletext.Font = LoadedSkin.TitleFont; + + pnlleft.BackColor = LoadedSkin.BorderLeftBackground; + pnlleft.BackgroundImage = GetImage("leftborder"); + pnlleft.BackgroundImageLayout = GetImageLayout("leftborder"); + pnlleft.Width = LoadedSkin.LeftBorderWidth; + pnlright.BackColor = LoadedSkin.BorderRightBackground; + pnlright.BackgroundImage = GetImage("rightborder"); + pnlright.BackgroundImageLayout = GetImageLayout("rightborder"); + pnlright.Width = LoadedSkin.RightBorderWidth; + + pnlbottom.BackColor = LoadedSkin.BorderBottomBackground; + pnlbottom.BackgroundImage = GetImage("bottomborder"); + pnlbottom.BackgroundImageLayout = GetImageLayout("bottomborder"); + pnlbottom.Height = LoadedSkin.BottomBorderWidth; + + pnlbottomr.BackColor = LoadedSkin.BorderBottomRightBackground; + pnlbottomr.BackgroundImage = GetImage("bottomrborder"); + pnlbottomr.BackgroundImageLayout = GetImageLayout("bottomrborder"); + pnlbottoml.BackColor = LoadedSkin.BorderBottomLeftBackground; + pnlbottoml.BackgroundImage = GetImage("bottomlborder"); + pnlbottoml.BackgroundImageLayout = GetImageLayout("bottomlborder"); + + lbtitletext.ForeColor = LoadedSkin.TitleTextColor; + lbtitletext.Font = LoadedSkin.TitleFont; + pnlclose.BackColor = LoadedSkin.CloseButtonColor; + pnlclose.BackgroundImage = GetImage("closebutton"); + pnlclose.BackgroundImageLayout = GetImageLayout("closebutton"); + pnlminimize.BackColor = LoadedSkin.MinimizeButtonColor; + pnlminimize.BackgroundImage = GetImage("minimizebutton"); + pnlminimize.BackgroundImageLayout = GetImageLayout("minimizebutton"); + pnlmaximize.BackColor = LoadedSkin.MaximizeButtonColor; + pnlmaximize.BackgroundImage = GetImage("maximizebutton"); + pnlmaximize.BackgroundImageLayout = GetImageLayout("maximizebutton"); + + pnlclose.Size = LoadedSkin.CloseButtonSize; + pnlminimize.Size = LoadedSkin.MinimizeButtonSize; + pnlmaximize.Size = LoadedSkin.MaximizeButtonSize; + pnlclose.Location = FromRight(LoadedSkin.CloseButtonFromSide); + pnlminimize.Location = FromRight(LoadedSkin.MinimizeButtonFromSide); + pnlmaximize.Location = FromRight(LoadedSkin.MaximizeButtonFromSide); + pnlclose.Left -= pnlclose.Width; + pnlmaximize.Left -= pnlmaximize.Width; + pnlminimize.Left -= pnlminimize.Width; + + switch (LoadedSkin.TitleTextCentered) + { + case false: + lbtitletext.Location = new Point(16 + LoadedSkin.TitlebarIconFromSide.X + LoadedSkin.TitleTextLeft.X, + LoadedSkin.TitleTextLeft.Y); + break; + default: + lbtitletext.Left = (pnltitle.Width - lbtitletext.Width) / 2; + lbtitletext.Top = LoadedSkin.TitleTextLeft.Y; + break; + } + + if (Shiftorium.UpgradeInstalled("app_icons")) + { + pnlicon.Show(); + pnlicon.Size = new Size(16, 16); + pnlicon.BackColor = Color.Transparent; + pnlicon.BackgroundImageLayout = ImageLayout.Stretch; + pnlicon.Location = LoadedSkin.TitlebarIconFromSide; + } + else + { + pnlicon.Hide(); + } + } + + /// <summary> + /// Froms the right. + /// </summary> + /// <returns>The right.</returns> + /// <param name="input">Input.</param> + public Point FromRight(Point input) + { + return new Point(pnltitle.Width - input.X, input.Y); + } + + public int CodepointValue = 0; public List<ShifterSetting> settings = new List<ShifterSetting>(); public Skin LoadedSkin = null; @@ -123,6 +310,21 @@ namespace ShiftOS.WinForms.Applications btn.FlatStyle = FlatStyle.Flat; btn.Click += (o, a) => { + foreach(var mth in this.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance)) + { + foreach(var attrib in mth.GetCustomAttributes(false)) + { + if(attrib is ShifterMetaAttribute) + { + var meta = attrib as ShifterMetaAttribute; + if(meta.Meta == btn.Text) + { + mth?.Invoke(this, null); + } + } + } + } + PopulateSubcategories(c); }; @@ -164,6 +366,21 @@ namespace ShiftOS.WinForms.Applications } } + public void InvokeSetup(string cat) + { + foreach(var mth in this.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance)) + { + foreach(var attr in mth.GetCustomAttributes(false)) + { + if(attr is ShifterMetaAttribute) + { + if ((attr as ShifterMetaAttribute).Meta == cat) + mth.Invoke(this, null); + } + } + } + } + public void PopulateBody(string cat, string subcat) { flbody.Controls.Clear(); @@ -233,6 +450,7 @@ namespace ShiftOS.WinForms.Applications width.Text = ((Point)c.Field.GetValue(this.LoadedSkin)).X.ToString(); height.Text = ((Point)c.Field.GetValue(this.LoadedSkin)).Y.ToString(); } + InvokeSetup(cat); }; width.TextChanged += tc; @@ -247,7 +465,12 @@ namespace ShiftOS.WinForms.Applications labelHeight = str.Height; str.Text = c.Field.GetValue(LoadedSkin).ToString(); flbody.SetFlowBreak(str, true); - str.TextChanged += (o, a) => { c.Field.SetValue(LoadedSkin, str.Text); CodepointValue += 100; }; + str.TextChanged += (o, a) => + { + c.Field.SetValue(LoadedSkin, str.Text); CodepointValue += 100; + + InvokeSetup(cat); + }; flbody.Controls.Add(str); str.Show(); } @@ -271,6 +494,8 @@ namespace ShiftOS.WinForms.Applications color.BackgroundImageLayout = layout; LoadedSkin.SkinImageLayouts[c.Field.GetImageName()] = layout; CodepointValue += 700; + InvokeSetup(cat); + }))); }; flbody.Controls.Add(color); @@ -316,6 +541,8 @@ namespace ShiftOS.WinForms.Applications width.Text = ((Size)c.Field.GetValue(this.LoadedSkin)).Width.ToString(); height.Text = ((Size)c.Field.GetValue(this.LoadedSkin)).Height.ToString(); } + InvokeSetup(cat); + }; width.TextChanged += tc; @@ -331,6 +558,8 @@ namespace ShiftOS.WinForms.Applications { c.Field.SetValue(LoadedSkin, check.Checked); CodepointValue += 50; + InvokeSetup(cat); + }; flbody.SetFlowBreak(check, true); @@ -377,6 +606,8 @@ namespace ShiftOS.WinForms.Applications c.Field.SetValue(LoadedSkin, new Font(name.Text, (float)Convert.ToDouble(size.Text), f)); CodepointValue += 100; + InvokeSetup(cat); + }; style.SelectedIndexChanged += (o, a) => @@ -387,6 +618,8 @@ namespace ShiftOS.WinForms.Applications c.Field.SetValue(LoadedSkin, new Font(name.Text, (float)Convert.ToDouble(size.Text), f)); CodepointValue += 50; + InvokeSetup(cat); + }; size.TextChanged += (o, a) => @@ -404,6 +637,8 @@ namespace ShiftOS.WinForms.Applications size.Text = ((Font)c.Field.GetValue(LoadedSkin)).Size.ToString(); } CodepointValue += 50; + InvokeSetup(cat); + }; flbody.Controls.Add(name); @@ -434,6 +669,8 @@ namespace ShiftOS.WinForms.Applications { color.BackColor = col; CodepointValue += 300; + InvokeSetup(cat); + }))); }; flbody.SetFlowBreak(color, true); @@ -457,6 +694,8 @@ namespace ShiftOS.WinForms.Applications cBox.SelectedIndexChanged += (o, a) => { c.Field.SetValue(LoadedSkin, Enum.Parse(c.Field.FieldType, cBox.Text)); + InvokeSetup(cat); + }; labelHeight = cBox.Height; @@ -482,6 +721,8 @@ namespace ShiftOS.WinForms.Applications { c.Field.SetValue(LoadedSkin, name.SelectedIndex); CodepointValue += 75; + InvokeSetup(cat); + }; labelHeight = name.Height; flbody.Controls.Add(name); @@ -517,6 +758,8 @@ namespace ShiftOS.WinForms.Applications { width.Text = ((int)c.Field.GetValue(this.LoadedSkin)).ToString(); } + InvokeSetup(cat); + }; width.TextChanged += tc; |
