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(' ' + Utf8Copy(FileList.Strings[i], 1, UTF8Length(FileList.Strings[i]) - 3) + ' | ');
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('
');
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.