mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-15 11:49:55 +02:00
IDE: further migration external tools
git-svn-id: trunk@43262 -
This commit is contained in:
parent
dc96e37202
commit
316056f2f7
@ -19,7 +19,7 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, contnrs, Forms, Menus,
|
||||
TextTools, IDECommands, IDEExternToolIntf;
|
||||
TextTools, IDECommands, IDEExternToolIntf, MenuIntf;
|
||||
|
||||
type
|
||||
TMsgQuickFixes = class;
|
||||
@ -53,7 +53,7 @@ type
|
||||
function LineCount: integer; inline;
|
||||
property Lines[Index: integer]: TMessageLine read GetLines;
|
||||
function AddMenuItem(Fix: TMsgQuickFix; Msg: TMessageLine; aCaption: string;
|
||||
aTag: PtrInt = 0): TMenuItem; virtual; abstract;
|
||||
aTag: PtrInt = 0): TIDEMenuCommand; virtual; abstract;
|
||||
end;
|
||||
|
||||
var
|
||||
|
@ -51,6 +51,9 @@ uses
|
||||
// IDEIntf
|
||||
LazIDEIntf, IDEMsgIntf, IDEHelpIntf, IDEImagesIntf, IDEWindowIntf, IDEDialogs,
|
||||
PackageIntf,
|
||||
{$IFDEF EnableNewExtTools}
|
||||
IDEExternToolIntf,
|
||||
{$ENDIF}
|
||||
// IDE
|
||||
LazarusIDEStrConsts, TransferMacros, LazConf, IDEProcs, DialogProcs,
|
||||
MainBar, ExtToolEditDlg, EnvironmentOpts,
|
||||
|
@ -86,167 +86,5 @@ object MessagesFrame: TMessagesFrame
|
||||
OnClose = MsgCtrlPopupMenuClose
|
||||
left = 240
|
||||
top = 25
|
||||
object QuickFixesMenuItem: TMenuItem
|
||||
Caption = 'QuickFixesMenuItem'
|
||||
end
|
||||
object FindMenuItem: TMenuItem
|
||||
Caption = 'FindMenuItem'
|
||||
OnClick = FindMenuItemClick
|
||||
end
|
||||
object HideSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object HideMsgOfTypeMenuItem: TMenuItem
|
||||
Caption = 'HideMsgOfTypeMenuItem'
|
||||
OnClick = HideMsgOfTypeMenuItemClick
|
||||
end
|
||||
object UnhideMsgTypeMenuItem: TMenuItem
|
||||
Caption = 'UnhideMsgTypeMenuItem'
|
||||
object UnhideMsgTypeSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object ClearHideMsgTypesMenuItem: TMenuItem
|
||||
Caption = 'ClearHideMsgTypesMenuItem'
|
||||
OnClick = ClearHideMsgTypesMenuItemClick
|
||||
end
|
||||
end
|
||||
object HideBelowMenuItem: TMenuItem
|
||||
Caption = 'HideBelowMenuItem'
|
||||
object HideWarningsMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideWarningsMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideNotesMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideNotesMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideHintsMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideHintsMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideVerboseMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideVerboseMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideDebugMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideDebugMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideNoneMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HidenoneMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
end
|
||||
object HideHintsWithoutPosMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideHintsWithoutPosMenuItem'
|
||||
Checked = True
|
||||
OnClick = HideHintsWithoutPosMenuItemClick
|
||||
end
|
||||
object SwitchFilterMenuItem: TMenuItem
|
||||
Caption = 'SwitchFilterMenuItem'
|
||||
object FilterSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object AddFilterMenuItem: TMenuItem
|
||||
Caption = 'AddFilterMenuItem'
|
||||
OnClick = AddFilterMenuItemClick
|
||||
end
|
||||
end
|
||||
object CopySeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object CopyMenuItem: TMenuItem
|
||||
Caption = 'CopyMenuItem'
|
||||
object CopyFilenameMenuItem: TMenuItem
|
||||
Caption = 'CopyFilenameMenuItem'
|
||||
OnClick = CopyFilenameMenuItemClick
|
||||
end
|
||||
object CopyMsgMenuItem: TMenuItem
|
||||
Caption = 'CopyMsgMenuItem'
|
||||
OnClick = CopyMsgMenuItemClick
|
||||
end
|
||||
object CopyShownMenuItem: TMenuItem
|
||||
Caption = 'CopyShownMenuItem'
|
||||
OnClick = CopyShownMenuItemClick
|
||||
end
|
||||
object CopyAllMenuItem: TMenuItem
|
||||
Caption = 'CopyAllMenuItem'
|
||||
OnClick = CopyAllMenuItemClick
|
||||
end
|
||||
end
|
||||
object SaveToFileMenuItem: TMenuItem
|
||||
Caption = 'SaveToFileMenuItem'
|
||||
object SaveAllToFileMenuItem: TMenuItem
|
||||
Caption = 'SaveAllToFileMenuItem'
|
||||
OnClick = SaveAllToFileMenuItemClick
|
||||
end
|
||||
object SaveShownToFileMenuItem: TMenuItem
|
||||
Caption = 'SaveShownToFileMenuItem'
|
||||
OnClick = SaveShownToFileMenuItemClick
|
||||
end
|
||||
end
|
||||
object StyleSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object FilenameStyleMenuItem: TMenuItem
|
||||
Caption = 'FilenameStyleMenuItem'
|
||||
object FileStyleShortMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'FileStyleShortMenuItem'
|
||||
GroupIndex = 2
|
||||
RadioItem = True
|
||||
OnClick = FileStyleMenuItemClick
|
||||
end
|
||||
object FileStyleRelativeMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'FileStyleRelativeMenuItem'
|
||||
GroupIndex = 2
|
||||
RadioItem = True
|
||||
OnClick = FileStyleMenuItemClick
|
||||
end
|
||||
object FileStyleFullMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'FileStyleFullMenuItem'
|
||||
GroupIndex = 2
|
||||
RadioItem = True
|
||||
OnClick = FileStyleMenuItemClick
|
||||
end
|
||||
end
|
||||
object TranslateMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'TranslateMenuItem'
|
||||
OnClick = TranslateMenuItemClick
|
||||
end
|
||||
object ShowIDMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'ShowIDMenuItem'
|
||||
OnClick = ShowIDMenuItemClick
|
||||
end
|
||||
object InfoSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object AboutToolMenuItem: TMenuItem
|
||||
Caption = 'AboutToolMenuItem'
|
||||
OnClick = AboutToolMenuItemClick
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -36,7 +36,8 @@ uses
|
||||
LazUTF8Classes, LazFileUtils, LazUTF8, AvgLvlTree, SynEdit,
|
||||
LResources, Forms, Buttons, ExtCtrls, Controls, LMessages, LCLType, Graphics,
|
||||
LCLIntf, Themes, ImgList, GraphType, Menus, Clipbrd, Dialogs, StdCtrls,
|
||||
IDEExternToolIntf, IDEImagesIntf, MenuIntf, etSrcEditMarks, etQuickFixes;
|
||||
IDEExternToolIntf, IDEImagesIntf, MenuIntf, etSrcEditMarks, etQuickFixes,
|
||||
LazarusIDEStrConsts;
|
||||
|
||||
const
|
||||
CustomViewCaption = '------------------------------';
|
||||
@ -390,10 +391,10 @@ type
|
||||
SearchPanel: TPanel;
|
||||
SearchPrevSpeedButton: TSpeedButton;
|
||||
ShowIDMenuItem: TMenuItem;
|
||||
UnhideMsgTypeSeparatorMenuItem: TMenuItem;
|
||||
procedure AboutToolMenuItemClick(Sender: TObject);
|
||||
procedure AddFilterMenuItemClick(Sender: TObject);
|
||||
procedure ClearHideMsgTypesMenuItemClick(Sender: TObject);
|
||||
procedure ClearMenuItemClick(Sender: TObject);
|
||||
procedure CopyAllMenuItemClick(Sender: TObject);
|
||||
procedure CopyFilenameMenuItemClick(Sender: TObject);
|
||||
procedure CopyMsgMenuItemClick(Sender: TObject);
|
||||
@ -468,6 +469,7 @@ var
|
||||
MsgClearMenuItem: TIDEMenuCommand;
|
||||
MsgHideMsgOfTypeMenuItem: TIDEMenuCommand;
|
||||
MsgUnhideMsgTypeMenuSection: TIDEMenuSection;
|
||||
MsgUnhideMsgOfTypeMenuSection: TIDEMenuSection;
|
||||
MsgClearHideMsgTypesMenuItem: TIDEMenuCommand;
|
||||
MsgHideBelowMenuSection: TIDEMenuSection;
|
||||
MsgHideWarningsMenuItem: TIDEMenuCommand;
|
||||
@ -505,22 +507,22 @@ implementation
|
||||
|
||||
procedure RegisterStandardMessagesViewMenuItems;
|
||||
var
|
||||
Path: String;
|
||||
Parent: TIDEMenuSection;
|
||||
Root: TIDEMenuSection;
|
||||
begin
|
||||
MessagesMenuRoot := RegisterIDEMenuRoot(MessagesMenuRootName);
|
||||
Path := MessagesMenuRoot.Name;
|
||||
MsgFindMenuItem := RegisterIDEMenuCommand(Path, 'Find', 'Find ...');
|
||||
MsgQuickFixMenuSection := RegisterIDEMenuSection(Path, 'Quick Fix');
|
||||
MsgClearMenuItem := RegisterIDEMenuCommand(Path, 'Clear', lisClear);
|
||||
MsgHideMsgOfTypeMenuItem:=RegisterIDEMenuCommand(Path,'HideMsgOfType','');
|
||||
MsgUnhideMsgTypeMenuSection:=RegisterIDEMenuCommand(Parent,'UnhideMsgType');
|
||||
Root:=MessagesMenuRoot;
|
||||
MsgFindMenuItem := RegisterIDEMenuCommand(Root, 'Find', 'Find ...');
|
||||
MsgQuickFixMenuSection := RegisterIDEMenuSection(Root, 'Quick Fix');
|
||||
MsgClearMenuItem := RegisterIDEMenuCommand(Root, 'Clear', 'Clear');
|
||||
MsgHideMsgOfTypeMenuItem:=RegisterIDEMenuCommand(Root,'HideMsgOfType','');
|
||||
MsgUnhideMsgTypeMenuSection:=RegisterIDEMenuSection(Root,'UnhideMsgType');
|
||||
Parent:=MsgUnhideMsgTypeMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Unhide message type';
|
||||
MsgUnhideMsgOfTypeMenuSection:=RegisterIDEMenuSection(Parent,'UnhideMsgOfTypeSection');
|
||||
MsgClearHideMsgTypesMenuItem:=RegisterIDEMenuCommand(Parent,'Unhide all','Unhide all');
|
||||
MsgHideBelowMenuSection:=RegisterIDEMenuSection(Path,'Hide Below Section');
|
||||
MsgHideBelowMenuSection:=RegisterIDEMenuSection(Root,'Hide Below Section');
|
||||
Parent:=MsgHideBelowMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Hide non urgent messages ...';
|
||||
@ -530,37 +532,37 @@ begin
|
||||
MsgHideVerboseMenuItem:=RegisterIDEMenuCommand(Parent,'Hide verbose messages','Hide verbose messages');
|
||||
MsgHideDebugMenuItem:=RegisterIDEMenuCommand(Parent,'Hide debug messages','Hide debug messages');
|
||||
MsgHideNoneMenuItem:=RegisterIDEMenuCommand(Parent,'Hide none, do not hide by urgency','Hide none, do not hide by urgency');
|
||||
MsgHideHintsWithoutPosMenuItem:=RegisterIDEMenuCommand(Path, 'Hide hints without source position', 'Hide hints without source position');
|
||||
MsgSwitchFilterMenuSection:=RegisterIDEMenuSection(Path,'Switch Filter Section');
|
||||
MsgHideHintsWithoutPosMenuItem:=RegisterIDEMenuCommand(Root, 'Hide hints without source position', 'Hide hints without source position');
|
||||
MsgSwitchFilterMenuSection:=RegisterIDEMenuSection(Root,'Switch Filter Section');
|
||||
Parent:=MsgSwitchFilterMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Switch Filter Settings ...';
|
||||
MsgFiltersMenuSection:=RegisterIDEMenuSection(Parent,'Filters');
|
||||
MsgAddFilterMenuItem:=RegisterIDEMenuCommand(Parent,'Add Filter','Add filter ...');
|
||||
MsgCopyMenuSection:=RegisterIDEMenuSection(Path,'Copy');
|
||||
MsgCopyMenuSection:=RegisterIDEMenuSection(Root,'Copy');
|
||||
Parent:=MsgCopyMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Copy ...';
|
||||
MsgCopyFilenameMenuItem:=RegisterIDEMenuCommand(Parent,'Filename','Copy file name to clipboard');
|
||||
MsgCopyMsgMenuItem := RegisterIDEMenuCommand(Parent, 'Selected',lisCopySelectedMessagesToClipboard);
|
||||
MsgCopyShownMenuItem: := RegisterIDEMenuCommand(Parent, 'Shown', 'Copy shown messages to clipboard');
|
||||
MsgCopyAllMenuItem:=RegisterIDEMenuCommand(Parent,'All'.'Copy all/original messages to clipboard');
|
||||
MsgSaveToFileMenuSection:=RegisterIDEMenuSection(Path,'Save');
|
||||
MsgCopyShownMenuItem := RegisterIDEMenuCommand(Parent, 'Shown', 'Copy shown messages to clipboard');
|
||||
MsgCopyAllMenuItem:=RegisterIDEMenuCommand(Parent,'All','Copy all/original messages to clipboard');
|
||||
MsgSaveToFileMenuSection:=RegisterIDEMenuSection(Root,'Save');
|
||||
Parent:=MsgSaveToFileMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Save ...';
|
||||
MsgSaveShownToFileMenuItem:=RegisterIDEMenuCommand(Parent,'Save shown messages to file ...','Shown');
|
||||
MsgSaveAllToFileMenuItem:=RegisterIDEMenuCommand(Parent,'Save all/original messages to file ...','All');
|
||||
MsgFilenameStyleMenuSection:=RegisterIDEMenuSection(Path,'Filename Styles');
|
||||
MsgFilenameStyleMenuSection:=RegisterIDEMenuSection(Root,'Filename Styles');
|
||||
Parent:=MsgFilenameStyleMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Filename Style ...';
|
||||
MsgFileStyleShortMenuItem:=RegisterIDEMenuCommand(Parent,'Short','Short, no path');
|
||||
MsgFileStyleRelativeMenuItem:=RegisterIDEMenuCommand(Parent,'Relative','Relative');
|
||||
MsgFileStyleFullMenuItem:=RegisterIDEMenuCommand(Parent,'Full','Full');
|
||||
MsgTranslateMenuItem:=RegisterIDEMenuCommand(Path, 'Translate', 'Translate');
|
||||
MsgShowIDMenuItem:=RegisterIDEMenuCommand(Path, 'ShowID', 'Show message type ID');
|
||||
MsgAboutToolMenuItem:=RegisterIDEMenuCommand(Path, 'About', 'About Tool');
|
||||
MsgTranslateMenuItem:=RegisterIDEMenuCommand(Root, 'Translate', 'Translate');
|
||||
MsgShowIDMenuItem:=RegisterIDEMenuCommand(Root, 'ShowID', 'Show message type ID');
|
||||
MsgAboutToolMenuItem:=RegisterIDEMenuCommand(Root, 'About', 'About Tool');
|
||||
end;
|
||||
|
||||
function CompareHideMsgType(HideMsgType1, HideMsgType2: Pointer): integer;
|
||||
@ -2923,19 +2925,18 @@ procedure TMessagesFrame.MsgCtrlPopupMenuPopup(Sender: TObject);
|
||||
ExampleMsg: String;
|
||||
s: String;
|
||||
HideItem: TLMVFilterHideMsgType;
|
||||
Item: TMenuItem;
|
||||
i: Integer;
|
||||
Item: TIDEMenuCommand;
|
||||
begin
|
||||
// create one menuitem per filter item
|
||||
UnhideMsgTypeMenuItem.Visible:=MessagesCtrl.ActiveFilter.HideMsgTypeCount>0;
|
||||
MsgUnhideMsgTypeMenuSection.Visible:=MessagesCtrl.ActiveFilter.HideMsgTypeCount>0;
|
||||
for i:=0 to MessagesCtrl.ActiveFilter.HideMsgTypeCount-1 do begin
|
||||
Item:=UnhideMsgTypeMenuItem.Items[i];
|
||||
if Item=UnhideMsgTypeSeparatorMenuItem then begin
|
||||
Item:=TMenuItem.Create(UnhideMsgTypeMenuItem);
|
||||
if i>=MsgUnhideMsgOfTypeMenuSection.Count then begin
|
||||
Item:=RegisterIDEMenuCommand(MsgUnhideMsgOfTypeMenuSection,'MsgUnhideOfType'+IntToStr(i),'');
|
||||
Item.Tag:=i;
|
||||
Item.OnClick:=@UnhideMsgTypeClick;
|
||||
UnhideMsgTypeMenuItem.Insert(i,Item);
|
||||
end;
|
||||
end else
|
||||
Item:=MsgUnhideMsgTypeMenuSection.Items[i] as TIDEMenuCommand;
|
||||
HideItem:=MessagesCtrl.ActiveFilter.HideMsgTypes[i];
|
||||
s:=HideItem.SubTool;
|
||||
if HideItem.MsgID<>0 then
|
||||
@ -2947,43 +2948,46 @@ procedure TMessagesFrame.MsgCtrlPopupMenuPopup(Sender: TObject);
|
||||
end;
|
||||
// delete old menu items
|
||||
i:=MessagesCtrl.ActiveFilter.HideMsgTypeCount;
|
||||
while UnhideMsgTypeSeparatorMenuItem.MenuIndex>i do
|
||||
UnhideMsgTypeMenuItem.Delete(i);
|
||||
while MsgUnhideMsgTypeMenuSection.Count>i do
|
||||
MsgUnhideMsgTypeMenuSection[i].Free;
|
||||
MsgClearHideMsgTypesMenuItem.OnClick:=@ClearHideMsgTypesMenuItemClick;
|
||||
end;
|
||||
|
||||
procedure UpdateFilterItems;
|
||||
var
|
||||
i: Integer;
|
||||
Filter: TLMsgViewFilter;
|
||||
Item: TMenuItem;
|
||||
Item: TIDEMenuCommand;
|
||||
begin
|
||||
for i:=0 to MessagesCtrl.FilterCount-1 do begin
|
||||
Filter:=MessagesCtrl.Filters[i];
|
||||
if SwitchFilterMenuItem.Items[i]=FilterSeparatorMenuItem then begin
|
||||
Item:=TMenuItem.Create(SwitchFilterMenuItem);
|
||||
if i>=MsgSwitchFilterMenuSection.Count then begin
|
||||
Item:=RegisterIDEMenuCommand(MsgSwitchFilterMenuSection,'MsgSwitchFilter'+IntToStr(i),'');
|
||||
Item.Tag:=i;
|
||||
Item.OnClick:=@OnSwitchFilterClick;
|
||||
SwitchFilterMenuItem.Insert(i,Item);
|
||||
end else
|
||||
Item:=SwitchFilterMenuItem.Items[i];
|
||||
Item:=MsgSwitchFilterMenuSection[i] as TIDEMenuCommand;
|
||||
Item.Caption:=Filter.Caption;
|
||||
Item.Checked:=Filter=MessagesCtrl.ActiveFilter;
|
||||
end;
|
||||
// delete old menu items
|
||||
i:=MessagesCtrl.FilterCount;
|
||||
while FilterSeparatorMenuItem.MenuIndex>i do
|
||||
SwitchFilterMenuItem.Delete(i);
|
||||
while MsgSwitchFilterMenuSection.Count>i do
|
||||
MsgSwitchFilterMenuSection[i].Free;
|
||||
|
||||
MsgAddFilterMenuItem.OnClick:=@AddFilterMenuItemClick;
|
||||
end;
|
||||
|
||||
procedure UpdateQuickFixes(CurLine: TMessageLine);
|
||||
begin
|
||||
// delete old
|
||||
QuickFixesMenuItem.Clear;
|
||||
MsgQuickFixMenuSection.Clear;
|
||||
// create items
|
||||
if CurLine<>nil then begin
|
||||
IDEQuickFixes.SetMsgLines(CurLine);
|
||||
IDEQuickFixes.OnPopupMenu(QuickFixesMenuItem);
|
||||
IDEQuickFixes.OnPopupMenu(MsgQuickFixMenuSection);
|
||||
end;
|
||||
QuickFixesMenuItem.Visible:=QuickFixesMenuItem.Count>0;
|
||||
MsgQuickFixMenuSection.Visible:=MsgQuickFixMenuSection.Count>0;
|
||||
end;
|
||||
|
||||
var
|
||||
@ -2999,84 +3003,113 @@ var
|
||||
CanHideMsgType: Boolean;
|
||||
MinUrgency: TMessageLineUrgency;
|
||||
begin
|
||||
HasText:=false;
|
||||
HasFilename:=false;
|
||||
MsgType:='';
|
||||
CanHideMsgType:=false;
|
||||
Line:=nil;
|
||||
HasViewContent:=false;
|
||||
Running:=false;
|
||||
MessagesMenuRoot.MenuItem:=MsgCtrlPopupMenu.Items;
|
||||
MessagesMenuRoot.BeginUpdate;
|
||||
try
|
||||
HasText:=false;
|
||||
HasFilename:=false;
|
||||
MsgType:='';
|
||||
CanHideMsgType:=false;
|
||||
Line:=nil;
|
||||
HasViewContent:=false;
|
||||
Running:=false;
|
||||
|
||||
// check all
|
||||
for i:=0 to MessagesCtrl.ViewCount-1 do begin
|
||||
View:=MessagesCtrl.Views[i];
|
||||
if View.HasContent then
|
||||
HasViewContent:=true;
|
||||
if View.Running then
|
||||
Running:=true;
|
||||
end;
|
||||
|
||||
// check selection
|
||||
View:=MessagesCtrl.SelectedView;
|
||||
if View<>nil then begin
|
||||
LineNumber:=MessagesCtrl.SelectedLine;
|
||||
if LineNumber>=0 then begin
|
||||
Line:=View.Lines[LineNumber];
|
||||
HasFilename:=Line.Filename<>'';
|
||||
HasText:=Line.Msg<>'';
|
||||
if (Line.SubTool<>'') and (Line.MsgID<>0) then begin
|
||||
MsgType:=Line.SubTool+' '+IntToStr(Line.MsgID);
|
||||
CanHideMsgType:=ord(Line.Urgency)<ord(mluError);
|
||||
end;
|
||||
// check all
|
||||
for i:=0 to MessagesCtrl.ViewCount-1 do begin
|
||||
View:=MessagesCtrl.Views[i];
|
||||
if View.HasContent then
|
||||
HasViewContent:=true;
|
||||
if View.Running then
|
||||
Running:=true;
|
||||
end;
|
||||
|
||||
InfoSeparatorMenuItem.Visible:=true;
|
||||
MsgAboutToolMenuItem.Caption:='About '+View.Caption;
|
||||
MsgAboutToolMenuItem.Visible:=true;
|
||||
end else begin
|
||||
InfoSeparatorMenuItem.Visible:=false;
|
||||
MsgAboutToolMenuItem.Visible:=false;
|
||||
MsgFindMenuItem.OnClick:=@FindMenuItemClick;
|
||||
MsgClearMenuItem.OnClick:=@ClearMenuItemClick;
|
||||
|
||||
// check selection
|
||||
View:=MessagesCtrl.SelectedView;
|
||||
if View<>nil then begin
|
||||
LineNumber:=MessagesCtrl.SelectedLine;
|
||||
if LineNumber>=0 then begin
|
||||
Line:=View.Lines[LineNumber];
|
||||
HasFilename:=Line.Filename<>'';
|
||||
HasText:=Line.Msg<>'';
|
||||
if (Line.SubTool<>'') and (Line.MsgID<>0) then begin
|
||||
MsgType:=Line.SubTool+' '+IntToStr(Line.MsgID);
|
||||
CanHideMsgType:=ord(Line.Urgency)<ord(mluError);
|
||||
end;
|
||||
end;
|
||||
|
||||
MsgAboutToolMenuItem.Caption:='About '+View.Caption;
|
||||
MsgAboutToolMenuItem.Visible:=true;
|
||||
end else begin
|
||||
MsgAboutToolMenuItem.Visible:=false;
|
||||
end;
|
||||
MsgAboutToolMenuItem.OnClick:=@AboutToolMenuItemClick;
|
||||
|
||||
if CanHideMsgType then begin
|
||||
MsgHideMsgOfTypeMenuItem.Caption:='Hide all messages of type '+MsgType;
|
||||
MsgHideMsgOfTypeMenuItem.Visible:=true;
|
||||
end else begin
|
||||
MsgHideMsgOfTypeMenuItem.Visible:=false;
|
||||
end;
|
||||
MsgHideMsgOfTypeMenuItem.OnClick:=@HideMsgOfTypeMenuItemClick;
|
||||
MsgHideHintsWithoutPosMenuItem.Checked:=MessagesCtrl.ActiveFilter.HideNotesWithoutPos;
|
||||
MsgHideHintsWithoutPosMenuItem.OnClick:=@HideHintsWithoutPosMenuItemClick;
|
||||
|
||||
MsgCopyMsgMenuItem.Enabled:=HasText;
|
||||
MsgCopyMsgMenuItem.OnClick:=@CopyMsgMenuItemClick;
|
||||
MsgCopyFilenameMenuItem.Enabled:=HasFilename;
|
||||
MsgCopyFilenameMenuItem.OnClick:=@CopyFilenameMenuItemClick;
|
||||
MsgCopyAllMenuItem.Enabled:=not Running;
|
||||
MsgCopyAllMenuItem.OnClick:=@CopyAllMenuItemClick;
|
||||
MsgCopyShownMenuItem.Enabled:=HasViewContent;
|
||||
MsgCopyShownMenuItem.OnClick:=@CopyShownMenuItemClick;
|
||||
MsgSaveAllToFileMenuItem.Enabled:=not Running;
|
||||
MsgSaveAllToFileMenuItem.OnClick:=@SaveAllToFileMenuItemClick;
|
||||
MsgSaveShownToFileMenuItem.Enabled:=HasViewContent;
|
||||
MsgSaveShownToFileMenuItem.OnClick:=@SaveShownToFileMenuItemClick;
|
||||
|
||||
MinUrgency:=MessagesCtrl.ActiveFilter.MinUrgency;
|
||||
MsgHideWarningsMenuItem.Checked:=MinUrgency in [mluError..mluPanic];
|
||||
MsgHideWarningsMenuItem.OnClick:=@HideUrgencyMenuItemClick;
|
||||
MsgHideNotesMenuItem.Checked:=MinUrgency in [mluWarning,mluImportant];
|
||||
MsgHideNotesMenuItem.OnClick:=@HideUrgencyMenuItemClick;
|
||||
MsgHideHintsMenuItem.Checked:=MinUrgency=mluNote;
|
||||
MsgHideHintsMenuItem.OnClick:=@HideUrgencyMenuItemClick;
|
||||
MsgHideVerboseMenuItem.Checked:=MinUrgency=mluHint;
|
||||
MsgHideVerboseMenuItem.OnClick:=@HideUrgencyMenuItemClick;
|
||||
MsgHideDebugMenuItem.Checked:=MinUrgency in [mluProgress..mluVerbose];
|
||||
MsgHideDebugMenuItem.OnClick:=@HideUrgencyMenuItemClick;
|
||||
MsgHideNoneMenuItem.Checked:=MinUrgency=mluNone;
|
||||
MsgHideNoneMenuItem.OnClick:=@HideUrgencyMenuItemClick;
|
||||
|
||||
MsgFileStyleShortMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsShort;
|
||||
MsgFileStyleShortMenuItem.OnClick:=@FileStyleMenuItemClick;
|
||||
MsgFileStyleRelativeMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsRelative;
|
||||
MsgFileStyleRelativeMenuItem.OnClick:=@FileStyleMenuItemClick;
|
||||
MsgFileStyleFullMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsFull;
|
||||
MsgFileStyleFullMenuItem.OnClick:=@FileStyleMenuItemClick;
|
||||
|
||||
MsgTranslateMenuItem.OnClick:=@TranslateMenuItemClick;
|
||||
MsgShowIDMenuItem.OnClick:=@ShowIDMenuItemClick;
|
||||
|
||||
|
||||
UpdateUnhideItems;
|
||||
UpdateFilterItems;
|
||||
|
||||
UpdateQuickFixes(Line);
|
||||
finally
|
||||
MessagesMenuRoot.EndUpdate;
|
||||
end;
|
||||
|
||||
if CanHideMsgType then begin
|
||||
HideMsgOfTypeMenuItem.Caption:='Hide all messages of type '+MsgType;
|
||||
HideMsgOfTypeMenuItem.Visible:=true;
|
||||
end else begin
|
||||
HideMsgOfTypeMenuItem.Visible:=false;
|
||||
end;
|
||||
MsgHideHintsWithoutPosMenuItem.Checked:=MessagesCtrl.ActiveFilter.HideNotesWithoutPos;
|
||||
|
||||
MsgCopyMsgMenuItem.Enabled:=HasText;
|
||||
MsgCopyFilenameMenuItem.Enabled:=HasFilename;
|
||||
MsgCopyAllMenuItem.Enabled:=not Running;
|
||||
MsgCopyShownMenuItem.Enabled:=HasViewContent;
|
||||
MsgSaveAllToFileMenuItem.Enabled:=not Running;
|
||||
MsgSaveShownToFileMenuItem.Enabled:=HasViewContent;
|
||||
|
||||
MinUrgency:=MessagesCtrl.ActiveFilter.MinUrgency;
|
||||
MsgHideWarningsMenuItem.Checked:=MinUrgency in [mluError..mluPanic];
|
||||
MsgHideNotesMenuItem.Checked:=MinUrgency in [mluWarning,mluImportant];
|
||||
MsgHideHintsMenuItem.Checked:=MinUrgency=mluNote;
|
||||
MsgHideVerboseMenuItem.Checked:=MinUrgency=mluHint;
|
||||
MsgHideDebugMenuItem.Checked:=MinUrgency in [mluProgress..mluVerbose];
|
||||
MsgHideNoneMenuItem.Checked:=MinUrgency=mluNone;
|
||||
|
||||
MsgFileStyleShortMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsShort;
|
||||
MsgFileStyleRelativeMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsRelative;
|
||||
MsgFileStyleFullMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsFull;
|
||||
|
||||
UpdateUnhideItems;
|
||||
UpdateFilterItems;
|
||||
|
||||
UpdateQuickFixes(Line);
|
||||
end;
|
||||
|
||||
procedure TMessagesFrame.OnSwitchFilterClick(Sender: TObject);
|
||||
var
|
||||
Item: TMenuItem;
|
||||
Filter: TLMsgViewFilter;
|
||||
Item: TIDEMenuCommand;
|
||||
begin
|
||||
Item:=Sender as TMenuItem;
|
||||
Item:=Sender as TIDEMenuCommand;
|
||||
Filter:=MessagesCtrl.GetFilter(Item.Caption,false);
|
||||
if Filter=nil then exit;
|
||||
MessagesCtrl.ActiveFilter:=Filter;
|
||||
@ -3144,7 +3177,7 @@ procedure TMessagesFrame.UnhideMsgTypeClick(Sender: TObject);
|
||||
var
|
||||
i: PtrInt;
|
||||
begin
|
||||
i:=TMenuItem(Sender).Tag;
|
||||
i:=TIDEMenuCommand(Sender).Tag;
|
||||
if i<MessagesCtrl.ActiveFilter.HideMsgTypeCount then
|
||||
MessagesCtrl.ActiveFilter.DeleteHideMsgType(i);
|
||||
end;
|
||||
@ -3351,6 +3384,11 @@ begin
|
||||
MessagesCtrl.ActiveFilter.ClearHideMsgTypes;
|
||||
end;
|
||||
|
||||
procedure TMessagesFrame.ClearMenuItemClick(Sender: TObject);
|
||||
begin
|
||||
MessagesCtrl.ClearViews;
|
||||
end;
|
||||
|
||||
function TMessagesFrame.GetViews(Index: integer): TLMsgWndView;
|
||||
begin
|
||||
Result:=MessagesCtrl.Views[Index];
|
||||
|
@ -49,7 +49,7 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, IDEExternToolIntf, IDEMsgIntf, LazIDEIntf, IDEDialogs,
|
||||
Menus, Dialogs, Controls, etFPCMsgParser, AbstractsMethodsDlg,
|
||||
MenuIntf, Menus, Dialogs, Controls, etFPCMsgParser, AbstractsMethodsDlg,
|
||||
CodeToolManager, CodeCache, CodeTree, CodeAtom, BasicCodeTools, LazLogger,
|
||||
AvgLvlTree, LazFileUtils;
|
||||
|
||||
@ -106,20 +106,20 @@ type
|
||||
|
||||
TIDEQuickFixes = class(TMsgQuickFixes)
|
||||
private
|
||||
FParentMenuItem: TMenuItem;
|
||||
fMenuItemToInfo: TPointerToPointerTree; // TMenuItem to TMenuItemInfo
|
||||
FParentMenuItem: TIDEMenuSection;
|
||||
fMenuItemToInfo: TPointerToPointerTree; // TIDEMenuCommand to TMenuItemInfo
|
||||
procedure MenuItemClick(Sender: TObject);
|
||||
public
|
||||
constructor Create(aOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
procedure OnPopupMenu(aParentMenuItem: TMenuItem);
|
||||
procedure OnPopupMenu(aParentMenuItem: TIDEMenuSection);
|
||||
procedure SetMsgLines(aMsg: TMessageLine);
|
||||
procedure AddMsgLine(aMsg: TMessageLine);
|
||||
procedure ClearLines;
|
||||
function AddMenuItem(Fix: TMsgQuickFix; Msg: TMessageLine; aCaption: string;
|
||||
aTag: PtrInt=0): TMenuItem; override;
|
||||
aTag: PtrInt=0): TIDEMenuCommand; override;
|
||||
function OpenMsg(Msg: TMessageLine): boolean;
|
||||
property ParentMenuItem: TMenuItem read FParentMenuItem write FParentMenuItem;
|
||||
property ParentMenuItem: TIDEMenuSection read FParentMenuItem write FParentMenuItem;
|
||||
end;
|
||||
|
||||
var
|
||||
@ -130,7 +130,7 @@ implementation
|
||||
type
|
||||
TMenuItemInfo = class
|
||||
public
|
||||
MenuItem: TMenuItem;
|
||||
MenuItem: TIDEMenuCommand;
|
||||
Fix: TMsgQuickFix;
|
||||
Msg: TMessageLine;
|
||||
end;
|
||||
@ -642,8 +642,10 @@ var
|
||||
Info: TMenuItemInfo;
|
||||
ListsMsgLines: TFPList;
|
||||
MsgLines: TMessageLines;
|
||||
Cmd: TIDEMenuCommand;
|
||||
begin
|
||||
Info:=TMenuItemInfo(fMenuItemToInfo[Sender]);
|
||||
Cmd:=Sender as TIDEMenuCommand;
|
||||
Info:=TMenuItemInfo(fMenuItemToInfo[Cmd]);
|
||||
if Info=nil then exit;
|
||||
try
|
||||
Info.Fix.QuickFix(Self,Info.Msg);
|
||||
@ -682,7 +684,7 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TIDEQuickFixes.OnPopupMenu(aParentMenuItem: TMenuItem);
|
||||
procedure TIDEQuickFixes.OnPopupMenu(aParentMenuItem: TIDEMenuSection);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
@ -721,7 +723,7 @@ begin
|
||||
end;
|
||||
|
||||
function TIDEQuickFixes.AddMenuItem(Fix: TMsgQuickFix; Msg: TMessageLine;
|
||||
aCaption: string; aTag: PtrInt): TMenuItem;
|
||||
aCaption: string; aTag: PtrInt): TIDEMenuCommand;
|
||||
var
|
||||
Info: TMenuItemInfo;
|
||||
begin
|
||||
@ -730,16 +732,14 @@ begin
|
||||
if (aCaption='') then
|
||||
raise Exception.Create('missing Caption');
|
||||
if (ParentMenuItem.Count>50) then exit(nil);
|
||||
Result:=TMenuItem.Create(Self);
|
||||
Result:=RegisterIDEMenuCommand(ParentMenuItem,
|
||||
'MsgQuickFix'+IntToStr(ParentMenuItem.Count),aCaption,@MenuItemClick);
|
||||
Result.Tag:=aTag;
|
||||
Info:=TMenuItemInfo.Create;
|
||||
Info.MenuItem:=Result;
|
||||
Info.Fix:=Fix;
|
||||
Info.Msg:=Msg;
|
||||
Info.MenuItem:=Result;
|
||||
fMenuItemToInfo[Result]:=Info;
|
||||
Result.Caption:=aCaption;
|
||||
Result.Tag:=aTag;
|
||||
Result.OnClick:=@MenuItemClick;
|
||||
ParentMenuItem.Add(Result);
|
||||
end;
|
||||
|
||||
function TIDEQuickFixes.OpenMsg(Msg: TMessageLine): boolean;
|
||||
|
@ -51,7 +51,7 @@ uses
|
||||
{$ELSE}
|
||||
OutputFilter,
|
||||
{$ENDIF}
|
||||
LazarusIDEStrConsts, IDEOptionDefs;
|
||||
LazarusIDEStrConsts, IDEOptionDefs, EditorOptions;
|
||||
|
||||
const
|
||||
MaxExtTools = ecExtToolLast-ecExtToolFirst+1;
|
||||
@ -634,6 +634,7 @@ end;
|
||||
|
||||
procedure TExternalToolDialog.AddButtonClick(Sender: TObject);
|
||||
var
|
||||
MsgResult: TModalResult;
|
||||
{$IFDEF EnableNewExtTools}
|
||||
NewTool: TExternalToolMenuItem;
|
||||
{$ELSE}
|
||||
@ -648,11 +649,13 @@ begin
|
||||
end;
|
||||
{$IFDEF EnableNewExtTools}
|
||||
NewTool:=TExternalToolMenuItem.Create(nil);
|
||||
MsgResult:=ShowExtToolOptionDlg(fTransferMacros, NewTool, EditorOpts.KeyMap);
|
||||
{$ELSE}
|
||||
NewTool:=TExternalToolOptions.Create;
|
||||
MsgResult:=ShowExtToolOptionDlg(fTransferMacros, NewTool,
|
||||
TExternalToolList(EnvironmentOptions.ExternalTools).fAllKeys);
|
||||
{$ENDIF}
|
||||
if ShowExtToolOptionDlg(fTransferMacros, NewTool,
|
||||
TExternalToolList(EnvironmentOptions.ExternalTools).fAllKeys)=mrOk then
|
||||
if MsgResult=mrOk then
|
||||
begin
|
||||
fExtToolList.Add(NewTool);
|
||||
Listbox.Items.Add(ToolDescription(fExtToolList.Count-1));
|
||||
@ -747,7 +750,12 @@ begin
|
||||
i:=Listbox.ItemIndex;
|
||||
if i<0 then exit;
|
||||
if ShowExtToolOptionDlg(fTransferMacros,fExtToolList[i],
|
||||
TExternalToolList(EnvironmentOptions.ExternalTools).fAllKeys)=mrOk then
|
||||
{$IFDEF EnableNewExtTools}
|
||||
EditorOpts.KeyMap
|
||||
{$ELSE}
|
||||
TExternalToolList(EnvironmentOptions.ExternalTools).fAllKeys
|
||||
{$ENDIF}
|
||||
)=mrOk then
|
||||
begin
|
||||
Listbox.Items[i]:=ToolDescription(i);
|
||||
EnableButtons;
|
||||
|
@ -48,6 +48,7 @@ uses
|
||||
IDECommands, FileProcs, TransferMacros, LazarusIDEStrConsts, EnvironmentOpts,
|
||||
KeyMapping, IDEProcs
|
||||
{$IFDEF EnableNewExtTools}
|
||||
,LazConfigStorage, contnrs
|
||||
{$ELSE}
|
||||
,EditMsgScannersDlg
|
||||
{$ENDIF}
|
||||
@ -218,7 +219,7 @@ type
|
||||
|
||||
|
||||
function ShowExtToolOptionDlg(TransferMacroList: TTransferMacroList;
|
||||
ExternalToolOptions: {$IFDEF EnableNewExtTools}TExternalToolMenuItem{$ELSE}TExternalToolOptions{$ENDIF};
|
||||
ExternalToolMenuItem: {$IFDEF EnableNewExtTools}TExternalToolMenuItem{$ELSE}TExternalToolOptions{$ENDIF};
|
||||
AllKeys: TKeyCommandRelationList):TModalResult;
|
||||
|
||||
implementation
|
||||
@ -226,7 +227,7 @@ implementation
|
||||
{$R *.lfm}
|
||||
|
||||
function ShowExtToolOptionDlg(TransferMacroList: TTransferMacroList;
|
||||
ExternalToolOptions: {$IFDEF EnableNewExtTools}TExternalToolMenuItem{$ELSE}TExternalToolOptions{$ENDIF};
|
||||
ExternalToolMenuItem: {$IFDEF EnableNewExtTools}TExternalToolMenuItem{$ELSE}TExternalToolOptions{$ENDIF};
|
||||
AllKeys: TKeyCommandRelationList):TModalResult;
|
||||
var
|
||||
ExternalToolOptionDlg: TExternalToolOptionDlg;
|
||||
@ -235,11 +236,11 @@ begin
|
||||
ExternalToolOptionDlg:=TExternalToolOptionDlg.Create(nil);
|
||||
try
|
||||
ExternalToolOptionDlg.fAllKeys:=AllKeys;
|
||||
ExternalToolOptionDlg.Options:=ExternalToolOptions;
|
||||
ExternalToolOptionDlg.Options:=ExternalToolMenuItem;
|
||||
ExternalToolOptionDlg.MacroList:=TransferMacroList;
|
||||
Result:=ExternalToolOptionDlg.ShowModal;
|
||||
if Result=mrOk then
|
||||
ExternalToolOptions.Assign(ExternalToolOptionDlg.Options);
|
||||
ExternalToolMenuItem.Assign(ExternalToolOptionDlg.Options);
|
||||
finally
|
||||
ExternalToolOptionDlg.Free;
|
||||
end;
|
||||
|
@ -34,13 +34,15 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, types, math, AVL_Tree, LazLogger, LazFileUtils, LazUTF8,
|
||||
Forms, Controls, ExtCtrls, ComCtrls, StdCtrls, Buttons, Dialogs, Menus, Clipbrd,
|
||||
LvlGraphCtrl,
|
||||
LazIDEIntf, ProjectIntf, IDEWindowIntf, PackageIntf, SrcEditorIntf,
|
||||
IDEImagesIntf, IDECommands, IDEDialogs, IDEMsgIntf, TextTools,
|
||||
Forms, Controls, ExtCtrls, ComCtrls, StdCtrls, Buttons, Dialogs, Menus,
|
||||
Clipbrd, LvlGraphCtrl, LazIDEIntf, ProjectIntf, IDEWindowIntf, PackageIntf,
|
||||
SrcEditorIntf, IDEImagesIntf, IDECommands, IDEDialogs, IDEMsgIntf, TextTools,
|
||||
{$IFDEF EnableNewExtTools}
|
||||
IDEExternToolIntf,
|
||||
{$ENDIF}
|
||||
CodeToolManager, DefineTemplates, CodeToolsStructs,
|
||||
CTUnitGraph, CTUnitGroupGraph, FileProcs, CodeCache,
|
||||
LazarusIDEStrConsts, UnusedUnitsDlg;
|
||||
CTUnitGraph, CTUnitGroupGraph, FileProcs, CodeCache, LazarusIDEStrConsts,
|
||||
UnusedUnitsDlg;
|
||||
|
||||
const
|
||||
GroupPrefixProject = '-Project-';
|
||||
@ -297,6 +299,17 @@ type
|
||||
write SetPendingUnitDependencyRoute; // list of unit names, missing links are automatically found
|
||||
end;
|
||||
|
||||
{$IFDEF EnableNewExtTools}
|
||||
type
|
||||
|
||||
{ TQuickFixCircularUnitReference }
|
||||
|
||||
TQuickFixCircularUnitReference = class(TMsgQuickFix)
|
||||
public
|
||||
procedure CreateMenuItems(Fixes: TMsgQuickFixes); override;
|
||||
procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override;
|
||||
end;
|
||||
{$ELSE}
|
||||
type
|
||||
|
||||
{ TQuickFixCircularUnitReference }
|
||||
@ -307,6 +320,7 @@ type
|
||||
function IsApplicable(Line: TIDEMessageLine): boolean; override;
|
||||
procedure Execute(const Msg: TIDEMessageLine; Step: TIMQuickFixStep); override;
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
var
|
||||
UnitDependenciesWindow: TUnitDependenciesWindow;
|
||||
@ -408,6 +422,48 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
{$IFDEF EnableNewExtTools}
|
||||
{ TQuickFixCircularUnitReference }
|
||||
|
||||
procedure TQuickFixCircularUnitReference.CreateMenuItems(
|
||||
Fixes: TMsgQuickFixes);
|
||||
var
|
||||
Msg: TMessageLine;
|
||||
Code: TCodeBuffer;
|
||||
begin
|
||||
if Fixes.LineCount<>1 then exit;
|
||||
Msg:=Fixes.Lines[0];
|
||||
if not Msg.HasSourcePosition then exit;
|
||||
if Msg.SubTool<>SubToolFPC then exit;
|
||||
if Msg.MsgID<>10020 then exit;
|
||||
Code:=CodeToolBoss.LoadFile(Msg.GetFullFilename,true,false);
|
||||
if Code=nil then exit;
|
||||
Fixes.AddMenuItem(Self,Msg,'Show unit dependencies');
|
||||
end;
|
||||
|
||||
procedure TQuickFixCircularUnitReference.QuickFix(Fixes: TMsgQuickFixes;
|
||||
Msg: TMessageLine);
|
||||
var
|
||||
UnitName1: String;
|
||||
UnitName2: String;
|
||||
Path: TStringList;
|
||||
begin
|
||||
if not TFPCParser.GetFPCMsgValues(Msg,UnitName1,UnitName2) then begin
|
||||
debugln(['TQuickFixCircularUnitReference.QuickFix invalid message ',Msg.Msg]);
|
||||
exit;
|
||||
end;
|
||||
ShowUnitDependencies(true,true);
|
||||
Path:=TStringList.Create;
|
||||
try
|
||||
Path.Add(UnitName1);
|
||||
Path.Add(UnitName2);
|
||||
Path.Add(UnitName1);
|
||||
UnitDependenciesWindow.PendingUnitDependencyRoute:=Path;
|
||||
finally
|
||||
Path.Free;
|
||||
end;
|
||||
end;
|
||||
{$ELSE}
|
||||
{ TQuickFixCircularUnitReference }
|
||||
|
||||
constructor TQuickFixCircularUnitReference.Create;
|
||||
@ -467,6 +523,7 @@ begin
|
||||
Path.Free;
|
||||
end;
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
{ TUDNode }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user