|
| 1 | +using System.Drawing; |
| 2 | +using ObjectExporter.Core.Globals; |
| 3 | +using ScintillaNET; |
| 4 | + |
| 5 | +namespace ObjectExporter.VsPackage.Settings |
| 6 | +{ |
| 7 | + public static class ScintillaStyles |
| 8 | + { |
| 9 | + public static void InitStyle(Scintilla scintilla, ExportType type) |
| 10 | + { |
| 11 | + scintilla.StyleResetDefault(); |
| 12 | + scintilla.Styles[Style.Default].Font = "Consolas"; |
| 13 | + scintilla.Styles[Style.Default].Size = 10; |
| 14 | + scintilla.Styles[Style.Default].ForeColor = Color.Black; |
| 15 | + scintilla.StyleClearAll(); |
| 16 | + |
| 17 | + switch (type) |
| 18 | + { |
| 19 | + case ExportType.CSharpObject: |
| 20 | + SetCSharpStyle(scintilla); |
| 21 | + break; |
| 22 | + case ExportType.Json: |
| 23 | + SetJsonStyle(scintilla); |
| 24 | + break; |
| 25 | + case ExportType.Xml: |
| 26 | + SetXmlStyle(scintilla); |
| 27 | + break; |
| 28 | + } |
| 29 | + } |
| 30 | + |
| 31 | + public static void SetCSharpStyle(Scintilla scintilla) |
| 32 | + { |
| 33 | + scintilla.Styles[Style.Cpp.Comment].ForeColor = Color.FromArgb(0, 128, 0); // Green |
| 34 | + scintilla.Styles[Style.Cpp.CommentLine].ForeColor = Color.FromArgb(0, 128, 0); // Green |
| 35 | + scintilla.Styles[Style.Cpp.CommentLineDoc].ForeColor = Color.FromArgb(128, 128, 128); // Gray |
| 36 | + scintilla.Styles[Style.Cpp.Number].ForeColor = Color.Olive; |
| 37 | + |
| 38 | + scintilla.Styles[Style.Cpp.Default].ForeColor = Color.Black; |
| 39 | + |
| 40 | + scintilla.Styles[Style.Cpp.Word].ForeColor = Color.Blue; |
| 41 | + scintilla.Styles[Style.Cpp.Word2].ForeColor = Color.Blue; |
| 42 | + |
| 43 | + scintilla.Styles[Style.Cpp.String].ForeColor = Color.FromArgb(163, 21, 21); // Red |
| 44 | + scintilla.Styles[Style.Cpp.Character].ForeColor = Color.FromArgb(163, 21, 21); // Red |
| 45 | + scintilla.Styles[Style.Cpp.Verbatim].ForeColor = Color.FromArgb(163, 21, 21); // Red |
| 46 | + scintilla.Styles[Style.Cpp.StringEol].BackColor = Color.Pink; |
| 47 | + scintilla.Styles[Style.Cpp.Operator].ForeColor = Color.Purple; |
| 48 | + scintilla.Styles[Style.Cpp.Preprocessor].ForeColor = Color.Maroon; |
| 49 | + |
| 50 | + // Set the keywords |
| 51 | + // TODO move to ReservedKeywords.cs |
| 52 | + scintilla.SetKeywords(0, "abstract as base break case catch checked continue default delegate do else event explicit extern false finally fixed for foreach 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 virtual while"); |
| 53 | + scintilla.SetKeywords(1, "bool byte char class const decimal double enum float int long sbyte short static string struct uint ulong ushort void"); |
| 54 | + } |
| 55 | + |
| 56 | + public static void SetXmlStyle(Scintilla scintilla) |
| 57 | + { |
| 58 | + scintilla.Styles[Style.Xml.Entity].ForeColor = Color.Red; |
| 59 | + scintilla.Styles[Style.Xml.Comment].ForeColor = Color.Green; |
| 60 | + scintilla.Styles[Style.Xml.Tag].ForeColor = Color.Blue; |
| 61 | + scintilla.Styles[Style.Xml.TagEnd].ForeColor = Color.Blue; |
| 62 | + scintilla.Styles[Style.Xml.DoubleString].ForeColor = Color.DeepPink; |
| 63 | + scintilla.Styles[Style.Xml.SingleString].ForeColor = Color.DeepPink; |
| 64 | + } |
| 65 | + |
| 66 | + public static void SetJsonStyle(Scintilla scintilla) |
| 67 | + { |
| 68 | + scintilla.Styles[Style.Json.Number].ForeColor = Color.Olive; |
| 69 | + scintilla.Styles[Style.Json.String].ForeColor = Color.Maroon; |
| 70 | + scintilla.Styles[Style.Json.Operator].ForeColor = IntToColor(0xE0E0E0); |
| 71 | + } |
| 72 | + |
| 73 | + private static Color IntToColor(int rgb) |
| 74 | + { |
| 75 | + return Color.FromArgb(255, (byte)(rgb >> 16), (byte)(rgb >> 8), (byte)rgb); |
| 76 | + } |
| 77 | + } |
| 78 | +} |
0 commit comments