Browse Source

coloring by scintilla

Coder 10 months ago
parent
commit
49caa01dc3

+ 2 - 2
CodingCannon/CcMainForm.Designer.cs

@@ -37,14 +37,14 @@
             tabControl1.Location = new Point(0, 0);
             tabControl1.Name = "tabControl1";
             tabControl1.SelectedIndex = 0;
-            tabControl1.Size = new Size(800, 450);
+            tabControl1.Size = new Size(1314, 935);
             tabControl1.TabIndex = 0;
             // 
             // CcMainForm
             // 
             AutoScaleDimensions = new SizeF(11F, 24F);
             AutoScaleMode = AutoScaleMode.Font;
-            ClientSize = new Size(800, 450);
+            ClientSize = new Size(1314, 935);
             Controls.Add(tabControl1);
             Name = "CcMainForm";
             Text = "Coding Cannon";

+ 1 - 0
CodingCannon/CodingCannon.csproj

@@ -10,6 +10,7 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.6.0" />
+    <PackageReference Include="Scintilla.NET" Version="5.3.2.7" />
   </ItemGroup>
 
 </Project>

+ 19 - 11
CodingCannon/Pages/PropertyWalkerPage.Designer.cs

@@ -28,30 +28,38 @@
         /// </summary>
         private void InitializeComponent()
         {
-            richTextBox1 = new RichTextBox();
+            scintilla1 = new ScintillaNET.Scintilla();
             SuspendLayout();
             // 
-            // richTextBox1
+            // scintilla1
             // 
-            richTextBox1.Dock = DockStyle.Fill;
-            richTextBox1.Location = new Point(0, 0);
-            richTextBox1.Name = "richTextBox1";
-            richTextBox1.ReadOnly = true;
-            richTextBox1.Size = new Size(150, 150);
-            richTextBox1.TabIndex = 0;
-            richTextBox1.Text = "";
+            scintilla1.AutoCMaxHeight = 9;
+            scintilla1.BiDirectionality = ScintillaNET.BiDirectionalDisplayType.Disabled;
+            scintilla1.CaretLineVisible = true;
+            scintilla1.Dock = DockStyle.Fill;
+            scintilla1.LexerName = null;
+            scintilla1.Location = new Point(0, 0);
+            scintilla1.Name = "scintilla1";
+            scintilla1.ScrollWidth = 226;
+            scintilla1.Size = new Size(383, 218);
+            scintilla1.TabIndents = true;
+            scintilla1.TabIndex = 0;
+            scintilla1.Text = "<drop .cs source code file>";
+            scintilla1.UseRightToLeftReadingLayout = false;
+            scintilla1.WrapMode = ScintillaNET.WrapMode.None;
             // 
             // PropertyWalkerPage
             // 
             AutoScaleDimensions = new SizeF(11F, 24F);
             AutoScaleMode = AutoScaleMode.Font;
-            Controls.Add(richTextBox1);
+            Controls.Add(scintilla1);
             Name = "PropertyWalkerPage";
+            Size = new Size(383, 218);
             ResumeLayout(false);
         }
 
         #endregion
 
-        private RichTextBox richTextBox1;
+        private ScintillaNET.Scintilla scintilla1;
     }
 }

+ 32 - 4
CodingCannon/Pages/PropertyWalkerPage.cs

@@ -11,6 +11,7 @@ using System.Windows.Forms;
 using CodingCannon.Pages.Basic;
 using Microsoft.CodeAnalysis.CSharp;
 using Microsoft.CodeAnalysis.CSharp.Syntax;
+using ScintillaNET;
 
 namespace CodingCannon.Pages
 {
@@ -26,16 +27,41 @@ namespace CodingCannon.Pages
         {
             base.OnHandleCreated(e);
 
+            scintilla1.Margins[0].Width = 64;
+            scintilla1.Margins[0].Type = MarginType.Number;
 
-            richTextBox1.AllowDrop = true;
-            richTextBox1.DragOver += delegate (object? sender, DragEventArgs args)
+            scintilla1.Margins[1].Width = 12;
+            scintilla1.Margins[1].Type = MarginType.Symbol;
+
+            //scintilla1.LexerLanguage = "Cpp";
+            //scintilla1.Styles[Style.Default].Font = "fixedsys";
+            scintilla1.Styles[Style.Default].Size = 16;
+
+            // Configure the CPP (C#) lexer styles
+            scintilla1.Styles[Style.Cpp.Default].ForeColor = Color.Silver;
+            scintilla1.Styles[Style.Cpp.Comment].ForeColor = Color.FromArgb(0, 128, 0); // Green
+            scintilla1.Styles[Style.Cpp.CommentLine].ForeColor = Color.FromArgb(0, 128, 0); // Green
+            scintilla1.Styles[Style.Cpp.CommentLineDoc].ForeColor = Color.FromArgb(128, 128, 128); // Gray
+            scintilla1.Styles[Style.Cpp.Number].ForeColor = Color.Olive;
+            scintilla1.Styles[Style.Cpp.Word].ForeColor = Color.Blue;
+            scintilla1.Styles[Style.Cpp.Word2].ForeColor = Color.Blue;
+            scintilla1.Styles[Style.Cpp.String].ForeColor = Color.FromArgb(163, 21, 21); // Red
+            scintilla1.Styles[Style.Cpp.Character].ForeColor = Color.FromArgb(163, 21, 21); // Red
+            scintilla1.Styles[Style.Cpp.Verbatim].ForeColor = Color.FromArgb(163, 21, 21); // Red
+            scintilla1.Styles[Style.Cpp.StringEol].BackColor = Color.Pink;
+            scintilla1.Styles[Style.Cpp.Operator].ForeColor = Color.Purple;
+            scintilla1.Styles[Style.Cpp.Preprocessor].ForeColor = Color.Maroon;
+            scintilla1.Lexer = Lexer.Cpp;
+
+            scintilla1.AllowDrop = true;
+            scintilla1.DragOver += delegate (object? sender, DragEventArgs args)
             {
                 args.Effect = args.Data.GetDataPresent(DataFormats.FileDrop)
                     ? DragDropEffects.Link
                     : DragDropEffects.None;
             };
 
-            richTextBox1.DragDrop += delegate (object? sender, DragEventArgs args)
+            scintilla1.DragDrop += delegate (object? sender, DragEventArgs args)
             {
                 string[] files;
                 if (args.Data?.GetDataPresent(DataFormats.FileDrop) != true
@@ -50,7 +76,9 @@ namespace CodingCannon.Pages
 
                 walker.Visit(tree.GetRoot());
 
-                richTextBox1.Text = string.Join(Environment.NewLine, walker.PropertyNames.Select(p => $"t.{p}=f.{p};"));
+                scintilla1.Text = "//Auto generated by Coding Cannon"
+                    + Environment.NewLine + Environment.NewLine
+                    + string.Join(Environment.NewLine, walker.PropertyNames.Select(p => $"t.{p}=f.{p};"));
             };
         }