optim, avoid a lot of heap alloc when assigning btn's glyphs

This commit is contained in:
Basile Burg 2015-09-17 18:22:13 +02:00
parent 546052732f
commit c95c8ff54b
11 changed files with 61 additions and 182 deletions

View File

@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Buttons, Menus,ce_widget, ce_common;
StdCtrls, ExtCtrls, Buttons, Menus,ce_widget, ce_common, ce_sharedres;
type
@ -105,25 +105,23 @@ end;
procedure TToolInfo.refreshStatus;
var
pth: string;
png: TPortableNetworkGraphic;
begin
if (fLabel = nil) or (fStatus = nil) then exit;
//
fLabel.Caption:= fToolName;
png := TPortableNetworkGraphic.Create;
try case fKind of
case fKind of
tikFindable:
begin
pth := exeFullName(fToolName + exeExt);
if pth = '' then
begin
fStatus.Caption:= ' the tool cannot be found';
png.LoadFromLazarusResource('bullet_red');
AssignPng(fIco, 'bullet_red');
end
else
begin
fStatus.Caption:= ' the tool is available';
png.LoadFromLazarusResource('bullet_green');
AssignPng(fIco, 'bullet_green');
end;
end;
tikRunning:
@ -132,24 +130,20 @@ begin
if pth = '' then
begin
fStatus.Caption:= ' the tool cannot be found';
png.LoadFromLazarusResource('bullet_red');
AssignPng(fIco, 'bullet_red');
end
else if AppIsRunning(fToolName + exeExt) then
begin
fStatus.Caption:= ' the tool is available and running';
png.LoadFromLazarusResource('bullet_green');
AssignPng(fIco, 'bullet_green');
end
else
begin
fStatus.Caption:= ' the tool is available but is not running';
png.LoadFromLazarusResource('bullet_yellow');
AssignPng(fIco, 'bullet_yellow');
end;
end;
end;
finally
fIco.Glyph.Assign(png);
png.Free;
end;
ReAlign;
Invalidate;
end;

View File

@ -7,7 +7,7 @@ interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
Menus, ComCtrls, Buttons, ce_widget, ce_interfaces, ce_nativeproject, ce_dmdwrap,
ce_common, ce_dialogs;
ce_common, ce_dialogs, ce_sharedres;
type
@ -64,33 +64,17 @@ const
notav: string = '< n/a >';
constructor TCELibManEditorWidget.Create(aOwner: TComponent);
var
png: TPortableNetworkGraphic;
begin
inherited;
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('arrow_down');
btnMoveDown.Glyph.Assign(png);
png.LoadFromLazarusResource('arrow_up');
btnMoveUp.Glyph.Assign(png);
png.LoadFromLazarusResource('book_add');
btnAddLib.Glyph.Assign(png);
png.LoadFromLazarusResource('book_delete');
btnRemLib.Glyph.Assign(png);
png.LoadFromLazarusResource('book_edit');
btnEditAlias.Glyph.Assign(png);
png.LoadFromLazarusResource('folder_brick');
btnSelFile.Glyph.Assign(png);
png.LoadFromLazarusResource('bricks');
btnSelfoldOfFiles.Glyph.Assign(png);
png.LoadFromLazarusResource('folder_add');
btnSelRoot.Glyph.Assign(png);
png.LoadFromLazarusResource('book_link');
btnReg.Glyph.Assign(png);
finally
png.Free;
end;
AssignPng(btnMoveDown, 'arrow_down');
AssignPng(btnMoveUp, 'arrow_up');
AssignPng(btnAddLib, 'book_add');
AssignPng(btnRemLib, 'book_delete');
AssignPng(btnEditAlias, 'book_edit');
AssignPng(btnSelFile, 'folder_brick');
AssignPng(btnSelfoldOfFiles, 'bricks');
AssignPng(btnSelRoot, 'folder_add');
AssignPng(btnReg, 'book_link');
end;
procedure TCELibManEditorWidget.updateRegistrable;

View File

@ -8,7 +8,7 @@ uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls,
lcltype, ce_widget, ActnList, Menus, clipbrd, AnchorDocking, TreeFilterEdit,
Buttons, math, process, ce_writableComponent, ce_common, ce_synmemo, GraphType,
ce_dlangutils, ce_interfaces, ce_observer, ce_symstring, ce_processes;
ce_dlangutils, ce_interfaces, ce_observer, ce_symstring, ce_processes, ce_sharedres;
type
@ -248,7 +248,6 @@ end;
constructor TCEMessagesWidget.create(aOwner: TComponent);
var
fname: string;
png: TPortableNetworkGraphic;
begin
fMaxMessCnt := 500;
fCtxt := amcAll;
@ -306,13 +305,7 @@ begin
fBtns[amcProj]:= btnSelProj;
//
btnClearCat.OnClick := @actClearCurCatExecute;
png:= TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('clean');
btnClearCat.Glyph.Assign(png);
finally
png.free;
end;
AssignPng(btnClearCat, 'clean');
//
fname := getCoeditDocPath + optname;
if fileExists(fname) then

View File

@ -7,7 +7,7 @@ interface
uses
Classes, SysUtils, FileUtil, ListFilterEdit, Forms, Controls, Graphics,
ExtCtrls, Menus, ComCtrls, Buttons, lcltype, strutils, ce_widget,
ce_common, ce_interfaces, ce_observer, ce_writableComponent;
ce_common, ce_interfaces, ce_observer, ce_writableComponent, ce_sharedres;
type
@ -137,24 +137,14 @@ end;
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCEMiniExplorerWidget.create(aIwner: TComponent);
var
png: TPortableNetworkGraphic;
fname: string;
begin
inherited;
//
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('folder_add');
btnAddFav.Glyph.Assign(png);
png.LoadFromLazarusResource('folder_delete');
btnRemFav.Glyph.Assign(png);
png.LoadFromLazarusResource('flash');
btnShellOpen.Glyph.Assign(png);
png.LoadFromLazarusResource('pencil');
btnEdit.Glyph.Assign(png);
finally
png.Free;
end;
AssignPng(btnAddFav, 'folder_add');
AssignPng(btnRemFav, 'folder_delete');
AssignPng(btnShellOpen, 'flash');
AssignPng(btnEdit, 'pencil');
//
fFavorites := TStringList.Create;
fFavorites.onChange := @favStringsChange;

View File

@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, FileUtil, RTTIGrids, Forms, Controls, Graphics, ExtCtrls,
Menus, ComCtrls, Buttons, PropEdits, ObjectInspector,
Menus, ComCtrls, Buttons, PropEdits, ObjectInspector, ce_sharedres,
ce_common, ce_widget, ce_interfaces, ce_observer, ce_dialogs;
type
@ -63,8 +63,6 @@ const
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCEOptionEditorWidget.create(aOwner: TComponent);
var
png: TPortableNetworkGraphic;
begin
inherited;
fIsDockable := false;
@ -73,15 +71,8 @@ begin
inspector.CheckboxForBoolean := true;
inspector.PropertyEditorHook.AddHandlerModified(@inspectorModified);
//
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('cancel');
btnCancel.Glyph.Assign(png);
png.LoadFromLazarusResource('accept');
btnAccept.Glyph.Assign(png);
finally
png.Free;
end;
AssignPng(btnCancel, 'cancel');
AssignPng(btnAccept, 'accept');
end;
destructor TCEOptionEditorWidget.destroy;

View File

@ -7,8 +7,8 @@ interface
uses
Classes, SysUtils, FileUtil, RTTIGrids, RTTICtrls, Forms, Controls, Graphics,
Dialogs, ExtCtrls, ComCtrls, StdCtrls, Menus, Buttons, rttiutils, typinfo,
PropEdits, ObjectInspector, ce_dmdwrap, ce_nativeproject, ce_widget, ce_interfaces,
ce_observer;
PropEdits, ObjectInspector, ce_dmdwrap, ce_nativeproject, ce_widget,
ce_interfaces, ce_observer, ce_sharedres;
type
@ -63,23 +63,14 @@ implementation
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCEProjectConfigurationWidget.create(aOwner: TComponent);
var
png: TPortableNetworkGraphic;
begin
inherited;
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('cog_add');
btnAddConf.Glyph.Assign(png);
png.LoadFromLazarusResource('cog_delete');
btnDelConf.Glyph.Assign(png);
png.LoadFromLazarusResource('cog_go');
btnCloneConf.Glyph.Assign(png);
png.LoadFromLazarusResource('link_break');
btnSyncEdit.Glyph.Assign(png);
finally
png.Free;
end;
//
AssignPng(btnAddConf, 'cog_add');
AssignPng(btnDelConf, 'cog_delete');
AssignPng(btnCloneConf, 'cog_go');
AssignPng(btnSyncEdit, 'link_break');
//
fSynchroItem := TStringList.Create;
fSynchroValue := TStringList.Create;
Tree.Selected := Tree.Items.GetLastNode;
@ -177,20 +168,12 @@ begin
end;
procedure TCEProjectConfigurationWidget.setSyncroMode(aValue: boolean);
var
png: TPortableNetworkGraphic;
begin
if fSyncroMode = aValue then exit;
//
fSyncroMode := aValue;
png := TPortableNetworkGraphic.Create;
try
if fSyncroMode then png.LoadFromLazarusResource('link')
else png.LoadFromLazarusResource('link_break');
btnSyncEdit.Glyph.Assign(png);
finally
png.Free;
end;
if fSyncroMode then AssignPng(btnSyncEdit, 'link')
else AssignPng(btnSyncEdit, 'link_break');
end;
function TCEProjectConfigurationWidget.syncroSetPropAsString(const ASection, Item, Default: string): string;

View File

@ -7,7 +7,7 @@ interface
uses
Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Graphics, actnlist,
Dialogs, ExtCtrls, ComCtrls, Menus, Buttons, lcltype, ce_nativeproject, ce_interfaces,
ce_common, ce_widget, ce_observer, ce_dialogs;
ce_common, ce_widget, ce_observer, ce_dialogs, ce_sharedres;
type
TCEProjectInspectWidget = class(TCEWidget, ICEProjectObserver)
@ -65,8 +65,6 @@ uses
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCEProjectInspectWidget.create(aOwner: TComponent);
var
png: TPortableNetworkGraphic;
begin
fActOpenFile := TAction.Create(self);
fActOpenFile.Caption := 'Open file in editor';
@ -78,21 +76,11 @@ begin
//
inherited;
//
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('document_add');
btnAddFile.Glyph.Assign(png);
png.LoadFromLazarusResource('document_delete');
btnRemFile.Glyph.Assign(png);
png.LoadFromLazarusResource('folder_add');
btnAddFold.Glyph.Assign(png);
png.LoadFromLazarusResource('folder_delete');
btnRemFold.Glyph.Assign(png);
png.LoadFromLazarusResource('wrench_orange');
btnProjOpts.Glyph.Assign(png);
finally
png.Free;
end;
AssignPng(btnAddFile, 'document_add');
AssignPng(btnRemFile, 'document_delete');
AssignPng(btnAddFold, 'folder_add');
AssignPng(btnRemFold, 'folder_delete');
AssignPng(btnProjOpts, 'wrench_orange');
//
Tree.OnDblClick := @TreeDblClick;
fFileNode := Tree.Items[0];

View File

@ -7,7 +7,7 @@ interface
uses
Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Menus, Graphics,
ExtCtrls, LCLProc, ComCtrls, StdCtrls, Buttons, LCLType,
ce_observer, ce_interfaces, ce_common, ce_writableComponent;
ce_sharedres, ce_observer, ce_interfaces, ce_common, ce_writableComponent;
type
@ -171,22 +171,12 @@ end;
{$REGION Standard Comp/Object things -------------------------------------------}
constructor TCEShortcutEditor.create(TheOwner: TComponent);
var
png: TPortableNetworkGraphic;
begin
inherited;
fObservers := TCEEditableShortCutSubject.create;
fShortcuts := TShortCutCollection.create(self);
fBackup := TShortCutCollection.create(self);
//
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('clean');
btnClear.Glyph.Assign(png);
finally
png.free;
end;
//
AssignPng(btnClear, 'clean');
EntitiesConnector.addObserver(self);
end;
@ -197,19 +187,11 @@ begin
end;
procedure TCEShortcutEditor.UpdateShowing;
var
png : TPortableNetworkGraphic;
begin
inherited;
if not visible then exit;
//
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('keyboard_pencil');
btnActivate.Glyph.Assign(png);
finally
png.free;
end;
AssignPng(btnActivate, 'keyboard_pencil');
end;
{$ENDREGION}

View File

@ -8,7 +8,8 @@ uses
Classes, SysUtils, controls,lcltype, Forms, graphics, ExtCtrls, crc,
SynPluginSyncroEdit, SynCompletion, SynEditKeyCmds, LazSynEditText, SynEdit,
SynHighlighterLFM, SynEditHighlighter, SynEditMouseCmds, SynEditFoldedView,
ce_common, ce_observer, ce_writableComponent, ce_d2syn, ce_txtsyn, ce_dialogs;
ce_common, ce_observer, ce_writableComponent, ce_d2syn, ce_txtsyn, ce_dialogs,
ce_sharedres;
type
@ -357,8 +358,6 @@ end;
{$REGION TCESynMemo ------------------------------------------------------------}
constructor TCESynMemo.Create(aOwner: TComponent);
var
png: TPortableNetworkGraphic;
begin
inherited;
//
@ -390,13 +389,7 @@ begin
fSyncEdit := TSynPluginSyncroEdit.Create(self);
fSyncEdit.Editor := self;
fSyncEdit.CaseSensitive := true;
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('link_edit');
fSyncEdit.GutterGlyph.Assign(png);
finally
png.Free;
end;
AssignPng(fSyncEdit.GutterGlyph, 'link_edit');
//
fCompletionCaseSens:=false;
fCompletion := TSyncompletion.create(nil);

View File

@ -8,7 +8,7 @@ uses
Classes, SysUtils, FileUtil, ListFilterEdit, Forms, Controls,
strutils, Graphics, Dialogs, ExtCtrls, Menus, Buttons, ComCtrls,
ce_widget, process, ce_common, ce_interfaces, ce_synmemo, ce_processes,
ce_nativeproject, ce_symstring, ce_writableComponent, ce_observer;
ce_nativeproject, ce_symstring, ce_writableComponent, ce_observer, ce_sharedres;
type
@ -192,7 +192,6 @@ end;
{$REGION Standard Comp/Obj -----------------------------------------------------}
constructor TCETodoListWidget.Create(aOwner: TComponent);
var
png: TPortableNetworkGraphic;
fname: string;
begin
inherited;
@ -212,15 +211,8 @@ begin
lstfilter.OnChange := @filterItems;
btnGo.OnClick := @handleListClick;
//
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('arrow_update');
btnRefresh.Glyph.Assign(png);
png.LoadFromLazarusResource('arrow_pen');
btnGo.Glyph.Assign(png);
finally
png.Free;
end;
AssignPng(btnRefresh, 'arrow_update');
AssignPng(btnGo, 'arrow_pen');
//
fname := getCoeditDocPath + OptFname;
if FileExists(fname) then

View File

@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, FileUtil, RTTIGrids, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Menus, Buttons, StdCtrls, ce_widget, ce_tools;
ExtCtrls, Menus, Buttons, StdCtrls, ce_widget, ce_tools, ce_sharedres;
type
@ -46,28 +46,17 @@ implementation
{$R *.lfm}
constructor TCEToolsEditorWidget.create(aOwner: TComponent);
var
png: TPortableNetworkGraphic;
begin
inherited;
//
AssignPng(btnMoveUp, 'arrow_up');
AssignPng(btnMoveDown, 'arrow_down');
AssignPng(BtnAddTool, 'application_add');
AssignPng(btnRemTool, 'application_delete');
AssignPng(btnRun, 'application_flash');
AssignPng(btnClone, 'application_double');
//
propsEd.CheckboxForBoolean := true;
png := TPortableNetworkGraphic.Create;
try
png.LoadFromLazarusResource('arrow_up');
btnMoveUp.Glyph.Assign(png);
png.LoadFromLazarusResource('arrow_down');
btnMoveDown.Glyph.Assign(png);
png.LoadFromLazarusResource('application_add');
BtnAddTool.Glyph.Assign(png);
png.LoadFromLazarusResource('application_delete');
btnRemTool.Glyph.Assign(png);
png.LoadFromLazarusResource('application_flash');
btnRun.Glyph.Assign(png);
png.LoadFromLazarusResource('application_double');
btnClone.Glyph.Assign(png);
finally
png.free;
end;
rebuildToolList;
end;