Aggiunto set_row con printrow
git-svn-id: svn://10.65.10.50/trunk@2751 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f9bb573d44
commit
239ebd45e8
@ -56,28 +56,16 @@ class _Transfield:public TObject
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class _Token:public TObject
|
class _Token : public TObject
|
||||||
{
|
{
|
||||||
friend class TPrint_application;
|
friend class TPrint_application;
|
||||||
int _tag;
|
int _tag;
|
||||||
int _row;
|
int _row;
|
||||||
public:
|
public:
|
||||||
int tag ()
|
int tag() const { return _tag; }
|
||||||
{
|
int row() const { return _row; }
|
||||||
return _tag;
|
void tag(int t) { _tag = t; }
|
||||||
}
|
void row (int r) { _row = r; }
|
||||||
int row ()
|
|
||||||
{
|
|
||||||
return _row;
|
|
||||||
}
|
|
||||||
void tag (int t)
|
|
||||||
{
|
|
||||||
_tag = t;
|
|
||||||
}
|
|
||||||
void row (int r)
|
|
||||||
{
|
|
||||||
_row = r;
|
|
||||||
}
|
|
||||||
virtual ~ _Token () {}
|
virtual ~ _Token () {}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -86,14 +74,10 @@ class _PrintfTok : public _Token
|
|||||||
{
|
{
|
||||||
friend class TPrint_application;
|
friend class TPrint_application;
|
||||||
TString _val;
|
TString _val;
|
||||||
public:
|
public:
|
||||||
_PrintfTok (int rw, const char *val):_val (0)
|
_PrintfTok (int rw, const char *val) : _val(val)
|
||||||
{
|
{ tag(0); row(rw); }
|
||||||
tag (0);
|
virtual ~_PrintfTok () {}
|
||||||
row (rw);
|
|
||||||
_val = val;
|
|
||||||
}
|
|
||||||
virtual ~ _PrintfTok () {}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class _FieldTok : public _Token
|
class _FieldTok : public _Token
|
||||||
@ -111,8 +95,8 @@ class _FieldTok : public _Token
|
|||||||
int size = -1, int dec = -1):
|
int size = -1, int dec = -1):
|
||||||
_fld (20)
|
_fld (20)
|
||||||
{
|
{
|
||||||
tag (1);
|
tag(1);
|
||||||
row (rw);
|
row(rw);
|
||||||
_fld = (const char *) fld;
|
_fld = (const char *) fld;
|
||||||
_flags = flags;
|
_flags = flags;
|
||||||
_size = size, _align = align;
|
_size = size, _align = align;
|
||||||
@ -142,11 +126,23 @@ class _PrintfRef : public _Token
|
|||||||
_fmt = fmt;
|
_fmt = fmt;
|
||||||
_fmt[0] = '%';
|
_fmt[0] = '%';
|
||||||
}
|
}
|
||||||
virtual ~ _PrintfRef ()
|
virtual ~ _PrintfRef () {}
|
||||||
{
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class _PrintRowToken : public _Token
|
||||||
|
// printrow direct
|
||||||
|
// must pass valid printrow (duplicated)
|
||||||
|
{
|
||||||
|
friend class TPrint_application;
|
||||||
|
TPrintrow _pr;
|
||||||
|
public:
|
||||||
|
TPrintrow& printrow() { return _pr; }
|
||||||
|
_PrintRowToken (int rw, TPrintrow& pr) : _pr((const TPrintrow&)pr)
|
||||||
|
{ tag(3); row(rw); }
|
||||||
|
virtual ~ _PrintRowToken () {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
void TPrint_application::_reset_tree(link_item * head)
|
void TPrint_application::_reset_tree(link_item * head)
|
||||||
{
|
{
|
||||||
if (head)
|
if (head)
|
||||||
@ -204,7 +200,7 @@ int TPrint_application::set_bookmark(
|
|||||||
|
|
||||||
void TPrint_application::add_file (const char *tab, int from)
|
void TPrint_application::add_file (const char *tab, int from)
|
||||||
{
|
{
|
||||||
add_file(TTable::name2log (tab), from);
|
add_file(TTable::name2log(tab), from);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @doc EXTERNAL
|
// @doc EXTERNAL
|
||||||
@ -432,19 +428,11 @@ const char* FLD (const char *tabname, const char *f, const char *picture)
|
|||||||
TString& fill_str (TString & t, char f)
|
TString& fill_str (TString & t, char f)
|
||||||
{
|
{
|
||||||
for (int kk = t.len () - 1; kk >= 0; kk--)
|
for (int kk = t.len () - 1; kk >= 0; kk--)
|
||||||
{
|
if (t[kk] == ' ') t[kk] = f;
|
||||||
if (t[kk] == ' ')
|
else break;
|
||||||
t[kk] = f;
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
for (kk = 0; kk < t.len (); kk++)
|
for (kk = 0; kk < t.len (); kk++)
|
||||||
{
|
if (t[kk] == ' ') t[kk] = f;
|
||||||
if (t[kk] == ' ')
|
else break;
|
||||||
t[kk] = f;
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -452,25 +440,16 @@ TString& fill_str (TString & t, char f)
|
|||||||
// Printapp code at last
|
// Printapp code at last
|
||||||
// ========================================================
|
// ========================================================
|
||||||
|
|
||||||
//void TPrint_application::enable_link(const char* descr, char fg, char bg)
|
|
||||||
// {
|
|
||||||
// printer().setlinkdescr(descr);
|
|
||||||
// }
|
|
||||||
|
|
||||||
void TPrint_application::select_cursor (int c)
|
void TPrint_application::select_cursor (int c)
|
||||||
{
|
{
|
||||||
if (c == -1)
|
if (c == -1) _cur = NULL;
|
||||||
_cur = NULL;
|
else _cur = (TCursor *) & _cursors[c];
|
||||||
else
|
|
||||||
_cur = (TCursor *) & _cursors[c];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TCursor* TPrint_application::get_cursor (int c)
|
TCursor* TPrint_application::get_cursor (int c)
|
||||||
{
|
{
|
||||||
if (c == -1)
|
if (c == -1) return NULL;
|
||||||
return NULL;
|
else return (TCursor *) & _cursors[c];
|
||||||
else
|
|
||||||
return (TCursor *) & _cursors[c];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// @doc EXTERNAL
|
// @doc EXTERNAL
|
||||||
@ -490,7 +469,7 @@ int TPrint_application::add_cursor (
|
|||||||
return -1;
|
return -1;
|
||||||
_cursors.add (c);
|
_cursors.add (c);
|
||||||
_cur = c;
|
_cur = c;
|
||||||
return _cursors.items () - 1;
|
return _cursors.items() - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrint_application::reset_row (int r)
|
void TPrint_application::reset_row (int r)
|
||||||
@ -599,6 +578,17 @@ void TPrint_application::merge_export_file(const char* file, bool header, bool d
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TPrint_application::set_row(int r, TPrintrow& pr)
|
||||||
|
{
|
||||||
|
CHECK (r >= 1, "Print rows start at 1");
|
||||||
|
_print_defined = TRUE;
|
||||||
|
_currow = --r;
|
||||||
|
if (_currow > _maxrow)
|
||||||
|
_maxrow = _currow;
|
||||||
|
_rows.add(new _PrintRowToken(_currow, pr));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// @doc EXTERNAL
|
// @doc EXTERNAL
|
||||||
|
|
||||||
// @mfunc Permette di settare una riga di stampa
|
// @mfunc Permette di settare una riga di stampa
|
||||||
@ -719,7 +709,7 @@ void TPrint_application::set_row (
|
|||||||
_maxrow = _currow;
|
_maxrow = _currow;
|
||||||
|
|
||||||
va_list params;
|
va_list params;
|
||||||
va_start (params, frmt);
|
va_start(params, frmt);
|
||||||
|
|
||||||
// parse format string
|
// parse format string
|
||||||
while ((ch = *fmt++) != '\0')
|
while ((ch = *fmt++) != '\0')
|
||||||
@ -753,7 +743,6 @@ void TPrint_application::set_row (
|
|||||||
digbuf[i] = '\0';
|
digbuf[i] = '\0';
|
||||||
dec = atoi (digbuf);
|
dec = atoi (digbuf);
|
||||||
flags |= DEC_FLAG;
|
flags |= DEC_FLAG;
|
||||||
// ch = *fmt++;
|
|
||||||
}
|
}
|
||||||
else if (ch == ',')
|
else if (ch == ',')
|
||||||
{
|
{
|
||||||
@ -807,31 +796,37 @@ void TPrint_application::set_row (
|
|||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
flags |= IGNORE_FILL;
|
flags |= IGNORE_FILL;
|
||||||
|
// fall down
|
||||||
case 't':
|
case 't':
|
||||||
flags |= TRANS_FLAG;
|
flags |= TRANS_FLAG;
|
||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
flags |= IGNORE_FILL;
|
flags |= IGNORE_FILL;
|
||||||
|
// fall down
|
||||||
case 'd':
|
case 'd':
|
||||||
flags |= DATE_FLAG;
|
flags |= DATE_FLAG;
|
||||||
break;
|
break;
|
||||||
case 'F':
|
case 'F':
|
||||||
flags |= IGNORE_FILL;
|
flags |= IGNORE_FILL;
|
||||||
|
// fall down
|
||||||
case 'f':
|
case 'f':
|
||||||
flags |= BOOLEAN_FLAG;
|
flags |= BOOLEAN_FLAG;
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
flags |= IGNORE_FILL;
|
flags |= IGNORE_FILL;
|
||||||
|
// fall down
|
||||||
case 's':
|
case 's':
|
||||||
flags |= STRING_FLAG;
|
flags |= STRING_FLAG;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
flags |= IGNORE_FILL;
|
flags |= IGNORE_FILL;
|
||||||
|
// fall down
|
||||||
case 'c':
|
case 'c':
|
||||||
flags |= RECNO_FLAG;
|
flags |= RECNO_FLAG;
|
||||||
break;
|
break;
|
||||||
case 'N':
|
case 'N':
|
||||||
flags |= IGNORE_FILL;
|
flags |= IGNORE_FILL;
|
||||||
|
// fall down
|
||||||
case 'n':
|
case 'n':
|
||||||
flags |= NUMBER_FLAG;
|
flags |= NUMBER_FLAG;
|
||||||
break;
|
break;
|
||||||
@ -846,8 +841,7 @@ void TPrint_application::set_row (
|
|||||||
flags & STRING_FLAG)
|
flags & STRING_FLAG)
|
||||||
{
|
{
|
||||||
char *xxx = va_arg (params, char *);
|
char *xxx = va_arg (params, char *);
|
||||||
_rows.add (new _FieldTok (_currow, xxx,
|
_rows.add (new _FieldTok (_currow, xxx, flags, align, size, dec));
|
||||||
flags, align, size, dec));
|
|
||||||
}
|
}
|
||||||
flags = 0x0000;
|
flags = 0x0000;
|
||||||
align = 'l';
|
align = 'l';
|
||||||
@ -882,8 +876,7 @@ void TPrint_application::set_row (
|
|||||||
islong = TRUE;
|
islong = TRUE;
|
||||||
ch = *fmt++;
|
ch = *fmt++;
|
||||||
if (ch == '\0')
|
if (ch == '\0')
|
||||||
fatal_box ("sorry, zer's samzing vruong"
|
fatal_box ("sorry, zer's samzing vruong uitz ioar format.");
|
||||||
" uitz ioar format.");
|
|
||||||
}
|
}
|
||||||
if (isupper (ch))
|
if (isupper (ch))
|
||||||
{
|
{
|
||||||
@ -911,15 +904,13 @@ void TPrint_application::set_row (
|
|||||||
case 'o':
|
case 'o':
|
||||||
case 'x':
|
case 'x':
|
||||||
case 'X':
|
case 'X':
|
||||||
q.format (t, islong ? va_arg (params, long) :
|
q.format (t, islong ? va_arg (params, long) : va_arg (params, int));
|
||||||
va_arg (params, int));
|
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
case 'e':
|
case 'e':
|
||||||
case 'E':
|
case 'E':
|
||||||
case 'G':
|
case 'G':
|
||||||
q.format (t, islong ? va_arg (params, double) :
|
q.format (t, islong ? va_arg (params, double) : va_arg (params, float));
|
||||||
va_arg (params, float));
|
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
q.format (t, va_arg (params, char));
|
q.format (t, va_arg (params, char));
|
||||||
@ -928,17 +919,12 @@ void TPrint_application::set_row (
|
|||||||
q.format (t, va_arg (params, char *));
|
q.format (t, va_arg (params, char *));
|
||||||
break;
|
break;
|
||||||
case 't': // TString
|
case 't': // TString
|
||||||
|
q.format(t,(const char*)(TString)*((va_arg (params, TString*))));
|
||||||
q.format (t, (const char *)
|
|
||||||
(TString) * ((va_arg (params, TString *))));
|
|
||||||
break;
|
break;
|
||||||
case 'a': // TParagraph_string
|
case 'a': // TParagraph_string
|
||||||
|
q.format(t,(const char*)(TParagraph_string)*((va_arg (params, TParagraph_string*))));
|
||||||
q.format (t, (const char *)
|
|
||||||
(TParagraph_string) * ((va_arg (params, TParagraph_string *))));
|
|
||||||
break;
|
break;
|
||||||
case 'r': // Real
|
case 'r': // Real
|
||||||
|
|
||||||
{
|
{
|
||||||
const real& rrr = * va_arg (params, real *);
|
const real& rrr = * va_arg (params, real *);
|
||||||
if (t.len () == 2 && *_picture)
|
if (t.len () == 2 && *_picture)
|
||||||
@ -970,8 +956,7 @@ void TPrint_application::set_row (
|
|||||||
_rows.add (new _PrintfTok (_currow, q));
|
_rows.add (new _PrintfTok (_currow, q));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_rows.add (new _PrintfRef (_currow, t, ch,
|
_rows.add (new _PrintfRef (_currow, t, ch, va_arg (params, void *)));
|
||||||
va_arg (params, void *)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -989,7 +974,7 @@ void TPrint_application::set_row (
|
|||||||
if (strind)
|
if (strind)
|
||||||
{
|
{
|
||||||
strbuf[strind] = '\0';
|
strbuf[strind] = '\0';
|
||||||
_rows.add (new _PrintfTok (_currow, strbuf));
|
_rows.add(new _PrintfTok (_currow, strbuf));
|
||||||
strind = 0;
|
strind = 0;
|
||||||
}
|
}
|
||||||
va_end (params);
|
va_end (params);
|
||||||
@ -1038,16 +1023,13 @@ void TPrint_application::print()
|
|||||||
//************************************************
|
//************************************************
|
||||||
while (nc--)
|
while (nc--)
|
||||||
{
|
{
|
||||||
|
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
bool ok = TRUE;
|
bool ok = TRUE;
|
||||||
do
|
do {
|
||||||
{
|
|
||||||
if (preprocess_print (0, cnt))
|
if (preprocess_print (0, cnt))
|
||||||
{
|
{
|
||||||
int cnt2 = 0;
|
int cnt2 = 0;
|
||||||
do
|
do {
|
||||||
{
|
|
||||||
if (preprocess_page (0, cnt2))
|
if (preprocess_page (0, cnt2))
|
||||||
{
|
{
|
||||||
set_page (0, cnt2);
|
set_page (0, cnt2);
|
||||||
@ -1168,12 +1150,12 @@ bool TPrint_application::print_one (
|
|||||||
if (_prind && file == _pr_tree->_logicnum)
|
if (_prind && file == _pr_tree->_logicnum)
|
||||||
_prind->addstatus (1);
|
_prind->addstatus (1);
|
||||||
|
|
||||||
TArray rw (_maxrow + 1);
|
TArray rw(_maxrow + 1);
|
||||||
int *pos = new int[_maxrow + 1];
|
int *pos = new int[_maxrow + 1];
|
||||||
|
|
||||||
for (i = 0; i <= _maxrow; i++)
|
for (i = 0; i <= _maxrow; i++)
|
||||||
{
|
{
|
||||||
rw.add (new TPrintrow ());
|
rw.add(new TPrintrow());
|
||||||
pos[i] = -1;
|
pos[i] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1181,16 +1163,20 @@ bool TPrint_application::print_one (
|
|||||||
for (i = 0; i <= _maxrow; i++)
|
for (i = 0; i <= _maxrow; i++)
|
||||||
for (int j = 0; j < _rows.items (); j++)
|
for (int j = 0; j < _rows.items (); j++)
|
||||||
{
|
{
|
||||||
_Token *t = (_Token *) & (_rows[j]);
|
_Token* t = (_Token*)&(_rows[j]);
|
||||||
if (!t)
|
if (!t) continue; // should not happen
|
||||||
continue; // should not happen
|
|
||||||
|
|
||||||
if (t->row () == i)
|
if (t->row() == i)
|
||||||
{
|
{
|
||||||
char pic[36], fn[17];
|
char pic[36], fn[17];
|
||||||
int ch, ln, from, to;
|
int ch, ln, from, to;
|
||||||
|
|
||||||
if (t->tag () == 1)
|
if (t->tag() == 3)
|
||||||
|
{
|
||||||
|
_PrintRowToken* r = (_PrintRowToken*)t;
|
||||||
|
rw.add(r->printrow(), r->row());
|
||||||
|
}
|
||||||
|
else if (t->tag () == 1)
|
||||||
{
|
{
|
||||||
// it's a _FieldTok
|
// it's a _FieldTok
|
||||||
_FieldTok *ft = (_FieldTok *) t;
|
_FieldTok *ft = (_FieldTok *) t;
|
||||||
@ -1215,7 +1201,7 @@ bool TPrint_application::print_one (
|
|||||||
st = normalstyle;
|
st = normalstyle;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
((TPrintrow *) (&rw[ft->row ()]))->set_style (st);
|
((TPrintrow *)(&rw[ft->row()]))->set_style (st);
|
||||||
}
|
}
|
||||||
else if (ft->_flags & JUMP_FLAG)
|
else if (ft->_flags & JUMP_FLAG)
|
||||||
{
|
{
|
||||||
@ -1230,8 +1216,7 @@ bool TPrint_application::print_one (
|
|||||||
else
|
else
|
||||||
// jump ahead
|
// jump ahead
|
||||||
pos[ft->row ()] =
|
pos[ft->row ()] =
|
||||||
((TPrintrow *) (&rw[ft->row ()]))->
|
((TPrintrow *) (&rw[ft->row ()]))->lastpos () + p;
|
||||||
lastpos () + p;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1280,9 +1265,7 @@ bool TPrint_application::print_one (
|
|||||||
toprint = d.string (ft->_flags & LONG_FLAG ? full : brief);
|
toprint = d.string (ft->_flags & LONG_FLAG ? full : brief);
|
||||||
if (toprint.empty ())
|
if (toprint.empty ())
|
||||||
{
|
{
|
||||||
toprint = (ft->_flags & LONG_FLAG ?
|
toprint = (ft->_flags & LONG_FLAG ? " - - " : " - - ");
|
||||||
" - - " :
|
|
||||||
" - - ");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ft->_flags & BOOLEAN_FLAG)
|
else if (ft->_flags & BOOLEAN_FLAG)
|
||||||
@ -1298,8 +1281,7 @@ bool TPrint_application::print_one (
|
|||||||
|
|
||||||
if (ft->_flags & PICTURE_FLAG)
|
if (ft->_flags & PICTURE_FLAG)
|
||||||
pict = pic;
|
pict = pic;
|
||||||
else if (!(ft->_flags & DEC_FLAG) && *_picture
|
else if (!(ft->_flags & DEC_FLAG) && *_picture && isreal)
|
||||||
&& isreal)
|
|
||||||
pict = _picture;
|
pict = _picture;
|
||||||
|
|
||||||
if (pict.len () > 0)
|
if (pict.len () > 0)
|
||||||
@ -1345,12 +1327,10 @@ bool TPrint_application::print_one (
|
|||||||
if (_fillchar != ' ' && !(ft->_flags & IGNORE_FILL))
|
if (_fillchar != ' ' && !(ft->_flags & IGNORE_FILL))
|
||||||
toprint = fill_str (toprint, _fillchar);
|
toprint = fill_str (toprint, _fillchar);
|
||||||
// add to print row
|
// add to print row
|
||||||
((TPrintrow *) (&rw[ft->row ()]))->put (toprint,
|
((TPrintrow *)(&rw[ft->row()]))->put (toprint, pos[ft->row ()]);
|
||||||
pos[ft->row ()]);
|
if (pos[ft->row()] != -1)
|
||||||
if (pos[ft->row ()] != -1)
|
|
||||||
pos[ft->row ()] += toprint.len ();
|
pos[ft->row ()] += toprint.len ();
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (t->tag () == 0)
|
else if (t->tag () == 0)
|
||||||
{
|
{
|
||||||
// it's a _PrintfTok
|
// it's a _PrintfTok
|
||||||
|
@ -296,6 +296,9 @@ public:
|
|||||||
// @cmember Permette di settare una riga di stampa
|
// @cmember Permette di settare una riga di stampa
|
||||||
void set_row(int r, const char* fmt, ...);
|
void set_row(int r, const char* fmt, ...);
|
||||||
|
|
||||||
|
// @cmember Setta riga di stampa usando una printrow gia' fatta
|
||||||
|
void set_row(int r, TPrintrow& pr);
|
||||||
|
|
||||||
// @cmember Setta i valori di traduzione per campi
|
// @cmember Setta i valori di traduzione per campi
|
||||||
void set_translation(int lognum, const char* field, const char* from, const char* to);
|
void set_translation(int lognum, const char* field, const char* from, const char* to);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user