2 * Copyright(c) 2018 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 extern alias TizenSystemSettings;
19 using TizenSystemSettings.Tizen.System;
22 using System.Globalization;
23 using System.ComponentModel;
25 namespace Tizen.NUI.BaseComponents
28 /// A control which provides a multi-line editable text editor.
30 /// <since_tizen> 3 </since_tizen>
31 public partial class TextEditor : View
33 private string textEditorTextSid = null;
34 private string textEditorPlaceHolderTextSid = null;
35 private bool systemlangTextFlag = false;
36 private InputMethodContext inputMethodContext = null;
39 /// Creates the TextEditor control.
41 /// <since_tizen> 3 </since_tizen>
42 public TextEditor() : this(Interop.TextEditor.TextEditor_New(), true)
44 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
48 /// Creates the TextEditor with setting the status of shown or hidden.
50 /// <param name="shown">false : Not displayed (hidden), true : displayed (shown)</param>
51 /// This will be public opened in next release of tizen after ACR done. Before ACR, it is used as HiddenAPI (InhouseAPI).
52 [EditorBrowsable(EditorBrowsableState.Never)]
53 public TextEditor(bool shown) : this(Interop.TextEditor.TextEditor_New(), true)
55 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
59 internal TextEditor(TextEditor handle, bool shown = true) : this(Interop.TextEditor.new_TextEditor__SWIG_1(TextEditor.getCPtr(handle)), true)
61 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
69 internal TextEditor(global::System.IntPtr cPtr, bool cMemoryOwn, bool shown = true) : base(Interop.TextEditor.TextEditor_SWIGUpcast(cPtr), cMemoryOwn)
78 /// The TranslatableText property.<br />
79 /// The text can set the SID value.<br />
81 /// <exception cref='ArgumentNullException'>
82 /// ResourceManager about multilingual is null.
84 /// <since_tizen> 4 </since_tizen>
85 public string TranslatableText
89 return textEditorTextSid;
93 if (NUIApplication.MultilingualResourceManager == null)
95 throw new ArgumentNullException("ResourceManager about multilingual is null");
97 textEditorTextSid = value;
98 Text = SetTranslatable(textEditorTextSid);
99 NotifyPropertyChanged();
103 /// The TranslatablePlaceholderText property.<br />
104 /// The text can set the SID value.<br />
106 /// <exception cref='ArgumentNullException'>
107 /// ResourceManager about multilingual is null.
109 /// <since_tizen> 4 </since_tizen>
110 public string TranslatablePlaceholderText
114 return textEditorPlaceHolderTextSid;
118 if (NUIApplication.MultilingualResourceManager == null)
120 throw new ArgumentNullException("ResourceManager about multilingual is null");
122 textEditorPlaceHolderTextSid = value;
123 PlaceholderText = SetTranslatable(textEditorPlaceHolderTextSid);
124 NotifyPropertyChanged();
129 /// The Text property.
131 /// <since_tizen> 3 </since_tizen>
136 return (string)GetValue(TextProperty);
140 SetValueAndForceSendChangeSignal(TextProperty, value);
141 NotifyPropertyChanged();
146 /// The TextColor property.
149 /// The property cascade chaining set is possible. For example, this (textEditor.TextColor.X = 0.1f;) is possible.
151 /// <since_tizen> 3 </since_tizen>
152 public Vector4 TextColor
156 Vector4 temp = (Vector4)GetValue(TextColorProperty);
157 return new Vector4(OnTextColorChanged, temp.X, temp.Y, temp.Z, temp.W);
161 SetValue(TextColorProperty, value);
162 NotifyPropertyChanged();
167 /// The FontFamily property.
169 /// <since_tizen> 3 </since_tizen>
170 public string FontFamily
174 return (string)GetValue(FontFamilyProperty);
178 SetValue(FontFamilyProperty, value);
179 NotifyPropertyChanged();
184 /// The FontStyle property.
186 /// <since_tizen> 3 </since_tizen>
187 public PropertyMap FontStyle
191 return (PropertyMap)GetValue(FontStyleProperty);
195 SetValue(FontStyleProperty, value);
196 NotifyPropertyChanged();
201 /// The PointSize property.
203 /// <since_tizen> 3 </since_tizen>
204 public float PointSize
208 return (float)GetValue(PointSizeProperty);
212 SetValue(PointSizeProperty, value);
213 NotifyPropertyChanged();
218 /// The HorizontalAlignment property.
220 /// <since_tizen> 3 </since_tizen>
221 public HorizontalAlignment HorizontalAlignment
225 return (HorizontalAlignment)GetValue(HorizontalAlignmentProperty);
229 SetValue(HorizontalAlignmentProperty, value);
230 NotifyPropertyChanged();
235 /// The ScrollThreshold property.
237 /// <since_tizen> 3 </since_tizen>
238 public float ScrollThreshold
242 return (float)GetValue(ScrollThresholdProperty);
246 SetValue(ScrollThresholdProperty, value);
247 NotifyPropertyChanged();
252 /// The ScrollSpeed property.
254 /// <since_tizen> 3 </since_tizen>
255 public float ScrollSpeed
259 return (float)GetValue(ScrollSpeedProperty);
263 SetValue(ScrollSpeedProperty, value);
264 NotifyPropertyChanged();
269 /// The PrimaryCursorColor property.
272 /// The property cascade chaining set is possible. For example, this (textEditor.PrimaryCursorColor.X = 0.1f;) is possible.
274 /// <since_tizen> 3 </since_tizen>
275 public Vector4 PrimaryCursorColor
279 Vector4 temp = (Vector4)GetValue(PrimaryCursorColorProperty);
280 return new Vector4(OnPrimaryCursorColorChanged, temp.X, temp.Y, temp.Z, temp.W);
284 SetValue(PrimaryCursorColorProperty, value);
285 NotifyPropertyChanged();
290 /// The SecondaryCursorColor property.
293 /// The property cascade chaining set is possible. For example, this (textEditor.SecondaryCursorColor.X = 0.1f;) is possible.
295 /// <since_tizen> 3 </since_tizen>
296 public Vector4 SecondaryCursorColor
300 Vector4 temp = (Vector4)GetValue(SecondaryCursorColorProperty);
301 return new Vector4(OnSecondaryCursorColorChanged, temp.X, temp.Y, temp.Z, temp.W);
305 SetValue(SecondaryCursorColorProperty, value);
306 NotifyPropertyChanged();
311 /// The EnableCursorBlink property.
313 /// <since_tizen> 3 </since_tizen>
314 public bool EnableCursorBlink
318 return (bool)GetValue(EnableCursorBlinkProperty);
322 SetValue(EnableCursorBlinkProperty, value);
323 NotifyPropertyChanged();
328 /// The CursorBlinkInterval property.
330 /// <since_tizen> 3 </since_tizen>
331 public float CursorBlinkInterval
335 return (float)GetValue(CursorBlinkIntervalProperty);
339 SetValue(CursorBlinkIntervalProperty, value);
340 NotifyPropertyChanged();
345 /// The CursorBlinkDuration property.
347 /// <since_tizen> 3 </since_tizen>
348 public float CursorBlinkDuration
352 return (float)GetValue(CursorBlinkDurationProperty);
356 SetValue(CursorBlinkDurationProperty, value);
357 NotifyPropertyChanged();
362 /// The CursorWidth property.
364 /// <since_tizen> 3 </since_tizen>
365 public int CursorWidth
369 return (int)GetValue(CursorWidthProperty);
373 SetValue(CursorWidthProperty, value);
374 NotifyPropertyChanged();
379 /// The GrabHandleImage property.
381 /// <since_tizen> 3 </since_tizen>
382 public string GrabHandleImage
386 return (string)GetValue(GrabHandleImageProperty);
390 SetValue(GrabHandleImageProperty, value);
391 NotifyPropertyChanged();
396 /// The GrabHandlePressedImage property.
398 /// <since_tizen> 3 </since_tizen>
399 public string GrabHandlePressedImage
403 return (string)GetValue(GrabHandlePressedImageProperty);
407 SetValue(GrabHandlePressedImageProperty, value);
408 NotifyPropertyChanged();
413 /// The SelectionHandleImageLeft property.
415 /// <since_tizen> 3 </since_tizen>
416 public PropertyMap SelectionHandleImageLeft
420 return (PropertyMap)GetValue(SelectionHandleImageLeftProperty);
424 SetValue(SelectionHandleImageLeftProperty, value);
425 NotifyPropertyChanged();
430 /// The SelectionHandleImageRight property.
432 /// <since_tizen> 3 </since_tizen>
433 public PropertyMap SelectionHandleImageRight
437 return (PropertyMap)GetValue(SelectionHandleImageRightProperty);
441 SetValue(SelectionHandleImageRightProperty, value);
442 NotifyPropertyChanged();
447 /// The SelectionHandlePressedImageLeft property.
449 /// <since_tizen> 3 </since_tizen>
450 public PropertyMap SelectionHandlePressedImageLeft
454 return (PropertyMap)GetValue(SelectionHandlePressedImageLeftProperty);
458 SetValue(SelectionHandlePressedImageLeftProperty, value);
459 NotifyPropertyChanged();
464 /// The SelectionHandlePressedImageRight property.
466 /// <since_tizen> 3 </since_tizen>
467 public PropertyMap SelectionHandlePressedImageRight
471 return (PropertyMap)GetValue(SelectionHandlePressedImageRightProperty);
475 SetValue(SelectionHandlePressedImageRightProperty, value);
476 NotifyPropertyChanged();
481 /// The SelectionHandleMarkerImageLeft property.
483 /// <since_tizen> 3 </since_tizen>
484 public PropertyMap SelectionHandleMarkerImageLeft
488 return (PropertyMap)GetValue(SelectionHandleMarkerImageLeftProperty);
492 SetValue(SelectionHandleMarkerImageLeftProperty, value);
493 NotifyPropertyChanged();
498 /// The SelectionHandleMarkerImageRight property.
500 /// <since_tizen> 3 </since_tizen>
501 public PropertyMap SelectionHandleMarkerImageRight
505 return (PropertyMap)GetValue(SelectionHandleMarkerImageRightProperty);
509 SetValue(SelectionHandleMarkerImageRightProperty, value);
510 NotifyPropertyChanged();
515 /// The SelectionHighlightColor property.
518 /// The property cascade chaining set is possible. For example, this (textEditor.SelectionHighlightColor.X = 0.1f;) is possible.
520 /// <since_tizen> 3 </since_tizen>
521 public Vector4 SelectionHighlightColor
525 Vector4 temp = (Vector4)GetValue(SelectionHighlightColorProperty);
526 return new Vector4(OnSelectionHighlightColorChanged, temp.X, temp.Y, temp.Z, temp.W);
530 SetValue(SelectionHighlightColorProperty, value);
531 NotifyPropertyChanged();
536 /// The DecorationBoundingBox property.
539 /// The property cascade chaining set is possible. For example, this (textEditor.DecorationBoundingBox.X = 1;) is possible.
541 /// <since_tizen> 3 </since_tizen>
542 public Rectangle DecorationBoundingBox
546 Rectangle temp = (Rectangle)GetValue(DecorationBoundingBoxProperty);
547 return new Rectangle(OnDecorationBoundingBoxChanged, temp.X, temp.Y, temp.Width, temp.Height);
551 SetValue(DecorationBoundingBoxProperty, value);
552 NotifyPropertyChanged();
557 /// The EnableMarkup property.
559 /// <since_tizen> 3 </since_tizen>
560 public bool EnableMarkup
564 return (bool)GetValue(EnableMarkupProperty);
568 SetValue(EnableMarkupProperty, value);
569 NotifyPropertyChanged();
574 /// The InputColor property.
577 /// The property cascade chaining set is possible. For example, this (textEditor.InputColor.X = 0.1f;) is possible.
579 /// <since_tizen> 3 </since_tizen>
580 public Vector4 InputColor
584 Vector4 temp = (Vector4)GetValue(InputColorProperty);
585 return new Vector4(OnInputColorChanged, temp.X, temp.Y, temp.Z, temp.W);
589 SetValue(InputColorProperty, value);
590 NotifyPropertyChanged();
595 /// The InputFontFamily property.
597 /// <since_tizen> 3 </since_tizen>
598 public string InputFontFamily
602 return (string)GetValue(InputFontFamilyProperty);
606 SetValue(InputFontFamilyProperty, value);
607 NotifyPropertyChanged();
612 /// The InputFontStyle property.
614 /// <since_tizen> 3 </since_tizen>
615 public PropertyMap InputFontStyle
619 return (PropertyMap)GetValue(InputFontStyleProperty);
623 SetValue(InputFontStyleProperty, value);
624 NotifyPropertyChanged();
629 /// The InputPointSize property.
631 /// <since_tizen> 3 </since_tizen>
632 public float InputPointSize
636 return (float)GetValue(InputPointSizeProperty);
640 SetValue(InputPointSizeProperty, value);
641 NotifyPropertyChanged();
646 /// The LineSpacing property.
648 /// <since_tizen> 3 </since_tizen>
649 public float LineSpacing
653 return (float)GetValue(LineSpacingProperty);
657 SetValue(LineSpacingProperty, value);
658 NotifyPropertyChanged();
663 /// The InputLineSpacing property.
665 /// <since_tizen> 3 </since_tizen>
666 public float InputLineSpacing
670 return (float)GetValue(InputLineSpacingProperty);
674 SetValue(InputLineSpacingProperty, value);
675 NotifyPropertyChanged();
680 /// The Underline property.
682 /// <since_tizen> 3 </since_tizen>
683 public PropertyMap Underline
687 return (PropertyMap)GetValue(UnderlineProperty);
691 SetValue(UnderlineProperty, value);
692 NotifyPropertyChanged();
697 /// The InputUnderline property.
699 /// <since_tizen> 3 </since_tizen>
700 public string InputUnderline
704 return (string)GetValue(InputUnderlineProperty);
708 SetValue(InputUnderlineProperty, value);
709 NotifyPropertyChanged();
714 /// The Shadow property.
716 /// <since_tizen> 3 </since_tizen>
717 public PropertyMap Shadow
721 return (PropertyMap)GetValue(ShadowProperty);
725 SetValue(ShadowProperty, value);
726 NotifyPropertyChanged();
731 /// The InputShadow property.
733 /// <since_tizen> 3 </since_tizen>
734 public string InputShadow
738 return (string)GetValue(InputShadowProperty);
742 SetValue(InputShadowProperty, value);
743 NotifyPropertyChanged();
748 /// The Emboss property.
750 /// <since_tizen> 3 </since_tizen>
755 return (string)GetValue(EmbossProperty);
759 SetValue(EmbossProperty, value);
760 NotifyPropertyChanged();
765 /// The InputEmboss property.
767 /// <since_tizen> 3 </since_tizen>
768 public string InputEmboss
772 return (string)GetValue(InputEmbossProperty);
776 SetValue(InputEmbossProperty, value);
777 NotifyPropertyChanged();
782 /// The Outline property.
784 /// <since_tizen> 3 </since_tizen>
785 public PropertyMap Outline
789 return (PropertyMap)GetValue(OutlineProperty);
793 SetValue(OutlineProperty, value);
794 NotifyPropertyChanged();
799 /// The InputOutline property.
801 /// <since_tizen> 3 </since_tizen>
802 public string InputOutline
806 return (string)GetValue(InputOutlineProperty);
810 SetValue(InputOutlineProperty, value);
811 NotifyPropertyChanged();
816 /// The SmoothScroll property.
818 /// <since_tizen> 3 </since_tizen>
819 public bool SmoothScroll
823 return (bool)GetValue(SmoothScrollProperty);
827 SetValue(SmoothScrollProperty, value);
828 NotifyPropertyChanged();
833 /// The SmoothScrollDuration property.
835 /// <since_tizen> 3 </since_tizen>
836 public float SmoothScrollDuration
840 return (float)GetValue(SmoothScrollDurationProperty);
844 SetValue(SmoothScrollDurationProperty, value);
845 NotifyPropertyChanged();
850 /// The EnableScrollBar property.
852 /// <since_tizen> 3 </since_tizen>
853 public bool EnableScrollBar
857 return (bool)GetValue(EnableScrollBarProperty);
861 SetValue(EnableScrollBarProperty, value);
862 NotifyPropertyChanged();
867 /// The ScrollBarShowDuration property.
869 /// <since_tizen> 3 </since_tizen>
870 public float ScrollBarShowDuration
874 return (float)GetValue(ScrollBarShowDurationProperty);
878 SetValue(ScrollBarShowDurationProperty, value);
879 NotifyPropertyChanged();
884 /// The ScrollBarFadeDuration property.
886 /// <since_tizen> 3 </since_tizen>
887 public float ScrollBarFadeDuration
891 return (float)GetValue(ScrollBarFadeDurationProperty);
895 SetValue(ScrollBarFadeDurationProperty, value);
896 NotifyPropertyChanged();
901 /// The PixelSize property.
903 /// <since_tizen> 3 </since_tizen>
904 public float PixelSize
908 return (float)GetValue(PixelSizeProperty);
912 SetValue(PixelSizeProperty, value);
913 NotifyPropertyChanged();
918 /// The line count of the text.
920 /// <since_tizen> 3 </since_tizen>
926 GetProperty(TextEditor.Property.LINE_COUNT).Get(out temp);
932 /// The text to display when the TextEditor is empty and inactive.
934 /// <since_tizen> 3 </since_tizen>
935 public string PlaceholderText
939 return (string)GetValue(PlaceholderTextProperty);
943 SetValue(PlaceholderTextProperty, value);
944 NotifyPropertyChanged();
949 /// The Placeholder text color.
952 /// The property cascade chaining set is possible. For example, this (textEditor.PlaceholderTextColor.X = 0.1f;) is possible.
954 /// <since_tizen> 3 </since_tizen>
955 public Color PlaceholderTextColor
959 Color temp = (Color)GetValue(PlaceholderTextColorProperty);
960 return new Color(OnPlaceholderTextColorChanged, temp.R, temp.G, temp.B, temp.A);
964 SetValue(PlaceholderTextColorProperty, value);
965 NotifyPropertyChanged();
970 /// The EnableSelection property.
972 /// <since_tizen> 3 </since_tizen>
973 public bool EnableSelection
977 return (bool)GetValue(EnableSelectionProperty);
981 SetValue(EnableSelectionProperty, value);
982 NotifyPropertyChanged();
987 /// The Placeholder property.
988 /// Gets or sets the placeholder: text, color, font family, font style, point size, and pixel size.
991 /// The following example demonstrates how to set the placeholder property.
993 /// PropertyMap propertyMap = new PropertyMap();
994 /// propertyMap.Add("text", new PropertyValue("Setting Placeholder Text"));
995 /// propertyMap.Add("textFocused", new PropertyValue("Setting Placeholder Text Focused"));
996 /// propertyMap.Add("color", new PropertyValue(Color.Red));
997 /// propertyMap.Add("fontFamily", new PropertyValue("Arial"));
998 /// propertyMap.Add("pointSize", new PropertyValue(12.0f));
1000 /// PropertyMap fontStyleMap = new PropertyMap();
1001 /// fontStyleMap.Add("weight", new PropertyValue("bold"));
1002 /// fontStyleMap.Add("width", new PropertyValue("condensed"));
1003 /// fontStyleMap.Add("slant", new PropertyValue("italic"));
1004 /// propertyMap.Add("fontStyle", new PropertyValue(fontStyleMap));
1006 /// TextEditor editor = new TextEditor();
1007 /// editor.Placeholder = propertyMap;
1010 /// <since_tizen> 3 </since_tizen>
1011 public Tizen.NUI.PropertyMap Placeholder
1015 return (PropertyMap)GetValue(PlaceholderProperty);
1019 SetValue(PlaceholderProperty, value);
1020 NotifyPropertyChanged();
1025 /// The LineWrapMode property.<br />
1026 /// The line wrap mode when the text lines over the layout width.<br />
1028 /// <since_tizen> 4 </since_tizen>
1029 public LineWrapMode LineWrapMode
1033 return (LineWrapMode)GetValue(LineWrapModeProperty);
1037 SetValue(LineWrapModeProperty, value);
1038 NotifyPropertyChanged();
1043 /// Enables Text selection using Shift key.
1045 /// <since_tizen> 5 </since_tizen>
1046 /// This will be released at Tizen.NET API Level 5, so currently this would be used as inhouse API.
1047 [EditorBrowsable(EditorBrowsableState.Never)]
1048 public bool EnableShiftSelection
1052 return (bool)GetValue(EnableShiftSelectionProperty);
1056 SetValue(EnableShiftSelectionProperty, value);
1057 NotifyPropertyChanged();
1062 /// The text alignment to match the direction of the system language.
1064 /// <since_tizen> 6 </since_tizen>
1065 public bool MatchSystemLanguageDirection
1069 return (bool)GetValue(MatchSystemLanguageDirectionProperty);
1073 SetValue(MatchSystemLanguageDirectionProperty, value);
1074 NotifyPropertyChanged();
1079 /// The MaxLength property.
1081 /// This will be public opened in tizen_6.5 after ACR done. Before ACR, need to be hidden as inhouse API.
1082 [EditorBrowsable(EditorBrowsableState.Never)]
1083 public int MaxLength
1087 return (int)GetValue(MaxLengthProperty);
1091 SetValue(MaxLengthProperty, value);
1092 NotifyPropertyChanged();
1096 /// Only used by the IL of xaml, will never changed to not hidden.
1097 [EditorBrowsable(EditorBrowsableState.Never)]
1098 public override bool IsCreateByXaml
1102 return base.IsCreateByXaml;
1106 base.IsCreateByXaml = value;
1110 this.TextChanged += (obj, e) =>
1112 this.Text = this.Text;
1119 /// Get the InputMethodContext instance.
1121 /// <returns>The InputMethodContext instance.</returns>
1122 /// <since_tizen> 5 </since_tizen>
1123 public InputMethodContext GetInputMethodContext()
1125 if (inputMethodContext == null)
1127 /*Avoid raising InputMethodContext reference count.*/
1128 inputMethodContext = new InputMethodContext(Interop.TextEditor.TextEditor_GetInputMethodContext(swigCPtr), true);
1129 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
1131 return inputMethodContext;
1134 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(TextEditor obj)
1136 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
1139 internal SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextEditor_Dali__Toolkit__TextEditor__InputStyle__MaskF_t InputStyleChangedSignal()
1141 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.TextEditor_InputStyleChangedSignal(swigCPtr), false);
1142 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
1149 /// <since_tizen> 3 </since_tizen>
1150 protected override void Dispose(DisposeTypes type)
1157 //Release your own unmanaged resources here.
1158 //You should not access any managed member here except static instance.
1159 //because the execution order of Finalizes is non-deterministic.
1163 if(_textEditorTextChangedCallbackDelegate != null)
1165 TextChangedSignal().Disconnect(_textEditorTextChangedCallbackDelegate);
1168 if(_textEditorMaxLengthReachedCallbackDelegate != null)
1170 this.MaxLengthReachedSignal().Disconnect(_textEditorMaxLengthReachedCallbackDelegate);
1177 /// This will not be public opened.
1178 [EditorBrowsable(EditorBrowsableState.Never)]
1179 protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
1181 // In order to speed up IME hide, temporarily add
1182 GetInputMethodContext()?.DestroyContext();
1183 Interop.TextEditor.delete_TextEditor(swigCPtr);
1186 private string SetTranslatable(string textEditorSid)
1188 string translatableText = null;
1189 translatableText = NUIApplication.MultilingualResourceManager?.GetString(textEditorSid, new CultureInfo(SystemSettings.LocaleLanguage.Replace("_", "-")));
1190 if (translatableText != null)
1192 if (systemlangTextFlag == false)
1194 SystemSettings.LocaleLanguageChanged += new WeakEventHandler<LocaleLanguageChangedEventArgs>(SystemSettings_LocaleLanguageChanged).Handler;
1195 systemlangTextFlag = true;
1197 return translatableText;
1201 translatableText = "";
1202 return translatableText;
1206 private void SystemSettings_LocaleLanguageChanged(object sender, LocaleLanguageChangedEventArgs e)
1208 if (textEditorTextSid != null)
1210 Text = NUIApplication.MultilingualResourceManager?.GetString(textEditorTextSid, new CultureInfo(e.Value.Replace("_", "-")));
1212 if (textEditorPlaceHolderTextSid != null)
1214 PlaceholderText = NUIApplication.MultilingualResourceManager?.GetString(textEditorPlaceHolderTextSid, new CultureInfo(e.Value.Replace("_", "-")));
1218 internal new class Property
1220 internal static readonly int TEXT = Interop.TextEditor.TextEditor_Property_TEXT_get();
1221 internal static readonly int TEXT_COLOR = Interop.TextEditor.TextEditor_Property_TEXT_COLOR_get();
1222 internal static readonly int FONT_FAMILY = Interop.TextEditor.TextEditor_Property_FONT_FAMILY_get();
1223 internal static readonly int FONT_STYLE = Interop.TextEditor.TextEditor_Property_FONT_STYLE_get();
1224 internal static readonly int POINT_SIZE = Interop.TextEditor.TextEditor_Property_POINT_SIZE_get();
1225 internal static readonly int HORIZONTAL_ALIGNMENT = Interop.TextEditor.TextEditor_Property_HORIZONTAL_ALIGNMENT_get();
1226 internal static readonly int SCROLL_THRESHOLD = Interop.TextEditor.TextEditor_Property_SCROLL_THRESHOLD_get();
1227 internal static readonly int SCROLL_SPEED = Interop.TextEditor.TextEditor_Property_SCROLL_SPEED_get();
1228 internal static readonly int PRIMARY_CURSOR_COLOR = Interop.TextEditor.TextEditor_Property_PRIMARY_CURSOR_COLOR_get();
1229 internal static readonly int SECONDARY_CURSOR_COLOR = Interop.TextEditor.TextEditor_Property_SECONDARY_CURSOR_COLOR_get();
1230 internal static readonly int ENABLE_CURSOR_BLINK = Interop.TextEditor.TextEditor_Property_ENABLE_CURSOR_BLINK_get();
1231 internal static readonly int CURSOR_BLINK_INTERVAL = Interop.TextEditor.TextEditor_Property_CURSOR_BLINK_INTERVAL_get();
1232 internal static readonly int CURSOR_BLINK_DURATION = Interop.TextEditor.TextEditor_Property_CURSOR_BLINK_DURATION_get();
1233 internal static readonly int CURSOR_WIDTH = Interop.TextEditor.TextEditor_Property_CURSOR_WIDTH_get();
1234 internal static readonly int GRAB_HANDLE_IMAGE = Interop.TextEditor.TextEditor_Property_GRAB_HANDLE_IMAGE_get();
1235 internal static readonly int GRAB_HANDLE_PRESSED_IMAGE = Interop.TextEditor.TextEditor_Property_GRAB_HANDLE_PRESSED_IMAGE_get();
1236 internal static readonly int SELECTION_HANDLE_IMAGE_LEFT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_IMAGE_LEFT_get();
1237 internal static readonly int SELECTION_HANDLE_IMAGE_RIGHT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_IMAGE_RIGHT_get();
1238 internal static readonly int SELECTION_HANDLE_PRESSED_IMAGE_LEFT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_PRESSED_IMAGE_LEFT_get();
1239 internal static readonly int SELECTION_HANDLE_PRESSED_IMAGE_RIGHT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_PRESSED_IMAGE_RIGHT_get();
1240 internal static readonly int SELECTION_HANDLE_MARKER_IMAGE_LEFT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_MARKER_IMAGE_LEFT_get();
1241 internal static readonly int SELECTION_HANDLE_MARKER_IMAGE_RIGHT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_MARKER_IMAGE_RIGHT_get();
1242 internal static readonly int SELECTION_HIGHLIGHT_COLOR = Interop.TextEditor.TextEditor_Property_SELECTION_HIGHLIGHT_COLOR_get();
1243 internal static readonly int DECORATION_BOUNDING_BOX = Interop.TextEditor.TextEditor_Property_DECORATION_BOUNDING_BOX_get();
1244 internal static readonly int ENABLE_MARKUP = Interop.TextEditor.TextEditor_Property_ENABLE_MARKUP_get();
1245 internal static readonly int INPUT_COLOR = Interop.TextEditor.TextEditor_Property_INPUT_COLOR_get();
1246 internal static readonly int INPUT_FONT_FAMILY = Interop.TextEditor.TextEditor_Property_INPUT_FONT_FAMILY_get();
1247 internal static readonly int INPUT_FONT_STYLE = Interop.TextEditor.TextEditor_Property_INPUT_FONT_STYLE_get();
1248 internal static readonly int INPUT_POINT_SIZE = Interop.TextEditor.TextEditor_Property_INPUT_POINT_SIZE_get();
1249 internal static readonly int LINE_SPACING = Interop.TextEditor.TextEditor_Property_LINE_SPACING_get();
1250 internal static readonly int INPUT_LINE_SPACING = Interop.TextEditor.TextEditor_Property_INPUT_LINE_SPACING_get();
1251 internal static readonly int UNDERLINE = Interop.TextEditor.TextEditor_Property_UNDERLINE_get();
1252 internal static readonly int INPUT_UNDERLINE = Interop.TextEditor.TextEditor_Property_INPUT_UNDERLINE_get();
1253 internal static readonly int SHADOW = Interop.TextEditor.TextEditor_Property_SHADOW_get();
1254 internal static readonly int INPUT_SHADOW = Interop.TextEditor.TextEditor_Property_INPUT_SHADOW_get();
1255 internal static readonly int EMBOSS = Interop.TextEditor.TextEditor_Property_EMBOSS_get();
1256 internal static readonly int INPUT_EMBOSS = Interop.TextEditor.TextEditor_Property_INPUT_EMBOSS_get();
1257 internal static readonly int OUTLINE = Interop.TextEditor.TextEditor_Property_OUTLINE_get();
1258 internal static readonly int INPUT_OUTLINE = Interop.TextEditor.TextEditor_Property_INPUT_OUTLINE_get();
1259 internal static readonly int SMOOTH_SCROLL = Interop.TextEditor.TextEditor_Property_SMOOTH_SCROLL_get();
1260 internal static readonly int SMOOTH_SCROLL_DURATION = Interop.TextEditor.TextEditor_Property_SMOOTH_SCROLL_DURATION_get();
1261 internal static readonly int ENABLE_SCROLL_BAR = Interop.TextEditor.TextEditor_Property_ENABLE_SCROLL_BAR_get();
1262 internal static readonly int SCROLL_BAR_SHOW_DURATION = Interop.TextEditor.TextEditor_Property_SCROLL_BAR_SHOW_DURATION_get();
1263 internal static readonly int SCROLL_BAR_FADE_DURATION = Interop.TextEditor.TextEditor_Property_SCROLL_BAR_FADE_DURATION_get();
1264 internal static readonly int PIXEL_SIZE = Interop.TextEditor.TextEditor_Property_PIXEL_SIZE_get();
1265 internal static readonly int LINE_COUNT = Interop.TextEditor.TextEditor_Property_LINE_COUNT_get();
1266 internal static readonly int ENABLE_SELECTION = Interop.TextEditor.TextEditor_Property_ENABLE_SELECTION_get();
1267 internal static readonly int PLACEHOLDER = Interop.TextEditor.TextEditor_Property_PLACEHOLDER_get();
1268 internal static readonly int LINE_WRAP_MODE = Interop.TextEditor.TextEditor_Property_LINE_WRAP_MODE_get();
1269 internal static readonly int PLACEHOLDER_TEXT = Interop.TextEditor.TextEditor_Property_PLACEHOLDER_TEXT_get();
1270 internal static readonly int PLACEHOLDER_TEXT_COLOR = Interop.TextEditor.TextEditor_Property_PLACEHOLDER_TEXT_COLOR_get();
1271 internal static readonly int ENABLE_SHIFT_SELECTION = Interop.TextEditor.TextEditor_Property_ENABLE_SHIFT_SELECTION_get();
1272 internal static readonly int MATCH_SYSTEM_LANGUAGE_DIRECTION = Interop.TextEditor.TextEditor_Property_MATCH_SYSTEM_LANGUAGE_DIRECTION_get();
1273 internal static readonly int MAX_LENGTH = Interop.TextEditor.TextEditor_Property_MAX_LENGTH_get();
1276 internal class InputStyle
1282 FontFamily = 0x0002,
1285 LineSpacing = 0x0010,
1293 private void OnDecorationBoundingBoxChanged(int x, int y, int width, int height)
1295 DecorationBoundingBox = new Rectangle(x, y, width, height);
1297 private void OnInputColorChanged(float x, float y, float z, float w)
1299 InputColor = new Vector4(x, y, z, w);
1301 private void OnPlaceholderTextColorChanged(float r, float g, float b, float a)
1303 PlaceholderTextColor = new Color(r, g, b, a);
1305 private void OnPrimaryCursorColorChanged(float x, float y, float z, float w)
1307 PrimaryCursorColor = new Vector4(x, y, z, w);
1309 private void OnSecondaryCursorColorChanged(float x, float y, float z, float w)
1311 SecondaryCursorColor = new Vector4(x, y, z, w);
1313 private void OnSelectionHighlightColorChanged(float x, float y, float z, float w)
1315 SelectionHighlightColor = new Vector4(x, y, z, w);
1317 private void OnTextColorChanged(float x, float y, float z, float w)
1319 TextColor = new Vector4(x, y, z, w);