Corretti errori di conversione file con .dir ma senza .trr

git-svn-id: svn://10.65.10.50/branches/R_10_00@22643 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-04-24 10:19:45 +00:00
parent b61ac80695
commit fa23d3722d
4 changed files with 2017 additions and 2000 deletions

View File

@ -43,15 +43,16 @@ struct TFind_node_data
struct TFind_string_data
{
TString _str;
TString80 _str, _best;
TAssoc_array* _ignore_list;
double _score;
};
HIDDEN bool find_string_callback(TTree& tree, void* jolly, word flags)
{
if (flags == SCAN_PRE_ORDER)
{
TMenu_tree& mt = (TMenu_tree&)tree;
const TMenu_tree& mt = (const TMenu_tree&)tree;
const TSubmenu& sm = mt.curr_submenu();
if (sm.disabled())
@ -64,7 +65,18 @@ HIDDEN bool find_string_callback(TTree& tree, void* jolly, word flags)
TString desc; mt.get_description(desc);
desc.upper();
if (desc.find(data._str) >= 0 || desc.match(data._str))
{
data._score = 1.0;
mt.curr_id(data._best);
return true;
}
const double s = xvt_str_fuzzy_compare(desc, data._str);
if (s > data._score)
{
data._score = s;
mt.curr_id(data._best);
}
}
return false;
}
@ -92,9 +104,9 @@ HIDDEN bool find_leaf_callback(TTree& tree, void* jolly, word flags)
if (slash > 0)
id = id.mid(slash+1);
if (id == leaf)
return TRUE;
return true;
}
return FALSE;
return false;
}
bool TMenu_tree::find_string(const TString& str)
@ -102,6 +114,7 @@ bool TMenu_tree::find_string(const TString& str)
TFind_string_data data;
data._str = str; data._str.upper();
data._ignore_list = &_menu->search_ignore_list();
data._score = 0;
if (data._str != _menu->last_search_string())
{
@ -111,6 +124,10 @@ bool TMenu_tree::find_string(const TString& str)
goto_root();
bool ok = scan_depth_first(find_string_callback, &data, SCAN_PRE_ORDER);
if (!ok && data._score > 0.9)
ok = goto_node(data._best);
if (ok)
_menu->search_ignore_list().add(curr_submenu().name());
else

View File

@ -1253,7 +1253,7 @@ void TManutenzione_app::convert_dir()
const TFilename fname(df.filename());
//crea il nuovo file in base al tracciato record nuovo!
if (!fname.exist() && ds.len() > 0)
if (!fname.exist() && ds.len() > 0 && rs.len() > 0)
{
set_autoload_new_files(false);
f.build(rs);

File diff suppressed because it is too large Load Diff

View File

@ -382,13 +382,13 @@ bool Tdnist_mask::load_xml(TString_array& a) const
{
if (!path.ends_with("/"))
path << '/';
path << "?????.xml";
path << "attivazioni/?????.xml";
}
TString_array xml;
list_files(path, xml);
TString msg; msg.format(FR("Scansione cartella %s: %d files"), (const char*)path, xml.items());
TString msg; msg.format(FR("Scansione cartella %s: %d files"), path.path(), xml.items());
TProgind pi(xml.items(), msg);
TFilename fname, tmpname;
TFilename tmpdir; tmpdir.tempdir(); tmpdir.add("www");