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();
1078 /// Only used by the IL of xaml, will never changed to not hidden.
1079 [EditorBrowsable(EditorBrowsableState.Never)]
1080 public override bool IsCreateByXaml
1084 return base.IsCreateByXaml;
1088 base.IsCreateByXaml = value;
1092 this.TextChanged += (obj, e) =>
1094 this.Text = this.Text;
1101 /// Get the InputMethodContext instance.
1103 /// <returns>The InputMethodContext instance.</returns>
1104 /// <since_tizen> 5 </since_tizen>
1105 public InputMethodContext GetInputMethodContext()
1107 if (inputMethodContext == null)
1109 /*Avoid raising InputMethodContext reference count.*/
1110 inputMethodContext = new InputMethodContext(Interop.TextEditor.TextEditor_GetInputMethodContext(swigCPtr), true);
1111 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
1113 return inputMethodContext;
1116 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(TextEditor obj)
1118 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
1121 internal SWIGTYPE_p_Dali__SignalT_void_fDali__Toolkit__TextEditor_Dali__Toolkit__TextEditor__InputStyle__MaskF_t InputStyleChangedSignal()
1123 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);
1124 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
1131 /// <since_tizen> 3 </since_tizen>
1132 protected override void Dispose(DisposeTypes type)
1139 //Release your own unmanaged resources here.
1140 //You should not access any managed member here except static instance.
1141 //because the execution order of Finalizes is non-deterministic.
1143 if (this.HasBody() && _textEditorTextChangedCallbackDelegate != null)
1145 TextChangedSignal().Disconnect(_textEditorTextChangedCallbackDelegate);
1151 /// This will not be public opened.
1152 [EditorBrowsable(EditorBrowsableState.Never)]
1153 protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
1155 // In order to speed up IME hide, temporarily add
1156 GetInputMethodContext()?.DestroyContext();
1157 Interop.TextEditor.delete_TextEditor(swigCPtr);
1160 private string SetTranslatable(string textEditorSid)
1162 string translatableText = null;
1163 translatableText = NUIApplication.MultilingualResourceManager?.GetString(textEditorSid, new CultureInfo(SystemSettings.LocaleLanguage.Replace("_", "-")));
1164 if (translatableText != null)
1166 if (systemlangTextFlag == false)
1168 SystemSettings.LocaleLanguageChanged += new WeakEventHandler<LocaleLanguageChangedEventArgs>(SystemSettings_LocaleLanguageChanged).Handler;
1169 systemlangTextFlag = true;
1171 return translatableText;
1175 translatableText = "";
1176 return translatableText;
1180 private void SystemSettings_LocaleLanguageChanged(object sender, LocaleLanguageChangedEventArgs e)
1182 if (textEditorTextSid != null)
1184 Text = NUIApplication.MultilingualResourceManager?.GetString(textEditorTextSid, new CultureInfo(e.Value.Replace("_", "-")));
1186 if (textEditorPlaceHolderTextSid != null)
1188 PlaceholderText = NUIApplication.MultilingualResourceManager?.GetString(textEditorPlaceHolderTextSid, new CultureInfo(e.Value.Replace("_", "-")));
1192 internal new class Property
1194 internal static readonly int TEXT = Interop.TextEditor.TextEditor_Property_TEXT_get();
1195 internal static readonly int TEXT_COLOR = Interop.TextEditor.TextEditor_Property_TEXT_COLOR_get();
1196 internal static readonly int FONT_FAMILY = Interop.TextEditor.TextEditor_Property_FONT_FAMILY_get();
1197 internal static readonly int FONT_STYLE = Interop.TextEditor.TextEditor_Property_FONT_STYLE_get();
1198 internal static readonly int POINT_SIZE = Interop.TextEditor.TextEditor_Property_POINT_SIZE_get();
1199 internal static readonly int HORIZONTAL_ALIGNMENT = Interop.TextEditor.TextEditor_Property_HORIZONTAL_ALIGNMENT_get();
1200 internal static readonly int SCROLL_THRESHOLD = Interop.TextEditor.TextEditor_Property_SCROLL_THRESHOLD_get();
1201 internal static readonly int SCROLL_SPEED = Interop.TextEditor.TextEditor_Property_SCROLL_SPEED_get();
1202 internal static readonly int PRIMARY_CURSOR_COLOR = Interop.TextEditor.TextEditor_Property_PRIMARY_CURSOR_COLOR_get();
1203 internal static readonly int SECONDARY_CURSOR_COLOR = Interop.TextEditor.TextEditor_Property_SECONDARY_CURSOR_COLOR_get();
1204 internal static readonly int ENABLE_CURSOR_BLINK = Interop.TextEditor.TextEditor_Property_ENABLE_CURSOR_BLINK_get();
1205 internal static readonly int CURSOR_BLINK_INTERVAL = Interop.TextEditor.TextEditor_Property_CURSOR_BLINK_INTERVAL_get();
1206 internal static readonly int CURSOR_BLINK_DURATION = Interop.TextEditor.TextEditor_Property_CURSOR_BLINK_DURATION_get();
1207 internal static readonly int CURSOR_WIDTH = Interop.TextEditor.TextEditor_Property_CURSOR_WIDTH_get();
1208 internal static readonly int GRAB_HANDLE_IMAGE = Interop.TextEditor.TextEditor_Property_GRAB_HANDLE_IMAGE_get();
1209 internal static readonly int GRAB_HANDLE_PRESSED_IMAGE = Interop.TextEditor.TextEditor_Property_GRAB_HANDLE_PRESSED_IMAGE_get();
1210 internal static readonly int SELECTION_HANDLE_IMAGE_LEFT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_IMAGE_LEFT_get();
1211 internal static readonly int SELECTION_HANDLE_IMAGE_RIGHT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_IMAGE_RIGHT_get();
1212 internal static readonly int SELECTION_HANDLE_PRESSED_IMAGE_LEFT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_PRESSED_IMAGE_LEFT_get();
1213 internal static readonly int SELECTION_HANDLE_PRESSED_IMAGE_RIGHT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_PRESSED_IMAGE_RIGHT_get();
1214 internal static readonly int SELECTION_HANDLE_MARKER_IMAGE_LEFT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_MARKER_IMAGE_LEFT_get();
1215 internal static readonly int SELECTION_HANDLE_MARKER_IMAGE_RIGHT = Interop.TextEditor.TextEditor_Property_SELECTION_HANDLE_MARKER_IMAGE_RIGHT_get();
1216 internal static readonly int SELECTION_HIGHLIGHT_COLOR = Interop.TextEditor.TextEditor_Property_SELECTION_HIGHLIGHT_COLOR_get();
1217 internal static readonly int DECORATION_BOUNDING_BOX = Interop.TextEditor.TextEditor_Property_DECORATION_BOUNDING_BOX_get();
1218 internal static readonly int ENABLE_MARKUP = Interop.TextEditor.TextEditor_Property_ENABLE_MARKUP_get();
1219 internal static readonly int INPUT_COLOR = Interop.TextEditor.TextEditor_Property_INPUT_COLOR_get();
1220 internal static readonly int INPUT_FONT_FAMILY = Interop.TextEditor.TextEditor_Property_INPUT_FONT_FAMILY_get();
1221 internal static readonly int INPUT_FONT_STYLE = Interop.TextEditor.TextEditor_Property_INPUT_FONT_STYLE_get();
1222 internal static readonly int INPUT_POINT_SIZE = Interop.TextEditor.TextEditor_Property_INPUT_POINT_SIZE_get();
1223 internal static readonly int LINE_SPACING = Interop.TextEditor.TextEditor_Property_LINE_SPACING_get();
1224 internal static readonly int INPUT_LINE_SPACING = Interop.TextEditor.TextEditor_Property_INPUT_LINE_SPACING_get();
1225 internal static readonly int UNDERLINE = Interop.TextEditor.TextEditor_Property_UNDERLINE_get();
1226 internal static readonly int INPUT_UNDERLINE = Interop.TextEditor.TextEditor_Property_INPUT_UNDERLINE_get();
1227 internal static readonly int SHADOW = Interop.TextEditor.TextEditor_Property_SHADOW_get();
1228 internal static readonly int INPUT_SHADOW = Interop.TextEditor.TextEditor_Property_INPUT_SHADOW_get();
1229 internal static readonly int EMBOSS = Interop.TextEditor.TextEditor_Property_EMBOSS_get();
1230 internal static readonly int INPUT_EMBOSS = Interop.TextEditor.TextEditor_Property_INPUT_EMBOSS_get();
1231 internal static readonly int OUTLINE = Interop.TextEditor.TextEditor_Property_OUTLINE_get();
1232 internal static readonly int INPUT_OUTLINE = Interop.TextEditor.TextEditor_Property_INPUT_OUTLINE_get();
1233 internal static readonly int SMOOTH_SCROLL = Interop.TextEditor.TextEditor_Property_SMOOTH_SCROLL_get();
1234 internal static readonly int SMOOTH_SCROLL_DURATION = Interop.TextEditor.TextEditor_Property_SMOOTH_SCROLL_DURATION_get();
1235 internal static readonly int ENABLE_SCROLL_BAR = Interop.TextEditor.TextEditor_Property_ENABLE_SCROLL_BAR_get();
1236 internal static readonly int SCROLL_BAR_SHOW_DURATION = Interop.TextEditor.TextEditor_Property_SCROLL_BAR_SHOW_DURATION_get();
1237 internal static readonly int SCROLL_BAR_FADE_DURATION = Interop.TextEditor.TextEditor_Property_SCROLL_BAR_FADE_DURATION_get();
1238 internal static readonly int PIXEL_SIZE = Interop.TextEditor.TextEditor_Property_PIXEL_SIZE_get();
1239 internal static readonly int LINE_COUNT = Interop.TextEditor.TextEditor_Property_LINE_COUNT_get();
1240 internal static readonly int ENABLE_SELECTION = Interop.TextEditor.TextEditor_Property_ENABLE_SELECTION_get();
1241 internal static readonly int PLACEHOLDER = Interop.TextEditor.TextEditor_Property_PLACEHOLDER_get();
1242 internal static readonly int LINE_WRAP_MODE = Interop.TextEditor.TextEditor_Property_LINE_WRAP_MODE_get();
1243 internal static readonly int PLACEHOLDER_TEXT = Interop.TextEditor.TextEditor_Property_PLACEHOLDER_TEXT_get();
1244 internal static readonly int PLACEHOLDER_TEXT_COLOR = Interop.TextEditor.TextEditor_Property_PLACEHOLDER_TEXT_COLOR_get();
1245 internal static readonly int ENABLE_SHIFT_SELECTION = Interop.TextEditor.TextEditor_Property_ENABLE_SHIFT_SELECTION_get();
1246 internal static readonly int MATCH_SYSTEM_LANGUAGE_DIRECTION = Interop.TextEditor.TextEditor_Property_MATCH_SYSTEM_LANGUAGE_DIRECTION_get();
1249 internal class InputStyle
1255 FontFamily = 0x0002,
1258 LineSpacing = 0x0010,
1266 private void OnDecorationBoundingBoxChanged(int x, int y, int width, int height)
1268 DecorationBoundingBox = new Rectangle(x, y, width, height);
1270 private void OnInputColorChanged(float x, float y, float z, float w)
1272 InputColor = new Vector4(x, y, z, w);
1274 private void OnPlaceholderTextColorChanged(float r, float g, float b, float a)
1276 PlaceholderTextColor = new Color(r, g, b, a);
1278 private void OnPrimaryCursorColorChanged(float x, float y, float z, float w)
1280 PrimaryCursorColor = new Vector4(x, y, z, w);
1282 private void OnSecondaryCursorColorChanged(float x, float y, float z, float w)
1284 SecondaryCursorColor = new Vector4(x, y, z, w);
1286 private void OnSelectionHighlightColorChanged(float x, float y, float z, float w)
1288 SelectionHighlightColor = new Vector4(x, y, z, w);
1290 private void OnTextColorChanged(float x, float y, float z, float w)
1292 TextColor = new Vector4(x, y, z, w);