125 lines
5.3 KiB
Plaintext
125 lines
5.3 KiB
Plaintext
|
|
||
|
wxRichTextCtrl To-Do List
|
||
|
=========================
|
||
|
|
||
|
|
||
|
BUGS:
|
||
|
=====
|
||
|
|
||
|
- Setting selection with mouse sometimes causes negative selection
|
||
|
lengths. See wxRichTextCtrl::ExtendSelection.
|
||
|
- Word forward can miss first word on line.
|
||
|
- Doesn't correctly undo deletion of bulleted paragraphs.
|
||
|
- Sizing doesn't restore the scroll position correctly (related
|
||
|
to the use of buffer layout optimization and OnIdle full layout.)
|
||
|
|
||
|
|
||
|
IMPROVEMENTS:
|
||
|
=============
|
||
|
|
||
|
- Add bakefiles, choose location for further development - wxCode or wxWidgets.
|
||
|
- Document.
|
||
|
- Rework scrolling code so (a) can scroll one line at a time (uneven
|
||
|
scroll increments and (b) can derive from wxTextCtrl if this is desirable.
|
||
|
- Implement auto-scroll when selecting.
|
||
|
- Implement auto-wrap option (currently it's always on) with option for
|
||
|
horizontal scrollbars.
|
||
|
- Implement overwrite mode.
|
||
|
- Collapse multiple keystrokes into single undo command.
|
||
|
- Unicode adaptation (e.g. in OnChar).
|
||
|
- Implement "Paste Special".
|
||
|
- Pass wxRichTextDrawContext to Draw and Layout with data such as
|
||
|
selection colour.
|
||
|
- Have virtual functions for customisation, e.g. CreateTextObject, CreateImageObject,
|
||
|
CreateParagraph object. Should be a separate factory object that can be
|
||
|
plugged in.
|
||
|
- Implement more event generation.
|
||
|
- Implement roman numerals in bullet points.
|
||
|
- Make as wxTextCtrl-compatible as possible.
|
||
|
- Allow use as single-line edit control, so potentially the class can
|
||
|
replace both wxUniversal wxTextCtrl implementations.
|
||
|
- Adjust behaviour on each platform to conform to native standards.
|
||
|
This might be a run-time option.
|
||
|
- Custom attributes (simply add an integer field to wxRichTextAttr and
|
||
|
maybe wxTextAttrEx).
|
||
|
- Improve image support: margins, resizing, storage of image as native format
|
||
|
data (e.g. JPEG) so no lossiness.
|
||
|
- Ensure read-only mode works.
|
||
|
- Don't store whole paragraph in Undo stack if just changing the paragraph's style.
|
||
|
- Use binary chop to find character position for (x,y).
|
||
|
- Allow specification of word separators, and whether hyphenation will be done
|
||
|
(language-dependent).
|
||
|
|
||
|
|
||
|
API ISSUES:
|
||
|
===========
|
||
|
|
||
|
- Consider whether to merge wxTextAttrEx with wxTextAttr.
|
||
|
- Implementation-independent API for traversing rich text controls, e.g. getting spans
|
||
|
of text, retrieving images, etc.
|
||
|
- FindString: search for a substring within a range, returning a range. Will make it
|
||
|
easy to add styles to text you just added.
|
||
|
- WriteString, WriteImage should really return a range. However, can query insertion point.
|
||
|
- Bullets: suggest we are able to specify symbols in a specific named font
|
||
|
(maybe keep mapping from name to actual symbol font in style manager).
|
||
|
We wouldn't want to store a wxFont with each paragraph, just for the symbol,
|
||
|
since this will be inefficient. If no font is specified, use the font
|
||
|
for this paragraph.
|
||
|
Also allow bitmaps to be specified for bullets.
|
||
|
- For adding floating text boxes and images, suggest e.g.
|
||
|
bool wxRichTextBuffer::AddFloatingImage(long paragraphPosition, const wxImage& image);
|
||
|
|
||
|
|
||
|
FEATURES:
|
||
|
=========
|
||
|
|
||
|
- XML I/O (a prototype implementation done, maybe the syntax/verbosity could be improved)
|
||
|
- HTML (I)/O and clipboard support
|
||
|
- RTF (I)/O and clipboard support
|
||
|
- OpenOffice.org I/O
|
||
|
- C++ output, i.e. generate set of buffer commands from a buffer
|
||
|
so that the data can be included in an app, possibly with translation.
|
||
|
- Line breaks. How will we implement these? Suggest special non-ASCII code.
|
||
|
- Hard (non-breaking) spaces. Insert special code in text string. Shift-Return.
|
||
|
- Borders on paragraphs, with special attention to how they join up.
|
||
|
- Bitmap bullets.
|
||
|
- Tab stops, with ruler display.
|
||
|
- Rules (lines).
|
||
|
- Hyperlinks.
|
||
|
- Ready-made find and replace implementation
|
||
|
- Ready-made toolbars, standard identifiers.
|
||
|
- Floating text boxes and images, with appropriate wrapping: have a separate list of
|
||
|
these, and when formatting each line, simply restrict the available space accordingly.
|
||
|
Boxes can optionally be tied to a paragraph so they move relative to it (may need to introduce
|
||
|
paragraph identifiers for that).
|
||
|
- Set of convenience controls and dialogs including wxRichTextStyleListBox,
|
||
|
wxRichTextParagraphFormattingDialog, wxRichTextStyleEditorDialog,
|
||
|
wxRichTextBulletDialog, wxRichTextInsertSymbolDialog, wxRichTextTabsDialog
|
||
|
(also displayed as a page on wxRichTextParagraphFormattingDialog),
|
||
|
- Template manager.
|
||
|
|
||
|
- ADVANCED: Implement tables. This is a kind of paragraph that knows how to lay
|
||
|
out a 2D grid of paragraph layout boxes. A few assumptions
|
||
|
about the hierarchy will need correcting but in general, paragraph
|
||
|
layout is self-contained and should just work within table cells.
|
||
|
- ADVANCED: Implement printing, including headers and footers.
|
||
|
- ADVANCED: Implement page view mode where pagination is shown while editing.
|
||
|
- ADVANCED: Field codes that can be hidden/shown: for example, cross-references,
|
||
|
HTML links, page number, heading number, etc.
|
||
|
- ADVANCED: Implement justification, by distributing space over the line (draw one
|
||
|
word at a time but store in the usual way).
|
||
|
- ADVANCED: Implement headings.
|
||
|
- ADVANCED: Zoom.
|
||
|
- ADVANCED: Versioning and markup facility (for e.g. collaboration).
|
||
|
- ADVANCED: Columns.
|
||
|
- ADVANCED: Table of contents, index.
|
||
|
- ADVANCED: Autocorrect.
|
||
|
|
||
|
|
||
|
DEMO:
|
||
|
=====
|
||
|
|
||
|
- Drop-down lists for style, face, font size.
|
||
|
- Rework formatting icons.
|
||
|
|