Third party libraries and packages

I mentioned briefly that the Quartex IDE supports packages. These packages are not limited to pascal files, but can contain javascript, css, images, sounds and the whole spectrum of web supported media. Including binary files.

This is a very good solution because it simplifies the work involved in supporting popular Javascript frameworks, like Knockout, Vue, jQueryUi or any of the other. If there is one thing HTML5 and Javascript does not lack, it is frameworks and libraries (there are almost too many to count!).

In order to make a library like Vue.js available to QTX, a component writer must first implement widgets that create whatever controls such a framework has to offer (read: inherit from TQTXWidget and adapt it) and finally make sure the dependencies are included in the package distribution. This means the stylesheet files, the Javascript files, media files or whatever else the framework needs to run.

The IDE has a package explorer that show the mounted packages and the widgets they contain

Whenever you drag & drop a widget from such a package onto your form, the IDE recognizes this and will automatically copy these resources into your project folder. So if you want to create an app that use Vue.js fancy HTML5 controls, everything you need is copied into your project when you compile. The package file itself is only useful for the IDE, so you dont have to ship that with your website, mobile application or service.

I should also mention that packages are ordinary zip files that use a ‘dpk’ extension rather than ‘zip’. The zip file-format is well established to the point of universal acceptance at this point, so introducing a new binary format in 2022 would be pointless and just result in unnecessary maintenance. Everyone knows how to create a zip file, and this makes it so much easier to expand the IDE with new widgets.

Above: The IDE has a widget palette where all the widgets from the packages are available. They are organized by categories

So the QTX form designer is not like, say, Macromedia Dreamweaver, where you essentially work directly with the HTML itself. There is no HTML to edit because it’s all created at runtime. You can write or inject HTML of-course, or load it at runtime, including stylesheets and whatever else. The RTL tries very hard to not interfere with the natural order of things, so you are not forced to use QTX only. In fact, several wrappers for popular libraries have already been implemented.

There is also no resource loading (like Delphi loads the .DFM files at runtime), instead the IDE converts your form files into pascal code during compile-time. This ensures that everything follows ordinary OOP inheritance rules, and that there are no delays of having to wait for a resource to be loaded from the server (you can also convert images and binary files into code if needed).

Read more