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:
angelo 1996-05-23 14:58:33 +00:00
parent c7eed2496e
commit 5acc9ab9a8
2 changed files with 38 additions and 11 deletions

View File

@ -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(); }

View File

@ -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);