public ResourceControl(string content)
        {
            InitializeComponent();

            byte[] b = Convert.FromBase64String(content);
            innerContent    = Encoding.UTF8.GetString(b);
            originalContent = innerContent;
            innerType       = Enumerations.WebResourceType.Resx;

            Stream stream = new MemoryStream(b);

            table = new DataTable();
            table.Columns.Add(new DataColumn("Key"));
            table.Columns.Add(new DataColumn("Value"));

            Dictionary <string, string> resourceMap = new Dictionary <string, string>();

            rsxr = new ResXResourceReader(stream);
            foreach (DictionaryEntry d in rsxr)
            {
                if (string.IsNullOrEmpty(d.Key?.ToString()))
                {
                    continue;
                }
                table.Rows.Add(d.Key.ToString(), d.Value?.ToString());
            }
            rsxr.Close();

            dgv.DataSource = table;

            dgv.CellValueChanged += dgv_CellValueChanged;
            dgv.UserDeletedRow   += dgv_UserDeletedRow;;
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes a new instance of class ImageControl
        /// </summary>
        /// <param name="content">Base64 content of the web resource</param>
        /// <param name="type">Web resource type</param>
        public ImageControl(string content, Enumerations.WebResourceType type)
        {
            InitializeComponent();

            innerType = type;
            originalContent = content;
            innerContent = content;
        }
Esempio n. 3
0
        /// <summary>
        /// Initializes a new instance of class ImageControl
        /// </summary>
        /// <param name="content">Base64 content of the web resource</param>
        /// <param name="type">Web resource type</param>
        public ImageControl(string content, Enumerations.WebResourceType type)
        {
            InitializeComponent();

            innerType       = type;
            originalContent = content;
            innerContent    = content;
        }
Esempio n. 4
0
        /// <summary>
        /// Initializes a new instance of class CodeControl
        /// </summary>
        /// <param name="content">Base64 content of the web resource</param>
        /// <param name="type">Web resource type</param>
        public CodeControl(string content, Enumerations.WebResourceType type)
        {
            InitializeComponent();

            if (!string.IsNullOrEmpty(content))
            {
                // Converts base64 content to string
                byte[] b = Convert.FromBase64String(content);
                innerContent = System.Text.Encoding.UTF8.GetString(b);
                originalContent = innerContent;
                innerType = type;
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Initializes a new instance of class CodeControl
        /// </summary>
        /// <param name="content">Base64 content of the web resource</param>
        /// <param name="type">Web resource type</param>
        public CodeControl(string content, Enumerations.WebResourceType type)
        {
            InitializeComponent();

            if (!string.IsNullOrEmpty(content))
            {
                // Converts base64 content to string
                byte[] b = Convert.FromBase64String(content);
                innerContent    = System.Text.Encoding.UTF8.GetString(b);
                originalContent = innerContent;
                innerType       = type;
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Initializes a new instance of class CodeControl
        /// </summary>
        /// <param name="content">Base64 content of the web resource</param>
        /// <param name="type">Web resource type</param>
        public CodeControl(string content, Enumerations.WebResourceType type)
        {
            InitializeComponent();

            textEditor = new TextEditor
            {
                ShowLineNumbers = true,
                FontSize        = 12,
                FontFamily      = new System.Windows.Media.FontFamily("Consolas"),
                //Focusable = true,
                //IsHitTestVisible = true
            };

            var wpfHost = new ElementHost
            {
                Child = textEditor,
                Dock  = DockStyle.Fill,
                BackColorTransparent = true,
            };

            Controls.Add(wpfHost);

            if (!string.IsNullOrEmpty(content))
            {
                // Converts base64 content to string
                byte[] b = Convert.FromBase64String(content);
                innerContent    = System.Text.Encoding.UTF8.GetString(b);
                originalContent = innerContent;
                innerType       = type;

                switch (innerType)
                {
                case Enumerations.WebResourceType.Script:
                {
                    AutoEnableFolding(innerContent);
                }
                break;

                case Enumerations.WebResourceType.Data:
                case Enumerations.WebResourceType.WebPage:
                case Enumerations.WebResourceType.Css:
                case Enumerations.WebResourceType.Xsl:
                {
                    EnableFolding(true);
                }
                break;
                }
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Initializes a new instance of class CodeControl
        /// </summary>
        /// <param name="content">Base64 content of the web resource</param>
        /// <param name="type">Web resource type</param>
        public CodeControl(string content, Enumerations.WebResourceType type)
        {
            InitializeComponent();

            textEditor = new TextEditor
            {
                ShowLineNumbers = true,
                FontSize = 12,
                FontFamily = new System.Windows.Media.FontFamily("Consolas"),
                //Focusable = true,
                //IsHitTestVisible = true
            };

            var wpfHost = new ElementHost
            {
                Child = textEditor,
                Dock = DockStyle.Fill,
                BackColorTransparent = true,
            };

            Controls.Add(wpfHost);

            if (!string.IsNullOrEmpty(content))
            {
                // Converts base64 content to string
                byte[] b = Convert.FromBase64String(content);
                innerContent = System.Text.Encoding.UTF8.GetString(b);
                originalContent = innerContent;
                innerType = type;

                switch (innerType)
                {
                    case Enumerations.WebResourceType.Script:
                        {
                            AutoEnableFolding(innerContent);
                        }
                        break;

                    case Enumerations.WebResourceType.Data:
                    case Enumerations.WebResourceType.WebPage:
                    case Enumerations.WebResourceType.Css:
                    case Enumerations.WebResourceType.Xsl:
                        {
                            EnableFolding(true);
                        }
                        break;
                }
            }
        }
Esempio n. 8
0
        public CodeEditorScintilla(string content, Enumerations.WebResourceType type, Options options)
        {
            InitializeComponent();

            this.options = options;

            byte[] b = Convert.FromBase64String(content);
            innerContent    = Encoding.UTF8.GetString(b);
            originalContent = innerContent;
            innerType       = type;

            scintilla.ClearCmdKey(Keys.Control | Keys.S);
            scintilla.ClearCmdKey(Keys.Control | Keys.U);
            scintilla.ClearCmdKey(Keys.Control | Keys.F);
            scintilla.ClearCmdKey(Keys.Control | Keys.G);
            scintilla.ClearCmdKey(Keys.Control | Keys.H);
            scintilla.ClearCmdKey(Keys.Control | Keys.K);
            scintilla.ClearCmdKey(Keys.Control | Keys.C);
            scintilla.ClearCmdKey(Keys.Control | Keys.U);
            scintilla.ClearCmdKey(Keys.Control | Keys.M);
            scintilla.ClearCmdKey(Keys.Control | Keys.O);
            scintilla.AssignCmdKey(Keys.Shift | Keys.Delete, Command.LineDelete);
            scintilla.Margins[0].Width = 24;

            scintilla.StyleResetDefault();
            scintilla.Styles[Style.Default].Font = "Consolas";
            scintilla.Styles[Style.Default].Size = 10;
            scintilla.StyleClearAll();

            switch (type)
            {
            case Enumerations.WebResourceType.Script:

                // Configure the CPP (C#) lexer styles
                scintilla.Styles[Style.Cpp.Default].ForeColor        = Color.Silver;
                scintilla.Styles[Style.Cpp.Comment].ForeColor        = Color.FromArgb(0, 128, 0);     // Green
                scintilla.Styles[Style.Cpp.CommentLine].ForeColor    = Color.FromArgb(0, 128, 0);     // Green
                scintilla.Styles[Style.Cpp.CommentLineDoc].ForeColor = Color.FromArgb(128, 128, 128); // Gray
                scintilla.Styles[Style.Cpp.Number].ForeColor         = Color.Black;
                scintilla.Styles[Style.Cpp.Word].ForeColor           = Color.Blue;
                scintilla.Styles[Style.Cpp.Word2].ForeColor          = Color.Blue;
                scintilla.Styles[Style.Cpp.String].ForeColor         = Color.FromArgb(163, 21, 21); // Red
                scintilla.Styles[Style.Cpp.Character].ForeColor      = Color.FromArgb(163, 21, 21); // Red
                scintilla.Styles[Style.Cpp.Verbatim].ForeColor       = Color.FromArgb(163, 21, 21); // Red
                scintilla.Styles[Style.Cpp.StringEol].BackColor      = Color.Pink;
                scintilla.Styles[Style.Cpp.Operator].ForeColor       = Color.Black;
                scintilla.Styles[Style.Cpp.Preprocessor].ForeColor   = Color.Black;
                scintilla.Lexer = Lexer.Cpp;

                // Set the keywords
                scintilla.SetKeywords(0, "debugger abstract as base break case catch checked continue default delegate do else event explicit extern false finally fixed for foreach function goto if implicit in interface internal is lock namespace new null object operator out override params private protected public readonly ref return sealed sizeof stackalloc switch this throw true try typeof unchecked unsafe using var virtual while");
                scintilla.SetKeywords(1, "bool byte char class const decimal double enum float int long sbyte short static string struct uint ulong ushort void");
                break;

            case Enumerations.WebResourceType.Css:

                scintilla.Styles[Style.Css.Directive].ForeColor             = Color.Red;
                scintilla.Styles[Style.Css.Variable].ForeColor              = Color.Red;
                scintilla.Styles[Style.Css.Comment].ForeColor               = Color.FromArgb(0, 128, 0); // Green
                scintilla.Styles[Style.Css.Attribute].ForeColor             = Color.Red;
                scintilla.Styles[Style.Css.Class].ForeColor                 = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.Id].ForeColor                    = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.DoubleString].ForeColor          = Color.Blue;
                scintilla.Styles[Style.Css.Important].ForeColor             = Color.Blue;
                scintilla.Styles[Style.Css.SingleString].ForeColor          = Color.Blue;
                scintilla.Styles[Style.Css.Value].ForeColor                 = Color.Blue;
                scintilla.Styles[Style.Css.Media].ForeColor                 = Color.Blue;
                scintilla.Styles[Style.Css.Tag].ForeColor                   = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.Operator].ForeColor              = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.PseudoClass].ForeColor           = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.PseudoElement].ForeColor         = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.UnknownPseudoClass].ForeColor    = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.ExtendedIdentifier].ForeColor    = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.ExtendedPseudoClass].ForeColor   = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.ExtendedPseudoElement].ForeColor = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Css.UnknownIdentifier].ForeColor     = Color.Red;
                scintilla.Styles[Style.Css.Identifier].ForeColor            = Color.Red;
                scintilla.Styles[Style.Css.Identifier2].ForeColor           = Color.Red;
                scintilla.Styles[Style.Css.Identifier3].ForeColor           = Color.Red;

                scintilla.Lexer = Lexer.Css;
                break;

            case Enumerations.WebResourceType.WebPage:

                scintilla.Styles[Style.Html.Asp].ForeColor              = Color.Black;
                scintilla.Styles[Style.Html.Asp].BackColor              = Color.Yellow;
                scintilla.Styles[Style.Html.AspAt].ForeColor            = Color.Black;
                scintilla.Styles[Style.Html.AspAt].BackColor            = Color.Yellow;
                scintilla.Styles[Style.Html.AttributeUnknown].ForeColor = Color.Red;
                scintilla.Styles[Style.Html.Attribute].ForeColor        = Color.Red;
                scintilla.Styles[Style.Html.CData].ForeColor            = Color.Blue;
                scintilla.Styles[Style.Html.Comment].ForeColor          = Color.Green;
                scintilla.Styles[Style.Html.Default].ForeColor          = Color.Black;
                scintilla.Styles[Style.Html.DoubleString].ForeColor     = Color.Blue;
                scintilla.Styles[Style.Html.Other].ForeColor            = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Html.Script].ForeColor           = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Html.SingleString].ForeColor     = Color.Blue;
                scintilla.Styles[Style.Html.Tag].ForeColor              = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Html.TagEnd].ForeColor           = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Html.XcComment].ForeColor        = Color.Green;
                scintilla.Styles[Style.Html.XmlStart].ForeColor         = Color.Blue;
                scintilla.Styles[Style.Html.XmlEnd].ForeColor           = Color.Blue;

                scintilla.Lexer = Lexer.Html;
                break;

            case Enumerations.WebResourceType.Data:
            case Enumerations.WebResourceType.Resx:
            case Enumerations.WebResourceType.Xsl:

                scintilla.Styles[Style.Xml.Asp].BackColor              = Color.Yellow;
                scintilla.Styles[Style.Xml.AspAt].ForeColor            = Color.Black;
                scintilla.Styles[Style.Xml.AspAt].BackColor            = Color.Yellow;
                scintilla.Styles[Style.Xml.AttributeUnknown].ForeColor = Color.Red;
                scintilla.Styles[Style.Xml.Attribute].ForeColor        = Color.Red;
                scintilla.Styles[Style.Xml.CData].ForeColor            = Color.Blue;
                scintilla.Styles[Style.Xml.Comment].ForeColor          = Color.Green;
                scintilla.Styles[Style.Xml.Default].ForeColor          = Color.Black;
                scintilla.Styles[Style.Xml.DoubleString].ForeColor     = Color.Blue;

                scintilla.Styles[Style.Xml.Entity].ForeColor = Color.Blue;
                scintilla.Styles[Style.Xml.Number].ForeColor = Color.Blue;

                scintilla.Styles[Style.Html.Other].ForeColor        = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Html.Script].ForeColor       = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Html.SingleString].ForeColor = Color.Blue;
                scintilla.Styles[Style.Html.Tag].ForeColor          = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Html.TagUnknown].ForeColor   = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Html.TagEnd].ForeColor       = Color.FromArgb(128, 0, 0);
                scintilla.Styles[Style.Html.XcComment].ForeColor    = Color.Green;
                scintilla.Styles[Style.Html.XmlStart].ForeColor     = Color.Blue;
                scintilla.Styles[Style.Html.XmlEnd].ForeColor       = Color.Blue;

                scintilla.Lexer = Lexer.Xml;
                break;
            }

            // Instruct the lexer to calculate folding
            scintilla.SetProperty("fold", "1");
            scintilla.SetProperty("fold.compact", "1");
            scintilla.SetProperty("fold.html", "1");

            // Configure a margin to display folding symbols
            scintilla.Margins[2].Type      = MarginType.Symbol;
            scintilla.Margins[2].Mask      = Marker.MaskFolders;
            scintilla.Margins[2].Sensitive = true;
            scintilla.Margins[2].Width     = 20;

            // Set colors for all folding markers
            for (int i = 25; i <= 31; i++)
            {
                scintilla.Markers[i].SetForeColor(SystemColors.ControlLightLight);
                scintilla.Markers[i].SetBackColor(SystemColors.ControlDark);
            }

            // Configure folding markers with respective symbols
            scintilla.Markers[Marker.Folder].Symbol        = MarkerSymbol.BoxPlus;
            scintilla.Markers[Marker.FolderOpen].Symbol    = MarkerSymbol.BoxMinus;
            scintilla.Markers[Marker.FolderEnd].Symbol     = MarkerSymbol.BoxPlusConnected;
            scintilla.Markers[Marker.FolderMidTail].Symbol = MarkerSymbol.TCorner;
            scintilla.Markers[Marker.FolderOpenMid].Symbol = MarkerSymbol.BoxMinusConnected;
            scintilla.Markers[Marker.FolderSub].Symbol     = MarkerSymbol.VLine;
            scintilla.Markers[Marker.FolderTail].Symbol    = MarkerSymbol.LCorner;

            findReplace             = new FindReplace();
            findReplace.Scintilla   = scintilla;
            findReplace.KeyPressed += MyFindReplace_KeyPressed;
        }