Mercurial > ~dholland > hg > ag > index.cgi
diff examples/dsl/query.h @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/dsl/query.h Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,98 @@ +/***** + + AnaGram Programming Examples + + A Dos Script Language + Query Table Definitions + + Copyright 1993 Parsifal Software. All Rights Reserved. + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + +*****/ + +#ifndef QUERY_H +#define QUERY_H + +#include "screen.h" +#include "stack.h" +#include <stddef.h> +#include "symbol.h" + +struct query_item { + int id; + int *value; + int *prompt; + int *explanation; + action_pointer action; +}; + +class screen_descriptor { +public: + int *title; + unsigned char color, entry_color, highlight_color; + int height, width; + pair<int> pos; + screen_descriptor() { + screen_rect display = at(0,0); + title = NULL; + color = entry_color = highlight_color = 0; + height = display.size.y; + width = display.size.x; + pos.x = pos.y = -1; + } +}; + +class query_table { +public: + int *title; + screen_rect window_box; // window for box + screen_rect window; // window for data + char_cell *previous; // previous content of window + int nq; // number of query items + query_item *q; // query item array + screen_rect *sr; // display rectangles + unsigned char *field_color; + int nbl; // blank lines to insert between entries + int first_line; // vertical location of first line + int title_line; // vertical location of title line + int exp_line; // vertical location of explanation + int dx; // horizontal location of data field + int px; // horizontal location of prompt field + int pw; // prompt field width + int dw; // data field width + int current_field; + unsigned char color, highlight_color, entry_color; + int height, width; + + +// Constructor + + query_table(stack<query_item> &qs, screen_descriptor *scd); + +// Destructor + + ~query_table(); + + query_table &resize(void); + query_table &refresh(void); + int edit_line(void); +}; + +extern stack <query_item> qs; + +#endif