Icons_to_html: replaced some SpeedButtons with ToolBar/ToolButtons, patch by Roland Hahn

This commit is contained in:
Maxim Ganetsky 2024-10-27 14:38:18 +03:00
parent 7123dc549d
commit d11f653783
3 changed files with 102 additions and 114 deletions

View File

@ -1,7 +1,7 @@
object MainForm: TMainForm object MainForm: TMainForm
Left = 607 Left = 904
Height = 515 Height = 515
Top = 222 Top = 149
Width = 700 Width = 700
AllowDropFiles = True AllowDropFiles = True
Caption = 'IconTable' Caption = 'IconTable'
@ -9,46 +9,23 @@ object MainForm: TMainForm
ClientWidth = 700 ClientWidth = 700
Constraints.MinHeight = 515 Constraints.MinHeight = 515
Constraints.MinWidth = 700 Constraints.MinWidth = 700
Position = poScreenCenter
ShowHint = True
OnClose = FormClose OnClose = FormClose
OnCreate = FormCreate OnCreate = FormCreate
OnDropFiles = FormDropFiles OnDropFiles = FormDropFiles
OnShow = FormShow OnShow = FormShow
object DirectoryEdit: TDirectoryEdit Position = poScreenCenter
AnchorSideLeft.Control = Owner ShowHint = True
AnchorSideTop.Control = sbtnLastDirs LCLVersion = '3.6.0.0'
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = sbtnLastDirs
Left = 10
Height = 33
Hint = 'Folder with images for which the HTML preview should be created'
Top = 5
Width = 630
ShowHidden = False
ButtonWidth = 23
NumGlyphs = 1
Images = ImageList
ImageIndex = 1
Flat = True
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 10
BorderSpacing.Top = 10
BorderSpacing.Right = 2
MaxLength = 0
TabOrder = 0
OnChange = DirectoryEditChange
end
inline SynEdit: TSynEdit inline SynEdit: TSynEdit
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
AnchorSideTop.Control = DirectoryEdit AnchorSideTop.Control = ToolBar
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = bbtnClose AnchorSideBottom.Control = bbtnClose
Left = 0 Left = 0
Height = 415 Height = 425
Top = 48 Top = 44
Width = 700 Width = 700
BorderSpacing.Top = 10 BorderSpacing.Top = 10
BorderSpacing.Bottom = 10 BorderSpacing.Bottom = 10
@ -59,7 +36,7 @@ object MainForm: TMainForm
Font.Quality = fqCleartype Font.Quality = fqCleartype
ParentColor = False ParentColor = False
ParentFont = False ParentFont = False
TabOrder = 1 TabOrder = 6
TabStop = False TabStop = False
Gutter.Width = 0 Gutter.Width = 0
Gutter.MouseActions = <> Gutter.MouseActions = <>
@ -515,33 +492,16 @@ object MainForm: TMainForm
inline SynLeftGutterPartList1: TSynGutterPartList inline SynLeftGutterPartList1: TSynGutterPartList
end end
end end
object sbtnLastDirs: TSpeedButton
AnchorSideTop.Control = sbtnMenu
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = sbtnMenu
Left = 642
Height = 23
Hint = 'Last used'
Top = 10
Width = 23
Anchors = [akTop, akRight]
BorderSpacing.Right = 2
Flat = True
Images = ImageList
ImageIndex = 2
Spacing = -1
OnClick = sbtnLastDirsClick
end
object bbtnClose: TBitBtn object bbtnClose: TBitBtn
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 619 Left = 614
Height = 32 Height = 26
Hint = 'Close application' Hint = 'Close application'
Top = 473 Top = 479
Width = 71 Width = 76
Anchors = [akRight, akBottom] Anchors = [akRight, akBottom]
AutoSize = True AutoSize = True
BorderSpacing.Right = 10 BorderSpacing.Right = 10
@ -550,19 +510,21 @@ object MainForm: TMainForm
Caption = 'Close' Caption = 'Close'
Images = ImageList Images = ImageList
ImageIndex = 6 ImageIndex = 6
OnClick = bbtnCloseClick
ParentShowHint = False
ShowHint = True
Spacing = 5 Spacing = 5
TabOrder = 5 TabOrder = 5
OnClick = bbtnCloseClick
end end
object bbtnSave: TBitBtn object bbtnSave: TBitBtn
AnchorSideTop.Control = bbtnClose AnchorSideTop.Control = bbtnClose
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = bbtnClose AnchorSideRight.Control = bbtnClose
Left = 544 Left = 535
Height = 32 Height = 26
Hint = 'Save created HTML page as "IconTable.html" file in the specified folder' Hint = 'Save created HTML page as "IconTable.html" file in the specified folder'
Top = 473 Top = 479
Width = 67 Width = 71
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = True AutoSize = True
BorderSpacing.Right = 8 BorderSpacing.Right = 8
@ -570,18 +532,18 @@ object MainForm: TMainForm
Enabled = False Enabled = False
Images = ImageList Images = ImageList
ImageIndex = 5 ImageIndex = 5
OnClick = bbtnSaveClick
Spacing = 5 Spacing = 5
TabOrder = 4 TabOrder = 4
OnClick = bbtnSaveClick
end end
object bbtnCreateHTML: TBitBtn object bbtnCreateHTML: TBitBtn
AnchorSideTop.Control = bbtnPreview AnchorSideTop.Control = bbtnPreview
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = bbtnPreview AnchorSideRight.Control = bbtnPreview
Left = 329 Left = 316
Height = 32 Height = 26
Hint = 'Create HTML page for images found in the selected directory' Hint = 'Create HTML page for images found in the selected directory'
Top = 473 Top = 479
Width = 116 Width = 116
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = True AutoSize = True
@ -591,17 +553,17 @@ object MainForm: TMainForm
Enabled = False Enabled = False
Images = ImageList Images = ImageList
ImageIndex = 3 ImageIndex = 3
OnClick = bbtnCreateHTMLClick
Spacing = 5 Spacing = 5
TabOrder = 2 TabOrder = 2
OnClick = bbtnCreateHTMLClick
end end
object bbtnPreview: TBitBtn object bbtnPreview: TBitBtn
AnchorSideTop.Control = bbtnSave AnchorSideTop.Control = bbtnSave
AnchorSideRight.Control = bbtnSave AnchorSideRight.Control = bbtnSave
Left = 453 Left = 440
Height = 32 Height = 26
Top = 473 Top = 479
Width = 83 Width = 87
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = True AutoSize = True
BorderSpacing.Right = 8 BorderSpacing.Right = 8
@ -609,44 +571,86 @@ object MainForm: TMainForm
Enabled = False Enabled = False
Images = ImageList Images = ImageList
ImageIndex = 4 ImageIndex = 4
TabOrder = 3
OnClick = bbtnPreviewClick OnClick = bbtnPreviewClick
TabOrder = 3
end end
object sbtnMenu: TSpeedButton object ToolBar: TToolBar
AnchorSideTop.Control = Owner AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 667 Left = 641
Height = 23 Height = 24
Hint = 'Options'
Top = 10 Top = 10
Width = 23 Width = 49
Align = alNone
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Top = 10 BorderSpacing.Top = 10
BorderSpacing.Right = 10 BorderSpacing.Right = 10
Flat = True ButtonHeight = 24
ButtonWidth = 24
EdgeBorders = []
EdgeInner = esNone
EdgeOuter = esNone
Images = ImageList Images = ImageList
ImageIndex = 7 TabOrder = 1
Spacing = -1 TabStop = True
OnClick = sbtnMenuClick Transparent = True
Wrapable = False
object tbLastDirs: TToolButton
Left = 1
Hint = 'Last used'
Top = 0
DropdownMenu = popLastDirs
ImageIndex = 2
end
object tbMenu: TToolButton
AnchorSideRight.Side = asrBottom
Left = 25
Hint = 'Options'
Top = 0
DropdownMenu = popMenu
ImageIndex = 7
end
end
object DirectoryEdit: TDirectoryEdit
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = ToolBar
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = ToolBar
Left = 10
Height = 23
Hint = 'Folder with images for which the HTML preview should be created'
Top = 11
Width = 631
ShowHidden = False
ButtonWidth = 23
NumGlyphs = 1
Images = ImageList
ImageIndex = 1
Flat = True
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 10
MaxLength = 0
TabOrder = 0
OnChange = DirectoryEditChange
end end
object TaskDialog: TTaskDialog object TaskDialog: TTaskDialog
Buttons = <> Buttons = <>
RadioButtons = <> RadioButtons = <>
QueryItemIndex = 0
Left = 96 Left = 96
Top = 64 Top = 104
end end
object SynHTMLSyn: TSynHTMLSyn object SynHTMLSyn: TSynHTMLSyn
DefaultFilter = 'HTML Document (*.htm,*.html)|*.htm;*.html' DefaultFilter = 'HTML Document (*.htm,*.html)|*.htm;*.html'
Enabled = False Enabled = False
Left = 176 Left = 176
Top = 64 Top = 104
end end
object ImageList: TImageList object ImageList: TImageList
Scaled = True Scaled = True
Left = 256 Left = 256
Top = 64 Top = 104
Bitmap = { Bitmap = {
4C7A080000001000000010000000950700000000000078DAED587B70536516FF 4C7A080000001000000010000000950700000000000078DAED587B70536516FF
7C002952677C21E00C33A0B3EEE8AAE3BAEBAAA332CA435D15055C11C5D91D59 7C002952677C21E00C33A0B3EEE8AAE3BAEBAAA332CA435D15055C11C5D91D59
@ -933,13 +937,12 @@ object MainForm: TMainForm
end end
object popLastDirs: TPopupMenu object popLastDirs: TPopupMenu
Images = ImageList Images = ImageList
Alignment = paRight
Left = 330 Left = 330
Top = 64 Top = 104
end end
object popMenu: TPopupMenu object popMenu: TPopupMenu
Left = 408 Left = 408
Top = 64 Top = 104
object menuDarkHTMLpage: TMenuItem object menuDarkHTMLpage: TMenuItem
Caption = 'Dark HTML page' Caption = 'Dark HTML page'
OnClick = menuDarkHTMLpageClick OnClick = menuDarkHTMLpageClick

View File

@ -1,7 +1,5 @@
{"version":1,"strings":[ {"version":1,"strings":[
{"hash":104478853,"name":"tmainform.caption","sourcebytes":[73,99,111,110,84,97,98,108,101],"value":"IconTable"}, {"hash":104478853,"name":"tmainform.caption","sourcebytes":[73,99,111,110,84,97,98,108,101],"value":"IconTable"},
{"hash":150702596,"name":"tmainform.directoryedit.hint","sourcebytes":[70,111,108,100,101,114,32,119,105,116,104,32,105,109,97,103,101,115,32,102,111,114,32,119,104,105,99,104,32,116,104,101,32,72,84,77,76,32,112,114,101,118,105,101,119,32,115,104,111,117,108,100,32,98,101,32,99,114,101,97,116,101,100],"value":"Folder with images for which the HTML preview should be created"},
{"hash":174562100,"name":"tmainform.sbtnlastdirs.hint","sourcebytes":[76,97,115,116,32,117,115,101,100],"value":"Last used"},
{"hash":146468846,"name":"tmainform.bbtnclose.hint","sourcebytes":[67,108,111,115,101,32,97,112,112,108,105,99,97,116,105,111,110],"value":"Close application"}, {"hash":146468846,"name":"tmainform.bbtnclose.hint","sourcebytes":[67,108,111,115,101,32,97,112,112,108,105,99,97,116,105,111,110],"value":"Close application"},
{"hash":4863637,"name":"tmainform.bbtnclose.caption","sourcebytes":[67,108,111,115,101],"value":"Close"}, {"hash":4863637,"name":"tmainform.bbtnclose.caption","sourcebytes":[67,108,111,115,101],"value":"Close"},
{"hash":121132146,"name":"tmainform.bbtnsave.hint","sourcebytes":[83,97,118,101,32,99,114,101,97,116,101,100,32,72,84,77,76,32,112,97,103,101,32,97,115,32,34,73,99,111,110,84,97,98,108,101,46,104,116,109,108,34,32,102,105,108,101,32,105,110,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,102,111,108,100,101,114],"value":"Save created HTML page as \"IconTable.html\" file in the specified folder"}, {"hash":121132146,"name":"tmainform.bbtnsave.hint","sourcebytes":[83,97,118,101,32,99,114,101,97,116,101,100,32,72,84,77,76,32,112,97,103,101,32,97,115,32,34,73,99,111,110,84,97,98,108,101,46,104,116,109,108,34,32,102,105,108,101,32,105,110,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,102,111,108,100,101,114],"value":"Save created HTML page as \"IconTable.html\" file in the specified folder"},
@ -9,7 +7,9 @@
{"hash":119190121,"name":"tmainform.bbtncreatehtml.hint","sourcebytes":[67,114,101,97,116,101,32,72,84,77,76,32,112,97,103,101,32,102,111,114,32,105,109,97,103,101,115,32,102,111,117,110,100,32,105,110,32,116,104,101,32,115,101,108,101,99,116,101,100,32,100,105,114,101,99,116,111,114,121],"value":"Create HTML page for images found in the selected directory"}, {"hash":119190121,"name":"tmainform.bbtncreatehtml.hint","sourcebytes":[67,114,101,97,116,101,32,72,84,77,76,32,112,97,103,101,32,102,111,114,32,105,109,97,103,101,115,32,102,111,117,110,100,32,105,110,32,116,104,101,32,115,101,108,101,99,116,101,100,32,100,105,114,101,99,116,111,114,121],"value":"Create HTML page for images found in the selected directory"},
{"hash":171857052,"name":"tmainform.bbtncreatehtml.caption","sourcebytes":[67,114,101,97,116,101,32,72,84,77,76],"value":"Create HTML"}, {"hash":171857052,"name":"tmainform.bbtncreatehtml.caption","sourcebytes":[67,114,101,97,116,101,32,72,84,77,76],"value":"Create HTML"},
{"hash":126668695,"name":"tmainform.bbtnpreview.caption","sourcebytes":[80,114,101,118,105,101,119],"value":"Preview"}, {"hash":126668695,"name":"tmainform.bbtnpreview.caption","sourcebytes":[80,114,101,118,105,101,119],"value":"Preview"},
{"hash":108725763,"name":"tmainform.sbtnmenu.hint","sourcebytes":[79,112,116,105,111,110,115],"value":"Options"}, {"hash":174562100,"name":"tmainform.tblastdirs.hint","sourcebytes":[76,97,115,116,32,117,115,101,100],"value":"Last used"},
{"hash":108725763,"name":"tmainform.tbmenu.hint","sourcebytes":[79,112,116,105,111,110,115],"value":"Options"},
{"hash":150702596,"name":"tmainform.directoryedit.hint","sourcebytes":[70,111,108,100,101,114,32,119,105,116,104,32,105,109,97,103,101,115,32,102,111,114,32,119,104,105,99,104,32,116,104,101,32,72,84,77,76,32,112,114,101,118,105,101,119,32,115,104,111,117,108,100,32,98,101,32,99,114,101,97,116,101,100],"value":"Folder with images for which the HTML preview should be created"},
{"hash":157953765,"name":"tmainform.menudarkhtmlpage.caption","sourcebytes":[68,97,114,107,32,72,84,77,76,32,112,97,103,101],"value":"Dark HTML page"}, {"hash":157953765,"name":"tmainform.menudarkhtmlpage.caption","sourcebytes":[68,97,114,107,32,72,84,77,76,32,112,97,103,101],"value":"Dark HTML page"},
{"hash":2540136,"name":"tmainform.menuhtmlpageenglish.caption","sourcebytes":[72,84,77,76,32,112,97,103,101,32,105,110,32,69,110,103,108,105,115,104],"value":"HTML page in English"} {"hash":2540136,"name":"tmainform.menuhtmlpageenglish.caption","sourcebytes":[72,84,77,76,32,112,97,103,101,32,105,110,32,69,110,103,108,105,115,104],"value":"HTML page in English"}
]} ]}

View File

@ -7,7 +7,7 @@ interface
uses uses
Classes, SysUtils, StrUtils, Forms, FPImage, Controls, Dialogs, EditBtn, FileUtil, Classes, SysUtils, StrUtils, Forms, FPImage, Controls, Dialogs, EditBtn, FileUtil,
LazUTF8, LazFileUtils, LCLIntf, LCLType, Buttons, Menus, IniFiles, LazUTF8, LazFileUtils, LCLIntf, LCLType, Buttons, Menus, IniFiles,
SynEdit, SynHighlighterHTML, DefaultTranslator; SynEdit, SynHighlighterHTML, DefaultTranslator, ComCtrls;
type type
@ -24,11 +24,12 @@ type
menuHTMLpageEnglish: TMenuItem; menuHTMLpageEnglish: TMenuItem;
popLastDirs: TPopupMenu; popLastDirs: TPopupMenu;
popMenu: TPopupMenu; popMenu: TPopupMenu;
sbtnLastDirs: TSpeedButton;
sbtnMenu: TSpeedButton;
SynEdit: TSynEdit; SynEdit: TSynEdit;
SynHTMLSyn: TSynHTMLSyn; SynHTMLSyn: TSynHTMLSyn;
TaskDialog: TTaskDialog; TaskDialog: TTaskDialog;
ToolBar: TToolBar;
tbLastDirs: TToolButton;
tbMenu: TToolButton;
procedure bbtnCloseClick(Sender: TObject); procedure bbtnCloseClick(Sender: TObject);
procedure bbtnCreateHTMLClick(Sender: TObject); procedure bbtnCreateHTMLClick(Sender: TObject);
procedure bbtnPreviewClick(Sender: TObject); procedure bbtnPreviewClick(Sender: TObject);
@ -42,8 +43,6 @@ type
procedure LastDirClick(Sender: TObject); procedure LastDirClick(Sender: TObject);
procedure menuDarkHTMLpageClick(Sender: TObject); procedure menuDarkHTMLpageClick(Sender: TObject);
procedure menuHTMLpageEnglishClick(Sender: TObject); procedure menuHTMLpageEnglishClick(Sender: TObject);
procedure sbtnLastDirsClick(Sender: TObject);
procedure sbtnMenuClick(Sender: TObject);
private private
ImgDirectory: String; ImgDirectory: String;
function GetImgDirectory(P: String): String; function GetImgDirectory(P: String): String;
@ -98,7 +97,6 @@ resourcestring
rsLicense = 'License:' + LineEnding + '%s'; rsLicense = 'License:' + LineEnding + '%s';
rsFreelyAvailable = '(freely available, no restrictions in usage)'; rsFreelyAvailable = '(freely available, no restrictions in usage)';
{ TMainForm } { TMainForm }
procedure TMainForm.FormCreate(Sender: TObject); procedure TMainForm.FormCreate(Sender: TObject);
@ -161,7 +159,7 @@ begin
if DirectoryExists(popLastDirs.Items[0].Caption) then if DirectoryExists(popLastDirs.Items[0].Caption) then
DirectoryEdit.Directory := popLastDirs.Items[0].Caption; DirectoryEdit.Directory := popLastDirs.Items[0].Caption;
sbtnLastDirs.Enabled := popLastDirs.Items[0].Caption > ''; tbLastDirs.Enabled := popLastDirs.Items[0].Caption > '';
end; end;
procedure TMainForm.FormDropFiles(Sender: TObject; const FileNames: array of String); procedure TMainForm.FormDropFiles(Sender: TObject; const FileNames: array of String);
@ -225,9 +223,12 @@ begin
SynEdit.Lines.Clear; SynEdit.Lines.Clear;
CreateHTML(SynEdit.Lines, False); CreateHTML(SynEdit.Lines, False);
bbtnPreview.Enabled := True; if SynEdit.Text > '' then
bbtnSave.Enabled := True; begin
bbtnPreview.SetFocus; bbtnPreview.Enabled := True;
bbtnSave.Enabled := True;
bbtnPreview.SetFocus;
end;
UpdateLastDirs(ImgDirectory, False); UpdateLastDirs(ImgDirectory, False);
end; end;
@ -515,22 +516,6 @@ begin
bbtnCreateHTML.Click; bbtnCreateHTML.Click;
end; end;
procedure TMainForm.sbtnLastDirsClick(Sender: TObject);
var
pt: TPoint;
begin
pt := sbtnLastDirs.ClientToScreen(Point(sbtnLastDirs.Width, sbtnLastDirs.Height));
popLastDirs.PopUp(pt.X, pt.Y);
end;
procedure TMainForm.sbtnMenuClick(Sender: TObject);
var
pt: TPoint;
begin
pt := sbtnMenu.ClientToScreen(Point(sbtnMenu.Width, sbtnMenu.Height));
popMenu.PopUp(pt.X, pt.Y);
end;
procedure TMainForm.UpdateLastDirs(ImgDir: String; Delete: Boolean); procedure TMainForm.UpdateLastDirs(ImgDir: String; Delete: Boolean);
var var
i: Integer; i: Integer;
@ -552,7 +537,7 @@ begin
popLastDirs.Items[LastDirsMax].Visible := True; popLastDirs.Items[LastDirsMax].Visible := True;
popLastDirs.Items[LastDirsMax].MenuIndex := 0; popLastDirs.Items[LastDirsMax].MenuIndex := 0;
end; end;
sbtnLastDirs.Enabled := popLastDirs.Items[0].Caption > ''; tbLastDirs.Enabled := popLastDirs.Items[0].Caption > '';
end; end;
procedure TMainForm.ShowMsg(const AMsgCaption: String; const AMsg: String); procedure TMainForm.ShowMsg(const AMsgCaption: String; const AMsg: String);