Beispiel #1
0
        /// <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
        }
Beispiel #2
0
        /// <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;
        }