unit main; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Dialogs, StdCtrls, EditBtn, FileUtil, LazUTF8, LazFileUtils, LCLIntf, SynEdit, SynHighlighterHTML; type { TMainForm } TMainForm = class(TForm) btnCreateHTML: TButton; btnSave: TButton; btnClose: TButton; btnShow: TButton; DirectoryEdit: TDirectoryEdit; SynEdit: TSynEdit; SynHTMLSyn: TSynHTMLSyn; TaskDialog: TTaskDialog; procedure btnCloseClick(Sender: TObject); procedure btnCreateHTMLClick(Sender: TObject); procedure btnSaveClick(Sender: TObject); procedure btnShowClick(Sender: TObject); procedure FormShow(Sender: TObject); private public end; var MainForm: TMainForm; implementation {$R *.lfm} { TMainForm } procedure TMainForm.FormShow(Sender: TObject); begin DirectoryEdit.Text := CleanAndExpandDirectory('../../images/general_purpose/'); end; procedure TMainForm.btnCreateHTMLClick(Sender: TObject); var FileList: TStringList; PixSizeStr: String; i: Integer; begin SynEdit.Lines.BeginUpdate; try SynEdit.Lines.Clear; SynEdit.Lines.Add(''); SynEdit.Lines.Add(''); SynEdit.Lines.Add(''); SynEdit.Lines.Add('Icons'); SynEdit.Lines.Add(''); SynEdit.Lines.Add(''); SynEdit.Lines.Add(''); SynEdit.Lines.Add(''); SynEdit.Lines.Add('
'); SynEdit.Lines.Add('The images in this folder can be used in Lazarus applications as toolbar or button icons.

'); SynEdit.Lines.Add('They come in several sizes as required by the LCL scaling for high-dpi screens:

'); SynEdit.Lines.Add('- 16x16, 24x24 and 32x32 pixels for "small" images, and
'); SynEdit.Lines.Add('- 24x24, 36x36 and 48x48 pixels for "medium" sized images, and
'); SynEdit.Lines.Add('- 32x32, 48x48 and 64x64 pixels for "large" images.

'); SynEdit.Lines.Add('The images were kindly provided by Roland Hahn.

'); SynEdit.Lines.Add('License:
'); SynEdit.Lines.Add('Creative Commons CC0 1.0 Universal
'); SynEdit.Lines.Add('(freely available, no restrictions in usage)'); SynEdit.Lines.Add('
'); SynEdit.Lines.Add(''); Screen.BeginWaitCursor; FileList := TStringList.Create; try FindAllFiles(FileList, DirectoryEdit.Text, '*.png', False); if FileList.Count > 0 then begin FileList.Sort; for i := 0 to FileList.Count - 1 do begin FileList.Strings[i] := ChangeFileExt(ExtractFileName(FileList.Strings[i]), ''); PixSizeStr := RightStr(FileList.Strings[i], 3); if PixSizeStr = '_16' then begin SynEdit.Lines.Add(' '); SynEdit.Lines.Add(' '); end; SynEdit.Lines.Add(' '); if PixSizeStr = '_64' then SynEdit.Lines.Add(' '); end; end else begin SynEdit.Lines.Clear; TaskDialog.Caption := 'Error'; TaskDialog.MainIcon := tdiError; TaskDialog.Title := 'Error'; TaskDialog.CommonButtons := [tcbOk]; TaskDialog.DefaultButton := tcbOk; TaskDialog.Text := 'No png image files found in ' + DirectoryEdit.Text; TaskDialog.Execute; exit; end; finally FileList.Free; Screen.EndWaitCursor; end; SynEdit.Lines.Add('
' + Utf8Copy(FileList.Strings[i], 1, UTF8Length(FileList.Strings[i]) - 3) + '
'); SynEdit.Lines.Add(''); SynEdit.Lines.Add(''); finally SynEdit.Lines.EndUpdate; end; end; procedure TMainForm.btnSaveClick(Sender: TObject); var fn: String; begin fn := AppendPathDelim(DirectoryEdit.Text) + 'IconTable.html'; try SynEdit.Lines.SaveToFile(fn); except TaskDialog.Caption := 'Error'; TaskDialog.MainIcon := tdiError; TaskDialog.Title := 'Error'; TaskDialog.CommonButtons := [tcbOk]; TaskDialog.DefaultButton := tcbOk; TaskDialog.Text := 'The file could not be saved as: ' + fn; TaskDialog.Execute; Exit; end; TaskDialog.Caption := 'Information'; TaskDialog.MainIcon := tdiInformation; TaskDialog.Title := 'Information'; TaskDialog.CommonButtons := [tcbOk]; TaskDialog.DefaultButton := tcbOk; TaskDialog.Text := 'Saved as: ' + fn; TaskDialog.Execute; end; procedure TMainForm.btnShowClick(Sender: TObject); var fn: String; begin fn := AppendPathDelim(DirectoryEdit.Text) + 'IconTable.html'; if FileExists(fn) then OpenURL(fn); end; procedure TMainForm.btnCloseClick(Sender: TObject); begin Close; end; end.