Screen painter

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Steve Litt via PLUG-discuss
Date:  
To: Main PLUG discussion list
CC: Steve Litt
Subject: Screen painter
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:
To subscribe, unsubscribe, or to change your mail settings:
https://lists.phxlinux.org/mailman/listinfo/plug-discuss