Qodly Studio for 4D
Goes beta
Since its introduction in 4D 20 R2, Qodly Studio for 4D has continually evolved with each version, thanks to your invaluable feedback.
With 4D 20 R6, Qodly Studio for 4D has officially reached beta status.
Integrated into 4D, Qodly Studio for 4D allows your applications to run on both desktop and web without additional installations, making it easier to extend your desktop application with web pages.
Programming-related features
REST and Qodly Support of Singletons
4D 20 R6 expands on singletons introduced in the previous release. Now, you can directly call functions that are exposed by shared singletons through REST APIs and Qodly Pages events.
Manage your HTTP requests with HTTP agents
4D 20 R6 introduces HTTP agents to help customize connections to HTTP servers since these HTTP agents manage connection persistence and reuse for HTTP requests.
This optimization avoids the overhead of renegotiating connections, especially secured ones, for each request. By default, all HTTPRequest commands use a basic agent that keeps connections alive. Still, users can create custom agents to fine-tune connections, control the keep-alive mechanism, set maximum concurrent connections, add timeouts, and configure TLS/SSL settings at the agent level.
Force Login Becomes Default for all REST Auth
4D 20 R6 introduces Force Login mode as the default behavior for controlling REST API access. This feature, implemented via the ds.authentify function, enhances security by requiring login credentials for API access. New projects automatically include a roles.json file with the forceLogin attribute set to True, denying access by default. Existing projects can convert to this mode using a new button in the Structure Settings dialog. This update simplifies the transition from legacy access control methods and allows for fine-grained access management using the Qodly Studio Roles and Privileges editor.
Components Interaction via Declared Namespaces
4D 20 R6 introduces a new approach: components with declared namespaces automatically share their classes with all other components within the same project. This eliminates the need for complex setups and allows you to freely use classes from other components directly in your code.
Easy Reference Comparison of Objects & Collections
4D 20 R6 makes working with objects in your code much easier! It introduces new comparison operators (= and #) that let you quickly see if two objects are the same in memory. This is especially helpful when you’re dealing with object references.
Enhanced Session Storage Access
Previously, ensuring that users had the same experience across different parts of your application, such as a web app and a client/server app, was difficult. This is because information stored in one session wasn’t easily accessible to other sessions.
4D 20 R6 fixes this with a new command, Session storage by id. This command lets you access the storage of any session in your application, regardless of whether it’s a web session, a client/server session, or a mobile session.
This means you can now easily store information that needs to be shared across different parts of your application. For example, you could store a customer record in the session when a user logs in and then access that same record from both the web app and the client/server app.
Permissions: Inspect Session Privileges for Easy Debugging
4D 20 R6 strengthens security in your applications by giving you more control over user access to data!
One important way to protect your applications is to control what data users can access. 4D 20 R6 makes this easier with improved privilege management.
ORDA
No more Empty Spaces in Your Entity Selections
4D 20 R6 introduces a new clean() function for entity selections, eliminating the clutter of empty spaces after deleting entities. This enhances the user experience by keeping your interface clean and organized.
Code Editor
Customize Global Warnings Display
With new global warning controls, 4D 20 R6 makes it easier to focus on the most critical issues in your code. Warnings in your 4D code can help catch potential errors. They act like a safety net, letting you know about things that might cause problems later. However, with large or complex projects, you might get a lot of warnings.
This can be overwhelming and make it hard to focus on the most critical issues.
4D 20 R6 gives you more control over which warnings you see:
- Global Warning Definitions: You can now define which warnings are displayed globally in the code editor and compiler dialog. This lets you hide warnings you know are irrelevant to your project or coding style.
- More Flexibility: Even if a warning type is displayed or hidden according to the parameters set, it is still possible to activate and deactivate the checking of a warning type locally in the code using the legacy //%W+ and //%W- switches.
4D Write Pro
Manage Empty Datasources
4D 20 R6 allows for more control over the appearance of tables in your documents, especially when the data they are linked to is empty. This is achieved through the new attribute wk empty datasource. This attribute defines how a table behaves when its linked datasource is empty, providing options to:
- Show data row (default)
- Hide the data row
- Hide the entire table
- Display a placeholder row
Web area
Custom Parameters for Initializing Embedded Web Area
4D 20 R6 makes it easier to customize the embedded web area in your applications! This area uses Chromium for browsing, and developers sometimes need to adjust how Chromium works.
Previously, this required complex code changes. Now, with 4D 20 R6, you can simply create a file named “4DCEFParameters.json” and specify the customizations you want in that file. This makes managing it much easier and ensures your customizations are applied correctly.
For example, this feature allows videos to play automatically in your web area, which wasn’t possible before.
4D Components
Integrate 4D components directly from GitHub
4D 20 R6 makes using components in your 4D projects even easier, especially if those components are stored on GitHub. Previously, you could only use the Component Manager with components stored on a local drive. Now, with 4D 20 R6, you can directly integrate components from GitHub repositories.
4D Netkit
Customizing OAuth 2.0 Connection Interface
4D 20 R6 gives you more control over how users log in with OAuth 2.0 in your application.
By default, OAuth 2.0 logins open a web browser window to display the login interface. But what if you want to customize that experience?
With 4D 20 R6, you can use the browserAutoOpen attribute to prevent a web browser window from automatically opening. This lets you display the login interface wherever you want in your application.
User Experience
Enhanced Scrolling Behavior in Subforms
4D 20 R6 makes working with subforms in your applications much smoother and more intuitive for users!
Have you ever gotten frustrated trying to scroll through a list in a subform, only to have the entire subform move instead? Or maybe you’ve attempted to scroll the subform, but the list box won’t budge?
4D 20 R6 fixes this with a new, improved subform scrolling behavior.