mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-25 18:01:30 +02:00
IDE: build macros: replaced popup menu with speed buttons
git-svn-id: trunk@27494 -
This commit is contained in:
parent
98f7850ffe
commit
22da3b4e6d
@ -18,14 +18,19 @@ inherited CompOptBuildMacrosFrame: TCompOptBuildMacrosFrame
|
||||
ClientWidth = 506
|
||||
TabOrder = 0
|
||||
object BuildMacrosTreeView: TTreeView
|
||||
AnchorSideLeft.Control = MacrosGroupBox
|
||||
AnchorSideTop.Control = BMAddMacroSpeedButton
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Splitter1
|
||||
AnchorSideBottom.Control = MacrosGroupBox
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 222
|
||||
Top = 0
|
||||
Height = 200
|
||||
Top = 22
|
||||
Width = 227
|
||||
Align = alLeft
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
BorderSpacing.Right = 6
|
||||
DefaultItemHeight = 19
|
||||
PopupMenu = BuildMacrosTVPopupMenu
|
||||
RightClickSelect = True
|
||||
TabOrder = 0
|
||||
OnEdited = BuildMacrosTreeViewEdited
|
||||
@ -34,17 +39,25 @@ inherited CompOptBuildMacrosFrame: TCompOptBuildMacrosFrame
|
||||
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips]
|
||||
end
|
||||
object Splitter1: TSplitter
|
||||
AnchorSideTop.Control = MacrosGroupBox
|
||||
AnchorSideBottom.Control = MacrosGroupBox
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 233
|
||||
Height = 222
|
||||
Top = 0
|
||||
Width = 5
|
||||
Align = alNone
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
end
|
||||
object BuildMacroSelectedGroupBox: TGroupBox
|
||||
AnchorSideLeft.Control = Splitter1
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
Left = 244
|
||||
Height = 222
|
||||
Top = 0
|
||||
Width = 262
|
||||
Align = alClient
|
||||
Align = alRight
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'BuildMacroSelectedGroupBox'
|
||||
ClientHeight = 201
|
||||
@ -52,14 +65,16 @@ inherited CompOptBuildMacrosFrame: TCompOptBuildMacrosFrame
|
||||
TabOrder = 2
|
||||
object BuildMacroDefaultLabel: TLabel
|
||||
Left = 6
|
||||
Height = 18
|
||||
Height = 123
|
||||
Top = 72
|
||||
Width = 242
|
||||
Align = alTop
|
||||
Align = alClient
|
||||
AutoSize = False
|
||||
BorderSpacing.Top = 15
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'BuildMacroDefaultLabel'
|
||||
ParentColor = False
|
||||
WordWrap = True
|
||||
end
|
||||
object BuildMacroDescriptionLabel: TLabel
|
||||
Left = 6
|
||||
@ -85,6 +100,49 @@ inherited CompOptBuildMacrosFrame: TCompOptBuildMacrosFrame
|
||||
Text = 'BuildMacroDescriptionEdit'
|
||||
end
|
||||
end
|
||||
object BMAddMacroSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = MacrosGroupBox
|
||||
AnchorSideTop.Control = MacrosGroupBox
|
||||
Left = 0
|
||||
Height = 22
|
||||
Top = 0
|
||||
Width = 23
|
||||
Color = clBtnFace
|
||||
NumGlyphs = 0
|
||||
OnClick = BMAddMacroSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object BMAddMacroValueSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = BMAddMacroSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = MacrosGroupBox
|
||||
Left = 29
|
||||
Height = 22
|
||||
Top = 0
|
||||
Width = 23
|
||||
BorderSpacing.Left = 6
|
||||
Color = clBtnFace
|
||||
NumGlyphs = 0
|
||||
OnClick = BMAddMacroValueSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object BMDeleteSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = BMAddMacroValueSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = MacrosGroupBox
|
||||
Left = 58
|
||||
Height = 22
|
||||
Top = 0
|
||||
Width = 23
|
||||
BorderSpacing.Left = 6
|
||||
Color = clBtnFace
|
||||
NumGlyphs = 0
|
||||
OnClick = BMDeleteSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
end
|
||||
object MacrosSplitter: TSplitter[1]
|
||||
Cursor = crVSplit
|
||||
@ -843,9 +901,4 @@ inherited CompOptBuildMacrosFrame: TCompOptBuildMacrosFrame
|
||||
SimplePanel = False
|
||||
end
|
||||
end
|
||||
object BuildMacrosTVPopupMenu: TPopupMenu[3]
|
||||
OnPopup = BuildMacrosTVPopupMenuPopup
|
||||
left = 99
|
||||
top = 77
|
||||
end
|
||||
end
|
||||
|
@ -52,10 +52,12 @@ type
|
||||
{ TCompOptBuildMacrosFrame }
|
||||
|
||||
TCompOptBuildMacrosFrame = class(TAbstractIDEOptionsEditor)
|
||||
BMAddMacroSpeedButton: TSpeedButton;
|
||||
BMAddMacroValueSpeedButton: TSpeedButton;
|
||||
BMDeleteSpeedButton: TSpeedButton;
|
||||
BuildMacroDescriptionEdit: TEdit;
|
||||
BuildMacroSelectedGroupBox: TGroupBox;
|
||||
BuildMacrosTreeView: TTreeView;
|
||||
BuildMacrosTVPopupMenu: TPopupMenu;
|
||||
BuildMacroDefaultLabel: TLabel;
|
||||
BuildMacroDescriptionLabel: TLabel;
|
||||
ConditionalsGroupBox: TGroupBox;
|
||||
@ -64,19 +66,17 @@ type
|
||||
MacrosGroupBox: TGroupBox;
|
||||
MacrosSplitter: TSplitter;
|
||||
Splitter1: TSplitter;
|
||||
procedure BMAddMacroSpeedButtonClick(Sender: TObject);
|
||||
procedure BMAddMacroValueSpeedButtonClick(Sender: TObject);
|
||||
procedure BMDeleteSpeedButtonClick(Sender: TObject);
|
||||
procedure BuildMacrosTreeViewEdited(Sender: TObject; Node: TTreeNode;
|
||||
var S: string);
|
||||
procedure BuildMacrosTreeViewEditing(Sender: TObject; Node: TTreeNode;
|
||||
var AllowEdit: Boolean);
|
||||
procedure BuildMacrosTreeViewSelectionChanged(Sender: TObject);
|
||||
procedure BuildMacrosTVPopupMenuPopup(Sender: TObject);
|
||||
procedure CondSynEditChange(Sender: TObject);
|
||||
procedure CondSynEditStatusChange(Sender: TObject;
|
||||
Changes: TSynStatusChanges);
|
||||
procedure DeleteBuildMacroClick(Sender: TObject);
|
||||
procedure NewBuildMacroClick(Sender: TObject);
|
||||
procedure NewValueClick(Sender: TObject);
|
||||
procedure DeleteValueClick(Sender: TObject);
|
||||
procedure OnIdle(Sender: TObject; var Done: Boolean);
|
||||
private
|
||||
FHighlighter: TIDESynFreePasSyn;
|
||||
@ -123,136 +123,12 @@ implementation
|
||||
|
||||
{ TCompOptBuildMacrosFrame }
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.NewBuildMacroClick(Sender: TObject);
|
||||
var
|
||||
NewIdentifier: String;
|
||||
NewBuildMacro: TLazBuildMacro;
|
||||
i: Integer;
|
||||
TVNode: TTreeNode;
|
||||
begin
|
||||
i:=1;
|
||||
repeat
|
||||
NewIdentifier:=GetMacroNamePrefix(cbmpLong)+IntToStr(BuildMacros.Count+1);
|
||||
if BuildMacros.IndexOfIdentifier(NewIdentifier)<0 then break;
|
||||
inc(i);
|
||||
until false;
|
||||
NewBuildMacro:=BuildMacros.Add(NewIdentifier);
|
||||
// add to TreeView
|
||||
BuildMacrosTreeView.BeginUpdate;
|
||||
TVNode:=TreeViewAddBuildMacro(NewBuildMacro);
|
||||
BuildMacrosTreeView.Selected:=TVNode;
|
||||
BuildMacrosTreeView.EndUpdate;
|
||||
UpdateItemPropertyControls;
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.NewValueClick(Sender: TObject);
|
||||
var
|
||||
BuildMacro: TLazBuildMacro;
|
||||
NodeType: TCBMNodeType;
|
||||
i: Integer;
|
||||
NewValueStr: String;
|
||||
ValuesTVNode: TTreeNode;
|
||||
begin
|
||||
GetSelectedNode(BuildMacro,NodeType);
|
||||
if BuildMacro=nil then exit;
|
||||
i:=1;
|
||||
repeat
|
||||
NewValueStr:=Format(lisValue2, [IntToStr(i)]);
|
||||
if BuildMacro.Values.IndexOf(NewValueStr)<0 then break;
|
||||
inc(i);
|
||||
until false;
|
||||
BuildMacro.Values.Add(NewValueStr);
|
||||
BuildMacrosTreeView.BeginUpdate;
|
||||
ValuesTVNode:=GetBuildMacroTVNode(BuildMacro);
|
||||
TreeViewAddValue(ValuesTVNode,NewValueStr);
|
||||
ValuesTVNode.Expand(true);
|
||||
BuildMacrosTreeView.EndUpdate;
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.DeleteValueClick(Sender: TObject);
|
||||
var
|
||||
BuildProperty: TLazBuildMacro;
|
||||
NodeType: TCBMNodeType;
|
||||
SelTVNode: TTreeNode;
|
||||
aValue: String;
|
||||
i: LongInt;
|
||||
begin
|
||||
SelTVNode:=GetSelectedNode(BuildProperty,NodeType);
|
||||
if NodeType<>cbmntValue then exit;
|
||||
aValue:=SelTVNode.Text;
|
||||
if MessageDlg(lisConfirmDelete,
|
||||
Format(lisDeleteValue, ['"', aValue, '"']),
|
||||
mtConfirmation,[mbYes,mbCancel],0)<>mrYes
|
||||
then exit;
|
||||
i:=BuildProperty.Values.IndexOf(aValue);
|
||||
if i>=0 then BuildProperty.Values.Delete(i);
|
||||
BuildMacrosTreeView.BeginUpdate;
|
||||
SelTVNode.Delete;
|
||||
BuildMacrosTreeView.EndUpdate;
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.OnIdle(Sender: TObject; var Done: Boolean);
|
||||
begin
|
||||
IdleConnected:=false;
|
||||
UpdateMessages;
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.DeleteBuildMacroClick(Sender: TObject);
|
||||
var
|
||||
aBuildMacro: TIDEBuildMacro;
|
||||
SelTVNode: TTreeNode;
|
||||
NodeType: TCBMNodeType;
|
||||
i: LongInt;
|
||||
begin
|
||||
SelTVNode:=GetSelectedNode(TLazBuildMacro(aBuildMacro),NodeType);
|
||||
if aBuildMacro=nil then exit;
|
||||
if MessageDlg(lisConfirmDelete,
|
||||
Format(lisDeleteBuildMacro, ['"', aBuildMacro.Identifier, '"']),
|
||||
mtConfirmation,[mbYes,mbCancel],0)<>mrYes
|
||||
then exit;
|
||||
i:=BuildMacros.IndexOfIdentifier(aBuildMacro.Identifier);
|
||||
BuildMacros.Delete(i);
|
||||
BuildMacrosTreeView.BeginUpdate;
|
||||
SelTVNode.Delete;
|
||||
BuildMacrosTreeView.EndUpdate;
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.BuildMacrosTVPopupMenuPopup(Sender: TObject);
|
||||
var
|
||||
aBuildMacro: TLazBuildMacro;
|
||||
NodeType: TCBMNodeType;
|
||||
|
||||
function Add(const aCaption: string; const OnClickEvent: TNotifyEvent): TMenuItem;
|
||||
begin
|
||||
Result:=TMenuItem.Create(Self);
|
||||
Result.Caption:=aCaption;
|
||||
Result.OnClick:=OnClickEvent;
|
||||
BuildMacrosTVPopupMenu.Items.Add(Result);
|
||||
end;
|
||||
|
||||
function AddSeparator: TMenuItem;
|
||||
begin
|
||||
Result:=nil;
|
||||
if BuildMacrosTVPopupMenu.Items.Count=0 then exit;
|
||||
Result:=TMenuItem.Create(Self);
|
||||
Result.Caption:='-';
|
||||
BuildMacrosTVPopupMenu.Items.Add(Result);
|
||||
end;
|
||||
|
||||
begin
|
||||
BuildMacrosTVPopupMenu.Items.Clear;
|
||||
GetSelectedNode(aBuildMacro,NodeType);
|
||||
|
||||
if NodeType in [cbmntBuildMacro,cbmntValue] then
|
||||
Add('New value',@NewValueClick);
|
||||
if NodeType in [cbmntValue] then
|
||||
Add('Delete value ...',@DeleteValueClick);
|
||||
AddSeparator;
|
||||
Add('New build macro',@NewBuildMacroClick);
|
||||
if NodeType in [cbmntBuildMacro] then
|
||||
Add('Delete build macro ...',@DeleteBuildMacroClick);
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.CondSynEditChange(Sender: TObject);
|
||||
begin
|
||||
UpdateStatusBar;
|
||||
@ -396,6 +272,85 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.BMAddMacroSpeedButtonClick(Sender: TObject);
|
||||
var
|
||||
NewIdentifier: String;
|
||||
NewBuildMacro: TLazBuildMacro;
|
||||
i: Integer;
|
||||
TVNode: TTreeNode;
|
||||
begin
|
||||
i:=1;
|
||||
repeat
|
||||
NewIdentifier:=GetMacroNamePrefix(cbmpLong)+IntToStr(BuildMacros.Count+1);
|
||||
if BuildMacros.IndexOfIdentifier(NewIdentifier)<0 then break;
|
||||
inc(i);
|
||||
until false;
|
||||
NewBuildMacro:=BuildMacros.Add(NewIdentifier);
|
||||
// add to TreeView
|
||||
BuildMacrosTreeView.BeginUpdate;
|
||||
TVNode:=TreeViewAddBuildMacro(NewBuildMacro);
|
||||
BuildMacrosTreeView.Selected:=TVNode;
|
||||
BuildMacrosTreeView.EndUpdate;
|
||||
UpdateItemPropertyControls;
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.BMAddMacroValueSpeedButtonClick(
|
||||
Sender: TObject);
|
||||
var
|
||||
BuildMacro: TLazBuildMacro;
|
||||
NodeType: TCBMNodeType;
|
||||
i: Integer;
|
||||
NewValueStr: String;
|
||||
ValuesTVNode: TTreeNode;
|
||||
begin
|
||||
GetSelectedNode(BuildMacro,NodeType);
|
||||
if BuildMacro=nil then exit;
|
||||
i:=1;
|
||||
repeat
|
||||
NewValueStr:=Format(lisValue2, [IntToStr(i)]);
|
||||
if BuildMacro.Values.IndexOf(NewValueStr)<0 then break;
|
||||
inc(i);
|
||||
until false;
|
||||
BuildMacro.Values.Add(NewValueStr);
|
||||
BuildMacrosTreeView.BeginUpdate;
|
||||
ValuesTVNode:=GetBuildMacroTVNode(BuildMacro);
|
||||
TreeViewAddValue(ValuesTVNode,NewValueStr);
|
||||
ValuesTVNode.Expand(true);
|
||||
BuildMacrosTreeView.EndUpdate;
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.BMDeleteSpeedButtonClick(Sender: TObject);
|
||||
var
|
||||
aBuildMacro: TIDEBuildMacro;
|
||||
SelTVNode: TTreeNode;
|
||||
NodeType: TCBMNodeType;
|
||||
i: LongInt;
|
||||
aValue: String;
|
||||
begin
|
||||
SelTVNode:=GetSelectedNode(TLazBuildMacro(aBuildMacro),NodeType);
|
||||
if aBuildMacro=nil then exit;
|
||||
if NodeType=cbmntValue then
|
||||
begin
|
||||
aValue:=SelTVNode.Text;
|
||||
if MessageDlg(lisConfirmDelete,
|
||||
Format(lisDeleteValue, ['"', aValue, '"']),
|
||||
mtConfirmation,[mbYes,mbCancel],0)<>mrYes
|
||||
then exit;
|
||||
i:=aBuildMacro.Values.IndexOf(aValue);
|
||||
if i>=0 then aBuildMacro.Values.Delete(i);
|
||||
end else begin
|
||||
if MessageDlg(lisConfirmDelete,
|
||||
Format(lisDeleteBuildMacro, ['"', aBuildMacro.Identifier, '"']),
|
||||
mtConfirmation,[mbYes,mbCancel],0)<>mrYes
|
||||
then exit;
|
||||
i:=BuildMacros.IndexOfIdentifier(aBuildMacro.Identifier);
|
||||
BuildMacros.Delete(i);
|
||||
end;
|
||||
BuildMacrosTreeView.BeginUpdate;
|
||||
SelTVNode.Delete;
|
||||
BuildMacrosTreeView.EndUpdate;
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.SetBuildMacros(
|
||||
const AValue: TIDEBuildMacros);
|
||||
begin
|
||||
@ -539,12 +494,19 @@ begin
|
||||
BuildMacroSelectedGroupBox.Enabled:=true;
|
||||
BuildMacroDescriptionEdit.Enabled:=true;
|
||||
BuildMacroDescriptionEdit.Text:=aBuildMacro.Description;
|
||||
BMAddMacroValueSpeedButton.Hint:='Add value to macro '+aBuildMacro.Identifier;
|
||||
BMDeleteSpeedButton.Hint:='Delete macro '+aBuildMacro.Identifier;
|
||||
end else begin
|
||||
BuildMacroSelectedGroupBox.Caption:='No macro selected';
|
||||
BuildMacroSelectedGroupBox.Enabled:=false;
|
||||
BuildMacroDescriptionEdit.Enabled:=false;
|
||||
BuildMacroDescriptionEdit.Text:='';
|
||||
BMAddMacroValueSpeedButton.Hint:='';
|
||||
BMDeleteSpeedButton.Hint:='';
|
||||
end;
|
||||
BMAddMacroSpeedButton.Hint:='Add new macro';
|
||||
BMAddMacroValueSpeedButton.Enabled:=NodeType=cbmntBuildMacro;
|
||||
BMDeleteSpeedButton.Enabled:=NodeType in [cbmntBuildMacro,cbmntValue];
|
||||
end;
|
||||
|
||||
procedure TCompOptBuildMacrosFrame.UpdateMessages;
|
||||
@ -624,7 +586,9 @@ end;
|
||||
procedure TCompOptBuildMacrosFrame.Setup(ADialog: TAbstractOptionsEditorDialog
|
||||
);
|
||||
begin
|
||||
|
||||
BMAddMacroSpeedButton.LoadGlyphFromLazarusResource('laz_add');
|
||||
BMAddMacroValueSpeedButton.LoadGlyphFromLazarusResource('laz_add');
|
||||
BMDeleteSpeedButton.LoadGlyphFromLazarusResource('laz_delete');
|
||||
end;
|
||||
|
||||
class function TCompOptBuildMacrosFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
||||
|
Loading…
Reference in New Issue
Block a user