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