2020-04-07 04:53:18 -07:00
|
|
|
class @beta Efl.Ui.Internal.Text.Interactive extends Efl.Canvas.Textblock implements Efl.Text_Interactive, Efl.Input_Text.Entity, Efl.File
|
2016-06-08 03:45:40 -07:00
|
|
|
{
|
2018-01-04 04:16:23 -08:00
|
|
|
[[An internal object in charge of the interactive aspect of the text widget.
|
2016-06-08 03:45:40 -07:00
|
|
|
|
2018-01-04 04:16:23 -08:00
|
|
|
This object is in charge of processing inputs, moving the text caret and so on.
|
2016-06-08 03:45:40 -07:00
|
|
|
]]
|
|
|
|
implements {
|
2016-08-10 07:23:04 -07:00
|
|
|
Efl.Object.constructor;
|
2020-01-23 00:54:11 -08:00
|
|
|
Efl.Object.destructor;
|
2016-08-10 07:23:04 -07:00
|
|
|
Efl.Object.finalize;
|
Efl.Text.Cursor
Summary:
Implementation of new cursor text object.
This Patch Contains :
1- Remove Efl.Text.Cursor & Efl.Text_Markup_Interactive interfaces and replace them with one Class Efl.Text.Cursor
=> there are some modifications on cursor methods
2- Update all related classes to use Efl.Text.Cursor object instead of the old interfaces
3- If class uses Efl.Text_Cursor_Cursor (handle), mainly annotation it will stay as it is until we update other annotations into attribute_factory
4- Add main cursor property into efl.text.interactive
5- Add cursor_new method in efl.ui.text (I think we may move it into efl.text.interactive interface)
There still some parts that need discussion: especially cursor movement functionality, I prefer to move function with Enum, instead of special function for each movement.
```
enum @beta Efl.Text.Cursor_Move_Type
{
[[Text cursor movement types]]
char_next, [[Advances to the next character]]
char_prev, [[Advances to the previous character]]
cluster_next, [[Advances to the next grapheme cluster]]
cluster_prev, [[Advances to the previous grapheme cluster]]
paragraph_start, [[Advances to the first character in this paragraph]]
paragraph_end, [[Advances to the last character in this paragraph]]
word_start, [[Advance to current word start]]
word_end, [[Advance to current word end]]
line_start, [[Advance to current line first character]]
line_end, [[Advance to current line last character]]
paragraph_first, [[Advance to current paragraph first character]]
paragraph_last, [[Advance to current paragraph last character]]
paragraph_next, [[Advances to the start of the next text node]]
paragraph_prev [[Advances to the end of the previous text node]]
}
move {
[[Move the cursor]]
params {
@in type: Efl.Text.Cursor_Move_Type; [[The type of movement]]
}
return: bool; [[True if actually moved]]
}
```
or old way:
```
char_next {
[[Advances to the next character]]
// FIXME: Make the number of characters we moved by? Useful for all the other functions
return: bool; [[True if actually moved]]
}
char_prev {
[[Advances to the previous character]]
return: bool; [[True if actually moved]]
}
char_delete {
[[Deletes a single character from position pointed by given cursor.]]
}
cluster_next {
[[Advances to the next grapheme cluster]]
return: bool; [[True if actually moved]]
}
cluster_prev {
[[Advances to the previous grapheme cluster]]
return: bool; [[True if actually moved]]
}
// FIXME: paragraph_end is inconsistent with word_end. The one goes to the last character and the other after the last character.
paragraph_start {
[[Advances to the first character in this paragraph]]
return: bool; [[True if actually moved]]
}
paragraph_end {
[[Advances to the last character in this paragraph]]
return: bool; [[True if actually moved]]
}
word_start {
[[Advance to current word start]]
return: bool; [[True if actually moved]]
}
word_end {
[[Advance to current word end]]
return: bool; [[True if actually moved]]
}
line_start {
[[Advance to current line first character]]
return: bool; [[True if actually moved]]
}
line_end {
[[Advance to current line last character]]
return: bool; [[True if actually moved]]
}
paragraph_first {
[[Advance to current paragraph first character]]
return: bool; [[True if actually moved]]
}
paragraph_last {
[[Advance to current paragraph last character]]
return: bool; [[True if actually moved]]
}
paragraph_next {
[[Advances to the start of the next text node]]
return: bool; [[True if actually moved]]
}
paragraph_prev {
[[Advances to the end of the previous text node]]
return: bool; [[True if actually moved]]
}
```
Reviewers: woohyun, tasn, segfaultxavi
Reviewed By: woohyun
Subscribers: a.srour, bu5hm4n, segfaultxavi, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10542
2019-11-22 00:35:54 -08:00
|
|
|
Efl.Text_Interactive.main_cursor { get; }
|
2018-04-06 04:30:40 -07:00
|
|
|
Efl.Text_Interactive.selection_allowed { get; set; }
|
2020-01-21 23:33:58 -08:00
|
|
|
Efl.Text_Interactive.selection_cursors { get; set; }
|
2018-04-06 04:30:40 -07:00
|
|
|
Efl.Text_Interactive.editable { get; set; }
|
Efl.Ui.Text : all related interfaces
Summary:
Change summary:
Removed :
- efl_ui_text_selectable.eo and add it functionality into efl_text_interactive.eo
- efl_ui_text_editable.eo because it is same as efl_ui_text.eo (just set one property by default)
Modifications:
- Move all Text Input enums and functionality from efl_ui_text class into its own interface, this interface will be implemented at efl_ui_internal_text_interactive class.
- Rename selection_allowed property to selectable (same as other "editable" property) in efl_text_interactive
- Add select_all function into efl_text_interactive interface
- Add have_selection property into efl_text_interactive interface
- Move user_change , selection_start/change/clear and undo/redo events into efl_text_interactive interface.
- Move methods and events of copy/paste/cut into efl_ui_text
- Fix password-related functionality
- Remove context menu clear and add_item methods. (these should be added later with better design)
- Remove Validation event from EFL_UI_TEXT. (these should be added later with better design)
Reviewers: woohyun, tasn, segfaultxavi, zmike, bu5hm4n
Subscribers: stefan_schmidt, a.srour, q66, zmike, segfaultxavi, cedric
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D10711
2019-12-08 17:58:39 -08:00
|
|
|
Efl.Text_Interactive.all_unselect;
|
|
|
|
Efl.Text_Interactive.all_select;
|
|
|
|
Efl.Text_Interactive.have_selection {get; }
|
|
|
|
Efl.Text.text { set; }
|
|
|
|
Efl.Text_Markup.markup { set; }
|
2020-04-07 04:53:18 -07:00
|
|
|
Efl.Input_Text.Entity.input_panel_show_on_demand { get; set; }
|
|
|
|
Efl.Input_Text.Entity.input_panel_language { get; set; }
|
|
|
|
Efl.Input_Text.Entity.input_panel_layout_variation { get; set; }
|
|
|
|
Efl.Input_Text.Entity.autocapitalization { get; set; }
|
|
|
|
Efl.Input_Text.Entity.input_panel_return_key_state { get; set; }
|
|
|
|
Efl.Input_Text.Entity.predictable { get; set; }
|
|
|
|
Efl.Input_Text.Entity.input_content_type { get; set; }
|
|
|
|
Efl.Input_Text.Entity.input_panel_layout { get; set; }
|
|
|
|
Efl.Input_Text.Entity.input_panel_return_key_type { get; set; }
|
|
|
|
Efl.Input_Text.Entity.input_panel_autoshow { get; set; }
|
|
|
|
Efl.Input_Text.Entity.input_panel_show;
|
|
|
|
Efl.Input_Text.Entity.input_panel_hide;
|
|
|
|
Efl.Input_Text.Entity.input_panel_imdata { get; set; }
|
2020-01-23 00:54:11 -08:00
|
|
|
//FIXME Efl.File should be implemented later at Efl.Ui.TextBox level
|
|
|
|
Efl.File.file { set; }
|
|
|
|
Efl.File.load;
|
|
|
|
Efl.File.unload;
|
2016-06-08 03:45:40 -07:00
|
|
|
}
|
|
|
|
}
|