lazedit: More translations and makes the toolbars configurable

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2296 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat
2012-02-16 10:02:11 +00:00
parent 473f704c1a
commit 88b5851266
5 changed files with 211 additions and 122 deletions

View File

@ -109,9 +109,9 @@
<UnitName Value="lazedit_constants"/>
</Unit5>
<Unit6>
<Filename Value="eplus_config.pp"/>
<Filename Value="lazedit_config.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="EPlus_Config"/>
<UnitName Value="lazedit_config"/>
</Unit6>
<Unit7>
<Filename Value="htmlcharmap.pp"/>

View File

@ -32,7 +32,7 @@
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}
unit EPlus_Config;
unit lazedit_config;
{$mode objfpc}{$H+}
@ -49,6 +49,7 @@ type
MainForm: record
Position: TRect; //used as Left, Top, Widht, Height
InitialDir: String;
ToolbarHTML: Boolean;
end;
HtmlCharMapDlg: record
Position: TPoint;
@ -91,6 +92,7 @@ const
idWidth = 'Width';
idHeight = 'Height';
idInitialDir = 'InitialDir'; //Last opened folder
idToolbarHTML = 'HTML toolbar';
scHtmlCharMapDlg = 'CharMapDlg';
scNewHtmlDlg = 'NewHtmlDlg';
scAnchorDlg = 'AnchorDlg';
@ -127,6 +129,7 @@ begin
Options.MainForm.Position.Right := Ini.ReadInteger(scMainForm, idWidth, -1);
Options.MainForm.Position.Bottom := Ini.ReadInteger(scMainForm, idHeight, -1);
Options.MainForm.InitialDir := Ini.ReadString(scMainForm, idInitialDir, '');
Options.MainForm.ToolbarHTML := Ini.ReadBool(scMainForm, idToolbarHTML, False);
//Dialogs
Options.NewHtmlDlg.Position.y := Ini.ReadInteger(scNewHtmlDlg, idTop, -1);
@ -201,6 +204,7 @@ begin
Ini.WriteInteger(scMainForm, idWidth, Options.MainForm.Position.Right);
Ini.WriteInteger(scMainForm, idHeight, Options.MainForm.Position.Bottom);
Ini.WriteString(scMainForm, idInitialDir, Options.MainForm.InitialDir);
Ini.WriteBool(scMainForm, idToolbarHTML, Options.MainForm.ToolbarHTML);
//Dialogs
Ini.WriteInteger(scNewHtmlDlg, idTop, Options.NewHtmlDlg.Position.y);

View File

@ -12,6 +12,8 @@ type
{ TTranslations }
TTranslations = class(TObject)
private
FLanguageId: Integer;
public
{ Main form }
{ mnuEditPasteTableContentTab: TMenuItem;
@ -52,6 +54,8 @@ type
mnuEditCopy,
mnuEditCut,
mnuEditPaste,
mnuEditPasteSpecial,
mnuEditPasteTableContentTab,
mnuEditSelectAll,
//mnuSep12: TMenuItem;
mnuEditReplace,
@ -60,24 +64,24 @@ type
//Insert menu
mnuHTMLTools,
mnuInsertAnchor,
{ mnuInsertList,
mnuInsertUList: TMenuItem;
mnuInsertNList: TMenuItem;
mnuInsertWordList: TMenuItem;
mnuInsetListItem: TMenuItem;
mnuInsertWordTerm: TMenuItem;
mnuInsertWordDefinition: TMenuItem;
mnuInsertTable: TMenuItem;
mnInsertNewTable: TMenuItem;
mnuInsertTableCell: TMenuItem;
mnuInsertTableRow: TMenuItem;
mnuInsertPicture: TMenuItem;
mnuInsertSpecialChars: TMenuItem;
mnuInsertLineBreak: TMenuItem;
mnuInsertSep1: TMenuItem;
mnuInsertHtmlComment: TMenuItem;
mnuInsertJS: TMenuItem;
mnuInsertCssStyle: TMenuItem;}
mnuInsertList,
mnuInsertUList,
mnuInsertNList,
mnuInsertWordList,
mnuInsetListItem,
mnuInsertWordTerm,
mnuInsertWordDefinition,
mnuInsertTable,
mnInsertNewTable,
mnuInsertTableCell,
mnuInsertTableRow,
mnuInsertPicture,
mnuInsertSpecialChars,
mnuInsertLineBreak,
//mnuInsertSep1: TMenuItem;
mnuInsertHtmlComment,
mnuInsertJS,
mnuInsertCssStyle: string;
//Layout menu
mnuLayout,
mnuLayoutBold,
@ -110,14 +114,14 @@ type
mnuGroupingSpan: string;
//View menu
mnuView,
mnuViewFontsize: string;
{ mnuViewFontSizeUp: TMenuItem;
mnuViewFontsizeDown: TMenuItem;
mnuViewHighlighter: TMenuItem;
mnuViewFontsize,
mnuViewFontSizeUp,
mnuViewFontsizeDown,
// mnuViewHighlighter: TMenuItem;
//these menu items MUST have names that are built like this:
//'mnuViewHL' + eftNames[SomeIndex]
mnuViewHLeftNone: TMenuItem;
mnuViewHLeftHtml: TMenuItem;
mnuViewHLeftNone: string;
{ mnuViewHLeftHtml: TMenuItem;
mnuViewHLeftXml: TMenuItem;
mnuViewHLeftCss: TMenuItem;
mnuViewHLeftJS: TMenuItem;
@ -131,8 +135,13 @@ type
mnuViewHLeftBat: TMenuItem;
mnuViewHLeftDiff: TMenuItem;
mnuViewHLeftIni: TMenuItem;
mnuViewHLeftPo: TMenuItem;
//Popup menus
mnuViewHLeftPo: TMenuItem;}
mnuTools,
mnuToolsLanguage,
mnuToolsToolbars,
mnuToolbarsMain,
mnuToolbarsHTML: string;
{ //Popup menus
//Popup menu for editor
EditorPopupMenu: TPopupMenu;
mnuEditPopupSelectAll: TMenuItem;
@ -170,6 +179,7 @@ type
procedure TranslateToDutch;
procedure TranslateToPortuguese;
procedure TranslateToLanguageID(AID: Integer);
function GetCurrentLanguageID: Integer;
end;
var
@ -214,7 +224,8 @@ begin
mnuEditCopy := 'Copy';
mnuEditCut := 'Cut';
mnuEditPaste := 'Paste';
//mnuEditPasteSpecial := 'Plakken speciaal';
mnuEditPasteSpecial := 'Paste special';
mnuEditPasteTableContentTab := 'Paste table content';
mnuEditSelectAll := 'Select all';
//mnuSep12: TMenuItem;
mnuEditReplace := '&Replace';
@ -223,24 +234,24 @@ begin
//HTML Tools menu
mnuHTMLTools := '&HTML Tools';
mnuInsertAnchor := 'Insert Hyperlink';
{ mnuInsertList,
mnuInsertUList: TMenuItem;
mnuInsertNList: TMenuItem;
mnuInsertWordList: TMenuItem;
mnuInsetListItem: TMenuItem;
mnuInsertWordTerm: TMenuItem;
mnuInsertWordDefinition: TMenuItem;
mnuInsertTable: TMenuItem;
mnInsertNewTable: TMenuItem;
mnuInsertTableCell: TMenuItem;
mnuInsertTableRow: TMenuItem;
mnuInsertPicture: TMenuItem;
mnuInsertSpecialChars: TMenuItem;
mnuInsertLineBreak: TMenuItem;
mnuInsertSep1: TMenuItem;
mnuInsertHtmlComment: TMenuItem;
mnuInsertJS: TMenuItem;
mnuInsertCssStyle: TMenuItem;}
mnuInsertList := 'Insert list...';
mnuInsertUList := 'Bullets list';
mnuInsertNList := 'Numeric list';
mnuInsertWordList := 'List of words';
mnuInsetListItem := 'List item';
mnuInsertWordTerm := 'Word term';
mnuInsertWordDefinition := 'Word definition';
mnuInsertTable := 'Insert Table';
mnInsertNewTable := 'New table';
mnuInsertTableCell := 'Table cell';
mnuInsertTableRow := 'Table row';
mnuInsertPicture := 'Insert Picture';
mnuInsertSpecialChars := 'Insert special chars';
mnuInsertLineBreak := 'Insert line break';
//mnuInsertSep1: TMenuItem;
mnuInsertHtmlComment := 'Insert HTML comment';
mnuInsertJS := 'Insert Javascript';
mnuInsertCssStyle := 'Insert CSS Style';
//Layout menu
mnuLayout := '&Layout';
mnuLayoutBold := 'Bold';
@ -274,6 +285,15 @@ begin
//View menu
mnuView := '&View';
mnuViewFontsize := '&Font Size';
mnuViewFontSizeUp := 'Bigger';
mnuViewFontsizeDown := 'Smaller';
//mnuViewHighlighter: TMenuItem;
mnuViewHLeftNone := 'None';
mnuTools := '&Tools';
mnuToolsLanguage := 'Language';
mnuToolsToolbars := 'Toolbars';
mnuToolbarsMain := 'Main Toolbar';
mnuToolbarsHTML := 'HTML Toolbar';
SLine := 'Line';
SCol := 'Col';
@ -365,7 +385,8 @@ begin
mnuEditCopy := '&Kopiëren';
mnuEditCut := 'K&nippen';
mnuEditPaste := '&Plakken';
//mnuEditPasteSpecial := 'Plakken speciaal';
mnuEditPasteSpecial := 'Plakken speciaal';
mnuEditPasteTableContentTab := 'Tabelinhoud (Tab-gescheiden)';
mnuEditSelectAll := '&Alles selecteren';
//mnuSep12: TMenuItem;
mnuEditReplace := 'Ve&rvangen';
@ -374,24 +395,26 @@ begin
//Insert menu
mnuHTMLTools := '&HTML Tools';
mnuInsertAnchor := 'Hyperlink invoegen';
{ mnuInsertList,
mnuInsertUList: TMenuItem;
mnuInsertNList: TMenuItem;
mnuInsertWordList: TMenuItem;
mnuInsetListItem: TMenuItem;
mnuInsertWordTerm: TMenuItem;
mnuInsertWordDefinition: TMenuItem;
mnuInsertTable: TMenuItem;
mnInsertNewTable: TMenuItem;
mnuInsertTableCell: TMenuItem;
mnuInsertTableRow: TMenuItem;
mnuInsertPicture: TMenuItem;
mnuInsertSpecialChars: TMenuItem;
mnuInsertLineBreak: TMenuItem;
mnuInsertSep1: TMenuItem;
mnuInsertHtmlComment: TMenuItem;
mnuInsertJS: TMenuItem;
mnuInsertCssStyle: TMenuItem;}
mnuHTMLTools := '&HTML Tools';
mnuInsertAnchor := 'Insert Hyperlink';
mnuInsertList := 'Lijst';
mnuInsertUList := 'Ongenummerde lijst';
mnuInsertNList := 'Genummerde lijst';
mnuInsertWordList := '&Woordenlijst';
mnuInsetListItem := 'Lijst item invoegen';
mnuInsertWordTerm := 'Woordenlijst term';
mnuInsertWordDefinition := 'Woordenlijst definitie';
mnuInsertTable := 'Tabel';
mnInsertNewTable := 'Tabel invoegen ...';
mnuInsertTableCell := 'Cel';
mnuInsertTableRow := 'Rij';
mnuInsertPicture := 'Plaatje invoegen';
mnuInsertSpecialChars := 'Speciale tekens';
mnuInsertLineBreak := 'Nieuwe regel';
//mnuInsertSep1: TMenuItem;
mnuInsertHtmlComment := 'Commentaar';
mnuInsertJS := 'JavaScript';
mnuInsertCssStyle := 'Css stijl';
//Layout menu
mnuLayout := '&Opmaak';
mnuLayoutBold := 'Vet';
@ -425,6 +448,10 @@ begin
//View menu
mnuView := 'Bee&ld';
mnuViewFontsize := '&Tekengrootte';
mnuViewFontSizeUp := '&Groter';
mnuViewFontsizeDown := '&Kleiner';
//mnuViewHighlighter: TMenuItem;
mnuViewHLeftNone := 'Geen';
SLine := 'Rg';
SCol := 'Kol';
@ -582,6 +609,7 @@ end;
procedure TTranslations.TranslateToLanguageID(AID: Integer);
begin
FLanguageID := AID;
case AID of
1: TranslateToDutch;
2: TranslateToPortuguese;
@ -590,6 +618,11 @@ begin
end;
end;
function TTranslations.GetCurrentLanguageID: Integer;
begin
Result := FLanguageID;
end;
initialization
vTranslations := TTranslations.Create;

View File

@ -127,6 +127,7 @@ object EPlusForm: TEPlusForm
ParentShowHint = False
ShowHint = True
TabOrder = 2
Visible = False
object AnchorBtn: TToolButton
Left = 1
Top = 2
@ -1311,7 +1312,7 @@ object EPlusForm: TEPlusForm
left = 432
top = 96
object mnuFile: TMenuItem
Caption = '&Bestand'
Caption = 'mnuFile'
OnClick = TopLevelMenuClick
object mnuFileOpen: TMenuItem
Action = acFileOpen
@ -1433,7 +1434,7 @@ object EPlusForm: TEPlusForm
end
end
object mnuEdit: TMenuItem
Caption = 'Be&werken'
Caption = 'mnuEdit'
OnClick = TopLevelMenuClick
object mnuEditUndo: TMenuItem
Caption = '&Ongedaan maken'
@ -1651,7 +1652,7 @@ object EPlusForm: TEPlusForm
end
end
object mnuView: TMenuItem
Caption = 'Bee&ld'
Caption = 'mnuView'
OnClick = TopLevelMenuClick
object mnuViewFont: TMenuItem
Caption = 'Lettertype...'
@ -1739,9 +1740,9 @@ object EPlusForm: TEPlusForm
end
end
object mnuTools: TMenuItem
Caption = 'Tools'
object mnuLanguage: TMenuItem
Caption = 'Language'
Caption = 'mnuTools'
object mnuToolsLanguage: TMenuItem
Caption = 'mnuToolsLanguage'
object mnuEnglish: TMenuItem
Caption = 'English'
OnClick = mnuLanguageChangeClick
@ -1757,6 +1758,18 @@ object EPlusForm: TEPlusForm
OnClick = mnuLanguageChangeClick
end
end
object mnuToolsToolbars: TMenuItem
Caption = 'mnuToolsToolbars'
object mnuToolbarsMain: TMenuItem
Caption = 'mnuToolbarsMain'
Checked = True
OnClick = HandleToolbarsMenuClick
end
object mnuToolbarsHTML: TMenuItem
Caption = 'mnuToolbarsHTML'
OnClick = HandleToolbarsMenuClick
end
end
end
object mnuAbout: TMenuItem
Action = acAbout

View File

@ -46,7 +46,7 @@ uses
LMessages, {for overridden IsShortCut}
SynEdit, SynEditTypes,
EditorPageControl,
EPlus_Commons, EPlus_Config, HtmlCode, HtmlDialogs, lazedit_constants,
EPlus_Commons, lazedit_config, HtmlCode, HtmlDialogs, lazedit_constants,
lazedit_translations{
MyFileUtils, Fcl_Misc, MruLists, MyGetOpt, ExtAbout, NlAutoTranslation};
@ -108,14 +108,15 @@ type
HtmlToolbarImageList: TImageList;
MainToolbarImageList: TImageList;
MainMenu: TMainMenu;
mnuToolbarsHTML: TMenuItem;
mnuToolsToolbars: TMenuItem;
mnuToolbarsMain: TMenuItem;
mnuInsertSep2: TMenuItem;
mnuLanguage: TMenuItem;
mnuToolsLanguage: TMenuItem;
mnuEnglish: TMenuItem;
mnuDutch: TMenuItem;
mnuPortuguese: TMenuItem;
mnuTools: TMenuItem;
mnuEditPasteTableContentTab: TMenuItem;
mnuEditPasteSpecial: TMenuItem;
mnuAbout: TMenuItem;
mnuViewFont: TMenuItem;
//File menu
@ -159,6 +160,8 @@ type
mnuEditCopy: TMenuItem;
mnuEditCut: TMenuItem;
mnuEditPaste: TMenuItem;
mnuEditPasteSpecial: TMenuItem;
mnuEditPasteTableContentTab: TMenuItem;
mnuEditSelectAll: TMenuItem;
mnuSep12: TMenuItem;
mnuEditReplace: TMenuItem;
@ -359,6 +362,7 @@ type
procedure FormDestroy(Sender: TObject);
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
procedure FormShow(Sender: TObject);
procedure HandleToolbarsMenuClick(Sender: TObject);
procedure mnuLanguageChangeClick(Sender: TObject);
//Main menu events
@ -441,6 +445,7 @@ type
procedure SetUpAndConfigureLazEdit;
procedure DoTranslateAll;
procedure DoTranslateMenus;
procedure DoTranslatePopUpMenus;
procedure DoTranslateHints;
procedure SaveEplusConfiguration;
procedure CleanUp;
@ -608,6 +613,20 @@ begin
Application.QueueAsyncCall(@ParseCommandLineFileNames, 0);
end;
procedure TEPlusForm.HandleToolbarsMenuClick(Sender: TObject);
var
lMenuItem: TMenuItem;
lToolbar: TToolBar;
begin
lMenuItem := Sender as TMenuItem;
lMenuItem.Checked := not lMenuItem.Checked;
if lMenuItem = mnuToolbarsMain then lToolbar := MainToolbar
else lToolbar := HTMLToolbar;
lToolbar.Visible := lMenuItem.Checked;
end;
procedure TEPlusForm.mnuLanguageChangeClick(Sender: TObject);
begin
vTranslations.TranslateToLanguageID(Abs(TMenuItem(Sender).Tag));
@ -1155,8 +1174,7 @@ end;
procedure TEPlusForm.DoTranslateMenus;
begin
{ MENUS }
{ mnuEditPasteTableContentTab: TMenuItem;
mnuEditPasteSpecial: TMenuItem;
{
mnuAbout: TMenuItem;
mnuViewFont: TMenuItem;}
//File menu
@ -1193,6 +1211,8 @@ begin
mnuEditCopy.Caption := vTranslations.mnuEditCopy;
mnuEditCut.Caption := vTranslations.mnuEditCut;
mnuEditPaste.Caption := vTranslations.mnuEditPaste;
mnuEditPasteSpecial.Caption := vTranslations.mnuEditPasteSpecial;
mnuEditPasteTableContentTab.Caption := vTranslations.mnuEditPasteTableContentTab;
mnuEditSelectAll.Caption := vTranslations.mnuEditSelectAll;
//mnuSep12: TMenuItem;
mnuEditReplace.Caption := vTranslations.mnuEditReplace;
@ -1200,25 +1220,25 @@ begin
mnuEditFind.Caption := vTranslations.mnuEditFind;
//Insert menu
mnuHTMLTools.Caption := vTranslations.mnuHTMLTools;
{ mnuInsertAnchor: TMenuItem;
mnuInsertList: TMenuItem;
mnuInsertUList: TMenuItem;
mnuInsertNList: TMenuItem;
mnuInsertWordList: TMenuItem;
mnuInsetListItem: TMenuItem;
mnuInsertWordTerm: TMenuItem;
mnuInsertWordDefinition: TMenuItem;
mnuInsertTable: TMenuItem;
mnInsertNewTable: TMenuItem;
mnuInsertTableCell: TMenuItem;
mnuInsertTableRow: TMenuItem;
mnuInsertPicture: TMenuItem;
mnuInsertSpecialChars: TMenuItem;
mnuInsertLineBreak: TMenuItem;
mnuInsertSep1: TMenuItem;
mnuInsertHtmlComment: TMenuItem;
mnuInsertJS: TMenuItem;
mnuInsertCssStyle: TMenuItem;}
mnuInsertAnchor.Caption := vTranslations.mnuInsertAnchor;
mnuInsertList.Caption := vTranslations.mnuInsertList;
mnuInsertUList.Caption := vTranslations.mnuInsertUList;
mnuInsertNList.Caption := vTranslations.mnuInsertNList;
mnuInsertWordList.Caption := vTranslations.mnuInsertWordList;
mnuInsetListItem.Caption := vTranslations.mnuInsetListItem;
mnuInsertWordTerm.Caption := vTranslations.mnuInsertWordTerm;
mnuInsertWordDefinition.Caption := vTranslations.mnuInsertWordDefinition;
mnuInsertTable.Caption := vTranslations.mnuInsertTable;
mnInsertNewTable.Caption := vTranslations.mnInsertNewTable;
mnuInsertTableCell.Caption := vTranslations.mnuInsertTableCell;
mnuInsertTableRow.Caption := vTranslations.mnuInsertTableRow;
mnuInsertPicture.Caption := vTranslations.mnuInsertPicture;
mnuInsertSpecialChars.Caption := vTranslations.mnuInsertSpecialChars;
mnuInsertLineBreak.Caption := vTranslations.mnuInsertLineBreak;
//mnuInsertSep1: TMenuItem;
mnuInsertHtmlComment.Caption := vTranslations.mnuInsertHtmlComment;
mnuInsertJS.Caption := vTranslations.mnuInsertJS;
mnuInsertCssStyle.Caption := vTranslations.mnuInsertCssStyle;
//Layout menu
mnuLayout.Caption := vTranslations.mnuLayout;
mnuLayoutBold.Caption := vTranslations.mnuLayoutBold;
@ -1252,13 +1272,13 @@ begin
//View menu
mnuView.Caption := vTranslations.mnuView;
mnuViewFontsize.Caption := vTranslations.mnuViewFontsize;
{ mnuViewFontSizeUp: TMenuItem;
mnuViewFontsizeDown: TMenuItem;
mnuViewHighlighter: TMenuItem;
mnuViewFontSizeUp.Caption := vTranslations.mnuViewFontSizeUp;
mnuViewFontsizeDown.Caption := vTranslations.mnuViewFontsizeDown;
//mnuViewHighlighter: TMenuItem;
//these menu items MUST have names that are built like this:
//'mnuViewHL' + eftNames[SomeIndex]
mnuViewHLeftNone: TMenuItem;
mnuViewHLeftHtml: TMenuItem;
mnuViewHLeftNone.Caption := vTranslations.mnuViewHLeftNone;
{ mnuViewHLeftHtml: TMenuItem;
mnuViewHLeftXml: TMenuItem;
mnuViewHLeftCss: TMenuItem;
mnuViewHLeftJS: TMenuItem;
@ -1272,8 +1292,18 @@ begin
mnuViewHLeftBat: TMenuItem;
mnuViewHLeftDiff: TMenuItem;
mnuViewHLeftIni: TMenuItem;
mnuViewHLeftPo: TMenuItem;
//Popup menus
mnuViewHLeftPo: TMenuItem;}
// Tools
mnuTools.Caption := vTranslations.mnuTools;
mnuToolsLanguage.Caption := vTranslations.mnuToolsLanguage;
mnuToolsToolbars.Caption := vTranslations.mnuToolsToolbars;
mnuToolbarsMain.Caption := vTranslations.mnuToolbarsMain;
mnuToolbarsHTML.Caption := vTranslations.mnuToolbarsHTML;
end;
procedure TEPlusForm.DoTranslatePopUpMenus;
begin
{ //Popup menus
//Popup menu for editor
EditorPopupMenu: TPopupMenu;
mnuEditPopupSelectAll: TMenuItem;
@ -1328,7 +1358,7 @@ end;
procedure TEPlusForm.SaveEplusConfiguration;
begin
GatherAppOptions(AppOptions);
if not EPlus_Config.SaveOptions(AppOptions, ConfigFileName) then
if not lazedit_config.SaveOptions(AppOptions, ConfigFileName) then
DebugLn('Fout bij opslaan van opties:',LineEnding,' ',ConfigFileName);
end;
@ -1424,6 +1454,10 @@ begin
// Translation
vTranslations.TranslateToLanguageID(Options.Translation);
// Toolbars
mnuToolbarsHTML.Checked := Options.MainForm.ToolbarHTML;
HtmlToolbar.Visible := Options.MainForm.ToolbarHTML;
end;
procedure TEPlusForm.GatherAppOptions(var Options: TEplusOptions);
@ -1463,8 +1497,13 @@ begin
else
Options.RecentFiles[i] := '';
end;
end;
// Translation
Options.Translation := vTranslations.GetCurrentLanguageID();
// Toolbars
Options.MainForm.ToolbarHTML := mnuToolbarsHTML.Checked;
end;
procedure TEPlusForm.ConstructOpenDialogFileFilters;
function AddWilds(const S: String): String;