ba*.cpp Corretto uso dei bool per 32 bit
ba883.cpp Migliorati test di velocita' batbban.uml Abbassata toolbar enorme git-svn-id: svn://10.65.10.50/trunk@6305 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
306e964e2c
commit
03dd119937
@ -546,13 +546,17 @@ bool TMenuitem::enabled() const
|
|||||||
const int endname = _action.find(' ');
|
const int endname = _action.find(' ');
|
||||||
TFilename name(endname > 0 ? _action.left(endname) : _action);
|
TFilename name(endname > 0 ? _action.left(endname) : _action);
|
||||||
const char* ext[] = { "exe", "pif", "com", "bat", NULL };
|
const char* ext[] = { "exe", "pif", "com", "bat", NULL };
|
||||||
|
yes = FALSE;
|
||||||
for (int e = 0; ext[e]; e++)
|
for (int e = 0; ext[e]; e++)
|
||||||
{
|
{
|
||||||
name.ext(ext[e]);
|
name.ext(ext[e]);
|
||||||
if (name.exist())
|
if (name.exist())
|
||||||
|
{
|
||||||
|
yes = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
yes = ext[e] != NULL;
|
|
||||||
|
}
|
||||||
if (!yes)
|
if (!yes)
|
||||||
((TMenuitem*)this)->_enabled = FALSE;
|
((TMenuitem*)this)->_enabled = FALSE;
|
||||||
}
|
}
|
||||||
|
@ -313,7 +313,7 @@ bool TManutenzione_app::create() // initvar e arrmask
|
|||||||
if (sw == "-D")
|
if (sw == "-D")
|
||||||
{
|
{
|
||||||
const int c = argc();
|
const int c = argc();
|
||||||
bool des_too = 1; // Anche le descrizioni
|
bool des_too = TRUE; // Anche le descrizioni
|
||||||
long modules = -1; // Tutti i moduli
|
long modules = -1; // Tutti i moduli
|
||||||
if (c < 4)
|
if (c < 4)
|
||||||
{
|
{
|
||||||
@ -327,7 +327,7 @@ bool TManutenzione_app::create() // initvar e arrmask
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (c == 5)
|
if (c == 5)
|
||||||
des_too = (bool)atoi(argv(4));
|
des_too = atoi(argv(4)) ? TRUE : FALSE;
|
||||||
if (c == 6)
|
if (c == 6)
|
||||||
modules = atol(argv(5));
|
modules = atol(argv(5));
|
||||||
prefix().set("");
|
prefix().set("");
|
||||||
|
@ -136,7 +136,7 @@ bool TEdit_file::_browse(TCursor& cursor, const TFilename& name)
|
|||||||
}
|
}
|
||||||
sheet.force_update();
|
sheet.force_update();
|
||||||
}
|
}
|
||||||
return K_ESC;
|
return ch != K_ESC;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TEdit_file::browse(int logicnum, const TFilename& name, const TString& tab)
|
bool TEdit_file::browse(int logicnum, const TFilename& name, const TString& tab)
|
||||||
|
@ -1139,7 +1139,7 @@ bool TFascicolator_mask::set_version_info(const TFilename& filename,
|
|||||||
outfile.seekp(position);
|
outfile.seekp(position);
|
||||||
outfile.write(str, str.len());
|
outfile.write(str, str.len());
|
||||||
}
|
}
|
||||||
ok = outfile.good();
|
ok = outfile.good() != 0;
|
||||||
if (!ok)
|
if (!ok)
|
||||||
error_box("Error writing signature in %s error n. %d", (const char *) filename, errno);
|
error_box("Error writing signature in %s error n. %d", (const char *) filename, errno);
|
||||||
}
|
}
|
||||||
@ -1184,7 +1184,7 @@ bool TFascicolator_mask::zip_module(const TString& main_module, bool agg, int pa
|
|||||||
TProgind pi(arr.items(), msg, TRUE, TRUE);
|
TProgind pi(arr.items(), msg, TRUE, TRUE);
|
||||||
TFilename cmd;
|
TFilename cmd;
|
||||||
struct _stat info;
|
struct _stat info;
|
||||||
unsigned long lasttime=0;
|
time_t lasttime=0;
|
||||||
|
|
||||||
FOR_EACH_ARRAY_ROW_BACK(arr, i, row)
|
FOR_EACH_ARRAY_ROW_BACK(arr, i, row)
|
||||||
{
|
{
|
||||||
@ -1205,7 +1205,7 @@ bool TFascicolator_mask::zip_module(const TString& main_module, bool agg, int pa
|
|||||||
submod.cut(2);
|
submod.cut(2);
|
||||||
set_version_info(cmd, ini, submod);
|
set_version_info(cmd, ini, submod);
|
||||||
}
|
}
|
||||||
_stat((const char *)cmd,&info);
|
_stat(cmd,&info);
|
||||||
lasttime = max(lasttime,info.st_mtime);
|
lasttime = max(lasttime,info.st_mtime);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -811,9 +811,8 @@ bool TInstaller_mask::on_key(KEY key)
|
|||||||
const int newpatch = r.get_int(C_PATCH);
|
const int newpatch = r.get_int(C_PATCH);
|
||||||
const TString16 curver = r.get(C_CURRRELEASE);
|
const TString16 curver = r.get(C_CURRRELEASE);
|
||||||
const int curpatch = r.get_int(C_CURRPATCH);
|
const int curpatch = r.get_int(C_CURRPATCH);
|
||||||
check(i, compare_version(newver, newpatch, curver, curpatch > 0));
|
check(i, compare_version(newver, newpatch, curver, curpatch) > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ok = TArray_sheet::on_key(key);
|
ok = TArray_sheet::on_key(key);
|
||||||
|
175
ba/ba1800.cpp
175
ba/ba1800.cpp
@ -1,9 +1,9 @@
|
|||||||
#include <extcdecl.h>
|
#include <extcdecl.h>
|
||||||
|
|
||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
#include <colors.h>
|
#include <colors.h>
|
||||||
#include <filetext.h>
|
#include <filetext.h>
|
||||||
#include <msksheet.h>
|
|
||||||
#include <prefix.h>
|
#include <prefix.h>
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
@ -87,156 +87,7 @@ HIDDEN int choose_isamfile(int selected)
|
|||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// THandled_mask
|
// TColumnizer_win & TColumnizer_field
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
enum TField_event { fe_null, fe_init, fe_modify, fe_button, fe_close,
|
|
||||||
se_enter, se_query_modify, se_notify_modify,
|
|
||||||
se_query_add, se_notify_add,
|
|
||||||
se_query_del, se_notify_del };
|
|
||||||
|
|
||||||
class THandled_mask : public TMask
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
static bool universal_handler(TMask_field& f, KEY k);
|
|
||||||
static bool universal_notifier(TSheet_field& f, int row, KEY k);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void set_handlers();
|
|
||||||
|
|
||||||
public:
|
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly) pure;
|
|
||||||
bool error_box(const char* fmt, ...); // No more f.error_box
|
|
||||||
|
|
||||||
THandled_mask() { }
|
|
||||||
THandled_mask(const char* name, int num = 0);
|
|
||||||
virtual ~THandled_mask() { }
|
|
||||||
};
|
|
||||||
|
|
||||||
bool THandled_mask::error_box(const char* fmt, ...)
|
|
||||||
{
|
|
||||||
TString message(1024);
|
|
||||||
char* msg = message.get_buffer();
|
|
||||||
va_list argptr;
|
|
||||||
va_start(argptr, fmt);
|
|
||||||
int len = vsprintf(msg, fmt, argptr);
|
|
||||||
CHECKD(len <= message.size(), "Error message too long: ", len);
|
|
||||||
va_end(argptr);
|
|
||||||
|
|
||||||
if (is_sheetmask() && !is_running())
|
|
||||||
{
|
|
||||||
xvt_statbar_set(msg);
|
|
||||||
beep();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
post_error_message(msg, 3);
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool THandled_mask::universal_handler(TMask_field& f, KEY key)
|
|
||||||
{
|
|
||||||
THandled_mask& wm = (THandled_mask&)f.mask();
|
|
||||||
TOperable_field& of = (TOperable_field&)f;
|
|
||||||
TField_event fe = fe_null;
|
|
||||||
long jolly = key;
|
|
||||||
switch (key)
|
|
||||||
{
|
|
||||||
case K_TAB:
|
|
||||||
if (wm.is_running() || wm.get_sheet() != NULL)
|
|
||||||
{
|
|
||||||
if (f.focusdirty() && f.is_edit())
|
|
||||||
fe = fe_modify;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
fe = fe_init;
|
|
||||||
break;
|
|
||||||
case K_SPACE:
|
|
||||||
if (!f.is_edit())
|
|
||||||
{
|
|
||||||
if (wm.is_running())
|
|
||||||
{
|
|
||||||
if (f.is_kind_of(CLASS_BUTTON_FIELD))
|
|
||||||
fe = fe_button;
|
|
||||||
else
|
|
||||||
fe = fe_modify;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
fe = fe_init;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case K_ENTER:
|
|
||||||
fe = fe_close;
|
|
||||||
break;
|
|
||||||
case K_F9:
|
|
||||||
if (f.is_edit())
|
|
||||||
fe = fe_button;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
fe = fe_null;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return fe == fe_null ? TRUE : wm.on_field_event(of, fe, jolly);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool THandled_mask::universal_notifier(TSheet_field& s, int row, KEY key)
|
|
||||||
{
|
|
||||||
THandled_mask& wm = (THandled_mask&)s.mask();
|
|
||||||
TField_event fe = fe_null;
|
|
||||||
switch (key)
|
|
||||||
{
|
|
||||||
case K_INS:
|
|
||||||
fe = se_query_add;
|
|
||||||
break;
|
|
||||||
case K_CTRL+K_INS:
|
|
||||||
fe = se_notify_add;
|
|
||||||
break;
|
|
||||||
case K_DEL:
|
|
||||||
fe = se_query_del;
|
|
||||||
break;
|
|
||||||
case K_CTRL+K_DEL:
|
|
||||||
fe = se_notify_del;
|
|
||||||
break;
|
|
||||||
case K_TAB:
|
|
||||||
fe = se_enter;
|
|
||||||
break;
|
|
||||||
case K_CTRL+K_TAB:
|
|
||||||
fe = se_query_modify;
|
|
||||||
break;
|
|
||||||
case K_ENTER:
|
|
||||||
fe = se_notify_modify;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return fe == fe_null ? TRUE : wm.on_field_event(s, fe, row);
|
|
||||||
}
|
|
||||||
|
|
||||||
void THandled_mask::set_handlers()
|
|
||||||
{
|
|
||||||
for (int i = fields()-1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
TMask_field& f = fld(i);
|
|
||||||
if (f.is_operable())
|
|
||||||
{
|
|
||||||
f.set_handler(universal_handler);
|
|
||||||
if (f.is_sheet())
|
|
||||||
((TSheet_field&)f).set_notify(universal_notifier);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
THandled_mask::THandled_mask(const char* name, int num)
|
|
||||||
: TMask(name, num)
|
|
||||||
{
|
|
||||||
set_handlers();
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
// TColumnizer_win
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TColumnizer_field;
|
class TColumnizer_field;
|
||||||
@ -293,7 +144,7 @@ public:
|
|||||||
void add_column(long col) { col_win().add_column(col); }
|
void add_column(long col) { col_win().add_column(col); }
|
||||||
long get_column(int index) const { return col_win().get_column(index); }
|
long get_column(int index) const { return col_win().get_column(index); }
|
||||||
|
|
||||||
TColumnizer_field(THandled_mask* m) : TWindowed_field(m) { }
|
TColumnizer_field(TMask* m) : TWindowed_field(m) { }
|
||||||
virtual ~TColumnizer_field() { }
|
virtual ~TColumnizer_field() { }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -461,15 +312,11 @@ TColumnizer_win::TColumnizer_win(int x, int y, int dx, int dy,
|
|||||||
set_scroll_max(columns(), rows());
|
set_scroll_max(columns(), rows());
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
// TColumnizer_field
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TWizard_mask
|
// TWizard_mask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TWizard_mask : public THandled_mask
|
class TWizard_mask : public TAutomask
|
||||||
{
|
{
|
||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
TRelation_description* _reldesc;
|
TRelation_description* _reldesc;
|
||||||
@ -479,7 +326,7 @@ class TWizard_mask : public THandled_mask
|
|||||||
protected: // TMask
|
protected: // TMask
|
||||||
virtual TMask_field* parse_field(TScanner& scanner);
|
virtual TMask_field* parse_field(TScanner& scanner);
|
||||||
|
|
||||||
protected: // THandled_mask
|
protected: // TAutomask
|
||||||
virtual bool on_field_event(TOperable_field& f, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& f, TField_event e, long jolly);
|
||||||
|
|
||||||
protected: // Internal use only
|
protected: // Internal use only
|
||||||
@ -509,9 +356,9 @@ public:
|
|||||||
// TFields_mask
|
// TFields_mask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TFields_mask : public THandled_mask
|
class TFields_mask : public TAutomask
|
||||||
{
|
{
|
||||||
protected: // THandled_mask
|
protected: // TAutomask
|
||||||
virtual bool on_field_event(TOperable_field& of, TField_event fe, long jolly);
|
virtual bool on_field_event(TOperable_field& of, TField_event fe, long jolly);
|
||||||
|
|
||||||
protected: // Internal use
|
protected: // Internal use
|
||||||
@ -586,7 +433,7 @@ bool TFields_mask::field_handler(TOperable_field& of, TField_event fe)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TFields_mask::TFields_mask(const char* name, int number)
|
TFields_mask::TFields_mask(const char* name, int number)
|
||||||
: THandled_mask(name, number)
|
: TAutomask(name, number)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -610,7 +457,7 @@ public:
|
|||||||
void describe_fields();
|
void describe_fields();
|
||||||
bool handler(TField_event fe, long row);
|
bool handler(TField_event fe, long row);
|
||||||
|
|
||||||
TFields_sheet(THandled_mask* m);
|
TFields_sheet(TAutomask* m);
|
||||||
virtual ~TFields_sheet();
|
virtual ~TFields_sheet();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -654,7 +501,7 @@ bool TFields_sheet::handler(TField_event fe, long row)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
TFields_sheet::TFields_sheet(THandled_mask* m)
|
TFields_sheet::TFields_sheet(TAutomask* m)
|
||||||
: TSheet_field(m), _sheet_mask(NULL)
|
: TSheet_field(m), _sheet_mask(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -1288,7 +1135,7 @@ TMask_field* TWizard_mask::parse_field(TScanner& scanner)
|
|||||||
return new TColumnizer_field(this);
|
return new TColumnizer_field(this);
|
||||||
if (key == "SP")
|
if (key == "SP")
|
||||||
return new TFields_sheet(this);
|
return new TFields_sheet(this);
|
||||||
return THandled_mask::parse_field(scanner);
|
return TAutomask::parse_field(scanner);
|
||||||
}
|
}
|
||||||
|
|
||||||
TWizard_mask::TWizard_mask()
|
TWizard_mask::TWizard_mask()
|
||||||
|
28
ba/ba883.cpp
28
ba/ba883.cpp
@ -66,7 +66,8 @@ bool TTab_application::user_create()
|
|||||||
TString16 m; m << "BATB" << t;
|
TString16 m; m << "BATB" << t;
|
||||||
_msk = new TMask(m) ;
|
_msk = new TMask(m) ;
|
||||||
|
|
||||||
TString80 tit = _msk->get_caption();
|
TString tit;
|
||||||
|
_msk->get_caption(tit);
|
||||||
set_title(tit);
|
set_title(tit);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -233,9 +234,10 @@ void TTest_application::main_loop()
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TBenchmark_application : public TApplication
|
class TBenchmark_application : public TSkeleton_application
|
||||||
{
|
{
|
||||||
clock_t _timer_start;
|
clock_t _timer_start;
|
||||||
|
TString _text;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void main_loop();
|
virtual void main_loop();
|
||||||
@ -281,7 +283,8 @@ void TBenchmark_application::initializing()
|
|||||||
|
|
||||||
void TBenchmark_application::start_test(const char* text)
|
void TBenchmark_application::start_test(const char* text)
|
||||||
{
|
{
|
||||||
xvt_statbar_set(text);
|
_text = text;
|
||||||
|
xvt_statbar_set(_text);
|
||||||
do_events();
|
do_events();
|
||||||
|
|
||||||
clock_t t;
|
clock_t t;
|
||||||
@ -297,20 +300,21 @@ void TBenchmark_application::stop_test()
|
|||||||
{
|
{
|
||||||
const clock_t t = clock() - _timer_start;
|
const clock_t t = clock() - _timer_start;
|
||||||
const double s = (double)t / CLOCKS_PER_SEC;
|
const double s = (double)t / CLOCKS_PER_SEC;
|
||||||
TString80 msg;
|
TString msg;
|
||||||
msg.format("Time to complete: %.1lf s", s);
|
msg.format("%s\nTempo totale: %.1lf s", (const char*)_text, s);
|
||||||
message_box(msg);
|
message_box(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TBenchmark_application::update_bar(long rec)
|
void TBenchmark_application::update_bar(long rec)
|
||||||
{
|
{
|
||||||
if ((rec & 0x7F) == 0)
|
rec++;
|
||||||
|
if ((rec % 500) == 0)
|
||||||
{
|
{
|
||||||
const double sec = double(clock() - _timer_start) / CLOCKS_PER_SEC;
|
const double sec = double(clock() - _timer_start) / CLOCKS_PER_SEC;
|
||||||
if (sec > 0.0)
|
if (sec > 0.0)
|
||||||
{
|
{
|
||||||
TString80 msg;
|
TString80 msg;
|
||||||
msg.format("%ld records at %ld rec/sec", rec, long(rec / sec));
|
msg.format("%ld record (%ld rec/sec)", rec, long(rec / sec));
|
||||||
xvt_statbar_set(msg);
|
xvt_statbar_set(msg);
|
||||||
do_events();
|
do_events();
|
||||||
}
|
}
|
||||||
@ -342,8 +346,6 @@ void TBenchmark_application::test_file_scan()
|
|||||||
|
|
||||||
void TBenchmark_application::test_relation_scan()
|
void TBenchmark_application::test_relation_scan()
|
||||||
{
|
{
|
||||||
int found = 0;
|
|
||||||
|
|
||||||
initializing();
|
initializing();
|
||||||
|
|
||||||
TRelation comuni(LF_COMUNI);
|
TRelation comuni(LF_COMUNI);
|
||||||
@ -352,8 +354,6 @@ void TBenchmark_application::test_relation_scan()
|
|||||||
comuni.first();
|
comuni.first();
|
||||||
for (TRecnotype rec = 0; !comuni.eof(); rec++)
|
for (TRecnotype rec = 0; !comuni.eof(); rec++)
|
||||||
{
|
{
|
||||||
if (comuni.curr().get("PROVCOM") == "RE")
|
|
||||||
found++;
|
|
||||||
comuni.next();
|
comuni.next();
|
||||||
update_bar(rec);
|
update_bar(rec);
|
||||||
}
|
}
|
||||||
@ -369,9 +369,11 @@ void TBenchmark_application::test_cursor_scan()
|
|||||||
TRelation comuni(LF_COMUNI);
|
TRelation comuni(LF_COMUNI);
|
||||||
TCursor cur(&comuni);
|
TCursor cur(&comuni);
|
||||||
|
|
||||||
|
TRecnotype tot = cur.items();
|
||||||
|
cur.freeze();
|
||||||
|
|
||||||
start_test("Scansione cursore COMUNI");
|
start_test("Scansione cursore COMUNI");
|
||||||
|
|
||||||
TRecnotype tot = cur.items();
|
|
||||||
cur = 0L;
|
cur = 0L;
|
||||||
for (TRecnotype c = 0; c < tot; c++)
|
for (TRecnotype c = 0; c < tot; c++)
|
||||||
{
|
{
|
||||||
@ -396,7 +398,7 @@ void TBenchmark_application::test_file_random()
|
|||||||
char code[8];
|
char code[8];
|
||||||
long found, notfound;
|
long found, notfound;
|
||||||
|
|
||||||
for (long n = 0; n < 1000; n++)
|
for (long n = 0; n < 4000; n++)
|
||||||
{
|
{
|
||||||
const char l = 'A' + rand() % 26;
|
const char l = 'A' + rand() % 26;
|
||||||
const int c = rand() % 100;
|
const int c = rand() % 100;
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
#include "ba3100.h"
|
#include "ba3100.h"
|
||||||
#include "batbban.h"
|
#include "batbban.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 18 0 3
|
TOOLBAR "" 0 19 0 3
|
||||||
#include <toolbar.h>
|
#include <toolbar.h>
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Tabella banche" -1 -1 78 18
|
PAGE "Tabella banche" -1 -1 78 18
|
||||||
|
Loading…
x
Reference in New Issue
Block a user