Corretto il salvataggio degli oggetti golem e la determinazione della

esatta directory da utilizzare per i medesimi (com o ditta?)


git-svn-id: svn://10.65.10.50/trunk@5578 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1997-11-07 15:07:06 +00:00
parent 1ccc383de3
commit a0b2c1c372

View File

@ -224,17 +224,16 @@ bool TGolem_mask::file_handler(TMask_field& f, KEY k)
strcpy(fs.name, "*.*"); strcpy(fs.name, "*.*");
strcpy(fs.creator, "GOLEM"); strcpy(fs.creator, "GOLEM");
xvt_fsys_save_dir(); DIRECTORY dir; xvt_fsys_get_dir(&dir);
FL_STATUS ok = xvt_dm_post_file_open(&fs, "Selezionare il file ..."); FL_STATUS ok = xvt_dm_post_file_open(&fs, "Selezionare il file ...");
xvt_fsys_set_dir(&dir);
if (ok == FL_OK) if (ok == FL_OK)
{ {
xvt_fsys_restore_dir();
TFilename file; TFilename file;
xvt_fsys_convert_dir_to_str(&fs.dir, file.get_buffer(), file.size()); xvt_fsys_convert_dir_to_str(&fs.dir, file.get_buffer(), file.size());
file.add(fs.name); file.add(fs.name);
file.ext(fs.type); m.set(S_FILE, file);
f.set(file);
k = K_TAB; k = K_TAB;
} }
} }
@ -468,9 +467,12 @@ bool TGolem_field::autosave(TRelation& r)
TToken_string new_value(get(), '\n'); TToken_string new_value(get(), '\n');
if (new_value != _old_value) if (new_value != _old_value)
{ {
TFilename golem_path; TDir dir;
TDir dir; dir.get(r.lfile().num()); const int logicnum = r.lfile().num();
dir.get(logicnum, _nolock, _nordir, _sysdirop);
const long ditta = dir.is_com() ? 0 : prefix().get_codditta(); const long ditta = dir.is_com() ? 0 : prefix().get_codditta();
TFilename golem_path;
golem_path = firm2dir(ditta); golem_path = firm2dir(ditta);
golem_path.add("golem"); golem_path.add("golem");
if (!fexist(golem_path)) if (!fexist(golem_path))
@ -492,15 +494,16 @@ bool TGolem_field::autosave(TRelation& r)
if (old_file != new_file) if (old_file != new_file)
{ {
const was_stored = old_row.get_char(2) <= ' '; const was_stored = old_row.get_char(2) <= ' ' &&
const is_stored = new_row.get_char(2) <= ' '; golem_path.compare(old_file, golem_path.len(), TRUE) == 0;
const tobe_stored = new_row.get_char(2) <= ' ';
if (was_stored && fexist(old_file)) if (was_stored && fexist(old_file))
::remove(old_file); ::remove(old_file);
if (is_stored && !new_file.blank()) if (tobe_stored && !new_file.blank())
{ {
char ext[_MAX_EXT]; char ext[_MAX_EXT];
_splitpath(new_file, NULL, NULL, NULL, ext); _splitpath(new_file, NULL, NULL, NULL, ext);
old_file.temp(golem_path, ext); old_file.temp(golem_path, ext);
fcopy(new_file, old_file); fcopy(new_file, old_file);
new_row.add(old_file, 0); new_row.add(old_file, 0);
@ -513,7 +516,7 @@ bool TGolem_field::autosave(TRelation& r)
} }
} }
} }
_old_value = new_value; set(_old_value = new_value);
} }
} }
return TEditable_field::autosave(r); return TEditable_field::autosave(r);