public override bool HandleImport(SpriteProject Project, SpriteEditor Editor)
        {
            string filename;

            if (!Editor.OpenFile("Import Sprites from Image", RetroDevStudio.Types.Constants.FILEFILTER_IMAGE_FILES, out filename))
            {
                return(false);
            }

            GR.Image.FastImage spriteImage;

            var mcSettings = new ColorSettings(Project.Colors);

            var importType = Types.GraphicType.SPRITES;

            if (Project.Mode == SpriteProject.SpriteProjectMode.MEGA65_16_X_21_16_COLORS)
            {
                importType = GraphicType.SPRITES_16_COLORS;
            }

            bool pasteAsBlock = false;

            if (!Core.MainForm.ImportImage(filename, null, importType, mcSettings, out spriteImage, out mcSettings, out pasteAsBlock))
            {
                return(false);
            }

            Project.Colors.BackgroundColor = mcSettings.BackgroundColor;
            Project.Colors.MultiColor1     = mcSettings.MultiColor1;
            Project.Colors.MultiColor2     = mcSettings.MultiColor2;
            if (mcSettings.Palettes.Count > Project.Colors.Palettes.Count)
            {
                // a palette was imported!
                Project.Colors.Palettes.Add(mcSettings.Palettes[mcSettings.Palettes.Count - 1]);
            }

            Editor.ChangeColorSettingsDialog();

            int currentSpriteIndex = 0;
            int curX = 0;
            int curY = 0;

            while (curY + Editor.m_SpriteHeight <= spriteImage.Height)
            {
                //DocumentInfo.UndoManager.AddUndoTask( new Undo.UndoSpritesetSpriteChange( this, Project, currentSpriteIndex ), firstUndoStep );

                Editor.ImportSprite(spriteImage.GetImage(curX, curY, Editor.m_SpriteWidth, Editor.m_SpriteHeight) as GR.Image.FastImage, currentSpriteIndex);
                Editor.SpriteChanged(currentSpriteIndex);

                ++currentSpriteIndex;
                curX += Editor.m_SpriteWidth;
                if (curX >= spriteImage.Width)
                {
                    curX  = 0;
                    curY += Editor.m_SpriteHeight;
                }
            }
            return(true);
        }