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:
bart 2014-10-08 17:44:38 +00:00
parent dd86099d37
commit 7c9f2ba5c3
18 changed files with 325 additions and 462 deletions

View File

@ -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>

View File

@ -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}

View File

@ -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."

View File

@ -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"

View File

@ -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."

View File

@ -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."

View File

@ -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."

View File

@ -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."

View File

@ -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."

View File

@ -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

View File

@ -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."

View File

@ -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."

View File

@ -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."

View File

@ -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:' ;

View File

@ -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|*'

View File

@ -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;

View File

@ -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.');

View File

@ -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);