Modifica per l'importazione/esportazione delle descrizioni nei
files dei tracciati (.TRR). git-svn-id: svn://10.65.10.50/trunk@2895 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c7eed2496e
commit
5acc9ab9a8
@ -59,6 +59,7 @@ protected:
|
||||
static bool key_notify(TSheet_field& s, int r, KEY k);
|
||||
static bool fld_notify(TSheet_field& s, int r, KEY k);
|
||||
void save();
|
||||
void save_desc();
|
||||
|
||||
virtual long get_items() const { return _rec->fields(); }
|
||||
|
||||
|
@ -177,13 +177,8 @@ bool TRec_sheet::key_notify(TSheet_field& f, int r, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TRec_sheet::save()
|
||||
|
||||
void TRec_sheet::save_desc()
|
||||
{
|
||||
if ((*_rec == *_rec_old && !_descr) ||
|
||||
!yesnocancel_box("Salvare le modifiche")) return;
|
||||
TSystemisamfile f(_rec->num());
|
||||
|
||||
if (_descr)
|
||||
{
|
||||
TSheet_field& f1 = (TSheet_field&) _mask->field(F_FIELDS);
|
||||
@ -195,6 +190,15 @@ void TRec_sheet::save()
|
||||
delete _descr;
|
||||
_descr = new TConfig(_descfname, DESCPAR);
|
||||
}
|
||||
}
|
||||
|
||||
void TRec_sheet::save()
|
||||
|
||||
{
|
||||
if ((*_rec == *_rec_old && !_descr) ||
|
||||
!yesnocancel_box("Salvare le modifiche")) return;
|
||||
TSystemisamfile f(_rec->num());
|
||||
save_desc();
|
||||
f.update(*_rec);
|
||||
*_rec_old = *_rec;
|
||||
}
|
||||
@ -203,6 +207,7 @@ void TRec_sheet::save()
|
||||
void TRec_sheet::edit()
|
||||
|
||||
{
|
||||
bool import_dirty = FALSE;
|
||||
TSheet_field& f1 = (TSheet_field&) _mask->field(F_FIELDS);
|
||||
TSheet_field& f2 = (TSheet_field&) _mask->field(F_KEYS);
|
||||
|
||||
@ -246,6 +251,7 @@ void TRec_sheet::edit()
|
||||
f2.disable_cell(0, 1);
|
||||
while (TRUE)
|
||||
{
|
||||
f1.force_update(0); // Non togliere, serve per fare l'update della descrizione quando si fa l'import!!
|
||||
switch (_mask->run())
|
||||
{
|
||||
case K_SAVE:
|
||||
@ -271,8 +277,22 @@ void TRec_sheet::edit()
|
||||
_rec->update_keydef(i, s);
|
||||
}
|
||||
save();
|
||||
return;
|
||||
}
|
||||
case K_ESC:
|
||||
if (_descr && (_mask->dirty() || import_dirty))
|
||||
{
|
||||
// Se viene premuto Annulla NON deve salvare le descrizioni! Altrimenti che annulla e'?
|
||||
// Salva il vecchio file di descrizione con un altro nome...
|
||||
if (!import_dirty)
|
||||
fcopy(_descfname,"des.xxx");
|
||||
// libera _descr (scrivendo il file)
|
||||
delete _descr;
|
||||
_descr = NULL;
|
||||
// Ripristina il vecchio file e rimuove il file temporaneo
|
||||
fcopy("des.xxx",_descfname);
|
||||
}
|
||||
remove("des.xxx");
|
||||
return;
|
||||
case K_ENTER:
|
||||
dispatch_e_menu(TASK_WIN, M_FILE_PRINT);
|
||||
@ -281,7 +301,7 @@ void TRec_sheet::edit()
|
||||
{
|
||||
TMask m("ba1100f");
|
||||
TFilename nout(_dir->name());
|
||||
|
||||
|
||||
nout.strip("$%");
|
||||
nout.ext("trr");
|
||||
m.set(F_NOMEF, nout);
|
||||
@ -290,8 +310,11 @@ void TRec_sheet::edit()
|
||||
const TFilename nf(m.get(F_NOMEF));
|
||||
if (nf.not_empty())
|
||||
{
|
||||
save_desc();
|
||||
_rec->set_des(_descr,_tab.upper());
|
||||
ofstream out(nf);
|
||||
out << *_rec;
|
||||
_rec->set_des();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -309,12 +332,15 @@ void TRec_sheet::edit()
|
||||
const TFilename nf(m.get(F_NOMEF));
|
||||
if (nf.not_empty())
|
||||
{
|
||||
import_dirty = TRUE;
|
||||
_rec->set_des(_descr,_tab.upper());
|
||||
ifstream in(nf);
|
||||
in >> *_rec;
|
||||
nfields = _rec->fields();
|
||||
f1.reset();
|
||||
nfields = _rec->fields();
|
||||
fcopy(_descfname,"des.xxx"); // salva il vecchio file di descrizioni
|
||||
f1.destroy(-1);
|
||||
for (int i = 0; i < nfields; i++)
|
||||
{
|
||||
{
|
||||
f1.row(i) = _rec->fielddef(i);
|
||||
if (_descr)
|
||||
f1.row(i).add(_descr->get(_rec->rec()->Fd[i].Name));
|
||||
@ -338,7 +364,7 @@ void TRec_sheet::edit()
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
nkeys = _rec->keys();
|
||||
f2.reset();
|
||||
for (i = 0; i < nkeys; i++) f2.row(i) = _rec->keydef(i);
|
||||
|
Loading…
x
Reference in New Issue
Block a user