mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-14 00:19:50 +02:00
IDE: Fix loading user configuration for component palette.
git-svn-id: trunk@46843 -
This commit is contained in:
parent
908e26c65b
commit
ffa4d82af8
@ -165,6 +165,11 @@ type
|
||||
private
|
||||
FPages: TList; // list of TBaseComponentPage
|
||||
FComps: TList; // list of all TRegisteredComponent in all pages
|
||||
// New pages added and their priorities, ordered by priority.
|
||||
fOrigPagePriorities: TPagePriorityList;
|
||||
// Pages ordered by user. Contains page name + another StringList
|
||||
// for component names, just like TCompPaletteOptions.ComponentPages.
|
||||
fPagesUserOrder: TStringList;
|
||||
FHandlers: array[TComponentPaletteHandlerType] of TMethodList;
|
||||
FBaseComponentPageClass: TBaseComponentPageClass;
|
||||
FRegisteredComponentClass: TRegisteredComponentClass;
|
||||
@ -181,11 +186,6 @@ type
|
||||
const AMethod: TMethod);
|
||||
procedure SetHideControls(const AValue: boolean);
|
||||
protected
|
||||
// New pages added and their priorities, ordered by priority.
|
||||
fOrigPagePriorities: TPagePriorityList;
|
||||
// Pages ordered by user. Contains page name + another StringList
|
||||
// for component names, just like TCompPaletteOptions.ComponentPages.
|
||||
fPagesUserOrder: TStringList;
|
||||
procedure DoChange; virtual;
|
||||
procedure DoBeginUpdate; virtual;
|
||||
procedure DoEndUpdate(Changed: boolean); virtual;
|
||||
@ -247,6 +247,7 @@ type
|
||||
property OnEndUpdate: TEndUpdatePaletteEvent read FOnEndUpdate write FOnEndUpdate;
|
||||
property HideControls: boolean read FHideControls write SetHideControls;
|
||||
property Selected: TRegisteredComponent read GetSelected write SetSelected;
|
||||
property OrigPagePriorities: TPagePriorityList read fOrigPagePriorities;
|
||||
property PagesUserOrder: TStringList read fPagesUserOrder;
|
||||
end;
|
||||
|
||||
|
@ -634,24 +634,24 @@ var
|
||||
PgName, CompName: String;
|
||||
begin
|
||||
Result := True;
|
||||
for i:=0 to fPagesUserOrder.Count-1 do
|
||||
fPagesUserOrder.Objects[i].Free; // Free also the contained StringList.
|
||||
fPagesUserOrder.Clear;
|
||||
for i:=0 to PagesUserOrder.Count-1 do
|
||||
PagesUserOrder.Objects[i].Free; // Free also the contained StringList.
|
||||
PagesUserOrder.Clear;
|
||||
with EnvironmentOptions do begin
|
||||
// First add user defined page order from EnvironmentOptions,
|
||||
fPagesUserOrder.Assign(ComponentPaletteOptions.PageNames);
|
||||
PagesUserOrder.Assign(ComponentPaletteOptions.PageNames);
|
||||
// then add other pages which don't have user configuration
|
||||
for DefPgInd := 0 to fOrigPagePriorities.Count-1 do
|
||||
for DefPgInd := 0 to OrigPagePriorities.Count-1 do
|
||||
begin
|
||||
PgName:=fOrigPagePriorities.Keys[DefPgInd];
|
||||
if (fPagesUserOrder.IndexOf(PgName) = -1)
|
||||
PgName:=OrigPagePriorities.Keys[DefPgInd];
|
||||
if (PagesUserOrder.IndexOf(PgName) = -1)
|
||||
and (ComponentPaletteOptions.HiddenPageNames.IndexOf(PgName) = -1) then
|
||||
fPagesUserOrder.Add(PgName);
|
||||
PagesUserOrder.Add(PgName);
|
||||
end;
|
||||
// Add pages and components for them
|
||||
for i := 0 to fPagesUserOrder.Count-1 do
|
||||
for i := 0 to PagesUserOrder.Count-1 do
|
||||
begin
|
||||
PgName := fPagesUserOrder[i];
|
||||
PgName := PagesUserOrder[i];
|
||||
DefPgInd := IndexOfPageWithName(PgName);
|
||||
if DefPgInd >= 0 then
|
||||
Pg:=Pages[DefPgInd]
|
||||
@ -659,7 +659,7 @@ begin
|
||||
Pg:=CreateNewPage(PgName, ComponentPriorityNormal);
|
||||
end;
|
||||
DstComps := TStringList.Create;
|
||||
fPagesUserOrder.Objects[i] := DstComps;
|
||||
PagesUserOrder.Objects[i] := DstComps;
|
||||
OptPgInd := ComponentPaletteOptions.ComponentPages.IndexOf(PgName);
|
||||
if OptPgInd >= 0 then
|
||||
begin
|
||||
@ -883,20 +883,20 @@ begin
|
||||
FPageControl.DisableAlign;
|
||||
try
|
||||
OldActivePage:=FPageControl.ActivePage;
|
||||
SortPagesAndCompsUserOrder; // Updates fPagesUserOrder
|
||||
SortPagesAndCompsUserOrder; // Updates PagesUserOrder
|
||||
// remove every page in the PageControl without a visible page
|
||||
for i:=FPageControl.PageCount-1 downto 0 do
|
||||
RemoveUnneededPage(FPageControl.Pages[i]);
|
||||
// insert a PageControl page for every visible palette page
|
||||
VisPageIndex := 0;
|
||||
for i := 0 to fPagesUserOrder.Count-1 do
|
||||
for i := 0 to PagesUserOrder.Count-1 do
|
||||
begin
|
||||
PgName := fPagesUserOrder[i];
|
||||
PgName := PagesUserOrder[i];
|
||||
PgInd := IndexOfPageName(PgName);
|
||||
if PgInd >= 0 then
|
||||
begin
|
||||
InsertVisiblePage(Pages[PgInd], VisPageIndex);
|
||||
CreateButtons(PgInd, fPagesUserOrder.Objects[i] as TStringList);
|
||||
CreateButtons(PgInd, PagesUserOrder.Objects[i] as TStringList);
|
||||
end;
|
||||
end;
|
||||
// restore active page
|
||||
|
@ -68,7 +68,6 @@ type
|
||||
procedure PagesListBoxSelectionChange(Sender: TObject; User: boolean);
|
||||
procedure RestoreButtonClick(Sender: TObject);
|
||||
private
|
||||
FLoaded: Boolean;
|
||||
procedure WritePages(cpo: TCompPaletteOptions);
|
||||
procedure WriteComponents(cpo: TCompPaletteOptions);
|
||||
procedure FillPages;
|
||||
@ -136,20 +135,15 @@ begin
|
||||
CompMoveUpBtn.Hint:=lisMoveSelectedUp;
|
||||
CompMoveDownBtn.Hint:=lisMoveSelectedDown;
|
||||
|
||||
FillPages;
|
||||
UpdateButtons;
|
||||
UpdatePageMoveButtons(PagesListBox.ItemIndex);
|
||||
UpdateCompMoveButtons(ComponentsListView.ItemIndex);
|
||||
FLoaded := False;
|
||||
end;
|
||||
|
||||
procedure TCompPaletteOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
||||
var
|
||||
cpo: TCompPaletteOptions;
|
||||
begin
|
||||
cpo:=(AOptions as TEnvironmentOptions).ComponentPaletteOptions;
|
||||
// --- ToDo ---
|
||||
FLoaded := True;
|
||||
// AOptions is not needed because data is already loaded to IDEComponentPalette.
|
||||
FillPages;
|
||||
end;
|
||||
|
||||
procedure TCompPaletteOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
||||
@ -174,9 +168,9 @@ begin
|
||||
UserPages := TStringList.Create;
|
||||
try
|
||||
// Collect original page names
|
||||
for i := 0 to IDEComponentPalette.PagesUserOrder.Count-1 do
|
||||
for i := 0 to IDEComponentPalette.OrigPagePriorities.Count-1 do
|
||||
begin
|
||||
PgName := IDEComponentPalette.PagesUserOrder[i];
|
||||
PgName := IDEComponentPalette.OrigPagePriorities.Keys[i];
|
||||
Pg := IDEComponentPalette.GetPage(PgName, True);
|
||||
Assert(Assigned(Pg), 'TCompPaletteOptionsFrame.WritePages: PageName "'+PgName+'" not found.');
|
||||
if (Pg<>nil) and Pg.Visible then
|
||||
@ -217,7 +211,7 @@ begin
|
||||
if Assigned(Pg) then // Can be Nil if this page was added or renamed.
|
||||
begin
|
||||
// Collect original components from this page
|
||||
for CompCnt := 0 to IDEComponentPalette.PageCount-1 do
|
||||
for CompCnt := 0 to IDEComponentPalette.CompCount-1 do
|
||||
begin
|
||||
Comp := IDEComponentPalette.Comps[CompCnt];
|
||||
if Comp.RealPage = Pg then
|
||||
@ -244,7 +238,7 @@ begin
|
||||
if Assigned(IDEComponentPalette) then
|
||||
begin
|
||||
PagesListBox.Clear;
|
||||
PagesListBox.AddItem(AllComponentsHeader, Nil);
|
||||
PagesListBox.Items.Add(AllComponentsHeader);
|
||||
for i := 0 to IDEComponentPalette.PagesUserOrder.Count-1 do
|
||||
begin
|
||||
PgName := IDEComponentPalette.PagesUserOrder[i];
|
||||
@ -324,8 +318,6 @@ procedure TCompPaletteOptionsFrame.PagesListBoxSelectionChange(Sender: TObject;
|
||||
var
|
||||
lb: TListBox;
|
||||
begin
|
||||
//if not (FLoaded and User) then
|
||||
// Exit;
|
||||
lb := Sender as TListBox;
|
||||
FillComponents(lb.Items[lb.ItemIndex]);
|
||||
UpdateButtons;
|
||||
@ -605,8 +597,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
///
|
||||
|
||||
procedure TCompPaletteOptionsFrame.UpdateButtons;
|
||||
begin
|
||||
RestoreButton.Visible := PagesListBox.ItemIndex = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user