On Nov 14, 2012, at 9:36 PM, Denis Kudriashov wrote:

> Hello.
> 
> I look deep at TxText package where Igor and Camillo introduced new text 
> model. 

Excellent!

> 
> Text model based on sequence of span objects. There are now two kind of 
> spans: CharacterSpan and LineSeparator. Each span has reference to next and 
> previous spans. There is TxSelection object which contains cursor. So you can 
> insert new text at cursor, you can cut selection, replace selection with 
> another text. Such maniulation changes text model structure. It can create 
> new span objects. It can split current span at cursor position, It can remove 
> selected spans. Also you can move cursor up, down, left, right. Cursor always 
> know about current span and span position.

If this is not in the class comments can you add it?

> 
> I like design :). And I want use this package. And I have questions and 
> suggestions:
> 
> 1) Cursor is end of selection object. So now when you move cursor selection 
> changed, because start of selection stay same. Am I right? 
> I think cursor movement should always reset selection. It is what we see with 
> basic text editors. 
> But cursor now is just instance of TxPosition which implements simple 
> position protocol (move left, up...). It just change current span and span 
> position by movement. TxPosition knows nothing about TxSelection object.
> That's why I think Cursor class should be introduced here which alway reset 
> text selection by any move.
> And if you want to change selection bounds just get explicitly start or end 
> of selection and use position api.
> What do you think?
> 
> 2) Next question about changes notification of text model. First I want 
> Cursor and Selection objects are annnouncers. So I can implement 
> CursorPresenter and SelectionPresenter to show such objects and handle 
> changes. For example when CursorMovedAnnouncement happen I can move cursor 
> caret morph at appropriate position.
> Another idea is make span objects announcers. Maybe it is not good idea but I 
> want to subscribe at SpanAdded, SpanRemoved. SpanChanged, SpanSplitted. With 
> such events I can make very simple implementation of TextEditor as list of 
> SpanMorph's. Maybe it is not optimized solution but I think it is most simple 
> thing. So I want to try it. 
> 
> 3) What about auto wrap behaviour? 
> If you have auto wrap option at text editors you have line width restriction. 
> And you should spit real lines of text to visual lines which satisfed this 
> restriction. And text mode should know about such restriction because any 
> text insertion can require new visual lines creation.
> I think insertion single line text at span position should be executed by 
> special "restriction object". It should return new characters of span which 
> satisfied that restriction. And it should return new span object (or just 
> remains characters) which will present new visual lines. Then this "remains 
> characters" should be inserted to next span at 0 position.
> When wrap behavior not needed "restriction object" just inserts new text into 
> current characters at given position and returns result.
> If you agree about such logic please suggest good name for such "restriction 
> object" and instance variable where it will placed (at TxModel I think)
> 
> Ok, now what do you think about all this? 
> I want implement all my suggestions. But first I want listen your opinions.

Igor is traveling back from argentina today and camillo left yesterday.
> 
> Best regards,
> Denis


Reply via email to