Ztring Language_All_Run () { ZtringListListF Origin; Origin.Load(L"../Source/Resource/Language.csv"); for (int Lang=1; Lang<50; Lang++) { Ztring Name=Origin.Read(L" Language_ISO639", Lang); if (Name.size()>0) { ZtringListListF Dest; int Automatic=0; //count of words in file int Automatic_Language=0; //count of words in file without Language names for (size_t Pos=0; Pos<Origin.size(); Pos++) { Dest(Pos, 0)=Origin(Pos, 0); Dest(Pos, 1)=Origin(Pos, Lang); if (Dest(Pos, 1).size()>0) Automatic++; if (Dest(Pos, 1).size()>0 || Dest(Pos, 0).find(__T("Language_"))==0 || Dest(Pos, 0).find(__T("Genre_"))==0 || Dest(Pos, 0).find(__T("OpenCandy_"))==0) Automatic_Language++; } Dest((L"ZZ_Automatic_Percent"), 1).From_Number(Automatic*100/Origin.size()); Dest((L"ZZ_AutomaticLanguage_Percent"), 1).From_Number(Automatic_Language*100/Origin.size()); Dest.Save(Ztring(L"../Source/Resource/Plugin/Language/")+Name+L".csv"); } } return L"OK"; }
void Run_File(ZtringListListF &Dest, Ztring Language) { //Open Orig ZtringListListF Origin; if (Origin.Load(Ztring(L"../Source/Resource/Plugin/Language/")+Language+L".csv")==Error) return; //Find position in Destination int Lang=0; for (int LangPos=1; LangPos<50; LangPos++) if (Lang==0 && (Dest(L" Language_ISO639", LangPos)==Language || Dest(L" Language_ISO639", LangPos).size()==0)) Lang=LangPos; //Delete BOM characters if present Origin(0, 0)=L" Author_Email"; //Complete for (size_t Pos=0; Pos<Origin.size(); Pos++) { int Dest_Pos=Dest.Find(Origin(Pos, 0), 0, 0, L"==", Ztring_CaseSensitive); if (Dest_Pos==-1) { Dest.push_back(Origin.Read(Pos, 0)); //Append to end of file Dest_Pos=Dest.Find(Origin(Pos, 0), 0, 0, L"==", Ztring_CaseSensitive); } Dest(Dest_Pos, Lang)=Origin(Pos, 1); } }
//--------------------------------------------------------------------------- int TPreferences_LanguageF::Run(const Ztring &Name) { ZtringListListF Default; Default.Load(Prefs->BaseFolder+Prefs->FolderNames[Prefs_Language]+_T("\\")+Prefs->DefaultNames[Prefs_Language]+_T(".csv")); EditedLanguage.Load(Prefs->BaseFolder+Prefs->FolderNames[Prefs_Language]+_T("\\")+Name+_T(".csv")); Grille->RowCount=Default.size()+1; Grille->Cells[0][0]="Program name"; Grille->Cells[1][0]="Default translation"; Grille->Cells[2][0]="Your translation"; for (size_t Pos=0; Pos<Default.size(); Pos++) { Grille->Cells[0][Pos+1]=Default(Pos, 0).c_str(); Grille->Cells[1][Pos+1]=Default(Pos, 1).c_str(); Grille->Cells[2][Pos+1]=EditedLanguage(Default(Pos, 0), 1).c_str(); } return ShowModal(); }
//--------------------------------------------------------------------------- // Open an item ZenLib::Ztring Enums_Create_Item(const Ztring &Directory, const Ztring &Name, Ztring &Contents) { Contents.clear(); Ztring Result; //Load header Ztring Partial; Result=Enums_Create_Load(L"../Source/Resource/Text/Enums_.2.txt", Partial); if (!Result.empty()) return Result; Partial.FindAndReplace(L"%Name%", Ztring(Name).MakeLowerCase()); Contents+=Partial; //Load line template Ztring Line; Result=Enums_Create_Load(L"../Source/Resource/Text/Enums_.5.txt", Line); if (!Result.empty()) return Result; //Read input file ZtringListListF ZLL; ZLL.Load(Ztring(L"../Source/Resource/Text/")+Directory+L"/"+Name+L".csv"); for (size_t Pos=0; Pos<ZLL.size(); Pos++) { Ztring Line_Temp=Line; Line_Temp.FindAndReplace(L"%Name%", Name); Ztring &ToAdd=ZLL(Pos, 0); ToAdd.FindAndReplace(__T("/"), __T("_"), 0, Ztring_Recursive); //C++ does not accept "/" in names ToAdd.FindAndReplace(__T("("), __T("_")); //C++ does not accept "(" in names ToAdd.FindAndReplace(__T(")"), __T("_")); //C++ does not accept ")" in names ToAdd.FindAndReplace(__T("*"), __T("_")); //C++ does not accept "*" in names ToAdd.FindAndReplace(__T("-"), __T("_")); //C++ does not accept "-" in names Line_Temp.FindAndReplace(L"%Line%", ToAdd); Contents+=Line_Temp; } //Load footer template Result=Enums_Create_Load(L"../Source/Resource/Text/Enums_.8.txt", Partial); if (!Result.empty()) return Result; Contents+=Partial; return L""; }
void RegressionTest_Basic(Ztring Files, Ztring DataBaseDirectory, int32u Scenario) { /* //One per one ZtringList List=Dir::GetAllFileNames(Files); for (size_t Pos=0; Pos<List.size(); Pos++) { std::cout<<List[Pos].To_Local()<<endl; MediaInfoDLL_Load(); MediaInfoList* MIL=new MediaInfoList; MIL->Open(List[Pos]); delete MIL; MediaInfoDLL_UnLoad(); File::Move(L"C:\\Temp\\Debug_MemoryLeak.txt", L"C:\\Temp\\"+ZenLib::FileName(List[Pos]).Name_Get()+L"."+ZenLib::FileName(List[Pos]).Extension_Get()+L"."+Ztring::ToZtring(Pos)+L".txt"); } */ /* Old ZtringListListF* Ref=new ZtringListListF[Stream_Max]; for (size_t StreamKind=0; StreamKind<Stream_Max; StreamKind++) if (File::Exists(DataBaseDirectory+__T("\\Basic\\Ref\\")+Ztring::ToZtring(StreamKind)+__T(".csv"))) Ref[StreamKind].Load(DataBaseDirectory+__T("\\Basic\\Ref\\")+Ztring::ToZtring(StreamKind)+__T(".csv")); ZtringListListF* New=new ZtringListListF[Stream_Max]; MediaInfoList MIL; struct UserHandle_struct UserHandle; //Times wostringstream Event_CallBackFunction_Text; Event_CallBackFunction_Text<<__T("CallBack=memory://")<<(MediaInfo_int64u)Basic_Event_CallBackFunction<<__T(";UserHandler=memory://")<<(MediaInfo_int64u)&UserHandle; MIL.Option(__T("File_Event_CallBackFunction"), Event_CallBackFunction_Text.str()); if (!Dir::Exists(DataBaseDirectory+__T("\\Basic\\Diff"))) Dir::Create(DataBaseDirectory+__T("\\Basic\\Diff")); File::Delete(DataBaseDirectory+__T("\\Basic\\Diff\\Times.csv")); UserHandle.Time_File.Open(DataBaseDirectory+__T("\\Basic\\Diff\\Times.csv"), File::Access_Write_Append); cout<<" Analyzing"<<endl; MIL.Open(Files); cout<<" Retrieving new data"<<endl; for (size_t StreamKind=0; StreamKind<Stream_Max; StreamKind++) { for (size_t FilePos=0; FilePos<MIL.Count_Get(); FilePos++) if (MIL.Count_Get(FilePos, (stream_t)StreamKind)) { New[StreamKind].push_back(ZtringList()); New[StreamKind].at(New[StreamKind].size()-1).push_back(Ztring()); //CompleteFileName for (size_t LinePos=0; LinePos<MIL.Count_Get(FilePos, (stream_t)StreamKind, 0); LinePos++) New[StreamKind].at(New[StreamKind].size()-1).push_back(MIL.Get(FilePos, (stream_t)StreamKind, 0, LinePos, Info_Name)); break; } } for (size_t FilePos=0; FilePos<MIL.Count_Get(); FilePos++) for (size_t StreamKind=0; StreamKind<Stream_Max; StreamKind++) for (size_t StreamPos=0; StreamPos<MIL.Count_Get(FilePos, (stream_t)StreamKind); StreamPos++) { New[StreamKind].push_back(ZtringList()); New[StreamKind].at(New[StreamKind].size()-1).push_back(MIL.Get(FilePos, Stream_General, 0, __T("CompleteName"))); for (size_t LinePos=0; LinePos<MIL.Count_Get(FilePos, (stream_t)StreamKind, StreamPos); LinePos++) New[StreamKind].at(New[StreamKind].size()-1).push_back(MIL.Get(FilePos, (stream_t)StreamKind, StreamPos, LinePos)); } for (size_t StreamKind=0; StreamKind<Stream_Max; StreamKind++) { if (!Dir::Exists(DataBaseDirectory+__T("\\Basic\\New"))) Dir::Create(DataBaseDirectory+__T("\\Basic\\New")); New[StreamKind].Save(DataBaseDirectory+__T("\\Basic\\New\\")+Ztring::ToZtring(StreamKind)+__T(".csv")); } cout<<" Diff"<<endl; ZtringListListF* Diff=new ZtringListListF[Stream_Max]; for (size_t StreamKind=0; StreamKind<Stream_Max; StreamKind++) { size_t Ref_Pos=1; size_t New_Pos=1; while (Ref_Pos<Ref[StreamKind].size() && New_Pos<New[StreamKind].size()) { if (New[StreamKind](New_Pos, 0)!=Ref[StreamKind](Ref_Pos, 0)) { size_t Ref_PosNext=Ref_Pos; while (Ref_PosNext<Ref[StreamKind].size() && New[StreamKind](New_Pos, 0)!=Ref[StreamKind](Ref_PosNext, 0)) Ref_PosNext++; if (Ref_PosNext==Ref[StreamKind].size()) //Ref file not found { Diff[StreamKind].push_back(New[StreamKind](New_Pos)); New_Pos++; } else { for (; Ref_Pos<Ref_PosNext; Ref_Pos++) Diff[StreamKind].push_back(Ref[StreamKind](Ref_Pos)); } } else { bool IsDiff=false; size_t LinePos_Max=max(New[StreamKind](New_Pos).size(), Ref[StreamKind](Ref_Pos).size()); for (size_t LinePos=1; LinePos<LinePos_Max; LinePos++) if (New[StreamKind](New_Pos, LinePos)!=Ref[StreamKind](Ref_Pos, LinePos)) { if (!IsDiff) { Diff[StreamKind].push_back(ZtringList()); Diff[StreamKind](Diff[StreamKind].size()-1, 0)=New[StreamKind](New_Pos, 0); IsDiff=true; } Diff[StreamKind](Diff[StreamKind].size()-1, LinePos)=New[StreamKind](New_Pos, LinePos)+__T(" --- ")+Ref[StreamKind](Ref_Pos, LinePos); } Ref_Pos++; New_Pos++; } } for (; Ref_Pos<Ref[StreamKind].size(); Ref_Pos++) { Diff[StreamKind].push_back(ZtringList()); Diff[StreamKind](Diff[StreamKind].size()-1, 0)=Ref[StreamKind](Ref_Pos, 0); for (size_t LinePos=1; LinePos<Ref[StreamKind][Ref_Pos].size(); LinePos++) if (!Ref[StreamKind](Ref_Pos, LinePos).empty()) Diff[StreamKind](Diff[StreamKind].size()-1, LinePos)=__T(" --- ")+Ref[StreamKind](Ref_Pos, LinePos); } for (; New_Pos<New[StreamKind].size(); New_Pos++) { Diff[StreamKind].push_back(ZtringList()); Diff[StreamKind](Diff[StreamKind].size()-1, 0)=New[StreamKind](New_Pos, 0); for (size_t LinePos=1; LinePos<New[StreamKind][New_Pos].size(); LinePos++) if (!New[StreamKind](New_Pos, LinePos).empty()) Diff[StreamKind](Diff[StreamKind].size()-1, LinePos)=New[StreamKind](New_Pos, LinePos)+__T(" --- "); } } for (size_t StreamKind=0; StreamKind<Stream_Max; StreamKind++) { if (!Diff[StreamKind].empty()) { Diff[StreamKind].insert(Diff[StreamKind].begin(), New[StreamKind](0)); if (!Dir::Exists(DataBaseDirectory+__T("\\Basic\\Diff"))) Dir::Create(DataBaseDirectory+__T("\\Basic\\Diff")); Diff[StreamKind].Save(DataBaseDirectory+__T("\\Basic\\Diff\\")+Ztring::ToZtring(StreamKind)+__T(".csv")); } } */ MediaInfoList MIL; struct UserHandle_struct UserHandle; //Times wostringstream Event_CallBackFunction_Text; Event_CallBackFunction_Text<<__T("CallBack=memory://")<<(MediaInfo_int64u)Basic_Event_CallBackFunction<<__T(";UserHandler=memory://")<<(MediaInfo_int64u)&UserHandle; MIL.Option(__T("File_Event_CallBackFunction"), Event_CallBackFunction_Text.str()); if (!Dir::Exists(DataBaseDirectory+__T("\\Basic\\Diff"))) Dir::Create(DataBaseDirectory+__T("\\Basic\\Diff")); File::Delete(DataBaseDirectory+__T("\\Basic\\Diff\\Times.csv")); UserHandle.Time_File.Open(DataBaseDirectory+__T("\\Basic\\Diff\\Times.csv"), File::Access_Write_Append); cout<<" Analyzing"<<endl; MIL.Open(Files); for (size_t StreamKind=0; StreamKind<Stream_Max; StreamKind++) { ZtringListListF New; ZtringListListF Ref; ZtringListListF Diff; cout<<" Retrieving ref data"<<endl; if (File::Exists(DataBaseDirectory+__T("\\Basic\\Ref\\")+Ztring::ToZtring(StreamKind)+__T(".csv"))) Ref.Load(DataBaseDirectory+__T("\\Basic\\Ref\\")+Ztring::ToZtring(StreamKind)+__T(".csv")); cout<<" Retrieving new data"<<endl; for (size_t FilePos=0; FilePos<MIL.Count_Get(); FilePos++) if (MIL.Count_Get(FilePos, (stream_t)StreamKind)) { New.push_back(ZtringList()); New.at(New.size()-1).push_back(Ztring()); //CompleteFileName for (size_t LinePos=0; LinePos<MIL.Count_Get(FilePos, (stream_t)StreamKind, 0); LinePos++) New.at(New.size()-1).push_back(MIL.Get(FilePos, (stream_t)StreamKind, 0, LinePos, Info_Name)); break; } for (size_t FilePos=0; FilePos<MIL.Count_Get(); FilePos++) for (size_t StreamPos=0; StreamPos<MIL.Count_Get(FilePos, (stream_t)StreamKind); StreamPos++) { New.push_back(ZtringList()); New.at(New.size()-1).push_back(MIL.Get(FilePos, Stream_General, 0, __T("CompleteName"))); for (size_t LinePos=0; LinePos<MIL.Count_Get(FilePos, (stream_t)StreamKind, StreamPos); LinePos++) New.at(New.size()-1).push_back(MIL.Get(FilePos, (stream_t)StreamKind, StreamPos, LinePos)); } if (!Dir::Exists(DataBaseDirectory+__T("\\Basic\\New"))) Dir::Create(DataBaseDirectory+__T("\\Basic\\New")); New.Save(DataBaseDirectory+__T("\\Basic\\New\\")+Ztring::ToZtring(StreamKind)+__T(".csv")); cout<<" Diff"<<endl; size_t Ref_Pos=1; size_t New_Pos=1; while (Ref_Pos<Ref.size() && New_Pos<New.size()) { if (New(New_Pos, 0)!=Ref(Ref_Pos, 0)) { size_t Ref_PosNext=Ref_Pos; while (Ref_PosNext<Ref.size() && New(New_Pos, 0)!=Ref(Ref_PosNext, 0)) Ref_PosNext++; if (Ref_PosNext==Ref.size()) //Ref file not found { Diff.push_back(New(New_Pos)); New_Pos++; } else { for (; Ref_Pos<Ref_PosNext; Ref_Pos++) Diff.push_back(Ref(Ref_Pos)); } } else { bool IsDiff=false; size_t LinePos_Max=max(New(New_Pos).size(), Ref(Ref_Pos).size()); for (size_t LinePos=1; LinePos<LinePos_Max; LinePos++) if (New(New_Pos, LinePos)!=Ref(Ref_Pos, LinePos)) { if (!IsDiff) { Diff.push_back(ZtringList()); Diff(Diff.size()-1, 0)=New(New_Pos, 0); IsDiff=true; } Diff(Diff.size()-1, LinePos)=New(New_Pos, LinePos)+__T(" --- ")+Ref(Ref_Pos, LinePos); } Ref_Pos++; New_Pos++; } } for (; Ref_Pos<Ref.size(); Ref_Pos++) { Diff.push_back(ZtringList()); Diff(Diff.size()-1, 0)=Ref(Ref_Pos, 0); for (size_t LinePos=1; LinePos<Ref[Ref_Pos].size(); LinePos++) if (!Ref(Ref_Pos, LinePos).empty()) Diff(Diff.size()-1, LinePos)=__T(" --- ")+Ref(Ref_Pos, LinePos); } for (; New_Pos<New.size(); New_Pos++) { Diff.push_back(ZtringList()); Diff(Diff.size()-1, 0)=New(New_Pos, 0); for (size_t LinePos=1; LinePos<New[New_Pos].size(); LinePos++) if (!New(New_Pos, LinePos).empty()) Diff(Diff.size()-1, LinePos)=New(New_Pos, LinePos)+__T(" --- "); } if (!Diff.empty()) { Diff.insert(Diff.begin(), New(0)); if (!Dir::Exists(DataBaseDirectory+__T("\\Basic\\Diff"))) Dir::Create(DataBaseDirectory+__T("\\Basic\\Diff")); Diff.Save(DataBaseDirectory+__T("\\Basic\\Diff\\")+Ztring::ToZtring(StreamKind)+__T(".csv")); } } }