/* * Copyright(c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ extern alias TizenSystemSettings; using TizenSystemSettings.Tizen.System; using System; using System.Globalization; using System.ComponentModel; using Tizen.NUI.Text; namespace Tizen.NUI.BaseComponents { /// /// A control which provides a multi-line editable text editor. /// /// 3 public partial class TextEditor : View { private string textEditorTextSid = null; private string textEditorPlaceHolderTextSid = null; private bool systemlangTextFlag = false; private InputMethodContext inputMethodContext = null; private float fontSizeScale = 1.0f; private bool hasFontSizeChangedCallback = false; static TextEditor() { } /// /// Creates the TextEditor control. /// /// 3 public TextEditor() : this(Interop.TextEditor.New(), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Creates the TextEditor with specified style. /// [EditorBrowsable(EditorBrowsableState.Never)] public TextEditor(TextEditorStyle style) : this(Interop.TextLabel.New(), true, style: style) { } /// /// Creates the TextEditor with setting the status of shown or hidden. /// /// false : Not displayed (hidden), true : displayed (shown) /// This will be public opened in next release of tizen after ACR done. Before ACR, it is used as HiddenAPI (InhouseAPI). [EditorBrowsable(EditorBrowsableState.Never)] public TextEditor(bool shown) : this(Interop.TextEditor.New(), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); SetVisible(shown); } internal TextEditor(TextEditor handle, bool shown = true) : this(Interop.TextEditor.NewTextEditor(TextEditor.getCPtr(handle)), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); if (!shown) { SetVisible(false); } } internal TextEditor(global::System.IntPtr cPtr, bool cMemoryOwn, bool shown = true, TextEditorStyle style = null) : base(cPtr, cMemoryOwn, style) { if (!shown) { SetVisible(false); } } /// /// The TranslatableText property.
/// The text can set the SID value.
///
/// /// ResourceManager about multilingual is null. /// /// 4 public string TranslatableText { get { return textEditorTextSid; } set { if (NUIApplication.MultilingualResourceManager == null) { throw new ArgumentNullException(null, "ResourceManager about multilingual is null"); } textEditorTextSid = value; Text = SetTranslatable(textEditorTextSid); NotifyPropertyChanged(); } } /// /// The TranslatablePlaceholderText property.
/// The text can set the SID value.
///
/// /// ResourceManager about multilingual is null. /// /// 4 public string TranslatablePlaceholderText { get { return textEditorPlaceHolderTextSid; } set { if (NUIApplication.MultilingualResourceManager == null) { throw new ArgumentNullException(null, "ResourceManager about multilingual is null"); } textEditorPlaceHolderTextSid = value; PlaceholderText = SetTranslatable(textEditorPlaceHolderTextSid); NotifyPropertyChanged(); } } /// /// The Text property. /// /// 3 public string Text { get { return (string)GetValue(TextProperty); } set { SetValueAndForceSendChangeSignal(TextProperty, value); NotifyPropertyChanged(); } } /// /// The TextColor property. /// /// /// The property cascade chaining set is possible. For example, this (textEditor.TextColor.X = 0.1f;) is possible. /// /// 3 public Vector4 TextColor { get { Vector4 temp = (Vector4)GetValue(TextColorProperty); return new Vector4(OnTextColorChanged, temp.X, temp.Y, temp.Z, temp.W); } set { SetValue(TextColorProperty, value); NotifyPropertyChanged(); } } /// /// The FontFamily property. /// /// 3 public string FontFamily { get { return (string)GetValue(FontFamilyProperty); } set { SetValue(FontFamilyProperty, value); NotifyPropertyChanged(); } } /// /// The FontStyle property. /// The fontStyle map contains the following keys :
/// /// width (string)The width key defines occupied by each glyph. (values: ultraCondensed, extraCondensed, condensed, semiCondensed, normal, semiExpanded, expanded, extraExpanded, ultraExpanded) /// weight (string)The weight key defines the thickness or darkness of the glyphs. (values: thin, ultraLight, extraLight, light, demiLight, semiLight, book, normal, regular, medium, demiBold, semiBold, bold, ultraBold, extraBold, black, heavy, extraBlack) /// slant (string)The slant key defines whether to use italics. (values: normal, roman, italic, oblique) /// ///
/// 3 [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1721: Property names should not match get methods")] public PropertyMap FontStyle { get { return (PropertyMap)GetValue(FontStyleProperty); } set { SetValue(FontStyleProperty, value); NotifyPropertyChanged(); } } /// /// Set FontStyle to TextEditor.
///
/// The FontStyle /// /// SetFontStyle specifies the requested font style through .
///
/// /// The following example demonstrates how to use the SetFontStyle method. /// /// var fontStyle = new Tizen.NUI.Text.FontStyle(); /// fontStyle.Width = FontWidthType.Expanded; /// fontStyle.Weight = FontWeightType.Bold; /// fontStyle.Slant = FontSlantType.Italic; /// editor.SetFontStyle(fontStyle); /// /// [EditorBrowsable(EditorBrowsableState.Never)] public void SetFontStyle(FontStyle fontStyle) { SetProperty(TextEditor.Property.FontStyle, new PropertyValue(TextUtils.GetFontStyleMap(fontStyle))); } /// /// Get FontStyle from TextEditor.
///
/// The FontStyle /// /// /// [EditorBrowsable(EditorBrowsableState.Never)] public FontStyle GetFontStyle() { var map = new PropertyMap(); GetProperty(TextEditor.Property.FontStyle).Get(map); return TextUtils.GetFontStyleStruct(map); } /// /// The PointSize property. /// /// 3 public float PointSize { get { return (float)GetValue(PointSizeProperty); } set { SetValue(PointSizeProperty, value); NotifyPropertyChanged(); } } /// /// The HorizontalAlignment property. /// /// 3 public HorizontalAlignment HorizontalAlignment { get { return (HorizontalAlignment)GetValue(HorizontalAlignmentProperty); } set { SetValue(HorizontalAlignmentProperty, value); NotifyPropertyChanged(); } } /// /// The ScrollThreshold property. /// /// 3 public float ScrollThreshold { get { return (float)GetValue(ScrollThresholdProperty); } set { SetValue(ScrollThresholdProperty, value); NotifyPropertyChanged(); } } /// /// The ScrollSpeed property. /// /// 3 public float ScrollSpeed { get { return (float)GetValue(ScrollSpeedProperty); } set { SetValue(ScrollSpeedProperty, value); NotifyPropertyChanged(); } } /// /// The PrimaryCursorColor property. /// /// /// The property cascade chaining set is possible. For example, this (textEditor.PrimaryCursorColor.X = 0.1f;) is possible. /// /// 3 public Vector4 PrimaryCursorColor { get { Vector4 temp = (Vector4)GetValue(PrimaryCursorColorProperty); return new Vector4(OnPrimaryCursorColorChanged, temp.X, temp.Y, temp.Z, temp.W); } set { SetValue(PrimaryCursorColorProperty, value); NotifyPropertyChanged(); } } /// /// The SecondaryCursorColor property. /// /// /// The property cascade chaining set is possible. For example, this (textEditor.SecondaryCursorColor.X = 0.1f;) is possible. /// /// 3 public Vector4 SecondaryCursorColor { get { Vector4 temp = (Vector4)GetValue(SecondaryCursorColorProperty); return new Vector4(OnSecondaryCursorColorChanged, temp.X, temp.Y, temp.Z, temp.W); } set { SetValue(SecondaryCursorColorProperty, value); NotifyPropertyChanged(); } } /// /// The EnableCursorBlink property. /// /// 3 public bool EnableCursorBlink { get { return (bool)GetValue(EnableCursorBlinkProperty); } set { SetValue(EnableCursorBlinkProperty, value); NotifyPropertyChanged(); } } /// /// The CursorBlinkInterval property. /// /// 3 public float CursorBlinkInterval { get { return (float)GetValue(CursorBlinkIntervalProperty); } set { SetValue(CursorBlinkIntervalProperty, value); NotifyPropertyChanged(); } } /// /// The CursorBlinkDuration property. /// /// 3 public float CursorBlinkDuration { get { return (float)GetValue(CursorBlinkDurationProperty); } set { SetValue(CursorBlinkDurationProperty, value); NotifyPropertyChanged(); } } /// /// The CursorWidth property. /// /// 3 public int CursorWidth { get { return (int)GetValue(CursorWidthProperty); } set { SetValue(CursorWidthProperty, value); NotifyPropertyChanged(); } } /// /// The GrabHandleImage property. /// /// 3 public string GrabHandleImage { get { return (string)GetValue(GrabHandleImageProperty); } set { SetValue(GrabHandleImageProperty, value); NotifyPropertyChanged(); } } /// /// The GrabHandlePressedImage property. /// /// 3 public string GrabHandlePressedImage { get { return (string)GetValue(GrabHandlePressedImageProperty); } set { SetValue(GrabHandlePressedImageProperty, value); NotifyPropertyChanged(); } } /// /// The SelectionHandleImageLeft property. /// The selectionHandleImageLeft map contains the following key :
/// /// filename (string)The path of image file /// ///
/// 3 public PropertyMap SelectionHandleImageLeft { get { return (PropertyMap)GetValue(SelectionHandleImageLeftProperty); } set { SetValue(SelectionHandleImageLeftProperty, value); NotifyPropertyChanged(); } } /// /// The SelectionHandleImageRight property. /// The selectionHandleImageRight map contains the following key :
/// /// filename (string)The path of image file /// ///
/// 3 public PropertyMap SelectionHandleImageRight { get { return (PropertyMap)GetValue(SelectionHandleImageRightProperty); } set { SetValue(SelectionHandleImageRightProperty, value); NotifyPropertyChanged(); } } /// /// The SelectionHandlePressedImageLeft property. /// The selectionHandlePressedImageLeft map contains the following key :
/// /// filename (string)The path of image file /// ///
/// 3 public PropertyMap SelectionHandlePressedImageLeft { get { return (PropertyMap)GetValue(SelectionHandlePressedImageLeftProperty); } set { SetValue(SelectionHandlePressedImageLeftProperty, value); NotifyPropertyChanged(); } } /// /// The SelectionHandlePressedImageRight property. /// The selectionHandlePressedImageRight map contains the following key :
/// /// filename (string)The path of image file /// ///
/// 3 public PropertyMap SelectionHandlePressedImageRight { get { return (PropertyMap)GetValue(SelectionHandlePressedImageRightProperty); } set { SetValue(SelectionHandlePressedImageRightProperty, value); NotifyPropertyChanged(); } } /// /// The SelectionHandleMarkerImageLeft property. /// The selectionHandleMarkerImageLeft map contains the following key :
/// /// filename (string)The path of image file /// ///
/// 3 public PropertyMap SelectionHandleMarkerImageLeft { get { return (PropertyMap)GetValue(SelectionHandleMarkerImageLeftProperty); } set { SetValue(SelectionHandleMarkerImageLeftProperty, value); NotifyPropertyChanged(); } } /// /// The SelectionHandleMarkerImageRight property. /// The selectionHandleMarkerImageRight map contains the following key :
/// /// filename (string)The path of image file /// ///
/// 3 public PropertyMap SelectionHandleMarkerImageRight { get { return (PropertyMap)GetValue(SelectionHandleMarkerImageRightProperty); } set { SetValue(SelectionHandleMarkerImageRightProperty, value); NotifyPropertyChanged(); } } /// /// The SelectionHighlightColor property. /// /// /// The property cascade chaining set is possible. For example, this (textEditor.SelectionHighlightColor.X = 0.1f;) is possible. /// /// 3 public Vector4 SelectionHighlightColor { get { Vector4 temp = (Vector4)GetValue(SelectionHighlightColorProperty); return new Vector4(OnSelectionHighlightColorChanged, temp.X, temp.Y, temp.Z, temp.W); } set { SetValue(SelectionHighlightColorProperty, value); NotifyPropertyChanged(); } } /// /// The DecorationBoundingBox property. /// /// /// The property cascade chaining set is possible. For example, this (textEditor.DecorationBoundingBox.X = 1;) is possible. /// /// 3 public Rectangle DecorationBoundingBox { get { Rectangle temp = (Rectangle)GetValue(DecorationBoundingBoxProperty); return new Rectangle(OnDecorationBoundingBoxChanged, temp.X, temp.Y, temp.Width, temp.Height); } set { SetValue(DecorationBoundingBoxProperty, value); NotifyPropertyChanged(); } } /// /// The EnableMarkup property. /// /// 3 public bool EnableMarkup { get { return (bool)GetValue(EnableMarkupProperty); } set { SetValue(EnableMarkupProperty, value); NotifyPropertyChanged(); } } /// /// The InputColor property. /// /// /// The property cascade chaining set is possible. For example, this (textEditor.InputColor.X = 0.1f;) is possible. /// /// 3 public Vector4 InputColor { get { Vector4 temp = (Vector4)GetValue(InputColorProperty); return new Vector4(OnInputColorChanged, temp.X, temp.Y, temp.Z, temp.W); } set { SetValue(InputColorProperty, value); NotifyPropertyChanged(); } } /// /// The InputFontFamily property. /// /// 3 public string InputFontFamily { get { return (string)GetValue(InputFontFamilyProperty); } set { SetValue(InputFontFamilyProperty, value); NotifyPropertyChanged(); } } /// /// The InputFontStyle property. /// The inputFontStyle map contains the following keys :
/// /// width (string)The width key defines occupied by each glyph. (values: ultraCondensed, extraCondensed, condensed, semiCondensed, normal, semiExpanded, expanded, extraExpanded, ultraExpanded) /// weight (string)The weight key defines the thickness or darkness of the glyphs. (values: thin, ultraLight, extraLight, light, demiLight, semiLight, book, normal, regular, medium, demiBold, semiBold, bold, ultraBold, extraBold, black, heavy, extraBlack) /// slant (string)The slant key defines whether to use italics. (values: normal, roman, italic, oblique) /// ///
/// 3 [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1721: Property names should not match get methods")] public PropertyMap InputFontStyle { get { return (PropertyMap)GetValue(InputFontStyleProperty); } set { SetValue(InputFontStyleProperty, value); NotifyPropertyChanged(); } } /// /// Set InputFontStyle to TextEditor.
///
/// The FontStyle /// /// SetInputFontStyle specifies the requested font style for new input text through .
///
/// /// The following example demonstrates how to use the SetInputFontStyle method. /// /// var fontStyle = new Tizen.NUI.Text.FontStyle(); /// fontStyle.Width = FontWidthType.Expanded; /// fontStyle.Weight = FontWeightType.Bold; /// fontStyle.Slant = FontSlantType.Italic; /// editor.SetInputFontStyle(fontStyle); /// /// [EditorBrowsable(EditorBrowsableState.Never)] public void SetInputFontStyle(FontStyle fontStyle) { SetProperty(TextEditor.Property.InputFontStyle, new PropertyValue(TextUtils.GetFontStyleMap(fontStyle))); NotifyPropertyChanged(); } /// /// Get InputFontStyle from TextEditor.
///
/// The FontStyle /// /// /// [EditorBrowsable(EditorBrowsableState.Never)] public FontStyle GetInputFontStyle() { var map = new PropertyMap(); GetProperty(TextEditor.Property.InputFontStyle).Get(map); return TextUtils.GetFontStyleStruct(map); } /// /// The InputPointSize property. /// /// 3 public float InputPointSize { get { return (float)GetValue(InputPointSizeProperty); } set { SetValue(InputPointSizeProperty, value); NotifyPropertyChanged(); } } /// /// The LineSpacing property. /// /// 3 public float LineSpacing { get { return (float)GetValue(LineSpacingProperty); } set { SetValue(LineSpacingProperty, value); NotifyPropertyChanged(); } } /// /// The InputLineSpacing property. /// /// 3 public float InputLineSpacing { get { return (float)GetValue(InputLineSpacingProperty); } set { SetValue(InputLineSpacingProperty, value); NotifyPropertyChanged(); } } /// /// The Underline property. /// The underline map contains the following keys :
/// /// enable (bool)Whether the underline is enabled (the default value is false) /// color (Color)The color of the underline (If not provided then the color of the text is used) /// height (float)The height in pixels of the underline (the default value is 1.f) /// ///
/// 3 [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1721: Property names should not match get methods")] public PropertyMap Underline { get { return (PropertyMap)GetValue(UnderlineProperty); } set { SetValue(UnderlineProperty, value); NotifyPropertyChanged(); } } /// /// Set Underline to TextEditor.
///
/// The Underline /// /// SetUnderline specifies the underline of the text through .
///
/// /// The following example demonstrates how to use the SetUnderline method. /// /// var underline = new Tizen.NUI.Text.Underline(); /// underline.Enable = true; /// underline.Color = new Color("#3498DB"); /// underline.Height = 2.0f; /// editor.SetUnderline(underline); /// /// [EditorBrowsable(EditorBrowsableState.Never)] public void SetUnderline(Underline underline) { SetProperty(TextEditor.Property.UNDERLINE, new PropertyValue(TextUtils.GetUnderlineMap(underline))); } /// /// Get Underline from TextEditor.
///
/// The Underline /// /// /// [EditorBrowsable(EditorBrowsableState.Never)] public Underline GetUnderline() { var map = new PropertyMap(); GetProperty(TextEditor.Property.UNDERLINE).Get(map); return TextUtils.GetUnderlineStruct(map); } /// /// The InputUnderline property. /// /// 3 public string InputUnderline { get { return (string)GetValue(InputUnderlineProperty); } set { SetValue(InputUnderlineProperty, value); NotifyPropertyChanged(); } } /// /// The Shadow property. /// The shadow map contains the following keys :
/// /// color (Color)The color of the shadow (the default color is Color.Black) /// offset (Vector2)The offset in pixels of the shadow (If not provided then the shadow is not enabled) /// blurRadius (float)The radius of the Gaussian blur for the soft shadow (If not provided then the soft shadow is not enabled) /// ///
/// 3 [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1721: Property names should not match get methods")] public PropertyMap Shadow { get { return (PropertyMap)GetValue(ShadowProperty); } set { SetValue(ShadowProperty, value); NotifyPropertyChanged(); } } /// /// Set Shadow to TextEditor.
///
/// The Shadow /// /// SetShadow specifies the shadow of the text through .
///
/// /// The following example demonstrates how to use the SetShadow method. /// /// var shadow = new Tizen.NUI.Text.Shadow(); /// shadow.Offset = new Vector2(3, 3); /// shadow.Color = new Color("#F1C40F"); /// editor.SetShadow(shadow); /// /// [EditorBrowsable(EditorBrowsableState.Never)] public void SetShadow(Tizen.NUI.Text.Shadow shadow) { SetProperty(TextEditor.Property.SHADOW, new PropertyValue(TextUtils.GetShadowMap(shadow))); } /// /// Get Shadow from TextEditor.
///
/// The Shadow /// /// /// [EditorBrowsable(EditorBrowsableState.Never)] public Tizen.NUI.Text.Shadow GetShadow() { var map = new PropertyMap(); GetProperty(TextEditor.Property.SHADOW).Get(map); return TextUtils.GetShadowStruct(map); } /// /// The InputShadow property. /// /// 3 public string InputShadow { get { return (string)GetValue(InputShadowProperty); } set { SetValue(InputShadowProperty, value); NotifyPropertyChanged(); } } /// /// The Emboss property. /// /// 3 public string Emboss { get { return (string)GetValue(EmbossProperty); } set { SetValue(EmbossProperty, value); NotifyPropertyChanged(); } } /// /// The InputEmboss property. /// /// 3 public string InputEmboss { get { return (string)GetValue(InputEmbossProperty); } set { SetValue(InputEmbossProperty, value); NotifyPropertyChanged(); } } /// /// The Outline property. /// The outline map contains the following keys :
/// /// color (Color)The color of the outline (the default color is Color.White) /// width (float)The width in pixels of the outline (If not provided then the outline is not enabled) /// ///
/// 3 [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1721: Property names should not match get methods")] public PropertyMap Outline { get { return (PropertyMap)GetValue(OutlineProperty); } set { SetValue(OutlineProperty, value); NotifyPropertyChanged(); } } /// /// Set Outline to TextEditor.
///
/// The Outline /// /// SetOutline specifies the outline of the text through .
///
/// /// The following example demonstrates how to use the SetOutline method. /// /// var outline = new Tizen.NUI.Text.Outline(); /// outline.Width = 2.0f; /// outline.Color = new Color("#45B39D"); /// editor.SetOutline(outline); /// /// [EditorBrowsable(EditorBrowsableState.Never)] public void SetOutline(Outline outline) { SetProperty(TextEditor.Property.OUTLINE, new PropertyValue(TextUtils.GetOutlineMap(outline))); } /// /// Get Outline from TextEditor.
///
/// The Outline /// /// /// [EditorBrowsable(EditorBrowsableState.Never)] public Outline GetOutline() { var map = new PropertyMap(); GetProperty(TextEditor.Property.OUTLINE).Get(map); return TextUtils.GetOutlineStruct(map); } /// /// The InputOutline property. /// /// 3 public string InputOutline { get { return (string)GetValue(InputOutlineProperty); } set { SetValue(InputOutlineProperty, value); NotifyPropertyChanged(); } } /// /// The SmoothScroll property. /// /// 3 public bool SmoothScroll { get { return (bool)GetValue(SmoothScrollProperty); } set { SetValue(SmoothScrollProperty, value); NotifyPropertyChanged(); } } /// /// The SmoothScrollDuration property. /// /// 3 public float SmoothScrollDuration { get { return (float)GetValue(SmoothScrollDurationProperty); } set { SetValue(SmoothScrollDurationProperty, value); NotifyPropertyChanged(); } } /// /// The EnableScrollBar property. /// /// 3 public bool EnableScrollBar { get { return (bool)GetValue(EnableScrollBarProperty); } set { SetValue(EnableScrollBarProperty, value); NotifyPropertyChanged(); } } /// /// The ScrollBarShowDuration property. /// /// 3 public float ScrollBarShowDuration { get { return (float)GetValue(ScrollBarShowDurationProperty); } set { SetValue(ScrollBarShowDurationProperty, value); NotifyPropertyChanged(); } } /// /// The ScrollBarFadeDuration property. /// /// 3 public float ScrollBarFadeDuration { get { return (float)GetValue(ScrollBarFadeDurationProperty); } set { SetValue(ScrollBarFadeDurationProperty, value); NotifyPropertyChanged(); } } /// /// The PixelSize property. /// /// 3 public float PixelSize { get { return (float)GetValue(PixelSizeProperty); } set { SetValue(PixelSizeProperty, value); NotifyPropertyChanged(); } } /// /// The line count of the text. /// /// 3 public int LineCount { get { int temp = 0; GetProperty(TextEditor.Property.LineCount).Get(out temp); return temp; } } /// /// The text to display when the TextEditor is empty and inactive. /// /// 3 public string PlaceholderText { get { return (string)GetValue(PlaceholderTextProperty); } set { SetValue(PlaceholderTextProperty, value); NotifyPropertyChanged(); } } /// /// The Selected Text property (read-only). /// [EditorBrowsable(EditorBrowsableState.Never)] public string SelectedText { get { string temp; GetProperty(TextEditor.Property.SelectedText).Get(out temp); return temp; } } /// /// The Placeholder text color. /// /// /// The property cascade chaining set is possible. For example, this (textEditor.PlaceholderTextColor.X = 0.1f;) is possible. /// /// 3 public Color PlaceholderTextColor { get { Color temp = (Color)GetValue(PlaceholderTextColorProperty); return new Color(OnPlaceholderTextColorChanged, temp.R, temp.G, temp.B, temp.A); } set { SetValue(PlaceholderTextColorProperty, value); NotifyPropertyChanged(); } } /// /// The EnableSelection property. /// /// 3 public bool EnableSelection { get { return (bool)GetValue(EnableSelectionProperty); } set { SetValue(EnableSelectionProperty, value); NotifyPropertyChanged(); } } /// /// The start index for selection. /// /// 8 /// This will be public opened in tizen_6.0 after ACR done, Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public int SelectedTextStart { get { int temp; GetProperty(TextEditor.Property.SelectedTextStart).Get(out temp); return temp; } set { SetProperty(TextEditor.Property.SelectedTextStart, new PropertyValue(value)); NotifyPropertyChanged(); } } /// /// The end index for selection. /// /// 8 /// This will be public opened in tizen_6.0 after ACR done, Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public int SelectedTextEnd { get { int temp; GetProperty(TextEditor.Property.SelectedTextEnd).Get(out temp); return temp; } set { SetProperty(TextEditor.Property.SelectedTextEnd, new PropertyValue(value)); NotifyPropertyChanged(); } } /// /// Enable editing in text control. /// /// 8 /// This will be public opened in tizen_6.0 after ACR done, Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public bool EnableEditing { get { bool temp; GetProperty(TextEditor.Property.EnableEditing).Get(out temp); return temp; } set { SetProperty(TextEditor.Property.EnableEditing, new PropertyValue(value)); NotifyPropertyChanged(); } } /// /// Specify horizontal scroll position in text control. /// [EditorBrowsable(EditorBrowsableState.Never)] public int HorizontalScrollPosition { get { int temp; using (PropertyValue propertyValue = GetProperty(TextEditor.Property.HorizontalScrollPosition)) { propertyValue.Get(out temp); } return temp; } set { using (PropertyValue propertyValue = new PropertyValue(value)) { SetProperty(TextEditor.Property.HorizontalScrollPosition, propertyValue); NotifyPropertyChanged(); } } } /// /// Specify vertical scroll position in text control. /// [EditorBrowsable(EditorBrowsableState.Never)] public int VerticalScrollPosition { get { int temp; using (PropertyValue propertyValue = GetProperty(TextEditor.Property.VerticalScrollPosition)) { propertyValue.Get(out temp); } return temp; } set { using (PropertyValue propertyValue = new PropertyValue(value)) { SetProperty(TextEditor.Property.VerticalScrollPosition, propertyValue); NotifyPropertyChanged(); } } } /// /// Specify primary cursor (caret) position in text control. /// [EditorBrowsable(EditorBrowsableState.Never)] public int PrimaryCursorPosition { get { int temp; using (PropertyValue propertyValue = GetProperty(TextEditor.Property.PrimaryCursorPosition)) { propertyValue.Get(out temp); } return temp; } set { using (PropertyValue propertyValue = new PropertyValue(value)) { SetProperty(TextEditor.Property.PrimaryCursorPosition, propertyValue); NotifyPropertyChanged(); } } } /// /// The GrabHandleColor property. /// /// /// The property cascade chaining set is possible. For example, this (textEditor.GrabHandleColor.X = 0.1f;) is possible. /// [EditorBrowsable(EditorBrowsableState.Never)] public Color GrabHandleColor { get { Color temp = (Color)GetValue(GrabHandleColorProperty); return new Color(OnGrabHandleColorChanged, temp.R, temp.G, temp.B, temp.A); } set { SetValue(GrabHandleColorProperty, value); NotifyPropertyChanged(); } } /// /// Set InputFilter to TextEditor.
///
/// The InputFilter /// /// filters input based on regular expressions.
/// Users can set the Accepted or Rejected regular expression set, or both.
/// If both are used, Rejected has higher priority.
/// The character set must follow the regular expression rules.
/// Behaviour can not be guaranteed for incorrect grammars.
/// Refer the link below for detailed rules.
/// The functions in std::regex library use the ECMAScript grammar:
/// http://cplusplus.com/reference/regex/ECMAScript/
/// InputFiltered signal is emitted when the input is filtered by InputFilter
/// See , and for a detailed description.
///
/// /// The following example demonstrates how to use the SetInputFilter method. /// /// var inputFilter = new Tizen.NUI.Text.InputFilter(); /// inputFilter.Accepted = @"[\d]"; // accept whole digits /// inputFilter.Rejected = "[0-3]"; // reject 0, 1, 2, 3 /// editor.SetInputFilter(inputFilter); // acceptable inputs are 4, 5, 6, 7, 8, 9 /// /// [EditorBrowsable(EditorBrowsableState.Never)] public void SetInputFilter(InputFilter inputFilter) { SetProperty(TextEditor.Property.InputFilter, new PropertyValue(TextUtils.GetInputFilterMap(inputFilter))); } /// /// Get InputFilter from TextEditor.
///
/// The InputFilter /// /// /// [EditorBrowsable(EditorBrowsableState.Never)] public InputFilter GetInputFilter() { var map = new PropertyMap(); GetProperty(TextEditor.Property.InputFilter).Get(map); return TextUtils.GetInputFilterStruct(map); } /// /// The Placeholder property. /// The placeholder map contains the following keys :
/// /// text (string)The text to display when the TextEditor is empty and inactive /// textFocused (string)The text to display when the placeholder has focus /// color (Color)The color of the placeholder text /// fontFamily (string)The fontFamily of the placeholder text /// fontStyle (PropertyMap)The fontStyle of the placeholder text /// pointSize (float)The pointSize of the placeholder text /// pixelSize (float)The pixelSize of the placeholder text /// ellipsis (bool)The ellipsis of the placeholder text /// ///
/// /// The following example demonstrates how to set the placeholder property. /// /// PropertyMap propertyMap = new PropertyMap(); /// propertyMap.Add("text", new PropertyValue("Setting Placeholder Text")); /// propertyMap.Add("textFocused", new PropertyValue("Setting Placeholder Text Focused")); /// propertyMap.Add("color", new PropertyValue(Color.Red)); /// propertyMap.Add("fontFamily", new PropertyValue("Arial")); /// propertyMap.Add("pointSize", new PropertyValue(12.0f)); /// /// PropertyMap fontStyleMap = new PropertyMap(); /// fontStyleMap.Add("weight", new PropertyValue("bold")); /// fontStyleMap.Add("width", new PropertyValue("condensed")); /// fontStyleMap.Add("slant", new PropertyValue("italic")); /// propertyMap.Add("fontStyle", new PropertyValue(fontStyleMap)); /// /// TextEditor editor = new TextEditor(); /// editor.Placeholder = propertyMap; /// /// /// 3 public Tizen.NUI.PropertyMap Placeholder { get { PropertyMap map = (PropertyMap)GetValue(PlaceholderProperty); PropertyValue value = null; // text value = map.Find(0); if (null != value) { value.Get(out string text); map.Add("text", new PropertyValue(text)); } // textFocused value = map.Find(1); if (null != value) { value.Get(out string textFocused); map.Add("textFocused", new PropertyValue(textFocused)); } // color value = map.Find(2); if (null != value) { Color color = new Color(); value.Get(color); map.Add("color", new PropertyValue(color)); } // fontFamily value = map.Find(3); if (null != value) { value.Get(out string fontFamily); map.Add("fontFamily", new PropertyValue(fontFamily)); } // fontStyle value = map.Find(4); if (null != value) { PropertyMap fontStyle = new PropertyMap(); value.Get(fontStyle); map.Add("fontStyle", new PropertyValue(fontStyle)); } // pointSize value = map.Find(5); if (null != value) { value.Get(out float pointSize); map.Add("pointSize", new PropertyValue(pointSize)); } // pixelSize value = map.Find(6); if (null != value) { value.Get(out float pixelSize); map.Add("pixelSize", new PropertyValue(pixelSize)); } // ellipsis value = map.Find(7); if (null != value) { value.Get(out bool ellipsis); map.Add("ellipsis", new PropertyValue(ellipsis)); } return map; } set { SetValue(PlaceholderProperty, value); NotifyPropertyChanged(); } } /// /// The Ellipsis property.
/// Enable or disable the ellipsis.
///
[EditorBrowsable(EditorBrowsableState.Never)] public bool Ellipsis { get { return (bool)GetValue(EllipsisProperty); } set { SetValue(EllipsisProperty, value); NotifyPropertyChanged(); } } /// /// The ellipsis position of the text. /// The ellipsis position type when the text size over the layout size.
/// The ellipsis position: End, Start or Middle.
///
[EditorBrowsable(EditorBrowsableState.Never)] public EllipsisPosition EllipsisPosition { get { return (EllipsisPosition)GetValue(EllipsisPositionProperty); } set { SetValue(EllipsisPositionProperty, value); NotifyPropertyChanged(); } } /// /// The LineWrapMode property.
/// The line wrap mode when the text lines over the layout width.
///
/// 4 public LineWrapMode LineWrapMode { get { return (LineWrapMode)GetValue(LineWrapModeProperty); } set { SetValue(LineWrapModeProperty, value); NotifyPropertyChanged(); } } /// /// Enables Text selection using Shift key. /// /// 5 /// This will be released at Tizen.NET API Level 5, so currently this would be used as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public bool EnableShiftSelection { get { return (bool)GetValue(EnableShiftSelectionProperty); } set { SetValue(EnableShiftSelectionProperty, value); NotifyPropertyChanged(); } } /// /// The text alignment to match the direction of the system language. /// /// 6 public bool MatchSystemLanguageDirection { get { return (bool)GetValue(MatchSystemLanguageDirectionProperty); } set { SetValue(MatchSystemLanguageDirectionProperty, value); NotifyPropertyChanged(); } } /// /// The MaxLength property. /// /// This will be public opened in tizen_6.5 after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public int MaxLength { get { return (int)GetValue(MaxLengthProperty); } set { SetValue(MaxLengthProperty, value); NotifyPropertyChanged(); } } /// Only used by the IL of xaml, will never changed to not hidden. [EditorBrowsable(EditorBrowsableState.Never)] public override bool IsCreateByXaml { get { return base.IsCreateByXaml; } set { base.IsCreateByXaml = value; if (value == true) { this.TextChanged += (obj, e) => { this.Text = e.TextEditor.Text; }; } } } /// /// The FontSizeScale property.
/// The default value is 1.0.
/// If FontSizeScale.UseSystemSetting, will use the SystemSettings.FontSize internally.
///
/// 9 public float FontSizeScale { get { return fontSizeScale; } set { float newFontSizeScale; if (fontSizeScale == value) return; fontSizeScale = value; if (fontSizeScale == Tizen.NUI.FontSizeScale.UseSystemSetting) { SystemSettingsFontSize systemSettingsFontSize; try { systemSettingsFontSize = SystemSettings.FontSize; } catch (Exception e) { Console.WriteLine("{0} Exception caught.", e); systemSettingsFontSize = SystemSettingsFontSize.Normal; } newFontSizeScale = TextUtils.GetFontSizeScale(systemSettingsFontSize); addFontSizeChangedCallback(); } else { newFontSizeScale = fontSizeScale; removeFontSizeChangedCallback(); } SetValue(FontSizeScaleProperty, newFontSizeScale); NotifyPropertyChanged(); } } /// /// The InputMethodSettings property. /// /// /// is a class encapsulating the input method map. Please use the class for this property. /// /// /// The following example demonstrates how to set the InputMethodSettings property. /// /// InputMethod method = new InputMethod(); /// method.PanelLayout = InputMethod.PanelLayoutType.Normal; /// method.ActionButton = InputMethod.ActionButtonTitleType.Default; /// method.AutoCapital = InputMethod.AutoCapitalType.Word; /// method.Variation = 1; /// textEditor.InputMethodSettings = method.OutputMap; /// /// [EditorBrowsable(EditorBrowsableState.Never)] public PropertyMap InputMethodSettings { get { return (PropertyMap)GetValue(InputMethodSettingsProperty); } set { SetValue(InputMethodSettingsProperty, value); NotifyPropertyChanged(); } } /// /// Scroll the text control by specific amount.. /// /// The amount (in pixels) of scrolling in horizontal & vertical directions. [EditorBrowsable(EditorBrowsableState.Never)] public void ScrollBy(Vector2 scroll) { Interop.TextEditor.ScrollBy(SwigCPtr, Vector2.getCPtr(scroll)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Get the InputMethodContext instance. /// /// The InputMethodContext instance. /// 5 public InputMethodContext GetInputMethodContext() { if (inputMethodContext == null) { /*Avoid raising InputMethodContext reference count.*/ inputMethodContext = new InputMethodContext(Interop.TextEditor.GetInputMethodContext(SwigCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } return inputMethodContext; } /// /// Select the whole text. /// [EditorBrowsable(EditorBrowsableState.Never)] public void SelectWholeText() { Interop.TextEditor.SelectWholeText(SwigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Select text from start to end index. /// /// The start index for selection. /// The end index for selection. [EditorBrowsable(EditorBrowsableState.Never)] public void SelectText(uint start, uint end) { Interop.TextEditor.SelectText(SwigCPtr, start, end); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Clear selection of the text. /// [EditorBrowsable(EditorBrowsableState.Never)] public void SelectNone() { _ = Interop.TextEditor.SelectNone(SwigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Enable grab handle property. /// [EditorBrowsable(EditorBrowsableState.Never)] public bool EnableGrabHandle { get { return (bool)GetValue(EnableGrabHandleProperty); } set { SetValue(EnableGrabHandleProperty, value); NotifyPropertyChanged(); } } /// /// Enable grab handle popup property. /// [EditorBrowsable(EditorBrowsableState.Never)] public bool EnableGrabHandlePopup { get { return (bool)GetValue(EnableGrabHandlePopupProperty); } set { SetValue(EnableGrabHandlePopupProperty, value); NotifyPropertyChanged(); } } /// /// Minimum line size to be used. /// [EditorBrowsable(EditorBrowsableState.Never)] public float MinLineSize { get { return (float)GetValue(MinLineSizeProperty); } set { SetValue(MinLineSizeProperty, value); NotifyPropertyChanged(); } } internal static global::System.Runtime.InteropServices.HandleRef getCPtr(TextEditor obj) { return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.SwigCPtr; } internal SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextEditor_Dali__Toolkit__TextEditor__InputStyle__MaskF_t InputStyleChangedSignal() { SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextEditor_Dali__Toolkit__TextEditor__InputStyle__MaskF_t ret = new SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextEditor_Dali__Toolkit__TextEditor__InputStyle__MaskF_t(Interop.TextEditor.InputStyleChangedSignal(SwigCPtr)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Dispose. /// /// 3 protected override void Dispose(DisposeTypes type) { if (disposed) { return; } if (systemlangTextFlag) { SystemSettings.LocaleLanguageChanged -= SystemSettings_LocaleLanguageChanged; } removeFontSizeChangedCallback(); //Release your own unmanaged resources here. //You should not access any managed member here except static instance. //because the execution order of Finalizes is non-deterministic. if (this.HasBody()) { if (textEditorTextChangedCallbackDelegate != null) { TextChangedSignal().Disconnect(textEditorTextChangedCallbackDelegate); } if (textEditorMaxLengthReachedCallbackDelegate != null) { this.MaxLengthReachedSignal().Disconnect(textEditorMaxLengthReachedCallbackDelegate); } } base.Dispose(type); } /// This will not be public opened. [EditorBrowsable(EditorBrowsableState.Never)] protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr) { // In order to speed up IME hide, temporarily add GetInputMethodContext()?.DestroyContext(); Interop.TextEditor.DeleteTextEditor(swigCPtr); } private string SetTranslatable(string textEditorSid) { string translatableText = null; translatableText = NUIApplication.MultilingualResourceManager?.GetString(textEditorSid, new CultureInfo(SystemSettings.LocaleLanguage.Replace("_", "-"))); if (translatableText != null) { if (systemlangTextFlag == false) { SystemSettings.LocaleLanguageChanged += SystemSettings_LocaleLanguageChanged; systemlangTextFlag = true; } return translatableText; } else { translatableText = ""; return translatableText; } } private void SystemSettings_LocaleLanguageChanged(object sender, LocaleLanguageChangedEventArgs e) { if (textEditorTextSid != null) { Text = NUIApplication.MultilingualResourceManager?.GetString(textEditorTextSid, new CultureInfo(e.Value.Replace("_", "-"))); } if (textEditorPlaceHolderTextSid != null) { PlaceholderText = NUIApplication.MultilingualResourceManager?.GetString(textEditorPlaceHolderTextSid, new CultureInfo(e.Value.Replace("_", "-"))); } } private void SystemSettingsFontSizeChanged(object sender, FontSizeChangedEventArgs e) { float newFontSizeScale = TextUtils.GetFontSizeScale(e.Value); SetValue(FontSizeScaleProperty, newFontSizeScale); NotifyPropertyChanged(); } private void addFontSizeChangedCallback() { if (hasFontSizeChangedCallback != true) { try { SystemSettings.FontSizeChanged += SystemSettingsFontSizeChanged; hasFontSizeChangedCallback = true; } catch (Exception e) { Console.WriteLine("{0} Exception caught.", e); hasFontSizeChangedCallback = false; } } } private void removeFontSizeChangedCallback() { if (hasFontSizeChangedCallback == true) { try { SystemSettings.FontSizeChanged -= SystemSettingsFontSizeChanged; hasFontSizeChangedCallback = false; } catch (Exception e) { Console.WriteLine("{0} Exception caught.", e); hasFontSizeChangedCallback = true; } } } internal new class Property { internal static readonly int TEXT = Interop.TextEditor.TextGet(); internal static readonly int TextColor = Interop.TextEditor.TextColorGet(); internal static readonly int FontFamily = Interop.TextEditor.FontFamilyGet(); internal static readonly int FontStyle = Interop.TextEditor.FontStyleGet(); internal static readonly int PointSize = Interop.TextEditor.PointSizeGet(); internal static readonly int HorizontalAlignment = Interop.TextEditor.HorizontalAlignmentGet(); internal static readonly int ScrollThreshold = Interop.TextEditor.ScrollThresholdGet(); internal static readonly int ScrollSpeed = Interop.TextEditor.ScrollSpeedGet(); internal static readonly int PrimaryCursorColor = Interop.TextEditor.PrimaryCursorColorGet(); internal static readonly int SecondaryCursorColor = Interop.TextEditor.SecondaryCursorColorGet(); internal static readonly int EnableCursorBlink = Interop.TextEditor.EnableCursorBlinkGet(); internal static readonly int CursorBlinkInterval = Interop.TextEditor.CursorBlinkIntervalGet(); internal static readonly int CursorBlinkDuration = Interop.TextEditor.CursorBlinkDurationGet(); internal static readonly int CursorWidth = Interop.TextEditor.CursorWidthGet(); internal static readonly int GrabHandleImage = Interop.TextEditor.GrabHandleImageGet(); internal static readonly int GrabHandlePressedImage = Interop.TextEditor.GrabHandlePressedImageGet(); internal static readonly int SelectionHandleImageLeft = Interop.TextEditor.SelectionHandleImageLeftGet(); internal static readonly int SelectionHandleImageRight = Interop.TextEditor.SelectionHandleImageRightGet(); internal static readonly int SelectionHandlePressedImageLeft = Interop.TextEditor.SelectionHandlePressedImageLeftGet(); internal static readonly int SelectionHandlePressedImageRight = Interop.TextEditor.SelectionHandlePressedImageRightGet(); internal static readonly int SelectionHandleMarkerImageLeft = Interop.TextEditor.SelectionHandleMarkerImageLeftGet(); internal static readonly int SelectionHandleMarkerImageRight = Interop.TextEditor.SelectionHandleMarkerImageRightGet(); internal static readonly int SelectionHighlightColor = Interop.TextEditor.SelectionHighlightColorGet(); internal static readonly int DecorationBoundingBox = Interop.TextEditor.DecorationBoundingBoxGet(); internal static readonly int EnableMarkup = Interop.TextEditor.EnableMarkupGet(); internal static readonly int InputColor = Interop.TextEditor.InputColorGet(); internal static readonly int InputFontFamily = Interop.TextEditor.InputFontFamilyGet(); internal static readonly int InputFontStyle = Interop.TextEditor.InputFontStyleGet(); internal static readonly int InputPointSize = Interop.TextEditor.InputPointSizeGet(); internal static readonly int LineSpacing = Interop.TextEditor.LineSpacingGet(); internal static readonly int InputLineSpacing = Interop.TextEditor.InputLineSpacingGet(); internal static readonly int UNDERLINE = Interop.TextEditor.UnderlineGet(); internal static readonly int InputUnderline = Interop.TextEditor.InputUnderlineGet(); internal static readonly int SHADOW = Interop.TextEditor.ShadowGet(); internal static readonly int InputShadow = Interop.TextEditor.InputShadowGet(); internal static readonly int EMBOSS = Interop.TextEditor.EmbossGet(); internal static readonly int InputEmboss = Interop.TextEditor.InputEmbossGet(); internal static readonly int OUTLINE = Interop.TextEditor.OutlineGet(); internal static readonly int InputOutline = Interop.TextEditor.InputOutlineGet(); internal static readonly int SmoothScroll = Interop.TextEditor.SmoothScrollGet(); internal static readonly int SmoothScrollDuration = Interop.TextEditor.SmoothScrollDurationGet(); internal static readonly int EnableScrollBar = Interop.TextEditor.EnableScrollBarGet(); internal static readonly int ScrollBarShowDuration = Interop.TextEditor.ScrollBarShowDurationGet(); internal static readonly int ScrollBarFadeDuration = Interop.TextEditor.ScrollBarFadeDurationGet(); internal static readonly int PixelSize = Interop.TextEditor.PixelSizeGet(); internal static readonly int LineCount = Interop.TextEditor.LineCountGet(); internal static readonly int EnableSelection = Interop.TextEditor.EnableSelectionGet(); internal static readonly int PLACEHOLDER = Interop.TextEditor.PlaceholderGet(); internal static readonly int LineWrapMode = Interop.TextEditor.LineWrapModeGet(); internal static readonly int PlaceholderText = Interop.TextEditor.PlaceholderTextGet(); internal static readonly int PlaceholderTextColor = Interop.TextEditor.PlaceholderTextColorGet(); internal static readonly int EnableShiftSelection = Interop.TextEditor.EnableShiftSelectionGet(); internal static readonly int MatchSystemLanguageDirection = Interop.TextEditor.MatchSystemLanguageDirectionGet(); internal static readonly int MaxLength = Interop.TextEditor.MaxLengthGet(); internal static readonly int SelectedTextStart = Interop.TextEditor.SelectedTextStartGet(); internal static readonly int SelectedTextEnd = Interop.TextEditor.SelectedTextEndGet(); internal static readonly int EnableEditing = Interop.TextEditor.EnableEditingGet(); internal static readonly int SelectedText = Interop.TextEditor.SelectedTextGet(); internal static readonly int HorizontalScrollPosition = Interop.TextEditor.HorizontalScrollPositionGet(); internal static readonly int VerticalScrollPosition = Interop.TextEditor.VerticalScrollPositionGet(); internal static readonly int PrimaryCursorPosition = Interop.TextEditor.PrimaryCursorPositionGet(); internal static readonly int FontSizeScale = Interop.TextEditor.FontSizeScaleGet(); internal static readonly int GrabHandleColor = Interop.TextEditor.GrabHandleColorGet(); internal static readonly int EnableGrabHandle = Interop.TextEditor.EnableGrabHandleGet(); internal static readonly int EnableGrabHandlePopup = Interop.TextEditor.EnableGrabHandlePopupGet(); internal static readonly int InputMethodSettings = Interop.TextEditor.InputMethodSettingsGet(); internal static readonly int ELLIPSIS = Interop.TextEditor.EllipsisGet(); internal static readonly int EllipsisPosition = Interop.TextEditor.EllipsisPositionGet(); internal static readonly int MinLineSize = Interop.TextEditor.MinLineSizeGet(); internal static readonly int InputFilter = Interop.TextEditor.InputFilterGet(); } internal class InputStyle { internal enum Mask { None = 0x0000, Color = 0x0001, FontFamily = 0x0002, PointSize = 0x0004, FontStyle = 0x0008, LineSpacing = 0x0010, Underline = 0x0020, Shadow = 0x0040, Emboss = 0x0080, Outline = 0x0100 } } private void OnDecorationBoundingBoxChanged(int x, int y, int width, int height) { DecorationBoundingBox = new Rectangle(x, y, width, height); } private void OnInputColorChanged(float x, float y, float z, float w) { InputColor = new Vector4(x, y, z, w); } private void OnPlaceholderTextColorChanged(float r, float g, float b, float a) { PlaceholderTextColor = new Color(r, g, b, a); } private void OnPrimaryCursorColorChanged(float x, float y, float z, float w) { PrimaryCursorColor = new Vector4(x, y, z, w); } private void OnSecondaryCursorColorChanged(float x, float y, float z, float w) { SecondaryCursorColor = new Vector4(x, y, z, w); } private void OnSelectionHighlightColorChanged(float x, float y, float z, float w) { SelectionHighlightColor = new Vector4(x, y, z, w); } private void OnTextColorChanged(float x, float y, float z, float w) { TextColor = new Vector4(x, y, z, w); } private void OnGrabHandleColorChanged(float r, float g, float b, float a) { GrabHandleColor = new Color(r, g, b, a); } } }