mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-25 19:08:16 +02:00
IDE: Use the cache when writing component palette configuration.
git-svn-id: trunk@47001 -
This commit is contained in:
parent
4ccb281acd
commit
8b4eac20a9
@ -199,7 +199,6 @@ type
|
|||||||
fComps: TRegisteredComponentList;
|
fComps: TRegisteredComponentList;
|
||||||
// New pages added and their priorities, ordered by priority.
|
// New pages added and their priorities, ordered by priority.
|
||||||
fOrigPagePriorities: TPagePriorityList;
|
fOrigPagePriorities: TPagePriorityList;
|
||||||
procedure AssignCompsForPage(DestComps: TStringList; PageName: string); virtual; abstract;
|
|
||||||
procedure DoChange; virtual;
|
procedure DoChange; virtual;
|
||||||
procedure DoBeginUpdate; virtual;
|
procedure DoBeginUpdate; virtual;
|
||||||
procedure DoEndUpdate(Changed: boolean); virtual;
|
procedure DoEndUpdate(Changed: boolean); virtual;
|
||||||
@ -218,6 +217,8 @@ type
|
|||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
|
procedure AssignCompsForPage(DestComps: TStringList; PageName: string); virtual; abstract;
|
||||||
|
function RefCompsForPage(PageName: string): TStringList; virtual; abstract;
|
||||||
procedure BeginUpdate(Change: boolean);
|
procedure BeginUpdate(Change: boolean);
|
||||||
procedure EndUpdate;
|
procedure EndUpdate;
|
||||||
function IsUpdateLocked: boolean;
|
function IsUpdateLocked: boolean;
|
||||||
|
@ -116,6 +116,7 @@ type
|
|||||||
procedure UnselectAllButtons;
|
procedure UnselectAllButtons;
|
||||||
protected
|
protected
|
||||||
procedure AssignCompsForPage(DestComps: TStringList; PageName: string); override;
|
procedure AssignCompsForPage(DestComps: TStringList; PageName: string); override;
|
||||||
|
function RefCompsForPage(PageName: string): TStringList; override;
|
||||||
procedure DoBeginUpdate; override;
|
procedure DoBeginUpdate; override;
|
||||||
procedure DoEndUpdate(Changed: boolean); override;
|
procedure DoEndUpdate(Changed: boolean); override;
|
||||||
procedure OnPageAddedComponent(Component: TRegisteredComponent); override;
|
procedure OnPageAddedComponent(Component: TRegisteredComponent); override;
|
||||||
@ -584,6 +585,16 @@ begin
|
|||||||
raise Exception.Create(Format('AssignCompsFromCache: %s not found in cache.', [PageName]));
|
raise Exception.Create(Format('AssignCompsFromCache: %s not found in cache.', [PageName]));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TComponentPalette.RefCompsForPage(PageName: string): TStringList;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if fComponentPageCache.Find(PageName, i) then
|
||||||
|
Result := fComponentPageCache.Objects[i] as TStringList
|
||||||
|
else
|
||||||
|
Result := Nil;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TComponentPalette.Update;
|
procedure TComponentPalette.Update;
|
||||||
begin
|
begin
|
||||||
inherited Update;
|
inherited Update;
|
||||||
|
@ -211,36 +211,27 @@ procedure TCompPaletteOptionsFrame.WriteComponents(cpo: TCompPaletteOptions);
|
|||||||
var
|
var
|
||||||
UserComps, OrigComps: TStringList;
|
UserComps, OrigComps: TStringList;
|
||||||
Pg: TBaseComponentPage;
|
Pg: TBaseComponentPage;
|
||||||
Comp: TRegisteredComponent;
|
|
||||||
i, CompCnt: Integer;
|
|
||||||
PgName: String;
|
PgName: String;
|
||||||
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
OrigComps := TStringList.Create;
|
cpo.ClearComponentPages;
|
||||||
try
|
for i := 1 to PagesListBox.Count-1 do // Skip all components page
|
||||||
cpo.ClearComponentPages;
|
begin
|
||||||
for i := 1 to PagesListBox.Count-1 do // Skip all components page
|
PgName := PagesListBox.Items[i];
|
||||||
|
UserComps := PagesListBox.Items.Objects[i] as TStringList;
|
||||||
|
Assert(Assigned(UserComps), 'TCompPaletteOptionsFrame.WriteComponents: UserComps not assigned');
|
||||||
|
Pg := IDEComponentPalette.GetPage(PgName);
|
||||||
|
if Assigned(Pg) then // Can be Nil if this page was added or renamed.
|
||||||
begin
|
begin
|
||||||
PgName := PagesListBox.Items[i];
|
// Collect original components from this page
|
||||||
UserComps := PagesListBox.Items.Objects[i] as TStringList;
|
OrigComps := IDEComponentPalette.RefCompsForPage(PgName);
|
||||||
Assert(Assigned(UserComps), 'TCompPaletteOptionsFrame.WriteComponents: UserComps not assigned');
|
Assert(Assigned(OrigComps), 'TCompPaletteOptionsFrame.WriteComponents: OrigComps not assigned');
|
||||||
OrigComps.Clear;
|
end
|
||||||
Pg := IDEComponentPalette.GetPage(PgName);
|
else
|
||||||
if Assigned(Pg) then // Can be Nil if this page was added or renamed.
|
OrigComps := Nil;
|
||||||
begin
|
// Differs from original order -> add configuration for components
|
||||||
// Collect original components from this page
|
if (OrigComps=Nil) or not OrigComps.Equals(UserComps) then
|
||||||
for CompCnt := 0 to IDEComponentPalette.Comps.Count-1 do
|
cpo.AssignComponentPage(PgName, UserComps);
|
||||||
begin
|
|
||||||
Comp := IDEComponentPalette.Comps[CompCnt];
|
|
||||||
if Comp.OrigPageName = PgName then
|
|
||||||
OrigComps.Add(Comp.ComponentClass.ClassName);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
// Differs from original order -> add configuration for components
|
|
||||||
if not OrigComps.Equals(UserComps) then
|
|
||||||
cpo.AssignComponentPage(PgName, UserComps);
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
OrigComps.Free;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user