/// <summary> /// Reload the image icons to adapt DPI changes /// </summary> public void ReloadIcons() { ToolbarIcons.ViewPreviousImage.Refresh(); ToolbarIcons.ViewNextImage.Refresh(); ToolbarIcons.RotateLeft.Refresh(); ToolbarIcons.RotateRight.Refresh(); ToolbarIcons.FlipHorz.Refresh(); ToolbarIcons.FlipVert.Refresh(); ToolbarIcons.Detele.Refresh(); ToolbarIcons.Edit.Refresh(); ToolbarIcons.ZoomIn.Refresh(); ToolbarIcons.ZoomOut.Refresh(); ToolbarIcons.ScaleToFit.Refresh(); ToolbarIcons.ActualSize.Refresh(); ToolbarIcons.LockRatio.Refresh(); ToolbarIcons.AutoZoom.Refresh(); ToolbarIcons.ScaleToWidth.Refresh(); ToolbarIcons.ScaleToHeight.Refresh(); ToolbarIcons.ScaleToFill.Refresh(); ToolbarIcons.AdjustWindowSize.Refresh(); ToolbarIcons.OpenFile.Refresh(); ToolbarIcons.Refresh.Refresh(); ToolbarIcons.GoToImage.Refresh(); ToolbarIcons.ThumbnailBar.Refresh(); ToolbarIcons.Checkerboard.Refresh(); ToolbarIcons.FullScreen.Refresh(); ToolbarIcons.Slideshow.Refresh(); ToolbarIcons.Convert.Refresh(); ToolbarIcons.Print.Refresh(); ToolbarIcons.Settings.Refresh(); ToolbarIcons.About.Refresh(); ToolbarIcons.Menu.Refresh(); ToolbarIcons.ViewFirstImage.Refresh(); ToolbarIcons.ViewLastImage.Refresh(); #region Arrow cursors (derived from toolbar) var arrowHeight = DPIScaling.TransformNumber(Constants.TOOLBAR_ICON_HEIGHT) * 2; var prevImage = new ThemeImage(ToolbarIcons.ViewPreviousImage.Filename, arrowHeight); var icon = prevImage.Image.GetHicon(); PreviousArrowCursor = new Cursor(icon); var nextImage = new ThemeImage(ToolbarIcons.ViewNextImage.Filename, arrowHeight); icon = nextImage.Image.GetHicon(); NextArrowCursor = new Cursor(icon); #endregion }
/// <summary> /// Read theme data from theme configuration file (Version 1.5+). /// Return TRUE if successful, FALSE if the theme format is invalid /// </summary> /// <param name="themeFolderPath">The absolute path of theme folder.</param> /// <param name="startUpDir">The absolute startup folder of ImageGlass</param> /// <returns></returns> public bool LoadTheme(string themeFolderPath) { var configFilePath = Path.Combine(themeFolderPath, "config.xml"); if (!File.Exists(configFilePath)) { configFilePath = App.StartUpDir(Dir.DefaultTheme, "config.xml"); } this.ConfigFilePath = configFilePath; this.FolderName = Path.GetFileName(themeFolderPath); // get folder name var dir = Path.GetDirectoryName(configFilePath); var doc = new XmlDocument(); doc.Load(configFilePath); var root = doc.DocumentElement; XmlElement nType = null; XmlElement n = null; try { //Load theme version 1.5+ as default nType = (XmlElement)root.SelectNodes("Theme")[0]; //<Theme> n = (XmlElement)nType.SelectNodes("Info")[0];//<Info> } catch { this.IsValid = false; } #region Theme <Info> try { Name = n.GetAttribute("name"); } catch { }; try { Version = n.GetAttribute("version"); } catch { }; try { Author = n.GetAttribute("author"); } catch { }; try { Email = n.GetAttribute("email"); } catch { }; try { Website = n.GetAttribute("website"); } catch { }; try { Description = n.GetAttribute("description"); } catch { }; try { Type = n.GetAttribute("type"); } catch { }; try { Compatibility = n.GetAttribute("compatibility"); } catch { }; #endregion #region Theme <main> PreviewImage = LoadThemeImage(dir, n, "preview"); n = (XmlElement)nType.SelectNodes("main")[0]; //<main> ToolbarBackgroundImage = LoadThemeImage(dir, n, "topbar"); try { var colorString = n.GetAttribute("topbarcolor"); var inputColor = ToolbarBackgroundColor; if (IsValidHex(colorString)) { inputColor = ConvertHexStringToColor(colorString, true); } else { inputColor = Color.FromArgb(255, Color.FromArgb(int.Parse(colorString))); } ToolbarBackgroundColor = inputColor; } catch (Exception ex) { }; ThumbnailBackgroundImage = LoadThemeImage(dir, n, "bottombar"); try { var colorString = n.GetAttribute("bottombarcolor"); var inputColor = ThumbnailBackgroundColor; if (IsValidHex(colorString)) { inputColor = ConvertHexStringToColor(colorString, true); } else { inputColor = Color.FromArgb(255, Color.FromArgb(int.Parse(colorString))); } ThumbnailBackgroundColor = inputColor; } catch (Exception ex) { }; try { var colorString = n.GetAttribute("backcolor"); var inputColor = BackgroundColor; if (IsValidHex(colorString)) { inputColor = ConvertHexStringToColor(colorString, true); } else { inputColor = Color.FromArgb(255, Color.FromArgb(int.Parse(colorString))); } BackgroundColor = inputColor; } catch (Exception ex) { }; try { var colorString = n.GetAttribute("statuscolor"); var inputColor = TextInfoColor; if (IsValidHex(colorString)) { inputColor = ConvertHexStringToColor(colorString, true); } else { inputColor = Color.FromArgb(255, Color.FromArgb(int.Parse(colorString))); } TextInfoColor = inputColor; } catch (Exception ex) { }; try { var colorString = n.GetAttribute("menubackgroundcolor"); var inputColor = this.MenuBackgroundColor; if (IsValidHex(colorString)) { inputColor = ConvertHexStringToColor(colorString, true); } else { inputColor = Color.FromArgb(255, Color.FromArgb(int.Parse(colorString))); } this.MenuBackgroundColor = inputColor; } catch (Exception ex) { }; try { var colorString = n.GetAttribute("menutextcolor"); var inputColor = this.MenuTextColor; if (IsValidHex(colorString)) { inputColor = ConvertHexStringToColor(colorString, true); } else { inputColor = Color.FromArgb(255, Color.FromArgb(int.Parse(colorString))); } this.MenuTextColor = inputColor; } catch (Exception ex) { }; #endregion #region Theme <toolbar_icon> n = (XmlElement)nType.SelectNodes("toolbar_icon")[0]; //<toolbar_icon> ToolbarIcons.ViewPreviousImage = LoadThemeImage(dir, n, "back"); ToolbarIcons.ViewNextImage = LoadThemeImage(dir, n, "next"); ToolbarIcons.RotateLeft = LoadThemeImage(dir, n, "leftrotate"); ToolbarIcons.RotateRight = LoadThemeImage(dir, n, "rightrotate"); ToolbarIcons.FlipHorz = LoadThemeImage(dir, n, "fliphorz"); ToolbarIcons.FlipVert = LoadThemeImage(dir, n, "flipvert"); ToolbarIcons.Detele = LoadThemeImage(dir, n, "delete"); ToolbarIcons.Edit = LoadThemeImage(dir, n, "edit"); ToolbarIcons.ZoomIn = LoadThemeImage(dir, n, "zoomin"); ToolbarIcons.ZoomOut = LoadThemeImage(dir, n, "zoomout"); ToolbarIcons.ScaleToFit = LoadThemeImage(dir, n, "zoomtofit"); ToolbarIcons.ActualSize = LoadThemeImage(dir, n, "scaletofit"); ToolbarIcons.LockRatio = LoadThemeImage(dir, n, "zoomlock"); ToolbarIcons.AutoZoom = LoadThemeImage(dir, n, "autozoom"); ToolbarIcons.ScaleToWidth = LoadThemeImage(dir, n, "scaletowidth"); ToolbarIcons.ScaleToHeight = LoadThemeImage(dir, n, "scaletoheight"); ToolbarIcons.ScaleToFill = LoadThemeImage(dir, n, "scaletofill"); ToolbarIcons.AdjustWindowSize = LoadThemeImage(dir, n, "autosizewindow"); ToolbarIcons.OpenFile = LoadThemeImage(dir, n, "open"); ToolbarIcons.Refresh = LoadThemeImage(dir, n, "refresh"); ToolbarIcons.GoToImage = LoadThemeImage(dir, n, "gotoimage"); ToolbarIcons.ThumbnailBar = LoadThemeImage(dir, n, "thumbnail"); ToolbarIcons.Checkerboard = LoadThemeImage(dir, n, "checkerboard"); ToolbarIcons.FullScreen = LoadThemeImage(dir, n, "fullscreen"); ToolbarIcons.Slideshow = LoadThemeImage(dir, n, "slideshow"); ToolbarIcons.Convert = LoadThemeImage(dir, n, "convert"); ToolbarIcons.Print = LoadThemeImage(dir, n, "print"); ToolbarIcons.Settings = LoadThemeImage(dir, n, "settings"); ToolbarIcons.About = LoadThemeImage(dir, n, "about"); ToolbarIcons.Menu = LoadThemeImage(dir, n, "menu"); ToolbarIcons.ViewFirstImage = LoadThemeImage(dir, n, "gofirst"); ToolbarIcons.ViewLastImage = LoadThemeImage(dir, n, "golast"); #endregion #region Arrow cursors (derived from toolbar) var arrowHeight = DPIScaling.TransformNumber(Constants.TOOLBAR_ICON_HEIGHT) * 3; var prevImage = LoadThemeImage(dir, n, "back", arrowHeight); var icon = prevImage.Image.GetHicon(); PreviousArrowCursor = new Cursor(icon); var nextImage = LoadThemeImage(dir, n, "next", arrowHeight); icon = nextImage.Image.GetHicon(); NextArrowCursor = new Cursor(icon); #endregion this.IsValid = true; return this.IsValid; }