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" HELP "Dimensioni del carattere di stampa"
END 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 LIST MSK_1_LINES 3
BEGIN BEGIN
PROMPT 52 6 "Linee/Inch " PROMPT 52 6 "Linee/Inch "
@ -105,6 +98,12 @@ BEGIN
HELP "Indicare se stampare elementi grafici (linee, box, logo) quando la stampante lo consente" HELP "Indicare se stampare elementi grafici (linee, box, logo) quando la stampante lo consente"
END 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 GROUPBOX DLG_NULL 74 4
BEGIN BEGIN
PROMPT 1 9 "" PROMPT 1 9 ""

View File

@ -1,6 +1,11 @@
#ifndef __COLORS_H #ifndef __COLORS_H
#define __COLORS_H #define __COLORS_H
#ifndef XVT_INCL
#include <xvt.h>
#endif
extern COLOR MASK_COLOR;
extern COLOR MASK_BACK_COLOR; extern COLOR MASK_BACK_COLOR;
extern COLOR NORMAL_COLOR; extern COLOR NORMAL_COLOR;
extern COLOR NORMAL_BACK_COLOR; extern COLOR NORMAL_BACK_COLOR;
@ -9,5 +14,8 @@ extern COLOR DISABLED_BACK_COLOR;
extern COLOR FOCUS_COLOR; extern COLOR FOCUS_COLOR;
extern COLOR FOCUS_BACK_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 #endif

View File

@ -118,34 +118,51 @@ bool TConfig::exist(const char* var, int index)
return _data.is_key(vvar); 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 // ritorna valore di variabile nella sezione corrente o in
// quella specificata // quella specificata
static TFixed_string s(__tmp_string, 256); 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); _check_paragraph(section);
if (_data.is_key(vvar)) if (_data.is_key(vvar))
s = (TString&)_data[vvar]; s = (TString&)_data[vvar];
else else
s = ""; s = def;
return s; return s;
} }
long TConfig::get_long(const char* var, const char* section, int index) long TConfig::get_long(const char* var, const char* section, int index, long def)
{ {
return atol(get(var,section,index)); const char* n = get(var,section,index);
return *n ? atol(n) : def;
} }
bool TConfig::get_bool(const char* var, const char* section, int index) bool TConfig::get_bool(const char* var, const char* section, int index, bool def)
{ {
const TString& s = get(var, section, index).upper(); 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"); 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 TConfig::set(const char* var, const char* value, const char* section,
bool force, int index) bool force, int index)

View File

@ -1,6 +1,10 @@
#ifndef __CONFIG_H #ifndef __CONFIG_H
#define __CONFIG_H #define __CONFIG_H
#ifndef XVT_INCL
#include <xvt.h>
#endif
#ifndef __ASSOC_H #ifndef __ASSOC_H
#include <assoc.h> #include <assoc.h>
#endif #endif
@ -40,13 +44,15 @@ public:
// quella specificata; se non c'e' ritorna "" // quella specificata; se non c'e' ritorna ""
// passando index >=0 viene appeso al nome variabile per // passando index >=0 viene appeso al nome variabile per
// implementare un mezzo cazzo di array // 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 // 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 // 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 // setta variabile nella sezione corrente o specificata
// se force == TRUE crea la sezione/variabile se non esiste; altrimenti // se force == TRUE crea la sezione/variabile se non esiste; altrimenti

View File

@ -27,7 +27,7 @@ class TPicture_array
PICTURE _picture[MAXPIC]; PICTURE _picture[MAXPIC];
public: public:
PICTURE getbmp(short id); PICTURE getbmp(short id, bool convert = FALSE);
PICTURE operator[](short id) { return _picture[id-BMP_OK]; } PICTURE operator[](short id) { return _picture[id-BMP_OK]; }
void reset(); void reset();
@ -36,7 +36,60 @@ public:
}; };
PICTURE TPicture_array::getbmp(short id) HIDDEN byte COLOR2PIC(COLOR c)
{
byte b;
switch (c)
{
case COLOR_DKYELLOW:
b = 0x03; break;
case COLOR_DKCYAN:
b = 0x06; break;
case COLOR_CYAN:
b = 0xF8; break;
case COLOR_YELLOW:
b = 0xFB; break;
default:
b = 0x00; break;
}
return b;
}
PICTURE xvt_picture_load(short id, bool convert)
{
PICTURE cpb = cpb_picture_load(id);
if (convert && MASK_BACK_COLOR != COLOR_DKCYAN)
{
const byte newdk = COLOR2PIC(MASK_BACK_COLOR);
const byte newlt = COLOR2PIC(MASK_COLOR);
const PICTURE old = cpb;
RCT r; cpb_get_picture_size(old, &r);
long size;
char* buf = picture_lock(old, &size);
CHECK(buf, "Out of memory in picture_load");
cpb = picture_make(buf, size, &r);
const int first = 14;
const int last = first + r.right*r.bottom;
for (int i = first; i < last; i++) switch(buf[i])
{
case 0x06:
buf[i] = newdk; break;
case 0xF8:
buf[i] = newlt; break;
default:
break;
}
picture_unlock(old);
picture_free(old);
}
return cpb;
}
PICTURE TPicture_array::getbmp(short id, bool convert)
{ {
const int i = id-BMP_OK; const int i = id-BMP_OK;
CHECKD(i >= 0 && i < MAXPIC, "Control ID out of range", id); CHECKD(i >= 0 && i < MAXPIC, "Control ID out of range", id);
@ -46,7 +99,7 @@ PICTURE TPicture_array::getbmp(short id)
if (i < 100) return _picture[i]; if (i < 100) return _picture[i];
picture_free(_picture[i]); picture_free(_picture[i]);
} }
_picture[i] = cpb_picture_load(id); _picture[i] = xvt_picture_load(id, convert);
if (_picture[i] == NULL) if (_picture[i] == NULL)
error_box("Can't load picture %d", id); error_box("Can't load picture %d", id);
@ -391,7 +444,7 @@ void TGroup::update() const
} }
else else
{ {
xvt_draw_rect(_hdc, r, COLOR_GRAY, COLOR_CYAN); xvt_draw_rect(_hdc, r, COLOR_GRAY, MASK_COLOR);
} }
} }
@ -685,7 +738,7 @@ void TPush_button::update() const
class TPage_button : public TControl class TPage_button : public TControl
{ {
enum { height = 19, width = 32 }; enum { height = 19, width2 = 16, width = 32 };
byte _flag; byte _flag;
protected: protected:
@ -702,14 +755,27 @@ public:
TPage_button::TPage_button(WINDOW parent, byte flag) : _flag(flag) TPage_button::TPage_button(WINDOW parent, byte flag) : _flag(flag)
{ {
RCT r; get_client_rect(parent, &r); RCT r; get_client_rect(parent, &r);
create(r.right-width, r.bottom-height, r.right, r.bottom, const int w = (flag == 3) ? width : width2;
if (flag == 2) r.right -= w;
create(r.right-w, r.bottom-height, r.right, r.bottom,
"", parent, 0L, 0L, DLG_PAGE); "", parent, 0L, 0L, DLG_PAGE);
cpb.getbmp(BMP_BOOK1 + flag -1); cpb.getbmp(BMP_BOOK1 + flag -1, flag == 3);
} }
void TPage_button::mouse_down(PNT where) void TPage_button::mouse_down(PNT where)
{ {
check(where.h < (width>>1)); bool p;
switch (_flag)
{
case 1:
p = FALSE; break;
case 2:
p = TRUE;
default:
p = where.h < (width2); break;
}
check(p);
} }
void TPage_button::mouse_up() void TPage_button::mouse_up()
@ -775,11 +841,7 @@ void TTag_button::update() const
win_draw_rect(_hdc, &r); win_draw_rect(_hdc, &r);
if (i == _page) if (i == _page)
#ifdef __CTL3D__ xvt_draw_rect(_hdc, r, MASK_COLOR, COLOR_GRAY);
xvt_draw_rect(_hdc, r, COLOR_WHITE, COLOR_GRAY);
#else
xvt_draw_rect(_hdc, r, COLOR_CYAN, COLOR_GRAY);
#endif
char n[4]; sprintf(n, "%d", i+1); char n[4]; sprintf(n, "%d", i+1);
win_draw_text(_hdc, (width-CHARX)/2 + i*width, BASEY, n, -1); win_draw_text(_hdc, (width-CHARX)/2 + i*width, BASEY, n, -1);
@ -789,11 +851,7 @@ void TTag_button::update() const
pen.width = 1; pen.width = 1;
pen.pat = PAT_SOLID; pen.pat = PAT_SOLID;
pen.style = P_SOLID; pen.style = P_SOLID;
#ifdef __CTL3D__ pen.color = MASK_COLOR;
pen.color = COLOR_WHITE;
#else
pen.color = COLOR_CYAN;
#endif
win_set_cpen(_hdc, &pen); win_set_cpen(_hdc, &pen);
PNT p = { _client.bottom, 0 }; PNT p = { _client.bottom, 0 };
@ -858,10 +916,10 @@ TCheckbox::TCheckbox(
{ {
if (_dy < 0) if (_dy < 0)
{ {
cpb.getbmp(BMP_CHECK_ON); cpb.getbmp(BMP_CHECK_ON, TRUE);
cpb.getbmp(BMP_CHECK_OFF); cpb.getbmp(BMP_CHECK_OFF, TRUE);
cpb.getbmp(BMP_RADIO_ON); cpb.getbmp(BMP_RADIO_ON, TRUE);
PICTURE p = cpb.getbmp(BMP_RADIO_OFF); PICTURE p = cpb.getbmp(BMP_RADIO_OFF, TRUE);
RCT r; RCT r;
cpb_get_picture_size(p, &r); cpb_get_picture_size(p, &r);

View File

@ -62,6 +62,7 @@
FILENAME_FUNC controlla se la stringa e' un nome di file 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 n.ro di caratteri
ALPHA_FUNC accetta solo caratteri alfabetici
*/ */
#define EXPR_FUNC 0 2 #define EXPR_FUNC 0 2
@ -84,6 +85,7 @@
#define CHECK_FIELD 17 1 #define CHECK_FIELD 17 1
#define FILENAME_FUNC 18 0 #define FILENAME_FUNC 18 0
#define ZEROFILL_FUNC 19 1 #define ZEROFILL_FUNC 19 1
#define ALPHA_FUNC 20 0
#define VALEXPR VALIDATE EXPR_FUNC #define VALEXPR VALIDATE EXPR_FUNC
#define NUM_EXPR VALEXPR 0 #define NUM_EXPR VALEXPR 0

View File

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

View File

@ -119,11 +119,7 @@ void TMask::handler(WINDOW win, EVENT* ep)
{ {
clear_window(win, MASK_BACK_COLOR); clear_window(win, MASK_BACK_COLOR);
RCT r; get_client_rect(win, &r); RCT r; get_client_rect(win, &r);
#ifdef __CTL3D__ xvt_draw_rect(win, r, MASK_COLOR, COLOR_GRAY, 1);
xvt_draw_rect(win, r, COLOR_WHITE, COLOR_GRAY, 1);
#else
xvt_draw_rect(win, r, COLOR_CYAN, COLOR_GRAY, 1);
#endif
} }
else clear_window(win, COLOR_GRAY); else clear_window(win, COLOR_GRAY);
#else #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 <xvt.h>
#include <applicat.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) HIDDEN const char* copy_value(TToken_string& msg, const TString& val)
{ {
int from = msg.get_int()-1; 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); 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) void TMask_field::send_key(KEY k, short to)
{ {
mask().send_key(k, to, this); mask().send_key(k, to, this);
@ -551,7 +575,7 @@ void TMask_field::send_key(KEY k, short to)
// Certified 90% // Certified 90%
bool TMask_field::do_message(int num) bool TMask_field::do_message(int num)
{ {
const int MAX_CMD = 14; const int MAX_CMD = 15;
static const char* commands[MAX_CMD] = static const char* commands[MAX_CMD] =
{ {
"ADD", // 0 "ADD", // 0
@ -566,8 +590,9 @@ bool TMask_field::do_message(int num)
"HIDE", // 9 "HIDE", // 9
"PUSH", // 10 "PUSH", // 10
"RESET", // 11 "RESET", // 11
"SHOW", // 12 "RU", // 12
"UNDO" // 13 "SHOW", // 13
"UNDO" // 14
}; };
TToken_string* message = (TToken_string*)_message.objptr(num); TToken_string* message = (TToken_string*)_message.objptr(num);
@ -607,7 +632,13 @@ bool TMask_field::do_message(int num)
{ {
mask().stop_run(atoi(dlg)); mask().stop_run(atoi(dlg));
continue; continue;
} } else
if (cmd == 12)
{
run_app(mask(), msg);
continue;
}
short fld = (dlg && dlg[0] > ' ') ? atodlg(dlg) : 0; short fld = (dlg && dlg[0] > ' ') ? atodlg(dlg) : 0;
bool broadcast = dlg && strchr(dlg, '@'); bool broadcast = dlg && strchr(dlg, '@');
@ -636,9 +667,9 @@ bool TMask_field::do_message(int num)
key = K_SPACE; break; key = K_SPACE; break;
case 11: case 11:
key = K_F2; break; key = K_F2; break;
case 12:
key = 11000+'s'; break;
case 13: case 13:
key = 11000+'s'; break;
case 14:
key = K_F3; break; key = K_F3; break;
default: default:
key = atoi(value); key = atoi(value);
@ -774,6 +805,7 @@ bool TMask_field::on_key(KEY key)
message_box(_help); message_box(_help);
else else
beep(); beep();
set_focus();
break; break;
case K_F2: case K_F2:
if (is_edit()) set(""); 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 <mailbox.h>
#include <sheet.h> #include <sheet.h>
#include <urldefid.h> #include <urldefid.h>
@ -794,7 +794,10 @@ bool TRelation_application::main_loop()
if (relation_remove()) if (relation_remove())
query_mode(); query_mode();
if (_autoins_caller.not_empty()) if (_autoins_caller.not_empty())
{
if (_lnflag) _recins = 0;
k = K_QUIT; k = K_QUIT;
}
break; break;
case K_F9: case K_F9:
if (save(TRUE)) 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) : TCursor_sheet(cursor, fields, title, head, buttons), _field(f)
{ {
if (field().browse()->inputs() == 1) if (field().browse()->inputs() == 1 && cursor->items() > 0)
{ {
#if XVT_OS == XVT_OS_WIN #if XVT_OS == XVT_OS_SCOUNIX
xvt_create_control(WC_EDIT, 1, -3, f->size()+1, 1, f->get(), win(), const int s = f->size()+2;
CTL_FLAG_DISABLED, 0L, 100);
#else #else
xvt_create_control(WC_EDIT, 1, -3, f->size()+2, 1, f->get(), win(), const int s = f->size()+1;
CTL_FLAG_DISABLED, 0L, 100);
#endif #endif
xvt_create_control(WC_EDIT, 1, -3, s, 1, f->get(), win(),
CTL_FLAG_DISABLED, 0L, 100);
} }
if (s && s->items() > 2) if (s && s->items() > 2)
@ -844,7 +844,7 @@ KEY TBrowse_sheet::run()
const KEY key = TCursor_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(old); // Restore field status
field().set_dirty(spork); field().set_dirty(spork);

View File

@ -593,7 +593,20 @@ HIDDEN bool _zerofill_val(TEdit_field& f, KEY k)
return TRUE; 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] = HIDDEN VAL_FUNC _global_val_func[MAX_FUNC] =
{ {
@ -616,7 +629,8 @@ HIDDEN VAL_FUNC _global_val_func[MAX_FUNC] =
_onereq_val, _onereq_val,
_chkfld_val, _chkfld_val,
_filename_val, _filename_val,
_zerofill_val _zerofill_val,
_alpha_val
}; };
bool validate(int fn, TEdit_field& f, KEY k, const TArray& parms) 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, 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; flags |= WSF_NO_MENUBAR;
@ -206,7 +207,8 @@ WINDOW TWindow::create(short x, short y, short dx, short dy,
_win = xvt_create_window( _win = xvt_create_window(
wt, wt,
x, y, dx, dy, x, y, dx, dy,
title, parent, title,
menu, parent,
flags, flags,
window_handler, window_handler,
PTR_LONG(this) PTR_LONG(this)
@ -623,11 +625,11 @@ TScroll_window::TScroll_window()
} }
WINDOW TScroll_window::create(short x, short y, short dx, short dy, 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_hscroll = (flags & WSF_HSCROLL) != 0;
_has_vscroll = (flags & WSF_VSCROLL) != 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 PNT TScroll_window::log2dev(long x, long y) const

View File

@ -68,7 +68,7 @@ protected:
static long window_handler(WINDOW win, EVENT* ep); static long window_handler(WINDOW win, EVENT* ep);
virtual WINDOW create(short x, short y, short dx, short dy, virtual WINDOW create(short x, short y, short dx, short dy,
const char* title = "", long flags = WSF_NONE, 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 void set_win(WINDOW w) { _win = w; } // Usare con cautela
@ -187,7 +187,8 @@ protected:
// @FPROT // @FPROT
virtual WINDOW create(short x, short y, short dx, short dy, virtual WINDOW create(short x, short y, short dx, short dy,
const char* title = "", long flags = WSF_NONE, 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 PNT log2dev(long x, long y) const;
virtual bool on_key(KEY key); 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_COLOR = COLOR_BLACK;
COLOR NORMAL_BACK_COLOR = COLOR_WHITE; COLOR NORMAL_BACK_COLOR = COLOR_WHITE;
COLOR DISABLED_COLOR = COLOR_GRAY; 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_COLOR = COLOR_BLACK;
COLOR FOCUS_BACK_COLOR = COLOR_WHITE; COLOR FOCUS_BACK_COLOR = COLOR_WHITE;
@ -74,30 +74,24 @@ HIDDEN HFONT NormalFont = NULL;
HIDDEN LOGFONT LogFont; HIDDEN LOGFONT LogFont;
HIDDEN int FontWeight; 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_COLOR = COLOR_BLACK;
COLOR NORMAL_BACK_COLOR = COLOR_LTGRAY; COLOR NORMAL_BACK_COLOR = COLOR_LTGRAY;
COLOR DISABLED_COLOR = COLOR_GRAY; COLOR DISABLED_COLOR = COLOR_GRAY;
COLOR DISABLED_BACK_COLOR = MASK_BACK_COLOR; 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 COLORREF MaskColor = COLOR2RGB(MASK_BACK_COLOR);
HIDDEN HBRUSH MaskBrush = CreateSolidBrush(MaskColor); HIDDEN HBRUSH MaskBrush = 0 ;
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 COLORREF NormalForeColor = COLOR2RGB(NORMAL_COLOR); HIDDEN COLORREF NormalForeColor = COLOR2RGB(NORMAL_COLOR);
HIDDEN COLORREF NormalBackColor = COLOR2RGB(NORMAL_BACK_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"); const word WM_WAKEUP = RegisterWindowMessage("WAKEUP");
@ -494,6 +488,17 @@ void dispatch_e_scroll(WINDOW win, KEY key)
void customize_controls(bool on) 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 XVTWS == WMWS
if (on) if (on)
{ {
@ -512,6 +517,17 @@ void customize_controls(bool on)
HINSTANCE _hInstance = (HINSTANCE)get_value(NULL_WIN, ATTR_WIN_INSTANCE); HINSTANCE _hInstance = (HINSTANCE)get_value(NULL_WIN, ATTR_WIN_INSTANCE);
Ctl3dRegister(_hInstance); Ctl3dRegister(_hInstance);
Ctl3dAutoSubclass(_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 #endif
} }
else else
@ -519,11 +535,12 @@ void customize_controls(bool on)
#ifdef __CTL3D__ #ifdef __CTL3D__
HINSTANCE _hInstance = (HINSTANCE)get_value(NULL_WIN, ATTR_WIN_INSTANCE); HINSTANCE _hInstance = (HINSTANCE)get_value(NULL_WIN, ATTR_WIN_INSTANCE);
Ctl3dUnregister(_hInstance); Ctl3dUnregister(_hInstance);
#endif #else
DeleteObject(NormalFont); DeleteObject(NormalFont);
DeleteObject(MaskBrush); DeleteObject(MaskBrush);
DeleteObject(NormalBrush); DeleteObject(NormalBrush);
DeleteObject(FocusBrush); DeleteObject(FocusBrush);
#endif
free_controls_bmp(); free_controls_bmp();
} }
#endif #endif
@ -547,9 +564,6 @@ void xvt_init_font()
LogFont.lfWidth = (int)font.get_long("Width"); LogFont.lfWidth = (int)font.get_long("Width");
LogFont.lfWeight = FontWeight = (int)font.get_long("Weight"); LogFont.lfWeight = FontWeight = (int)font.get_long("Weight");
LogFont.lfCharSet = (int)font.get_long("CharSet"); 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"); LogFont.lfPitchAndFamily = (int)font.get_long("Pitch");
strcpy(LogFont.lfFaceName, font.get("Name")); 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, WINDOW xvt_create_window(WIN_TYPE wt,
short x, short y, short dx, short dy, short x, short y, short dx, short dy,
const char* caption, WINDOW parent, const char* caption,
long flags, EVENT_HANDLER eh, long app_data int menu,
WINDOW parent,
long flags,
EVENT_HANDLER eh, long app_data
) )
{ {
RCT& rect = resize_rect(x, y, dx, dy, wt, parent); 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, WINDOW win = create_window(wt,
&rect, &rect,
(char*)caption, (char*)caption,
0, parent, menu, parent,
flags, flags,
EM_ALL, eh, EM_ALL, eh,
app_data); app_data);
@ -931,13 +948,18 @@ PAT_STYLE trans_brush(char p)
PEN_STYLE trans_pen(char p) PEN_STYLE trans_pen(char p)
{ {
PEN_STYLE ps = P_SOLID;
switch (p) switch (p)
{ {
case 'n' : return P_SOLID; break; case 'n' :
case '.' : return P_DOT; break; ps = P_SOLID; break;
case '-' : return P_DASH; break; case '.' :
default: CHECK(0,"trans_pen: Undefined pattern"); break; ps = P_DOT; break;
} case '-' :
return P_SOLID; 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, WIN_TYPE wt,
short x, short y, short dx, short dy, short x, short y, short dx, short dy,
const char* caption, WINDOW parent, const char* caption,
int menu, WINDOW parent,
long flags, long flags,
EVENT_HANDLER eh, EVENT_HANDLER eh,
long app_data long app_data
@ -61,6 +62,7 @@ WINDOW xvt_create_window
void xvt_check_radio_button(WINDOW win, const WINDOW* ctls, int count); void xvt_check_radio_button(WINDOW win, const WINDOW* ctls, int count);
int xvt_get_checked_radio(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); 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); bool xvt_test_menu_tag(MENU_TAG tag);