Aggiunto menu alle TWindow e ampliati i TForm

git-svn-id: svn://10.65.10.50/trunk@810 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-01-02 09:33:00 +00:00
parent 6256d39aa6
commit d100bb385b
17 changed files with 1329 additions and 1146 deletions

View File

@ -65,13 +65,6 @@ BEGIN
HELP "Dimensioni del carattere di stampa"
END
BOOLEAN MSK_1_ISGRAPHICS
BEGIN
PROMPT 4 8 "Stampa elementi grafici"
HELP "Indicare se stampare elementi grafici (linee, box, logo) quando la stampante lo consente"
END
LIST MSK_1_LINES 3
BEGIN
PROMPT 52 6 "Linee/Inch "
@ -104,7 +97,13 @@ BEGIN
PROMPT 4 8 "Salva configurazione"
HELP "Indicare se stampare elementi grafici (linee, box, logo) quando la stampante lo consente"
END
BOOLEAN MSK_1_ISGRAPHICS
BEGIN
PROMPT 4 9 "Stampa elementi grafici"
HELP "Indicare se stampare elementi grafici (linee, box, logo) quando la stampante lo consente"
END
GROUPBOX DLG_NULL 74 4
BEGIN
PROMPT 1 9 ""

View File

@ -1,6 +1,11 @@
#ifndef __COLORS_H
#define __COLORS_H
#ifndef XVT_INCL
#include <xvt.h>
#endif
extern COLOR MASK_COLOR;
extern COLOR MASK_BACK_COLOR;
extern COLOR NORMAL_COLOR;
extern COLOR NORMAL_BACK_COLOR;
@ -9,5 +14,8 @@ extern COLOR DISABLED_BACK_COLOR;
extern COLOR FOCUS_COLOR;
extern COLOR FOCUS_BACK_COLOR;
const COLOR COLOR_DKCYAN = MAKE_COLOR(0,128,128);
const COLOR COLOR_DKYELLOW = MAKE_COLOR(128,128, 0);
#endif

View File

@ -118,34 +118,51 @@ bool TConfig::exist(const char* var, int index)
return _data.is_key(vvar);
}
TString& TConfig::get(const char* var, const char* section, int index)
TString& TConfig::get(const char* var, const char* section, int index, const char* def)
{
// ritorna valore di variabile nella sezione corrente o in
// quella specificata
static TFixed_string s(__tmp_string, 256);
TString vvar(var); if (index != -1) vvar << '(' << index << ')';
TString80 vvar(var); if (index != -1) vvar << '(' << index << ')';
_check_paragraph(section);
if (_data.is_key(vvar))
s = (TString&)_data[vvar];
else
s = "";
s = def;
return s;
}
long TConfig::get_long(const char* var, const char* section, int index)
{
return atol(get(var,section,index));
long TConfig::get_long(const char* var, const char* section, int index, long def)
{
const char* n = get(var,section,index);
return *n ? atol(n) : def;
}
bool TConfig::get_bool(const char* var, const char* section, int index)
{
const TString& s = get(var, section, index).upper();
bool TConfig::get_bool(const char* var, const char* section, int index, bool def)
{
if (def) strcpy(__tmp_string, "X");
else *__tmp_string = '\0';
const TString& s = get(var, section, index, __tmp_string).upper();
return s != "" && (s == "X" || s == "ON" || s == "YES" || s == "OK" || s == "TRUE");
}
COLOR TConfig::get_color(const char* var, const char* section, int index, COLOR def)
{
const char* c = get(var, section, index);
if (*c)
{
TToken_string s(c, ',');
const int r = atoi(s.get());
const int g = atoi(s.get());
const int b = atoi(s.get());
def = MAKE_COLOR(r, g, b);
}
return def;
}
bool TConfig::set(const char* var, const char* value, const char* section,
bool force, int index)

View File

@ -1,5 +1,9 @@
#ifndef __CONFIG_H
#define __CONFIG_H
#define __CONFIG_H
#ifndef XVT_INCL
#include <xvt.h>
#endif
#ifndef __ASSOC_H
#include <assoc.h>
@ -40,13 +44,15 @@ public:
// quella specificata; se non c'e' ritorna ""
// passando index >=0 viene appeso al nome variabile per
// implementare un mezzo cazzo di array
TString& get(const char* var, const char* section = NULL, int index = -1);
TString& get(const char* var, const char* section = NULL, int index = -1, const char* def = "");
// questa ritorna 0 se non c'e', il che e' un po' sfigotto
long get_long(const char* var, const char* section = NULL, int index = -1);
long get_long(const char* var, const char* section = NULL, int index = -1, long def = 0L);
// questa ritorna FALSE se non c'e', il che e' ancora piu' sfigotto
bool get_bool(const char* var, const char* section = NULL, int index = -1);
bool get_bool(const char* var, const char* section = NULL, int index = -1, bool def = FALSE);
COLOR get_color(const char* var, const char* section = NULL, int index = -1, COLOR def = 0);
// setta variabile nella sezione corrente o specificata
// se force == TRUE crea la sezione/variabile se non esiste; altrimenti

File diff suppressed because it is too large Load Diff

View File

@ -60,8 +60,9 @@
CHECK_FIELD esegue il check su di un altro campo
campo
FILENAME_FUNC controlla se la stringa e' un nome di file
ZEROFILL_FUNC riempie di zeri i numeri fino a n caratteri
ZEROFILL_FUNC riempie di zeri i numeri fino a n caratteri
n.ro di caratteri
ALPHA_FUNC accetta solo caratteri alfabetici
*/
#define EXPR_FUNC 0 2
@ -84,6 +85,7 @@
#define CHECK_FIELD 17 1
#define FILENAME_FUNC 18 0
#define ZEROFILL_FUNC 19 1
#define ALPHA_FUNC 20 0
#define VALEXPR VALIDATE EXPR_FUNC
#define NUM_EXPR VALEXPR 0

View File

@ -152,6 +152,7 @@ public:
void disable() { enable(FALSE); }
TForm_item(TPrint_section* section);
virtual ~TForm_item() {}
};
@ -187,12 +188,11 @@ void TForm_item::print_on(ostream& out) const
void TForm_item::print_body(ostream& out) const
{
out << " KEY \"" << _desc << "\"\n";
if (_y >= 0)
out << " PROMPT " << _x << ' ' << _y << " \"" << _prompt << "\"\n";
if (_desc.not_empty())
out << " KEY \"" << _desc << "\"\n";
if (_group.ones())
out << " GROUP " << _group << "\n";
@ -466,6 +466,7 @@ protected:
public:
TForm_string(TPrint_section* section) : TForm_item(section) {}
virtual ~TForm_string() {}
};
bool TForm_string::parse_item(TScanner& scanner)
@ -597,6 +598,7 @@ protected:
public:
TForm_number(TPrint_section* section) : TForm_string(section) {}
virtual ~TForm_number() {}
};
@ -634,6 +636,7 @@ protected:
public:
TForm_date(TPrint_section* section);
virtual ~TForm_date() {}
};
@ -678,6 +681,7 @@ protected:
public:
TForm_list(TPrint_section* section);
virtual ~TForm_list() {}
};
TForm_list::TForm_list(TPrint_section* section)
@ -792,6 +796,21 @@ bool TForm_list::update()
return ok;
}
///////////////////////////////////////////////////////////
// TForm_group
///////////////////////////////////////////////////////////
class TForm_group : public TForm_item
{
protected:
virtual const char* class_name() const { return "GRUPPO"; }
virtual bool parse_head(TScanner&) { return TRUE; }
virtual bool update() { return TRUE; }
public:
TForm_group(TPrint_section* section) : TForm_item(section) {};
virtual ~TForm_group() {}
};
///////////////////////////////////////////////////////////
// TPrint_section
@ -840,6 +859,8 @@ TForm_item* TPrint_section::parse_item(const TString& s)
return new TForm_date(this);
if (s == "LI")
return new TForm_list(this);
if (s == "GR")
return new TForm_group(this);
CHECKS(NULL, "Campo di stampa sconosciuto: ", (const char*)s);
return NULL;

View File

@ -119,11 +119,7 @@ void TMask::handler(WINDOW win, EVENT* ep)
{
clear_window(win, MASK_BACK_COLOR);
RCT r; get_client_rect(win, &r);
#ifdef __CTL3D__
xvt_draw_rect(win, r, COLOR_WHITE, COLOR_GRAY, 1);
#else
xvt_draw_rect(win, r, COLOR_CYAN, COLOR_GRAY, 1);
#endif
xvt_draw_rect(win, r, MASK_COLOR, COLOR_GRAY, 1);
}
else clear_window(win, COLOR_GRAY);
#else

View File

@ -1,4 +1,4 @@
// $Id: maskfld.cpp,v 1.65 1994-12-28 11:01:21 guy Exp $
// $Id: maskfld.cpp,v 1.66 1995-01-02 09:32:42 guy Exp $
#include <xvt.h>
#include <applicat.h>
@ -532,7 +532,7 @@ HIDDEN void modify_list(bool add, TMask_field& f, TToken_string& msg)
}
// Certified 90%
// Certified 99%
HIDDEN const char* copy_value(TToken_string& msg, const TString& val)
{
int from = msg.get_int()-1;
@ -542,6 +542,30 @@ HIDDEN const char* copy_value(TToken_string& msg, const TString& val)
return val.sub(from, to);
}
HIDDEN void run_app(const TMask& mask, TToken_string& msg)
{
TFilename a(msg.get(1));
for (const char* m = msg.get(); m; m = msg.get())
{
a << ' ';
for (const char* f = m; f; f++)
{
if (*f == '#')
{
const int id = atoi(++f);
a << mask.get(id);
break;
}
else
a << *f;
}
}
TExternal_app app(a);
app.run();
}
void TMask_field::send_key(KEY k, short to)
{
mask().send_key(k, to, this);
@ -551,7 +575,7 @@ void TMask_field::send_key(KEY k, short to)
// Certified 90%
bool TMask_field::do_message(int num)
{
const int MAX_CMD = 14;
const int MAX_CMD = 15;
static const char* commands[MAX_CMD] =
{
"ADD", // 0
@ -566,8 +590,9 @@ bool TMask_field::do_message(int num)
"HIDE", // 9
"PUSH", // 10
"RESET", // 11
"SHOW", // 12
"UNDO" // 13
"RU", // 12
"SHOW", // 13
"UNDO" // 14
};
TToken_string* message = (TToken_string*)_message.objptr(num);
@ -607,7 +632,13 @@ bool TMask_field::do_message(int num)
{
mask().stop_run(atoi(dlg));
continue;
}
} else
if (cmd == 12)
{
run_app(mask(), msg);
continue;
}
short fld = (dlg && dlg[0] > ' ') ? atodlg(dlg) : 0;
bool broadcast = dlg && strchr(dlg, '@');
@ -636,9 +667,9 @@ bool TMask_field::do_message(int num)
key = K_SPACE; break;
case 11:
key = K_F2; break;
case 12:
key = 11000+'s'; break;
case 13:
key = 11000+'s'; break;
case 14:
key = K_F3; break;
default:
key = atoi(value);
@ -774,6 +805,7 @@ bool TMask_field::on_key(KEY key)
message_box(_help);
else
beep();
set_focus();
break;
case K_F2:
if (is_edit()) set("");

View File

@ -1 +1 @@
#define VERSION 1.2
#define VERSION 1.3

View File

@ -1,4 +1,4 @@
// $Id: relapp.cpp,v 1.41 1994-12-27 14:59:08 guy Exp $
// $Id: relapp.cpp,v 1.42 1995-01-02 09:32:49 guy Exp $
#include <mailbox.h>
#include <sheet.h>
#include <urldefid.h>
@ -794,7 +794,10 @@ bool TRelation_application::main_loop()
if (relation_remove())
query_mode();
if (_autoins_caller.not_empty())
{
if (_lnflag) _recins = 0;
k = K_QUIT;
}
break;
case K_F9:
if (save(TRUE))

View File

@ -699,15 +699,15 @@ TBrowse_sheet::TBrowse_sheet(TCursor* cursor, const char* fields,
: TCursor_sheet(cursor, fields, title, head, buttons), _field(f)
{
if (field().browse()->inputs() == 1)
{
#if XVT_OS == XVT_OS_WIN
xvt_create_control(WC_EDIT, 1, -3, f->size()+1, 1, f->get(), win(),
CTL_FLAG_DISABLED, 0L, 100);
#else
xvt_create_control(WC_EDIT, 1, -3, f->size()+2, 1, f->get(), win(),
CTL_FLAG_DISABLED, 0L, 100);
if (field().browse()->inputs() == 1 && cursor->items() > 0)
{
#if XVT_OS == XVT_OS_SCOUNIX
const int s = f->size()+2;
#else
const int s = f->size()+1;
#endif
xvt_create_control(WC_EDIT, 1, -3, s, 1, f->get(), win(),
CTL_FLAG_DISABLED, 0L, 100);
}
if (s && s->items() > 2)
@ -844,7 +844,7 @@ KEY TBrowse_sheet::run()
const KEY key = TCursor_sheet::run();
if (key == K_ESC || key == K_F9 || key == K_INS)
if (key == K_ESC || key == K_INS || key >= K_CTRL)
{
field().set(old); // Restore field status
field().set_dirty(spork);

View File

@ -593,7 +593,20 @@ HIDDEN bool _zerofill_val(TEdit_field& f, KEY k)
return TRUE;
}
#define MAX_FUNC 20
HIDDEN bool _alpha_val(TEdit_field& f, KEY k)
{
if (f.to_check(k))
{
const TString& s = f.get();
for (int i = 0; s[i]; i++)
if (!isalpha(s[i]))
return error_box("Sono ammessi solo caratteri alfabetici");
}
return TRUE;
}
#define MAX_FUNC 21
HIDDEN VAL_FUNC _global_val_func[MAX_FUNC] =
{
@ -616,7 +629,8 @@ HIDDEN VAL_FUNC _global_val_func[MAX_FUNC] =
_onereq_val,
_chkfld_val,
_filename_val,
_zerofill_val
_zerofill_val,
_alpha_val
};
bool validate(int fn, TEdit_field& f, KEY k, const TArray& parms)

View File

@ -196,7 +196,8 @@ long TWindow::window_handler(WINDOW win, EVENT* ep)
WINDOW TWindow::create(short x, short y, short dx, short dy,
const char* title, long flags, WIN_TYPE wt, WINDOW parent)
const char* title, long flags, WIN_TYPE wt,
WINDOW parent, int menu)
{
flags |= WSF_NO_MENUBAR;
@ -206,8 +207,9 @@ WINDOW TWindow::create(short x, short y, short dx, short dy,
_win = xvt_create_window(
wt,
x, y, dx, dy,
title, parent,
flags,
title,
menu, parent,
flags,
window_handler,
PTR_LONG(this)
);
@ -623,11 +625,11 @@ TScroll_window::TScroll_window()
}
WINDOW TScroll_window::create(short x, short y, short dx, short dy,
const char* title, long flags, WIN_TYPE wt, WINDOW parent)
const char* title, long flags, WIN_TYPE wt, WINDOW parent, int menu)
{
_has_hscroll = (flags & WSF_HSCROLL) != 0;
_has_vscroll = (flags & WSF_VSCROLL) != 0 ;
return TWindow::create(x, y, dx, dy, title, flags, wt, parent);
return TWindow::create(x, y, dx, dy, title, flags, wt, parent, menu);
}
PNT TScroll_window::log2dev(long x, long y) const

View File

@ -68,7 +68,7 @@ protected:
static long window_handler(WINDOW win, EVENT* ep);
virtual WINDOW create(short x, short y, short dx, short dy,
const char* title = "", long flags = WSF_NONE,
WIN_TYPE rt = W_DOC, WINDOW parent = NULL_WIN) ;
WIN_TYPE rt = W_DOC, WINDOW parent = NULL_WIN, int menu = 0) ;
void set_win(WINDOW w) { _win = w; } // Usare con cautela
@ -187,7 +187,8 @@ protected:
// @FPROT
virtual WINDOW create(short x, short y, short dx, short dy,
const char* title = "", long flags = WSF_NONE,
WIN_TYPE rt = W_DOC, WINDOW parent = NULL_WIN) ; // Crea la finestra
WIN_TYPE rt = W_DOC, WINDOW parent = NULL_WIN,
int menu = 0) ; // Crea la finestra
virtual PNT log2dev(long x, long y) const;
virtual bool on_key(KEY key);

View File

@ -29,7 +29,7 @@ COLOR MASK_BACK_COLOR = COLOR_WHITE;
COLOR NORMAL_COLOR = COLOR_BLACK;
COLOR NORMAL_BACK_COLOR = COLOR_WHITE;
COLOR DISABLED_COLOR = COLOR_GRAY;
COLOR DISABLED_BACK_COLOR = COLOR_WHITE;
COLOR DISABLED_BACK_COLOR = MASK_BACK_COLOR;
COLOR FOCUS_COLOR = COLOR_BLACK;
COLOR FOCUS_BACK_COLOR = COLOR_WHITE;
@ -74,30 +74,24 @@ HIDDEN HFONT NormalFont = NULL;
HIDDEN LOGFONT LogFont;
HIDDEN int FontWeight;
#ifdef __CTL3D__
COLOR MASK_BACK_COLOR = COLOR_LTGRAY;
#else
COLOR MASK_BACK_COLOR = MAKE_COLOR(0,128,128);
#endif
COLOR MASK_COLOR = COLOR_CYAN;
COLOR MASK_BACK_COLOR = COLOR_DKCYAN;
COLOR NORMAL_COLOR = COLOR_BLACK;
COLOR NORMAL_BACK_COLOR = COLOR_LTGRAY;
COLOR DISABLED_COLOR = COLOR_GRAY;
COLOR DISABLED_BACK_COLOR = MASK_BACK_COLOR;
COLOR FOCUS_COLOR = NORMAL_COLOR;
COLOR FOCUS_BACK_COLOR = COLOR_CYAN;
HIDDEN COLORREF MaskColor = COLOR2RGB(MASK_BACK_COLOR);
HIDDEN HBRUSH MaskBrush = CreateSolidBrush(MaskColor);
HIDDEN COLORREF FocusForeColor = COLOR2RGB(COLOR_BLACK);
HIDDEN COLORREF FocusBackColor = COLOR2RGB(COLOR_CYAN);
HIDDEN HBRUSH FocusBrush = CreateSolidBrush(FocusBackColor);
COLOR FOCUS_COLOR = RGB2COLOR(FocusForeColor);
COLOR FOCUS_BACK_COLOR = RGB2COLOR(FocusBackColor);
HIDDEN HBRUSH MaskBrush = 0 ;
HIDDEN COLORREF NormalForeColor = COLOR2RGB(NORMAL_COLOR);
HIDDEN COLORREF NormalBackColor = COLOR2RGB(NORMAL_BACK_COLOR);
HIDDEN HBRUSH NormalBrush = CreateSolidBrush(NormalBackColor);
HIDDEN HBRUSH NormalBrush = 0;
HIDDEN COLORREF FocusForeColor = COLOR2RGB(FOCUS_COLOR);
HIDDEN COLORREF FocusBackColor = COLOR2RGB(FOCUS_BACK_COLOR);
HIDDEN HBRUSH FocusBrush = 0;
const word WM_WAKEUP = RegisterWindowMessage("WAKEUP");
@ -493,7 +487,18 @@ void dispatch_e_scroll(WINDOW win, KEY key)
}
void customize_controls(bool on)
{
{
TConfig colors(CONFIG_GENERAL, "Colors");
MASK_COLOR = colors.get_color("Mask", NULL, -1, MASK_COLOR);
MASK_BACK_COLOR = colors.get_color("MaskBack", NULL, -1, MASK_BACK_COLOR);
NORMAL_COLOR = colors.get_color("Normal", NULL, -1, NORMAL_COLOR);
NORMAL_BACK_COLOR = colors.get_color("NormalBack", NULL, -1, NORMAL_BACK_COLOR);
DISABLED_COLOR = colors.get_color("Disabled", NULL, -1, DISABLED_COLOR);
DISABLED_BACK_COLOR = colors.get_color("DisabledBack", NULL, -1, DISABLED_BACK_COLOR);
FOCUS_COLOR = colors.get_color("Focus", NULL, -1, FOCUS_COLOR);
FOCUS_BACK_COLOR = colors.get_color("FocusBack", NULL, -1, FOCUS_BACK_COLOR);
#if XVTWS == WMWS
if (on)
{
@ -512,6 +517,17 @@ void customize_controls(bool on)
HINSTANCE _hInstance = (HINSTANCE)get_value(NULL_WIN, ATTR_WIN_INSTANCE);
Ctl3dRegister(_hInstance);
Ctl3dAutoSubclass(_hInstance);
#else
MaskColor = COLOR2RGB(MASK_BACK_COLOR);
MaskBrush = CreateSolidBrush(MaskColor);
NormalForeColor = COLOR2RGB(NORMAL_COLOR);
NormalBackColor = COLOR2RGB(NORMAL_BACK_COLOR);
NormalBrush = CreateSolidBrush(NormalBackColor);
FocusForeColor = COLOR2RGB(FOCUS_COLOR);
FocusBackColor = COLOR2RGB(FOCUS_BACK_COLOR);
FocusBrush = CreateSolidBrush(FocusBackColor);
#endif
}
else
@ -519,11 +535,12 @@ void customize_controls(bool on)
#ifdef __CTL3D__
HINSTANCE _hInstance = (HINSTANCE)get_value(NULL_WIN, ATTR_WIN_INSTANCE);
Ctl3dUnregister(_hInstance);
#endif
#else
DeleteObject(NormalFont);
DeleteObject(MaskBrush);
DeleteObject(NormalBrush);
DeleteObject(FocusBrush);
#endif
free_controls_bmp();
}
#endif
@ -547,9 +564,6 @@ void xvt_init_font()
LogFont.lfWidth = (int)font.get_long("Width");
LogFont.lfWeight = FontWeight = (int)font.get_long("Weight");
LogFont.lfCharSet = (int)font.get_long("CharSet");
// LogFont.lfClipPrecision = (int)font.get_long("Clip");
// LogFont.lfOutPrecision = (int)font.get_long("Precision");
// LogFont.lfQuality = (int)font.get_long("Quality");;
LogFont.lfPitchAndFamily = (int)font.get_long("Pitch");
strcpy(LogFont.lfFaceName, font.get("Name"));
}
@ -603,8 +617,11 @@ void xvt_set_font(WINDOW win, int family, int style, int dim)
WINDOW xvt_create_window(WIN_TYPE wt,
short x, short y, short dx, short dy,
const char* caption, WINDOW parent,
long flags, EVENT_HANDLER eh, long app_data
const char* caption,
int menu,
WINDOW parent,
long flags,
EVENT_HANDLER eh, long app_data
)
{
RCT& rect = resize_rect(x, y, dx, dy, wt, parent);
@ -613,7 +630,7 @@ WINDOW xvt_create_window(WIN_TYPE wt,
WINDOW win = create_window(wt,
&rect,
(char*)caption,
0, parent,
menu, parent,
flags,
EM_ALL, eh,
app_data);
@ -930,14 +947,19 @@ PAT_STYLE trans_brush(char p)
}
PEN_STYLE trans_pen(char p)
{
{
PEN_STYLE ps = P_SOLID;
switch (p)
{
case 'n' : return P_SOLID; break;
case '.' : return P_DOT; break;
case '-' : return P_DASH; break;
default: CHECK(0,"trans_pen: Undefined pattern"); break;
}
return P_SOLID;
case 'n' :
ps = P_SOLID; break;
case '.' :
ps = P_DOT; break;
case '-' :
ps = P_DASH; break;
default:
CHECK(0, "trans_pen: Undefined pattern"); break;
}
return ps;
}

View File

@ -23,7 +23,8 @@ WINDOW xvt_create_window
(
WIN_TYPE wt,
short x, short y, short dx, short dy,
const char* caption, WINDOW parent,
const char* caption,
int menu, WINDOW parent,
long flags,
EVENT_HANDLER eh,
long app_data
@ -61,6 +62,7 @@ WINDOW xvt_create_window
void xvt_check_radio_button(WINDOW win, const WINDOW* ctls, int count);
int xvt_get_checked_radio(const WINDOW* ctls, int count);
void xvt_change_page_tags(WINDOW pag, bool on, WINDOW tag, byte p);
PICTURE xvt_picture_load(short id, bool convert_colors = FALSE);
bool xvt_test_menu_tag(MENU_TAG tag);