mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-15 20:19:50 +02:00
IDE: Turn MacroListViewer into a proper IDE window. Prevent crash when switching to a project with less macros.
This commit is contained in:
parent
49aae25741
commit
6a69340a83
@ -412,9 +412,10 @@ type
|
|||||||
FOnChange: TNotifyEvent;
|
FOnChange: TNotifyEvent;
|
||||||
FOnStateChange: TNotifyEvent;
|
FOnStateChange: TNotifyEvent;
|
||||||
procedure SetMacroNameFull(AValue: String);
|
procedure SetMacroNameFull(AValue: String);
|
||||||
|
procedure SetOnChange(AValue: TNotifyEvent);
|
||||||
protected
|
protected
|
||||||
procedure DoChanged;
|
procedure DoChanged;
|
||||||
procedure DoStateChanged;
|
procedure DoStateChanged;
|
||||||
|
|
||||||
// (Un)setActivated: Must be called, whenever the state changes
|
// (Un)setActivated: Must be called, whenever the state changes
|
||||||
procedure SetActivated;
|
procedure SetActivated;
|
||||||
@ -704,6 +705,12 @@ begin
|
|||||||
KeyBinding.MacroNameChanged;
|
KeyBinding.MacroNameChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TEditorMacro.SetOnChange(AValue: TNotifyEvent);
|
||||||
|
begin
|
||||||
|
if FOnChange=AValue then Exit;
|
||||||
|
FOnChange:=AValue;
|
||||||
|
end;
|
||||||
|
|
||||||
function TEditorMacro.GetErrorMsg: String;
|
function TEditorMacro.GetErrorMsg: String;
|
||||||
begin
|
begin
|
||||||
Result := '';
|
Result := '';
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
object MacroListView: TMacroListView
|
object MacroListViewer: TMacroListViewer
|
||||||
Left = 390
|
Left = 390
|
||||||
Height = 609
|
Height = 609
|
||||||
Top = 249
|
Top = 249
|
||||||
Width = 569
|
Width = 569
|
||||||
Caption = 'MacroListView'
|
Caption = 'MacroListViewer'
|
||||||
ClientHeight = 609
|
ClientHeight = 609
|
||||||
ClientWidth = 569
|
ClientWidth = 569
|
||||||
Constraints.MinHeight = 562
|
Constraints.MinHeight = 562
|
||||||
|
@ -189,9 +189,9 @@ type
|
|||||||
property OnRemove: TMacroAddedEvent read FOnRemove write FOnRemove;
|
property OnRemove: TMacroAddedEvent read FOnRemove write FOnRemove;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TMacroListView }
|
{ TMacroListViewer }
|
||||||
|
|
||||||
TMacroListView = class(TForm)
|
TMacroListViewer = class(TForm)
|
||||||
btnDelete: TBitBtn;
|
btnDelete: TBitBtn;
|
||||||
btnEdit: TBitBtn;
|
btnEdit: TBitBtn;
|
||||||
btnPlay: TBitBtn;
|
btnPlay: TBitBtn;
|
||||||
@ -260,11 +260,8 @@ type
|
|||||||
procedure DoMacroContentChanged(Sender: TObject);
|
procedure DoMacroContentChanged(Sender: TObject);
|
||||||
procedure DoMacroStateChanged(Sender: TObject);
|
procedure DoMacroStateChanged(Sender: TObject);
|
||||||
procedure UpdateButtons;
|
procedure UpdateButtons;
|
||||||
protected
|
|
||||||
procedure DoEditorMacroStateChanged;
|
|
||||||
public
|
public
|
||||||
constructor Create(TheOwner: TComponent); override;
|
constructor Create(TheOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
|
||||||
function MacroByFullName(AName: String): TEditorMacro;
|
function MacroByFullName(AName: String): TEditorMacro;
|
||||||
procedure UpdateDisplay;
|
procedure UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
@ -281,18 +278,8 @@ type
|
|||||||
procedure DoOnAdded; override;
|
procedure DoOnAdded; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function MacroListViewer: TMacroListView;
|
|
||||||
procedure ShowMacroListViewer;
|
|
||||||
procedure UpdateMacroListViewer;
|
|
||||||
procedure DoEditorMacroStateChanged;
|
|
||||||
|
|
||||||
procedure LoadProjectSpecificInfo(XMLConfig: TXMLConfig);
|
|
||||||
procedure SaveProjectSpecificInfo(XMLConfig: TXMLConfig; Flags: TProjectWriteFlags);
|
|
||||||
procedure LoadGlobalInfo;
|
|
||||||
procedure SaveGlobalInfo;
|
|
||||||
|
|
||||||
var
|
var
|
||||||
|
MacroListViewer: TMacroListViewer = nil;
|
||||||
OnKeyMapReloaded: procedure of object;
|
OnKeyMapReloaded: procedure of object;
|
||||||
OnEditorMacroStateChange: TNotifyEvent;
|
OnEditorMacroStateChange: TNotifyEvent;
|
||||||
// SelectedEditorMacro: Selected, for playing with default shortcut
|
// SelectedEditorMacro: Selected, for playing with default shortcut
|
||||||
@ -301,11 +288,20 @@ var
|
|||||||
const
|
const
|
||||||
EditorMacroVirtualDrive = '%Macro:|'; // do not use \ or /, they can be converted by the IDE
|
EditorMacroVirtualDrive = '%Macro:|'; // do not use \ or /, they can be converted by the IDE
|
||||||
|
|
||||||
|
procedure ShowMacroListViewer(State: TIWGetFormState = iwgfShowOnTop);
|
||||||
|
|
||||||
|
procedure DoEditorMacroStateChanged;
|
||||||
|
procedure LoadProjectSpecificInfo(XMLConfig: TXMLConfig);
|
||||||
|
procedure SaveProjectSpecificInfo(XMLConfig: TXMLConfig; Flags: TProjectWriteFlags);
|
||||||
|
procedure LoadGlobalInfo;
|
||||||
|
procedure SaveGlobalInfo;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
var
|
{$R *.lfm}
|
||||||
MacroListView: TMacroListView = nil;
|
|
||||||
|
|
||||||
|
var
|
||||||
CurrentEditorMacroList: TEditorMacroList = nil;
|
CurrentEditorMacroList: TEditorMacroList = nil;
|
||||||
EditorMacroListRec, EditorMacroListProj, EditorMacroListGlob: TEditorMacroList;
|
EditorMacroListRec, EditorMacroListProj, EditorMacroListGlob: TEditorMacroList;
|
||||||
|
|
||||||
@ -319,30 +315,22 @@ var
|
|||||||
const
|
const
|
||||||
GlobalConfFileName = 'EditorMacros.xml';
|
GlobalConfFileName = 'EditorMacros.xml';
|
||||||
|
|
||||||
|
procedure ShowMacroListViewer(State: TIWGetFormState);
|
||||||
|
begin
|
||||||
|
if MacroListViewer = Nil then
|
||||||
|
IDEWindowCreators.CreateForm(MacroListViewer,TMacroListViewer,
|
||||||
|
State=iwgfDisabled,LazarusIDE.OwningComponent)
|
||||||
|
else if State=iwgfDisabled then
|
||||||
|
MacroListViewer.DisableAlign;
|
||||||
|
if State>=iwgfShow then
|
||||||
|
IDEWindowCreators.ShowForm(MacroListViewer,State=iwgfShowOnTop);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure DoMacroListViewerWarningChanged({%H-}Sender: TObject);
|
procedure DoMacroListViewerWarningChanged({%H-}Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if MacroListView = nil then exit;
|
if MacroListViewer = nil then exit;
|
||||||
MacroListView.LabelWarning.Caption := MacroListViewerWarningText;
|
MacroListViewer.LabelWarning.Caption := MacroListViewerWarningText;
|
||||||
MacroListView.PanelWarnings.Visible := MacroListViewerWarningText <> '';
|
MacroListViewer.PanelWarnings.Visible := MacroListViewerWarningText <> '';
|
||||||
end;
|
|
||||||
|
|
||||||
function MacroListViewer: TMacroListView;
|
|
||||||
begin
|
|
||||||
if MacroListView = nil then
|
|
||||||
MacroListView := TMacroListView.Create(Application);
|
|
||||||
Result := MacroListView;
|
|
||||||
DoMacroListViewerWarningChanged(nil);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure ShowMacroListViewer;
|
|
||||||
begin
|
|
||||||
IDEWindowCreators.ShowForm(MacroListViewer, True);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure UpdateMacroListViewer;
|
|
||||||
begin
|
|
||||||
if MacroListView <> nil then
|
|
||||||
MacroListView.UpdateDisplay;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function MacroListToName(AList: TEditorMacroList): string;
|
function MacroListToName(AList: TEditorMacroList): string;
|
||||||
@ -381,35 +369,35 @@ begin
|
|||||||
|
|
||||||
if (EditorMacroForRecording.State = emRecording) and (CurrentRecordingMacro = nil) then begin
|
if (EditorMacroForRecording.State = emRecording) and (CurrentRecordingMacro = nil) then begin
|
||||||
CurrentRecordingMacro := EditorMacroPlayerClass.Create(nil);
|
CurrentRecordingMacro := EditorMacroPlayerClass.Create(nil);
|
||||||
CurrentRecordingMacro.OnStateChange := @MacroListViewer.DoMacroStateChanged;
|
|
||||||
CurrentRecordingMacro.OnChange := @MacroListViewer.DoMacroContentChanged;
|
CurrentRecordingMacro.OnChange := @MacroListViewer.DoMacroContentChanged;
|
||||||
|
CurrentRecordingMacro.OnStateChange := @MacroListViewer.DoMacroStateChanged;
|
||||||
CurrentRecordingMacro.MacroName := Format(lisNewMacroName, [MacroRecCounter]);
|
CurrentRecordingMacro.MacroName := Format(lisNewMacroName, [MacroRecCounter]);
|
||||||
inc(MacroRecCounter);
|
inc(MacroRecCounter);
|
||||||
EditorMacroListRec.Add(CurrentRecordingMacro);
|
EditorMacroListRec.Add(CurrentRecordingMacro);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if MacroListView <> nil then
|
if MacroListViewer <> nil then
|
||||||
MacroListView.DoEditorMacroStateChanged;
|
MacroListViewer.UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure LoadProjectSpecificInfo(XMLConfig: TXMLConfig);
|
procedure LoadProjectSpecificInfo(XMLConfig: TXMLConfig);
|
||||||
begin
|
begin
|
||||||
if MacroListView<>nil then
|
if MacroListViewer<>nil then
|
||||||
MacroListView.FIgnoreMacroChanges := True;
|
MacroListViewer.FIgnoreMacroChanges := True;
|
||||||
try
|
try
|
||||||
EditorMacroListProj.ReadFromXmlConf(XMLConfig, '');
|
EditorMacroListProj.ReadFromXmlConf(XMLConfig, '');
|
||||||
finally
|
finally
|
||||||
if MacroListView<>nil then
|
if MacroListViewer<>nil then begin
|
||||||
MacroListView.FIgnoreMacroChanges := False;
|
MacroListViewer.FIgnoreMacroChanges := False;
|
||||||
|
MacroListViewer.UpdateDisplay;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure SaveProjectSpecificInfo(XMLConfig: TXMLConfig; Flags: TProjectWriteFlags);
|
procedure SaveProjectSpecificInfo(XMLConfig: TXMLConfig; Flags: TProjectWriteFlags);
|
||||||
begin
|
begin
|
||||||
if not (pwfSkipSeparateSessionInfo in Flags) then
|
if not (pwfSkipSeparateSessionInfo in Flags) then
|
||||||
begin
|
|
||||||
EditorMacroListProj.WriteToXmlConf(XMLConfig, '');
|
EditorMacroListProj.WriteToXmlConf(XMLConfig, '');
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure LoadGlobalInfo;
|
procedure LoadGlobalInfo;
|
||||||
@ -417,8 +405,8 @@ var
|
|||||||
Filename: String;
|
Filename: String;
|
||||||
XMLConfig: TXMLConfig;
|
XMLConfig: TXMLConfig;
|
||||||
begin
|
begin
|
||||||
if MacroListView<>nil then
|
if MacroListViewer<>nil then
|
||||||
MacroListView.FIgnoreMacroChanges := True;
|
MacroListViewer.FIgnoreMacroChanges := True;
|
||||||
Filename := TrimFilename(AppendPathDelim(GetPrimaryConfigPath)+GlobalConfFileName);
|
Filename := TrimFilename(AppendPathDelim(GetPrimaryConfigPath)+GlobalConfFileName);
|
||||||
try
|
try
|
||||||
XMLConfig := TXMLConfig.Create(Filename);
|
XMLConfig := TXMLConfig.Create(Filename);
|
||||||
@ -432,8 +420,8 @@ begin
|
|||||||
DebugLn('[EditorMacroListViewer.LoadGlobalInfo] error reading "',Filename,'": ',E.Message);
|
DebugLn('[EditorMacroListViewer.LoadGlobalInfo] error reading "',Filename,'": ',E.Message);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if MacroListView<>nil then
|
if MacroListViewer<>nil then
|
||||||
MacroListView.FIgnoreMacroChanges := False;
|
MacroListViewer.FIgnoreMacroChanges := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure SaveGlobalInfo;
|
procedure SaveGlobalInfo;
|
||||||
@ -499,7 +487,6 @@ begin
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
FIdeCmd.LocalizedName := FOwner.MacroName;
|
FIdeCmd.LocalizedName := FOwner.MacroName;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TIdeEditorMacroKeyBinding.Destroy;
|
destructor TIdeEditorMacroKeyBinding.Destroy;
|
||||||
@ -512,6 +499,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TIdeEditorMacroKeyBinding.WriteToXmlConf(AConf: TXMLConfig; const APath: String);
|
procedure TIdeEditorMacroKeyBinding.WriteToXmlConf(AConf: TXMLConfig; const APath: String);
|
||||||
|
|
||||||
procedure ClearKey(const SubPath: string);
|
procedure ClearKey(const SubPath: string);
|
||||||
begin
|
begin
|
||||||
AConf.DeleteValue(SubPath+'Key1');
|
AConf.DeleteValue(SubPath+'Key1');
|
||||||
@ -519,6 +507,7 @@ procedure TIdeEditorMacroKeyBinding.WriteToXmlConf(AConf: TXMLConfig; const APat
|
|||||||
AConf.DeleteValue(SubPath+'Key2');
|
AConf.DeleteValue(SubPath+'Key2');
|
||||||
AConf.DeleteValue(SubPath+'Shift2');
|
AConf.DeleteValue(SubPath+'Shift2');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure Store(const SubPath: string; Key: TIDEShortCut);
|
procedure Store(const SubPath: string; Key: TIDEShortCut);
|
||||||
var
|
var
|
||||||
s: TShiftState;
|
s: TShiftState;
|
||||||
@ -548,6 +537,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TIdeEditorMacroKeyBinding.ReadFromXmlConf(AConf: TXMLConfig; const APath: String);
|
procedure TIdeEditorMacroKeyBinding.ReadFromXmlConf(AConf: TXMLConfig; const APath: String);
|
||||||
|
|
||||||
procedure Load(SubPath: string; out Key: TIDEShortCut);
|
procedure Load(SubPath: string; out Key: TIDEShortCut);
|
||||||
begin
|
begin
|
||||||
key.Key1 := AConf.GetValue(SubPath+'Key1',VK_UNKNOWN);
|
key.Key1 := AConf.GetValue(SubPath+'Key1',VK_UNKNOWN);
|
||||||
@ -555,6 +545,7 @@ procedure TIdeEditorMacroKeyBinding.ReadFromXmlConf(AConf: TXMLConfig; const APa
|
|||||||
key.Key2 := AConf.GetValue(SubPath+'Key2',VK_UNKNOWN);
|
key.Key2 := AConf.GetValue(SubPath+'Key2',VK_UNKNOWN);
|
||||||
key.Shift2 := CfgStrToShiftState(AConf.GetValue(SubPath+'Shift2',''));
|
key.Shift2 := CfgStrToShiftState(AConf.GetValue(SubPath+'Shift2',''));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
SCut: TIDEShortCut;
|
SCut: TIDEShortCut;
|
||||||
begin
|
begin
|
||||||
@ -1102,9 +1093,9 @@ begin
|
|||||||
FParams := FParams + IntToStr(AParam);
|
FParams := FParams + IntToStr(AParam);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TMacroListView }
|
{ TMacroListViewer }
|
||||||
|
|
||||||
procedure TMacroListView.btnRenameClick(Sender: TObject);
|
procedure TMacroListViewer.btnRenameClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
s: String;
|
s: String;
|
||||||
M: TEditorMacro;
|
M: TEditorMacro;
|
||||||
@ -1124,14 +1115,13 @@ begin
|
|||||||
s := '';
|
s := '';
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if s <> '' then
|
if s <> '' then
|
||||||
M.MacroName := s;
|
M.MacroName := s;
|
||||||
UpdateDisplay;
|
UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.btnPlayClick(Sender: TObject);
|
procedure TMacroListViewer.btnPlayClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
M: TEditorMacro;
|
M: TEditorMacro;
|
||||||
@ -1163,7 +1153,7 @@ begin
|
|||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.btnDeleteClick(Sender: TObject);
|
procedure TMacroListViewer.btnDeleteClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
m: TEditorMacro;
|
m: TEditorMacro;
|
||||||
begin
|
begin
|
||||||
@ -1182,7 +1172,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.btnEditClick(Sender: TObject);
|
procedure TMacroListViewer.btnEditClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
M: TEditorMacro;
|
M: TEditorMacro;
|
||||||
begin
|
begin
|
||||||
@ -1194,7 +1184,7 @@ begin
|
|||||||
-1, -1, [ofVirtualFile, ofInternalFile]);
|
-1, -1, [ofVirtualFile, ofInternalFile]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.btnRecordClick(Sender: TObject);
|
procedure TMacroListViewer.btnRecordClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
se: TSourceEditorInterface;
|
se: TSourceEditorInterface;
|
||||||
begin
|
begin
|
||||||
@ -1217,21 +1207,21 @@ begin
|
|||||||
se.EditorControl.SetFocus;
|
se.EditorControl.SetFocus;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.btnRecordStopClick(Sender: TObject);
|
procedure TMacroListViewer.btnRecordStopClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
FIsPlaying := False;
|
FIsPlaying := False;
|
||||||
EditorMacroForRecording.Stop;
|
EditorMacroForRecording.Stop;
|
||||||
UpdateButtons;
|
UpdateButtons;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.btnAddEditNewClick(Sender: TObject);
|
procedure TMacroListViewer.btnAddEditNewClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
se: TSourceEditorInterface;
|
se: TSourceEditorInterface;
|
||||||
M: TEditorMacro;
|
M: TEditorMacro;
|
||||||
begin
|
begin
|
||||||
se := SourceEditorManagerIntf.ActiveEditor;
|
se := SourceEditorManagerIntf.ActiveEditor;
|
||||||
Assert(Assigned(se) and (ActiveEditorMacro=nil) and (EditorMacroForRecording.State=emStopped),
|
Assert(Assigned(se) and (ActiveEditorMacro=nil) and (EditorMacroForRecording.State=emStopped),
|
||||||
'TMacroListView.btnAddEditNewClick: Problem');
|
'TMacroListViewer.btnAddEditNewClick: Problem');
|
||||||
lbMacroView.ItemIndex := -1;
|
lbMacroView.ItemIndex := -1;
|
||||||
M := TIdeEditorMacro.Create(nil);
|
M := TIdeEditorMacro.Create(nil);
|
||||||
M.OnStateChange := @MacroListViewer.DoMacroStateChanged;
|
M.OnStateChange := @MacroListViewer.DoMacroStateChanged;
|
||||||
@ -1239,7 +1229,7 @@ begin
|
|||||||
M.MacroName := Format(lisNewMacroName, [MacroRecCounter]);
|
M.MacroName := Format(lisNewMacroName, [MacroRecCounter]);
|
||||||
inc(MacroRecCounter);
|
inc(MacroRecCounter);
|
||||||
CurrentEditorMacroList.Add(M);
|
CurrentEditorMacroList.Add(M);
|
||||||
Assert(not FIsPlaying, 'TMacroListView.btnAddEditNewClick: IsPlaying');
|
Assert(not FIsPlaying, 'TMacroListViewer.btnAddEditNewClick: IsPlaying');
|
||||||
LazarusIDE.DoOpenEditorFile(
|
LazarusIDE.DoOpenEditorFile(
|
||||||
EditorMacroVirtualDrive+MacroListToName(CurrentEditorMacroList)+'|'+M.MacroName,
|
EditorMacroVirtualDrive+MacroListToName(CurrentEditorMacroList)+'|'+M.MacroName,
|
||||||
-1, -1, [ofVirtualFile, ofInternalFile]);
|
-1, -1, [ofVirtualFile, ofInternalFile]);
|
||||||
@ -1247,7 +1237,7 @@ begin
|
|||||||
UpdateDisplay;
|
UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.btnSelectClick(Sender: TObject);
|
procedure TMacroListViewer.btnSelectClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if ActiveEditorMacro <> nil then exit;
|
if ActiveEditorMacro <> nil then exit;
|
||||||
if lbMacroView.ItemIndex >= 0 then
|
if lbMacroView.ItemIndex >= 0 then
|
||||||
@ -1257,7 +1247,7 @@ begin
|
|||||||
UpdateDisplay;
|
UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.btnSetKeysClick(Sender: TObject);
|
procedure TMacroListViewer.btnSetKeysClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
M: TEditorMacro;
|
M: TEditorMacro;
|
||||||
@ -1280,36 +1270,36 @@ begin
|
|||||||
if OnKeyMapReloaded <> nil then OnKeyMapReloaded();
|
if OnKeyMapReloaded <> nil then OnKeyMapReloaded();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.BtnWarnCloseClick(Sender: TObject);
|
procedure TMacroListViewer.BtnWarnCloseClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
PanelWarnings.Visible := False;
|
PanelWarnings.Visible := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.DoMacroStateChanged(Sender: TObject);
|
procedure TMacroListViewer.DoMacroStateChanged(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if OnEditorMacroStateChange <> nil then
|
if OnEditorMacroStateChange <> nil then
|
||||||
OnEditorMacroStateChange(Sender);
|
OnEditorMacroStateChange(Sender);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.FormActivate(Sender: TObject);
|
procedure TMacroListViewer.FormActivate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DebugLn(['TMacroListView.FormActivate: Active=', Active]);
|
DebugLn(['TMacroListViewer.FormActivate: Active=', Active]);
|
||||||
lbMacroView.HideSelection := Active; // Active = False always ?
|
lbMacroView.HideSelection := Active; // Active = False always ?
|
||||||
UpdateButtons;
|
UpdateButtons;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.HelpButtonClick(Sender: TObject);
|
procedure TMacroListViewer.HelpButtonClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
LazarusHelp.ShowHelpForIDEControl(Self);
|
LazarusHelp.ShowHelpForIDEControl(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.lbMacroViewSelectItem(Sender: TObject; Item: TListItem;
|
procedure TMacroListViewer.lbMacroViewSelectItem(Sender: TObject; Item: TListItem;
|
||||||
Selected: Boolean);
|
Selected: Boolean);
|
||||||
begin
|
begin
|
||||||
UpdateButtons;
|
UpdateButtons;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.mnExportClick(Sender: TObject);
|
procedure TMacroListViewer.mnExportClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
Conf: TXMLConfig;
|
Conf: TXMLConfig;
|
||||||
begin
|
begin
|
||||||
@ -1327,7 +1317,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.mnImportClick(Sender: TObject);
|
procedure TMacroListViewer.mnImportClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
Conf: TXMLConfig;
|
Conf: TXMLConfig;
|
||||||
NewMacro: TEditorMacro;
|
NewMacro: TEditorMacro;
|
||||||
@ -1336,8 +1326,8 @@ begin
|
|||||||
Conf := TXMLConfig.Create(OpenDialog1.FileName);
|
Conf := TXMLConfig.Create(OpenDialog1.FileName);
|
||||||
try
|
try
|
||||||
NewMacro := EditorMacroPlayerClass.Create(nil);
|
NewMacro := EditorMacroPlayerClass.Create(nil);
|
||||||
NewMacro.OnStateChange := @DoMacroStateChanged;
|
NewMacro.OnStateChange := @MacroListViewer.DoMacroStateChanged;
|
||||||
NewMacro.OnChange := @DoMacroContentChanged;
|
NewMacro.OnChange := @MacroListViewer.DoMacroContentChanged;
|
||||||
NewMacro.ReadFromXmlConf(Conf, 'EditorMacros/Macro1/');
|
NewMacro.ReadFromXmlConf(Conf, 'EditorMacros/Macro1/');
|
||||||
if not NewMacro.IsEmpty then begin
|
if not NewMacro.IsEmpty then begin
|
||||||
CurrentEditorMacroList.Add(NewMacro);
|
CurrentEditorMacroList.Add(NewMacro);
|
||||||
@ -1352,13 +1342,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.tbIDEClick(Sender: TObject);
|
procedure TMacroListViewer.tbIDEClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
CurrentEditorMacroList := EditorMacroListGlob;
|
CurrentEditorMacroList := EditorMacroListGlob;
|
||||||
UpdateDisplay;
|
UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.tbMoveIDEClick(Sender: TObject);
|
procedure TMacroListViewer.tbMoveIDEClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -1371,7 +1361,7 @@ begin
|
|||||||
UpdateDisplay;
|
UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.tbMoveProjectClick(Sender: TObject);
|
procedure TMacroListViewer.tbMoveProjectClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -1384,28 +1374,28 @@ begin
|
|||||||
UpdateDisplay;
|
UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.tbProjectClick(Sender: TObject);
|
procedure TMacroListViewer.tbProjectClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
CurrentEditorMacroList := EditorMacroListProj;
|
CurrentEditorMacroList := EditorMacroListProj;
|
||||||
UpdateDisplay;
|
UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.tbRecordedClick(Sender: TObject);
|
procedure TMacroListViewer.tbRecordedClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
CurrentEditorMacroList := EditorMacroListRec;
|
CurrentEditorMacroList := EditorMacroListRec;
|
||||||
UpdateDisplay;
|
UpdateDisplay;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.DoOnMacroListChange(Sender: TObject);
|
procedure TMacroListViewer.DoOnMacroListChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
UpdateDisplay;
|
UpdateDisplay;
|
||||||
if Sender = EditorMacroListProj then
|
if Sender = EditorMacroListProj then
|
||||||
Project1.SessionModified := True;
|
Project1.SessionModified := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.DoMacroContentChanged(Sender: TObject);
|
procedure TMacroListViewer.DoMacroContentChanged(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if FIgnoreMacroChanges then exit;
|
if Assigned(Self) and Self.FIgnoreMacroChanges then exit;
|
||||||
|
|
||||||
if EditorMacroListProj.IndexOf(Sender as TEditorMacro) >= 0 then
|
if EditorMacroListProj.IndexOf(Sender as TEditorMacro) >= 0 then
|
||||||
Project1.Modified := True;
|
Project1.Modified := True;
|
||||||
@ -1413,7 +1403,7 @@ begin
|
|||||||
MainIDEInterface.SaveEnvironment(False);
|
MainIDEInterface.SaveEnvironment(False);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.UpdateDisplay;
|
procedure TMacroListViewer.UpdateDisplay;
|
||||||
var
|
var
|
||||||
NewItem: TListItem;
|
NewItem: TListItem;
|
||||||
i, idx: Integer;
|
i, idx: Integer;
|
||||||
@ -1455,7 +1445,7 @@ begin
|
|||||||
UpdateButtons;
|
UpdateButtons;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.UpdateButtons;
|
procedure TMacroListViewer.UpdateButtons;
|
||||||
var
|
var
|
||||||
IsSel, IsErr, IsStopped: Boolean;
|
IsSel, IsErr, IsStopped: Boolean;
|
||||||
M: TEditorMacro;
|
M: TEditorMacro;
|
||||||
@ -1513,7 +1503,7 @@ begin
|
|||||||
Update;
|
Update;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TMacroListView.MacroByFullName(AName: String): TEditorMacro;
|
function TMacroListViewer.MacroByFullName(AName: String): TEditorMacro;
|
||||||
const
|
const
|
||||||
FolderStart = length(EditorMacroVirtualDrive)+1;
|
FolderStart = length(EditorMacroVirtualDrive)+1;
|
||||||
NameStart = FolderStart+length('PRJ|');
|
NameStart = FolderStart+length('PRJ|');
|
||||||
@ -1532,12 +1522,7 @@ begin
|
|||||||
Result := Alist.Macros[i];
|
Result := Alist.Macros[i];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMacroListView.DoEditorMacroStateChanged;
|
constructor TMacroListViewer.Create(TheOwner: TComponent);
|
||||||
begin
|
|
||||||
UpdateDisplay;
|
|
||||||
end;
|
|
||||||
|
|
||||||
constructor TMacroListView.Create(TheOwner: TComponent);
|
|
||||||
begin
|
begin
|
||||||
inherited Create(TheOwner);
|
inherited Create(TheOwner);
|
||||||
FIgnoreMacroChanges := False;
|
FIgnoreMacroChanges := False;
|
||||||
@ -1617,11 +1602,6 @@ begin
|
|||||||
mnExport.Caption := lisDlgExport;
|
mnExport.Caption := lisDlgExport;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TMacroListView.Destroy;
|
|
||||||
begin
|
|
||||||
inherited Destroy;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TEditorMacroList }
|
{ TEditorMacroList }
|
||||||
|
|
||||||
function TEditorMacroList.GetMacros(Index: Integer): TEditorMacro;
|
function TEditorMacroList.GetMacros(Index: Integer): TEditorMacro;
|
||||||
@ -1806,8 +1786,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{$R *.lfm}
|
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
if EditorMacroPlayerClass = nil then
|
if EditorMacroPlayerClass = nil then
|
||||||
EditorMacroPlayerClass := TIdeEditorMacro;
|
EditorMacroPlayerClass := TIdeEditorMacro;
|
||||||
|
@ -628,7 +628,7 @@
|
|||||||
<Unit>
|
<Unit>
|
||||||
<Filename Value="editormacrolistviewer.pas"/>
|
<Filename Value="editormacrolistviewer.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="MacroListView"/>
|
<ComponentName Value="MacroListViewer"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="EditorMacroListViewer"/>
|
<UnitName Value="EditorMacroListViewer"/>
|
||||||
|
26
ide/main.pp
26
ide/main.pp
@ -5162,7 +5162,8 @@ begin
|
|||||||
UpdateHighlighters(True);
|
UpdateHighlighters(True);
|
||||||
SourceEditorManager.ReloadEditorOptions;
|
SourceEditorManager.ReloadEditorOptions;
|
||||||
ReloadMenuShortCuts;
|
ReloadMenuShortCuts;
|
||||||
UpdateMacroListViewer;
|
if MacroListViewer <> nil then
|
||||||
|
MacroListViewer.UpdateDisplay;
|
||||||
finally
|
finally
|
||||||
SourceEditorManager.EndGlobalUpdate;
|
SourceEditorManager.EndGlobalUpdate;
|
||||||
end;
|
end;
|
||||||
@ -5699,11 +5700,9 @@ end;
|
|||||||
procedure TMainIDE.OnLoadProjectInfoFromXMLConfig(TheProject: TProject;
|
procedure TMainIDE.OnLoadProjectInfoFromXMLConfig(TheProject: TProject;
|
||||||
XMLConfig: TXMLConfig; Merge: boolean);
|
XMLConfig: TXMLConfig; Merge: boolean);
|
||||||
begin
|
begin
|
||||||
if TheProject=Project1 then
|
if TheProject<>Project1 then exit;
|
||||||
DebugBossMgr.LoadProjectSpecificInfo(XMLConfig,Merge);
|
DebugBossMgr.LoadProjectSpecificInfo(XMLConfig,Merge);
|
||||||
|
EditorMacroListViewer.LoadProjectSpecificInfo(XMLConfig);
|
||||||
if (TheProject=Project1) then
|
|
||||||
EditorMacroListViewer.LoadProjectSpecificInfo(XMLConfig);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.OnLoadSaveCustomData(Sender: TObject; Load: boolean;
|
procedure TMainIDE.OnLoadSaveCustomData(Sender: TObject; Load: boolean;
|
||||||
@ -5714,19 +5713,17 @@ var
|
|||||||
begin
|
begin
|
||||||
Handler:=FLazarusIDEHandlers[lihtLoadSafeCustomData];
|
Handler:=FLazarusIDEHandlers[lihtLoadSafeCustomData];
|
||||||
i := Handler.Count;
|
i := Handler.Count;
|
||||||
while Handler.NextDownIndex(i) do begin
|
while Handler.NextDownIndex(i) do
|
||||||
TLazLoadSaveCustomDataEvent(Handler[i])(Sender,Load,Data,PathDelimChanged);
|
TLazLoadSaveCustomDataEvent(Handler[i])(Sender,Load,Data,PathDelimChanged);
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.OnSaveProjectInfoToXMLConfig(TheProject: TProject;
|
procedure TMainIDE.OnSaveProjectInfoToXMLConfig(TheProject: TProject;
|
||||||
XMLConfig: TXMLConfig; WriteFlags: TProjectWriteFlags);
|
XMLConfig: TXMLConfig; WriteFlags: TProjectWriteFlags);
|
||||||
begin
|
begin
|
||||||
if (TheProject=Project1) and (not (pwfSkipDebuggerSettings in WriteFlags)) then
|
if TheProject<>Project1 then exit;
|
||||||
|
if not (pwfSkipDebuggerSettings in WriteFlags) then
|
||||||
DebugBossMgr.SaveProjectSpecificInfo(XMLConfig,WriteFlags);
|
DebugBossMgr.SaveProjectSpecificInfo(XMLConfig,WriteFlags);
|
||||||
|
EditorMacroListViewer.SaveProjectSpecificInfo(XMLConfig, WriteFlags);
|
||||||
if (TheProject=Project1) then
|
|
||||||
EditorMacroListViewer.SaveProjectSpecificInfo(XMLConfig, WriteFlags);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.OnProjectChangeInfoFile(TheProject: TProject);
|
procedure TMainIDE.OnProjectChangeInfoFile(TheProject: TProject);
|
||||||
@ -6195,6 +6192,11 @@ begin
|
|||||||
DoShowComponentList(State);
|
DoShowComponentList(State);
|
||||||
AForm:=ComponentListForm;
|
AForm:=ComponentListForm;
|
||||||
end
|
end
|
||||||
|
else if ItIs(NonModalIDEWindowNames[nmiwMacroListViewer]) then
|
||||||
|
begin
|
||||||
|
ShowMacroListViewer(State);
|
||||||
|
AForm:=MacroListViewer;
|
||||||
|
end
|
||||||
else if ItIs(NonModalIDEWindowNames[nmiwEditorFileManager]) then
|
else if ItIs(NonModalIDEWindowNames[nmiwEditorFileManager]) then
|
||||||
begin
|
begin
|
||||||
ShowEditorFileManagerForm(State);
|
ShowEditorFileManagerForm(State);
|
||||||
|
@ -94,7 +94,8 @@ type
|
|||||||
nmiwCodeBrowser,
|
nmiwCodeBrowser,
|
||||||
nmiwIssueBrowser,
|
nmiwIssueBrowser,
|
||||||
nmiwJumpHistory,
|
nmiwJumpHistory,
|
||||||
nmiwComponentList
|
nmiwComponentList,
|
||||||
|
nmiwMacroListViewer
|
||||||
);
|
);
|
||||||
|
|
||||||
const
|
const
|
||||||
@ -130,7 +131,8 @@ const
|
|||||||
'CodeBrowser',
|
'CodeBrowser',
|
||||||
'IssueBrowser',
|
'IssueBrowser',
|
||||||
'JumpHistory',
|
'JumpHistory',
|
||||||
'ComponentList'
|
'ComponentList',
|
||||||
|
'MacroListViewer'
|
||||||
);
|
);
|
||||||
|
|
||||||
type
|
type
|
||||||
|
Loading…
Reference in New Issue
Block a user