ClexioPad

ClexioPad is an evolution of the old JunkPad program I had made earlier. While JunkPad was cool, it was not that useful as a program, and outside of the novelty factor of making my own program, it kind of sucked to use. ClexioPad v1 was essentially a rebuilt version of JunkPad 3, with the addition of the Scintilla code editor. For the first time, you could switch between the traditional RTF-like text editor, and the Scintilla code editor on the fly. Design of ClexioPad started in late 2014, after my proficiency for coding in Visual Basic had advanced over the course of the year, in my Software Development class in high school. JunkPad was used quite extensively, and my fellow classmates were hungry for more, for what I would do next. This came in the form of ClexioPad.

Version 1

ClexioPad came about after I was playing around with separating all editing controls into a “UserControl” object in the .NET framework, then adding them into a dynamic tab page layout. After realising the potential for how much more flexibility this approach gave, I set to work combining the previous RTF editor field of JunkPad 3 together with the later canned “JunkPad 4” program, which had used the ScintillaNET wrapper for the Scintilla code editor framework. Earlier versions of ClexioPad 1 used the original Microsoft RTF control, however it was finally replaced with the TX TextControl NET express drop-in replacement instead. This gave the RTF formats a second wind, and provided much more useful formatting tools, as well as a more streamlined editing interface. It however is seen as a suped up RTF editor, and not a fully fledged word processing program. With the introduction of Scintilla on the code-programming side, for the first time editing files that would previously either not open, or become corrupt after saving, were fully usable and editable. All of the benefits of Scintilla were also brought in, with the ability to have “lexer” support, which acted as a code highlighting and formatting tool. This also bought a line count for the first time, which also bought more uses for my classmates, and later myself for future development goals. Both environments had full printing support, as well as more refined file operations. Previous formats used by the RTF environment were also fully supported, as well as a new “ERTF” format, to help differentiate ClexioPad against other programs, this was largely in due to the non-standard table formatting and image support provided by the TX TextControl, which the regular RTF and DILD formats did not support.

Later versions of ClexioPad, which were very feature incomplete and as a result were unreleased, had a very early version of what would become the “CX Addon” system, with the ability to load in “Helper” objects. These interacted with the selected tab type, and were test objects ranging from chart creation, to inserting ASCII table art. Further experimentations of this led to the creation of the next and greatest version of ClexioPad, ClexioPad 2.

A note on the CXA system

Leaving the CX Addon system out of the original ClexioPad would have been the best thing I could have done. Shoehorning in something that wasn’t designed for it, as in CX1’s case would have caused many usability issues, and just been generally a massive pain in the arse. As what a certain celebrity chef would have said, “ITS F-ING RAW” would have been the best thing to describe it at this stage. No matter, it was improved on a significant amount for the next version, designed from word go to be modular.

Version 2

ClexioPad 2 was a large improvement and overhaul on the original ClexioPad. However, rather than being a fixed-function editing environment, this version was built from the ground up to take a much different approach. ClexioPad 2 uses the “CX Addon” system, dubbed “CXA”, where the editing environments are now interchangeable, and even can be added and patched individually of the main program. This takes away much of the required coding for the main program, and efforts for development can instead be tailored to a specific addon. For example, you can choose to load in a code editing IDE in one tab, a document writer in a second, and then a fully fledged HTML editor in a third tab. From the outset, the original editing environments from the first version of ClexioPad, the Scintilla Code Editor (SCE) and the RTF editor both make a return in the new CXA format, along with the introduction of a proper standalone HTML editor. This editor uses the SCE control and an active webbrowser instance coupled together. The HTML editor provides what would become a similar method to editing as the Chromiuim developer console, except without the more refined CSS editing abilities.

The CXA system was not only limited to entire editing environments. Provided in the CXA framework was the ability to use “Extensions”, which were essentially plugins that acted as extensions to an editing environment. The RTF Editor supported the “ChartCreator2” addon, which generated live interactive charts, as would be common in more upmarket programs, as well as an unreleased document comparison addon. The Extensions framework also included the ability to create “themes” that retroactively apply to all common .NET framework controls, which allowed for dark modes or other manipulations to take place.

Included with every original, unmodified copy of ClexioPad 2 was the “Addon Development Kit”, which allowed anyone with Visual Studio installed to create their very own editing environment or extension that ran against the CXA framework. One could choose to either import the pre-existing CXA host libraries and work on that, or import a new project template into their copies of Visual Studio. Anything that could fit into a .NET framework based program would work with ClexioPad, with the provision that all required libraries were put into the right folder. The CXA libraries are language neutral, meaning that it works with both VB.NET (Visual Basic .NET) and C# (C-Sharp), provided all requirements to creating an addon are met.

ClexioPad 2, along with its CXA kit, had gained a widespread following in my highschool SD class. The majority of my classmates had started using ClexioPad and even wrote addons for it. Off the top of my head, I know someone in my SD class actually made an MP3 player as an extension, believe it or not. There was even a rick-roll editing environment, which all the addon did was play the infamous music video. Jokes aside, there was entire web-browsers made to run inside a CXA addon, as well as a much more advanced and complex code editor. This all eventually gave way to the popularization of more advanced and finely developed products, such as VS Code. However, none matched the portability of ClexioPad as a whole.

Where is ClexioPad now?

What may surprise you is I did in fact plan for a super scalar version of ClexioPad, nicknamed on my hard drive as CXUltra. The implementation in CX2 was a significant step forward, but ultimately problematic in the end, moreso relating to resource usage than anything else (you can’t dynamically unload the plugins and their link libraries, something that was resolved with CXUltra by having its own AppDomain – worthy of a whole article). I did in fact get quite a long way in developing this, but in the end, put it on hiatus and largely forgotten about. This idea was sort of resurrected with newer versions of the Scintilla.NET API and redirection, but it never really got further than that. Maybe one day I can have an innovative suite on flash drives all around the world…

Source Code

Source code for the base ClexioPad program is not available for public use. However, the code required to create a CXA compatible addon is available. Please see the downloads section below if you would like a copy, or if your version of ClexioPad is missing the CXA addon development kit.

Downloads

ClexioPad v1.020
ClexioPad v2.1

ClexioPad Addon Development Kit
Scroll to Top