diff options
Diffstat (limited to 'source/WindowsFormsApplication1/skins.cs')
| -rw-r--r-- | source/WindowsFormsApplication1/skins.cs | 791 |
1 files changed, 791 insertions, 0 deletions
diff --git a/source/WindowsFormsApplication1/skins.cs b/source/WindowsFormsApplication1/skins.cs new file mode 100644 index 0000000..ddac7fb --- /dev/null +++ b/source/WindowsFormsApplication1/skins.cs @@ -0,0 +1,791 @@ +using System.IO; +using System.Drawing; +using Newtonsoft.Json; +using System; +using ShiftOS; +using System.IO.Compression; +using System.Windows.Forms; +using System.Collections.Generic; +using System.Drawing.Imaging; + +namespace Skinning +{ + public class Skin { + //Widget Positions + public string ALPosition = "Top"; + public string PanelButtonPosition = "Top"; + public string ClockPosition = "Top"; + + //WINDOW SETTINGS/IMAGES + //images + public int titlebarlayout = 3; + public int borderleftlayout = 3; + public int borderrightlayout = 3; + public int borderbottomlayout = 3; + public int closebtnlayout = 3; + public int rollbtnlayout = 3; + public int minbtnlayout = 3; + public int rightcornerlayout = 3; + public int leftcornerlayout = 3; + // Late entry: need to fix window code to include this + public int bottomleftcornerlayout = 3; + public int bottomrightcornerlayout = 3; + public Color bottomleftcornercolour = Color.Gray; + + public Color bottomrightcornercolour = Color.Gray; + + public bool enablebordercorners = false; + // settings + public Size closebtnsize = new Size(22, 22); + public Size rollbtnsize = new Size(22, 22); + public Size minbtnsize = new Size(22, 22); + public int titlebarheight = 30; + public int titlebariconsize = 16; + public int closebtnfromtop = 5; + public int closebtnfromside = 2; + public int rollbtnfromtop = 5; + public int rollbtnfromside = 26; + public int minbtnfromtop = 5; + public int minbtnfromside = 52; + public int borderwidth = 2; + public bool enablecorners = false; + public int titlebarcornerwidth = 5; + public int titleiconfromside = 4; + public int titleiconfromtop = 4; + //colours + public Color titlebarcolour = Color.Gray; + public Color borderleftcolour = Color.Gray; + public Color borderrightcolour = Color.Gray; + public Color borderbottomcolour = Color.Gray; + public Color closebtncolour = Color.Black; + public Color closebtnhovercolour = Color.Black; + public Color closebtnclickcolour = Color.Black; + public Color rollbtncolour = Color.Black; + public Color rollbtnhovercolour = Color.Black; + public Color rollbtnclickcolour = Color.Black; + public Color minbtncolour = Color.Black; + public Color minbtnhovercolour = Color.Black; + public Color minbtnclickcolour = Color.Black; + public Color rightcornercolour = Color.Gray; + public Color leftcornercolour = Color.Gray; + // Text + public string titletextfontfamily = "Microsoft Sans Serif"; + public int titletextfontsize = 10; + public FontStyle titletextfontstyle = FontStyle.Bold; + public string titletextpos = "Left"; + public int titletextfromtop = 3; + public int titletextfromside = 24; + + public Color titletextcolour = Color.White; + //DESKTOP + public Color desktoppanelcolour = Color.Gray; + public Color desktopbackgroundcolour = Color.Black; + public int desktoppanelheight = 24; + public string desktoppanelposition = "Top"; + public Color clocktextcolour = Color.Black; + public Color clockbackgroundcolor = Color.Gray; + public int panelclocktexttop = 3; + public int panelclocktextsize = 10; + public string panelclocktextfont = "Byington"; + public FontStyle panelclocktextstyle = FontStyle.Bold; + public Color applauncherbuttoncolour = Color.Gray; + public Color applauncherbuttonclickedcolour = Color.Gray; + public Color applauncherbackgroundcolour = Color.Gray; + public Color applaunchermouseovercolour = Color.Gray; + public Color applicationsbuttontextcolour = Color.Black; + public int applicationbuttonheight = 24; + public int applicationbuttontextsize = 10; + public string applicationbuttontextfont = "Byington"; + public FontStyle applicationbuttontextstyle = FontStyle.Bold; + public string applicationlaunchername = "Applications"; + public string titletextposition = "Left"; + public int applaunchermenuholderwidth = 100; + public int panelbuttonicontop = 3; + public int panelbuttoniconside = 4; + public int panelbuttoniconsize = 16; + public int panelbuttonheight = 20; + public int panelbuttonwidth = 185; + public Color panelbuttoncolour = Color.Black; + public Color panelbuttontextcolour = Color.White; + public int panelbuttontextsize = 10; + public string panelbuttontextfont = "Byington"; + public FontStyle panelbuttontextstyle = FontStyle.Regular; + public int panelbuttontextside = 16; + public int panelbuttontexttop = 2; + public int panelbuttongap = 4; + public int panelbuttonfromtop = 2; + + public int panelbuttoninitialgap = 8; + public int launcheritemsize = 10; + public string launcheritemfont = "Byington"; + public FontStyle launcheritemstyle = FontStyle.Regular; + + public Color launcheritemcolour = Color.Black; + // Images + public int desktoppanellayout = 3; + public int desktopbackgroundlayout = 3; + public int panelclocklayout = 3; + public int applauncherlayout = 3; + + public int panelbuttonlayout = 3; + + //Locations... + + public int userTextboxX = 171; + public int userTextBoxY = 202; + public int passTextBoxX = 171; + public int passTextBoxY = 243; + public int loginbtnX = 268; + public int loginbtnY = 286; + public int shutdownbtnX = 1755; + + public int shutdownbtnY = 979; + + /* IMAGE PATHS + These tell ShiftOS where skin images are. + */ + + public string applauncherclickpath = null; + public string panelbuttonpath = null; + public string applaunchermouseoverpath = null; + public string applauncherpath = null; + public string panelclockpath = null; + public string desktopbackgroundpath = null; + public string desktoppanelpath = null; + public string minbtnhoverpath = null; + public string minbtnclickpath = null; + public string rightcornerpath = null; + public string titlebarpath = null; + public string borderrightpath = null; + public string borderleftpath = null; + public string borderbottompath = null; + public string closebtnpath = null; + public string closebtnhoverpath = null; + public string closebtnclickpath = null; + public string rollbtnpath = null; + public string rollbtnhoverpath = null; + public string rollbtnclickpath = null; + public string minbtnpath = null; + public string leftcornerpath = null; + public string bottomleftcornerpath = null; + public string bottomrightcornerpath = null; + + //Menu Renderer Colors + public Color Menu_ButtonSelectedHighlight = Color.Black; + public Color Menu_ButtonSelectedHighlightBorder = Color.Black; + public Color Menu_ButtonPressedHighlight = Color.Black; + public Color Menu_ButtonPressedHighlightBorder = Color.Black; + public Color Menu_ButtonCheckedHighlight = Color.White; + public Color Menu_ButtonCheckedHighlightBorder = Color.White; + public Color Menu_ButtonPressedBorder = Color.Black; + public Color Menu_ButtonSelectedBorder = Color.Black; + public Color Menu_ButtonCheckedGradientBegin = Color.White; + public Color Menu_ButtonCheckedGradientMiddle = Color.White; + public Color Menu_ButtonCheckedGradientEnd = Color.White; + public Color Menu_ButtonSelectedGradientBegin = Color.Black; + public Color Menu_ButtonSelectedGradientMiddle = Color.Black; + public Color Menu_ButtonSelectedGradientEnd = Color.Black; + public Color Menu_ButtonPressedGradientBegin = Color.Black; + public Color Menu_ButtonPressedGradientMiddle = Color.Black; + public Color Menu_ButtonPressedGradientEnd = Color.Black; + public Color Menu_CheckBackground = Color.White; + public Color Menu_CheckSelectedBackground = Color.Gray; + public Color Menu_CheckPressedBackground = Color.White; + public Color Menu_ImageMarginGradientBegin = Color.Gray; + public Color Menu_ImageMarginGradientMiddle = Color.Gray; + public Color Menu_ImageMarginGradientEnd = Color.Gray; + public Color Menu_MenuStripGradientBegin = Color.Gray; + public Color Menu_MenuStripGradientEnd = Color.Gray; + public Color Menu_MenuItemSelected = Color.Black; + public Color Menu_MenuItemBorder = Color.Gray; + public Color Menu_MenuBorder = Color.Gray; + public Color Menu_MenuItemSelectedGradientBegin = Color.Black; + public Color Menu_MenuItemSelectedGradientEnd = Color.Black; + public Color Menu_MenuItemPressedGradientBegin = Color.Black; + public Color Menu_MenuItemPressedGradientMiddle = Color.Black; + public Color Menu_MenuItemPressedGradientEnd = Color.Black; + public Color Menu_RaftingContainerGradientBegin = Color.Black; + public Color Menu_RaftingContainerGradientEnd = Color.Gray; + public Color Menu_SeparatorDark = Color.Black; + public Color Menu_SeparatorLight = Color.Black; + public Color Menu_StatusStripGradientBegin = Color.Gray; + public Color Menu_StatusStripGradientEnd = Color.Gray; + public Color Menu_ToolStripBorder = Color.Gray; + public Color Menu_ToolStripDropDownBackground = Color.Gray; + public Color Menu_ToolStripGradientBegin = Color.Gray; + public Color Menu_ToolStripGradientMiddle = Color.Gray; + public Color Menu_ToolStripGradientEnd = Color.Gray; + public Color Menu_ToolStripContentPanelGradientBegin = Color.Gray; + public Color Menu_ToolStripContentPanelGradientEnd = Color.Gray; + public Color Menu_ToolStripPanelGradientBegin = Color.Gray; + public Color Menu_ToolStripPanelGradientEnd = Color.Gray; + public Color Menu_TextColor = Color.White; + + //New + public Color TerminalTextColor = Color.White; + public Color TerminalBackColor = Color.Black; + public string TerminalFontStyle = OSInfo.GetMonospaceFont(); + + //Name Packs + public string EmbeddedNamePackPath = "names.npk"; + + //Desktop Icons + public Color IconTextColor = Color.White; + + //Window Animation + public int WindowFadeTime = 1; //Interval between each decrease in opacity + public decimal WindowFadeSpeed = Convert.ToDecimal(0.1); //Speed of opacity decrease + public WindowAnimationStyle WindowCloseAnimation = WindowAnimationStyle.Fade; //Animation style for close + public WindowAnimationStyle WindowOpenAnimation = WindowAnimationStyle.Fade; //Animation style for open + public WindowDragEffect DragAnimation = WindowDragEffect.Fade; + public double DragFadeLevel = 0.5; + public double DragFadeSpeed = 0.1; + public int DragFadeInterval = 1; + + //Shake + public int ShakeSpeed = 10; + public int ShakeMaxOffset = 250; + public int ShakeMinOffset = 0; + + //Desktop Panel + public List<DesktopWidget> Widgets = new List<DesktopWidget>(); + public List<DesktopPanel> DesktopPanels = new List<DesktopPanel>(); + } + + public class DesktopWidget + { + public string Name { get; set; } + public string Panel { get; set; } //either top or bottom + public string Icon { get; set; } + public int Width { get; set; } + public int XLocation { get; set; } + public WidgetType Type { get; set; } + public string Lua { get; set; } + } + + public class ShiftOSIcon + { + /// <summary> + /// Creates a new icon + /// </summary> + /// <param name="id">New ID</param> + public ShiftOSIcon(string id) + { + SmallPath = id + "_small"; + LargePath = id + "_large"; + } + + public string SmallPath { get; set; } + public string LargePath { get; set; } + } + + public class DesktopPanel + { + public string Position = "Top"; + public int Height = 24; + public Color BackgroundColor = Color.Gray; + } + + public class PanelWidget + { + public string type = "applauncher"; + } + + public class NamePack + { + public string TerminalName = "Terminal"; + public string ArtpadName = "Artpad"; + public string TextpadName = "TextPad"; + public string ShiftoriumName = "Shiftorium"; + public string KnowledgeInputName = "Knowledge Input"; + public string PongName = "Pong"; + public string ShifterName = "Shifter"; + public string FileSkimmerName = "File Skimmer"; + public string SkinLoaderName = "Skin Loader"; + public string ShutdownName = "Shut Down"; + public string UnityName = "Unity Mode"; + public string NameChangerName = "Name Changer"; + } + + public class IconSet + { + public Image Terminal = ShiftOS.Properties.Resources.iconTerminal; + public Image Artpad = ShiftOS.Properties.Resources.iconArtpad; + public Image Textpad = ShiftOS.Properties.Resources.iconTextPad; + public Image Shiftorium = ShiftOS.Properties.Resources.iconShiftorium; + public Image KnowledgeInput = ShiftOS.Properties.Resources.iconKnowledgeInput; + public Image Pong = ShiftOS.Properties.Resources.iconPong; + public Image Shifter = ShiftOS.Properties.Resources.iconShifter; + public Image FileSkimmer = ShiftOS.Properties.Resources.iconFileSkimmer; + public Image SkinLoader = ShiftOS.Properties.Resources.iconSkinLoader; + public Image Shutdown = ShiftOS.Properties.Resources.iconshutdown; + public Image Unity = ShiftOS.Properties.Resources.iconunitytoggle; + public Image NameChanger = ShiftOS.Properties.Resources.iconNameChanger; + + } + + public class IconPack + { + public string Terminal = "Terminal"; + public string Artpad = "Artpad"; + public string Textpad = "TextPad"; + public string Shiftorium = "Shiftorium"; + public string KnowledgeInput = "Knowledge Input"; + public string Pong = "Pong"; + public string Shifter = "Shifter"; + public string FileSkimmer = "File Skimmer"; + public string SkinLoader = "Skin Loader"; + public string Shutdown = "Shut Down"; + public string Unity = "Unity Mode"; + public string NameChanger = "Name Changer"; + + } + + public class Images + { + public Image applauncherclick = null; + public Image panelbutton = null; + public Image applaunchermouseover = null; + public Image applauncher = null; + public Image panelclock = null; + public Image desktopbackground = null; + public Image desktoppanel = null; + public Image minbtnhover = null; + public Image minbtnclick = null; + public Image rightcorner = null; + public Image titlebar = null; + public Image borderright = null; + public Image borderleft = null; + public Image borderbottom = null; + public Image closebtn = null; + public Image closebtnhover = null; + public Image closebtnclick = null; + public Image rollbtn = null; + public Image rollbtnhover = null; + public Image rollbtnclick = null; + public Image minbtn = null; + public Image leftcorner = null; + public Image bottomleftcorner = null; + public Image bottomrightcorner = null; + } + /// <summary> + /// ShiftOS 'Sharp' Skin Engine - Completely reworked ShiftOS skin system written in C# by Michael VanOverbeek + /// </summary> + public class Utilities { + public static Dictionary<string, Image> IconRegistry = new Dictionary<string, Image>(); + public static Color globaltransparencycolour = Color.FromArgb(1, 0, 1); + public static NamePack LoadedNames = null; + public static Skin loadedSkin = null; + public static Images loadedskin_images = null; + + /// <summary> + /// Load a bitmap from the skin. + /// </summary> + /// <param name="fileName">Bitmap name.</param> + /// <returns>The bitmap</returns> + public static Bitmap GetImage(string fileName) + { + Bitmap ret; + if (File.Exists(Paths.LoadedSkin + fileName)) + { + using (Image img = Image.FromFile(Paths.LoadedSkin + fileName)) + { + ret = new Bitmap(img); + } + } else + { + ret = null; + } + return ret; + } + + /// <summary> + /// Load the name pack embedded in the skin. + /// </summary> + public static void LoadEmbeddedNamePack() + { + if(loadedSkin != null) + { + if(loadedSkin.EmbeddedNamePackPath != null) + { + if(File.Exists(Paths.LoadedSkin + loadedSkin.EmbeddedNamePackPath)) + { + string json = File.ReadAllText(Paths.LoadedSkin + loadedSkin.EmbeddedNamePackPath); + LoadedNames = JsonConvert.DeserializeObject<NamePack>(json); + try { + //bug-check + if (LoadedNames.NameChangerName == null) + { + LoadedNames.NameChangerName = "Name Changer"; + } + } + catch(Exception ex) + { + LoadedNames = new NamePack(); + } + } + else + { + LoadedNames = new NamePack(); + } + } + else + { + LoadedNames = new NamePack(); + } + } + else + { + LoadedNames = new NamePack(); + } + } + + /// <summary> + /// Randomize some skin variables. Used for a virus. + /// </summary> + public static void Randomize() + { + Random rnd = new Random(); + if (rnd.Next(0, 5000) == 25) + { + loadedSkin.desktoppanelheight = rnd.Next(2, 200); + switch (rnd.Next(0, 10)) + { + case 1: + case 3: + case 5: + case 7: + case 9: + loadedSkin.desktoppanelposition = "Top"; + break; + default: + loadedSkin.desktoppanelposition = "Bottom"; + break; + } + API.CurrentSession.SetupDesktop(); + API.UpdateWindows(); + } + } + + /// <summary> + /// Save the loaded name pack to the skin. + /// </summary> + public static void SaveEmbeddedNamePack() + { + if (loadedSkin != null) + { + if (loadedSkin.EmbeddedNamePackPath != null) + { + if (File.Exists(Paths.LoadedSkin + loadedSkin.EmbeddedNamePackPath)) + { + string json = JsonConvert.SerializeObject(LoadedNames); + File.WriteAllText(Paths.LoadedSkin + loadedSkin.EmbeddedNamePackPath, json); + } + else + { + loadedSkin.EmbeddedNamePackPath = "names.npk"; + string json = JsonConvert.SerializeObject(LoadedNames); + File.WriteAllText(Paths.LoadedSkin + loadedSkin.EmbeddedNamePackPath, json); + } + } + + } + } + + /// <summary> + /// Save a bitmap to the skin. + /// </summary> + /// <param name="img">Bitmap to save</param> + /// <param name="Name">New filename</param> + private static void saveimage(Image img, string Name) + { + string fullPath = Paths.LoadedSkin + Name; + if(File.Exists(fullPath)) + { + File.Delete(fullPath); + } + if (img != null) + { + img.Save(fullPath, System.Drawing.Imaging.ImageFormat.Bmp); + } + } + + /// <summary> + /// Load the skin. + /// </summary> + public static void loadskin() + { + if(Directory.Exists(Paths.LoadedSkin)) + { + try + { + string rawData = File.ReadAllText(Paths.LoadedSkin + "data.json"); + loadedSkin = JsonConvert.DeserializeObject<Skin>(rawData); + if (File.Exists(Paths.LoadedSkin + "panels.json")) + { + string panels = File.ReadAllText(Paths.LoadedSkin + "panels.json"); + loadedSkin.DesktopPanels = JsonConvert.DeserializeObject<List<DesktopPanel>>(panels); + } + loadimages(); + LoadEmbeddedNamePack(); + } + catch (Exception ex) + { + //No skin to load. + loadedSkin = new Skin(); + loadedskin_images = new Images(); + saveskin(); + + } + } else + { + loadedSkin = new Skin(); + loadedskin_images = new Images(); + saveskin(); + } + } + + /// <summary> + /// Load skin from .skn file + /// </summary> + /// <param name="filepath">File to load.</param> + public static void loadsknfile(string filepath) + { + try + { + //Extract the .SKN + API.ExtractFile(filepath, Paths.LoadedSkin, true); + //OK, so the skin's been extracted. + //Now, let's load in the skin data. + string rawData = File.ReadAllText(Paths.LoadedSkin + "data.json"); + loadedSkin = JsonConvert.DeserializeObject<Skin>(rawData); + //Now, images. + loadimages(); + } catch(Exception ex) + { + API.CreateInfoboxSession("Error loading skin", "An error has occurred while loading the skin file. This could be because the skin file is no longer supported by this version of ShiftOS.", infobox.InfoboxMode.Info); + } + } + + /// <summary> + /// Load images from the skin. + /// </summary> + public static void loadimages() + { + loadedskin_images = new Images(); + loadedskin_images.applauncherclick = GetImage(loadedSkin.applauncherclickpath); + loadedskin_images.panelbutton = GetImage(loadedSkin.panelbuttonpath); + loadedskin_images.applaunchermouseover = GetImage(loadedSkin.applaunchermouseoverpath); + loadedskin_images.applauncher = GetImage(loadedSkin.applauncherpath); + loadedskin_images.panelclock = GetImage(loadedSkin.panelclockpath); + loadedskin_images.desktopbackground = GetImage(loadedSkin.desktopbackgroundpath); + loadedskin_images.desktoppanel = GetImage(loadedSkin.desktoppanelpath); + loadedskin_images.minbtnhover = GetImage(loadedSkin.minbtnhoverpath); + loadedskin_images.minbtnclick = GetImage(loadedSkin.minbtnclickpath); + loadedskin_images.rightcorner = GetImage(loadedSkin.rightcornerpath); + loadedskin_images.titlebar = GetImage(loadedSkin.titlebarpath); + loadedskin_images.borderright = GetImage(loadedSkin.borderrightpath); + loadedskin_images.borderleft = GetImage(loadedSkin.borderleftpath); + loadedskin_images.borderbottom = GetImage(loadedSkin.borderbottompath); + loadedskin_images.closebtn = GetImage(loadedSkin.closebtnpath); + loadedskin_images.closebtnhover = GetImage(loadedSkin.closebtnhoverpath); + loadedskin_images.closebtnclick = GetImage(loadedSkin.closebtnclickpath); + loadedskin_images.rollbtn = GetImage(loadedSkin.rollbtnpath); + loadedskin_images.rollbtnhover = GetImage(loadedSkin.rollbtnhoverpath); + loadedskin_images.rollbtnclick = GetImage(loadedSkin.rollbtnclickpath); + loadedskin_images.minbtn = GetImage(loadedSkin.minbtnpath); + loadedskin_images.leftcorner = GetImage(loadedSkin.leftcornerpath); + loadedskin_images.bottomleftcorner = GetImage(loadedSkin.bottomleftcornerpath); + loadedskin_images.bottomrightcorner = GetImage(loadedSkin.bottomrightcornerpath); + try + { + IconRegistry = new Dictionary<string, Image>(); + foreach (var f in Directory.GetFiles(Paths.Icons)) + { + var finf = new FileInfo(f); + byte[] fBytes = File.ReadAllBytes(finf.FullName); + MemoryStream fStream = new MemoryStream(fBytes); + IconRegistry.Add(finf.Name, Image.FromStream(fStream)); + fStream.Close(); + } + } + catch(Exception ex) + { + GenDefaultIconPack(); + } + } + + /// <summary> + /// Generates the default icon pack if none exists. + /// </summary> + public static void GenDefaultIconPack() + { + IconRegistry = new Dictionary<string, Image>(); + if(Directory.Exists(Paths.Icons)) + { + Directory.Delete(Paths.Icons, true); + } + Directory.CreateDirectory(Paths.Icons); + SaveIcon(ShiftOS.Properties.Resources.iconTerminal, "Terminal"); + SaveIcon(ShiftOS.Properties.Resources.iconShiftorium, "Shiftorium"); + SaveIcon(ShiftOS.Properties.Resources.iconShifter, "Shifter"); + SaveIcon(ShiftOS.Properties.Resources.iconNameChanger, "NameChanger"); + SaveIcon(ShiftOS.Properties.Resources.iconTextPad, "TextPad"); + SaveIcon(ShiftOS.Properties.Resources.iconFileSkimmer, "FileSkimmer"); + SaveIcon(ShiftOS.Properties.Resources.iconArtpad, "Artpad"); + SaveIcon(ShiftOS.Properties.Resources.iconunitytoggle, "Unity"); + SaveIcon(ShiftOS.Properties.Resources.iconshutdown, "Shutdown"); + SaveIcon(ShiftOS.Properties.Resources.iconInfoBox_fw, "Infobox"); + SaveIcon(ShiftOS.Properties.Resources.iconKnowledgeInput, "KI"); + SaveIcon(ShiftOS.Properties.Resources.iconPong, "Pong"); + SaveIcon(ShiftOS.Properties.Resources.iconSkinLoader, "SkinLoader"); + SaveIcon(ShiftOS.Properties.Resources.iconIconManager, "IconManager"); + SaveIcon(ShiftOS.Properties.Resources.fileicondirectory, "Folder"); + SaveIcon(ShiftOS.Properties.Resources.fileicondoc, "TextFile"); + SaveIcon(ShiftOS.Properties.Resources.fileiconnone, "UnrecognizedFile"); + SaveIcon(ShiftOS.Properties.Resources.fileiconsaa, "SAAFile"); + SaveIcon(ShiftOS.Properties.Resources.fileiconsetup, "SetupPackage"); + SaveIcon(ShiftOS.Properties.Resources.skinfile, "SkinFile"); + IconRegistry = new Dictionary<string, Image>(); + foreach (var f in Directory.GetFiles(Paths.Icons)) + { + var finf = new FileInfo(f); + byte[] fBytes = File.ReadAllBytes(finf.FullName); + MemoryStream fStream = new MemoryStream(fBytes); + IconRegistry.Add(finf.Name, Image.FromStream(fStream)); + fStream.Close(); + } + } + + /// <summary> + /// Saves the icon to the registry. + /// </summary> + /// <param name="img">Icon to save</param> + /// <param name="title">Icon title</param> + public static void SaveIcon(Image img, string title) + { + img.Save(Paths.Icons + title, ImageFormat.Png); + + } + + /// <summary> + /// Saves all skin images + /// </summary> + public static void saveimages() + { + //Set image paths. + loadedSkin.applauncherclickpath = "applauncherclick"; + loadedSkin.panelbuttonpath = "panelbutton"; + loadedSkin.applaunchermouseoverpath = "applaunchermouseover"; + loadedSkin.applauncherpath = "applauncher"; + loadedSkin.panelclockpath = "panelclock"; + loadedSkin.desktopbackgroundpath = "desktopbackground"; + loadedSkin.desktoppanelpath = "desktoppanel"; + loadedSkin.minbtnhoverpath = "minbtnhover"; + loadedSkin.minbtnclickpath = "minbtnclick"; + loadedSkin.rightcornerpath = "rightcorner"; + loadedSkin.titlebarpath = "titlebar"; + loadedSkin.borderrightpath = "borderright"; + loadedSkin.borderleftpath = "borderleft"; + loadedSkin.borderbottompath = "borderbottom"; + loadedSkin.closebtnpath = "closebtn"; + loadedSkin.closebtnhoverpath = "closebtnhover"; + loadedSkin.closebtnclickpath = "closebtnclick"; + loadedSkin.rollbtnpath = "rollbtn"; + loadedSkin.rollbtnhoverpath = "rollbtnhover"; + loadedSkin.rollbtnclickpath = "rollbtnclick"; + loadedSkin.minbtnpath = "minbtn"; + loadedSkin.leftcornerpath = "leftcornerpath"; + loadedSkin.bottomleftcornerpath = "bottomleftcorner"; + loadedSkin.bottomrightcornerpath = "bottomrightcorner"; + //Save to new paths. + saveimage(loadedskin_images.applauncherclick, loadedSkin.applauncherclickpath); + saveimage(loadedskin_images.panelbutton, loadedSkin.panelbuttonpath); + saveimage(loadedskin_images.applaunchermouseover, loadedSkin.applaunchermouseoverpath); + saveimage(loadedskin_images.applauncher, loadedSkin.applauncherpath); + saveimage(loadedskin_images.panelclock, loadedSkin.panelclockpath); + saveimage(loadedskin_images.desktopbackground, loadedSkin.desktopbackgroundpath); + saveimage(loadedskin_images.desktoppanel, loadedSkin.desktoppanelpath); + saveimage(loadedskin_images.minbtnhover, loadedSkin.minbtnhoverpath); + saveimage(loadedskin_images.minbtnclick, loadedSkin.minbtnclickpath); + saveimage(loadedskin_images.rightcorner, loadedSkin.rightcornerpath); + saveimage(loadedskin_images.titlebar, loadedSkin.titlebarpath); + saveimage(loadedskin_images.borderright, loadedSkin.borderrightpath); + saveimage(loadedskin_images.borderleft, loadedSkin.borderleftpath); + saveimage(loadedskin_images.borderbottom, loadedSkin.borderbottompath); + saveimage(loadedskin_images.closebtn, loadedSkin.closebtnpath); + saveimage(loadedskin_images.closebtnhover, loadedSkin.closebtnhoverpath); + saveimage(loadedskin_images.closebtnclick, loadedSkin.closebtnclickpath); + saveimage(loadedskin_images.rollbtn, loadedSkin.rollbtnpath); + saveimage(loadedskin_images.rollbtnhover, loadedSkin.rollbtnhoverpath); + saveimage(loadedskin_images.rollbtnclick, loadedSkin.rollbtnclickpath); + saveimage(loadedskin_images.minbtn, loadedSkin.minbtnpath); + saveimage(loadedskin_images.leftcorner, loadedSkin.leftcornerpath); + saveimage(loadedskin_images.bottomleftcorner, loadedSkin.bottomleftcornerpath); + saveimage(loadedskin_images.bottomrightcorner, loadedSkin.bottomrightcornerpath); + foreach(KeyValuePair<string, Image> kv in IconRegistry) + { + if(kv.Value != null) + { + SaveIcon(kv.Value, kv.Key); + } + } + + } + + /// <summary> + /// Saves the skin to a new .skn file + /// </summary> + /// <param name="filePath">Target .skn file</param> + public static void saveskintofile(string filePath) + { + saveskin(); + ZipFile.CreateFromDirectory(Paths.LoadedSkin, filePath); + } + + /// <summary> + /// Saves the skin. + /// </summary> + public static void saveskin() + { + saveimages(); + string rawjson = JsonConvert.SerializeObject(loadedSkin); + File.WriteAllText(Paths.LoadedSkin + "data.json", rawjson); + string panels = JsonConvert.SerializeObject(loadedSkin.DesktopPanels); + File.WriteAllText(Paths.LoadedSkin + "panels.json", panels); + SaveEmbeddedNamePack(); + } + } + + public class MyToolStripRenderer : ToolStripProfessionalRenderer + { + public MyToolStripRenderer() : base(new ShiftOSColorTable()) + { + + } + + public MyToolStripRenderer(ProfessionalColorTable table) : base(table) + { + + } + + protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) + { + if (e.Item.Text == API.CurrentSkin.applicationlaunchername) + { + e.TextColor = API.CurrentSkin.applicationsbuttontextcolour; + } + else { + e.TextColor = API.CurrentSkin.Menu_TextColor; + } + base.OnRenderItemText(e); + } + + protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) + { + //base.OnRenderToolStripBorder(e); + } + + + } +}
\ No newline at end of file |
