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

View File

@ -1253,7 +1253,7 @@ void TManutenzione_app::convert_dir()
const TFilename fname(df.filename()); const TFilename fname(df.filename());
//crea il nuovo file in base al tracciato record nuovo! //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); set_autoload_new_files(false);
f.build(rs); f.build(rs);

View File

@ -382,13 +382,13 @@ bool Tdnist_mask::load_xml(TString_array& a) const
{ {
if (!path.ends_with("/")) if (!path.ends_with("/"))
path << '/'; path << '/';
path << "?????.xml"; path << "attivazioni/?????.xml";
} }
TString_array xml; TString_array xml;
list_files(path, 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); TProgind pi(xml.items(), msg);
TFilename fname, tmpname; TFilename fname, tmpname;
TFilename tmpdir; tmpdir.tempdir(); tmpdir.add("www"); TFilename tmpdir; tmpdir.tempdir(); tmpdir.add("www");