IconFinder: Display icon count. Update demo projects.

This commit is contained in:
wp_xyz 2024-11-09 00:12:46 +01:00
parent 39252c56ba
commit 3788e25cc6
15 changed files with 70 additions and 41 deletions

View File

@ -12,7 +12,6 @@
<XPManifest> <XPManifest>
<DpiAware Value="True"/> <DpiAware Value="True"/>
</XPManifest> </XPManifest>
<Icon Value="0"/>
</General> </General>
<BuildModes> <BuildModes>
<Item Name="Default" Default="True"/> <Item Name="Default" Default="True"/>

View File

@ -6,7 +6,7 @@ object MainForm: TMainForm
Caption = 'MainForm' Caption = 'MainForm'
ClientHeight = 404 ClientHeight = 404
ClientWidth = 426 ClientWidth = 426
LCLVersion = '3.99.0.0' LCLVersion = '4.99.0.0'
object PaintBox1: TPaintBox object PaintBox1: TPaintBox
Left = 11 Left = 11
Height = 383 Height = 383

View File

@ -5,6 +5,7 @@ unit main;
interface interface
uses uses
LazLogger,
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ImgList, Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ImgList,
StdCtrls, Types, IconThumbnails; StdCtrls, Types, IconThumbnails;

View File

@ -12,7 +12,6 @@
<XPManifest> <XPManifest>
<DpiAware Value="True"/> <DpiAware Value="True"/>
</XPManifest> </XPManifest>
<Icon Value="0"/>
</General> </General>
<BuildModes> <BuildModes>
<Item Name="Default" Default="True"/> <Item Name="Default" Default="True"/>

View File

@ -17,7 +17,7 @@ uses
begin begin
RequireDerivedFormResource:=True; RequireDerivedFormResource:=True;
Application.Scaled := True; Application.Scaled:=True;
Application.{%H-}MainFormOnTaskbar:=True; Application.{%H-}MainFormOnTaskbar:=True;
Application.Initialize; Application.Initialize;
Application.CreateForm(TMainForm, MainForm); Application.CreateForm(TMainForm, MainForm);

View File

@ -9,14 +9,12 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.4\n" "X-Generator: Poedit 3.5\n"
#: iconfinderstrconsts.rsfolders_add #: iconfinderstrconsts.rsfolders_add
#, fuzzy
#| msgid "Add..."
msgctxt "iconfinderstrconsts.rsfolders_add" msgctxt "iconfinderstrconsts.rsfolders_add"
msgid "Add ..." msgid "Add ..."
msgstr "Neu..." msgstr "Neu ..."
#: iconfinderstrconsts.rsfolders_confirmdeletefoldermsg #: iconfinderstrconsts.rsfolders_confirmdeletefoldermsg
msgctxt "iconfinderstrconsts.rsfolders_confirmdeletefoldermsg" msgctxt "iconfinderstrconsts.rsfolders_confirmdeletefoldermsg"
@ -69,11 +67,9 @@ msgid "Enter/edit a keyword filter"
msgstr "Filter nach Suchbegriffen eingeben/bearbeiten" msgstr "Filter nach Suchbegriffen eingeben/bearbeiten"
#: iconfinderstrconsts.rsiconviewer_enterkeywordshere #: iconfinderstrconsts.rsiconviewer_enterkeywordshere
#, fuzzy
#| msgid "Enter keywords here..."
msgctxt "iconfinderstrconsts.rsiconviewer_enterkeywordshere" msgctxt "iconfinderstrconsts.rsiconviewer_enterkeywordshere"
msgid "Enter keywords here" msgid "Enter keywords here"
msgstr "Suchbegriffe hier eintragen..." msgstr "Suchbegriffe hier eintragen"
#: iconfinderstrconsts.rsiconviewer_expressiontofilterbykeywordshint #: iconfinderstrconsts.rsiconviewer_expressiontofilterbykeywordshint
msgctxt "iconfinderstrconsts.rsiconviewer_expressiontofilterbykeywordshint" msgctxt "iconfinderstrconsts.rsiconviewer_expressiontofilterbykeywordshint"
@ -96,8 +92,6 @@ msgid "Filter by icon style"
msgstr "Nach Icon-Stil filtern" msgstr "Nach Icon-Stil filtern"
#: iconfinderstrconsts.rsiconviewer_filterbykeywordshint #: iconfinderstrconsts.rsiconviewer_filterbykeywordshint
#, fuzzy
#| msgid "Filters by keywords"
msgctxt "iconfinderstrconsts.rsiconviewer_filterbykeywordshint" msgctxt "iconfinderstrconsts.rsiconviewer_filterbykeywordshint"
msgid "Filter by keywords" msgid "Filter by keywords"
msgstr "Nach Suchbegriffen filtern" msgstr "Nach Suchbegriffen filtern"
@ -107,6 +101,11 @@ msgctxt "iconfinderstrconsts.rsiconviewer_hideall"
msgid "Hide all" msgid "Hide all"
msgstr "Alle verbergen" msgstr "Alle verbergen"
#: iconfinderstrconsts.rsiconviewer_iconcountinfo
#, object-pascal-format
msgid "%0:d icons (out of %1:d)"
msgstr "%0:d Icons (von %1:d)"
#: iconfinderstrconsts.rsiconviewer_keywordslbl #: iconfinderstrconsts.rsiconviewer_keywordslbl
msgctxt "iconfinderstrconsts.rsiconviewer_keywordslbl" msgctxt "iconfinderstrconsts.rsiconviewer_keywordslbl"
msgid "Keywords:" msgid "Keywords:"
@ -193,8 +192,6 @@ msgid "(any style)"
msgstr "(beliebig)" msgstr "(beliebig)"
#: iconfinderstrconsts.rsmetadata_caption #: iconfinderstrconsts.rsmetadata_caption
#, fuzzy
#| msgid "Edit Icon Metadata"
msgctxt "iconfinderstrconsts.rsmetadata_caption" msgctxt "iconfinderstrconsts.rsmetadata_caption"
msgid "Icon Metadata Editor" msgid "Icon Metadata Editor"
msgstr "Icon-Metadaten bearbeiten" msgstr "Icon-Metadaten bearbeiten"
@ -228,4 +225,3 @@ msgstr "Außenlinie"
msgctxt "iconfinderstrconsts.rsmetadata_style" msgctxt "iconfinderstrconsts.rsmetadata_style"
msgid "Style" msgid "Style"
msgstr "Stil" msgstr "Stil"

View File

@ -74,6 +74,11 @@ msgstr ""
msgid "Hide all" msgid "Hide all"
msgstr "" msgstr ""
#: iconfinderstrconsts.rsiconviewer_iconcountinfo
#, object-pascal-format
msgid "%0:d icons (out of %1:d)"
msgstr ""
#: iconfinderstrconsts.rsiconviewer_keywordslbl #: iconfinderstrconsts.rsiconviewer_keywordslbl
msgid "Keywords:" msgid "Keywords:"
msgstr "" msgstr ""

View File

@ -85,6 +85,11 @@ msgstr "Фильтровать по ключевым словам"
msgid "Hide all" msgid "Hide all"
msgstr "Скрыть все" msgstr "Скрыть все"
#: iconfinderstrconsts.rsiconviewer_iconcountinfo
#, object-pascal-format
msgid "%0:d icons (out of %1:d)"
msgstr ""
#: iconfinderstrconsts.rsiconviewer_keywordslbl #: iconfinderstrconsts.rsiconviewer_keywordslbl
msgid "Keywords:" msgid "Keywords:"
msgstr "Ключевые слова:" msgstr "Ключевые слова:"

View File

@ -54,10 +54,13 @@
<EnableI18N Value="True"/> <EnableI18N Value="True"/>
<OutDir Value="..\..\languages"/> <OutDir Value="..\..\languages"/>
</i18n> </i18n>
<RequiredPkgs Count="1"> <RequiredPkgs Count="2">
<Item1> <Item1>
<PackageName Value="LCL"/> <PackageName Value="LazControlDsgn"/>
</Item1> </Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPkgs> </RequiredPkgs>
<UsageOptions> <UsageOptions>
<UnitPath Value="$(PkgOutDir)"/> <UnitPath Value="$(PkgOutDir)"/>

View File

@ -26,6 +26,7 @@ resourcestring
RSIconViewer_StyleLbl = 'Style:'; RSIconViewer_StyleLbl = 'Style:';
RSIconViewer_KeywordsLbl = 'Keywords:'; RSIconViewer_KeywordsLbl = 'Keywords:';
RSIconViewer_ConfirmDeleteIconMsg = 'Do you really want to delete the selected icon from the library?'; RSIconViewer_ConfirmDeleteIconMsg = 'Do you really want to delete the selected icon from the library?';
RSIconViewer_IconCountInfo = '%0:d icons (out of %1:d)';
// IconFinderMetadata // IconFinderMetadata
RSMetadata_Caption = 'Icon Metadata Editor'; RSMetadata_Caption = 'Icon Metadata Editor';

View File

@ -118,8 +118,8 @@ object IconViewerFrame: TIconViewerFrame
end end
object IconDetailsPanel: TPanel object IconDetailsPanel: TPanel
Left = 6 Left = 6
Height = 68 Height = 87
Top = 223 Top = 204
Width = 594 Width = 594
Align = alBottom Align = alBottom
AutoSize = True AutoSize = True
@ -127,16 +127,17 @@ object IconViewerFrame: TIconViewerFrame
BorderSpacing.Top = 6 BorderSpacing.Top = 6
BorderSpacing.Right = 6 BorderSpacing.Right = 6
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 68 ClientHeight = 87
ClientWidth = 594 ClientWidth = 594
TabOrder = 1 TabOrder = 1
OnResize = IconDetailsPanelResize OnResize = IconDetailsPanelResize
object CaptionPanel: TPanel object CaptionPanel: TPanel
AnchorSideLeft.Control = IconDetailsPanel AnchorSideLeft.Control = IconDetailsPanel
AnchorSideTop.Control = IconDetailsPanel AnchorSideTop.Control = DividerBevel1
AnchorSideTop.Side = asrBottom
Left = 0 Left = 0
Height = 68 Height = 68
Top = 0 Top = 19
Width = 58 Width = 58
AutoSize = True AutoSize = True
BorderSpacing.Right = 8 BorderSpacing.Right = 8
@ -199,10 +200,12 @@ object IconViewerFrame: TIconViewerFrame
object infoFileName: TLabel object infoFileName: TLabel
AnchorSideLeft.Control = CaptionPanel AnchorSideLeft.Control = CaptionPanel
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = DividerBevel1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 66 Left = 66
Height = 15 Height = 15
Top = 0 Top = 19
Width = 71 Width = 71
Caption = 'infoFileName' Caption = 'infoFileName'
end end
@ -213,7 +216,7 @@ object IconViewerFrame: TIconViewerFrame
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 66 Left = 66
Height = 15 Height = 15
Top = 17 Top = 36
Width = 41 Width = 41
BorderSpacing.Top = 2 BorderSpacing.Top = 2
Caption = 'infoSize' Caption = 'infoSize'
@ -225,7 +228,7 @@ object IconViewerFrame: TIconViewerFrame
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 66 Left = 66
Height = 15 Height = 15
Top = 34 Top = 53
Width = 46 Width = 46
BorderSpacing.Top = 2 BorderSpacing.Top = 2
Caption = 'infoStyle' Caption = 'infoStyle'
@ -239,21 +242,24 @@ object IconViewerFrame: TIconViewerFrame
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 66 Left = 66
Height = 15 Height = 15
Top = 51 Top = 70
Width = 528 Width = 528
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 2 BorderSpacing.Top = 2
Caption = 'infoKeywords' Caption = 'infoKeywords'
WordWrap = True WordWrap = True
end end
end object DividerBevel1: TDividerBevel
object Bevel1: TBevel Left = 0
Left = 0 Height = 15
Height = 4 Top = 0
Top = 213 Width = 594
Width = 606 Caption = 'DividerBevel1'
Align = alBottom Align = alTop
Shape = bsBottomLine BorderSpacing.Bottom = 4
Font.Style = [fsBold]
ParentFont = False
end
end end
object Bevel2: TBevel object Bevel2: TBevel
Left = 0 Left = 0

View File

@ -24,8 +24,9 @@ uses
Classes, SysUtils, Classes, SysUtils,
// LazUtils // LazUtils
LazFileUtils, LazLoggerBase, LazFileUtils, LazLoggerBase,
// LCL // LCL/LazControls
Forms, Controls, Graphics, StdCtrls, ExtCtrls, FileCtrl, Buttons, Dialogs, ImgList, Forms, Controls, Graphics, StdCtrls, ExtCtrls, FileCtrl, Buttons, Dialogs,
ImgList, DividerBevel,
// Icon Finder // Icon Finder
IconFinderStrConsts, IconThumbnails, IconKeywordFilterEditor; IconFinderStrConsts, IconThumbnails, IconKeywordFilterEditor;
@ -34,12 +35,12 @@ type
{ TIconViewerFrame } { TIconViewerFrame }
TIconViewerFrame = class(TFrame) TIconViewerFrame = class(TFrame)
Bevel1: TBevel;
Bevel2: TBevel; Bevel2: TBevel;
btnKeywordEditor: TSpeedButton; btnKeywordEditor: TSpeedButton;
cmbFilterByKeywords: TComboBox; cmbFilterByKeywords: TComboBox;
cmbFilterBySize: TComboBox; cmbFilterBySize: TComboBox;
cmbFilterByStyle: TComboBox; cmbFilterByStyle: TComboBox;
DividerBevel1: TDividerBevel;
FilterPanel: TPanel; FilterPanel: TPanel;
infoFileName: TLabel; infoFileName: TLabel;
infoKeywords: TLabel; infoKeywords: TLabel;
@ -95,6 +96,7 @@ type
function IndexOfIconFolder(AFolder: String): Integer; function IndexOfIconFolder(AFolder: String): Integer;
procedure ReadIconFolders(AList: TStrings); procedure ReadIconFolders(AList: TStrings);
procedure SetKeywordsHistory(AList: TStrings); procedure SetKeywordsHistory(AList: TStrings);
procedure UpdateIconCount;
procedure UpdateIconSizes(ASizeIndex: Integer); procedure UpdateIconSizes(ASizeIndex: Integer);
procedure UpdateIconStyles(AStyleIndex: Integer); procedure UpdateIconStyles(AStyleIndex: Integer);
procedure UpdateLanguage; procedure UpdateLanguage;
@ -155,6 +157,7 @@ begin
UpdateIconSizes(filterBySize); UpdateIconSizes(filterBySize);
UpdateIconStyles(filterByStyle); UpdateIconStyles(filterByStyle);
UpdateIconDetails; UpdateIconDetails;
UpdateIconCount;
UpdateCmds; UpdateCmds;
end; end;
@ -216,6 +219,7 @@ begin
FIconViewer.FilterByIconKeywords := filter; FIconViewer.FilterByIconKeywords := filter;
AddKeywordFilterToHistory(filter); AddKeywordFilterToHistory(filter);
cmbFilterByKeywords.Text := filter; // Must be after AddKeywordFilterToHistory! cmbFilterByKeywords.Text := filter; // Must be after AddKeywordFilterToHistory!
UpdateIconCount;
end; end;
procedure TIconViewerFrame.cmbFilterByKeywordsEditingDone(Sender: TObject); procedure TIconViewerFrame.cmbFilterByKeywordsEditingDone(Sender: TObject);
@ -230,12 +234,14 @@ begin
else else
FIconViewer.FilterByIconSize := cmbFilterBySize.Items[cmbFilterBySize.ItemIndex]; FIconViewer.FilterByIconSize := cmbFilterBySize.Items[cmbFilterBySize.ItemIndex];
FIconViewer.Invalidate; FIconViewer.Invalidate;
UpdateIconCount;
end; end;
procedure TIconViewerFrame.cmbFilterByStyleChange(Sender: TObject); procedure TIconViewerFrame.cmbFilterByStyleChange(Sender: TObject);
begin begin
FIconViewer.FilterByIconStyle := TIconStyle(cmbFilterByStyle.ItemIndex); FIconViewer.FilterByIconStyle := TIconStyle(cmbFilterByStyle.ItemIndex);
FIconViewer.Invalidate; FIconViewer.Invalidate;
UpdateIconCount;
end; end;
procedure TIconViewerFrame.CopyMetadataToNameBase(AIcon: TIconItem); procedure TIconViewerFrame.CopyMetadataToNameBase(AIcon: TIconItem);
@ -265,6 +271,7 @@ end;
procedure TIconViewerFrame.DoIconViewerFilter(Sender: TObject); procedure TIconViewerFrame.DoIconViewerFilter(Sender: TObject);
begin begin
UpdateIconCount;
if Assigned(FOnFilter) then if Assigned(FOnFilter) then
FOnFilter(Self); FOnFilter(Self);
end; end;
@ -422,6 +429,13 @@ begin
btnKeywordEditor.Enabled := TotalCount > 0; btnKeywordEditor.Enabled := TotalCount > 0;
end; end;
procedure TIconViewerFrame.UpdateIconCount;
begin
DividerBevel1.Caption := Format(RSIconViewer_IconCountInfo,
[ FIconViewer.ThumbnailCount, FIconViewer.IconCount ]
);
end;
procedure TIconViewerFrame.UpdateIconDetails; procedure TIconViewerFrame.UpdateIconDetails;
var var
keywordList: TStrings; keywordList: TStrings;

View File

@ -2,9 +2,9 @@ object IconFinderSettingsFrame: TIconFinderSettingsFrame
Left = 0 Left = 0
Height = 230 Height = 230
Top = 0 Top = 0
Width = 372 Width = 433
ClientHeight = 230 ClientHeight = 230
ClientWidth = 372 ClientWidth = 433
ParentFont = False ParentFont = False
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
@ -15,7 +15,7 @@ object IconFinderSettingsFrame: TIconFinderSettingsFrame
Left = 0 Left = 0
Height = 22 Height = 22
Top = 0 Top = 0
Width = 372 Width = 433
AutoSize = True AutoSize = True
Caption = 'ToolBar' Caption = 'ToolBar'
EdgeBorders = [] EdgeBorders = []