mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 10:49:16 +02:00
- added interfaces to common IDE imagelists
- IDE main menu switched from using bitmap per item to one imagelist git-svn-id: trunk@11045 -
This commit is contained in:
parent
e19a42fc45
commit
48cce57d5d
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1652,6 +1652,7 @@ ideintf/idecommands.pas svneol=native#text/pascal
|
|||||||
ideintf/idedialogs.pas svneol=native#text/plain
|
ideintf/idedialogs.pas svneol=native#text/plain
|
||||||
ideintf/ideexterntoolintf.pas svneol=native#text/plain
|
ideintf/ideexterntoolintf.pas svneol=native#text/plain
|
||||||
ideintf/idehelpintf.pas svneol=native#text/plain
|
ideintf/idehelpintf.pas svneol=native#text/plain
|
||||||
|
ideintf/ideimagesintf.pas svneol=native#text/pascal
|
||||||
ideintf/idemsgintf.pas svneol=native#text/plain
|
ideintf/idemsgintf.pas svneol=native#text/plain
|
||||||
ideintf/idetextconverter.pas svneol=native#text/plain
|
ideintf/idetextconverter.pas svneol=native#text/plain
|
||||||
ideintf/idewindowintf.pas svneol=native#text/plain
|
ideintf/idewindowintf.pas svneol=native#text/plain
|
||||||
|
@ -172,6 +172,8 @@ var
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
IDEImagesIntf;
|
||||||
|
|
||||||
{ TMainIDEBase }
|
{ TMainIDEBase }
|
||||||
|
|
||||||
@ -270,7 +272,7 @@ begin
|
|||||||
MenuItem.Enabled:=mnuEnabled;
|
MenuItem.Enabled:=mnuEnabled;
|
||||||
MenuItem.Checked:=mnuChecked;
|
MenuItem.Checked:=mnuChecked;
|
||||||
if bmpName<>'' then
|
if bmpName<>'' then
|
||||||
MenuItem.Bitmap.LoadFromLazarusResource(bmpName);
|
MenuItem.ImageIndex := IDEImages.LoadImage(16, bmpName);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDEBase.CreateMenuSeparatorSection(
|
procedure TMainIDEBase.CreateMenuSeparatorSection(
|
||||||
@ -287,7 +289,7 @@ procedure TMainIDEBase.CreateMenuSubSection(ParentSection: TIDEMenuSection;
|
|||||||
begin
|
begin
|
||||||
Section:=RegisterIDESubMenu(ParentSection,AName,ACaption);
|
Section:=RegisterIDESubMenu(ParentSection,AName,ACaption);
|
||||||
if bmpName<>'' then
|
if bmpName<>'' then
|
||||||
Section.Bitmap.LoadFromLazarusResource(bmpName);
|
Section.ImageIndex := IDEImages.LoadImage(16, bmpName);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDEBase.CreateMainMenuItem(var Section: TIDEMenuSection;
|
procedure TMainIDEBase.CreateMainMenuItem(var Section: TIDEMenuSection;
|
||||||
@ -299,6 +301,7 @@ end;
|
|||||||
procedure TMainIDEBase.SetupMainMenu;
|
procedure TMainIDEBase.SetupMainMenu;
|
||||||
begin
|
begin
|
||||||
MainIDEBar.mnuMainMenu := TMainMenu.Create(MainIDEBar);
|
MainIDEBar.mnuMainMenu := TMainMenu.Create(MainIDEBar);
|
||||||
|
MainIDEBar.mnuMainMenu.Images := IDEImages.Images_16;
|
||||||
with MainIDEBar do begin
|
with MainIDEBar do begin
|
||||||
mnuMain:=RegisterIDEMenuRoot('IDEMainMenu',nil);
|
mnuMain:=RegisterIDEMenuRoot('IDEMainMenu',nil);
|
||||||
CreateMainMenuItem(mnuFile,'File',lisMenuFile);
|
CreateMainMenuItem(mnuFile,'File',lisMenuFile);
|
||||||
@ -1046,3 +1049,4 @@ end;
|
|||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@ uses
|
|||||||
IDEDialogs,
|
IDEDialogs,
|
||||||
IDEExternToolIntf,
|
IDEExternToolIntf,
|
||||||
IDEHelpIntf,
|
IDEHelpIntf,
|
||||||
|
IDEImagesIntf,
|
||||||
IDEMsgIntf,
|
IDEMsgIntf,
|
||||||
IDETextConverter,
|
IDETextConverter,
|
||||||
IDEWindowIntf,
|
IDEWindowIntf,
|
||||||
|
175
ideintf/ideimagesintf.pas
Normal file
175
ideintf/ideimagesintf.pas
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
unit IDEImagesIntf;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, ImgList, Controls, Graphics, LResources;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TIDEImages }
|
||||||
|
|
||||||
|
TIDEImages = class
|
||||||
|
private
|
||||||
|
FImages_16: TCustomImageList;
|
||||||
|
FImages_24: TCustomImageList;
|
||||||
|
FImageNames_16: TStringList;
|
||||||
|
FImageNames_24: TStringList;
|
||||||
|
protected
|
||||||
|
function GetImages_16: TCustomImageList;
|
||||||
|
function GetImages_24: TCustomImageList;
|
||||||
|
public
|
||||||
|
constructor Create;
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
function GetImageIndex(ImageSize: Integer; ImageName: String): Integer;
|
||||||
|
function LoadImage(ImageSize: Integer; ImageName: String): Integer;
|
||||||
|
|
||||||
|
property Images_16: TCustomImageList read GetImages_16;
|
||||||
|
property Images_24: TCustomImageList read GetImages_24;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function IDEImages: TIDEImages;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
var
|
||||||
|
FIDEImages: TIDEImages;
|
||||||
|
|
||||||
|
{ TIDEImages }
|
||||||
|
|
||||||
|
function TIDEImages.GetImages_16: TCustomImageList;
|
||||||
|
begin
|
||||||
|
if FImages_16 = nil then
|
||||||
|
begin
|
||||||
|
FImages_16 := TImageList.Create(nil);
|
||||||
|
FImages_16.Width := 16;
|
||||||
|
FImages_16.Height := 16;
|
||||||
|
end;
|
||||||
|
Result := FImages_16;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TIDEImages.GetImages_24: TCustomImageList;
|
||||||
|
begin
|
||||||
|
if FImages_24 = nil then
|
||||||
|
begin
|
||||||
|
FImages_24 := TImageList.Create(nil);
|
||||||
|
FImages_24.Width := 24;
|
||||||
|
FImages_24.Height := 24;
|
||||||
|
end;
|
||||||
|
Result := FImages_24;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TIDEImages.Create;
|
||||||
|
begin
|
||||||
|
FImages_16 := nil;
|
||||||
|
FImages_24 := nil;
|
||||||
|
FImageNames_16 := TStringList.Create;
|
||||||
|
FImageNames_16.Sorted := True;
|
||||||
|
FImageNames_16.Duplicates := dupIgnore;
|
||||||
|
FImageNames_24 := TStringList.Create;
|
||||||
|
FImageNames_24.Sorted := True;
|
||||||
|
FImageNames_24.Duplicates := dupIgnore;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TIDEImages.Destroy;
|
||||||
|
begin
|
||||||
|
FImages_16.Free;
|
||||||
|
FImages_24.Free;
|
||||||
|
FImageNames_16.Free;
|
||||||
|
FImageNames_24.Free;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TIDEImages.GetImageIndex(ImageSize: Integer; ImageName: String): Integer;
|
||||||
|
var
|
||||||
|
List: TStringList;
|
||||||
|
begin
|
||||||
|
case ImageSize of
|
||||||
|
16: List := FImageNames_16;
|
||||||
|
24: List := FImageNames_24;
|
||||||
|
else
|
||||||
|
List := nil;
|
||||||
|
end;
|
||||||
|
if List <> nil then
|
||||||
|
begin
|
||||||
|
Result := List.IndexOf(ImageName);
|
||||||
|
if Result <> -1 then
|
||||||
|
Result := Integer(List.Objects[Result]);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Result := -1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TIDEImages.LoadImage(ImageSize: Integer; ImageName: String): Integer;
|
||||||
|
var
|
||||||
|
List: TCustomImageList;
|
||||||
|
Names: TStringList;
|
||||||
|
Graphic: TGraphic;
|
||||||
|
GraphicClass: TGraphicClass;
|
||||||
|
Res: TLResource;
|
||||||
|
Stream: TStream;
|
||||||
|
begin
|
||||||
|
Result := GetImageIndex(ImageSize, ImageName);
|
||||||
|
if Result = -1 then
|
||||||
|
begin
|
||||||
|
List := nil;
|
||||||
|
Names := nil;
|
||||||
|
case ImageSize of
|
||||||
|
16:
|
||||||
|
begin
|
||||||
|
List := FImages_16;
|
||||||
|
Names := FImageNames_16;
|
||||||
|
end;
|
||||||
|
24:
|
||||||
|
begin
|
||||||
|
List := FImages_24;
|
||||||
|
Names := FImageNames_24;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if List <> nil then
|
||||||
|
begin
|
||||||
|
Res := LazarusResources.Find(ImageName);
|
||||||
|
if (Res <> nil) and (Res.Value <> '') then
|
||||||
|
begin
|
||||||
|
GraphicClass := GetGraphicClassForFileExtension(Res.ValueType);
|
||||||
|
if GraphicClass <> nil then
|
||||||
|
begin
|
||||||
|
Graphic := GraphicClass.Create;
|
||||||
|
if Graphic is TBitmap then
|
||||||
|
try
|
||||||
|
Stream := TMemoryStream.Create;
|
||||||
|
try
|
||||||
|
Stream.Write(Res.Value[1], length(Res.Value));
|
||||||
|
Stream.Position := 0;
|
||||||
|
Graphic.LoadFromStream(Stream);
|
||||||
|
Result := List.Add(TBitmap(Graphic), nil);
|
||||||
|
Names.AddObject(ImageName, TObject(Result));
|
||||||
|
finally
|
||||||
|
Stream.Free;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Graphic.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function IDEImages: TIDEImages;
|
||||||
|
begin
|
||||||
|
if FIDEImages = nil then
|
||||||
|
FIDEImages := TIDEImages.Create;
|
||||||
|
Result := FIDEImages;
|
||||||
|
end;
|
||||||
|
|
||||||
|
initialization
|
||||||
|
FIDEImages := nil;
|
||||||
|
|
||||||
|
finalization
|
||||||
|
FIDEImages.Free;
|
||||||
|
|
||||||
|
end.
|
Loading…
Reference in New Issue
Block a user