Beispiel #1
0
 public IconHelper(string fileName, int desiredSize, int iconIndex)
 {
     this.desiredSize = desiredSize;
     resources        = new List <string>();
     fileName         = FileOperations.StripFileName(fileName);
     desiredIndex     = iconIndex;
     moduleHandle     = NativeMethods.LoadLibraryEx(fileName, LoadLibraryExFlags.LOAD_LIBRARY_AS_DATAFILE);
     if (moduleHandle != IntPtr.Zero)
     {
         ProcessResources();
     }
 }
Beispiel #2
0
        public static string GetSkinCaption(string skinIniFile)
        {
            string result = null;

            if (string.IsNullOrEmpty(skinIniFile))
            {
                return(null);
            }

            string fullSkinIniFile = FileOperations.StripFileName(skinIniFile);

            if (FileOperations.FileExists(fullSkinIniFile))
            {
                string defaultCaption = Path.GetFileNameWithoutExtension(Path.GetDirectoryName(fullSkinIniFile));
                result = NativeMethods.ReadString(fullSkinIniFile, "Krento", "Caption", defaultCaption);
                return(result);
            }
            else
            {
                return(null);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="KrentoCoreSkin"/> class.
        /// </summary>
        /// <param name="skinFileName">Name of the skin file.</param>
        public KrentoCoreSkin(string skinFileName)
        {
            this.skinFileName = FileOperations.StripFileName(skinFileName);
            HintBodyColor     = Color.Black;
            HintBorderColor   = Color.Gainsboro;
            HintOutlineColor  = Color.Black;

            MenuBorderColor       = Color.Gainsboro;
            MenuOutlineColor      = Color.Black;
            MenuBodyColor         = Color.Black;
            MenuNormalTextColor   = Color.White;
            MenuDisabledTextColor = Color.Gray;
            MenuSelectedTextColor = Color.Black;
            MenuFontSize          = 12;
            MenuFontName          = "Tahoma";
            MenuHighlightColor    = Color.Orange;

            ButtonStoneSize  = 26;
            ButtonStoneSpace = 4;

            ManagerWidth  = GlobalSettings.WindowWidth;
            ManagerHeight = GlobalSettings.WindowHeight;
            Radius        = GlobalSettings.Radius;
        }
Beispiel #4
0
        public static Bitmap FromFile(string filename)
        {
            if (string.IsNullOrEmpty(filename))
            {
                return(null);
            }

            if (FileOperations.FileExists(filename))
            {
                if (FileOperations.FileExtensionIs(filename, ".png"))
                {
                    int    w = 0;
                    int    h = 0;
                    IntPtr ppvBits;
                    IntPtr hBitmap = NativeMethods.LoadBitmapPNG(filename, ref w, ref h, out ppvBits);
                    if (hBitmap != IntPtr.Zero)
                    {
                        Bitmap     result = new Bitmap(w, h, PixelFormat.Format32bppArgb);
                        BitmapData data   = result.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
                        NativeMethods.RtlMoveMemory(data.Scan0, ppvBits, h * data.Stride); // copies the bitmap
                        result.UnlockBits(data);
                        NativeMethods.DeleteObject(hBitmap);
                        result = BitmapPainter.ConvertTo32Bit(result, true);
                        return(result);
                    }
                }

                if (FileOperations.FileExtensionIs(filename, ".jpg") || FileOperations.FileExtensionIs(filename, ".jpeg"))
                {
                    int    w = 0;
                    int    h = 0;
                    IntPtr ppvBits;
                    IntPtr hBitmap = NativeMethods.LoadBitmapJPG(filename, ref w, ref h, out ppvBits);
                    if (hBitmap != IntPtr.Zero)
                    {
                        Bitmap     result = new Bitmap(w, h, PixelFormat.Format24bppRgb);
                        BitmapData data   = result.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
                        NativeMethods.RtlMoveMemory(data.Scan0, ppvBits, h * data.Stride); // copies the bitmap
                        result.UnlockBits(data);
                        NativeMethods.DeleteObject(hBitmap);
                        Bitmap realResult = BitmapPainter.ConvertTo32Bit(result, true);
                        return(realResult);
                    }
                }

                if (FileOperations.FileExtensionIs(filename, ".ico"))
                {
                    Icon   icon   = new Icon(FileOperations.StripFileName(filename));
                    Bitmap result = icon.ToBitmap();
                    icon.Dispose();
                    return(result);
                }

                Bitmap image = null;
                IntPtr zero  = IntPtr.Zero;
                int    imageType;

                if (NativeMethods.GdipLoadImageFromFile(FileOperations.StripFileName(filename), out zero) != 0)
                {
                    return(null);
                }

                if (NativeMethods.GdipGetImageType(zero, out imageType) != 0)
                {
                    return(null);
                }

                if (imageType == 1)
                {
                    image = (Bitmap)typeof(System.Drawing.Bitmap).InvokeMember("FromGDIplus", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod, null, null, new object[] { zero });
                }

                if (!NativeMethods.IsAnimatedGIF(filename))
                {
                    image = BitmapPainter.ConvertTo32Bit(image, true);
                }

                return(image);
            }
            else
            {
                return(null);
            }
        }
Beispiel #5
0
 public FileItem(string fileName)
 {
     this.fileName = FileOperations.StripFileName(fileName);
     name          = Path.GetFileNameWithoutExtension(FileOperations.StripFileName(fileName));
 }
Beispiel #6
0
        public static Image DownloadSiteIcon(string siteAddress)
        {
            if (File.Exists(GlobalConfig.SiteImagesFileName))
            {
                Uri        siteUri   = new Uri(siteAddress);
                string     imageName = null;
                string     siteHost  = siteUri.Host;
                string[]   parts     = siteHost.Split('.');
                MemIniFile iniFile   = new MemIniFile(GlobalConfig.SiteImagesFileName);
                try
                {
                    iniFile.Load();
                    foreach (var part in parts)
                    {
                        imageName = iniFile.ReadString("site", part);
                        if (!string.IsNullOrEmpty(imageName))
                        {
                            if (FileOperations.FileExists(imageName))
                            {
                                return(BitmapPainter.ResizeBitmap(FastBitmap.FromFile(FileOperations.StripFileName(imageName)), FileImage.ImageSize, FileImage.ImageSize, true));
                            }
                        }
                    }

                    //no image for url part, return default image
                    if (iniFile.SectionExists("default"))
                    {
                        imageName = iniFile.ReadString("default", "url");
                        if (!string.IsNullOrEmpty(imageName))
                        {
                            if (FileOperations.FileExists(imageName))
                            {
                                return(BitmapPainter.ResizeBitmap(FastBitmap.FromFile(FileOperations.StripFileName(imageName)), FileImage.ImageSize, FileImage.ImageSize, true));
                            }
                        }
                    }
                }
                finally
                {
                    iniFile.Dispose();
                }
            }

            return(null);
        }
Beispiel #7
0
        private static Image FileNameImageInternal(string fileName)
        {
            Image result = null;
            Icon  icon   = null;

            if (!string.IsNullOrEmpty(fileName))
            {
                fileName = FileOperations.StripFileName(fileName);
                //if we have only name of the file without path
                //try to find it in the search path of Windows
                fileName = FileSearch.FullPath(fileName);

                if (!FileOperations.FileOrFolderExists(fileName))
                {
                    result = FileTypeImage(fileName);
                    return(result);
                }

                //if this is a link to executable with original
                //executable icon
                if (FileOperations.FileIsLink(fileName))
                {
                    result = TryExtractImageFromShellLink(fileName);
                    if (result != null)
                    {
                        return(result);
                    }
                }

                if (FileOperations.FileIsImage(fileName))
                {
                    try
                    {
                        result = Image.FromFile(fileName);
                        result = BitmapPainter.ResizeBitmap(result, imageSize, imageSize, true);
                    }
                    catch
                    {
                        result = null;
                    }
                    if (result != null)
                    {
                        return(result);
                    }
                }

                // 1. The file is icon
                // 2. The file is exe or dll
                // 3. The file is a shell link .lnk
                // 4. Other file types
                if (FileOperations.FileIsIcon(fileName))
                {
                    //Simply load icon from file
                    icon = new Icon(fileName);
                }
                else
                //Extract icon from exe or dll directly
                if (FileOperations.FileIsExe(fileName))
                {
                    return(ExtractIconFromExecutable(fileName));
                }
                else
                {
                    result = FileTypeImage(fileName);
                    return(result);
                }

                result = ConvertIconToBitmap(icon);
            }

            if (icon != null)
            {
                icon.Dispose();
            }

            return(result);
        }
Beispiel #8
0
 public KrentoMenuSkin(string skinFileName)
 {
     this.skinFileName = FileOperations.StripFileName(skinFileName);
 }
Beispiel #9
0
        internal static void LoadGlobalSettings()
        {
            MemIniFile iniFile;
            bool       keyAlt;
            bool       keyCtrl;
            bool       keyShift;
            bool       keyWin;
            int        goodNumber;

            iniFile = new MemIniFile(GlobalConfig.KrentoSettingsFileName);
            try
            {
                iniFile.Load();
                try
                {
                    MouseHook = (MouseHookButton)Enum.Parse(typeof(MouseHookButton), iniFile.ReadString(Sections.General, "MouseButton", "Wheel"));
                }
                catch
                {
                    MouseHook = MouseHookButton.Wheel;
                }

                try
                {
                    Shortcut = (Keys)Enum.Parse(typeof(Keys), iniFile.ReadString(Sections.Shortcut, Parameters.Key, "S"));
                }
                catch
                {
                    Shortcut = Keys.S;
                }

                CircleSelector        = iniFile.ReadBool(Sections.Shortcut, Parameters.CircleSelector, false);
                UseKeyboardActivation = iniFile.ReadBool(Sections.General, Parameters.UseKeyboardActivation, true);
                UseMouseActivation    = iniFile.ReadBool(Sections.General, Parameters.UseMouseActivation, true);

                keyAlt   = iniFile.ReadBool(Sections.Shortcut, Parameters.Alt, false);
                keyCtrl  = iniFile.ReadBool(Sections.Shortcut, Parameters.Ctrl, false);
                keyWin   = iniFile.ReadBool(Sections.Shortcut, Parameters.Win, true);
                keyShift = iniFile.ReadBool(Sections.Shortcut, Parameters.Shift, false);

                if ((Shortcut == Keys.None))
                {
                    keyAlt   = false;
                    keyWin   = true;
                    keyCtrl  = false;
                    keyShift = false;
                    Shortcut = Keys.S;
                }

                //for previous version compatibility
                if (keyWin && (Shortcut == Keys.C))
                {
                    Shortcut = Keys.S;
                }

                Modifiers = Keys.None;
                if (keyAlt)
                {
                    Modifiers = Modifiers | Keys.Alt;
                }
                if (keyCtrl)
                {
                    Modifiers = Modifiers | Keys.Control;
                }
                if (keyShift)
                {
                    Modifiers = Modifiers | Keys.Shift;
                }
                if (keyWin)
                {
                    Modifiers = Modifiers | Keys.LWin;
                }


                keyAlt   = iniFile.ReadBool(Sections.Mouse, Parameters.Alt, false);
                keyCtrl  = iniFile.ReadBool(Sections.Mouse, Parameters.Ctrl, false);
                keyShift = iniFile.ReadBool(Sections.Mouse, Parameters.Shift, false);

                MouseModifiers = Keys.None;
                if (keyAlt)
                {
                    MouseModifiers = MouseModifiers | Keys.Alt;
                }
                if (keyCtrl)
                {
                    MouseModifiers = MouseModifiers | Keys.Control;
                }
                if (keyShift)
                {
                    MouseModifiers = MouseModifiers | Keys.Shift;
                }

                ActivateCursor = iniFile.ReadBool(Sections.Mouse, Parameters.ActivateCursor, false);

                UseRightClick = iniFile.ReadBool(Sections.Mouse, Parameters.UseRightClick, false);
                DesktopClick  = iniFile.ReadBool(Sections.Mouse, Parameters.DesktopClick, false);

                DefaultCircle = iniFile.ReadString(Sections.General, Parameters.DefaultCircle, GlobalConfig.DefaultCircleName);
                DefaultCircle = FileOperations.StripFileName(DefaultCircle);

                GlobalConfig.DefaultCircleName = DefaultCircle;

                CircleName = iniFile.ReadString(Sections.General, Parameters.CircleName, DefaultCircle);
                CircleName = FileOperations.StripFileName(CircleName);

                StartVisible = iniFile.ReadBool(Sections.General, Parameters.StartVisible, false);

                CheckUpdate = iniFile.ReadBool(Sections.General, Parameters.CheckUpdate, true);

                ShowPopupAlerts  = iniFile.ReadBool(Sections.General, Parameters.ShowPopupAlerts, true);
                ShowTrayIcon     = iniFile.ReadBool(Sections.General, Parameters.ShowTrayIcon, true);
                ShowSplashScreen = iniFile.ReadBool(Sections.General, Parameters.ShowSplashScreen, true);
                Language         = iniFile.ReadString(Sections.General, Parameters.Language, CultureInfo.CurrentCulture.Name);
                UseSound         = iniFile.ReadBool(Sections.General, Parameters.UseSound, true);

                IconName       = iniFile.ReadString(Sections.General, Parameters.IconName, null);
                GlyphName      = iniFile.ReadString(Sections.General, Parameters.GlyphName, null);
                SplashName     = iniFile.ReadString(Sections.General, Parameters.SplashName, null);
                AboutBoxName   = iniFile.ReadString(Sections.General, Parameters.AboutBoxName, null);
                AboutStoneName = iniFile.ReadString(Sections.General, Parameters.AboutStoneName, null);

                // read web server settings

                PortNumber     = iniFile.ReadInteger(Sections.Help, Parameters.PortNumber, 8053);
                ActivateServer = iniFile.ReadBool(Sections.Help, Parameters.ActivateServer, true);

                HideOnClick      = iniFile.ReadBool(Sections.Manager, Parameters.HideOnClick, false);
                FadeDelay        = iniFile.ReadInteger(Sections.Manager, Parameters.FadeDelay, 100);
                WindowWidth      = iniFile.ReadInteger(Sections.Manager, Parameters.WindowWidth, 300);
                WindowHeight     = iniFile.ReadInteger(Sections.Manager, Parameters.WindowHeight, 80);
                RotateOnClick    = iniFile.ReadBool(Sections.Manager, Parameters.RotateOnClick, false);
                IgnoreFullScreen = iniFile.ReadBool(Sections.Manager, Parameters.IgnoreFullScreen, true);

                DefaultStonesNumber = iniFile.ReadInteger(Sections.Manager, Parameters.DefaultStonesNumber, 0);
                goodNumber          = Math.Max(DefaultStonesNumber, 0);
                DefaultStonesNumber = Math.Min(64, goodNumber);

                StoneSize  = iniFile.ReadInteger(Sections.Manager, Parameters.StoneSize, 128);
                goodNumber = Math.Min(StoneSize, 512);
                StoneSize  = Math.Max(64, goodNumber);

                IconSize            = iniFile.ReadInteger(Sections.Manager, Parameters.IconSize, 64);
                goodNumber          = Math.Min(IconSize, 512);
                IconSize            = Math.Max(64, goodNumber);
                FileImage.ImageSize = IconSize;

                Transparency = iniFile.ReadInteger(Sections.Manager, Parameters.Transparency, 230);
                goodNumber   = Math.Min(Transparency, 255);
                Transparency = Math.Max(10, goodNumber);

                Radius     = iniFile.ReadInteger(Sections.Manager, Parameters.Raduis, 200);
                goodNumber = Math.Min(Radius, 1000);
                Radius     = Math.Max(100, goodNumber);

                ShowManagerButtons = iniFile.ReadBool(Sections.Manager, Parameters.ManagerButtons, true);
                LiveReflection     = iniFile.ReadBool(Sections.Manager, Parameters.LiveReflection, false);
                ShowStoneHint      = iniFile.ReadBool(Sections.Manager, Parameters.ShowStoneHint, true);
                FlatRing           = iniFile.ReadBool(Sections.Manager, Parameters.FlatRing, false);

                MenuSkin = iniFile.ReadString(Sections.Menu, Parameters.Theme, string.Empty);
                KrentoMenu.SkinFileName = FileOperations.StripFileName(MenuSkin);
            }
            finally
            {
                iniFile.Dispose();
            }
        }