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