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