Files
GacUI/TODO.md
T
2018-09-07 00:24:06 -07:00

3.4 KiB

TODO

https://zhuanlan.zhihu.com/p/39369370

GacUI 1.0

  • Document clipboard data should have version
  • Word doesn't recognize embedded GIF represented by data URL in HTML clipboard format.
  • Add and query services from controls
  • Demo: QueryService
  • Update Release
  • Render focus
  • BlackSkin window template handle window properties (border, buttons, ...)
  • SM_CXPADDEDBORDER + SM_CXFRAME == 8, don't hardcode this in DarkSkin.xml. This is for the necessary border when the window is maximized.
  • Key accessibility for controls
    • Check List
      • Button: ENTER / SPACE
      • ComboBox: Keyboard enter focus to select item workflow
      • Ribbon / Tab: Jump between tabs
      • List: Item selection / Traversing / Scrolling (h/v)
      • TextBox / DocumentBox: Scrolling (h/v)
      • DatePicker / DateComboBox: Selecting
      • Scroll / Tracker: AutoFocus property (default to true, false in scroll view) / Keyboard operations
      • DataGrid editing
      • Jump between controls
      • ComboBox focus rendering
      • TabHeader focus rendering
      • Scroll focus rendering
  • High DPI for Direct2D (GDI will blur)
  • Window Icon
  • Update Release
  • New default control templates with animation, written in XML generated C++ code.
  • A window can be called to update all its controls' and components' template
  • Tutorials use the new default control templates
  • Update Release

GacUI 2.0

Vlpp

  • Regex supports UTF-16 (instead of UCS-2) on MSVC.
    • Always convert to UTF-32 internally (vl::regex::Utf32Reader).
  • Redesign vl::parsing.
    • No need to specify ambiguity
    • Will print all ambiguous cases and marked AST node
    • ToString with hints and custom options
    • Print diff when updating AST (for IDE)
    • All existing features and backward compatible interface design
  • Binary ITypeDescriptor provider format.
  • API to import and export fake types (ITypeDescriptor that cannot be executed)

Workflow

  • Don't create IValueList if apply {1 2 3} on List<int> argument.
  • Support <category>name identifier, make generated code re-parsable.
  • WorkflowCompiler.exe (x32/x64)
    • Enable external symbols
    • Compile
    • Binary Output (full assembly or types only)
    • C++ Codegen (x32/x64)

(probably not do)

  • Macro
  • Context-Grammar Sensitive Macro
  • Virtual function
  • Class implements interface

GacUI

Before 1.0 (Optional)

  • <eval Ref="Name"/> and <eval Eval="expression"/> tags
  • Enable Workflow script template for IGuiInstanceLoader written in text
  • INativeImage::SaveToStream handle correctly for git format. It is possible that LoadFromStream need to process diff between git raw frames.

Graphics

  • MetaImageElement and MetaImage data structure
  • Remove PolygonElement
  • Default non-text element renderer using MetaImageElement
  • Replacing GDI and D2D non-text element renderers
  • Meta3DElement and Meta3D data structure
  • Default Meta3DElement renderer using MetaImageElement with a surface sorting based algorithm

Controls

  • Chart
  • Dock Container

Binders

  • Web assembly
  • XML Metadata output for codegen written by users

GacGen.exe

  • Enable linking to external symbols
  • In the final pass, only workflow scripts are printed
    • Use WorkflowCompiler.exe to do codegen externally

GacStudio.exe

DocTools

  • Rewrite in C++