diff --git a/docs/widgets_custom_tools.md b/docs/widgets_custom_tools.md
index 74adf6ff..c8b34943 100644
--- a/docs/widgets_custom_tools.md
+++ b/docs/widgets_custom_tools.md
@@ -22,6 +22,7 @@ A few examples:
Toolbar:
+-
: Enables or disables edition.
-
: Adds a new tool.
-
: Removes selected tool.
-
**/**
: Changes the position of the selected tool.
diff --git a/src/ce_tools.pas b/src/ce_tools.pas
index 046b15f9..99da33ce 100644
--- a/src/ce_tools.pas
+++ b/src/ce_tools.pas
@@ -69,6 +69,7 @@ type
fShctCount: Integer;
fDoc: TCESynMemo;
fMenu: TMenuItem;
+ fReadOnly: boolean;
function getTool(index: Integer): TCEToolItem;
procedure setTools(value: TCEToolItems);
//
@@ -85,6 +86,7 @@ type
procedure scedSendDone;
published
property tools: TCEToolItems read fTools write setTools;
+ property readOnly: boolean read fReadOnly write fReadOnly;
public
constructor create(aOwner: TComponent); override;
destructor destroy; override;
diff --git a/src/ce_toolseditor.lfm b/src/ce_toolseditor.lfm
index 4d926bef..4d954d10 100644
--- a/src/ce_toolseditor.lfm
+++ b/src/ce_toolseditor.lfm
@@ -68,7 +68,7 @@ inherited CEToolsEditorWidget: TCEToolsEditorWidget
inherited toolbar: TCEToolBar
Width = 433
object btnRun: TCEToolButton[0]
- Left = 157
+ Left = 185
Hint = 'execute selected tool'
Top = 0
Caption = 'btnRun'
@@ -77,7 +77,7 @@ inherited CEToolsEditorWidget: TCEToolsEditorWidget
scaledSeparator = False
end
object button1: TCEToolButton[1]
- Left = 141
+ Left = 169
Height = 28
Top = 0
Width = 16
@@ -86,7 +86,7 @@ inherited CEToolsEditorWidget: TCEToolsEditorWidget
scaledSeparator = False
end
object btnClone: TCEToolButton[2]
- Left = 113
+ Left = 141
Hint = 'clone selected tool'
Top = 0
Caption = 'btnClone'
@@ -95,7 +95,7 @@ inherited CEToolsEditorWidget: TCEToolsEditorWidget
scaledSeparator = False
end
object btnMoveUp: TCEToolButton[3]
- Left = 85
+ Left = 113
Hint = 'move selected tool up'
Top = 0
Caption = 'btnMoveUp'
@@ -104,7 +104,7 @@ inherited CEToolsEditorWidget: TCEToolsEditorWidget
scaledSeparator = False
end
object btnMoveDown: TCEToolButton[4]
- Left = 57
+ Left = 85
Hint = 'move selected tool down'
Top = 0
Caption = 'btnMoveDown'
@@ -113,7 +113,7 @@ inherited CEToolsEditorWidget: TCEToolsEditorWidget
scaledSeparator = False
end
object btnRemTool: TCEToolButton[5]
- Left = 29
+ Left = 57
Hint = 'remove selected tool'
Top = 0
Caption = 'btnRemTool'
@@ -122,7 +122,7 @@ inherited CEToolsEditorWidget: TCEToolsEditorWidget
scaledSeparator = False
end
object btnAddTool: TCEToolButton[6]
- Left = 1
+ Left = 29
Hint = 'add a new empty tool'
Top = 0
Caption = 'btnAddTool'
@@ -130,6 +130,15 @@ inherited CEToolsEditorWidget: TCEToolsEditorWidget
resourceName = 'APPLICATION_ADD'
scaledSeparator = False
end
+ object btnEdit: TCEToolButton[7]
+ Left = 1
+ Hint = 'enable or disable edition'
+ Top = 0
+ Caption = 'btnEdit'
+ OnClick = btnEditClick
+ resourceName = 'APPLICATION_EDIT'
+ scaledSeparator = False
+ end
end
end
inherited contextMenu: TPopupMenu
diff --git a/src/ce_toolseditor.pas b/src/ce_toolseditor.pas
index b39f941e..b2e7d5eb 100644
--- a/src/ce_toolseditor.pas
+++ b/src/ce_toolseditor.pas
@@ -15,6 +15,7 @@ type
TCEToolsEditorWidget = class(TCEWidget)
btnAddTool: TCEToolButton;
btnClone: TCEToolButton;
+ btnEdit: TCEToolButton;
btnMoveDown: TCEToolButton;
btnMoveUp: TCEToolButton;
btnRemTool: TCEToolButton;
@@ -25,6 +26,7 @@ type
propsEd: TTIPropertyGrid;
procedure BtnAddToolClick(Sender: TObject);
procedure btnCloneClick(Sender: TObject);
+ procedure btnEditClick(Sender: TObject);
procedure btnRemToolClick(Sender: TObject);
procedure btnMoveUpClick(Sender: TObject);
procedure btnMoveDownClick(Sender: TObject);
@@ -33,6 +35,7 @@ type
procedure lstToolsSelectionChange(Sender: TObject; User: boolean);
procedure propsEdModified(Sender: TObject);
private
+ procedure setReadOnly(value: boolean);
procedure executeSelectedTool;
procedure clearInspector;
procedure rebuildToolList;
@@ -50,6 +53,7 @@ begin
propsEd.CheckboxForBoolean := true;
propsEd.PropertyEditorHook.AddHandlerModified(@propsEdModified);
rebuildToolList;
+ setReadOnly(CustomTools.readOnly);
end;
procedure TCEToolsEditorWidget.clearInspector;
@@ -118,6 +122,29 @@ begin
rebuildToolList;
end;
+procedure TCEToolsEditorWidget.setReadOnly(value: boolean);
+begin
+ if value then
+ begin
+ CustomTools.readOnly:= true;
+ lstTools.Align:= alClient;
+ PropsEd.Visible := false;
+ Splitter1.Visible := false;
+ end
+ else
+ begin
+ CustomTools.readOnly:= false;
+ lstTools.Align:= alLeft;
+ PropsEd.Visible := true;
+ Splitter1.Visible := true;
+ end;
+end;
+
+procedure TCEToolsEditorWidget.btnEditClick(Sender: TObject);
+begin
+ setReadOnly(not CustomTools.readOnly);
+end;
+
procedure TCEToolsEditorWidget.btnRemToolClick(Sender: TObject);
begin
if lstTools.ItemIndex = -1 then