Patch level : 2.2

Files correlati     : maschere customizzate
Ricompilazione Demo : [ ]
Commento            :
Scrive in maniera evidenziata, sul fondo della maschera, se e' personalizzata
(e' contenuta nella dir custom)


git-svn-id: svn://10.65.10.50/trunk@13396 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2005-10-06 15:23:02 +00:00
parent a206a24738
commit e02a130b5e
3 changed files with 103 additions and 79 deletions

View File

@ -583,6 +583,33 @@ HIDDEN void xi_event_handler(XI_OBJ* itf, XI_EVENT* xiev)
}
}
}
TWindow* msk = (TWindow*)xi_get_app_data(itf);
if (msk != NULL && msk->is_kind_of(CLASS_MASK))
{
const TMask& m = (const TMask&)*msk;
WINDOW win = m.win();
if ((WINDOW)xi_get_window(itf) == win)
{
if (m.number() == 0 && m.source_file().find("custom") > 0)
{
RCT rct; xvt_vobj_get_client_rect(win, &rct);
rct.left += 2; rct.right -= 2; rct.bottom -= 2;
DRAW_CTOOLS dct;
xvt_dwin_get_draw_ctools(win, &dct);
dct.fore_color = FOCUS_COLOR;
dct.back_color = FOCUS_BACK_COLOR;
dct.opaque_text = TRUE;
xvt_dwin_set_draw_ctools(win, &dct);
xvt_dwin_set_font(win, DEF_FONT);
const char* text = "Custom";
const int tw = xvt_dwin_get_text_width(win, text, -1);
xvt_dwin_draw_text(win, rct.left, rct.bottom, text, -1);
xvt_dwin_draw_text(win, (rct.right-rct.left-tw)/2, rct.bottom, text, -1);
xvt_dwin_draw_text(win, rct.right-tw, rct.bottom, text, -1);
}
}
}
}
break;
case a_select:
@ -1624,19 +1651,17 @@ void TPushbutton_control::update()
if (attrib & XI_ATR_VISIBLE)
{
RCT rct = (RCT&) _obj->v.btn->rct;
XI_RCT rct = _obj->v.btn->rct;
rct.left += 5; rct.top += 5; rct.right -= 5; rct.bottom -= 5;
#ifdef XI_R4
XinWindow xiwin = xi_get_window(_obj->itf);
xi_set_clip(xiwin, (XinRect *) &rct );
#endif
WINDOW win = parent();
xi_set_clip((XinWindow)win, &rct);
// Cancello il testo sottostante
const WINDOW win = parent();
CBRUSH brush = { PAT_SOLID, BTN_BACK_COLOR };
xvt_dwin_set_cbrush(win, &brush);
xvt_dwin_set_std_cpen(win, TL_PEN_HOLLOW);
xvt_dwin_draw_rect(win, &rct);
xi_draw_rect((XinWindow)win, &rct);
const short bmp = (_bmp_dn > 0 && _obj->v.btn->down) ? _bmp_dn : _bmp_up;
if (bmp > 0)
@ -1699,9 +1724,7 @@ void TPushbutton_control::update()
}
}
}
#ifdef XI_R4
xi_set_clip(xiwin, NULL);
#endif
xi_set_clip((XinWindow)win, NULL);
}
}

View File

@ -66,7 +66,7 @@ void TMask::init_mask()
_enabled.set(MAX_PAGES);
_enabled.set(); // Abilita tutte le pagine
_should_check = TRUE;
_should_check = true;
_focus = _first_focus = 0; // Il primo ha il focus
_page = -1; // Nessuna pagina corrente
@ -160,7 +160,7 @@ void TMask::read_mask(
if (scanner.key() == "PA")
{
CHECKD(_pages < MAX_PAGES, "Maschera con troppe pagine: ", _pages);
WINDOW w = read_page(scanner, FALSE);
WINDOW w = read_page(scanner, false);
TString80 title;
xvt_vobj_get_title(w, title.get_buffer(), title.size());
@ -173,7 +173,7 @@ void TMask::read_mask(
if (scanner.key() == "TO")
{
CHECK(toolwin() == NULL_WIN, "La maschera puo' avere una sola TOOLBAR");
_pagewin[MAX_PAGES] = read_page(scanner, TRUE);
_pagewin[MAX_PAGES] = read_page(scanner, true);
}
}
@ -282,7 +282,7 @@ word TMask::class_id() const
bool TMask::is_kind_of(word c) const
{
if (c == CLASS_MASK)
return TRUE;
return true;
return TWindow::is_kind_of(c);
}
@ -290,9 +290,9 @@ void TMask::open()
{
if (!_open || _page != 0)
{
_open = TRUE;
_open = true;
if (toolwin())
xvt_vobj_set_visible(toolwin(), TRUE);
xvt_vobj_set_visible(toolwin(), true);
}
_focus = first_focus(0);
set_focus_field(fld(_focus).dlg());
@ -320,7 +320,7 @@ int TMask::first_focus(short id)
if (tempfirstfocus >= 0)
{
f = tempfirstfocus;
if (fld(f).dirty() == FALSE)
if (fld(f).dirty() == false)
fld(f).set_dirty();
tempfirstfocus = -1;
}
@ -387,22 +387,22 @@ bool TMask::can_be_closed() const
{
if (is_running())
{
bool ok = TRUE;
bool ok = true;
if ((edit_mode() || insert_mode()) && dirty() && id2pos(DLG_QUIT) < 0)
ok = yesno_box(TR("Annullare i dati inseriti?"));
if (ok)
((TMask*)this)->stop_run(K_FORCE_CLOSE);
return FALSE;
return false;
}
return TRUE; // Should never happen!
return true; // Should never happen!
}
void TMask::close()
{
_open = FALSE;
_open = false;
_page = -1;
for (int p = 0; p <= MAX_PAGES; p++)
if (_pagewin[p]) xvt_vobj_set_visible(_pagewin[p], FALSE);
if (_pagewin[p]) xvt_vobj_set_visible(_pagewin[p], false);
}
short TMask::dirty() const
@ -435,8 +435,8 @@ void TMask::enable_page(
byte page, // @parm Pagina da abilitare/disabilitare
bool on) // @parm Operazione da svolgere:
//
// @flag TRUE | Abilita la pagina <p p> (default)
// @flag FALSE | Disabilita la pagina <p p>
// @flag true | Abilita la pagina <p p> (default)
// @flag false | Disabilita la pagina <p p>
{
CHECK(page > 0, "Can't enable/disable first page");
@ -480,21 +480,21 @@ void TMask::start_run()
TMask_field& f = fld(i);
if (f.dirty() <= 1) // Attenzione puo' valere anche 3 per i very dirty!
{
f.set_dirty(FALSE);
f.set_dirty(false);
const bool op = f.is_operable() && !f.is_kind_of(CLASS_BUTTON_FIELD);
if (op && (f.active() || f.ghost()))
f.on_hit(); // Lancia messaggio di inizializzazione
}
}
}
_should_check = TRUE;
_should_check = true;
// Make sure that "nearly" all fields are clean!
for (int i = 0; i < max; i++)
{
TMask_field& f = fld(i);
if (f.dirty() == 1) // Attenzione puo' valere anche 3 per i very dirty!
f.set_dirty(FALSE);
f.set_dirty(false);
}
_init_time = clock()-start;
@ -523,15 +523,15 @@ bool TMask::check_fields()
}
if (sheet) f.set_dirty(); // Force check in sheet masks
if (f.on_key(K_ENTER) == FALSE)
if (f.on_key(K_ENTER) == false)
{
if (is_open())
set_focus_field(f.dlg());
return FALSE;
return false;
}
}
}
return TRUE;
return true;
}
void TMask::check_field( short fld_id )
@ -648,13 +648,13 @@ int TMask::find_parent_page(const TMask_field& f) const
//
// @rdesc Ritorna il risultato dell'operazione:
//
// @flag TRUE | E' riuscita a chiudere la maschera
// @flag FALSE | Non e' riuscita a chiudere la maschera
// @flag true | E' riuscita a chiudere la maschera
// @flag false | Non e' riuscita a chiudere la maschera
bool TMask::stop_run(
KEY key) // @parm Tasto che deve provocare la chiusura
// @comm Permette di chiudere la maschera come se l'utente avesse premuto il tasto <p key>.
// Nel caso la maschera non si chiuda (es. un check fallito), ritorna FALSE.
// Nel caso la maschera non si chiuda (es. un check fallito), ritorna false.
{
if (key != K_AUTO_ENTER && key != K_FORCE_CLOSE)
{
@ -672,7 +672,7 @@ bool TMask::stop_run(
}
}
if (i >= last)
return FALSE;
return false;
}
if (key == K_CTRL_ENTER || key == K_AUTO_ENTER)
@ -694,7 +694,7 @@ bool TMask::stop_run(
save_profile();
}
else
return FALSE;
return false;
}
return TWindow::stop_run(key);
@ -781,8 +781,8 @@ void TMask::handler(WINDOW win, EVENT* ep)
//
// @rdesc Ritrna se e' stto effetuato una azione:
//
// @flag TRUE | Era prevista una azione collegata al tasto ed e' stata eseguita
// @flag FALSE | Non era prevista nessuna azione collegata al tasto
// @flag true | Era prevista una azione collegata al tasto ed e' stata eseguita
// @flag false | Non era prevista nessuna azione collegata al tasto
bool TMask::on_key(
KEY key) // @parm Tasto premuto sulla maschera
@ -792,7 +792,8 @@ bool TMask::on_key(
if (_handler)
{
const bool cont = _handler(*this, key);
if (!cont) return FALSE;
if (!cont)
return false;
}
switch(key)
@ -855,7 +856,7 @@ bool TMask::on_key(
TSheet_field& s = (TSheet_field&)f;
const int newrow = s.append() ? -1 : 0;
notify_focus_field(s.dlg());
s.insert(newrow, TRUE, TRUE);
s.insert(newrow, true, true);
}
}
}
@ -889,12 +890,12 @@ bool TMask::on_key(
}
}
return TRUE;
return true;
}
bool TMask::on_dirty(TMask_field&)
{
return TRUE;
return true;
}
int TMask::win2page(WINDOW w) const
@ -949,7 +950,7 @@ WINDOW TMask::read_page(
bool toolbar) // @parm Indica se e' la toolbar
// @comm Il parametro <p toolbar> e' utilizzato per indicare se la pagina deve essere visualizzata
// a tutto schermo (TRUE) oppure no
// a tutto schermo (true) oppure no
{
static int tooly;
static RCT rect;
@ -987,16 +988,16 @@ WINDOW TMask::read_page(
if (!orecchie && !toolbar) // Controlla se la maschera ha piu' di una pagina
{
const streampos pos = scanner.tellg(); // Memorizza posizione dello scanner
while (TRUE)
while (true)
{
const TString& l = scanner.line();
if (l.empty() || l == "ENDMASK") // Fine maschera
break;
if (l.compare("PA", 2, TRUE) == 0) // Ho trovato un'altra pagina!
if (l.compare("PA", 2, true) == 0) // Ho trovato un'altra pagina!
{
orecchie = TRUE; // Quindi devo metterci le orecchie
orecchie = true; // Quindi devo metterci le orecchie
break;
}
}
@ -1007,7 +1008,7 @@ WINDOW TMask::read_page(
if (toolbar || toolwin())
{
if (toolbar)
w = create_interface(NULL_WIN, 0, r.top, 0, 0, title, this, FALSE);
w = create_interface(NULL_WIN, 0, r.top, 0, 0, title, this, false);
else
w = create_interface(NULL_WIN, 0, r.top, 0, tooly, title, this, orecchie);
}
@ -1044,7 +1045,7 @@ WINDOW TMask::read_page(
bool TMask::check_current_field() const
{
bool ok = TRUE;
bool ok = true;
if (_focus >= 0)
{
TMask_field& ff = fld(_focus);
@ -1132,9 +1133,9 @@ void TMask::next_page(
}
if (_page != prev)
{
xvt_vobj_set_visible(win(), TRUE);
xvt_vobj_set_visible(win(), true);
if (prev >= 0)
xvt_vobj_set_visible(_pagewin[prev], FALSE);
xvt_vobj_set_visible(_pagewin[prev], false);
}
TMask_field& ff = fld(_focus);
@ -1171,7 +1172,7 @@ void TMask::reset(short fld_id)
TMask_field& c = fld(f);
if (gr == 0 || c.in_group(gr))
{
c._flags.dirty = c._flags.focusdirty = FALSE;
c._flags.dirty = c._flags.focusdirty = false;
c.reset();
}
}
@ -1253,7 +1254,7 @@ void TMask::set(
short fld_id, // @parm Identificatore del campo da settare
const char* s, // @parm Stringa da assegnare al campo
byte hit) // @parm Indica se occorre rifare i controlli una volta settato il campo
// con il nuovo valore (default FALSE)
// con il nuovo valore (default false)
// @parm long | n | Numero da asegnare al campo
// @syntax set(short fld_id, const char *s, bool hit);
@ -1275,7 +1276,7 @@ void TMask::set(
const char * fld_id, // @parm FIELD del campo da settare
const char* str, // @parm Stringa da assegnare al campo
byte hit) // @parm Indica se occorre rifare i controlli una volta settato il campo
// con il nuovo valore (default FALSE)
// con il nuovo valore (default false)
// @parm long | n | Numero da asegnare al campo
// @syntax set(short fld_id, const char *s, bool hit);
@ -1322,8 +1323,8 @@ void TMask::set(short fld_id, const TCurrency& n, byte hit)
void TMask::activate(
bool on) // @parm Indica l'operazione da svolgere sul campo:
//
// @flag TRUE | Attiva la pagina(default)
// @flag FALSE | Disattiva la pagina
// @flag true | Attiva la pagina(default)
// @flag false | Disattiva la pagina
{
TWindow::activate(on);
if (toolwin() != NULL_WIN)
@ -1337,8 +1338,8 @@ void TMask::enable(
short fld_id, // @parm Identificatore del campo da abilitare (0 tutti i campi, <0 id gruppo)
bool on) // @parm Indica l'operazione da svolgere sul campo:
//
// @flag TRUE | Abilita il campo (default)
// @flag FALSE | Disabilita il campo
// @flag true | Abilita il campo (default)
// @flag false | Disabilita il campo
{
if (fld_id <= 0)
{
@ -1394,8 +1395,8 @@ void TMask::enable_key(
word key, // @parm Chiave di cui abilitare il campo
bool on) // @parm Indica l'operazione da svolgere sul tasto:
//
// @flag TRUE | Abilita il campo (default)
// @flag FALSE | Disabilita il campo
// @flag true | Abilita il campo (default)
// @flag false | Disabilita il campo
{
for (int i = fields()-1; i >= 0; i--)
@ -1424,8 +1425,8 @@ TEditable_field* TMask::get_key_field(
word key, // @parm Chiave di cui controllare l'esistenza
bool first) const // @parm Indica se la ricerca dev partire dell'inizio. Assume i valori:
//
// @flag TRUE | Comincia la ricerca dal primo campo della maschera
// @flag FALSE | Comincia la ricerca dal campo attuale nella maschera
// @flag true | Comincia la ricerca dal primo campo della maschera
// @flag false | Comincia la ricerca dal campo attuale nella maschera
{
static int last = 0;
@ -1473,8 +1474,8 @@ void TMask::show(
short fld_id, // @parm Campo da mostrare/nascondere (default -1)
bool on) // @parm Indica l'operazione da svolgere sul campo:
//
// @flag TRUE | Mostra il campo(default)
// @flag FALSE | Nasconde il campo
// @flag true | Mostra il campo(default)
// @flag false | Nasconde il campo
// @comm Se <p fld_id> e' -1 allora permette di operare su tutti i campi della maschera
@ -1603,7 +1604,7 @@ void TMask::on_idle()
if (!f.in_key(0) || !e.has_a_common_key(f))
{
e.test_key_complete(FALSE);
e.test_key_complete(false);
_test_fld = -1;
}
_last_test = f.dlg();
@ -2022,11 +2023,11 @@ TGroup_field& TMask::add_groupbox (
//
// @rdesc Ritorna il risultato dell'operazione:
//
// @flag TRUE | Se l'operazione e' avvenuta corretamente
// @flag FALSE | Se non si riesce a creare il file di salvataggio
// @flag true | Se l'operazione e' avvenuta corretamente
// @flag false | Se non si riesce a creare il file di salvataggio
bool TMask::save(
bool append) const // @parm Indica se creare il file o appendere (TRUE) le informazioni
// ad uno gia' esistente (FALSE, default).
bool append) const // @parm Indica se creare il file o appendere (true) le informazioni
// ad uno gia' esistente (false, default).
{
FILE* f = fopen(_workfile, append ? "a" : "w");
@ -2043,7 +2044,7 @@ bool TMask::save(
}
fprintf(f, "[EOM]\n");
fclose(f);
return TRUE;
return true;
}
@ -2053,18 +2054,18 @@ bool TMask::save(
//
// @rdesc Ritorna il risultato dell'operazione:
//
// @flag TRUE | Se l'operazione e' avvenuta corretamente
// @flag FALSE | Se non si riesce a leggere il file di salvataggio
// @flag true | Se l'operazione e' avvenuta corretamente
// @flag false | Se non si riesce a leggere il file di salvataggio
bool TMask::load(
bool reset) // @parm Indica la posizione di lettura del file:
//
// @flag TRUE | Comincia la lettura dell'inizio
// @flag FALSE | Comincia la lettura dalla posizione corrente dell'offset
// @flag true | Comincia la lettura dell'inizio
// @flag false | Comincia la lettura dalla posizione corrente dell'offset
{
FILE* f = fopen(_workfile, "r");
if (f == NULL) return FALSE;
if (f == NULL) return false;
if (reset) _lastpos = 0;
fseek(f, _lastpos, SEEK_SET);
TToken_string t(256);
@ -2080,7 +2081,7 @@ bool TMask::load(
}
_lastpos = ftell(f);
fclose(f);
return TRUE;
return true;
}
// @doc EXTERNAL
@ -2169,7 +2170,7 @@ int TMask::save_profile(int num, const char* desc) const
{
TSheet_field& s = (TSheet_field&)f;
FOR_EACH_SHEET_ROW(s, r, row)
ini.set(name, *row, NULL, TRUE, r);
ini.set(name, *row, NULL, true, r);
}
else
{

View File

@ -199,7 +199,7 @@ TString& TString::operator <<(double n)
}
// Appends an object to the string
// Certified 50%
// Certified 99%
// The object should be completely storable in spark
TString& TString::operator <<(const TObject& obj)
{
@ -355,7 +355,7 @@ int TString::find(
// un messaggio di errore
{
int pos = -1;
if (from < len())
if (from == 0 || from < len())
{
const char* p = strchr(_str + from, c);
if (p)
@ -393,10 +393,10 @@ HIDDEN const char* strstr(const char* string1, const char* string2)
int TString::find(const char* s, int from) const
{
int pos = -1;
if (from < len())
if (from == 0 || from < len())
{
const char* p = strstr(_str + from, s);
if (p)
if (p != NULL)
pos = int(p - _str);
}
return pos;