git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35976 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			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.
 | |
| 
 |