IDE: mode matrix: show package macros

git-svn-id: trunk@41299 -
This commit is contained in:
mattias 2013-05-19 15:40:07 +00:00
parent 7ad5db263c
commit f5d0737bb5
2 changed files with 51 additions and 3 deletions

View File

@ -88,6 +88,7 @@ object CompOptModeMatrix: TCompOptModeMatrix
end
end
object BMMNewPopupMenu: TPopupMenu
OnPopup = BMMNewPopupMenuPopup
left = 232
top = 93
object BMMNewOptionMenuItem: TMenuItem

View File

@ -35,9 +35,9 @@ interface
uses
Classes, SysUtils, types, LazFileUtils, LazLogger, KeywordFuncLists,
IDEOptionsIntf, IDEImagesIntf, LResources, Forms, Controls, Graphics,
ComCtrls, Menus, ModeMatrixCtrl, EnvironmentOpts, ModeMatrixOpts, Project,
LazarusIDEStrConsts, TransferMacros;
IDEOptionsIntf, IDEImagesIntf, CompOptsIntf, LResources, Forms, Controls,
Graphics, ComCtrls, Menus, ModeMatrixCtrl, EnvironmentOpts, ModeMatrixOpts,
Project, LazarusIDEStrConsts, TransferMacros, PackageSystem, PackageDefs;
type
@ -60,6 +60,7 @@ type
procedure BMMDeleteToolButtonClick(Sender: TObject);
procedure BMMMoveDownToolButtonClick(Sender: TObject);
procedure BMMMoveUpToolButtonClick(Sender: TObject);
procedure BMMNewPopupMenuPopup(Sender: TObject);
procedure BMMRedoToolButtonClick(Sender: TObject);
procedure BMMUndoToolButtonClick(Sender: TObject);
procedure BMMNewOptionMenuItemClick(Sender: TObject);
@ -535,6 +536,52 @@ begin
MoveRow(-1);
end;
procedure TCompOptModeMatrix.BMMNewPopupMenuPopup(Sender: TObject);
var
i: Integer;
Pkg: TLazPackage;
Macros: TLazBuildMacros;
j: Integer;
Macro: TLazBuildMacro;
List: TStringList;
MenuIndex: Integer;
MacroMenuItem: TMenuItem;
ValueMenuItem: TMenuItem;
begin
List:=TStringList.Create;
try
for i:=0 to PackageGraph.Count-1 do begin
Pkg:=PackageGraph[i];
Macros:=Pkg.CompilerOptions.BuildMacros;
for j:=0 to Macros.Count-1 do begin
Macro:=Macros[j];
if not IsValidIdent(Macro.Identifier) then continue;
List.AddObject(Macro.Identifier,Macro);
end;
end;
List.Sort;
MenuIndex:=2;
for i:=0 to List.Count-1 do begin
Macro:=TLazBuildMacro(List.Objects[i]);
if BMMNewPopupMenu.Items.Count=MenuIndex then
BMMNewPopupMenu.Items.Add(TMenuItem.Create(Self));
MacroMenuItem:=BMMNewPopupMenu.Items[MenuIndex];
MacroMenuItem.Caption:='Set "'+Macro.Identifier+'"';
if Macro.Values<>nil then begin
for j:=0 to Macro.Values.Count-1 do begin
if j=MacroMenuItem.Count then
MacroMenuItem.Add(TMenuItem.Create(Self));
ValueMenuItem:=MacroMenuItem.Items[j];
ValueMenuItem.Caption:='Value "'+Macro.Values[j]+'"';
end;
end;
inc(MenuIndex);
end;
finally
List.Free;
end;
end;
procedure TCompOptModeMatrix.BMMMoveDownToolButtonClick(Sender: TObject);
begin
MoveRow(1);