ScrollViewer sv = VisualTreeHelper. String strLine = Text.Substring (iOffset, iOffsetNext - iOffset) ĭrawingContext.DrawText (formattedText, new Point (leftMargin, topMargin - this.VerticalOffset)) ĭependencyObject dp = VisualTreeHelper.GetChild (this, 0) Int iOffsetNext = GetCharacterIndexFromLineIndex (iIdx + 1) Int iOffset = GetCharacterIndexFromLineIndex (iIdx) Int iEndVisibleLine = GetLastVisibleLineIndex () įor (int iIdx = iStartVisibleLine iIdx <= iEndVisibleLine - 1 ++iIdx) Int iStartVisibleLine = GetFirstVisibleLineIndex () ***formattedText.MaxTextWidth = this.ViewportWidth // space for scrollbar***įormattedText.MaxTextHeight = Math.Max (this.ActualHeight + this.VerticalOffset, 0) //Adjust for scrollingĭrawingContext.PushClip (new RectangleGeometry (new Rect (0, 0, this.ActualWidth, this.ActualHeight))) //restrict text to textbox Protected override void OnRender ( drawingContext)įormattedText formattedText = new FormattedText (īaseForeground) //Text that matches the textbox'sĭouble leftMargin = 4.0 + ĭouble topMargin = 2 + Void txtTest_TextChanged (object sender, TextChangedEventArgs e) Reorganize settings menu for text editor 10563 (fcollonval) Add promptCellConfig to Code. New FrameworkPropertyMetadata (new SolidColorBrush (Colors.Black), FrameworkPropertyMetadataOptions.AffectsRender)) New release jupyterlab/jupyterlab version v3.1.0 on GitHub. Public static DependencyProperty BaseForegroundProperty = DependencyProperty.Register ("BaseForeground", typeof (Brush), typeof (CodeBox), This.TextWrapping = īase.TextWrapping = This.Background = new SolidColorBrush (Colors.Transparent) This.Foreground = new SolidColorBrush (Colors.Transparent) This.TextChanged += new TextChangedEventHandler (txtTest_TextChanged) SolidColorBrush m_brBlack = new SolidColorBrush (Colors.Black) SolidColorBrush m_brOrange = new SolidColorBrush (Colors.Orange) SolidColorBrush m_brRed = new SolidColorBrush (Colors.Red) The rest (that has been reomved) is just code that does more text-coloring. This is the code-behind C#, lengthy, but it has been trimmed down to only enough to show what's going on. I'm fairly new to WPF and there's much to it that is still mysterious to me, so the solution may be obvious to someone with more experience with it. "formattedText.MaxTextWidth = this.ViewportWidth // space for scrollbar" I've tracked the problem to a line in OnRender: The scrollbar is visible and it changes the size of the drag button to show that it sees that the unwrapped text is wider than the viewing area, but since the text has already been wrapped, dragging it doesn't make any difference. I've tried adding a horizontal scrollbar but that doesn't help. In a normal TextBox, simply setting the TextWrapping property to NoWrap does the trick, but not with CodeBox (which inherits from TextBox in code-behind). But if you want to start figuring out how to run functions on changes to the text editor (i.e.I've used the CodeBox project from CodeProject and it works very well except for the fact that I can't disable text wrapping. If I can find some time next week I'll try and prototype this feature. Some methods may be able to be abstracted and used (like handling the terminal connection, settings, etc) but many of the linting methods in there now work specifically on notebook text. We'd have to have a method that runs on text editor changes (currently the plugin runs on notebook cell changes, see ), but this could all be added to the class in parallel to the notebook implementation. If you already use a text editor, you can skip this section. It is good practice to use a text editor, especially if you are doing work that involves software development. ipynb files but may have some limitations for other file types. This should actually be much simpler than the notebook implementation because you can run the linter on the whole file rather than passing the text of the file to flake8 via stdin. JupyterLab provides a lot of functionality for working with the. I would welcome any PR contributions if you want to clone this repository and start developing this feature.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |