Added wxRichTextCtrl
[wxWidgets.git] / samples / richtext / todo.txt
1
2 wxRichTextCtrl To-Do List
3 =========================
4
5
6 BUGS:
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
14
15 IMPROVEMENTS:
16 =============
17
18 - Add bakefiles, choose location for further development - wxCode or wxWidgets.
19 - Document.
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
30   selection colour.
31 - Have virtual functions for customisation, e.g. CreateTextObject, CreateImageObject,
32   CreateParagraph object. Should be a separate factory object that can be
33   plugged in.
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
42   maybe wxTextAttrEx).
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
49   (language-dependent).
50
51
52 API ISSUES:
53 ===========
54
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
65   for this paragraph.
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);
69
70
71 FEATURES:
72 =========
73
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
77 - OpenOffice.org I/O
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.
83 - Bitmap bullets.
84 - Tab stops, with ruler display.
85 - Rules (lines).
86 - Hyperlinks.
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),
97 - Template manager.
98
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.
110 - ADVANCED: Zoom.
111 - ADVANCED: Versioning and markup facility (for e.g. collaboration).
112 - ADVANCED: Columns.
113 - ADVANCED: Table of contents, index.
114 - ADVANCED: Autocorrect.
115
116
117 DEMO:
118 =====
119
120 - Drop-down lists for style, face, font size.
121 - Rework formatting icons.
122