mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 01:39:25 +02:00
IDE: Use truely original pages and comps as reference when saving palette configuration.
git-svn-id: trunk@47261 -
This commit is contained in:
parent
bd66a6083c
commit
9e3b5ca504
@ -210,10 +210,10 @@ type
|
|||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure Clear;
|
procedure Clear;
|
||||||
procedure AssignOrigCompsForPage(DestComps: TStringList;
|
function AssignOrigCompsForPage(PageName: string;
|
||||||
PageName: string); virtual; abstract;
|
DestComps: TStringList): Boolean; virtual; abstract;
|
||||||
procedure AssignOrigVisibleCompsForPage(DestComps: TStringList;
|
function AssignOrigVisibleCompsForPage(PageName: string;
|
||||||
PageName: string); virtual; abstract;
|
DestComps: TStringList): Boolean; virtual; abstract;
|
||||||
function RefUserCompsForPage(PageName: string): TStringList; virtual; abstract;
|
function RefUserCompsForPage(PageName: string): TStringList; virtual; abstract;
|
||||||
procedure BeginUpdate(Change: boolean);
|
procedure BeginUpdate(Change: boolean);
|
||||||
procedure EndUpdate;
|
procedure EndUpdate;
|
||||||
|
@ -177,8 +177,10 @@ type
|
|||||||
procedure RegisterCustomIDEComponents(
|
procedure RegisterCustomIDEComponents(
|
||||||
const RegisterProc: RegisterUnitComponentProc); override;
|
const RegisterProc: RegisterUnitComponentProc); override;
|
||||||
procedure Update(ForceUpdateAll: Boolean); override;
|
procedure Update(ForceUpdateAll: Boolean); override;
|
||||||
procedure AssignOrigCompsForPage(DestComps: TStringList; PageName: string); override;
|
function AssignOrigCompsForPage(PageName: string;
|
||||||
procedure AssignOrigVisibleCompsForPage(DestComps: TStringList; PageName: string); override;
|
DestComps: TStringList): Boolean; override;
|
||||||
|
function AssignOrigVisibleCompsForPage(PageName: string;
|
||||||
|
DestComps: TStringList): Boolean; override;
|
||||||
function RefUserCompsForPage(PageName: string): TStringList; override;
|
function RefUserCompsForPage(PageName: string): TStringList; override;
|
||||||
public
|
public
|
||||||
property PageControl: TPageControl read FPageControl write SetPageControl;
|
property PageControl: TPageControl read FPageControl write SetPageControl;
|
||||||
@ -286,7 +288,7 @@ begin
|
|||||||
if i >= 0 then // Add components reordered by user.
|
if i >= 0 then // Add components reordered by user.
|
||||||
DstComps.Assign(fOptions.ComponentPages.Objects[i] as TStringList)
|
DstComps.Assign(fOptions.ComponentPages.Objects[i] as TStringList)
|
||||||
else // Add components that were not reordered.
|
else // Add components that were not reordered.
|
||||||
fPalette.AssignOrigCompsForPage(DstComps, PgName);
|
fPalette.AssignOrigCompsForPage(PgName, DstComps);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -950,12 +952,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TComponentPalette.AssignOrigCompsForPage(DestComps: TStringList; PageName: string);
|
function TComponentPalette.AssignOrigCompsForPage(PageName: string;
|
||||||
|
DestComps: TStringList): Boolean;
|
||||||
|
// Returns True if the page was found.
|
||||||
var
|
var
|
||||||
sl: TStringList;
|
sl: TStringList;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
if fOrigComponentPageCache.Find(PageName, i) then begin
|
Result := fOrigComponentPageCache.Find(PageName, i);
|
||||||
|
if Result then begin
|
||||||
sl := fOrigComponentPageCache.Objects[i] as TStringList;
|
sl := fOrigComponentPageCache.Objects[i] as TStringList;
|
||||||
DestComps.Assign(sl);
|
DestComps.Assign(sl);
|
||||||
end
|
end
|
||||||
@ -964,20 +969,20 @@ begin
|
|||||||
//raise Exception.Create(Format('AssignOrigCompsForPage: %s not found in cache.', [PageName]));
|
//raise Exception.Create(Format('AssignOrigCompsForPage: %s not found in cache.', [PageName]));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TComponentPalette.AssignOrigVisibleCompsForPage(DestComps: TStringList;
|
function TComponentPalette.AssignOrigVisibleCompsForPage(PageName: string;
|
||||||
PageName: string);
|
DestComps: TStringList): Boolean;
|
||||||
|
// Returns True if the page was found.
|
||||||
var
|
var
|
||||||
sl: TStringList;
|
sl: TStringList;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
DestComps.Clear;
|
DestComps.Clear;
|
||||||
if fOrigComponentPageCache.Find(PageName, i) then
|
Result := fOrigComponentPageCache.Find(PageName, i);
|
||||||
begin
|
if not Result then Exit;
|
||||||
sl := fOrigComponentPageCache.Objects[i] as TStringList;
|
sl := fOrigComponentPageCache.Objects[i] as TStringList;
|
||||||
for i := 0 to sl.Count-1 do
|
for i := 0 to sl.Count-1 do
|
||||||
if FindComponent(sl[i]).Visible then
|
if FindComponent(sl[i]).Visible then
|
||||||
DestComps.Add(sl[i]);
|
DestComps.Add(sl[i]);
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TComponentPalette.RefUserCompsForPage(PageName: string): TStringList;
|
function TComponentPalette.RefUserCompsForPage(PageName: string): TStringList;
|
||||||
|
@ -216,9 +216,7 @@ end;
|
|||||||
procedure TCompPaletteOptionsFrame.WritePages(cpo: TCompPaletteOptions);
|
procedure TCompPaletteOptionsFrame.WritePages(cpo: TCompPaletteOptions);
|
||||||
var
|
var
|
||||||
OrigPages, UserPages: TStringList;
|
OrigPages, UserPages: TStringList;
|
||||||
Pg: TBaseComponentPage;
|
|
||||||
i: Integer;
|
i: Integer;
|
||||||
PgName: String;
|
|
||||||
begin
|
begin
|
||||||
Assert(Assigned(IDEComponentPalette),
|
Assert(Assigned(IDEComponentPalette),
|
||||||
'TCompPaletteOptionsFrame.WritePages: IDEComponentPalette is not assigned.');
|
'TCompPaletteOptionsFrame.WritePages: IDEComponentPalette is not assigned.');
|
||||||
@ -227,12 +225,7 @@ begin
|
|||||||
try
|
try
|
||||||
// Collect original page names
|
// Collect original page names
|
||||||
for i := 0 to IDEComponentPalette.OrigPagePriorities.Count-1 do
|
for i := 0 to IDEComponentPalette.OrigPagePriorities.Count-1 do
|
||||||
begin
|
OrigPages.Add(IDEComponentPalette.OrigPagePriorities.Keys[i]);
|
||||||
PgName := IDEComponentPalette.OrigPagePriorities.Keys[i];
|
|
||||||
Pg := IDEComponentPalette.GetPage(PgName);
|
|
||||||
if Assigned(Pg) and Pg.Visible then
|
|
||||||
OrigPages.Add(Pg.PageName);
|
|
||||||
end;
|
|
||||||
// Collect user defined page names
|
// Collect user defined page names
|
||||||
for i := 1 to PagesListBox.Items.Count-1 do // Skip "all components" page
|
for i := 1 to PagesListBox.Items.Count-1 do // Skip "all components" page
|
||||||
UserPages.Add(PagesListBox.Items[i]);
|
UserPages.Add(PagesListBox.Items[i]);
|
||||||
@ -250,7 +243,6 @@ end;
|
|||||||
procedure TCompPaletteOptionsFrame.WriteComponents(cpo: TCompPaletteOptions);
|
procedure TCompPaletteOptionsFrame.WriteComponents(cpo: TCompPaletteOptions);
|
||||||
var
|
var
|
||||||
UserComps, OrigComps: TStringList;
|
UserComps, OrigComps: TStringList;
|
||||||
Pg: TBaseComponentPage;
|
|
||||||
PgName: String;
|
PgName: String;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -262,12 +254,8 @@ begin
|
|||||||
PgName := PagesListBox.Items[i];
|
PgName := PagesListBox.Items[i];
|
||||||
UserComps := PagesListBox.Items.Objects[i] as TStringList;
|
UserComps := PagesListBox.Items.Objects[i] as TStringList;
|
||||||
Assert(Assigned(UserComps), 'TCompPaletteOptionsFrame.WriteComponents: No UserComps for '+PgName);
|
Assert(Assigned(UserComps), 'TCompPaletteOptionsFrame.WriteComponents: No UserComps for '+PgName);
|
||||||
Pg := IDEComponentPalette.GetPage(PgName);
|
// Collect original visible components from this page.
|
||||||
if Assigned(Pg) and Pg.Visible then // Can be Nil if this page was added or renamed.
|
IDEComponentPalette.AssignOrigVisibleCompsForPage(PgName, OrigComps);
|
||||||
// Collect original visible components from this page.
|
|
||||||
IDEComponentPalette.AssignOrigVisibleCompsForPage(OrigComps, PgName)
|
|
||||||
else
|
|
||||||
OrigComps.Clear;
|
|
||||||
// Differs from original order -> add configuration for components.
|
// Differs from original order -> add configuration for components.
|
||||||
if (OrigComps.Count=0) or not OrigComps.Equals(UserComps) then
|
if (OrigComps.Count=0) or not OrigComps.Equals(UserComps) then
|
||||||
cpo.AssignComponentPage(PgName, UserComps);
|
cpo.AssignComponentPage(PgName, UserComps);
|
||||||
|
Loading…
Reference in New Issue
Block a user