mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-22 07:22:20 +02:00
IDE: codebrowser: menu item add package to package of unit in src editor
git-svn-id: trunk@21513 -
This commit is contained in:
parent
a9ffff9a88
commit
31ed9af15f
@ -1,7 +1,7 @@
|
||||
object CodeBrowserView: TCodeBrowserView
|
||||
Left = 315
|
||||
Left = 325
|
||||
Height = 563
|
||||
Top = 203
|
||||
Top = 251
|
||||
Width = 623
|
||||
ActiveControl = ScopeComboBox
|
||||
Caption = 'CodeBrowserView'
|
||||
@ -394,6 +394,10 @@ object CodeBrowserView: TCodeBrowserView
|
||||
Caption = 'AddPkgToProjectMenuItem'
|
||||
OnClick = AddPkgToProjectMenuItemClick
|
||||
end
|
||||
object AddPkgToCurUnitMenuItem: TMenuItem
|
||||
Caption = 'AddPkgToCurUnitMenuItem'
|
||||
OnClick = AddPkgToCurUnitMenuItemClick
|
||||
end
|
||||
object UseSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
|
@ -1,8 +1,8 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TCodeBrowserView','FORMDATA',[
|
||||
'TPF0'#16'TCodeBrowserView'#15'CodeBrowserView'#4'Left'#3';'#1#6'Height'#3'3'
|
||||
+#2#3'Top'#3#203#0#5'Width'#3'o'#2#13'ActiveControl'#7#13'ScopeComboBox'#7'Ca'
|
||||
'TPF0'#16'TCodeBrowserView'#15'CodeBrowserView'#4'Left'#3'E'#1#6'Height'#3'3'
|
||||
+#2#3'Top'#3#251#0#5'Width'#3'o'#2#13'ActiveControl'#7#13'ScopeComboBox'#7'Ca'
|
||||
+'ption'#6#15'CodeBrowserView'#12'ClientHeight'#3'3'#2#11'ClientWidth'#3'o'#2
|
||||
+#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#10'LCLVersion'#6
|
||||
+#6'0.9.29'#0#9'TGroupBox'#13'ScopeGroupBox'#4'Left'#2#6#6'Height'#2'<'#3'Top'
|
||||
@ -146,22 +146,24 @@ LazarusResources.Add('TCodeBrowserView','FORMDATA',[
|
||||
+'dentifierMenuItem'#7'OnClick'#7#27'CopyIdentifierMenuItemClick'#0#0#9'TMenu'
|
||||
+'Item'#21'CopySeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#23'AddPk'
|
||||
+'gToProjectMenuItem'#7'Caption'#6#23'AddPkgToProjectMenuItem'#7'OnClick'#7#28
|
||||
+'AddPkgToProjectMenuItemClick'#0#0#9'TMenuItem'#20'UseSeparatorMenuItem'#7'C'
|
||||
+'aption'#6#1'-'#0#0#9'TMenuItem'#25'ExpandAllPackagesMenuItem'#7'Caption'#6
|
||||
+#25'ExpandAllPackagesMenuItem'#7'OnClick'#7#30'ExpandAllPackagesMenuItemClic'
|
||||
+'k'#0#0#9'TMenuItem'#27'CollapseAllPackagesMenuItem'#7'Caption'#6#27'Collaps'
|
||||
+'eAllPackagesMenuItem'#7'OnClick'#7' CollapseAllPackagesMenuItemClick'#0#0#9
|
||||
+'TMenuItem'#28'AllPackagesSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuIt'
|
||||
+'em'#22'ExpandAllUnitsMenuItem'#7'Caption'#6#22'ExpandAllUnitsMenuItem'#7'On'
|
||||
+'Click'#7#27'ExpandAllUnitsMenuItemClick'#0#0#9'TMenuItem'#24'CollapseAllUni'
|
||||
+'tsMenuItem'#7'Caption'#6#24'CollapseAllUnitsMenuItem'#7'OnClick'#7#29'Colla'
|
||||
+'pseAllUnitsMenuItemClick'#0#0#9'TMenuItem'#25'AllUnitsSeparatorMenuItem'#7
|
||||
+'Caption'#6#1'-'#0#0#9'TMenuItem'#24'ExpandAllClassesMenuItem'#7'Caption'#6
|
||||
+#24'ExpandAllClassesMenuItem'#7'OnClick'#7#29'ExpandAllClassesMenuItemClick'
|
||||
+#0#0#9'TMenuItem'#26'CollapseAllClassesMenuItem'#7'Caption'#6#26'CollapseAll'
|
||||
+'ClassesMenuItem'#7'OnClick'#7#31'CollapseAllClassesMenuItemClick'#0#0#9'TMe'
|
||||
+'nuItem'#27'AllClassesSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'
|
||||
+#14'ExportMenuItem'#7'Caption'#6#14'ExportMenuItem'#7'OnClick'#7#19'ExportMe'
|
||||
+'nuItemClick'#0#0#0#10'TIdleTimer'#10'IdleTimer1'#7'OnTimer'#7#15'IdleTimer1'
|
||||
+'Timer'#4'left'#3'^'#1#3'top'#3#196#0#0#0#0
|
||||
+'AddPkgToProjectMenuItemClick'#0#0#9'TMenuItem'#23'AddPkgToCurUnitMenuItem'#7
|
||||
+'Caption'#6#23'AddPkgToCurUnitMenuItem'#7'OnClick'#7#28'AddPkgToCurUnitMenuI'
|
||||
+'temClick'#0#0#9'TMenuItem'#20'UseSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9
|
||||
+'TMenuItem'#25'ExpandAllPackagesMenuItem'#7'Caption'#6#25'ExpandAllPackagesM'
|
||||
+'enuItem'#7'OnClick'#7#30'ExpandAllPackagesMenuItemClick'#0#0#9'TMenuItem'#27
|
||||
+'CollapseAllPackagesMenuItem'#7'Caption'#6#27'CollapseAllPackagesMenuItem'#7
|
||||
+'OnClick'#7' CollapseAllPackagesMenuItemClick'#0#0#9'TMenuItem'#28'AllPackag'
|
||||
+'esSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#22'ExpandAllUnitsMe'
|
||||
+'nuItem'#7'Caption'#6#22'ExpandAllUnitsMenuItem'#7'OnClick'#7#27'ExpandAllUn'
|
||||
+'itsMenuItemClick'#0#0#9'TMenuItem'#24'CollapseAllUnitsMenuItem'#7'Caption'#6
|
||||
+#24'CollapseAllUnitsMenuItem'#7'OnClick'#7#29'CollapseAllUnitsMenuItemClick'
|
||||
+#0#0#9'TMenuItem'#25'AllUnitsSeparatorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMen'
|
||||
+'uItem'#24'ExpandAllClassesMenuItem'#7'Caption'#6#24'ExpandAllClassesMenuIte'
|
||||
+'m'#7'OnClick'#7#29'ExpandAllClassesMenuItemClick'#0#0#9'TMenuItem'#26'Colla'
|
||||
+'pseAllClassesMenuItem'#7'Caption'#6#26'CollapseAllClassesMenuItem'#7'OnClic'
|
||||
+'k'#7#31'CollapseAllClassesMenuItemClick'#0#0#9'TMenuItem'#27'AllClassesSepa'
|
||||
+'ratorMenuItem'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#14'ExportMenuItem'#7'Capt'
|
||||
+'ion'#6#14'ExportMenuItem'#7'OnClick'#7#19'ExportMenuItemClick'#0#0#0#10'TId'
|
||||
+'leTimer'#10'IdleTimer1'#7'OnTimer'#7#15'IdleTimer1Timer'#4'left'#3'^'#1#3't'
|
||||
+'op'#3#196#0#0#0#0
|
||||
]);
|
||||
|
@ -52,8 +52,8 @@ uses
|
||||
CodeToolManager, PascalParserTool, LinkScanner, FileProcs, CodeIndex,
|
||||
StdCodeTools,
|
||||
// IDEIntf
|
||||
IDEDialogs, LazConfigStorage, Project, PackageIntf, IDECommands, LazIDEIntf,
|
||||
DialogProcs,
|
||||
SrcEditorIntf, IDEDialogs, LazConfigStorage, Project, PackageIntf,
|
||||
IDECommands, LazIDEIntf, DialogProcs,
|
||||
// IDE
|
||||
PackageSystem, PackageDefs, LazarusIDEStrConsts, IDEOptionDefs,
|
||||
BasePkgManager, AddToProjectDlg, EnvironmentOpts, Menus;
|
||||
@ -172,6 +172,7 @@ type
|
||||
BrowseTreeView: TTreeView;
|
||||
IdleTimer1: TIdleTimer;
|
||||
AddPkgToProjectMenuItem: TMenuItem;
|
||||
AddPkgToCurUnitMenuItem: TMenuItem;
|
||||
UseSeparatorMenuItem: TMenuItem;
|
||||
ShowEmptyNodesCheckBox: TCheckBox;
|
||||
CollapseAllClassesMenuItem: TMenuItem;
|
||||
@ -208,6 +209,7 @@ type
|
||||
UnitFilterBeginsSpeedButton: TSpeedButton;
|
||||
UnitFilterContainsSpeedButton: TSpeedButton;
|
||||
UnitFilterEdit: TEdit;
|
||||
procedure AddPkgToCurUnitMenuItemClick(Sender: TObject);
|
||||
procedure AddPkgToProjectMenuItemClick(Sender: TObject);
|
||||
procedure BrowseTreeViewMouseDown(Sender: TOBject; Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
@ -316,6 +318,7 @@ type
|
||||
procedure CopyNode(TVNode: TTreeNode; NodeType: TCopyNodeType);
|
||||
procedure InvalidateStage(AStage: TCodeBrowserWorkStage);
|
||||
function GetSelectedPackage: TLazPackage;
|
||||
function GetCurPackageInSrcEditor: TLazPackage;
|
||||
procedure OpenTVNode(TVNode: TTreeNode);
|
||||
public
|
||||
procedure BeginUpdate;
|
||||
@ -409,7 +412,8 @@ begin
|
||||
ExportMenuItem.Caption:=lisExport;
|
||||
OpenMenuItem.Caption:=lisHintOpen;
|
||||
AddPkgToProjectMenuItem.Caption:=lisAddPackageDependencyToProject;
|
||||
|
||||
AddPkgToCurUnitMenuItem.Caption:=lisAddPackageDependencyToActiveUnit;
|
||||
|
||||
PackageFilterBeginsSpeedButton.Caption:=lisBegins;
|
||||
PackageFilterBeginsSpeedButton.Hint:=lisPackageNameBeginsWith;
|
||||
PackageFilterContainsSpeedButton.Caption:=lisContains;
|
||||
@ -466,6 +470,8 @@ var
|
||||
UnitList: TCodeBrowserUnitList;
|
||||
EnableAddPkgToProject: Boolean;
|
||||
APackage: TLazPackage;
|
||||
EnableAddPkgToCurUnit: Boolean;
|
||||
TargetPackage: TLazPackage;
|
||||
begin
|
||||
ExpandAllPackagesMenuItem.Visible:=Options.HasLevel(cblPackages);
|
||||
CollapseAllPackagesMenuItem.Visible:=ExpandAllPackagesMenuItem.Visible;
|
||||
@ -482,8 +488,9 @@ begin
|
||||
TVNode:=BrowseTreeView.Selected;
|
||||
Node:=nil;
|
||||
if TVNode<>nil then
|
||||
Node:=TOBject(TVNode.Data);
|
||||
Node:=TObject(TVNode.Data);
|
||||
EnableAddPkgToProject:=false;
|
||||
EnableAddPkgToCurUnit:=false;
|
||||
if Node<>nil then begin
|
||||
if Node is TCodeBrowserNode then
|
||||
Identifier:=TCodeBrowserNode(Node).Identifier
|
||||
@ -502,8 +509,22 @@ begin
|
||||
// package
|
||||
APackage:=PackageGraph.FindAPackageWithName(UnitList.Owner,nil);
|
||||
if APackage<>nil then begin
|
||||
if Project1.FindDependencyByName(APackage.Name)=nil then
|
||||
// check if package can be added to project
|
||||
if Project1.FindDependencyByName(APackage.Name)=nil then begin
|
||||
EnableAddPkgToProject:=true;
|
||||
AddPkgToProjectMenuItem.Caption:=Format(lisAddPackageToProject, [
|
||||
APackage.Name]);
|
||||
end;
|
||||
// check if package can be added to package of src editor unit
|
||||
TargetPackage:=GetCurPackageInSrcEditor;
|
||||
if (TargetPackage<>nil)
|
||||
and (SysUtils.CompareText(TargetPackage.Name,APackage.Name)<>0)
|
||||
and (TargetPackage.FindDependencyByName(APackage.Name)=nil) then begin
|
||||
EnableAddPkgToCurUnit:=true;
|
||||
AddPkgToCurUnitMenuItem.Caption:=Format(
|
||||
lisAddPackageToPackage, [APackage.Name,
|
||||
TargetPackage.Name]);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -516,12 +537,15 @@ begin
|
||||
CopySeparatorMenuItem.Visible:=true;
|
||||
AddPkgToProjectMenuItem.Enabled:=EnableAddPkgToProject;
|
||||
AddPkgToProjectMenuItem.Visible:=true;
|
||||
AddPkgToCurUnitMenuItem.Enabled:=EnableAddPkgToCurUnit;
|
||||
AddPkgToCurUnitMenuItem.Visible:=true;
|
||||
end else begin
|
||||
OpenMenuItem.Visible:=false;
|
||||
CopyDescriptionMenuItem.Visible:=false;
|
||||
CopyIdentifierMenuItem.Visible:=false;
|
||||
CopySeparatorMenuItem.Visible:=false;
|
||||
AddPkgToProjectMenuItem.Visible:=false;
|
||||
AddPkgToCurUnitMenuItem.Visible:=false;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -2214,6 +2238,29 @@ begin
|
||||
Result:=PackageGraph.FindAPackageWithName(UnitList.Owner,nil);
|
||||
end;
|
||||
|
||||
function TCodeBrowserView.GetCurPackageInSrcEditor: TLazPackage;
|
||||
var
|
||||
SrcEdit: TSourceEditorInterface;
|
||||
Owners: TFPList;
|
||||
i: Integer;
|
||||
begin
|
||||
Result:=nil;
|
||||
SrcEdit:=SourceEditorWindow.ActiveEditor;
|
||||
if SrcEdit=nil then exit;
|
||||
Owners:=PkgBoss.GetOwnersOfUnit(SrcEdit.FileName);
|
||||
try
|
||||
if (Owners=nil) then exit;
|
||||
for i:=0 to Owners.Count-1 do begin
|
||||
if TObject(Owners[i]) is TLazPackage then begin
|
||||
Result:=TLazPackage(Owners[i]);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
Owners.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCodeBrowserView.OpenTVNode(TVNode: TTreeNode);
|
||||
var
|
||||
NodeData: TObject;
|
||||
@ -2417,6 +2464,27 @@ begin
|
||||
PkgBoss.AddProjectDependency(Project1,APackage);
|
||||
end;
|
||||
|
||||
procedure TCodeBrowserView.AddPkgToCurUnitMenuItemClick(Sender: TObject);
|
||||
var
|
||||
APackage: TLazPackage;
|
||||
TargetPackage: TLazPackage;
|
||||
List: TFPList;
|
||||
begin
|
||||
APackage:=GetSelectedPackage;
|
||||
if APackage=nil then exit;
|
||||
TargetPackage:=GetCurPackageInSrcEditor;
|
||||
if TargetPackage=nil then exit;
|
||||
List:=TFPList.Create;
|
||||
try
|
||||
List.Add(TargetPackage);
|
||||
if PkgBoss.AddDependencyToOwners(List,APackage)=mrOk then begin
|
||||
PackageEditingInterface.DoOpenPackageWithName(TargetPackage.Name,[],false);
|
||||
end;
|
||||
finally
|
||||
List.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TCodeBrowserViewOptions }
|
||||
|
||||
procedure TCodeBrowserViewOptions.SetModified(const AValue: boolean);
|
||||
|
@ -4465,6 +4465,9 @@ resourcestring
|
||||
lisInsertPrintShortTag = 'Insert PrintShort tag';
|
||||
lisAutomaticallyInvokeAfterPoint = 'Automatically invoke after point';
|
||||
lisShowEmptyUnitsPackages = 'Show empty units/packages';
|
||||
lisAddPackageDependencyToActiveUnit = 'Add package dependency to active unit';
|
||||
lisAddPackageToProject = 'Add package %s to project';
|
||||
lisAddPackageToPackage = 'Add package %s to package %s';
|
||||
|
||||
implementation
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user