mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 01:28:19 +02:00
IDE: Move Refactor menu under Source menu
git-svn-id: trunk@30506 -
This commit is contained in:
parent
83f8c96fe4
commit
d3cfc4ada0
@ -148,7 +148,6 @@ resourcestring
|
||||
lisMenuEdit = '&Edit';
|
||||
lisMenuSearch = '&Search';
|
||||
lisMenuSource = 'S&ource';
|
||||
lisMenuRefactor = 'Ref&actor';
|
||||
lisMenuView = '&View';
|
||||
lisMenuProject = '&Project';
|
||||
lisMenuRun = '&Run';
|
||||
|
133
ide/main.pp
133
ide/main.pp
@ -285,7 +285,6 @@ type
|
||||
procedure mnuSourceUnitInfoClicked(Sender: TObject);
|
||||
|
||||
// refactor menu
|
||||
procedure mnuRefactorClicked(Sender: TObject);
|
||||
procedure mnuRefactorCompleteCodeClicked(Sender: TObject);
|
||||
procedure mnuRefactorUseUnitClicked(Sender: TObject);
|
||||
procedure mnuRefactorRenameIdentifierClicked(Sender: TObject);
|
||||
@ -662,7 +661,6 @@ type
|
||||
procedure SetupSearchMenu; override;
|
||||
procedure SetupViewMenu; override;
|
||||
procedure SetupSourceMenu; override;
|
||||
procedure SetupRefactorMenu; override;
|
||||
procedure SetupProjectMenu; override;
|
||||
procedure SetupRunMenu; override;
|
||||
procedure SetupComponentsMenu; override;
|
||||
@ -2359,7 +2357,6 @@ begin
|
||||
SetupSearchMenu;
|
||||
SetupViewMenu;
|
||||
SetupSourceMenu;
|
||||
SetupRefactorMenu;
|
||||
SetupProjectMenu;
|
||||
SetupRunMenu;
|
||||
SetupComponentsMenu;
|
||||
@ -2523,7 +2520,21 @@ begin
|
||||
itmSourceSyntaxCheck.OnClick := @mnuSourceSyntaxCheckClicked;
|
||||
itmSourceGuessUnclosedBlock.OnClick := @mnuSourceGuessUnclosedBlockClicked;
|
||||
itmSourceGuessMisplacedIFDEF.OnClick := @mnuSourceGuessMisplacedIFDEFClicked;
|
||||
|
||||
// Refactor
|
||||
itmRefactorCompleteCode.OnClick:=@mnuRefactorCompleteCodeClicked;
|
||||
itmRefactorUseUnit.OnClick:=@mnuRefactorUseUnitClicked;
|
||||
itmRefactorRenameIdentifier.OnClick:=@mnuRefactorRenameIdentifierClicked;
|
||||
itmRefactorExtractProc.OnClick:=@mnuRefactorExtractProcClicked;
|
||||
itmRefactorInvertAssignment.OnClick:=@mnuRefactorInvertAssignmentClicked;
|
||||
// itmRefactorAdvanced
|
||||
itmRefactorShowAbstractMethods.OnClick:=@mnuRefactorShowAbstractMethodsClicked;
|
||||
itmRefactorShowEmptyMethods.OnClick:=@mnuRefactorShowEmptyMethodsClicked;
|
||||
itmRefactorShowUnusedUnits.OnClick:=@mnuRefactorShowUnusedUnitsClicked;
|
||||
{$IFDEF EnableFindOverloads}
|
||||
itmRefactorFindOverloads.OnClick:=@mnuRefactorFindOverloadsClicked;
|
||||
{$ENDIF}
|
||||
// itmRefactorTools
|
||||
itmRefactorMakeResourceString.OnClick := @mnuRefactorMakeResourceStringClicked;
|
||||
// insert CVS keyword
|
||||
itmSourceInsertCVSAuthor.OnClick:=@mnuSourceInsertCVSAuthorClick;
|
||||
itmSourceInsertCVSDate.OnClick:=@mnuSourceInsertCVSDateClick;
|
||||
@ -2546,28 +2557,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainIDE.SetupRefactorMenu;
|
||||
begin
|
||||
inherited SetupRefactorMenu;
|
||||
mnuRefactor.OnClick:=@mnuRefactorClicked;
|
||||
with MainIDEBar do begin
|
||||
itmRefactorCompleteCode.OnClick:=@mnuRefactorCompleteCodeClicked;
|
||||
itmRefactorUseUnit.OnClick:=@mnuRefactorUseUnitClicked;
|
||||
itmRefactorRenameIdentifier.OnClick:=@mnuRefactorRenameIdentifierClicked;
|
||||
itmRefactorExtractProc.OnClick:=@mnuRefactorExtractProcClicked;
|
||||
itmRefactorInvertAssignment.OnClick:=@mnuRefactorInvertAssignmentClicked;
|
||||
// itmRefactorAdvanced
|
||||
itmRefactorShowAbstractMethods.OnClick:=@mnuRefactorShowAbstractMethodsClicked;
|
||||
itmRefactorShowEmptyMethods.OnClick:=@mnuRefactorShowEmptyMethodsClicked;
|
||||
itmRefactorShowUnusedUnits.OnClick:=@mnuRefactorShowUnusedUnitsClicked;
|
||||
{$IFDEF EnableFindOverloads}
|
||||
itmRefactorFindOverloads.OnClick:=@mnuRefactorFindOverloadsClicked;
|
||||
{$ENDIF}
|
||||
// itmRefactorTools
|
||||
itmRefactorMakeResourceString.OnClick := @mnuRefactorMakeResourceStringClicked;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainIDE.SetupProjectMenu;
|
||||
begin
|
||||
inherited SetupProjectMenu;
|
||||
@ -3857,46 +3846,7 @@ procedure TMainIDE.mnuSourceClicked(Sender: TObject);
|
||||
var
|
||||
ASrcEdit: TSourceEditor;
|
||||
AnUnitInfo: TUnitInfo;
|
||||
Editable: Boolean;
|
||||
SelAvail: Boolean;
|
||||
SelEditable: Boolean;
|
||||
begin
|
||||
GetCurrentUnit(ASrcEdit,AnUnitInfo);
|
||||
Editable:=(ASrcEdit<>nil) and (not ASrcEdit.ReadOnly);
|
||||
SelAvail:=(ASrcEdit<>nil) and (ASrcEdit.SelectionAvailable);
|
||||
SelEditable:=Editable and SelAvail;
|
||||
with MainIDEBar do begin
|
||||
//itmSourceBlockActions: TIDEMenuSection;
|
||||
itmSourceCommentBlock.Enabled:=SelEditable;
|
||||
itmSourceUncommentBlock.Enabled:=SelEditable;
|
||||
itmSourceEncloseBlock.Enabled:=SelEditable;
|
||||
itmSourceEncloseInIFDEF.Enabled:=SelEditable;
|
||||
//itmSourceInsertions: TIDEMenuSection;
|
||||
//itmSourceInsertCVSKeyWord: TIDEMenuSection;
|
||||
itmSourceInsertCVSAuthor.Enabled:=Editable;
|
||||
itmSourceInsertCVSDate.Enabled:=Editable;
|
||||
itmSourceInsertCVSHeader.Enabled:=Editable;
|
||||
itmSourceInsertCVSID.Enabled:=Editable;
|
||||
itmSourceInsertCVSLog.Enabled:=Editable;
|
||||
itmSourceInsertCVSName.Enabled:=Editable;
|
||||
itmSourceInsertCVSRevision.Enabled:=Editable;
|
||||
itmSourceInsertCVSSource.Enabled:=Editable;
|
||||
//itmSourceInsertGeneral: TIDEMenuSection;
|
||||
itmSourceInsertGPLNotice.Enabled:=Editable;
|
||||
itmSourceInsertLGPLNotice.Enabled:=Editable;
|
||||
itmSourceInsertModifiedLGPLNotice.Enabled:=Editable;
|
||||
itmSourceInsertUsername.Enabled:=Editable;
|
||||
itmSourceInsertDateTime.Enabled:=Editable;
|
||||
itmSourceInsertChangeLogEntry.Enabled:=Editable;
|
||||
end;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------}
|
||||
procedure TMainIDE.mnuRefactorClicked(Sender: TObject);
|
||||
var
|
||||
ASrcEdit: TSourceEditor;
|
||||
AnUnitInfo: TUnitInfo;
|
||||
Editable, SelAvail, IdentFound, StringFound: Boolean;
|
||||
Editable, SelEditable, SelAvail, IdentFound, StringFound: Boolean;
|
||||
CurrentUnitName: String;
|
||||
AvailUnits: TStringList;
|
||||
StartCode, EndCode: TCodeBuffer;
|
||||
@ -3904,15 +3854,12 @@ var
|
||||
NewX, NewY, NewTopLine: integer;
|
||||
CursorXY: TPoint;
|
||||
begin
|
||||
Editable:=False;
|
||||
SelAvail:=False;
|
||||
IdentFound:=False;
|
||||
StringFound:=False;
|
||||
AvailUnits:=nil;
|
||||
try
|
||||
if BeginCodeTool(ASrcEdit,AnUnitInfo,[]) then begin
|
||||
Editable:=not ASrcEdit.ReadOnly;
|
||||
SelAvail:=ASrcEdit.SelectionAvailable;
|
||||
// GetCurrentUnit(ASrcEdit,AnUnitInfo);
|
||||
Editable:=(ASrcEdit<>nil) and (not ASrcEdit.ReadOnly);
|
||||
SelAvail:=(ASrcEdit<>nil) and (ASrcEdit.SelectionAvailable);
|
||||
|
||||
// Get Available Units count to enable UseProjUnit feature.
|
||||
AvailUnits:=GetAvailableUnits(ASrcEdit, CurrentUnitName);
|
||||
@ -3930,16 +3877,40 @@ begin
|
||||
EndCode,EndPos.X,EndPos.Y,true) then
|
||||
StringFound:=(StartCode<>EndCode) or (CompareCaret(StartPos,EndPos)<>0);
|
||||
end;
|
||||
SelEditable:=Editable and SelAvail;
|
||||
with MainIDEBar do begin
|
||||
//itmRefactorCodeTools
|
||||
itmRefactorCompleteCode.Enabled:=Editable;
|
||||
itmRefactorUseUnit.Enabled:=Editable and
|
||||
Assigned(AvailUnits) and (AvailUnits.Count>0);
|
||||
itmRefactorRenameIdentifier.Enabled:=Editable and IdentFound;
|
||||
itmRefactorExtractProc.Enabled:=Editable and SelAvail;
|
||||
itmRefactorInvertAssignment.Enabled:=Editable and SelAvail;
|
||||
//itmRefactorAdvanced
|
||||
itmRefactorMakeResourceString.Enabled:=Editable and StringFound;
|
||||
//itmSourceBlockActions
|
||||
itmSourceCommentBlock.Enabled:=SelEditable;
|
||||
itmSourceUncommentBlock.Enabled:=SelEditable;
|
||||
itmSourceEncloseBlock.Enabled:=SelEditable;
|
||||
itmSourceEncloseInIFDEF.Enabled:=SelEditable;
|
||||
//itmSourceInsertions
|
||||
//itmSourceInsertCVSKeyWord
|
||||
itmSourceInsertCVSAuthor.Enabled:=Editable;
|
||||
itmSourceInsertCVSDate.Enabled:=Editable;
|
||||
itmSourceInsertCVSHeader.Enabled:=Editable;
|
||||
itmSourceInsertCVSID.Enabled:=Editable;
|
||||
itmSourceInsertCVSLog.Enabled:=Editable;
|
||||
itmSourceInsertCVSName.Enabled:=Editable;
|
||||
itmSourceInsertCVSRevision.Enabled:=Editable;
|
||||
itmSourceInsertCVSSource.Enabled:=Editable;
|
||||
//itmSourceInsertGeneral
|
||||
itmSourceInsertGPLNotice.Enabled:=Editable;
|
||||
itmSourceInsertLGPLNotice.Enabled:=Editable;
|
||||
itmSourceInsertModifiedLGPLNotice.Enabled:=Editable;
|
||||
itmSourceInsertUsername.Enabled:=Editable;
|
||||
itmSourceInsertDateTime.Enabled:=Editable;
|
||||
itmSourceInsertChangeLogEntry.Enabled:=Editable;
|
||||
//itmSourceRefactor
|
||||
//itmRefactorCodeTools
|
||||
itmRefactorCompleteCode.Enabled:=Editable;
|
||||
itmRefactorUseUnit.Enabled:=Editable and
|
||||
Assigned(AvailUnits) and (AvailUnits.Count>0);
|
||||
itmRefactorRenameIdentifier.Enabled:=Editable and IdentFound;
|
||||
itmRefactorExtractProc.Enabled:=Editable and SelAvail;
|
||||
itmRefactorInvertAssignment.Enabled:=Editable and SelAvail;
|
||||
//itmRefactorAdvanced
|
||||
itmRefactorMakeResourceString.Enabled:=Editable and StringFound;
|
||||
end;
|
||||
finally
|
||||
AvailUnits.Free;
|
||||
|
@ -109,7 +109,6 @@ type
|
||||
procedure SetupSearchMenu; virtual;
|
||||
procedure SetupViewMenu; virtual;
|
||||
procedure SetupSourceMenu; virtual;
|
||||
procedure SetupRefactorMenu; virtual;
|
||||
procedure SetupProjectMenu; virtual;
|
||||
procedure SetupRunMenu; virtual;
|
||||
procedure SetupComponentsMenu; virtual;
|
||||
@ -357,7 +356,6 @@ begin
|
||||
CreateMainMenuItem(mnuSearch,'Search',lisMenuSearch);
|
||||
CreateMainMenuItem(mnuView,'View',lisMenuView);
|
||||
CreateMainMenuItem(mnuSource,'Source',lisMenuSource);
|
||||
CreateMainMenuItem(mnuRefactor,'Refactor',lisMenuRefactor);
|
||||
CreateMainMenuItem(mnuProject,'Project',lisMenuProject);
|
||||
CreateMainMenuItem(mnuRun,'Run',lisMenuRun);
|
||||
CreateMainMenuItem(mnuPackage,'Package',lisMenuPackage);
|
||||
@ -561,7 +559,32 @@ begin
|
||||
CreateMenuItem(ParentMI,itmSourceToggleComment,'itmSourceToggleComment',lisMenuToggleComment, 'menu_comment');
|
||||
CreateMenuItem(ParentMI,itmSourceEncloseBlock,'itmSourceEncloseBlock',lisMenuEncloseSelection);
|
||||
CreateMenuItem(ParentMI,itmSourceEncloseInIFDEF,'itmSourceEncloseInIFDEF',lisMenuEncloseInIFDEF);
|
||||
// Refactor
|
||||
CreateMenuSeparatorSection(mnuSource,itmSourceRefactor,'itmSourceRefactor');
|
||||
CreateMenuSubSection(ParentMI,itmSourceRefactor,'itmSourceRefactor',uemRefactor);
|
||||
SubParentMI:=itmSourceRefactor;
|
||||
CreateMenuSeparatorSection(SubParentMI,itmRefactorCodeTools,'itmRefactorCodeTools');
|
||||
ParentMI:=itmRefactorCodeTools;
|
||||
CreateMenuItem(ParentMI,itmRefactorCompleteCode,'itmRefactorCompleteCode',lisMenuCompleteCode);
|
||||
CreateMenuItem(ParentMI,itmRefactorUseUnit,'itmRefactorUseUnit',lisMenuUseProjectUnit);
|
||||
CreateMenuItem(ParentMI,itmRefactorRenameIdentifier,'itmRefactorRenameIdentifier',lisMenuRenameIdentifier);
|
||||
CreateMenuItem(ParentMI,itmRefactorExtractProc,'itmRefactorExtractProc',lisMenuExtractProc);
|
||||
CreateMenuItem(ParentMI,itmRefactorInvertAssignment,'itmInvertAssignment',uemInvertAssignment);
|
||||
|
||||
CreateMenuSeparatorSection(SubParentMI,itmRefactorAdvanced,'itmRefactorAdvanced');
|
||||
ParentMI:=itmRefactorAdvanced;
|
||||
CreateMenuItem(ParentMI,itmRefactorShowAbstractMethods,'itmShowAbstractMethods',srkmecAbstractMethods);
|
||||
CreateMenuItem(ParentMI,itmRefactorShowEmptyMethods,'itmShowEmptyMethods',srkmecEmptyMethods);
|
||||
CreateMenuItem(ParentMI,itmRefactorShowUnusedUnits,'itmShowUnusedUnits',srkmecUnusedUnits);
|
||||
{$IFDEF EnableFindOverloads}
|
||||
CreateMenuItem(ParentMI,itmRefactorFindOverloads,'itmFindOverloads',srkmecFindOverloadsCapt);
|
||||
{$ENDIF}
|
||||
|
||||
CreateMenuSeparatorSection(SubParentMI,itmRefactorTools,'itmRefactorTools');
|
||||
ParentMI:=itmRefactorTools;
|
||||
CreateMenuItem(ParentMI,itmRefactorMakeResourceString,'itmRefactorMakeResourceString',
|
||||
lisMenuMakeResourceString,'menu_tool_make_resourcestring');
|
||||
// CodeToolChecks
|
||||
CreateMenuSeparatorSection(mnuSource,itmSourceCodeToolChecks,'itmSourceCodeToolChecks');
|
||||
ParentMI:=itmSourceCodeToolChecks;
|
||||
CreateMenuItem(ParentMI,itmSourceSyntaxCheck,'itmSourceSyntaxCheck',lisMenuQuickSyntaxCheck, 'menu_tool_syntax_check');
|
||||
@ -572,9 +595,8 @@ begin
|
||||
ParentMI:=itmSourceInsertions;
|
||||
// *** insert text ***:
|
||||
CreateMenuSubSection(ParentMI,itmSourceInsertCVSKeyWord,'itmSourceInsertCVSKeyWord',lisMenuInsertCVSKeyword);
|
||||
begin
|
||||
SubParentMI:=itmSourceInsertCVSKeyWord;
|
||||
// insert CVS keyword sub menu items
|
||||
SubParentMI:=itmSourceInsertCVSKeyWord;
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertCVSAuthor,'itmSourceInsertCVSAuthor','Author');
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertCVSDate,'itmSourceInsertCVSDate','Date');
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertCVSHeader,'itmSourceInsertCVSHeader','Header');
|
||||
@ -583,12 +605,10 @@ begin
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertCVSName,'itmSourceInsertCVSName','Name');
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertCVSRevision,'itmSourceInsertCVSRevision','Revision');
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertCVSSource,'itmSourceInsertCVSSource','Source');
|
||||
end;
|
||||
|
||||
CreateMenuSubSection(ParentMI,itmSourceInsertGeneral,'itmSourceInsertGeneral',lisMenuInsertGeneral);
|
||||
begin
|
||||
SubParentMI:=itmSourceInsertGeneral;
|
||||
// insert general text sub menu items
|
||||
SubParentMI:=itmSourceInsertGeneral;
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertGPLNotice,'itmSourceInsertGPLNotice',lisMenuInsertGPLNotice);
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertLGPLNotice,'itmSourceInsertLGPLNotice',lisMenuInsertLGPLNotice);
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertModifiedLGPLNotice,'itmSourceInsertModifiedLGPLNotice',lisMenuInsertModifiedLGPLNotice);
|
||||
@ -596,42 +616,13 @@ begin
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertDateTime,'itmSourceInsertDateTime',lisMenuInsertDateTime);
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertChangeLogEntry,'itmSourceInsertChangeLogEntry',lisMenuInsertChangeLogEntry);
|
||||
CreateMenuItem(SubParentMI,itmSourceInsertGUID,'itmSourceInsertGUID',srkmecInsertGUID);
|
||||
end;
|
||||
|
||||
CreateMenuSeparatorSection(mnuSource,itmSourceTools,'itmSourceTools');
|
||||
ParentMI:=itmSourceTools;
|
||||
CreateMenuItem(ParentMI,itmSourceUnitInfo,'itmViewUnitInfo',lisMenuViewUnitInfo, 'menu_view_unit_info');
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainIDEBase.SetupRefactorMenu;
|
||||
var
|
||||
ParentMI: TIDEMenuSection;
|
||||
begin
|
||||
with MainIDEBar do begin
|
||||
CreateMenuSeparatorSection(mnuRefactor,itmRefactorCodeTools,'itmRefactorCodeTools');
|
||||
ParentMI:=itmRefactorCodeTools;
|
||||
CreateMenuItem(ParentMI,itmRefactorCompleteCode,'itmRefactorCompleteCode',lisMenuCompleteCode);
|
||||
CreateMenuItem(ParentMI,itmRefactorUseUnit,'itmRefactorUseUnit',lisMenuUseProjectUnit);
|
||||
CreateMenuItem(ParentMI,itmRefactorRenameIdentifier,'itmRefactorRenameIdentifier',lisMenuRenameIdentifier);
|
||||
CreateMenuItem(ParentMI,itmRefactorExtractProc,'itmRefactorExtractProc',lisMenuExtractProc);
|
||||
CreateMenuItem(ParentMI,itmRefactorInvertAssignment,'itmInvertAssignment',uemInvertAssignment);
|
||||
|
||||
CreateMenuSeparatorSection(mnuRefactor,itmRefactorAdvanced,'itmRefactorAdvanced');
|
||||
ParentMI:=itmRefactorAdvanced;
|
||||
CreateMenuItem(ParentMI,itmRefactorShowAbstractMethods,'itmShowAbstractMethods',srkmecAbstractMethods);
|
||||
CreateMenuItem(ParentMI,itmRefactorShowEmptyMethods,'itmShowEmptyMethods',srkmecEmptyMethods);
|
||||
CreateMenuItem(ParentMI,itmRefactorShowUnusedUnits,'itmShowUnusedUnits',srkmecUnusedUnits);
|
||||
{$IFDEF EnableFindOverloads}
|
||||
CreateMenuItem(ParentMI,itmRefactorFindOverloads,'itmFindOverloads',srkmecFindOverloadsCapt);
|
||||
{$ENDIF}
|
||||
|
||||
CreateMenuSeparatorSection(mnuRefactor,itmRefactorTools,'itmRefactorTools');
|
||||
ParentMI:=itmRefactorTools;
|
||||
CreateMenuItem(ParentMI,itmRefactorMakeResourceString,'itmRefactorMakeResourceString',
|
||||
lisMenuMakeResourceString,'menu_tool_make_resourcestring');
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainIDEBase.SetupProjectMenu;
|
||||
var
|
||||
ParentMI: TIDEMenuSection;
|
||||
|
@ -323,17 +323,15 @@ var
|
||||
mnuSource: TIDEMenuSection;
|
||||
itmSourceBlockActions: TIDEMenuSection;
|
||||
itmSourceCodeToolChecks: TIDEMenuSection;
|
||||
itmSourceRefactor: TIDEMenuSection;
|
||||
itmRefactorCodeTools: TIDEMenuSection;
|
||||
itmRefactorAdvanced: TIDEMenuSection;
|
||||
itmRefactorTools: TIDEMenuSection;
|
||||
itmSourceInsertions: TIDEMenuSection;
|
||||
itmSourceInsertCVSKeyWord: TIDEMenuSection;
|
||||
itmSourceInsertGeneral: TIDEMenuSection;
|
||||
itmSourceTools: TIDEMenuSection;
|
||||
|
||||
// refactor menu
|
||||
mnuRefactor: TIDEMenuSection;
|
||||
itmRefactorCodeTools: TIDEMenuSection;
|
||||
itmRefactorAdvanced: TIDEMenuSection;
|
||||
itmRefactorTools: TIDEMenuSection;
|
||||
|
||||
// project menu
|
||||
mnuProject: TIDEMenuSection;
|
||||
itmProjectNewSection: TIDEMenuSection;
|
||||
|
Loading…
Reference in New Issue
Block a user