Concepts
This project was started to create component/editor supporting various features which was not available in other libraries or was not available under similar license.
While some of the concepts are partially implemented, majority of them is planned for future development.
Highly Configurable Component
Component should be very flexible to support wide range of use-cases. This should include:
- Many settable options and switchable profiles (theme, decorations)
- Customizable painter - Support for colorization / highlighting
- Support for huge files
- Both vertical and horizontal scrolling
Example of code colorization:
Differential Memory Handling
Easiest approach to editing files is to create copy of the whole file in memory/data drive, but that can take a long time for big files. Alternative approach is to keep list of changes only.
- Quickly open even big files - load only displayed part of the file
- Represent opened file as blocks/pages from files or memory
- Defragment blocks when sequence is too complex
- UNDO/REDO has to support this too
- Lock files to prevent loss of data (when possible)
- Visualize performed changes/modified areas
Modified and inserted code can be colorized and show in side ruler:
Visualization
There are many options how can be binary data visualized. Multiple modes could be supported for more convenient use and for specific use-cases.
- Traditional mode with hexadecimal codes and textual preview
- Codes can be spaced by groups
- Binary variant - can be also decimal or octal
- Binary variant can be even shown as black/white checkboxes
- Alternatively codes can be stacked
- Codes and preview can be interleaved
- More readable could be to use different fonts
Multiline Mode
Support for text files / EOL (end of line) characters.
This should also allow to support comparision with separated lines for inserted and deleted sections.
Content Analysis
To perform analysis of the content of the file, basic values conversion as well as traditional decompilers should be available.
There should be also capability to show data structures defined by mappings. Intention is to use XBUP protocol and its capabilities to define data structures.