This is a whopper of an update which brings in one of the final touches on the proverbial cake, namely theme styling from the inspector. I have also fixed a few bugs here and there, especially in the TQTXApplicationBoxed model, where for some strange reason the initial form was set to "not visible", causing all sorts of strange side effects such as not covering the entire client-region of the viewport.
I have also added two new fields to the build-config: pre and post execute, which allows you to pick a file to ShellExecute before running your application - and a file to execute after your application has stopped. This is very handy when you are writing visual apps that needs to talk to a node.js server or services. If you register the server with PM2, you can start and stop the server via "pm2 start/stop all" in these new fields.
NOTE: These fields are not yet activated! Since we are a few days behind I figured I would do an update now to get the theme stuff out, and then work like hell on getting another update out with the rest shortly.
And last but not least, I have moved much of the information that was cluttering up the form designer widgets, such as creation-order, widget type etc. into a sexy new THintWindow. This behaves more or less the same as Delphi. We also draw the widget glyph to this THintWindow to make it easier to visually match the type.
I wanted to get the package-preferences file activated (which was added in the previous build), but I ran out of time. I will have this done by the next update.
Changelist for this build
- Fixed issue where the initial form of a TQTXApplicationBoxed model did not cover the client-region of the viewport. This model creates an outer container (TQTXDisplay) which contains an inner container (TQTXViewport) which houses the forms. This enables us to scroll and clip form contents without bleeding out beyond the boundaries of TQTXDisplay.
- Fixed issue with the WebSocketClient test project, where I had accidentally included a couple of node.js units in the DOM project causing havoc.
- Fixed issue with TQTXDOMWebSocketClient where the OnMessage handler type was unknown. The unit was missing a reference to qtx.dom.messages.pas which containes the OnMessage event parameter type.
- Introduced a new unit, qtx.dom.theme.pas, which now MUST be included in both project and form units. So if your projects refuse to compile, just add that unit to the uses clause.
- Updated all template-files and projects so that new forms and projects includes the qtx.dom.theme.pas in their uses section
- Added new field to the build-config: pre-exec. Added a select button that opens a file-selector dialog. You can pick between *.*, *.bat and *.exe directly. You can also manually type in a command, such as "npm start all". Whatever is typed in this textfield will be ShellExecuted (without waiting for the process to close!) before your project is run.
- Added new field to the build config: post-exe. Same as above except this is executed after your project has stopped.
- Fixed a focus problem when double-clicking on a form-file in the file overview. When the form-tab opens focus was not set to the designer. This was a simple one-liner
- Updated the Assign() method for TQTXWidget so that it includes the theme values
- Updated the Assign() methods for TQTXImage so it invokes it's ancestor and dont overwrite the theme border
To-Do at this point
I wanted to get the sexy TRichView into this build, but I quickly realized that I need to play around with the package a bit before i start using it. TRichView is a highly polished and professional product with a ton of functionality. In order to do TRichView justice, and make it a natural feature for the QTX IDE, it has to be properly setup and applied. So I have pushed that a few weeks into the future.
- Last build we added support for package config files, which is a JSON file that the IDE looks for when opening zip-file packages. This is to "future proof" the package system a bit so that we can check for package dependencies and version conflicts, which is bound to happen quickly as people make their own packages. This file is checked for and loaded into the package objects the IDE manages, but we dont yet read from it. This obviously needs to be fixed.
- In the preferences dialog we have a tab where we can assign a colorset to each filetype. This might be overkill to be honest, but either way it either has to be finished or removed. Finishing it is a matter of storing the name of the colorset the user has picked for that filetype. Nitpicky but useful.
- The code-editor has a timer already in place for background compilation and maintaining the AST, but it lacks a bit of logic. In short, when you type anything there will be a small delay after you last pressed a key, and then the background compiler kicks-in and rebuild the AST automatically for you (see the IDE preferences dialog). This timer is there, but I need to finish the logic. This is not as straight forward as it might seem, since the IDE has to be smart enough to recognize if you are in the middle of something, like typing a property declaration that is not finished.
- We are missing two options from the Ragnarok codegen, namely to emit a ready-to-rock DOM protocol client class, and also a node.js protocol object. The idea here is that you design your protocol (messages, fields, datatypes etc), and the IDE spits out a ready to use protocol object + message stack (keeps track of sent and received messages) and a message dispatcher. All you have to do is create a client or server object and assign that protocol - and it will run on whatever medium it might be (messages between worker, websocket, http/rest, UDP. Ragnarok abstracts the data from the medium).
When this is in place, the IDE is as good as we can make it for version 1.0, and we can ship that while I immediately start creating new and cool project templates, demos that actually makes sense, and write documentation.
Download
Backers can download from www.patreon.com/QuartexNOW as usual
For teacher how to download QTX last version.
@guverdik You need to be a backer of QTX to download it at this point. Only after version 1.0 will a community edition be available. We could use your backing help, so consider visiting https://www.Patreon.com/QuartexNow to sign up