/*
* 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;
using Tizen.NUI.Binding;
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;
private bool isSettingTextInCSharp = 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();
}
internal TextEditor(global::System.IntPtr cPtr, bool cMemoryOwn, bool shown = true, TextEditorStyle style = null) : base(cPtr, cMemoryOwn, style)
{
if (!shown)
{
SetVisible(false);
}
Focusable = true;
TextChanged += TextEditorTextChanged;
}
///
/// The TranslatableText property.
/// The text can set the SID value.
///
///
/// ResourceManager about multilingual is null.
///
/// 4
public string TranslatableText
{
get
{
return GetValue(TranslatableTextProperty) as string;
}
set
{
SetValue(TranslatableTextProperty, value);
}
}
private string InternalTranslatableText
{
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 GetValue(TranslatablePlaceholderTextProperty) as string;
}
set
{
SetValue(TranslatablePlaceholderTextProperty, value);
}
}
private string InternalTranslatablePlaceholderText
{
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.
/// The text to display in the UTF-8 format.
///
/// 3
public string Text
{
get
{
return (string)GetValue(TextProperty);
}
set
{
SetValue(TextProperty, value);
NotifyPropertyChanged();
}
}
///
/// The TextColor property.
/// The color of the text.
///
///
/// 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.
/// The requested font family to use.
///
/// 3
public string FontFamily
{
get
{
return (string)GetValue(FontFamilyProperty);
}
set
{
SetValue(FontFamilyProperty, value);
NotifyPropertyChanged();
}
}
///
/// The FontStyle property.
/// The requested font style to use.
/// 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)
{
using (var fontStyleMap = TextMapHelper.GetFontStyleMap(fontStyle))
{
SetValue(FontStyleProperty, fontStyleMap);
}
}
///
/// Get FontStyle from TextEditor.
///
/// The FontStyle
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public FontStyle GetFontStyle()
{
FontStyle fontStyle;
using (var fontStyleMap = (PropertyMap)GetValue(FontStyleProperty))
{
fontStyle = TextMapHelper.GetFontStyleStruct(fontStyleMap);
}
return fontStyle;
}
///
/// The PointSize property.
/// The size of font in points.
///
/// 3
[Binding.TypeConverter(typeof(PointSizeTypeConverter))]
public float PointSize
{
get
{
return (float)GetValue(PointSizeProperty);
}
set
{
SetValue(PointSizeProperty, value);
NotifyPropertyChanged();
}
}
///
/// The HorizontalAlignment property.
/// The line horizontal alignment.
///
/// 3
public HorizontalAlignment HorizontalAlignment
{
get
{
return (HorizontalAlignment)GetValue(HorizontalAlignmentProperty);
}
set
{
SetValue(HorizontalAlignmentProperty, value);
NotifyPropertyChanged();
}
}
///
/// The VerticalAlignment property.
/// The line vertical alignment.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public VerticalAlignment VerticalAlignment
{
get
{
return (VerticalAlignment)GetValue(VerticalAlignmentProperty);
}
set
{
SetValue(VerticalAlignmentProperty, value);
NotifyPropertyChanged();
}
}
///
/// The ScrollThreshold property.
/// Horizontal scrolling will occur if the cursor is this close to the control border.
///
/// 3
public float ScrollThreshold
{
get
{
return (float)GetValue(ScrollThresholdProperty);
}
set
{
SetValue(ScrollThresholdProperty, value);
NotifyPropertyChanged();
}
}
///
/// The ScrollSpeed property.
/// The scroll speed in pixels per second.
///
/// 3
public float ScrollSpeed
{
get
{
return (float)GetValue(ScrollSpeedProperty);
}
set
{
SetValue(ScrollSpeedProperty, value);
NotifyPropertyChanged();
}
}
///
/// The PrimaryCursorColor property.
/// The color to apply to the primary cursor.
///
///
/// 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 color to apply to the secondary cursor.
///
///
/// 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.
/// Whether the cursor should blink or not.
///
/// 3
public bool EnableCursorBlink
{
get
{
return (bool)GetValue(EnableCursorBlinkProperty);
}
set
{
SetValue(EnableCursorBlinkProperty, value);
NotifyPropertyChanged();
}
}
///
/// The CursorBlinkInterval property.
/// The time interval in seconds between cursor on/off states.
///
/// 3
public float CursorBlinkInterval
{
get
{
return (float)GetValue(CursorBlinkIntervalProperty);
}
set
{
SetValue(CursorBlinkIntervalProperty, value);
NotifyPropertyChanged();
}
}
///
/// The CursorBlinkDuration property.
/// The cursor will stop blinking after this number of seconds (if non-zero).
///
/// 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.
/// The image to display for the grab handle.
///
/// 3
public string GrabHandleImage
{
get
{
return (string)GetValue(GrabHandleImageProperty);
}
set
{
SetValue(GrabHandleImageProperty, value);
NotifyPropertyChanged();
}
}
///
/// The GrabHandlePressedImage property.
/// The image to display when the grab handle is pressed.
///
/// 3
public string GrabHandlePressedImage
{
get
{
return (string)GetValue(GrabHandlePressedImageProperty);
}
set
{
SetValue(GrabHandlePressedImageProperty, value);
NotifyPropertyChanged();
}
}
///
/// The SelectionHandleImageLeft property.
/// The image to display for the left selection handle.
/// 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 image to display for the right selection handle.
/// 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();
}
}
///
/// Set SelectionHandleImage to TextEditor.
///
/// The SelectionHandleImage
///
/// SetSelectionHandleImage specifies the display image used for the selection handle through .
///
///
/// The following example demonstrates how to use the SetSelectionHandleImage method.
///
/// var selectionHandleImage = new Tizen.NUI.Text.SelectionHandleImage();
/// selectionHandleImage.LeftImageUrl = "handle_downleft.png";
/// selectionHandleImage.RightImageUrl = "handle_downright.png";
/// editor.SetSelectionHandleImage(selectionHandleImage);
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public void SetSelectionHandleImage(SelectionHandleImage selectionHandleImage)
{
if (!String.IsNullOrEmpty(selectionHandleImage.LeftImageUrl))
{
using (var leftImageMap = TextMapHelper.GetFileNameMap(selectionHandleImage.LeftImageUrl))
{
SetValue(SelectionHandleImageLeftProperty, leftImageMap);
}
}
if (!String.IsNullOrEmpty(selectionHandleImage.RightImageUrl))
{
using (var rightImageMap = TextMapHelper.GetFileNameMap(selectionHandleImage.RightImageUrl))
{
SetValue(SelectionHandleImageRightProperty, rightImageMap);
}
}
}
///
/// Get SelectionHandleImage from TextEditor.
///
/// The SelectionHandleImage
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public SelectionHandleImage GetSelectionHandleImage()
{
SelectionHandleImage selectionHandleImage;
using (var leftImageMap = (PropertyMap)GetValue(SelectionHandleImageLeftProperty))
using (var rightImageMap = (PropertyMap)GetValue(SelectionHandleImageRightProperty))
{
selectionHandleImage = TextMapHelper.GetSelectionHandleImageStruct(leftImageMap, rightImageMap);
}
return selectionHandleImage;
}
///
/// The SelectionHandlePressedImageLeft property.
/// The image to display when the left selection handle is pressed.
/// 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 image to display when the right selection handle is pressed.
/// 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();
}
}
///
/// Set SelectionHandlePressedImage to TextEditor.
///
/// The SelectionHandleImage
///
/// SetSelectionHandlePressedImage specifies the display image used for the selection handle through .
///
///
/// The following example demonstrates how to use the SetSelectionHandlePressedImage method.
///
/// var selectionHandlePressedImage = new Tizen.NUI.Text.SelectionHandleImage();
/// selectionHandlePressedImage.LeftImageUrl = "handle_pressed_downleft.png";
/// selectionHandlePressedImage.RightImageUrl = "handle_pressed_downright.png";
/// editor.SetSelectionHandlePressedImage(selectionHandlePressedImage);
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public void SetSelectionHandlePressedImage(SelectionHandleImage selectionHandlePressedImage)
{
if (!String.IsNullOrEmpty(selectionHandlePressedImage.LeftImageUrl))
{
using (var leftImageMap = TextMapHelper.GetFileNameMap(selectionHandlePressedImage.LeftImageUrl))
{
SetValue(SelectionHandlePressedImageLeftProperty, leftImageMap);
}
}
if (!String.IsNullOrEmpty(selectionHandlePressedImage.RightImageUrl))
{
using (var rightImageMap = TextMapHelper.GetFileNameMap(selectionHandlePressedImage.RightImageUrl))
{
SetValue(SelectionHandlePressedImageRightProperty, rightImageMap);
}
}
}
///
/// Get SelectionHandlePressedImage from TextEditor.
///
/// The SelectionHandlePressedImage
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public SelectionHandleImage GetSelectionHandlePressedImage()
{
SelectionHandleImage selectionHandleImage;
using (var leftImageMap = (PropertyMap)GetValue(SelectionHandlePressedImageLeftProperty))
using (var rightImageMap = (PropertyMap)GetValue(SelectionHandlePressedImageRightProperty))
{
selectionHandleImage = TextMapHelper.GetSelectionHandleImageStruct(leftImageMap, rightImageMap);
}
return selectionHandleImage;
}
///
/// The SelectionHandleMarkerImageLeft property.
/// The image to display for the left selection handle marker.
/// 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 image to display for the right selection handle marker.
/// 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();
}
}
///
/// Set SelectionHandleMarkerImage to TextEditor.
///
/// The SelectionHandleImage
///
/// SetSelectionHandleMarkerImage specifies the display image used for the selection handle through .
///
///
/// The following example demonstrates how to use the SetSelectionHandleMarkerImage method.
///
/// var selectionHandleMarkerImage = new Tizen.NUI.Text.SelectionHandleImage();
/// selectionHandleMarkerImage.LeftImageUrl = "handle_pressed_downleft.png";
/// selectionHandleMarkerImage.RightImageUrl = "handle_pressed_downright.png";
/// editor.SetSelectionHandleMarkerImage(selectionHandleMarkerImage);
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public void SetSelectionHandleMarkerImage(SelectionHandleImage selectionHandleMarkerImage)
{
if (!String.IsNullOrEmpty(selectionHandleMarkerImage.LeftImageUrl))
{
using (var leftImageMap = TextMapHelper.GetFileNameMap(selectionHandleMarkerImage.LeftImageUrl))
{
SetValue(SelectionHandleMarkerImageLeftProperty, leftImageMap);
}
}
if (!String.IsNullOrEmpty(selectionHandleMarkerImage.RightImageUrl))
{
using (var rightImageMap = TextMapHelper.GetFileNameMap(selectionHandleMarkerImage.RightImageUrl))
{
SetValue(SelectionHandleMarkerImageRightProperty, rightImageMap);
}
}
}
///
/// Get SelectionHandleMarkerImage from TextEditor.
///
/// The SelectionHandleMarkerImage
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public SelectionHandleImage GetSelectionHandleMarkerImage()
{
SelectionHandleImage selectionHandleImage;
using (var leftImageMap = (PropertyMap)GetValue(SelectionHandleMarkerImageLeftProperty))
using (var rightImageMap = (PropertyMap)GetValue(SelectionHandleMarkerImageRightProperty))
{
selectionHandleImage = TextMapHelper.GetSelectionHandleImageStruct(leftImageMap, rightImageMap);
}
return selectionHandleImage;
}
///
/// The SelectionHighlightColor property.
/// The color of the selection highlight.
///
///
/// 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 decorations (handles etc) will positioned within this area on-screen.
///
///
/// 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.
/// Whether the mark-up processing is enabled.
///
/// 3
public bool EnableMarkup
{
get
{
return (bool)GetValue(EnableMarkupProperty);
}
set
{
SetValue(EnableMarkupProperty, value);
NotifyPropertyChanged();
}
}
///
/// The InputColor property.
/// The color of the new input text.
///
///
/// 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.
/// The font's family of the new input text.
///
/// 3
public string InputFontFamily
{
get
{
return (string)GetValue(InputFontFamilyProperty);
}
set
{
SetValue(InputFontFamilyProperty, value);
NotifyPropertyChanged();
}
}
///
/// The InputFontStyle property.
/// The font's style of the new input text.
/// 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)
{
using (var fontStyleMap = TextMapHelper.GetFontStyleMap(fontStyle))
{
SetValue(InputFontStyleProperty, fontStyleMap);
}
}
///
/// Get InputFontStyle from TextEditor.
///
/// The FontStyle
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public FontStyle GetInputFontStyle()
{
FontStyle fontStyle;
using (var fontStyleMap = (PropertyMap)GetValue(InputFontStyleProperty))
{
fontStyle = TextMapHelper.GetFontStyleStruct(fontStyleMap);
}
return fontStyle;
}
///
/// The InputPointSize property.
/// The font's size of the new input text in points.
///
/// 3
[Binding.TypeConverter(typeof(PointSizeTypeConverter))]
public float InputPointSize
{
get
{
return (float)GetValue(InputPointSizeProperty);
}
set
{
SetValue(InputPointSizeProperty, value);
NotifyPropertyChanged();
}
}
///
/// The LineSpacing property.
/// The default extra space between lines in points.
///
/// 3
public float LineSpacing
{
get
{
return (float)GetValue(LineSpacingProperty);
}
set
{
SetValue(LineSpacingProperty, value);
NotifyPropertyChanged();
}
}
///
/// The InputLineSpacing property.
/// The extra space between lines in points.
///
/// 3
public float InputLineSpacing
{
get
{
return (float)GetValue(InputLineSpacingProperty);
}
set
{
SetValue(InputLineSpacingProperty, value);
NotifyPropertyChanged();
}
}
///
/// The relative height of the line (a factor that will be multiplied by text height).
/// If the value is less than 1, the lines could to be overlapped.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public float RelativeLineHeight
{
get
{
return (float)GetValue(RelativeLineHeightProperty);
}
set
{
SetValue(RelativeLineHeightProperty, value);
NotifyPropertyChanged();
}
}
///
/// The Underline property.
/// The default underline parameters.
/// 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)
{
using (var underlineMap = TextMapHelper.GetUnderlineMap(underline))
{
SetValue(UnderlineProperty, underlineMap);
}
}
///
/// Get Underline from TextEditor.
///
/// The Underline
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public Underline GetUnderline()
{
Underline underline;
using (var underlineMap = (PropertyMap)GetValue(UnderlineProperty))
{
underline = TextMapHelper.GetUnderlineStruct(underlineMap);
}
return underline;
}
///
/// The InputUnderline property.
/// The underline parameters of the new input text.
///
/// 3
public string InputUnderline
{
get
{
return (string)GetValue(InputUnderlineProperty);
}
set
{
SetValue(InputUnderlineProperty, value);
NotifyPropertyChanged();
}
}
///
/// The Shadow property.
/// The default shadow parameters.
/// 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)
{
using (var shadowMap = TextMapHelper.GetShadowMap(shadow))
{
SetValue(ShadowProperty, shadowMap);
}
}
///
/// Get Shadow from TextEditor.
///
/// The Shadow
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public Tizen.NUI.Text.Shadow GetShadow()
{
Tizen.NUI.Text.Shadow shadow;
using (var shadowMap = (PropertyMap)GetValue(ShadowProperty))
{
shadow = TextMapHelper.GetShadowStruct(shadowMap);
}
return shadow;
}
///
/// The InputShadow property.
/// The shadow parameters of the new input text.
///
/// 3
public string InputShadow
{
get
{
return (string)GetValue(InputShadowProperty);
}
set
{
SetValue(InputShadowProperty, value);
NotifyPropertyChanged();
}
}
///
/// The Emboss property.
/// The default emboss parameters.
///
/// 3
public string Emboss
{
get
{
return (string)GetValue(EmbossProperty);
}
set
{
SetValue(EmbossProperty, value);
NotifyPropertyChanged();
}
}
///
/// The InputEmboss property.
/// The emboss parameters of the new input text.
///
/// 3
public string InputEmboss
{
get
{
return (string)GetValue(InputEmbossProperty);
}
set
{
SetValue(InputEmbossProperty, value);
NotifyPropertyChanged();
}
}
///
/// The Outline property.
/// The default outline parameters.
/// 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)
{
using (var outlineMap = TextMapHelper.GetOutlineMap(outline))
{
SetValue(OutlineProperty, outlineMap);
}
}
///
/// Get Outline from TextEditor.
///
/// The Outline
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public Outline GetOutline()
{
Outline outline;
using (var outlineMap = (PropertyMap)GetValue(OutlineProperty))
{
outline = TextMapHelper.GetOutlineStruct(outlineMap);
}
return outline;
}
///
/// The InputOutline property.
/// The outline parameters of the new input text.
///
/// 3
public string InputOutline
{
get
{
return (string)GetValue(InputOutlineProperty);
}
set
{
SetValue(InputOutlineProperty, value);
NotifyPropertyChanged();
}
}
///
/// The SmoothScroll property.
/// Enable or disable the smooth scroll animation.
///
/// 3
public bool SmoothScroll
{
get
{
return (bool)GetValue(SmoothScrollProperty);
}
set
{
SetValue(SmoothScrollProperty, value);
NotifyPropertyChanged();
}
}
///
/// The SmoothScrollDuration property.
/// Sets the duration of smooth scroll animation.
///
/// 3
public float SmoothScrollDuration
{
get
{
return (float)GetValue(SmoothScrollDurationProperty);
}
set
{
SetValue(SmoothScrollDurationProperty, value);
NotifyPropertyChanged();
}
}
///
/// The EnableScrollBar property.
/// Enable or disable the scroll bar.
///
/// 3
public bool EnableScrollBar
{
get
{
return (bool)GetValue(EnableScrollBarProperty);
}
set
{
SetValue(EnableScrollBarProperty, value);
NotifyPropertyChanged();
}
}
///
/// The ScrollBarShowDuration property.
/// Sets the duration of scroll bar to show.
///
/// 3
public float ScrollBarShowDuration
{
get
{
return (float)GetValue(ScrollBarShowDurationProperty);
}
set
{
SetValue(ScrollBarShowDurationProperty, value);
NotifyPropertyChanged();
}
}
///
/// The ScrollBarFadeDuration property.
/// Sets the duration of scroll bar to fade out.
///
/// 3
public float ScrollBarFadeDuration
{
get
{
return (float)GetValue(ScrollBarFadeDurationProperty);
}
set
{
SetValue(ScrollBarFadeDurationProperty, value);
NotifyPropertyChanged();
}
}
///
/// The PixelSize property.
/// The size of font in pixels.
///
/// 3
[Binding.TypeConverter(typeof(FloatGraphicsTypeConverter))]
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 lineCount = 0;
using (var propertyValue = GetProperty(TextEditor.Property.LineCount))
{
propertyValue.Get(out lineCount);
}
return lineCount;
}
}
///
/// 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 portion of the text that has been selected by the user.
///
///
/// Empty string when nothing is selected.
///
/// 9
public string SelectedText
{
get
{
string selectedText;
using (var propertyValue = GetProperty(TextEditor.Property.SelectedText))
{
propertyValue.Get(out selectedText);
}
return selectedText;
}
}
///
/// 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 Enable selection property.
/// Enables Text selection, such as the cursor, handle, clipboard, and highlight color.
///
/// 3
public bool EnableSelection
{
get
{
return (bool)GetValue(EnableSelectionProperty);
}
set
{
SetValue(EnableSelectionProperty, value);
NotifyPropertyChanged();
}
}
///
/// The start index for selection.
///
///
/// When there is no selection, the index is current cursor position.
///
/// 9
public int SelectedTextStart
{
get
{
int selectedTextStart;
using (var propertyValue = GetProperty(TextEditor.Property.SelectedTextStart))
{
propertyValue.Get(out selectedTextStart);
}
return selectedTextStart;
}
}
///
/// The end index for selection.
///
///
/// When there is no selection, the index is current cursor position.
///
/// 9
public int SelectedTextEnd
{
get
{
int selectedTextEnd;
using (var propertyValue = GetProperty(TextEditor.Property.SelectedTextEnd))
{
propertyValue.Get(out selectedTextEnd);
}
return selectedTextEnd;
}
}
///
/// Enable editing in text control.
///
/// 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 bool EnableEditing
{
get
{
return (bool)GetValue(EnableEditingProperty);
}
set
{
SetValue(EnableEditingProperty, value);
}
}
private bool InternalEnableEditing
{
get
{
bool enableEditing;
using (var propertyValue = GetProperty(TextEditor.Property.EnableEditing))
{
propertyValue.Get(out enableEditing);
}
return enableEditing;
}
set
{
using (var propertyValue = new PropertyValue(value))
{
SetProperty(TextEditor.Property.EnableEditing, propertyValue);
NotifyPropertyChanged();
}
}
}
///
/// Specify horizontal scroll position in text control.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public int HorizontalScrollPosition
{
get
{
return (int)GetValue(HorizontalScrollPositionProperty);
}
set
{
SetValue(HorizontalScrollPositionProperty, value);
}
}
private int InternalHorizontalScrollPosition
{
get
{
int horizontalScrollPosition;
using (var propertyValue = GetProperty(TextEditor.Property.HorizontalScrollPosition))
{
propertyValue.Get(out horizontalScrollPosition);
}
return horizontalScrollPosition;
}
set
{
using (var propertyValue = new PropertyValue(value))
{
SetProperty(TextEditor.Property.HorizontalScrollPosition, propertyValue);
NotifyPropertyChanged();
}
}
}
///
/// Specify vertical scroll position in text control.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public int VerticalScrollPosition
{
get
{
return (int)GetValue(VerticalScrollPositionProperty);
}
set
{
SetValue(VerticalScrollPositionProperty, value);
}
}
private int InternalVerticalScrollPosition
{
get
{
int verticalScrollPosition;
using (var propertyValue = GetProperty(TextEditor.Property.VerticalScrollPosition))
{
propertyValue.Get(out verticalScrollPosition);
}
return verticalScrollPosition;
}
set
{
using (var 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
{
return (int)GetValue(PrimaryCursorPositionProperty);
}
set
{
SetValue(PrimaryCursorPositionProperty, value);
}
}
private int InternalPrimaryCursorPosition
{
get
{
int primaryCursorPosition;
using (var propertyValue = GetProperty(TextEditor.Property.PrimaryCursorPosition))
{
propertyValue.Get(out primaryCursorPosition);
}
return primaryCursorPosition;
}
set
{
using (var 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.
/// 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
///
///
/// 9
public void SetInputFilter(InputFilter inputFilter)
{
using (var map = TextMapHelper.GetInputFilterMap(inputFilter))
using (var propertyValue = new PropertyValue(map))
{
SetProperty(TextEditor.Property.InputFilter, propertyValue);
}
}
///
/// Get InputFilter from TextEditor.
///
/// The InputFilter
///
///
///
/// 9
public InputFilter GetInputFilter()
{
InputFilter inputFilter;
using (var propertyValue = GetProperty(TextEditor.Property.InputFilter))
using (var map = new PropertyMap())
{
propertyValue.Get(map);
inputFilter = TextMapHelper.GetInputFilterStruct(map);
}
return inputFilter;
}
///
/// Set Strikethrough to TextEditor.
///
/// The Strikethrough
///
/// SetStrikethrough specifies the strikethrough of the text through .
///
///
/// The following example demonstrates how to use the SetStrikethrough method.
///
/// var strikethrough = new Tizen.NUI.Text.Strikethrough();
/// strikethrough.Enable = true;
/// strikethrough.Color = new Color("#3498DB");
/// strikethrough.Height = 2.0f;
/// editor.SetStrikethrough(strikethrough);
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public void SetStrikethrough(Strikethrough strikethrough)
{
using (var map = TextMapHelper.GetStrikethroughMap(strikethrough))
using (var propertyValue = new PropertyValue(map))
{
SetProperty(TextEditor.Property.Strikethrough, propertyValue);
}
}
///
/// Get Strikethrough from TextEditor.
///
/// The Strikethrough
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public Strikethrough GetStrikethrough()
{
Strikethrough strikethrough;
using (var propertyValue = GetProperty(TextEditor.Property.Strikethrough))
using (var map = new PropertyMap())
{
propertyValue.Get(map);
strikethrough = TextMapHelper.GetStrikethroughStruct(map);
}
return strikethrough;
}
///
/// 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
[System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1721: Property names should not match get methods")]
public Tizen.NUI.PropertyMap Placeholder
{
get
{
PropertyMap map = (PropertyMap)GetValue(PlaceholderProperty);
string defalutText = "";
if (TextMapHelper.IsValue(map, 0))
map.Add("text", TextMapHelper.GetStringFromMap(map, 0, defalutText));
if (TextMapHelper.IsValue(map, 1))
map.Add("textFocused", TextMapHelper.GetStringFromMap(map, 1, defalutText));
if (TextMapHelper.IsValue(map, 2))
{
using (var color = TextMapHelper.GetColorFromMap(map, 2))
{
map.Add("color", color);
}
}
if (TextMapHelper.IsValue(map, 3))
map.Add("fontFamily", TextMapHelper.GetStringFromMap(map, 3, defalutText));
if (TextMapHelper.IsValue(map, 4))
{
using (var properyValue = map.Find(4))
using (var fontStyle = new PropertyMap())
{
properyValue.Get(fontStyle);
using (var fontStyleValue = new PropertyValue(fontStyle))
{
map.Add("fontStyle", fontStyleValue);
}
}
}
if (TextMapHelper.IsValue(map, 5))
map.Add("pointSize", TextMapHelper.GetNullableFloatFromMap(map, 5));
if (TextMapHelper.IsValue(map, 6))
map.Add("pixelSize", TextMapHelper.GetNullableFloatFromMap(map, 6));
if (TextMapHelper.IsValue(map, 7))
map.Add("ellipsis", TextMapHelper.GetBoolFromMap(map, 7, false));
return map;
}
set
{
SetValue(PlaceholderProperty, value);
NotifyPropertyChanged();
}
}
///
/// Set Placeholder to TextEditor.
///
/// The Placeholder
///
/// SetPlaceholder specifies the attributes of the placeholder property through .
///
///
/// The following example demonstrates how to use the SetPlaceholder method.
///
/// var placeholder = new Tizen.NUI.Text.Placeholder();
/// placeholder.Text = "placeholder text";
/// placeholder.TextFocused = "placeholder textFocused";
/// placeholder.Color = new Color("#45B39D");
/// placeholder.FontFamily = "BreezeSans";
/// placeholder.FontStyle = new Tizen.NUI.Text.FontStyle()
/// {
/// Width = FontWidthType.Expanded,
/// Weight = FontWeightType.ExtraLight,
/// Slant = FontSlantType.Italic,
/// };
/// placeholder.PointSize = 25.0f;
/// //placeholder.PixelSize = 50.0f;
/// placeholder.Ellipsis = true;
/// editor.SetPlaceholder(placeholder);
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public void SetPlaceholder(Placeholder placeholder)
{
using (var placeholderMap = TextMapHelper.GetPlaceholderMap(placeholder))
{
SetValue(PlaceholderProperty, placeholderMap);
}
}
///
/// Get Placeholder from TextEditor.
///
/// The Placeholder
///
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public Placeholder GetPlaceholder()
{
Placeholder placeholder;
using (var placeholderMap = (PropertyMap)GetValue(PlaceholderProperty))
{
placeholder = TextMapHelper.GetPlaceholderStruct(placeholderMap);
}
return placeholder;
}
///
/// The Ellipsis property.
/// Enable or disable the ellipsis.
///
/// 9
public bool Ellipsis
{
get
{
return (bool)GetValue(EllipsisProperty);
}
set
{
SetValue(EllipsisProperty, value);
NotifyPropertyChanged();
}
}
///
/// The ellipsis position of the text.
/// Specifies which portion of the text should be replaced with an ellipsis when the text size exceeds the layout size.
///
/// 9
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.
///
/// 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 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.
/// The maximum number of characters that can be inserted.
///
/// 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 int MaxLength
{
get
{
return (int)GetValue(MaxLengthProperty);
}
set
{
SetValue(MaxLengthProperty, value);
NotifyPropertyChanged();
}
}
///
/// The FontSizeScale property.
/// The default value is 1.0.
/// The given font size scale value is used for multiplying the specified font size before querying fonts.
/// 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 EnableFontSizeScale property.
/// Whether the font size scale is enabled. (The default value is true)
///
[EditorBrowsable(EditorBrowsableState.Never)]
public bool EnableFontSizeScale
{
get
{
return (bool)GetValue(EnableFontSizeScaleProperty);
}
set
{
SetValue(EnableFontSizeScaleProperty, value);
NotifyPropertyChanged();
}
}
///
/// The InputMethodSettings property.
/// The settings to relating to the System's Input Method, Key and Value.
///
///
/// is a class encapsulating the input method map. 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.
///
/// 9
public void SelectWholeText()
{
Interop.TextEditor.SelectWholeText(SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
///
/// Select text from start to end index.
/// The index is valid when 0 or positive.
///
/// The start index for selection.
/// The end index for selection.
///
/// If the end index exceeds the maximum value, it is set to the length of the text.
///
/// 9
public void SelectText(int start, int end)
{
if (start < 0)
throw new global::System.ArgumentOutOfRangeException(nameof(start), "Value is less than zero");
if (end < 0)
throw new global::System.ArgumentOutOfRangeException(nameof(end), "Value is less than zero");
Interop.TextEditor.SelectText(SwigCPtr, (uint)start, (uint)end);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
///
/// Clear selection of the text.
/// Valid when selection is activate.
///
/// 9
public void SelectNone()
{
_ = Interop.TextEditor.SelectNone(SwigCPtr);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
///
/// The Enable grab handle property.
/// Enables the grab handles for text selection.
/// The default value is true, which means the grab handles are enabled by default.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public bool EnableGrabHandle
{
get
{
return (bool)GetValue(EnableGrabHandleProperty);
}
set
{
SetValue(EnableGrabHandleProperty, value);
NotifyPropertyChanged();
}
}
///
/// The Enable grab handle popup property.
/// Enables the grab handle popup for text selection.
/// The default value is true, which means the grab handle popup is enabled by default.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public bool EnableGrabHandlePopup
{
get
{
return (bool)GetValue(EnableGrabHandlePopupProperty);
}
set
{
SetValue(EnableGrabHandlePopupProperty, value);
NotifyPropertyChanged();
}
}
///
/// Minimum line size to be used.
/// The height of the line in points.
/// If the font size is larger than the line size, it works with the font size.
///
[EditorBrowsable(EditorBrowsableState.Never)]
public float MinLineSize
{
get
{
return (float)GetValue(MinLineSizeProperty);
}
set
{
SetValue(MinLineSizeProperty, value);
NotifyPropertyChanged();
}
}
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;
}
///
/// The spaces between characters in Pixels.
///
/// A positive value will make the characters far apart (expanded) and a negative value will bring them closer (condensed).
/// The default value is 0.f which does nothing.
///
///
[EditorBrowsable(EditorBrowsableState.Never)]
public float CharacterSpacing
{
get
{
return (float)GetValue(CharacterSpacingProperty);
}
set
{
SetValue(CharacterSpacingProperty, value);
NotifyPropertyChanged();
}
}
///
/// 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);
}
if (textEditorSelectionStartedCallbackDelegate != null)
{
this.SelectionStartedSignal().Disconnect(textEditorSelectionStartedCallbackDelegate);
}
if (textEditorSelectionClearedCallbackDelegate != null)
{
this.SelectionClearedSignal().Disconnect(textEditorSelectionClearedCallbackDelegate);
}
if (textEditorCursorPositionChangedCallbackDelegate != null)
{
this.CursorPositionChangedSignal().Disconnect(textEditorCursorPositionChangedCallbackDelegate);
}
if (textEditorSelectionChangedCallbackDelegate != null)
{
this.SelectionChangedSignal().Disconnect(textEditorSelectionChangedCallbackDelegate);
}
}
TextChanged -= TextEditorTextChanged;
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);
}
internal override LayoutItem CreateDefaultLayout()
{
return new TextEditorLayout();
}
internal void SetTextWithoutTextChanged(string text)
{
invokeTextChanged = false;
Tizen.NUI.Object.SetProperty((System.Runtime.InteropServices.HandleRef)SwigCPtr, TextEditor.Property.TEXT, new Tizen.NUI.PropertyValue(text));
invokeTextChanged = true;
}
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;
}
}
}
private void TextEditorTextChanged(object sender, TextChangedEventArgs e)
{
if (!isSettingTextInCSharp)
{
EnforceNotifyBindedInstance(TextProperty);
}
}
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 VerticalAlignment = Interop.TextEditor.VerticalAlignmentGet();
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 RelativeLineHeight = Interop.TextEditor.RelativeLineHeightGet();
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 EnableFontSizeScale = Interop.TextEditor.EnableFontSizeScaleGet();
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 static readonly int Strikethrough = Interop.TextEditor.StrikethroughGet();
internal static readonly int CharacterSpacing = Interop.TextEditor.CharacterSpacingGet();
}
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);
}
private class TextEditorLayout : LayoutItem
{
protected override void OnMeasure(MeasureSpecification widthMeasureSpec, MeasureSpecification heightMeasureSpec)
{
// Padding will be automatically applied by DALi TextEditor.
var totalWidth = widthMeasureSpec.Size.AsDecimal();
var totalHeight = heightMeasureSpec.Size.AsDecimal();
var minSize = Owner.MinimumSize;
var maxSize = Owner.MaximumSize;
var naturalSize = Owner.GetNaturalSize();
if (((TextEditor)Owner).Text.Length == 0)
{
// Calculate height of TextEditor by setting Text with " ".
// By calling SetTextWithoutTextChanged, TextChanged callback is not called for this.
((TextEditor)Owner).SetTextWithoutTextChanged(" ");
// Store original WidthSpecification to restore it after setting ResizePolicy.
var widthSpecification = Owner.WidthSpecification;
// In DALi's Size logic, if Width or Height is set to be 0, then
// ResizePolicy is not changed to Fixed.
// This causes Size changes after NUI Layout's OnMeasure is finished.
// e.g. TextEditor's Width fills to its parent although Text is null and
// WidthSpecification is WrapContent.
// To prevent the Size changes, WidthResizePolicy is set to be Fixed
// in advance if Text is null.
Owner.WidthResizePolicy = ResizePolicyType.Fixed;
// Restore WidthSpecification because ResizePolicy changes WidthSpecification.
Owner.WidthSpecification = widthSpecification;
naturalSize = Owner.GetNaturalSize();
// Restore TextEditor's Text after calculating height of TextEditor.
// By calling SetTextWithoutTextChanged, TextChanged callback is not called for this.
((TextEditor)Owner).SetTextWithoutTextChanged("");
}
if (widthMeasureSpec.Mode != MeasureSpecification.ModeType.Exactly)
{
totalWidth = Math.Min(Math.Max(naturalSize.Width, minSize.Width), maxSize.Width);
}
if (heightMeasureSpec.Mode != MeasureSpecification.ModeType.Exactly)
{
totalHeight = Math.Min(Math.Max(naturalSize.Height, minSize.Height), maxSize.Height);
}
widthMeasureSpec = new MeasureSpecification(new LayoutLength(totalWidth), MeasureSpecification.ModeType.Exactly);
heightMeasureSpec = new MeasureSpecification(new LayoutLength(totalHeight), MeasureSpecification.ModeType.Exactly);
MeasuredSize.StateType childWidthState = MeasuredSize.StateType.MeasuredSizeOK;
MeasuredSize.StateType childHeightState = MeasuredSize.StateType.MeasuredSizeOK;
SetMeasuredDimensions(ResolveSizeAndState(new LayoutLength(totalWidth), widthMeasureSpec, childWidthState),
ResolveSizeAndState(new LayoutLength(totalHeight), heightMeasureSpec, childHeightState));
}
}
}
}