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 key_notify(TSheet_field& s, int r, KEY k);
static bool fld_notify(TSheet_field& s, int r, KEY k); static bool fld_notify(TSheet_field& s, int r, KEY k);
void save(); void save();
void save_desc();
virtual long get_items() const { return _rec->fields(); } 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; 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) if (_descr)
{ {
TSheet_field& f1 = (TSheet_field&) _mask->field(F_FIELDS); TSheet_field& f1 = (TSheet_field&) _mask->field(F_FIELDS);
@ -195,6 +190,15 @@ void TRec_sheet::save()
delete _descr; delete _descr;
_descr = new TConfig(_descfname, DESCPAR); _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); f.update(*_rec);
*_rec_old = *_rec; *_rec_old = *_rec;
} }
@ -203,6 +207,7 @@ void TRec_sheet::save()
void TRec_sheet::edit() void TRec_sheet::edit()
{ {
bool import_dirty = FALSE;
TSheet_field& f1 = (TSheet_field&) _mask->field(F_FIELDS); TSheet_field& f1 = (TSheet_field&) _mask->field(F_FIELDS);
TSheet_field& f2 = (TSheet_field&) _mask->field(F_KEYS); TSheet_field& f2 = (TSheet_field&) _mask->field(F_KEYS);
@ -246,6 +251,7 @@ void TRec_sheet::edit()
f2.disable_cell(0, 1); f2.disable_cell(0, 1);
while (TRUE) while (TRUE)
{ {
f1.force_update(0); // Non togliere, serve per fare l'update della descrizione quando si fa l'import!!
switch (_mask->run()) switch (_mask->run())
{ {
case K_SAVE: case K_SAVE:
@ -271,8 +277,22 @@ void TRec_sheet::edit()
_rec->update_keydef(i, s); _rec->update_keydef(i, s);
} }
save(); save();
return;
} }
case K_ESC: 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; return;
case K_ENTER: case K_ENTER:
dispatch_e_menu(TASK_WIN, M_FILE_PRINT); dispatch_e_menu(TASK_WIN, M_FILE_PRINT);
@ -281,7 +301,7 @@ void TRec_sheet::edit()
{ {
TMask m("ba1100f"); TMask m("ba1100f");
TFilename nout(_dir->name()); TFilename nout(_dir->name());
nout.strip("$%"); nout.strip("$%");
nout.ext("trr"); nout.ext("trr");
m.set(F_NOMEF, nout); m.set(F_NOMEF, nout);
@ -290,8 +310,11 @@ void TRec_sheet::edit()
const TFilename nf(m.get(F_NOMEF)); const TFilename nf(m.get(F_NOMEF));
if (nf.not_empty()) if (nf.not_empty())
{ {
save_desc();
_rec->set_des(_descr,_tab.upper());
ofstream out(nf); ofstream out(nf);
out << *_rec; out << *_rec;
_rec->set_des();
} }
} }
} }
@ -309,12 +332,15 @@ void TRec_sheet::edit()
const TFilename nf(m.get(F_NOMEF)); const TFilename nf(m.get(F_NOMEF));
if (nf.not_empty()) if (nf.not_empty())
{ {
import_dirty = TRUE;
_rec->set_des(_descr,_tab.upper());
ifstream in(nf); ifstream in(nf);
in >> *_rec; in >> *_rec;
nfields = _rec->fields(); nfields = _rec->fields();
f1.reset(); fcopy(_descfname,"des.xxx"); // salva il vecchio file di descrizioni
f1.destroy(-1);
for (int i = 0; i < nfields; i++) for (int i = 0; i < nfields; i++)
{ {
f1.row(i) = _rec->fielddef(i); f1.row(i) = _rec->fielddef(i);
if (_descr) if (_descr)
f1.row(i).add(_descr->get(_rec->rec()->Fd[i].Name)); f1.row(i).add(_descr->get(_rec->rec()->Fd[i].Name));
@ -338,7 +364,7 @@ void TRec_sheet::edit()
default: default:
break; break;
} }
} }
nkeys = _rec->keys(); nkeys = _rec->keys();
f2.reset(); f2.reset();
for (i = 0; i < nkeys; i++) f2.row(i) = _rec->keydef(i); for (i = 0; i < nkeys; i++) f2.row(i) = _rec->keydef(i);