Shout out to JetSerge for sharing a custom Vial firmware for The Key V2. The sample Python code only worked with Vial firmware, so the first thing I had to do was install Vial firmware. The first thing I needed to do was install Vial compatible firmware. I loved the idea of using The Key’s LEDs as an indicator and combining it with my Zoom Mute scripts. Using Python, they were able to listen for Windows notifications and flash the LEDs on The Key. Windows NotificationsĪnother The Key v2 owner took the customization to another level. Using QMK, and a customizable keyboard firmware, I was able to change what the keys did and even added additional functionality for key combos. ![]() Luckily, the keyboard is incredibly customizable. The actual functionality, keys for ctrl/command, C and V, wasn’t actually that useful. The hardware feels great and the v2 adds some fun LEDs. I missed the original run of The Key, but I preordered the v2 and recently received it. Sv.Originally an April Fool’s joke, Drop and Stack Overflow released the second version of their compact macropad, The Key v2. ScrollViewer sv = VisualTreeHelper.GetChild (dp, 0) as ScrollViewer 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) New FrameworkPropertyMetadata (new SolidColorBrush (Colors.Black), FrameworkPropertyMetadataOptions.AffectsRender)) 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). I've used the CodeBox project from CodeProject and it works very well except for the fact that I can't disable text wrapping.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |