todo.txt 5.3 KB

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