Changeset 11907 for stable/HeuristicLab.CodeEditor
- Timestamp:
- 02/05/15 10:51:29 (10 years ago)
- Location:
- stable
- Files:
-
- 1 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
-
stable/HeuristicLab.CodeEditor/3.3/CodeEditor.Designer.cs
r7967 r11907 46 46 // textEditor 47 47 // 48 this.textEditor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 49 | System.Windows.Forms.AnchorStyles.Left)50 48 this.textEditor.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 49 | System.Windows.Forms.AnchorStyles.Left) 50 | System.Windows.Forms.AnchorStyles.Right))); 51 51 this.textEditor.ConvertTabsToSpaces = true; 52 52 this.textEditor.IndentStyle = ICSharpCode.TextEditor.Document.IndentStyle.Auto; 53 53 this.textEditor.IsIconBarVisible = true; 54 54 this.textEditor.IsReadOnly = false; 55 this.textEditor.LineViewerStyle = ICSharpCode.TextEditor.Document.LineViewerStyle.FullRow; 55 56 this.textEditor.Location = new System.Drawing.Point(0, 0); 56 57 this.textEditor.Name = "textEditor"; … … 97 98 this.sharpDevelopLabel.Text = "powered by #develop"; 98 99 this.sharpDevelopLabel.ToolTipText = "Syntax highlighting and code completion facilities provided through #develop libr" + 99 100 "aries"; 100 101 this.sharpDevelopLabel.Click += new System.EventHandler(this.toolStripStatusLabel1_Click); 101 102 // … … 108 109 // CodeEditor 109 110 // 110 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);111 111 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 112 112 this.Controls.Add(this.textEditor); -
stable/HeuristicLab.CodeEditor/3.3/CodeEditor.cs
r10891 r11907 46 46 47 47 #region Fields & Properties 48 private static Color WarningColor = Color.Blue; 49 private static Color ErrorColor = Color.Red; 48 50 49 51 internal Dom.ProjectContentRegistry projectContentRegistry; … … 127 129 } 128 130 set { 131 if (Doc.TextContent == value) return; 129 132 Doc.Replace(prefix.Length, Doc.TextLength - suffix.Length - prefix.Length, value); 130 133 Doc.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.WholeTextArea)); … … 133 136 } 134 137 138 public bool ReadOnly { 139 get { return Doc.ReadOnly; } 140 set { Doc.ReadOnly = value; } 141 } 142 135 143 #endregion 136 144 137 145 public event EventHandler TextEditorValidated; 138 139 146 protected void OnTextEditorValidated() { 140 147 if (TextEditorValidated != null) … … 143 150 144 151 public event EventHandler TextEditorTextChanged; 145 146 152 protected void OnTextEditorTextChanged() { 147 153 if (TextEditorTextChanged != null) … … 154 160 textEditor.ActiveTextAreaControl.TextEditorProperties.SupportReadOnlySegments = true; 155 161 156 textEditor.SetHighlighting("C#"); 157 textEditor.ShowEOLMarkers = false; 158 textEditor.ShowInvalidLines = false; 162 LoadHighlightingStrategy(); 159 163 HostCallbackImplementation.Register(this); 160 164 CodeCompletionKeyHandler.Attach(this, textEditor); … … 187 191 return; 188 192 189 textEditor.ActiveTextAreaControl.TextArea.KeyEventHandler += new ICSharpCode.TextEditor.KeyEventHandler(TextArea_KeyEventHandler); 190 textEditor.ActiveTextAreaControl.TextArea.DoProcessDialogKey += new DialogKeyProcessor(TextArea_DoProcessDialogKey); 191 192 parserThread = new Thread(ParserThread); 193 parserThread.IsBackground = true; 193 textEditor.ActiveTextAreaControl.TextArea.KeyEventHandler += TextArea_KeyEventHandler; 194 textEditor.ActiveTextAreaControl.TextArea.DoProcessDialogKey += TextArea_DoProcessDialogKey; 195 196 parserThread = new Thread(ParserThread) { IsBackground = true }; 194 197 parserThread.Start(); 195 198 196 textEditor.Validated += (s, a) => { OnTextEditorValidated(); }; 197 textEditor.TextChanged += (s, a) => { OnTextEditorTextChanged(); }; 199 textEditor.Validated += (s, a) => OnTextEditorValidated(); 200 textEditor.TextChanged += (s, a) => { 201 Doc.MarkerStrategy.RemoveAll(m => errorMarkers.Contains(m)); errorMarkers.Clear(); 202 Doc.BookmarkManager.RemoveMarks(m => errorBookmarks.Contains(m)); errorBookmarks.Clear(); 203 Doc.RequestUpdate(new TextAreaUpdate(TextAreaUpdateType.WholeTextArea)); 204 Doc.CommitUpdate(); 205 OnTextEditorTextChanged(); 206 }; 198 207 InitializeImageList(); 208 } 209 210 private void LoadHighlightingStrategy() { 211 var strategy = (DefaultHighlightingStrategy)HighlightingManager.Manager.FindHighlighter("C#"); 212 strategy.SetColorFor("CaretMarker", new HighlightColor(Color.Beige, false, false)); 213 Doc.HighlightingStrategy = strategy; 199 214 } 200 215 … … 211 226 212 227 #region keyboard handlers: filter input in read-only areas 213 214 228 bool TextArea_KeyEventHandler(char ch) { 215 229 int caret = textEditor.ActiveTextAreaControl.Caret.Offset; … … 227 241 return false; 228 242 } 229 230 243 #endregion 231 244 … … 235 248 } 236 249 250 public void ScrollToPosition(int line, int column) { 251 var segment = GetSegmentAtOffset(line, column); 252 var position = Doc.OffsetToPosition(segment.Offset + segment.Length); 253 var caret = textEditor.ActiveTextAreaControl.Caret; 254 caret.Position = position; 255 textEditor.ActiveTextAreaControl.CenterViewOn(line, 0); 256 } 257 237 258 private List<TextMarker> errorMarkers = new List<TextMarker>(); 238 259 private List<Bookmark> errorBookmarks = new List<Bookmark>(); 239 260 public void ShowCompileErrors(CompilerErrorCollection compilerErrors, string filename) { 240 Doc.MarkerStrategy.RemoveAll(m => errorMarkers.Contains(m));241 Doc.BookmarkManager.RemoveMarks(m => errorBookmarks.Contains(m));242 errorMarkers.Clear();243 errorBookmarks.Clear();244 261 errorLabel.Text = ""; 245 262 errorLabel.ToolTipText = null; … … 268 285 private void AddErrorMarker(CompilerError error) { 269 286 var segment = GetSegmentAtOffset(error.Line, error.Column); 270 Color color = error.IsWarning ? Color.Blue : Color.Red;287 Color color = error.IsWarning ? WarningColor : ErrorColor; 271 288 var marker = new TextMarker(segment.Offset, segment.Length, TextMarkerType.WaveLine, color) { 272 289 ToolTip = error.ErrorText, … … 277 294 278 295 private void AddErrorBookmark(CompilerError error) { 279 var bookmark = new ErrorBookmark(Doc, new TextLocation(error.Column, error.Line - 1)); 296 Color color = error.IsWarning ? WarningColor : ErrorColor; 297 var bookmark = new ErrorBookmark(Doc, new TextLocation(error.Column, error.Line - 1), color); 280 298 errorBookmarks.Add(bookmark); 281 299 Doc.BookmarkManager.AddMark(bookmark); … … 283 301 284 302 private AbstractSegment GetSegmentAtOffset(int lineNr, int columnNr) { 285 lineNr = Math.Max(Doc.OffsetToPosition(prefix.Length).Line, lineNr );303 lineNr = Math.Max(Doc.OffsetToPosition(prefix.Length).Line, lineNr - 1); 286 304 lineNr = Math.Min(Doc.OffsetToPosition(Doc.TextLength - suffix.Length).Line, lineNr); 287 var line = Doc.GetLineSegment(lineNr - 1);288 columnNr = Math.Max(0, columnNr );305 var line = Doc.GetLineSegment(lineNr); 306 columnNr = Math.Max(0, columnNr - 1); 289 307 columnNr = Math.Min(line.Length, columnNr); 290 308 var word = line.GetWord(columnNr); … … 294 312 segment.Length = word.Length; 295 313 } else { 296 segment.Offset = line.Offset + columnNr - 1;314 segment.Offset = line.Offset + columnNr; 297 315 segment.Length = 1; 298 316 } -
stable/HeuristicLab.CodeEditor/3.3/ErrorBookmark.cs
r11170 r11907 25 25 namespace HeuristicLab.CodeEditor { 26 26 public class ErrorBookmark : Bookmark { 27 private readonly Brush brush; 27 28 28 29 public override bool CanToggle { get { return false; } } 29 30 30 31 public ErrorBookmark(IDocument document, TextLocation location) 32 : this(document, location, Color.Red) { } 33 34 public ErrorBookmark(IDocument document, TextLocation location, Color color) 31 35 : base(document, location) { 36 brush = new SolidBrush(color); 32 37 } 33 38 34 public override void Draw(IconBarMargin margin, System.Drawing.Graphics g, System.Drawing.Point p) {39 public override void Draw(IconBarMargin margin, Graphics g, Point p) { 35 40 int delta = margin.TextArea.TextView.FontHeight / 4; 36 41 Rectangle rect = new Rectangle( … … 39 44 margin.DrawingPosition.Width - 6, 40 45 margin.TextArea.TextView.FontHeight - delta * 2); 41 g.FillRectangle( Brushes.Red, rect);46 g.FillRectangle(brush, rect); 42 47 g.DrawRectangle(Pens.White, rect); 43 48 } -
stable/HeuristicLab.CodeEditor/3.3/HeuristicLab.CodeEditor-3.3.csproj
r9203 r11907 145 145 <ItemGroup> 146 146 <Compile Include="CodeCompletionData.cs" /> 147 <EmbeddedResource Include="CodeEditor.resx">148 <DependentUpon>CodeEditor.cs</DependentUpon>149 </EmbeddedResource>150 147 <EmbeddedResource Include="CodeViewer.resx"> 151 148 <DependentUpon>CodeViewer.cs</DependentUpon>
Note: See TracChangeset
for help on using the changeset viewer.