Skip to content

Commit

Permalink
dashesrm
Browse files Browse the repository at this point in the history
  • Loading branch information
freakout42 committed Sep 19, 2024
1 parent 840da05 commit 7081cfa
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 20 deletions.
35 changes: 18 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
formax: enterprise-applications on terminals
============================================
**formax** is a tool for developing and executing
user-friedly character-based database applications with
extreme efficiency. The concept of Oracle Forms is combined
with curses as the terminal interface, ODBC for universal

**formax** is a tool for developing and executing user
friedly character based database applications with extreme
efficiency. The concept of Oracle Forms is combined with
curses as the terminal interface, ODBC for universal
database access and JavaScript for the trigger language. The
result is the most efficient solution possible for the
end-user. The applications can also be build with minimal
effort using a nocode approach. Click on the image for a
non-technical description:
end-user. The applications can be build with minimal effort
using a nocode approach. Click on the image for a non
technical description:

[![formax](https://formax.freakout.de/assets/logo.jpg "formax")](https://formax.freakout.de/ "formax")

Expand All @@ -19,14 +20,14 @@ presents the data. The source form (.inp in practice a
sql-script to create a sqlite3 database) is compiled into a
binary (.frm in practice a sqlite3 database), that is run by
the runtime component. The form is used to view and edit
data in a database-driven manner. The environment supplies
built-in record creation, query, delete and update modes,
data in a database driven manner. The environment supplies
builtin record creation, query, delete and update modes,
each with its own default data manipulations. This minimizes
the need for program code. **formax** can be seen as a
"No-code RAD" (Rapid Application Development).
"Nocode RAD" (Rapid Application Development).

The running form has an event driven interface and
implements event-handling functions called triggers which
implements event handling functions called triggers which
are automatically invoked at critical steps in the
processing of records and the receipt of keyboard strokes.
Different triggers may be called before, during, and after
Expand All @@ -38,27 +39,27 @@ necessary.

**formax** encorporates the concept of Oracle Forms with
modern standards and current database best practices and
technologies including all required enterprise-features:
- single-column autoincrement primary key field
technologies including all required enterprise features:
- single column autoincrement primary key field
- database integrity enforced through database
- JavaScript for client scripting
- regular expressions for validation
- freedom to choose the database provider
- multiple differnt databases simultaneously accessible
- full logging of all queries in a single place
- no free SQL for the end-user
- no free SQL for the enduser
- no operating system exits in the form-engine
- 3FA security can be setup easily

Status
======
Stable 1.5.0 is useable for single-block single-page forms.
Stable 1.5.0 is useable for single block single page forms.
Don't hesitate to create any issues when in trouble.

Feature roadmap
---------------
- 1.6 multiple databases
- 2.0 triggers
- 2.2 multiple databases
- 2.5 in-field editing
- 3.0 multi-record fields
- 3.1 multiple blocks and master-detail
Expand Down Expand Up @@ -140,7 +141,7 @@ insert into depts values (40, 'OPERATIONS', 'BOSTON');
.quit
~~~

You should now have a sqlite-database in `mydb.sq3`. Create
You should now have a sqlite database in `mydb.sq3`. Create
a default form for the table `depts` and execute it:

~~~
Expand Down
6 changes: 3 additions & 3 deletions runform/runform.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ enum upage { PGE_STATUS, PGE_MAIN, PGE_KEYHELP, PGE_EDITOR, PGE_EXTRA };
#define BIGSIZE 65536
#define HUGSIZE 1024*1024
#define NLINES 100
#define NBLOCKS 8
#define NBLOCKS 12
#define NFIELD1 40
#define NFIELDS NBLOCKS*NFIELD1
#define NTRIGGERS 80
Expand Down Expand Up @@ -48,10 +48,10 @@ enum upage { PGE_STATUS, PGE_MAIN, PGE_KEYHELP, PGE_EDITOR, PGE_EXTRA };
#define t(target) target, sizeof(target)
#define debugs(string) fprintf(stderr, ":%s:\n", string);

/* access to the current running form mode block field */
/* access to the current running dbs form mode blocks fields */
extern Logger g;
extern Form *f;
extern Record dbconn[5];
extern Form *f;
#define F(method) f->method
#define CM F(rmode)
#define CB F(b)[F(curblock)]
Expand Down

0 comments on commit 7081cfa

Please sign in to comment.