mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-13 20:20:36 +02:00
PoChecker: refactor.
- Drop the listbox for translated po-files - Now possible to test multiple master po-files - Language filter controls setting of "Find All Translated PoFiles" - Regenerated language files. git-svn-id: trunk@46475 -
This commit is contained in:
parent
dd86099d37
commit
7c9f2ba5c3
@ -69,7 +69,7 @@
|
||||
<PackageName Value="LCL"/>
|
||||
</Item2>
|
||||
</RequiredPackages>
|
||||
<Units Count="8">
|
||||
<Units Count="9">
|
||||
<Unit0>
|
||||
<Filename Value="pochecker.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -118,6 +118,11 @@
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="PoCheckerSettings"/>
|
||||
</Unit7>
|
||||
<Unit8>
|
||||
<Filename Value="..\pofamilylists.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="PoFamilyLists"/>
|
||||
</Unit8>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -8,7 +8,7 @@ uses
|
||||
{$ENDIF}{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, pocheckermain, pofamilies, resultdlg, simplepofiles, pocheckerconsts,
|
||||
graphstat, pocheckersettings;
|
||||
graphstat, pocheckersettings, pofamilylists;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
|
@ -99,9 +99,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "Chyby / varování nahlášené %s pro:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "Najít všechny přeložené po soubory"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -144,15 +146,9 @@ msgstr "Identifikátor [%s] nalezen v %s, ale neexistuje v %s"
|
||||
msgid "No errors found"
|
||||
msgstr "Žádné chyby nenalezeny"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"Vybraný název souboru\n"
|
||||
"%s\n"
|
||||
"nevypadá jako korektní jméno po souboru\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
|
@ -72,8 +72,7 @@ msgstr "[Zeile %d] %s"
|
||||
|
||||
#: pocheckerconsts.sduplicateoriginals
|
||||
msgid "The (untranslated) value \"%s\" is used for more than 1 entry:"
|
||||
msgstr ""
|
||||
"Der (nicht übersetzte) Wert \"%s\" wird für mehr als 1 Eintrag verwendet:"
|
||||
msgstr "Der (nicht übersetzte) Wert \"%s\" wird für mehr als 1 Eintrag verwendet:"
|
||||
|
||||
#: pocheckerconsts.serroroncleanup
|
||||
msgid ""
|
||||
@ -97,9 +96,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "Fehler / Warnungen gemeldet von %s für:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "Alle übersetzten po-Dateien finden"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -141,16 +142,9 @@ msgstr "Bezeichner [%s] gefunden in %s, aber er existiert nicht in %s"
|
||||
msgid "No errors found"
|
||||
msgstr "Keine Fehler gefunden"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"Gewählter Dateiname\n"
|
||||
"%s\n"
|
||||
"sieht nicht wie ein geeigneter Name für eine po-file\n"
|
||||
" aus\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
@ -325,3 +319,4 @@ msgstr "Abwählen"
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr "Nicht übersetzt"
|
||||
|
||||
|
@ -95,9 +95,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "Errores / advertencias reportadas por %s para:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "Encontrar todos los archivos PO traducidos"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -141,15 +143,9 @@ msgstr "Identificador [%s] se encuentra en %s, pero no existe en %s"
|
||||
msgid "No errors found"
|
||||
msgstr "No se encontraron errores"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"Seleccionado archivo\n"
|
||||
"%s\n"
|
||||
"no parece ser un nombre apropiado para un archivo po\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
|
@ -97,9 +97,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "A(z) %s hibákat / figyelmeztetéseket jelzett ezzel kapcsolatban:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "Az összes lefordított po-fájl megkeresése"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -141,15 +143,9 @@ msgstr "A(z) [%s] azonosító megtalálható itt: %s, de nem található meg itt
|
||||
msgid "No errors found"
|
||||
msgstr "Nincsenek hibák"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"A választott fájlnév\n"
|
||||
"%s\n"
|
||||
"nem tűnik megfelelő névnek egy po-fájl számára\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
|
@ -97,9 +97,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "Errori / avvertimenti riportati da %s per:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "Trova tutti i file po tradotti"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -141,15 +143,9 @@ msgstr "Identificatore [%s] trovato in %s, ma inesistente in %s"
|
||||
msgid "No errors found"
|
||||
msgstr "Nessun errore riscontrato"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"Il nome selezionato\n"
|
||||
"%s\n"
|
||||
"non sembra un nome corretto per un file po\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
|
@ -97,9 +97,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "以下のファイルに対する %s によるエラー/警告の結果:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "翻訳されたすべての po ファイルを検査する"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -141,15 +143,9 @@ msgstr "識別子 [%s] が %s 内で見つかりましたが、%s 内には存
|
||||
msgid "No errors found"
|
||||
msgstr "エラーはありません"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"選択されたファイル\n"
|
||||
"%s\n"
|
||||
"は、適切な po ファイル名ではないようです\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
|
@ -97,9 +97,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "%s praneštos klaidos/perspėjimai apie:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "Rasti visus išverstus PO failus"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -143,15 +145,9 @@ msgstr "Identifikatorių [%s] turi „%s“, tačiau jo neturi „%s“"
|
||||
msgid "No errors found"
|
||||
msgstr "Klaidų nerasta"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"Parinktas failo pavadinimas\n"
|
||||
"%s\n"
|
||||
"nepanašu kad tai būtų tinkamas pavadinimas PO failui\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
|
@ -78,8 +78,10 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
@ -122,11 +124,8 @@ msgstr ""
|
||||
msgid "No errors found"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
|
@ -96,9 +96,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "Erros / avisos reportados por %s para:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "Localizar todos os arquivos po traduzidos"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -141,15 +143,9 @@ msgstr "Identificador [%s] encontrado em %s, mas inexistente em %s"
|
||||
msgid "No errors found"
|
||||
msgstr "Nenhum erro encontrado"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"Nome de arquivo selecionado\n"
|
||||
"%s\n"
|
||||
"parece não ser um nome apropriado para um arquivo PO\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
|
@ -95,9 +95,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "Ошибки и предупреждения, найденные %s для:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "Найти все переведённые файлы PO"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -140,15 +142,9 @@ msgstr "Идентификатор [%s] найден в %s, но отсутст
|
||||
msgid "No errors found"
|
||||
msgstr "Ошибок не найдено"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"Выбранное имя файла\n"
|
||||
"%s\n"
|
||||
"не выглядит корректно для файла PO\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
|
@ -94,9 +94,11 @@ msgstr ""
|
||||
msgid "Errors / warnings reported by %s for:"
|
||||
msgstr "Помилки / попередження звітовані %s для:"
|
||||
|
||||
#: pocheckerconsts.sfindalltranslatedpofiles
|
||||
msgid "Find all translated po-files"
|
||||
msgstr "Знайти всі перекладені po-файли"
|
||||
#: pocheckerconsts.sfilesnotfoundandremoved
|
||||
msgid ""
|
||||
"The follwing files were not foud and removed from the list:\n"
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sfuzzy
|
||||
msgid "Fuzzy"
|
||||
@ -140,15 +142,9 @@ msgstr "Ідентифікатор [%s] знайдений в %s, але він
|
||||
msgid "No errors found"
|
||||
msgstr "Помилки не знайдені"
|
||||
|
||||
#: pocheckerconsts.snotaproperfilename
|
||||
msgid ""
|
||||
"Selected filename\n"
|
||||
"%s\n"
|
||||
"does not seem to be a proper name for a po-file\n"
|
||||
#: pocheckerconsts.snofileslefttocheck
|
||||
msgid "There are no files left to check."
|
||||
msgstr ""
|
||||
"Вибраний файл\n"
|
||||
"%s\n"
|
||||
"схоже не є вірним іменем для po-файлу\n"
|
||||
|
||||
#: pocheckerconsts.snotestselected
|
||||
msgid "There are no tests selected."
|
||||
|
@ -21,7 +21,9 @@ resourcestring
|
||||
sUnselectListBox = 'Unselect';
|
||||
sAllLanguages = 'All Languages';
|
||||
sCannotFindMaster = 'Cannot find master po file:' + LineEnding + '%s' + LineEnding + 'for selected file' + LineEnding + '%s';
|
||||
sNotAProperFileName = 'Selected filename' + LineEnding + '%s' + LineEnding + 'does not seem to be a proper name for a po-file';
|
||||
//sNotAProperFileName = 'Selected filename' + LineEnding + '%s' + LineEnding + 'does not seem to be a proper name for a po-file';
|
||||
sFilesNotFoundAndRemoved = 'The follwing files were not foud and removed from the list:' + LineEnding + '%s';
|
||||
sNoFilesLeftToCheck = 'There are no files left to check.';
|
||||
sErrorOnCreate = 'Error creating an instance of TPoFamily:' + LineEnding + '%s';
|
||||
sErrorOnCleanup = 'An unrecoverable error occurred' + LineEnding + '%s' + LineEnding + 'Please close the program';
|
||||
|
||||
@ -69,7 +71,7 @@ resourcestring
|
||||
sCheckForDuplicateUntranslatedValues = 'Check for duplicate untranslated '
|
||||
+'values';
|
||||
sCheckStatistics = 'Check percentage of (un)translated and fuzzy strings';
|
||||
sFindAllTranslatedPoFiles = 'Find all translated po-files';
|
||||
//sFindAllTranslatedPoFiles = 'Find all translated po-files';
|
||||
sIgnoreFuzzyTranslations = 'Ignore translated strings marked as "fuzzy"';
|
||||
sIncompatibleFormatArgs = '[Line: %d] Incompatible and/or invalid format() arguments for:' ;
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
object PoCheckerForm: TPoCheckerForm
|
||||
Left = 318
|
||||
Height = 514
|
||||
Height = 513
|
||||
Top = 163
|
||||
Width = 644
|
||||
Anchors = []
|
||||
Caption = 'GUI Po-file checking tool'
|
||||
ClientHeight = 514
|
||||
ClientHeight = 513
|
||||
ClientWidth = 644
|
||||
Constraints.MinHeight = 450
|
||||
Constraints.MinWidth = 600
|
||||
@ -123,7 +123,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
object NoErrLabel: TLabel
|
||||
Left = 8
|
||||
Height = 25
|
||||
Top = 452
|
||||
Top = 451
|
||||
Width = 146
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'No errors found'
|
||||
@ -133,18 +133,6 @@ object PoCheckerForm: TPoCheckerForm
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object FindAllPOsCheckBox: TCheckBox
|
||||
AnchorSideLeft.Control = TestListBox
|
||||
AnchorSideTop.Control = SelectBasicBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Height = 19
|
||||
Top = 184
|
||||
Width = 156
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Find all translated PO files'
|
||||
TabOrder = 3
|
||||
end
|
||||
object SelectBasicBtn: TButton
|
||||
AnchorSideLeft.Control = TestListBox
|
||||
AnchorSideTop.Control = TestListBox
|
||||
@ -157,7 +145,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
Caption = 'Select Basic Tests'
|
||||
Enabled = False
|
||||
OnClick = SelectBasicBtnClick
|
||||
TabOrder = 4
|
||||
TabOrder = 3
|
||||
end
|
||||
object SelectAllBtn: TButton
|
||||
AnchorSideLeft.Control = SelectBasicBtn
|
||||
@ -171,7 +159,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
Caption = 'Select All Tests'
|
||||
Enabled = False
|
||||
OnClick = SelectAllBtnClick
|
||||
TabOrder = 5
|
||||
TabOrder = 4
|
||||
end
|
||||
object UnselectAllBtn: TButton
|
||||
AnchorSideLeft.Control = SelectAllBtn
|
||||
@ -185,24 +173,24 @@ object PoCheckerForm: TPoCheckerForm
|
||||
Caption = 'Unselect All Tests'
|
||||
Enabled = False
|
||||
OnClick = UnselectAllBtnClick
|
||||
TabOrder = 6
|
||||
TabOrder = 5
|
||||
end
|
||||
object IgnoreFuzzyCheckBox: TCheckBox
|
||||
AnchorSideLeft.Control = TestListBox
|
||||
AnchorSideTop.Control = FindAllPOsCheckBox
|
||||
AnchorSideTop.Control = SelectBasicBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Height = 19
|
||||
Top = 209
|
||||
Top = 184
|
||||
Width = 152
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'sIgnoreFuzzyTranslations'
|
||||
TabOrder = 7
|
||||
TabOrder = 6
|
||||
end
|
||||
object StatusBar: TStatusBar
|
||||
Left = 0
|
||||
Height = 23
|
||||
Top = 491
|
||||
Top = 490
|
||||
Width = 644
|
||||
Panels = <>
|
||||
end
|
||||
@ -257,58 +245,39 @@ object PoCheckerForm: TPoCheckerForm
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
OnClick = ScanDirBtnClick
|
||||
TabOrder = 9
|
||||
TabOrder = 8
|
||||
end
|
||||
object MasterPoListBox: TListBox
|
||||
AnchorSideTop.Control = IgnoreFuzzyCheckBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = TestListBox
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = NoErrLabel
|
||||
Left = 8
|
||||
Height = 184
|
||||
Top = 233
|
||||
Width = 272
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
Height = 185
|
||||
Top = 208
|
||||
Width = 629
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 5
|
||||
BorderSpacing.Bottom = 35
|
||||
BorderSpacing.Bottom = 58
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDrawItem = MasterPoListBoxDrawItem
|
||||
OnResize = MasterPoListBoxResize
|
||||
OnSelectionChange = MasterPoListBoxSelectionChange
|
||||
Sorted = True
|
||||
Style = lbOwnerDrawFixed
|
||||
TabOrder = 10
|
||||
end
|
||||
object ChildPoListBox: TListBox
|
||||
AnchorSideLeft.Control = MasterPoListBox
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = MasterPoListBox
|
||||
AnchorSideRight.Control = TestListBox
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = ClearChildBtn
|
||||
Left = 290
|
||||
Height = 154
|
||||
Top = 233
|
||||
Width = 347
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 10
|
||||
BorderSpacing.Bottom = 40
|
||||
ItemHeight = 0
|
||||
OnDrawItem = MasterPoListBoxDrawItem
|
||||
OnResize = ChildPoListBoxResize
|
||||
OnSelectionChange = ChildPoListBoxSelectionChange
|
||||
Style = lbOwnerDrawFixed
|
||||
TabOrder = 11
|
||||
TabOrder = 9
|
||||
end
|
||||
object LangFilter: TComboBox
|
||||
AnchorSideLeft.Control = ChildPoListBox
|
||||
AnchorSideTop.Control = ChildPoListBox
|
||||
AnchorSideLeft.Control = MasterPoListBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = TestListBox
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = ClearChildBtn
|
||||
Left = 290
|
||||
Left = 8
|
||||
Height = 23
|
||||
Top = 396
|
||||
Width = 347
|
||||
Top = 400
|
||||
Width = 629
|
||||
Anchors = [akLeft, akRight]
|
||||
BorderSpacing.Top = 5
|
||||
ItemHeight = 15
|
||||
@ -340,7 +309,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
)
|
||||
OnChange = LangFilterChange
|
||||
Style = csDropDownList
|
||||
TabOrder = 12
|
||||
TabOrder = 10
|
||||
Text = 'All languages'
|
||||
end
|
||||
object ClearMasterBtn: TButton
|
||||
@ -350,13 +319,13 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideBottom.Control = NoErrLabel
|
||||
Left = 8
|
||||
Height = 25
|
||||
Top = 427
|
||||
Top = 426
|
||||
Width = 75
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Top = 10
|
||||
Caption = 'Clear'
|
||||
OnClick = ClearMasterBtnClick
|
||||
TabOrder = 13
|
||||
TabOrder = 11
|
||||
end
|
||||
object UnselectMasterBtn: TButton
|
||||
AnchorSideLeft.Control = ClearMasterBtn
|
||||
@ -364,41 +333,14 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideBottom.Control = NoErrLabel
|
||||
Left = 93
|
||||
Height = 25
|
||||
Top = 427
|
||||
Top = 426
|
||||
Width = 75
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Left = 10
|
||||
Caption = 'Unselect'
|
||||
Enabled = False
|
||||
OnClick = UnselectMasterBtnClick
|
||||
TabOrder = 14
|
||||
end
|
||||
object ClearChildBtn: TButton
|
||||
AnchorSideLeft.Control = ChildPoListBox
|
||||
AnchorSideBottom.Control = NoErrLabel
|
||||
Left = 290
|
||||
Height = 25
|
||||
Top = 427
|
||||
Width = 75
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'Clear'
|
||||
OnClick = ClearChildBtnClick
|
||||
TabOrder = 15
|
||||
end
|
||||
object UnselectChildBtn: TButton
|
||||
AnchorSideLeft.Control = ClearChildBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideBottom.Control = NoErrLabel
|
||||
Left = 375
|
||||
Height = 25
|
||||
Top = 427
|
||||
Width = 75
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Left = 10
|
||||
Caption = 'Unselect'
|
||||
Enabled = False
|
||||
OnClick = UnselectChildBtnClick
|
||||
TabOrder = 16
|
||||
TabOrder = 12
|
||||
end
|
||||
object OpenDialog: TOpenDialog
|
||||
Filter = 'po-files (*.po)|*.po|all files|*'
|
||||
|
@ -25,14 +25,15 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, ComCtrls, Masks, Types,
|
||||
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, ComCtrls, Types,
|
||||
LCLType,
|
||||
{$IFDEF POCHECKERSTANDALONE}
|
||||
Translations,
|
||||
{$ELSE}
|
||||
IDEIntf, MenuIntf,
|
||||
{$ENDIF}
|
||||
SimplePoFiles, PoFamilies, ResultDlg, pocheckerconsts, PoCheckerSettings;
|
||||
SimplePoFiles, PoFamilies, ResultDlg, pocheckerconsts, PoCheckerSettings,
|
||||
PoFamilyLists;
|
||||
|
||||
type
|
||||
|
||||
@ -40,18 +41,13 @@ type
|
||||
|
||||
TPoCheckerForm = class(TForm)
|
||||
SelectDirectoryDialog: TSelectDirectoryDialog;
|
||||
UnselectChildBtn: TButton;
|
||||
ClearChildBtn: TButton;
|
||||
UnselectMasterBtn: TButton;
|
||||
ClearMasterBtn: TButton;
|
||||
LangFilter: TComboBox;
|
||||
ChildPoListBox: TListBox;
|
||||
MasterPoListBox: TListBox;
|
||||
ScanDirBtn: TBitBtn;
|
||||
StatusBar: TStatusBar;
|
||||
procedure ChildPoListBoxResize(Sender: TObject);
|
||||
procedure ChildPoListBoxSelectionChange(Sender: TObject; User: boolean);
|
||||
procedure ClearChildBtnClick(Sender: TObject);
|
||||
procedure MasterPoListBoxResize(Sender: TObject);
|
||||
procedure ClearMasterBtnClick(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure LangFilterChange(Sender: TObject);
|
||||
@ -62,10 +58,9 @@ type
|
||||
procedure UnselectChildBtnClick(Sender: TObject);
|
||||
procedure UnselectMasterBtnClick(Sender: TObject);
|
||||
private
|
||||
PoFamily: TPoFamily;
|
||||
FSelectedPoName: String;
|
||||
//PoFamily: TPoFamily;
|
||||
PoFamilyList: TPoFamilyList;
|
||||
FPoCheckerSettings: TPoCheckerSettings;
|
||||
FChildPoList: TStringList;
|
||||
procedure OnTestStart(const ATestName, APoFileName: string);
|
||||
procedure OnTestEnd(const {%H-}ATestName: string; const {%H-}ErrorCount: integer);
|
||||
procedure FillTestListBox;
|
||||
@ -76,14 +71,14 @@ type
|
||||
procedure ShowError(const Msg: string);
|
||||
function TrySelectFile(out Filename: String): Boolean;
|
||||
procedure ScanDirectory(ADir: String);
|
||||
function TryCreatePoFamily(Filename: String): Boolean;
|
||||
function TryCreatepoFamilyList(MasterList: TStrings; const Lang: String): Boolean;
|
||||
procedure RunSelectedTests;
|
||||
procedure ClearStatusBar;
|
||||
procedure SetSelectedPoName(AFilename: String);
|
||||
procedure UpdateGUI(HasSelection: Boolean);
|
||||
function GetSelectedMasterFiles: TStringList;
|
||||
procedure AddToMasterPoList(Fn: String);
|
||||
procedure AddToMasterPoList(S: TStrings);
|
||||
procedure AddToChildPoList(Fn: String);
|
||||
procedure AddToChildPoList(S: TStrings);
|
||||
procedure SetSelectedMasterFiles(S: TStrings);
|
||||
procedure LoadConfig;
|
||||
procedure SaveConfig;
|
||||
published
|
||||
@ -91,7 +86,6 @@ type
|
||||
UnselectAllBtn: TButton;
|
||||
SelectAllBtn: TButton;
|
||||
SelectBasicBtn: TButton;
|
||||
FindAllPOsCheckBox: TCheckBox;
|
||||
NoErrLabel: TLabel;
|
||||
RunBtn: TBitBtn;
|
||||
OpenBtn: TBitBtn;
|
||||
@ -152,20 +146,15 @@ begin
|
||||
'lclstrconsts.' + Lang + '.po');
|
||||
end;
|
||||
{$ENDIF}
|
||||
FChildPoList := TStringList.Create;
|
||||
FChildPoList.Sorted := True;
|
||||
FChildPoList.Duplicates := dupIgnore;
|
||||
Caption := sGUIPoFileCheckingTool;
|
||||
SelectTestLabel.Caption := sSelectTestTypes;
|
||||
FindAllPOsCheckBox.Caption := sFindAllTranslatedPoFiles;
|
||||
//FindAllPOsCheckBox.Caption := sFindAllTranslatedPoFiles;
|
||||
IgnoreFuzzyCheckBox.Caption := sIgnoreFuzzyTranslations;
|
||||
OpenBtn.Caption := sOpenAPoFile;
|
||||
ScanDirBtn.Caption := sScanDir;
|
||||
RunBtn.Caption := sRunSelectedTests;
|
||||
ClearMasterBtn.Caption := sClearListBox;
|
||||
ClearChildBtn.Caption := sClearListBox;
|
||||
UnselectMasterBtn.Caption := sUnselectListBox;
|
||||
UnselectChildBtn.Caption := sUnselectListBox;
|
||||
LangFilter.Items[0] := sAllLanguages;
|
||||
NoErrLabel.Caption := sNoErrorsFound;
|
||||
FillTestListBox;
|
||||
@ -181,12 +170,11 @@ end;
|
||||
|
||||
procedure TPoCheckerForm.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
if Assigned(PoFamily) then
|
||||
PoFamily.Free;
|
||||
if Assigned(PoFamilyList) then
|
||||
PoFamilyList.Free;
|
||||
SaveConfig;
|
||||
if Assigned(FPoCheckerSettings) then
|
||||
FPoCheckerSettings.Free;
|
||||
FChildPoList.Free;
|
||||
end;
|
||||
|
||||
|
||||
@ -199,23 +187,38 @@ begin
|
||||
if IsMasterPoName(Fn) then
|
||||
AddToMasterPoList(Fn)
|
||||
else
|
||||
AddToChildPoList(Fn);
|
||||
SetSelectedPoName(Fn);
|
||||
//AddToChildPoList(Fn);
|
||||
AddToMasterPoList(ExtractMasterNameFromChildName(Fn));
|
||||
UpdateGUI(True);
|
||||
end
|
||||
else
|
||||
begin
|
||||
SetSelectedPoName('');
|
||||
UpdateGUI(False);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TPoCheckerForm.RunBtnClick(Sender: TObject);
|
||||
var
|
||||
AMasterList: TStringList;
|
||||
LangIdx: Integer;
|
||||
ALang: String;
|
||||
begin
|
||||
if TryCreatePoFamily(FSelectedPoName) then
|
||||
LangIdx := LangFilter.ItemIndex;
|
||||
if (LangIdx > 0) then
|
||||
ALang := LangFilter.Items[LangIdx]
|
||||
else
|
||||
ALang := langAll;
|
||||
AMasterList := GetSelectedMasterFiles;
|
||||
try
|
||||
if TryCreatePoFamilyList(AMasterList, ALang) then
|
||||
RunSelectedTests
|
||||
else
|
||||
begin
|
||||
if Assigned(PoFamily) then FreeAndNil(PoFamily);
|
||||
if Assigned(PoFamilyList) then FreeAndNil(PoFamilyList);
|
||||
end;
|
||||
finally
|
||||
AMasterList.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -240,85 +243,24 @@ begin
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.LangFilterChange(Sender: TObject);
|
||||
var
|
||||
Filter, Mask, PrevItem: String;
|
||||
Idx, i: Integer;
|
||||
begin
|
||||
Idx := ChildPoListBox.ItemIndex;
|
||||
if (Idx > -1) then
|
||||
PrevItem := ChildPoListBox.Items[Idx]
|
||||
else
|
||||
PrevItem := '';
|
||||
//debugln('TPoCheckerForm.LangFilterChange: PrevItem = "',PrevItem,'"');
|
||||
Filter := LangFilter.Items.Strings[LangFilter.ItemIndex];
|
||||
if (LangFilter.ItemIndex > 0) then
|
||||
begin
|
||||
Mask := '*.'+Filter+'.po';
|
||||
ChildPoListBox.Clear;
|
||||
ChildPoListBox.Items.BeginUpdate;
|
||||
try
|
||||
for i := 0 to FChildPoList.Count - 1 do
|
||||
begin
|
||||
if MatchesMask(FChildPoList.Strings[i], Mask, False) then
|
||||
ChildPoListBox.Items.Add(FChildPoList.Strings[i]);
|
||||
end;
|
||||
finally
|
||||
ChildPoListBox.Items.EndUpdate;
|
||||
end;
|
||||
end
|
||||
else
|
||||
ChildPoListBox.Items.Assign(FChildPoList);
|
||||
if (Idx <> -1) then
|
||||
begin
|
||||
Idx := ChildPoListBox.Items.IndexOf(PrevItem);
|
||||
debugln('TPoCheckerForm.LangFilterChange: IndexOf(PrevItem) = ',DbgS(Idx));
|
||||
if (Idx <> -1) then
|
||||
begin
|
||||
ChildPoListBox.ItemIndex := Idx;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if (MasterPoListBox.ItemIndex = -1) then
|
||||
SetSelectedPoName('');
|
||||
end;
|
||||
end;
|
||||
UnselectChildBtn.Enabled := (Idx <> -1);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.ChildPoListBoxSelectionChange(Sender: TObject;
|
||||
User: boolean);
|
||||
begin
|
||||
//debugln('TPoCheckerForm.ChildPoListBoxSelectionChange: User = ',DbgS(User));
|
||||
if User then
|
||||
begin
|
||||
SetSelectedPoName(ChildPoListBox.Items[ChildPoListBox.ItemIndex]);
|
||||
end;
|
||||
UnselectChildBtn.Enabled := (ChildPoListBox.ItemIndex <> -1);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.ChildPoListBoxResize(Sender: TObject);
|
||||
procedure TPoCheckerForm.MasterPoListBoxResize(Sender: TObject);
|
||||
var
|
||||
ATop, ADiff: Integer;
|
||||
ATop: Integer;
|
||||
begin
|
||||
//Can't seem to get this to work with just Anchors
|
||||
ATop := ChildPoListBox.Top + ChildPoListBox.Height;
|
||||
ADiff := MasterPoListBox.Top + MasterPoListBox.Height - ATop;
|
||||
LangFilter.Top := ATop + (ADiff - LangFilter.Height);
|
||||
ATop := MasterPoListBox.Top + MasterPoListBox.Height;
|
||||
LangFilter.Top := ATop + 5;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.ClearChildBtnClick(Sender: TObject);
|
||||
begin
|
||||
FChildPoList.Clear;
|
||||
LangFilterChange(LangFilter);
|
||||
if (MasterPoListBox.ItemIndex = -1) then
|
||||
SetSelectedPoName('');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.ClearMasterBtnClick(Sender: TObject);
|
||||
begin
|
||||
MasterPoListBox.Clear;
|
||||
if (ChildPoListBox.ItemIndex = -1) then
|
||||
SetSelectedPoName('');
|
||||
UpdateGUI(False);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.FormShow(Sender: TObject);
|
||||
@ -353,9 +295,9 @@ begin
|
||||
//debugln('TPoCheckerForm.MasterPoListBoxSelectionChange: User = ',DbgS(User));
|
||||
if User then
|
||||
begin
|
||||
SetSelectedPoName(MasterPoListBox.Items[MasterPoListBox.ItemIndex]);
|
||||
UpdateGUI(MasterPoListBox.SelCount > 0);
|
||||
end;
|
||||
UnselectMasterBtn.Enabled := (MasterPoListBox.ItemIndex <> -1);
|
||||
UnselectMasterBtn.Enabled := (MasterPoListBox.SelCount <> 0);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.ScanDirBtnClick(Sender: TObject);
|
||||
@ -368,16 +310,12 @@ end;
|
||||
|
||||
procedure TPoCheckerForm.UnselectChildBtnClick(Sender: TObject);
|
||||
begin
|
||||
ChildpoListBox.ItemIndex := -1;
|
||||
if (MasterPoListBox.ItemIndex = -1) then
|
||||
SetSelectedPoName('');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.UnselectMasterBtnClick(Sender: TObject);
|
||||
begin
|
||||
MasterPoListBox.ItemIndex := -1;
|
||||
if (ChildPoListBox.ItemIndex = -1) then
|
||||
SetSelectedPoName('');
|
||||
MasterPoListBox.ClearSelection;
|
||||
UpdateGUI(False);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.OnTestStart(const ATestName, APoFileName: string);
|
||||
@ -443,8 +381,8 @@ end;
|
||||
function TPoCheckerForm.GetTestOptions: TPoTestOptions;
|
||||
begin
|
||||
Result := [];
|
||||
if FindAllPOsCheckBox.Checked then
|
||||
Result := Result + [ptoFindAllChildren];
|
||||
//if FindAllPOsCheckBox.Checked then
|
||||
// Result := Result + [ptoFindAllChildren];
|
||||
if IgnoreFuzzyCheckBox.Checked then
|
||||
Result := Result + [ptoIgnoreFuzzyStrings];
|
||||
end;
|
||||
@ -466,7 +404,7 @@ end;
|
||||
|
||||
procedure TPoCheckerForm.SetTestOptionCheckBoxes(TestOptions: TPoTestOptions);
|
||||
begin
|
||||
FindAllPOsCheckBox.Checked := (ptoFindAllChildren in TestOptions);
|
||||
//FindAllPOsCheckBox.Checked := (ptoFindAllChildren in TestOptions);
|
||||
IgnoreFuzzyCheckBox.Checked := (ptoIgnoreFuzzyStrings in TestOptions);
|
||||
end;
|
||||
|
||||
@ -491,80 +429,78 @@ end;
|
||||
|
||||
procedure TPoCheckerForm.ScanDirectory(ADir: String);
|
||||
var
|
||||
SL, ML, CL: TStringList;
|
||||
SL, ML: TStringList;
|
||||
i: Integer;
|
||||
S: String;
|
||||
begin
|
||||
SL := FindAllFiles(ADir, '*.po',True);
|
||||
try
|
||||
ML := TStringList.Create;
|
||||
CL := TStringList.Create;
|
||||
for i := 0 to SL.Count - 1 do
|
||||
begin
|
||||
S := SL[i];
|
||||
//debugln('TPoCheckerForm.ScanDirectory: S = "',ExtractFilename(S),'"');
|
||||
if IsMasterPoName(S) then
|
||||
ML.Add(S)
|
||||
else
|
||||
CL.Add(S);
|
||||
ML.Add(S);
|
||||
end;
|
||||
if (ML.Count > 0) then AddToMasterPoList(ML);
|
||||
if (CL.Count > 0) then AddToChildPoList(CL);
|
||||
finally
|
||||
SL.Free;
|
||||
ML.Free;
|
||||
CL.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPoCheckerForm.TryCreatePoFamily(Filename: String): Boolean;
|
||||
|
||||
function TPoCheckerForm.TryCreatepoFamilyList(MasterList: TStrings; const Lang: String): Boolean;
|
||||
var
|
||||
ChosenMasterName, ChosenChildName, ShortFn: String;
|
||||
Fn, Msg: String;
|
||||
i, Cnt: Integer;
|
||||
begin
|
||||
Result := False;
|
||||
ShortFn := ExtractFileName(Filename);
|
||||
if IsMasterPoName(Filename) then
|
||||
Msg := '';
|
||||
Cnt := MasterList.Count;
|
||||
for i := Cnt - 1 downto 0 do
|
||||
begin
|
||||
ChosenMasterName := Filename;
|
||||
ChosenChildName := '';
|
||||
end
|
||||
else
|
||||
begin //not a mastername, may be a child
|
||||
ChosenChildName := Filename;
|
||||
ChosenMasterName := ExtractMasterNameFromChildName(Filename);
|
||||
if (ChosenMasterName = '') then
|
||||
Fn := MasterList.Strings[i];
|
||||
if not FileExistsUtf8(Fn) then
|
||||
begin
|
||||
ChosenMasterName := '';
|
||||
ChosenChildName := '';
|
||||
ShowError(Format(sNotAProperFileName, [ShortFn]));
|
||||
end
|
||||
else
|
||||
if not FileExistsUtf8(ChosenMasterName) then
|
||||
begin
|
||||
ShowError(Format(sCannotFindMaster,
|
||||
[ExtractFileName(ChosenMasterName), ShortFn]));
|
||||
ChosenMasterName := '';
|
||||
ChosenChildName := '';
|
||||
MasterList.Delete(i);
|
||||
Msg := Format('"%s"',[Fn]) + LineEnding + Msg;
|
||||
end;
|
||||
end;
|
||||
Result := (ChosenMasterName <> '');
|
||||
if Result then
|
||||
if (Msg <> '') then
|
||||
MessageDlg('PoChecker',Format(sFilesNotFoundAndRemoved,[Msg]), mtInformation, [mbOk], 0);
|
||||
Cnt := MasterList.Count;
|
||||
if (Cnt = 0) then
|
||||
begin
|
||||
if Assigned(PoFamily) then
|
||||
PoFamily.Free;
|
||||
MessageDlg('PoChecker', sNoFilesLeftToCheck, mtInformation, [mbOk], 0);
|
||||
Exit;
|
||||
end;
|
||||
try
|
||||
PoFamily := TPoFamily.Create(ChosenMasterName, ChosenChildName);
|
||||
PoFamily.OnTestStart := @OnTestStart;
|
||||
PoFamily.OnTestEnd := @OnTestEnd;
|
||||
if Assigned(PoFamilyList) then PoFamilyList.Free;
|
||||
PoFamilyList := TPoFamilyList.Create(MasterList, Lang, Msg);
|
||||
if (Msg <> '') then
|
||||
begin
|
||||
MessageDlg('PoChecker',Format(sFilesNotFoundAndRemoved,[Msg]), mtInformation, [mbOk], 0);
|
||||
if (PoFamilyList.Count = 0) then
|
||||
begin
|
||||
MessageDlg('PoChecker', sNoFilesLeftToCheck, mtInformation, [mbOk], 0);
|
||||
FreeAndNil(PoFamilyList);
|
||||
Exit;
|
||||
end;
|
||||
end;
|
||||
PoFamilyList.OnTestStart := @OnTestStart;
|
||||
PoFamilyList.OnTestEnd := @OnTestEnd;
|
||||
Result := True;
|
||||
except
|
||||
on E: Exception do
|
||||
begin
|
||||
Result := False;
|
||||
ShowError(Format(sErrorOnCreate, [E.Message]));
|
||||
if Assigned(PoFamily) then
|
||||
if Assigned(PoFamilyList) then
|
||||
begin
|
||||
try
|
||||
PoFamily.Free;
|
||||
FreeAndNil(PoFamilyList);
|
||||
except
|
||||
on E: Exception do
|
||||
begin
|
||||
@ -574,7 +510,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -599,10 +534,8 @@ begin
|
||||
SL := TStringList.Create;
|
||||
mr := mrNone;
|
||||
try
|
||||
if (not (ptoFindAllChildren in TestOptions)) and Assigned(PoFamily.Child) and
|
||||
(PoFamily.ChildName <> FSelectedPoName) then
|
||||
PoFamily.ChildName := FSelectedPoName;
|
||||
PoFamily.RunTests(TestTypes, TestOptions, ErrorCount, WarningCount, SL);
|
||||
|
||||
PoFamilyList.RunTests(TestTypes, TestOptions, ErrorCount, WarningCount, SL);
|
||||
//debugln('RunSelectedTests: ', Format(sTotalErrors, [ErrorCount]));
|
||||
//debugln(' ', Format(sTotalWarnings, [WarningCount]));
|
||||
if (ErrorCount > 0) or (WarningCount > 0) or
|
||||
@ -615,7 +548,7 @@ begin
|
||||
ResultDlg.Log.Assign(SL);
|
||||
FreeAndNil(SL); //No need to keep 2 copies of this data
|
||||
if (pttCheckStatistics in TestTypes) then
|
||||
ResultDlg.PoFamilyStats := PoFamily.PoFamilyStats
|
||||
ResultDlg.PoFamilyStats := PoFamilyList.PoFamilyStats
|
||||
else
|
||||
ResultDlg.PoFamilyStats := nil;
|
||||
ResultDlg.Settings := FPoCheckerSettings;
|
||||
@ -639,35 +572,17 @@ begin
|
||||
StatusBar.SimpleText := '';
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.SetSelectedPoName(AFilename: String);
|
||||
var
|
||||
Idx: Integer;
|
||||
procedure TPoCheckerForm.UpdateGUI(HasSelection: Boolean);
|
||||
begin
|
||||
//debugln('TPoCheckerForm.SetSelectedPoName: ((FSelectedPoName = AFilename)) = ',DbgS((FSelectedPoName = AFilename)));
|
||||
NoErrLabel.Visible := False;
|
||||
//if (FSelectedPoName = AFilename) then Exit;
|
||||
FSelectedPoName := AFilename;
|
||||
if (AFilename <> '') then
|
||||
if HasSelection then
|
||||
begin
|
||||
RunBtn.Enabled := True;
|
||||
TestListBox.Enabled := True;
|
||||
SelectAllBtn.Enabled := True;
|
||||
SelectBasicBtn.Enabled := True;
|
||||
UnselectAllBtn.Enabled := True;
|
||||
Caption := sGUIPoFileCheckingTool + ' [' + ExtractFileName(AFilename) + ']';
|
||||
OpenDialog.InitialDir:= ExtractFileDir(AFilename);
|
||||
if IsMasterPoName(AFilename) then
|
||||
begin
|
||||
Idx := MasterPoListBox.Items.IndexOf(AFilename);
|
||||
MasterPoListBox.ItemIndex := Idx;
|
||||
ChildPoListBox.ItemIndex := -1;
|
||||
end
|
||||
else
|
||||
begin
|
||||
Idx := ChildPoListBox.Items.IndexOf(AFilename);
|
||||
ChildPoListBox.ItemIndex := Idx;
|
||||
MasterPoListBox.ItemIndex := -1;
|
||||
end;
|
||||
UnselectMasterBtn.Enabled := True;
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -676,9 +591,21 @@ begin
|
||||
SelectAllBtn.Enabled := False;
|
||||
SelectBasicBtn.Enabled := False;
|
||||
UnselectAllBtn.Enabled := False;
|
||||
Caption := sGUIPoFileCheckingTool;
|
||||
ChildPoListBox.ItemIndex := -1;
|
||||
MasterPoListBox.ItemIndex := -1;
|
||||
UnselectMasterBtn.Enabled := False;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TPoCheckerForm.GetSelectedMasterFiles: TStringList;
|
||||
var
|
||||
i: Integer;
|
||||
Fn: String;
|
||||
begin
|
||||
Result := TStringList.Create;
|
||||
for i := 0 to MasterPoListBox.Items.Count - 1 do
|
||||
begin
|
||||
Fn := MasterpoListBox.Items[i];
|
||||
if MasterPoListBox.Selected[i] then
|
||||
Result.Add(Fn);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -686,6 +613,7 @@ procedure TPoCheckerForm.AddToMasterPoList(Fn: String);
|
||||
var
|
||||
Idx: Integer;
|
||||
begin
|
||||
if not FileExistsUtf8(Fn) then Exit;
|
||||
Idx := MasterPoListBox.Items.IndexOf(Fn);
|
||||
if (Idx = -1) then
|
||||
begin
|
||||
@ -696,54 +624,59 @@ end;
|
||||
procedure TPoCheckerForm.AddToMasterPoList(S: TStrings);
|
||||
var
|
||||
i, Idx: Integer;
|
||||
Str, PrevItem: String;
|
||||
Str: String;
|
||||
begin
|
||||
{
|
||||
Idx := MasterPoListBox.ItemIndex;
|
||||
if (Idx <> -1) then
|
||||
PrevItem := MasterPoListBox.Items[Idx]
|
||||
else
|
||||
PrevItem := '';
|
||||
}
|
||||
MasterPoListBox.Items.BeginUpdate;
|
||||
try
|
||||
for i := 0 to S.Count - 1 do
|
||||
begin
|
||||
Str := S[i];
|
||||
//skip files that do not exist (anymore)
|
||||
if FileExistsUtf8(Str) then
|
||||
begin
|
||||
Idx := MasterPoListBox.Items.IndexOf(Str);
|
||||
if (Idx = -1) then
|
||||
MasterPoListBox.Items.Add(Str);
|
||||
end
|
||||
end;
|
||||
{
|
||||
if (PrevItem <> '') then
|
||||
begin
|
||||
Idx := MasterPoListBox.Items.IndexOf(PrevItem);
|
||||
MasterPoListBox.ItemIndex := Idx;
|
||||
end;
|
||||
}
|
||||
finally
|
||||
MasterPoListBox.Items.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.AddToChildPoList(Fn: String);
|
||||
var
|
||||
Idx: Integer;
|
||||
begin
|
||||
Idx := FChildPoList.Add(Fn);
|
||||
if (Idx > -1) then
|
||||
LangFilterChange(LangFilter);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.AddToChildPoList(S: TStrings);
|
||||
procedure TPoCheckerForm.SetSelectedMasterFiles(S: TStrings);
|
||||
var
|
||||
i, Idx: Integer;
|
||||
Str: String;
|
||||
Fn: String;
|
||||
HasSelection: Boolean;
|
||||
begin
|
||||
MasterPoListBox.ClearSelection;
|
||||
for i := 0 to S.Count - 1 do
|
||||
begin
|
||||
Str := S[i];
|
||||
Idx := FChildPoList.IndexOf(Str);
|
||||
if (Idx = -1) then
|
||||
FChildPoList.Add(Str);
|
||||
Fn := S.Strings[i];
|
||||
Idx := MasterPoListBox.Items.IndexOf(Fn);
|
||||
if (Idx <> -1) then
|
||||
begin
|
||||
MasterPoListBox.Selected[Idx] := True;
|
||||
HasSelection := True;
|
||||
end;
|
||||
LangFilterChange(LangFilter);
|
||||
end;
|
||||
//debugln('TPoCheckerForm.SetSelectedMasterFiles: MasterPoListBox.SelCount = ',DbgS(MasterPoListBox.SelCount));
|
||||
UpdateGUI(HasSelection);
|
||||
end;
|
||||
|
||||
|
||||
@ -764,22 +697,26 @@ begin
|
||||
SelectDirectoryDialog.Filename := FPoCheckerSettings.SelectDirectoryFilename;
|
||||
OpenDialog.FileName := FPoCheckerSettings.OpenDialogFilename;
|
||||
AddToMasterPoList(FPoCheckerSettings.MasterPoList);
|
||||
AddToChildPoList(FPoCheckerSettings.ChildPoList);
|
||||
SetSelectedMasterFiles(FPoCheckerSettings.MasterPoSelList);
|
||||
//AddToChildPoList(FPoCheckerSettings.ChildPoList);
|
||||
{
|
||||
if (CompareText(ExtractFileExt(FPoCheckerSettings.LastSelectedFile), '.po') = 0) then
|
||||
begin
|
||||
if IsMasterPoName(FPoCheckerSettings.LastSelectedFile) then
|
||||
AddToMasterPoList(FPoCheckerSettings.LastSelectedFile)
|
||||
else
|
||||
AddToChildPoList(FPoCheckerSettings.LastSelectedFile);
|
||||
SetSelectedPoName(FPoCheckerSettings.LastSelectedFile)
|
||||
UpdateGUI(True)
|
||||
end
|
||||
else
|
||||
SetSelectedPoName('');
|
||||
UpdateGUI(False);
|
||||
}
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.SaveConfig;
|
||||
var
|
||||
SL: TStringList;
|
||||
begin
|
||||
FPoCheckerSettings.LastSelectedFile := FSelectedPoName;
|
||||
FPoCheckerSettings.SelectDirectoryFilename := SelectDirectoryDialog.Filename;
|
||||
FPoCheckerSettings.OpenDialogFilename := OpenDialog.FileName;
|
||||
FPoCheckerSettings.TestTypes := GetTestTypesFromListBox;
|
||||
@ -790,7 +727,12 @@ begin
|
||||
else
|
||||
FPoCheckerSettings.MainFormGeometry := Rect(RestoredLeft, RestoredTop, RestoredLeft + RestoredWidth, RestoredTop + RestoredHeight);
|
||||
FPoCheckerSettings.MasterPoList := MasterPoListBox.Items;
|
||||
FPoCheckerSettings.ChildPoList := FChildPoList;
|
||||
SL := GetSelectedMasterFiles;
|
||||
try
|
||||
FPoCheckerSettings.MasterPoSelList := SL;
|
||||
finally
|
||||
SL.Free;
|
||||
end;
|
||||
FPoCheckerSettings.SaveConfig;
|
||||
end;
|
||||
|
||||
|
@ -30,13 +30,13 @@ type
|
||||
FTestTypes: TPoTestTypes;
|
||||
FTestOptions: TPoTestOptions;
|
||||
FMasterPoList: TStringList;
|
||||
FChildPoList: TStringList;
|
||||
FMasterPoSelList: TStringList;
|
||||
FLastSelectedFile: String;
|
||||
FMainFormGeometry: TRect;
|
||||
FGraphFormGeometry: TRect;
|
||||
FResultsFormGeometry: TRect;
|
||||
function GetChildPoList: TStrings;
|
||||
function GetMasterPoList: TStrings;
|
||||
function GetMasterPoSelList: TStrings;
|
||||
function LoadLastSelectedFile: String;
|
||||
function LoadTestTypes: TPoTestTypes;
|
||||
function LoadTestOptions: TPoTestOptions;
|
||||
@ -45,8 +45,7 @@ type
|
||||
function LoadSelectDirectoryFilename: String;
|
||||
function LoadOpenDialogFilename: String;
|
||||
procedure LoadMasterPoList(List: TStrings);
|
||||
procedure LoadChildPoList(List: TStrings);
|
||||
procedure SaveLastSelectedFile;
|
||||
procedure LoadMasterPoSelList(List: TStrings);
|
||||
procedure SaveTestTypes;
|
||||
procedure SaveTestOptions;
|
||||
procedure SaveWindowsGeometry;
|
||||
@ -54,9 +53,9 @@ type
|
||||
procedure SaveSelectDirectoryFilename;
|
||||
procedure SaveOpenDialogFilename;
|
||||
procedure SaveMasterPoList;
|
||||
procedure SaveChildrenPoList;
|
||||
procedure SetChildPoList(AValue: TStrings);
|
||||
procedure SaveMasterPoSelList;
|
||||
procedure SetMasterPoList(AValue: TStrings);
|
||||
procedure SetMasterPoSelList(AValue: TStrings);
|
||||
procedure ResetAllProperties;
|
||||
public
|
||||
constructor Create;
|
||||
@ -70,8 +69,7 @@ type
|
||||
property TestOptions: TPoTestOptions read FTestOptions write FTestOptions;
|
||||
property ExternalEditorName: String read FExternalEditorName write FExternalEditorName;
|
||||
property MasterPoList: TStrings read GetMasterPoList write SetMasterPoList;
|
||||
property ChildPoList: TStrings read GetChildPoList write SetChildPoList;
|
||||
property LastSelectedFile: String read FLastSelectedFile write FLastSelectedFile;
|
||||
property MasterPoSelList: TStrings read GetMasterPoSelList write SetMasterPoSelList;
|
||||
property SelectDirectoryFilename: String read FSelectDirectoryFilename write FSelectDirectoryFilename;
|
||||
property OpenDialogFilename: String read FOpenDialogFilename write FOpenDialogFilename;
|
||||
property MainFormGeometry: TRect read FMainFormGeometry write FMainFormGeometry;
|
||||
@ -158,6 +156,7 @@ const
|
||||
pWindowsGeometry = 'General/WindowsGeometry/';
|
||||
pExternalEditor = 'ExternalEditor/';
|
||||
pMasterPoFiles = 'MasterPoFiles/';
|
||||
pMasterPoSelection = 'MasterPoSelection/';
|
||||
pChildPoFiles = 'ChildPoFiles/';
|
||||
|
||||
var
|
||||
@ -240,11 +239,12 @@ begin
|
||||
Result := FMasterPoList;
|
||||
end;
|
||||
|
||||
function TPoCheckerSettings.GetChildPoList: TStrings;
|
||||
function TPoCheckerSettings.GetMasterPoSelList: TStrings;
|
||||
begin
|
||||
Result := FChildPoList;
|
||||
Result := FMasterPoSelList;
|
||||
end;
|
||||
|
||||
|
||||
function TPoCheckerSettings.LoadTestTypes: TPoTestTypes;
|
||||
var
|
||||
tt: TPoTestType;
|
||||
@ -331,25 +331,21 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.LoadChildPoList(List: TStrings);
|
||||
procedure TPoCheckerSettings.LoadMasterPoSelList(List: TStrings);
|
||||
var
|
||||
Cnt, i: Integer;
|
||||
Fn: String;
|
||||
begin
|
||||
List.Clear;
|
||||
Cnt := Fconfig.GetValue(pChildPoFiles+'Count',0);
|
||||
//debugln('TPoCheckerSettings.LoadChildPoList: Cnt = ',DbgS(Cnt));
|
||||
Cnt := Fconfig.GetValue(pMasterpoSelection+'Count',0);
|
||||
//debugln('TPoCheckerSettings.LoadMasterPoSelList: Cnt = ',DbgS(Cnt));
|
||||
for i := 0 to Cnt - 1 do
|
||||
begin
|
||||
Fn := FConfig.GetValue(pChildPoFiles+Format('Item_%d/Value',[i]),'');
|
||||
Fn := FConfig.GetValue(pMasterpoSelection+Format('Item_%d/Value',[i]),'');
|
||||
if (Fn <> '') then List.Add(Fn);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SaveLastSelectedFile;
|
||||
begin
|
||||
FConfig.SetDeleteValue(pLastSelected+'Value',FLastSelectedFile,'');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SaveTestTypes;
|
||||
var
|
||||
@ -413,27 +409,29 @@ begin
|
||||
FConfig.SetDeleteValue(pMasterPoFiles+Format('Item_%d/Value',[i]),FMasterPoList[i],'');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SaveChildrenPoList;
|
||||
procedure TPoCheckerSettings.SaveMasterPoSelList;
|
||||
var
|
||||
Cnt, i: Integer;
|
||||
begin
|
||||
FConfig.DeletePath(pChildPoFiles);
|
||||
Cnt := FChildPoList.Count;
|
||||
FConfig.SetDeleteValue(pChildPoFiles+'Count',Cnt,0);
|
||||
FConfig.DeletePath(pMasterPoSelection);
|
||||
Cnt := FMasterPoSelList.Count;
|
||||
FConfig.SetDeleteValue(pMasterPoSelection+'Count',Cnt,0);
|
||||
for i := 0 to Cnt - 1 do
|
||||
FConfig.SetDeleteValue(pChildPoFiles+Format('Item_%d/Value',[i]),FChildPoList[i],'');
|
||||
FConfig.SetDeleteValue(pMasterPoSelection+Format('Item_%d/Value',[i]),FMasterPoSelList[i],'');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SetChildPoList(AValue: TStrings);
|
||||
begin
|
||||
FChildPoList.Assign(AValue);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SetMasterPoList(AValue: TStrings);
|
||||
begin
|
||||
FMasterPoList.Assign(AValue);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SetMasterPoSelList(AValue: TStrings);
|
||||
begin
|
||||
FMasterPoSelList.Assign(AValue);
|
||||
end;
|
||||
|
||||
|
||||
procedure TPoCheckerSettings.ResetAllProperties;
|
||||
begin
|
||||
FTestTypes := [];
|
||||
@ -449,15 +447,14 @@ begin
|
||||
FSelectDirectoryFilename := '';
|
||||
FLastSelectedFile := '';
|
||||
if Assigned(FMasterPoList) then FMasterPoList.Free;
|
||||
if Assigned(FMasterPoSelList) then FMasterPoSelList.Free;
|
||||
FMasterPoList := TStringList.Create;
|
||||
FMasterPoSelList := TStringList.Create;
|
||||
FMasterPoList.Sorted := True;
|
||||
FMasterPoList.Duplicates := dupIgnore;
|
||||
if Assigned(FChildPoList) then FChildPoList.Free;
|
||||
FChildPoList := TStringList.Create;
|
||||
FChildPoList.Sorted := True;
|
||||
FChildPoList.Duplicates := dupIgnore;
|
||||
end;
|
||||
|
||||
|
||||
constructor TPoCheckerSettings.Create;
|
||||
begin
|
||||
try
|
||||
@ -488,7 +485,7 @@ destructor TPoCheckerSettings.Destroy;
|
||||
begin
|
||||
if Assigned(FConfig) then FConfig.Free;
|
||||
FMasterPoList.Free;
|
||||
FChildPoList.Free;
|
||||
FMasterPoSelList.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
@ -503,7 +500,7 @@ begin
|
||||
FExternalEditorName := LoadExternalEditorName;
|
||||
LoadWindowsGeometry;
|
||||
LoadMasterPoList(FMasterPoList);
|
||||
LoadChildPoList(FChildPoList);
|
||||
LoadMasterPoSelList(FMasterPoSelList);
|
||||
except
|
||||
ResetAllProperties;
|
||||
debugln('TPoCheckerSettings.LoadConfig: Error loading config.');
|
||||
@ -517,7 +514,6 @@ begin
|
||||
//the next line can be reomoved after some time
|
||||
FConfig.DeletePath(pLoadSettings);
|
||||
|
||||
SaveLastSelectedFile;
|
||||
SaveTestTypes;
|
||||
SaveTestOptions;
|
||||
SaveExternalEditorName;
|
||||
@ -525,7 +521,10 @@ begin
|
||||
SaveOpenDialogFilename;
|
||||
SaveWindowsGeometry;
|
||||
SaveMasterPoList;
|
||||
SaveChildrenPoList;
|
||||
SaveMasterPoSelList;
|
||||
//not used anymore, clear it. Remove this line after a while
|
||||
FConfig.DeletePath(pChildPoFiles);
|
||||
|
||||
FConfig.WriteToDisk;
|
||||
except
|
||||
debugln('TPoCheckerSettings.SaveConfig: Error saving config.');
|
||||
|
@ -122,6 +122,7 @@ Type
|
||||
public
|
||||
procedure Clear;
|
||||
procedure Add(AName: String; ANrTotal, ANrTranslated, ANrUnTranslated, ANrFuzzy, ANrErrors: Integer);
|
||||
procedure AddItemsTo(APoFamilyStats: TPoFamilyStats);
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
procedure AddStatisticsToLog(ALog: TStrings);
|
||||
@ -135,11 +136,12 @@ function IsMasterPoName(const Fn: String): Boolean;
|
||||
function ExtractMasterNameFromChildName(const AChildName: String): String;
|
||||
function FindAllTranslatedPoFiles(const Filename: string): TStringList;
|
||||
|
||||
const
|
||||
NoError = 0;
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
NoError = 0;
|
||||
sCommentIdentifier = '#: ';
|
||||
//sCharSetIdentifier = '"Content-Type: text/plain; charset=';
|
||||
sMsgID = 'msgid "';
|
||||
@ -389,6 +391,19 @@ begin
|
||||
FList.Add(TStat.Create(AName, ANrTotal, ANrTranslated, ANrUntranslated, ANrFuzzy, ANrErrors));
|
||||
end;
|
||||
|
||||
procedure TPoFamilyStats.AddItemsTo(APoFamilyStats: TPoFamilyStats);
|
||||
var
|
||||
i: Integer;
|
||||
AStat: TStat;
|
||||
begin
|
||||
for i := 0 to FList.Count - 1 do
|
||||
begin
|
||||
AStat := GetItems(i);
|
||||
APoFamilyStats.Add(AStat.PoName, AStat.NrTotal, AStat.NrTranslated,
|
||||
AStat.NrUntranslated, AStat.NrFuzzy, AStat.NrErrors);
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TPoFamilyStats.Create;
|
||||
begin
|
||||
FList := TFPObjectList.Create(True);
|
||||
|
Loading…
Reference in New Issue
Block a user