[NUI] Support Public APIs - CopyText, CutText & PasteText 61/262361/8
authorSara Samara <sara.samara@samsung.com>
Mon, 9 Aug 2021 05:50:32 +0000 (08:50 +0300)
committerSara Samara <sara.samara@samsung.com>
Mon, 23 Aug 2021 13:20:09 +0000 (13:20 +0000)
string CopyText(TextEditor textEditor) or string CopyText(TextField textField)

This function will copy the previously selected string into the clipboard and will return it.

string CutText(TextEditor textEditor) or string CutText(TextField textField)

This function will cut the previously selected string into the clipboard and will return it.

void PasteText(TextEditor textEditor) or void PasteText(TextField textField

This function will paste the most recent string in the clipboard stack into the text control.

corresponding dali-toolkit patch:
https://review.tizen.org/gerrit/c/platform/core/uifw/dali-toolkit/+/262080

Change-Id: I668510d999f2e4a36b50ffc57d28912cba288220

dali-csharp-binder/src/text-editor-wrap.cpp
dali-csharp-binder/src/text-field-wrap.cpp

index 8741755..e2ee1ca 100755 (executable)
 #include <dali-toolkit/public-api/controls/text-controls/text-editor.h>
 #include <dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h>
 
+/* Callback for returning strings to C# without leaking memory */
+typedef char * (SWIGSTDCALL* SWIG_CSharpStringHelperCallback)(const char *);
+extern SWIG_CSharpStringHelperCallback SWIG_csharp_string_callback;
+
 SWIGINTERN bool Dali_Signal_Sl_void_Sp_Dali_Toolkit_TextEditor_SP__Sg__Empty(Dali::Signal< void (Dali::Toolkit::TextEditor) > const *self){
   return self->Empty();
 }
@@ -1265,6 +1269,52 @@ SWIGEXPORT void SWIGSTDCALL CSharp_Dali_TextEditor_SelectNone(void * jarg1) {
   }
 }
 
+SWIGEXPORT char* SWIGSTDCALL CSharp_Dali_TextEditor_CopyText(void *pTextEditor)
+{
+  char *csCopiedText;
+  Dali::Toolkit::TextEditor *textEditor = (Dali::Toolkit::TextEditor *)0;
+  std::string copiedText;
+
+  textEditor = (Dali::Toolkit::TextEditor *)pTextEditor;
+  {
+    try {
+      copiedText = Dali::Toolkit::DevelTextEditor::CopyText(*textEditor);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+  csCopiedText = SWIG_csharp_string_callback((&copiedText)->c_str());
+  return csCopiedText;
+}
+
+SWIGEXPORT char* SWIGSTDCALL CSharp_Dali_TextEditor_CutText(void *pTextEditor)
+{
+  char *csCutText;
+  Dali::Toolkit::TextEditor *textEditor = (Dali::Toolkit::TextEditor *)0;
+  std::string cutText;
+
+  textEditor = (Dali::Toolkit::TextEditor *)pTextEditor;
+  {
+    try {
+      cutText = Dali::Toolkit::DevelTextEditor::CutText(*textEditor);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+  csCutText = SWIG_csharp_string_callback((&cutText)->c_str());
+  return csCutText;
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_TextEditor_PasteText(void *pTextEditor)
+{
+  Dali::Toolkit::TextEditor *textEditor = (Dali::Toolkit::TextEditor *)0;
+
+  textEditor = (Dali::Toolkit::TextEditor *)pTextEditor;
+  {
+    try {
+      Dali::Toolkit::DevelTextEditor::PasteText(*textEditor);
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
 
 /*TextEditorSignal*/
 SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Dali_TextEditorSignal_Empty(void * jarg1) {
index 3778ec7..11e300e 100755 (executable)
 #include <dali-toolkit/public-api/controls/text-controls/text-field.h>
 #include <dali-toolkit/devel-api/controls/text-controls/text-field-devel.h>
 
+/* Callback for returning strings to C# without leaking memory */
+typedef char * (SWIGSTDCALL* SWIG_CSharpStringHelperCallback)(const char *);
+extern SWIG_CSharpStringHelperCallback SWIG_csharp_string_callback;
+
 SWIGINTERN bool Dali_Signal_Sl_void_Sp_Dali_Toolkit_TextField_SP__Sg__Empty(Dali::Signal< void (Dali::Toolkit::TextField) > const *self){
   return self->Empty();
 }
@@ -1225,6 +1229,52 @@ SWIGEXPORT void SWIGSTDCALL CSharp_Dali_TextField_SelectNone(void * jarg1) {
   }
 }
 
+SWIGEXPORT char* SWIGSTDCALL CSharp_Dali_TextField_CopyText(void *pTextField)
+{
+  char *csCopiedText;
+  Dali::Toolkit::TextField *textField = (Dali::Toolkit::TextField *)0;
+  std::string copiedText;
+
+  textField = (Dali::Toolkit::TextField *)pTextField;
+  {
+    try {
+      copiedText = Dali::Toolkit::DevelTextField::CopyText(*textField);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+  csCopiedText = SWIG_csharp_string_callback((&copiedText)->c_str());
+  return csCopiedText;
+}
+
+SWIGEXPORT char* SWIGSTDCALL CSharp_Dali_TextField_CutText(void *pTextField)
+{
+  char *csCutText;
+  Dali::Toolkit::TextField *textField = (Dali::Toolkit::TextField *)0;
+  std::string cutText;
+
+  textField = (Dali::Toolkit::TextField *)pTextField;
+  {
+    try {
+      cutText = Dali::Toolkit::DevelTextField::CutText(*textField);
+    }
+    CALL_CATCH_EXCEPTION(0);
+  }
+  csCutText = SWIG_csharp_string_callback((&cutText)->c_str());
+  return csCutText;
+}
+
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_TextField_PasteText(void *pTextField)
+{
+  Dali::Toolkit::TextField *textField = (Dali::Toolkit::TextField *)0;
+
+  textField = (Dali::Toolkit::TextField *)pTextField;
+  {
+    try {
+      Dali::Toolkit::DevelTextField::PasteText(*textField);
+    }
+    CALL_CATCH_EXCEPTION();
+  }
+}
 
 SWIGEXPORT unsigned int SWIGSTDCALL CSharp_Dali_TextFieldSignal_Empty(void * jarg1) {
   unsigned int jresult ;