1
2wxRichTextCtrl To-Do List
3=========================
4
5
6BUGS:
7=====
8
9- Setting selection with mouse sometimes causes negative selection
10  lengths. See wxRichTextCtrl::ExtendSelection.
11- Word forward can miss first word on line.
12- Doesn't correctly undo deletion of bulleted paragraphs.
13- Sizing doesn't restore the scroll position correctly (related
14  to the use of buffer layout optimization and OnIdle full layout.)
15
16
17IMPROVEMENTS:
18=============
19
20- Add bakefiles, choose location for further development - wxCode or wxWidgets.
21- Document.
22- Rework scrolling code so (a) can scroll one line at a time (uneven
23  scroll increments and (b) can derive from wxTextCtrl if this is desirable.
24- Implement auto-scroll when selecting.
25- Implement auto-wrap option (currently it's always on) with option for
26  horizontal scrollbars.
27- Implement overwrite mode.
28- Collapse multiple keystrokes into single undo command.
29- Unicode adaptation (e.g. in OnChar).
30- Implement "Paste Special".
31- Pass wxRichTextDrawContext to Draw and Layout with data such as
32  selection colour.
33- Have virtual functions for customisation, e.g. CreateTextObject, CreateImageObject,
34  CreateParagraph object. Should be a separate factory object that can be
35  plugged in.
36- Implement more event generation.
37- Implement roman numerals in bullet points.
38- Make as wxTextCtrl-compatible as possible.
39- Allow use as single-line edit control, so potentially the class can
40  replace both wxUniversal wxTextCtrl implementations.
41- Adjust behaviour on each platform to conform to native standards.
42  This might be a run-time option.
43- Custom attributes (simply add an integer field to wxRichTextAttr and
44  maybe wxTextAttrEx).
45- Improve image support: margins, resizing, storage of image as native format
46  data (e.g. JPEG) so no lossiness.
47- Ensure read-only mode works.
48- Don't store whole paragraph in Undo stack if just changing the paragraph's style.
49- Use binary chop to find character position for (x,y).
50- Allow specification of word separators, and whether hyphenation will be done
51  (language-dependent).
52
53
54API ISSUES:
55===========
56
57- Consider whether to merge wxTextAttrEx with wxTextAttr.
58- Implementation-independent API for traversing rich text controls, e.g. getting spans
59  of text, retrieving images, etc.
60- FindString: search for a substring within a range, returning a range. Will make it
61  easy to add styles to text you just added.
62- WriteString, WriteImage should really return a range. However, can query insertion point.
63- Bullets: suggest we are able to specify symbols in a specific named font
64  (maybe keep mapping from name to actual symbol font in style manager).
65  We wouldn't want to store a wxFont with each paragraph, just for the symbol,
66  since this will be inefficient. If no font is specified, use the font
67  for this paragraph.
68  Also allow bitmaps to be specified for bullets.
69- For adding floating text boxes and images, suggest e.g.
70  bool wxRichTextBuffer::AddFloatingImage(long paragraphPosition, const wxImage& image);
71
72
73FEATURES:
74=========
75
76- XML I/O (a prototype implementation done, maybe the syntax/verbosity could be improved)
77- HTML (I)/O and clipboard support
78- RTF (I)/O and clipboard support
79- OpenOffice.org I/O
80- C++ output, i.e. generate set of buffer commands from a buffer
81  so that the data can be included in an app, possibly with translation.
82- Line breaks. How will we implement these? Suggest special non-ASCII code.
83- Hard (non-breaking) spaces. Insert special code in text string. Shift-Return.
84- Borders on paragraphs, with special attention to how they join up.
85- Bitmap bullets.
86- Tab stops, with ruler display.
87- Rules (lines).
88- Hyperlinks.
89- Ready-made find and replace implementation
90- Ready-made toolbars, standard identifiers.
91- Floating text boxes and images, with appropriate wrapping: have a separate list of
92  these, and when formatting each line, simply restrict the available space accordingly.
93  Boxes can optionally be tied to a paragraph so they move relative to it (may need to introduce
94  paragraph identifiers for that).
95- Set of convenience controls and dialogs including wxRichTextStyleListBox,
96  wxRichTextParagraphFormattingDialog, wxRichTextStyleEditorDialog,
97  wxRichTextBulletDialog, wxRichTextInsertSymbolDialog, wxRichTextTabsDialog
98  (also displayed as a page on wxRichTextParagraphFormattingDialog),
99- Template manager.
100
101- ADVANCED: Implement tables. This is a kind of paragraph that knows how to lay
102            out a 2D grid of paragraph layout boxes. A few assumptions
103            about the hierarchy will need correcting but in general, paragraph
104            layout is self-contained and should just work within table cells.
105- ADVANCED: Implement printing, including headers and footers.
106- ADVANCED: Implement page view mode where pagination is shown while editing.
107- ADVANCED: Field codes that can be hidden/shown: for example, cross-references,
108            HTML links, page number, heading number, etc.
109- ADVANCED: Implement justification, by distributing space over the line (draw one
110            word at a time but store in the usual way).
111- ADVANCED: Implement headings.
112- ADVANCED: Zoom.
113- ADVANCED: Versioning and markup facility (for e.g. collaboration).
114- ADVANCED: Columns.
115- ADVANCED: Table of contents, index.
116- ADVANCED: Autocorrect.
117
118
119DEMO:
120=====
121
122- Drop-down lists for style, face, font size.
123- Rework formatting icons.
124
125