mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 04:18:48 +02:00
PoChecker:
- Add capability to scan a folder for po-files. - Add files to a listbox. - Add filter for language to listbox with translated po-files. - Save and restore contents of the file lists. - Regenerate language files. git-svn-id: trunk@46394 -
This commit is contained in:
parent
d6f255f9f6
commit
4f735c239c
@ -17,6 +17,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "PO File Checker"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -53,6 +57,10 @@ msgstr "Zkontrolovat počet položek"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr "Spočítat procentuální zastoupení (ne)přeložených a nepřesných řetězců"
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Kopírovat do schránky"
|
||||
@ -242,6 +250,10 @@ msgstr ""
|
||||
"Chyba ukládání souboru:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
@ -296,6 +308,10 @@ msgstr "Statistiky překladu pro:"
|
||||
msgid "&Unselect All"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr ""
|
||||
|
@ -14,6 +14,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "po-Datei-Prüfer"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -50,6 +54,10 @@ msgstr "Überprüfung der Anzahl der Einträge"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr "Zeige Prozente (nicht) übersetzter und ungeklärter Zeichenketten"
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "In Zwischenablage kopieren"
|
||||
@ -236,6 +244,10 @@ msgstr ""
|
||||
"Fehler beim Speichern von Datei:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr "&Alle auswählen"
|
||||
@ -316,6 +328,10 @@ msgstr "Übersetzungsstatistikpro Sprache:"
|
||||
msgid "&Unselect All"
|
||||
msgstr "Alle abwählen"
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr "Nicht übersetzt"
|
||||
|
@ -13,6 +13,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "Comprobador de archivos de PO"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -49,6 +53,10 @@ msgstr "Compruebe el número de elementos"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copiar en el portapapeles"
|
||||
@ -233,6 +241,10 @@ msgstr ""
|
||||
"Error guardando archivo:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
@ -285,6 +297,10 @@ msgstr ""
|
||||
msgid "&Unselect All"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr ""
|
||||
|
@ -15,6 +15,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "PO Fájl Ellenőrző"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -51,6 +55,10 @@ msgstr "Elemek számának ellenőrzése"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr "A lefordított és lefordítatlan szövegek százalékának ellenőrzése"
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Másolás vágólapra"
|
||||
@ -239,6 +247,10 @@ msgstr ""
|
||||
"Hiba a fájl mentésekor:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr "Összes kijelölése"
|
||||
@ -292,6 +304,10 @@ msgstr "Fordítási statisztika ehhez:"
|
||||
msgid "&Unselect All"
|
||||
msgstr "Kijelölések törlése"
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr ""
|
||||
|
@ -13,6 +13,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "Verificatore di files PO"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -49,6 +53,10 @@ msgstr "Verifica il numero di voci"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr "Verifica le percentuali di stringhe tradotte o incerte"
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copia negli appunti"
|
||||
@ -237,6 +245,10 @@ msgstr ""
|
||||
"Errore nel salvare il file:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr "Seleziona &Tutto"
|
||||
@ -289,6 +301,10 @@ msgstr "Statistiche di traduzione per:"
|
||||
msgid "&Unselect All"
|
||||
msgstr "&Deseleziona tutto"
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr ""
|
||||
|
@ -15,6 +15,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "PO ファイルチェッカー"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -51,6 +55,10 @@ msgstr "項目数の検査"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr "翻訳/未翻訳、未確定文字列の割合を検査"
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "クリップボードへコピー"
|
||||
@ -239,6 +247,10 @@ msgstr ""
|
||||
"ファイル保存中のエラー:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
@ -293,6 +305,10 @@ msgstr "翻訳状況:"
|
||||
msgid "&Unselect All"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr ""
|
||||
|
@ -15,6 +15,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "PO failų tikrintuvė"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -51,6 +55,10 @@ msgstr "Tikrinti ar tinkamas elementų kiekis"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Kopijuoti į iškarpinę"
|
||||
@ -235,6 +243,10 @@ msgstr ""
|
||||
"Rašant į failą įvyko klaida:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
@ -285,6 +297,10 @@ msgstr ""
|
||||
msgid "&Unselect All"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr ""
|
||||
|
@ -5,6 +5,10 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
msgid "PO File Checker"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -37,6 +41,10 @@ msgstr ""
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr ""
|
||||
@ -209,6 +217,10 @@ msgid ""
|
||||
"%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
@ -257,6 +269,10 @@ msgstr ""
|
||||
msgid "&Unselect All"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr ""
|
||||
|
@ -14,6 +14,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "Verificador de arquivos PO"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -50,6 +54,10 @@ msgstr "Verificar número de itens"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copiar para área de transferência"
|
||||
@ -233,6 +241,10 @@ msgstr ""
|
||||
"Erro ao salvar arquivo:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
@ -285,6 +297,10 @@ msgstr ""
|
||||
msgid "&Unselect All"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr ""
|
||||
|
@ -13,6 +13,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "Проверка файлов PO"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -49,6 +53,10 @@ msgstr "Проверка числа строк"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr "Вывод статистики по (не)переведённым и неточным строкам"
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Копировать в буфер обмена"
|
||||
@ -237,6 +245,10 @@ msgstr ""
|
||||
"Ошибка сохранения файла:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
#| msgid "Select &All Tests"
|
||||
msgid "Select &All"
|
||||
@ -323,6 +335,10 @@ msgstr "Статистика переводов по языкам:"
|
||||
msgid "&Unselect All"
|
||||
msgstr "&Снять выбор"
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr "Непереведённые строки"
|
||||
|
@ -12,6 +12,10 @@ msgstr ""
|
||||
msgid "PO File Checker"
|
||||
msgstr "Перевірка PO Файлів"
|
||||
|
||||
#: pocheckerconsts.salllanguages
|
||||
msgid "All Languages"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scannotfindmaster
|
||||
msgid ""
|
||||
"Cannot find master po file:\n"
|
||||
@ -48,6 +52,10 @@ msgstr "Перевірити кількість елементів"
|
||||
msgid "Check percentage of (un)translated and fuzzy strings"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sclearlistbox
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.scopycaption
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Копіювати в буфер"
|
||||
@ -232,6 +240,10 @@ msgstr ""
|
||||
"Помилка збереження файлу:\n"
|
||||
"%s\n"
|
||||
|
||||
#: pocheckerconsts.sscandir
|
||||
msgid "Scan a folder"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sselectalltests
|
||||
msgid "Select &All"
|
||||
msgstr ""
|
||||
@ -282,6 +294,10 @@ msgstr ""
|
||||
msgid "&Unselect All"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.sunselectlistbox
|
||||
msgid "Unselect"
|
||||
msgstr ""
|
||||
|
||||
#: pocheckerconsts.suntranslated
|
||||
msgid "Untranslated"
|
||||
msgstr ""
|
||||
|
@ -15,7 +15,11 @@ resourcestring
|
||||
sGUIPoFileCheckingTool = 'GUI Po-file checking tool';
|
||||
sSelectTestTypes = 'Select test types';
|
||||
sOpenAPoFile = '&Open a po-file';
|
||||
sScanDir = 'Scan a folder';
|
||||
sRunSelectedTests = '&Run Selected Tests';
|
||||
sClearListBox = 'Clear';
|
||||
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';
|
||||
sErrorOnCreate = 'Error creating an instance of TPoFamily:' + LineEnding + '%s';
|
||||
|
@ -1,11 +1,12 @@
|
||||
object PoCheckerForm: TPoCheckerForm
|
||||
Left = 318
|
||||
Height = 342
|
||||
Height = 511
|
||||
Top = 163
|
||||
Width = 581
|
||||
Width = 644
|
||||
Anchors = []
|
||||
Caption = 'GUI Po-file checking tool'
|
||||
ClientHeight = 342
|
||||
ClientWidth = 581
|
||||
ClientHeight = 511
|
||||
ClientWidth = 644
|
||||
OnCreate = FormCreate
|
||||
OnDestroy = FormDestroy
|
||||
ShowInTaskBar = stAlways
|
||||
@ -15,20 +16,31 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Control = SelectTestLabel
|
||||
AnchorSideTop.Control = SelectTestLabel
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Height = 154
|
||||
Left = 212
|
||||
Height = 118
|
||||
Top = 29
|
||||
Width = 373
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
Width = 425
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
Enabled = False
|
||||
ItemHeight = 0
|
||||
Items.Strings = (
|
||||
'sCheckNumberOfItems'
|
||||
'sCheckForIncompatibleFormatArguments'
|
||||
'sCheckMissingIdentifiers'
|
||||
'sCheckForMismatchesInUntranslatedStrings'
|
||||
'sCheckForDuplicateUntranslatedValues'
|
||||
'sCheckStatistics'
|
||||
)
|
||||
ItemHeight = 17
|
||||
TabOrder = 0
|
||||
Data = {
|
||||
06000000000000000000
|
||||
}
|
||||
end
|
||||
object SelectTestLabel: TLabel
|
||||
AnchorSideLeft.Control = OpenBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
Left = 201
|
||||
Left = 212
|
||||
Height = 15
|
||||
Top = 8
|
||||
Width = 93
|
||||
@ -40,15 +52,16 @@ object PoCheckerForm: TPoCheckerForm
|
||||
end
|
||||
object OpenBtn: TBitBtn
|
||||
AnchorSideLeft.Control = RunBtn
|
||||
AnchorSideTop.Control = TestListBox
|
||||
AnchorSideRight.Control = RunBtn
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = RunBtn
|
||||
Left = 8
|
||||
Height = 63
|
||||
Top = 33
|
||||
AnchorSideBottom.Control = ScanDirBtn
|
||||
Left = 19
|
||||
Height = 50
|
||||
Top = 29
|
||||
Width = 184
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Bottom = 6
|
||||
Anchors = [akTop]
|
||||
BorderSpacing.Bottom = 10
|
||||
Caption = '&Open a po-file'
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
@ -90,13 +103,15 @@ object PoCheckerForm: TPoCheckerForm
|
||||
TabOrder = 1
|
||||
end
|
||||
object RunBtn: TBitBtn
|
||||
AnchorSideTop.Control = ScanDirBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 8
|
||||
Height = 63
|
||||
Top = 102
|
||||
Left = 19
|
||||
Height = 50
|
||||
Top = 149
|
||||
Width = 184
|
||||
BorderSpacing.Top = 6
|
||||
Anchors = [akTop]
|
||||
BorderSpacing.Top = 5
|
||||
Caption = '&Run Selected Tests'
|
||||
Enabled = False
|
||||
Kind = bkOK
|
||||
@ -106,7 +121,7 @@ object PoCheckerForm: TPoCheckerForm
|
||||
object NoErrLabel: TLabel
|
||||
Left = 8
|
||||
Height = 25
|
||||
Top = 280
|
||||
Top = 449
|
||||
Width = 146
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'No errors found'
|
||||
@ -120,9 +135,9 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Control = TestListBox
|
||||
AnchorSideTop.Control = SelectBasicBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Left = 212
|
||||
Height = 19
|
||||
Top = 220
|
||||
Top = 184
|
||||
Width = 156
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Find all translated PO files'
|
||||
@ -132,9 +147,9 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Control = TestListBox
|
||||
AnchorSideTop.Control = TestListBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Left = 212
|
||||
Height = 25
|
||||
Top = 189
|
||||
Top = 153
|
||||
Width = 115
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Select Basic Tests'
|
||||
@ -146,9 +161,9 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Control = SelectBasicBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = SelectBasicBtn
|
||||
Left = 320
|
||||
Left = 331
|
||||
Height = 25
|
||||
Top = 189
|
||||
Top = 153
|
||||
Width = 115
|
||||
BorderSpacing.Left = 4
|
||||
Caption = 'Select All Tests'
|
||||
@ -160,9 +175,9 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Control = SelectAllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = SelectAllBtn
|
||||
Left = 439
|
||||
Left = 450
|
||||
Height = 25
|
||||
Top = 189
|
||||
Top = 153
|
||||
Width = 115
|
||||
BorderSpacing.Left = 4
|
||||
Caption = 'Unselect All Tests'
|
||||
@ -174,9 +189,9 @@ object PoCheckerForm: TPoCheckerForm
|
||||
AnchorSideLeft.Control = TestListBox
|
||||
AnchorSideTop.Control = FindAllPOsCheckBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Left = 212
|
||||
Height = 19
|
||||
Top = 245
|
||||
Top = 209
|
||||
Width = 152
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'sIgnoreFuzzyTranslations'
|
||||
@ -185,14 +200,178 @@ object PoCheckerForm: TPoCheckerForm
|
||||
object StatusBar: TStatusBar
|
||||
Left = 0
|
||||
Height = 23
|
||||
Top = 319
|
||||
Width = 581
|
||||
Top = 488
|
||||
Width = 644
|
||||
Panels = <>
|
||||
end
|
||||
object ScanDirBtn: TBitBtn
|
||||
AnchorSideLeft.Control = OpenBtn
|
||||
AnchorSideTop.Control = OpenBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = RunBtn
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = RunBtn
|
||||
Left = 19
|
||||
Height = 50
|
||||
Top = 89
|
||||
Width = 184
|
||||
Anchors = [akTop]
|
||||
BorderSpacing.Top = 5
|
||||
BorderSpacing.Bottom = 10
|
||||
Caption = 'Scan a folder'
|
||||
OnClick = ScanDirBtnClick
|
||||
TabOrder = 9
|
||||
end
|
||||
object MasterPoListBox: TListBox
|
||||
AnchorSideTop.Control = IgnoreFuzzyCheckBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = NoErrLabel
|
||||
Left = 8
|
||||
Height = 181
|
||||
Top = 233
|
||||
Width = 272
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
BorderSpacing.Top = 5
|
||||
BorderSpacing.Bottom = 35
|
||||
ItemHeight = 0
|
||||
OnDrawItem = MasterPoListBoxDrawItem
|
||||
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 = 151
|
||||
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
|
||||
end
|
||||
object LangFilter: TComboBox
|
||||
AnchorSideLeft.Control = ChildPoListBox
|
||||
AnchorSideTop.Control = ChildPoListBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = TestListBox
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = ClearChildBtn
|
||||
Left = 290
|
||||
Height = 23
|
||||
Top = 394
|
||||
Width = 347
|
||||
Anchors = [akLeft, akRight]
|
||||
BorderSpacing.Top = 5
|
||||
ItemHeight = 15
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
'All languages'
|
||||
'af_ZA'
|
||||
'ar'
|
||||
'ca'
|
||||
'cs'
|
||||
'de'
|
||||
'es'
|
||||
'fi'
|
||||
'fr'
|
||||
'he'
|
||||
'hu'
|
||||
'id'
|
||||
'it'
|
||||
'ja'
|
||||
'lt'
|
||||
'nl'
|
||||
'pl'
|
||||
'pt_BR'
|
||||
'ru'
|
||||
'sk'
|
||||
'tr'
|
||||
'uk'
|
||||
'zh_CN'
|
||||
)
|
||||
OnChange = LangFilterChange
|
||||
Style = csDropDownList
|
||||
TabOrder = 12
|
||||
Text = 'All languages'
|
||||
end
|
||||
object ClearMasterBtn: TButton
|
||||
AnchorSideLeft.Control = MasterPoListBox
|
||||
AnchorSideTop.Control = MasterPoListBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = NoErrLabel
|
||||
Left = 8
|
||||
Height = 25
|
||||
Top = 424
|
||||
Width = 75
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Top = 10
|
||||
Caption = 'Clear'
|
||||
OnClick = ClearMasterBtnClick
|
||||
TabOrder = 13
|
||||
end
|
||||
object UnselectMasterBtn: TButton
|
||||
AnchorSideLeft.Control = ClearMasterBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideBottom.Control = NoErrLabel
|
||||
Left = 93
|
||||
Height = 25
|
||||
Top = 424
|
||||
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 = 424
|
||||
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 = 424
|
||||
Width = 75
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Left = 10
|
||||
Caption = 'Unselect'
|
||||
Enabled = False
|
||||
OnClick = UnselectChildBtnClick
|
||||
TabOrder = 16
|
||||
end
|
||||
object OpenDialog: TOpenDialog
|
||||
Filter = 'po-files (*.po)|*.po|all files|*'
|
||||
Options = [ofFileMustExist, ofEnableSizing, ofViewDetail]
|
||||
left = 40
|
||||
top = 512
|
||||
left = 480
|
||||
top = 432
|
||||
end
|
||||
object SelectDirectoryDialog: TSelectDirectoryDialog
|
||||
Options = [ofEnableSizing]
|
||||
left = 584
|
||||
top = 432
|
||||
end
|
||||
end
|
||||
|
@ -25,7 +25,8 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, ComCtrls,
|
||||
StdCtrls, LCLProc, CheckLst, Buttons, ExtCtrls, ComCtrls, Masks, Types,
|
||||
LCLType,
|
||||
{$IFDEF POCHECKERSTANDALONE}
|
||||
Translations,
|
||||
{$ELSE}
|
||||
@ -38,13 +39,34 @@ type
|
||||
{ TPoCheckerForm }
|
||||
|
||||
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 ClearMasterBtnClick(Sender: TObject);
|
||||
procedure LangFilterChange(Sender: TObject);
|
||||
procedure MasterPoListBoxDrawItem(Control: TWinControl; Index: Integer;
|
||||
ARect: TRect; State: TOwnerDrawState);
|
||||
procedure MasterPoListBoxSelectionChange(Sender: TObject; User: boolean);
|
||||
procedure ScanDirBtnClick(Sender: TObject);
|
||||
procedure UnselectChildBtnClick(Sender: TObject);
|
||||
procedure UnselectMasterBtnClick(Sender: TObject);
|
||||
private
|
||||
PoFamily: TPoFamily;
|
||||
FSelectedPoName: String;
|
||||
FPoCheckerSettings: TPoCheckerSettings;
|
||||
FChildPoList: TStringList;
|
||||
procedure OnTestStart(const ATestName, APoFileName: string);
|
||||
procedure OnTestEnd(const ATestName: string; const ErrorCount: integer);
|
||||
procedure OnTestEnd(const {%H-}ATestName: string; const {%H-}ErrorCount: integer);
|
||||
procedure FillTestListBox;
|
||||
function GetTestTypesFromListBox: TPoTestTypes;
|
||||
function GetTestOptions: TPoTestOptions;
|
||||
@ -52,10 +74,15 @@ type
|
||||
procedure SetTestOptionCheckBoxes(TestOptions: TPoTestOptions);
|
||||
procedure ShowError(const Msg: string);
|
||||
function TrySelectFile(out Filename: String): Boolean;
|
||||
procedure ScanDirectory(ADir: String);
|
||||
function TryCreatePoFamily(Filename: String): Boolean;
|
||||
procedure RunSelectedTests;
|
||||
procedure ClearStatusBar;
|
||||
procedure SetSelectedPoName(AFilename: String);
|
||||
procedure AddToMasterPoList(Fn: String);
|
||||
procedure AddToMasterPoList(S: TStrings);
|
||||
procedure AddToChildPoList(Fn: String);
|
||||
procedure AddToChildPoList(S: TStrings);
|
||||
procedure LoadConfig;
|
||||
procedure SaveConfig;
|
||||
published
|
||||
@ -124,13 +151,21 @@ begin
|
||||
'lclstrconsts.' + Lang + '.po');
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
FChildPoList := TStringList.Create;
|
||||
FChildPoList.Sorted := True;
|
||||
FChildPoList.Duplicates := dupIgnore;
|
||||
Caption := sGUIPoFileCheckingTool;
|
||||
SelectTestLabel.Caption := sSelectTestTypes;
|
||||
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;
|
||||
ClearStatusBar;
|
||||
@ -139,6 +174,7 @@ begin
|
||||
SelectBasicBtn.Caption := sSelectBasicTests;
|
||||
UnselectAllBtn.Caption := sUnselectAllTests;
|
||||
LoadConfig;
|
||||
LangFilter.Invalidate; //Items[0] may have been changed
|
||||
end;
|
||||
|
||||
|
||||
@ -149,6 +185,7 @@ begin
|
||||
SaveConfig;
|
||||
if Assigned(FPoCheckerSettings) then
|
||||
FPoCheckerSettings.Free;
|
||||
FChildPoList.Free;
|
||||
end;
|
||||
|
||||
|
||||
@ -158,6 +195,10 @@ var
|
||||
begin
|
||||
if TrySelectFile(Fn) then
|
||||
begin
|
||||
if IsMasterPoName(Fn) then
|
||||
AddToMasterPoList(Fn)
|
||||
else
|
||||
AddToChildPoList(Fn);
|
||||
SetSelectedPoName(Fn);
|
||||
end
|
||||
else
|
||||
@ -197,6 +238,137 @@ begin
|
||||
TestListBox.CheckAll(cbUnchecked, False, False);
|
||||
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);
|
||||
begin
|
||||
//Can't seem to get this to work with just Anchors
|
||||
LangFilter.Top := ChildPoListBox.Top + ChildPoListBox.Height + 10;
|
||||
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('');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.MasterPoListBoxDrawItem(Control: TWinControl;
|
||||
Index: Integer; ARect: TRect; State: TOwnerDrawState);
|
||||
var
|
||||
LB: TListBox;
|
||||
AText: String;
|
||||
begin
|
||||
LB := TListBox(Control);
|
||||
with LB.Canvas do
|
||||
begin
|
||||
//if odSelected in State then Brush.Color := $00FFD2A6;
|
||||
FillRect(ARect);
|
||||
AText := ExtractFilename(LB.Items[Index]);
|
||||
TextOut(ARect.Left, ARect.Top, AText);
|
||||
if (odFocused in State) then
|
||||
begin
|
||||
Brush.Color := LB.Color;
|
||||
DrawFocusRect(ARect);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.MasterPoListBoxSelectionChange(Sender: TObject;
|
||||
User: boolean);
|
||||
begin
|
||||
//debugln('TPoCheckerForm.MasterPoListBoxSelectionChange: User = ',DbgS(User));
|
||||
if User then
|
||||
begin
|
||||
SetSelectedPoName(MasterPoListBox.Items[MasterPoListBox.ItemIndex]);
|
||||
end;
|
||||
UnselectMasterBtn.Enabled := (MasterPoListBox.ItemIndex <> -1);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.ScanDirBtnClick(Sender: TObject);
|
||||
begin
|
||||
if SelectDirectoryDialog.Execute then
|
||||
begin
|
||||
ScanDirectory(SelectDirectoryDialog.FileName);
|
||||
end;
|
||||
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('');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.OnTestStart(const ATestName, APoFileName: string);
|
||||
begin
|
||||
@ -220,6 +392,7 @@ procedure TPoCheckerForm.FillTestListBox;
|
||||
var
|
||||
Typ: TPoTestType;
|
||||
begin
|
||||
TestListBox.Items.Clear;
|
||||
for Typ := Low(PoTestTypeNames) to High(PoTestTypeNames) do
|
||||
case Typ of
|
||||
pttCheckNrOfItems:
|
||||
@ -306,6 +479,34 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.ScanDirectory(ADir: String);
|
||||
var
|
||||
SL, ML, CL: 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);
|
||||
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;
|
||||
var
|
||||
ChosenMasterName, ChosenChildName, ShortFn: String;
|
||||
@ -429,9 +630,12 @@ begin
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.SetSelectedPoName(AFilename: String);
|
||||
var
|
||||
Idx: Integer;
|
||||
begin
|
||||
//debugln('TPoCheckerForm.SetSelectedPoName: ((FSelectedPoName = AFilename)) = ',DbgS((FSelectedPoName = AFilename)));
|
||||
NoErrLabel.Visible := False;
|
||||
if (FSelectedPoName = AFilename) then Exit;
|
||||
//if (FSelectedPoName = AFilename) then Exit;
|
||||
FSelectedPoName := AFilename;
|
||||
if (AFilename <> '') then
|
||||
begin
|
||||
@ -442,6 +646,18 @@ begin
|
||||
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;
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -451,9 +667,75 @@ begin
|
||||
SelectBasicBtn.Enabled := False;
|
||||
UnselectAllBtn.Enabled := False;
|
||||
Caption := sGUIPoFileCheckingTool;
|
||||
ChildPoListBox.ItemIndex := -1;
|
||||
MasterPoListBox.ItemIndex := -1;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.AddToMasterPoList(Fn: String);
|
||||
var
|
||||
Idx: Integer;
|
||||
begin
|
||||
Idx := MasterPoListBox.Items.IndexOf(Fn);
|
||||
if (Idx = -1) then
|
||||
begin
|
||||
MasterPoListBox.Items.Add(Fn);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerForm.AddToMasterPoList(S: TStrings);
|
||||
var
|
||||
i, Idx: Integer;
|
||||
Str, PrevItem: 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];
|
||||
Idx := MasterPoListBox.Items.IndexOf(Str);
|
||||
if (Idx = -1) then
|
||||
MasterPoListBox.Items.Add(Str);
|
||||
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);
|
||||
var
|
||||
i, Idx: Integer;
|
||||
Str: String;
|
||||
begin
|
||||
for i := 0 to S.Count - 1 do
|
||||
begin
|
||||
Str := S[i];
|
||||
Idx := FChildPoList.IndexOf(Str);
|
||||
if (Idx = -1) then
|
||||
FChildPoList.Add(Str);
|
||||
end;
|
||||
LangFilterChange(LangFilter);
|
||||
end;
|
||||
|
||||
|
||||
procedure TPoCheckerForm.LoadConfig;
|
||||
var
|
||||
@ -474,8 +756,18 @@ begin
|
||||
//DebugLn(' ',DbgS(FPoCheckerSettings.TestTypes));
|
||||
SetTestTypeCheckBoxes(FPoCheckerSettings.TestTypes);
|
||||
SetTestOptionCheckBoxes(FPoCheckerSettings.TestOptions);
|
||||
SelectDirectoryDialog.Filename := FPoCheckerSettings.SelectDirectoryFilename;
|
||||
OpenDialog.FileName := FPoCheckerSettings.OpenDialogFilename;
|
||||
AddToMasterPoList(FPoCheckerSettings.MasterPoList);
|
||||
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)
|
||||
end
|
||||
else
|
||||
SetSelectedPoName('');
|
||||
end;
|
||||
@ -484,9 +776,13 @@ procedure TPoCheckerForm.SaveConfig;
|
||||
begin
|
||||
FPoCheckerSettings.SaveSettingsOnExit := True; //ToDo: create a checkbox for this
|
||||
FPoCheckerSettings.LastSelectedFile := FSelectedPoName;
|
||||
FPoCheckerSettings.SelectDirectoryFilename := SelectDirectoryDialog.Filename;
|
||||
FPoCheckerSettings.OpenDialogFilename := OpenDialog.FileName;
|
||||
FPoCheckerSettings.TestTypes := GetTestTypesFromListBox;
|
||||
FPoCheckerSettings.TestOptions := GetTestOptions;
|
||||
FPoCheckerSettings.MainFormGeometry := BoundsRect;
|
||||
FPoCheckerSettings.MasterPoList := MasterPoListBox.Items;
|
||||
FPoCheckerSettings.ChildPoList := FChildPoList;
|
||||
FPoCheckerSettings.SaveConfig;
|
||||
end;
|
||||
|
||||
|
@ -22,30 +22,40 @@ type
|
||||
FConfig: TConfigStorage;
|
||||
FExternalEditorName: String;
|
||||
FFilename: String;
|
||||
FOpenDialogFilename: String;
|
||||
FSelectDirectoryFilename: String;
|
||||
FTestTypes: TPoTestTypes;
|
||||
FTestOptions: TPoTestOptions;
|
||||
FLoadSettings: Boolean;
|
||||
FSaveSettingsOnExit: Boolean;
|
||||
FMasterPoList: TStrings;
|
||||
FChildrenPoList: TStrings;
|
||||
FMasterPoList: TStringList;
|
||||
FChildPoList: TStringList;
|
||||
FLastSelectedFile: String;
|
||||
FMainFormGeometry: TRect;
|
||||
FGraphFormGeometry: TRect;
|
||||
FResultsFormGeometry: TRect;
|
||||
function GetChildPoList: TStrings;
|
||||
function GetMasterPoList: TStrings;
|
||||
function LoadLastSelectedFile: String;
|
||||
function LoadTestTypes: TPoTestTypes;
|
||||
function LoadTestOptions: TPoTestOptions;
|
||||
procedure LoadWindowsGeometry;
|
||||
function LoadExternalEditorName: String;
|
||||
function LoadSelectDirectoryFilename: String;
|
||||
function LoadOpenDialogFilename: String;
|
||||
procedure LoadMasterPoList(List: TStrings);
|
||||
procedure LoadChildrenPoList(List: TStrings);
|
||||
procedure LoadChildPoList(List: TStrings);
|
||||
procedure SaveLastSelectedFile;
|
||||
procedure SaveTestTypes;
|
||||
procedure SaveTestOptions;
|
||||
procedure SaveWindowsGeometry;
|
||||
procedure SaveExternalEditorName;
|
||||
procedure SaveSelectDirectoryFilename;
|
||||
procedure SaveOpenDialogFilename;
|
||||
procedure SaveMasterPoList;
|
||||
procedure SaveChildrenPoList;
|
||||
procedure SetChildPoList(AValue: TStrings);
|
||||
procedure SetMasterPoList(AValue: TStrings);
|
||||
|
||||
public
|
||||
constructor Create;
|
||||
@ -59,9 +69,11 @@ type
|
||||
property TestTypes: TPoTestTypes read FTestTypes write FTestTypes;
|
||||
property TestOptions: TPoTestOptions read FTestOptions write FTestOptions;
|
||||
property ExternalEditorName: String read FExternalEditorName write FExternalEditorName;
|
||||
property MasterPoList: TStrings read FMasterPoList write FMasterPoList;
|
||||
property ChildrenPoList: TStrings read FChildrenPoList write FChildrenPoList;
|
||||
property MasterPoList: TStrings read GetMasterPoList write SetMasterPoList;
|
||||
property ChildPoList: TStrings read GetChildPoList write SetChildPoList;
|
||||
property LastSelectedFile: String read FLastSelectedFile write FLastSelectedFile;
|
||||
property SelectDirectoryFilename: String read FSelectDirectoryFilename write FSelectDirectoryFilename;
|
||||
property OpenDialogFilename: String read FOpenDialogFilename write FOpenDialogFilename;
|
||||
property MainFormGeometry: TRect read FMainFormGeometry write FMainFormGeometry;
|
||||
property ResultsFormGeometry: TRect read FResultsFormGeometry write FResultsFormGeometry;
|
||||
property GraphFormGeometry: TRect read FGraphFormGeometry write FGraphFormGeometry;
|
||||
@ -136,12 +148,14 @@ const
|
||||
|
||||
pLoadSettings = 'General/LoadSettings/';
|
||||
pLastSelected = 'LastSelected/';
|
||||
pSelectDirectoryFilename = 'SelectDirectoryFilename/';
|
||||
pOpenDialogFilename = 'OpenDialogFilename/';
|
||||
pTestTypes = 'TestTypes/';
|
||||
pTestOptions = 'TestOptions/';
|
||||
pWindowsGeometry = 'General/WindowsGeometry/';
|
||||
pExternalEditor = 'ExternalEditor/';
|
||||
pMasterPoFiles = 'MasterPoFiles/';
|
||||
pChildrenPoFiles = 'ChildrenPoFiles/';
|
||||
pChildPoFiles = 'ChildPoFiles/';
|
||||
|
||||
var
|
||||
DefaultRect: TRect;
|
||||
@ -218,6 +232,16 @@ begin
|
||||
Result := FConfig.GetValue(pLastSelected+'Value','');
|
||||
end;
|
||||
|
||||
function TPoCheckerSettings.GetMasterPoList: TStrings;
|
||||
begin
|
||||
Result := FMasterPoList;
|
||||
end;
|
||||
|
||||
function TPoCheckerSettings.GetChildPoList: TStrings;
|
||||
begin
|
||||
Result := FChildPoList;
|
||||
end;
|
||||
|
||||
function TPoCheckerSettings.LoadTestTypes: TPoTestTypes;
|
||||
var
|
||||
tt: TPoTestType;
|
||||
@ -268,17 +292,45 @@ begin
|
||||
{$eNDIF}
|
||||
end;
|
||||
|
||||
|
||||
procedure TPoCheckerSettings.LoadMasterPoList(List: TStrings);
|
||||
function TPoCheckerSettings.LoadSelectDirectoryFilename: String;
|
||||
begin
|
||||
if not Assigned(List) then Exit;
|
||||
List.Clear;
|
||||
Result := FConfig.GetValue(pSelectDirectoryFilename+'Value','');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.LoadChildrenPoList(List: TStrings);
|
||||
function TPoCheckerSettings.LoadOpenDialogFilename: String;
|
||||
begin
|
||||
Result := FConfig.GetValue(pOpenDialogFilename+'Value','');
|
||||
end;
|
||||
|
||||
|
||||
procedure TPoCheckerSettings.LoadMasterPoList(List: TStrings);
|
||||
var
|
||||
Cnt, i: Integer;
|
||||
Fn: String;
|
||||
begin
|
||||
if not Assigned(List) then Exit;
|
||||
List.Clear;
|
||||
Cnt := Fconfig.GetValue(pMasterpoFiles+'Count',0);
|
||||
//debugln('TPoCheckerSettings.LoadMasterPoList: Cnt = ',DbgS(Cnt));
|
||||
for i := 0 to Cnt - 1 do
|
||||
begin
|
||||
Fn := FConfig.GetValue(pMasterpoFiles+Format('Item_%d/Value',[i]),'');
|
||||
if (Fn <> '') then List.Add(Fn);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.LoadChildPoList(List: TStrings);
|
||||
var
|
||||
Cnt, i: Integer;
|
||||
Fn: String;
|
||||
begin
|
||||
List.Clear;
|
||||
Cnt := Fconfig.GetValue(pChildPoFiles+'Count',0);
|
||||
//debugln('TPoCheckerSettings.LoadChildPoList: Cnt = ',DbgS(Cnt));
|
||||
for i := 0 to Cnt - 1 do
|
||||
begin
|
||||
Fn := FConfig.GetValue(pChildPoFiles+Format('Item_%d/Value',[i]),'');
|
||||
if (Fn <> '') then List.Add(Fn);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SaveLastSelectedFile;
|
||||
@ -324,14 +376,46 @@ begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SaveSelectDirectoryFilename;
|
||||
begin
|
||||
FConfig.SetDeleteValue(pSelectDirectoryFilename+'Value',FSelectDirectoryFilename,'');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SaveOpenDialogFilename;
|
||||
begin
|
||||
FConfig.SetDeleteValue(pOpenDialogFilename+'Value',FOpenDialogFilename,'');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SaveMasterPoList;
|
||||
var
|
||||
Cnt, i: Integer;
|
||||
begin
|
||||
FConfig.DeletePath(pMasterPoFiles);
|
||||
Cnt := FMasterPoList.Count;
|
||||
FConfig.SetDeleteValue(pMasterPoFiles+'Count',Cnt,0);
|
||||
for i := 0 to Cnt - 1 do
|
||||
FConfig.SetDeleteValue(pMasterPoFiles+Format('Item_%d/Value',[i]),FMasterPoList[i],'');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SaveChildrenPoList;
|
||||
var
|
||||
Cnt, i: Integer;
|
||||
begin
|
||||
FConfig.DeletePath(pChildrenPoFiles);
|
||||
FConfig.DeletePath(pChildPoFiles);
|
||||
Cnt := FChildPoList.Count;
|
||||
FConfig.SetDeleteValue(pChildPoFiles+'Count',Cnt,0);
|
||||
for i := 0 to Cnt - 1 do
|
||||
FConfig.SetDeleteValue(pChildPoFiles+Format('Item_%d/Value',[i]),FChildPoList[i],'');
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SetChildPoList(AValue: TStrings);
|
||||
begin
|
||||
FChildPoList.Assign(AValue);
|
||||
end;
|
||||
|
||||
procedure TPoCheckerSettings.SetMasterPoList(AValue: TStrings);
|
||||
begin
|
||||
FMasterPoList.Assign(AValue);
|
||||
end;
|
||||
|
||||
constructor TPoCheckerSettings.Create;
|
||||
@ -340,6 +424,12 @@ begin
|
||||
FTestTypes := [];
|
||||
FTestOptions := [];
|
||||
FMainFormGeometry := Rect(-1,-1,-1,-1);
|
||||
FMasterPoList := TStringList.Create;
|
||||
FMasterPoList.Sorted := True;
|
||||
FMasterPoList.Duplicates := dupIgnore;
|
||||
FChildPoList := TStringList.Create;
|
||||
FChildPoList.Sorted := True;
|
||||
FChildPoList.Duplicates := dupIgnore;
|
||||
{$ifdef POCHECKERSTANDALONE}
|
||||
FFilename := GetAndCreateConfigPath;
|
||||
if (FFilename <> '') then FFilename := AppendPathDelim(FFilename);
|
||||
@ -365,6 +455,8 @@ end;
|
||||
destructor TPoCheckerSettings.Destroy;
|
||||
begin
|
||||
if Assigned(FConfig) then FConfig.Free;
|
||||
FMasterPoList.Free;
|
||||
FChildPoList.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
@ -377,10 +469,12 @@ begin
|
||||
FTestTypes := LoadTestTypes;
|
||||
FTestOptions := LoadTestOptions;
|
||||
FLastSelectedFile := LoadLastSelectedFile;
|
||||
FSelectDirectoryFilename := LoadSelectDirectoryFilename;
|
||||
FOpenDialogFilename := LoadOpenDialogFilename;
|
||||
FExternalEditorName := LoadExternalEditorName;
|
||||
LoadWindowsGeometry;
|
||||
LoadMasterPoList(FMasterPoList);
|
||||
LoadChildrenPoList(FChildrenPoList);
|
||||
LoadChildPoList(FChildPoList);
|
||||
end;
|
||||
except
|
||||
FTestTypes := [];
|
||||
@ -400,6 +494,8 @@ begin
|
||||
SaveTestTypes;
|
||||
SaveTestOptions;
|
||||
SaveExternalEditorName;
|
||||
SaveSelectDirectoryFilename;
|
||||
SaveOpenDialogFilename;
|
||||
SaveWindowsGeometry;
|
||||
SaveMasterPoList;
|
||||
SaveChildrenPoList;
|
||||
@ -407,7 +503,7 @@ begin
|
||||
else
|
||||
begin
|
||||
FConfig.DeletePath(pMasterPoFiles);
|
||||
FConfig.DeletePath(pChildrenPoFiles);
|
||||
FConfig.DeletePath(pChildPoFiles);
|
||||
end;
|
||||
FConfig.WriteToDisk;
|
||||
except
|
||||
|
Loading…
Reference in New Issue
Block a user