The wod_DevTools component helps the developer in its daily routine with they 4D products. It gives some meta interfaces, with high level interaction with your code and databases. It is divided into actions and modules for Databases, Methods, Classes, Forms, and Miscellaneous.
Only in EN. Dependencies: wok_Krolific, wox_Xlibrary You need to install both to make wod_DevTools to work.
wod_DevTools is now in V2 !
What’s new? This version offers two major improvements.
Declare! improvement
Improvement of class detection
- $cs_xxx, $cE_xxx, $cES_xxx trigger type cs, cE, cES even when "xxx" is not found.
- $cs_colors triggers if only one class contains "colors".
- $cE_CLIENTSxxx triggers with CLIENTSEntity if only one found (regex = "(?i)CLIENTS.*Entity")
- $cES_CLIENTSxxx trigger with CLIENTSSelection if only one found (regex = "(?i)CLIENTS.*Selection")
Improvement of #declare!
- In the body of the code, added a max local's items in one declaration. Right now it is 6.
- Algo is 10 lines before current local, or last empty line encountered from.
- Option to put declarations at beginning. For blocks (methods, or each block's keywords in classes).
- Added an incremential declaration system: it is adding in already declarations of same type if any, or create a new line added after last declaration of same type found, or after last declaration found.
Undeclare!
Bored with all you already declared locals you want to remove? Do it in a snap using this new tool: undeclares all unused locals, for variables and arrays (with parameters untouched). Or undeclare a selection or all your already declared variables. All is incremential.
Class Keywords manager
Classes are made with encapsulated blocks where locals are independant: "No Tag", "declaration", "constructor", "function", "computed attribute". Now, the catalog is composed of a collection with the different blocks detected for those keywords. This is like magical, you can use it for Declare! & Rename! & Unused! and magikDoc, for methods as before, and now for Classes as well !
Databases
The goal is to explore (search widget), see, analyse and drag&drop all the items between databases. It integrates Gnânam, a new widget and Explorer for your host project databases. You have one DB Explorer for your current host, or DBs Explorer that opens a Form with as many explorers for the databases you want, and make Drag&Drop easily.
Methods
With Methods Locals, you can see and filter methods from how many Undeclared, Unused, and Unnamed. When you begin to use this module, you can’t stop to use it after all, it is so powerful.
With Declare&Rename!, we wanted to propose, with naming spaces, an easy way to automatically declare from locals based on they names, and rename based on they declaration’s types. Based on naming space’s conventions (3 available), modifies the local’s names for your methods in a snap. You can also convert all the variables of a selection of methods in a project from one space to an other: just blowing mind!
With MagikDoc, the goal was to get an instant documentation for databases in
You generate your markdown documentation for your methods in a snap, with different tags you can modify and update. A dedicated « Component’s Documentation Viewer », thru 4DPop, proposes all the components found with some .md in them, and opens a Form with all methods with .md and the markdown in a click. Just astonish.
You have MagikActions, a set of predefined actions you can do on methods, like convert C_XXX() to Var xxx: Type, or create a #DECLARE based on $vLocal:=$n or $0:=$vAnswer…
All of this is accessible for batch actions or macro individual method.
Forms
This interface is helpful to find the occurrences of subForm basic name, making easy to find your component’s widgets without restless nights…
Miscellaneous
Some common quick actions, to see files, folders, open doc…
Dependencies: ogKrolific. Better with ogPop and 4DPop.
Access
The 4DPop and macro menus.
Some screenshoots
Gnânam DBs explorer
Here four project's databases in a form, with drag&drop for all elements.
Methods locals
Bulk actions on method's selection. Declare! & Rename! & Unused! Access from method's list, and filter on undeclared, unused, and unnamed.
Quick actions
An overview of actions available for bulk method's selection, or on macro menu.
Newly added:
- Unused! (locals remove)
- #DECLARE → Pasteboard // Use real #DECLARE found in methods
- #Compiler_ → Pasteboard, space xxx // Use the parsed local symbol table for methods and propose the definitions for methods.
Example of generated code for your Compiler_methods...
// x__locals_catalog_specifics
C_TEXT(x__locals_catalog_specifics; $1; $2; $3) // $vT_line, $vT_comment, $vT_specifics
C_OBJECT(x__locals_catalog_specifics; $4) // $vJ_catalog
C_POINTER(x__locals_catalog_specifics; $5; $6; $7) // $vP_vL_parameters, $vP_vL_param_optional, $vP_vL_param_generic
C_BOOLEAN(x__locals_catalog_specifics; $0) // $is_found
// x__locals_declare
C_COLLECTION(x__locals_declare; $1) // $vC_linesMethod
C_POINTER(x__locals_declare; $2; $3; $4; $5; $6; $7) // $vP_aT_locals_name, $vP_aL_locals_type, $vP_aT_locals_nameTarget, $vP_aL_locals_typeTarget, $vP_vT_method, $vP_vT_errors
C_LONGINT(x__locals_declare; $0) // $vL_count
magikDoc!
Create the skeleton for the documentation of your components and host databases in a few clicks.
Methods Component's documentation
Component's markdown viewer.
Code Snippets
Dynamic snippets library.