Offlist, Keith Smith and I discussed creating a Rapid Application
Development (RAD) system. The most needed thing, and the lowest hanging
fruit in a RAD system is a screen painter.
I personally don't have the skills to create a drag, drop and move
screen painter, but I *do* have the skills to create a system to
convert a data file with field locations, types, lengths, and
table/column meanings into source code to create a subrouting to
operate a screen.
I had suggested defining the array of fields in JSON, but on further
thought that's a bad idea, because no human should be forced to write
JSON.
While re-programming my reminder program, I came up with an excellent
definition format easily written and read by a human. Here's an example
from my reminder program reminder definition file:
=======================================
key=medicare_open_enrollment_ends
str=Medicare Enrollment ends 12/7/year
dom_due=7
m_due=12
displaydays=0,1,2,3,4,5,7,10,15
key=medicare_open_enrollment_start
str=Start Medicare Enrollment 10/15/year
dom_due=17
m_due=10
displaydays=0,1,2,3,4
=======================================
It's nothing but a series of key/value pairs, separated by an equal
sign, to define events needing reminding. All keys must be lower case to
make everything easier to remember. Lines beginning with a pound sign,
or spaces then a pound sign, are ignored, as are blank lines, so you can
have all the comments and whitespace you want.
The trick is this: It's a 2 level structure, with the first level being
an array of events (each event is specified by key 'key'), with the
second level being information about an event. A very simple program
parses this into in-memory data structures: Basically, you just make
your break logic happen every time the key of a line is 'key'.
The same thing could be done with a screen painter, where the first
level key is 'field', and second level keys are things like 'x', 'y',
'enabled', 'type', 'dbtable', 'dbfield', 'onenter', 'onchange',
'onexit', 'bgcolor', 'fgcolor', etc. A well curated set of defaults
could make it quick and easy to whip out a screen in 20 minutes, while
retaining the option to refine that screen later.
Similarly, one could create a menu painter, a report painter, and a
database painter.
This wouldn't be as sexy as Delphi, Visual Studio, Clarion or
Powerbuilder, but it could be accomplished by mere mortals in a timely,
bug-free manner. And it would almost instantly be quicker and easier
for its users than Python bottle/flask/django or PyTk apps.
SteveT
Steve Litt
Autumn 2022 featured book: Thriving in Tough Times
http://www.troubleshooters.com/bookstore/thrive.htm
---------------------------------------------------
PLUG-discuss mailing list:
PLUG-discuss@lists.phxlinux.org
To subscribe, unsubscribe, or to change your mail settings:
https://lists.phxlinux.org/mailman/listinfo/plug-discuss