| 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 | - Sizing doesn't restore the scroll position correctly (related |
| 14 | to the use of buffer layout optimization and OnIdle full layout.) |
| 15 | |
| 16 | |
| 17 | IMPROVEMENTS: |
| 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 | |
| 54 | API 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 | |
| 73 | FEATURES: |
| 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 | |
| 119 | DEMO: |
| 120 | ===== |
| 121 | |
| 122 | - Drop-down lists for style, face, font size. |
| 123 | - Rework formatting icons. |
| 124 | |